.list push off .include "ascii.s11" .include "cons.s11" .include "reg.s11" .list pop . = 200 br start crlf: .asciz S1: .asciz /Trap at address / S2: .asciz " with pattern " .even trapv: mov #stacktop,sp cmp r3,#0x8000 beq nextpattern mov #S1,r0 jsr pc,puts mov r3,r0 mov #0xffff,r1 jsr pc,putn mov #S2,r0 jsr pc,puts mov r2,r0 mov #0xff,r1 jsr pc,putn mov #crlf,r0 jsr pc,puts mov #trapv,@#4 mov #reg_psw_pri,@#6 tst r3 blt nextpattern br reenterloop S3: .asciz "Testing: " .even start: mov #trapv,@#4 mov #reg_psw_pri,@#6 mov #stacktop,sp mov #crlf,r0 jsr pc,puts mov #0x00,r2 testpattern: mov #S3,r0 jsr pc,puts mov r2,r0 mov #0xff,r1 jsr pc,putn mov #crlf,r0 jsr pc,puts mov #end,r3 loop: movb r2,(r3) movb (r3),r4 cmpb r2,r4 bne cmperr reenterloop: inc r3 bne loop nextpattern: incb r2 br testpattern S4: .asciz /Comparison error at / S5: .asciz " wrote " S6: .asciz " read " .even cmperr: mov #S4,r0 jsr pc,puts mov r3,r0 mov #0xffff,r1 jsr pc,putn mov #S5,r0 jsr pc,puts mov r2,r0 mov #0xff,r1 jsr pc,putn mov #S6,r0 jsr pc,puts mov r4,r0 mov #0xff,r1 jsr pc,putn mov #crlf,r0 jsr pc,puts br reenterloop puts: mov r1,-(sp) mov r0,r1 puts_loop: movb (r1)+,r0 beq puts_done jsr pc,putc br puts_loop puts_done: mov (sp)+,r1 rts pc putn: mov r2,-(sp) mov r3,-(sp) mov r4,-(sp) mov #0xe000,r4 mov sp,r3 sub #8.,sp clrb -(r3) putn_loop: mov r0,r2 bic #~7,r2 add #'0,r2 movb r2,-(r3) ash #-3,r0 bic r4,r0 ash #-3,r1 bic r4,r1 bne putn_loop mov r3,r0 jsr pc,puts add #8.,sp mov (sp)+,r4 mov (sp)+,r3 mov (sp)+,r2 rts pc putc: bit #cons_ocsr_rdy,@#cons_ocsr beq putc movb r0,@#cons_obuf rts pc stack: .space 32. stacktop: end: