.MACRO .ASSUME A,REL,C,MESSAGE .IF REL <>-<> .IFF .IF B .ERROR ;?134MC-W-"A REL C" is not true; .IFF .ERROR ;?134MC-MESSAGE; .ENDC .ENDC .ENDM .ASSUME .MACRO $MESSL MESS, TEXT, ?L2 .EMITL .IF DF N$SHOW .EMIT <.=.+1> .ENDC .EMIT <.ASCII TEXT> .IF DF N$SHOW .EMITL .EMIT <.=MESS> .EMIT <.BYTE L2-MESS-1> .EMIT <.=L2> .IFF .EMIT <'MESS'.L =: .-'MESS'> .ENDC .ENDM $MESSL .MACRO $SHMESS MESS .EMIT .IF DF N$SHOW .EMIT .IFF .EMIT .EMIT .ENDC .ENDM $SHMESS .MACRO $ERMSC MESS, ?L1, ?L2 L1: .IF DF N$SHOW .EMIT <.=.+1> .ENDC .EMIT <.ASCII MESS> .IF DF N$SHOW .EMITL .EMIT <.=L1> .EMIT <.BYTE L2-L1-1> .EMIT <.=L2> .IFF .IF LT .-L1-ERMC.L .REPT ERMC.L-.+L1 .EMIT <.ASCII / /> .ENDR .IFF .IF GT .-L1-ERMC.L .ERROR ; Message length greater than ERMC.L chars! .ENDC .ENDC .ENDC .ENDM $ERMSC .MACRO $ERMST CODE, MESS, ?L1 .IF DF N$SHOW .EMITL .EMIT <.=.+1> .IFF ER.NUM=ER.NUM+1 CODE=ER.NUM .EMITL .ENDC .EMIT <.ASCII MESS> .IF DF N$SHOW .EMITL .EMIT <.=CODE> .EMIT <.BYTE L1-CODE-1> .EMIT <.=L1> .IFF .IF LT .-L1-ERMT.L .REPT ERMT.L-.+L1 .EMIT <.ASCII / /> .ENDR .IFF .IF GT .-L1-ERMT.L .ERROR ; Message length greater than ERMT.L chars! .ENDC .ENDC .ENDC .ENDM $ERMST ER.NUM = 0 .MACRO DV.BOT NAME, CSR, BOOT, PARAM .EMIT <.ASCII ^NAME^> ; Name .EMIT <.WORD CSR> ; CSR .EMIT <.WORD BOOT> ; Entry point .EMIT <.WORD PARAM> ; ?? .ENDM DV.BOT .MACRO DV.END .EMIT <.WORD 0> .ENDM DV.END ............................................................................... .MACRO HMCALL MOV #112345, R0 MOV #123456, R1 MOV #134567, R2 MOV #145671, R3 MOV #156712, R4 MOV #167123, R5 HALT BR . BR . .ENDM HMCALL .MACRO HMRETURN MOV @#SP.SAV, SP MOV @#SU.PSW, @#U.PSW MOV @#SU.PC, @#U.PC RTT .ENDM HMRETURN