Mercurial > hg > Members > kono > os9 > sbc09
diff examples/test09.asm @ 57:2088fd998865
sbc09 directry clean up
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 23 Jul 2018 16:07:12 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/test09.asm Mon Jul 23 16:07:12 2018 +0900 @@ -0,0 +1,463 @@ + ; 6809 Test program. + +testnr equ 32 + + org $100 + jmp entry +error ldx #errmsg + bsr outs + lda testnr + bsr outa + ldx #newline + bsr outs + sync + +errmsg fcb "ERROR ",0 +newline fcb 13,10,0 +outs ldb ,x+ + beq done1 + swi2 + bra outs +done1 rts +outdig addb # 48 + cmpb # 57 + bls od2 + addb #7 +od2 swi2 + rts +outa tfr a,b + lsrb + lsrb + lsrb + lsrb + bsr outdig + tfr a,b + andb # 15 + bra outdig +passmsg fcb "PASSED ",0 +good ldx #passmsg + jsr outs + lda testnr + jsr outa + ldx #newline + jsr outs + inc testnr + rts + +entry clr testnr + jsr good ;test #0, does it print msg? + andcc #0 ;test #1, conditional (long) branches + lbvs error ; andcc, orcc + lbcs error + lbeq error + lbmi error + lbls error + lblt error + lble error + lbrn error + bvs errt1 + bcs errt1 + beq errt1 + bmi errt1 + bls errt1 + blt errt1 + ble errt1 + brn errt1 + lbvc goot1 +errt1 jmp error +goot1 lbcc goot2 + jmp error +goot2 lbne goot3 + jmp error +goot3 lbpl goot4 + jmp error +goot4 lbhi goot5 + jmp error +goot5 lbge goot6 + jmp error +goot6 lbgt goot7 + jmp error +goot7 lbra goot8 + jmp error +goot8 bvc goot9 + jmp error +goot9 bcc goot10 + jmp error +goot10 bne goot11 + jmp error +goot11 bpl goot12 + jmp error +goot12 bhi goot13 + jmp error +goot13 bge goot14 + jmp error +goot14 bgt goot15 + jmp error +goot15 bra goot16 + jmp error +goot16 tfr cc,a + tsta + lbne error + andcc #0 + orcc #1 + lbcc error + lbeq error + lbvs error + lbmi error + orcc #2 + lbvc error + lbeq error + lbmi error + orcc #4 + lbne error + lbmi error + orcc #8 + lbpl error + tfr cc,a + cmpa #15 + lbne error + orcc #15 + orcc #240 + tfr cc,a + inca + lbne error + orcc #255 + andcc #$aa + tfr cc,a + cmpa #$aa + lbne error + jsr good + + lds #0 ; test #2: registers and their values, tfr, exg + lda #$28 + ldb #$7f + ldu #3417 + ldx #2221 + ldy #16555 + cmpa #$28 + lbne error + cmpb #$7f + lbne error + cmpd #$287f + lbne error + cmpx #2221 + lbne error + cmpy #13 + lbeq error + cmpy #16555 + lbne error + cmpu #3417 + lbne error + cmps #0 + lbne error + exg x,y + cmpx #16555 + lbne error + cmpy #2221 + lbne error + exg x,d + cmpd #16555 + lbne error + cmpx #$287f + lbne error + cmpy #2221 + lbne error + exg x,d + exg a,dp + tsta + lbne error + exg a,dp + exg a,b + cmpa #$7f + lbne error + cmpb #$28 + lbne error + tfr b,a + cmpb #$28 + lbne error + cmpa #$28 + lbne error + tfr u,x + cmpu #3417 + lbne error + cmpx #3417 + lbne error + tfr pc,x +here cmpx #here + lbne error + tfr u,s + cmps #3417 + lbne error + lds #0 + clra + tfr b,cc + tfr cc,a + cmpa #$28 + lbne error + jsr good + + lda #128 ;Arithmetic and their status. + adda #255 + lbcc error + lbvc error + lbmi error + cmpa #127 + lbne error + lda #0 + adda #255 + lbcs error + lbvs error + lbpl error + cmpa #255 + lbne error + orcc #1 + lda #255 + adca #0 + lbne error + lbmi error + lbcc error + lda #216 + adda #40 + lbne error + lda #80 + adda #40 + lbcs error + lbvs error + cmpa #120 + lbne error + orcc #1 + lda #80 + adca #40 + lbcs error + lbvs error + cmpa #121 + lbne error + andcc #254 + ldb #80 + adcb #40 + lbcs error + lbvs error + cmpb #120 + lbne error + ldb #80 + subb #120 + lbcc error + lbvs error + cmpb #216 + lbne error + andcc #254 + lda #140 + sbca #20 + lbvc error + lbcs error + cmpa #120 + lbne error + orcc #1 + lda #140 + sbca #20 + lbvc error + lbcs error + cmpa #119 + lbne error + ldd #40000 + subd #20000 + lbvc error + lbcs error + cmpd #20000 + lbne error + ldd #20000 + subd #40000 + lbvc error + lbcc error + cmpd #-20000 + lbne error + ldd #30000 + addd #-20000 + lbcc error + lbvs error + cmpd #10000 + lbne error + jsr good + + lda #$23 ;Test #4 decimal arithmetic. + adda #$34 + daa + lbcs error + cmpa #$57 + lbne error + orcc #1 + lda #$19 + adca #$29 + daa + lbcs error + cmpa #$49 + lbne error + lda #$92 + adda #$8 + daa + lbcc error + cmpa #$00 + jsr good + + lda #128 ;Test#5 MUL and SEX + ldb #2 + mul + lbeq error + lbcs error + cmpd #256 + lbne error + lda #0 + ldb #23 + mul + lbne error + lbcs error + cmpd #0 + lbne error + lda #10 + ldb #20 + mul + lbcc error + cmpd #200 + lbne error + lda #100 + ldb #49 + mul + cmpd #4900 + lbne error + clrb + sex + cmpd #0 + lbne error + ldb #128 + sex + cmpd #-128 + lbne error + ldb #50 + sex + cmpd #50 + lbne error + jsr good + + lda #$55 ; Test #6 Shifts and rotates. + asla + lbcs error + cmpa #$aa + lbne error + asla + lbcc error + cmpa #$54 + lbne error + lda #$0 + andcc #254 + rola + lbne error + orcc #1 + rola + deca + lbne error + andcc #254 + rora + lbne error + orcc #1 + rora + cmpa #128 + lbne error + asra + cmpa #192 + lbne error + lsra + cmpa #96 + lbne error + ldb # 54 + aslb + cmpb # 108 + lbne error + jsr good + + orcc #15 ; Test #7 INC, DEC and NEG + lda # 33 + inca + lbeq error + lbvs error + lbcc error + lbmi error + deca + lbeq error + lbvs error + lbcc error + lbmi error + clra + andcc #254 + deca + lbcs error + lbpl error + inca + lbne error + ldb #126 + negb + lbvs error + lbcc error + cmpb #130 + lbne error + decb + decb + negb + lbvc error + cmpb #128 + lbne error + clrb + negb + lbcs error + lbne error + jsr good + + ;test #8 Addessing modes. + ldx #testdat+4 + lda ,x + cmpa #5 + lbne error + lda ,x+ + cmpa #5 + lbne error + cmpx #testdat+5 + lbne error + ldd ,x++ + cmpd #6*256+7 + lbne error + cmpx #testdat+7 + lbne error + ldx #testdat+4 + lda ,-x + cmpa #4 + lbne error + cmpx #testdat+3 + lbne error + ldd ,--x + cmpd #2*256+3 + lbne error + cmpx #testdat+1 + lbne error + ldx #testdat+4 + lda -2,x + cmpa #3 + lbne error + lda 2,x + cmpa #7 + lbne error + ldx #td1 + ldd [,x] + cmpd #3*256+4 + lbne error + cmpx #td1 + lbne error + jsr good + bra next1 +testdat fcb 1,2,3,4,5,6,7,8,9,10 +td1 fdb testdat+2 +next1 + + sync + end $100 + + +