.TITLE FIZBUZ .MCALL .TTYOUT,.EXIT FIZBUZ::MOV #1,R2 ; COUNTER MOV #3,R3 ; FIZZ COUNTER MOV #5,R4 ; BUZZ COUNTER NUMBER: CLR R5 CHKFIZ: DEC R3 BNE CHKBUZ MOV #FIZZ,R1 JSR PC,PRSTR MOV #3,R3 INC R5 CHKBUZ: DEC R4 BNE CHKNUM MOV #BUZZ,R1 JSR PC,PRSTR MOV #5,R4 INC R5 CHKNUM: TST R5 BNE NEXNUM MOV R2,R0 JSR PC,PR0 NEXNUM: MOV #NL,R1 JSR PC,PRSTR INC R2 CMP R2,#^D100 BLE NUMBER .EXIT ; STRING DATA FIZZ: .ASCIZ /FIZZ/ BUZZ: .ASCIZ /BUZZ/ NL: .BYTE 15,12,0 .EVEN ; PRINT NUMBER IN R0 AS DECIMAL PR0: MOV R2,-(SP) MOV #4$,R1 1$: MOV #-1,R2 2$: INC R2 SUB #12,R0 BCC 2$ ADD #72,R0 MOVB R0,-(R1) MOV R2,R0 BNE 1$ 3$: MOVB (R1)+,R0 .TTYOUT BNE 3$ MOV (SP)+,R2 RTS PC .ASCII /...../ 4$: .BYTE 0 ; PRINT STRING IN R1 PRSTR: MOVB (R1)+,R0 .TTYOUT BNE PRSTR RTS PC .END FIZBUZ