.NLIST .TITLE MACRO LIBRARY .SBTTL CALL .MCALL .REGDEF .REGDEF .MACRO CALL A,B,C,D,E,F,G,H,I,J,K .NARG NUM MOV R5,-(SP) MOV#.+12,R5 JSR PC,A BR .+ .WORD NUM-1 .IIF NB,B,.WORD B .IIF NB,C,.WORD C .IIF NB,D,.WORD D .IIF NB,E,.WORD E .IIF NB,F,.WORD F .IIF NB,G,.WORD G .IIF NB,H,.WORD H .IIF NB,I,.WORD I .IIF NB,J,.WORD J .IIF NB,K,.WORD K MOV (SP)+,R5 .ENDM .PAGE .SBTTL CHKERR ; ; ; TO CHECK IF C BIT HAS BEEN SET AFTER AN OPERTION AND TO ; WRITE THE MESSAGE IF ANY ON THE CONSOLE . CHECK ALSO HAS THE OPTION TO ; JMP TO A PARTICULAR ALLOCATION IF AN ERROR OCCURS . ; ; .MACRO CHKERR TEXT,ADDR,?A,?B,?C .MCALL .PRINT ERRWD = 52 ; ; BR B A: .BYTE 0,40,055,105,122,122,055,40 .ASCIZ/TEXT/ .EVEN B: BCC C ;TEST CARRY BIT MOVB @#ERRWD,A ;ERROR OCCURRED GET CODE ADD #60,A ;CONVERT CODE TO ASCII .PRINT #A ;PRINT MESSAGE .IIF NB ADDR, JMP ADDR C: NOP .ENDM CHKERR .PAGE .SBTTL ARITH ; ; ; ; .SBTTL ADDF .MACRO ADDF A,E,C .MCALL ..V2..,.REGDEF ..V2.. .REGDEF ; ; ; ; ; .IF NB A MOV A+2,-(SP) MOV A,-(SP) .IF B E .ERROR .MEXIT .ENDC .ENDC ; ; .IF NB E MOV E+2,-(SP) MOV E,-(SP) .ENDC ; ; FADD SP .IF NB C MOV (SP)+,C MOV (SP)+,C+2 .ENDC .ENDM ; ; ; .PAGE .SBTTL SUBF .MACRO SUBF A,E,C .MCALL ..V2..,.REGDEF ..V2.. .REGDEF ; ; ; ; ; ; .IF NB A MOV A+2,-(SP) MOV A,-(SP) .IF B E .ERROR .MEXIT .ENDC .ENDC ; ; .IF NB E MOV E+2,-(SP) MOV E,-(SP) .ENDC ; ; FSUB SP .IF NB C MOV (SP)+,C MOV (SP)+,C+2 .ENDC .ENDM ; ; ; .PAGE .SBTTL MULF .MACRO MULF A,E,C .MCALL ..V2..,.REGDEF ..V2.. .REGDEF ; ; ; ; .IF NB A MOV A+2,-(SP) MOV A,-(SP) .IF B E .ERROR .MEXIT .ENDC .ENDC ; ; .IF NB E MOV E+2,-(SP) MOV E,-(SP) .ENDC ; ; FMUL SP .IF NB C MOV (SP)+,C MOV (SP)+,C+2 .ENDC .ENDM ; ; ; .PAGE .SBTTL DIVF .MACRO DIVF A,E,C .MCALL ..V2..,.REGDEF ..V2.. .REGDEF ; ; ; ; ; ; ; .IF NB A MOV A+2,-(SP) MOV A,-(SP) .IF B E .ERROR .MEXIT .ENDC .ENDC ; ; .IF NB E MOV E+2,-(SP) MOV E,-(SP) .ENDC ; ; FDIV SP .IF NB C MOV (SP)+,C MOV (SP)+,C+2 .ENDC .ENDM .PAGE .SBTTL SAVREG ; ; ; FUNCTION : TO SAVE REGISTERS R0 - R5 ; ; .MACRO SAVREG .MCALL ..V2..,.REGDEF ..V2.. .REGDEF ; ; ; .IRP X, MOV X,-(SP) .ENDR .ENDM .PAGE .SBTTL RSTREG ; ; ; FUNCTION : TO RESTORE REGISTERS R0 - R5 ; ; .MACRO RSTREG .MCALL ..V2..,.REGDEF ..V2.. .REGDEF ; ; ; .IRP X, MOV (SP)+,X .ENDR .ENDM .PAGE .SBTTL MSG ; ; ; FUNCTION: TO PRINT MESSAGE ON KB: ; WITH OPTIONAL BRANCH TO ADDRESS ; ; .MACRO MSG TEXT,ADDR,?A,?B .MCALL ..V2..,.REGDEF,.PRINT ..V2.. .REGDEF BR B A: .ASCIZ /TEXT/ .EVEN B: .PRINT #A .IIF NB ADDR JMP ADDR .ENDM MSG .PAGE .TITLE MAIN .SBTTL .LIST