; ; I/O STATUS ERRORS. ; ; CHECK FOR I/O STATUS ERROR MESSAGE AND OPTIONAL GOTO A SPECIFIED ADDRESS. ; .MACRO QIOWRN IOS,LUN,CNDLST,CONTIN,?DEFADR ; .GLOBL IS.SUC ; ; CMPB #IS.SUC,IOS ;WAS I/O SUCCESSFUL? BEQ DEFADR ; IF EQ - YES. ; .IF NB ; ; .MCALL CMPBYT ;GET COMPARE MACRO. ; .IRP CODE, ; ; CMPBYT IOS,CODE ;COMPARE CODES. ; .ENDR ; ; .ENDC ; ; .IF NDF Q$$MSG ; ; .GLOBL ERQIOR ;DECLARE ERROR MESSAGE PROCESSOR. ; .IF NB ; ; MOV LUN,-(SP) ;SAVE LUN NUMBER. ; .IFF ; ; CLR -(SP) ;SET NO LUN. ; .ENDC ; ; MOV IOS,-(SP) ;SAVE I/O CODE. JSR PC,ERQIOR ;ISSUE ERROR AND RETURN. ; .ENDC ; ; .IF NB ; ; JMP CONTIN ;GOTO SPECIFIED ADDRESS. ; .ENDC ; ; DEFADR: ; ; .ENDM QIOWRN ; ; ; CHECK FOR I/O STATUS ERROR AND FAIL IF PROBLEM. ; .MACRO QIOERR IOS,LUN,CNDLST,?DEFADR ; .GLOBL IS.SUC ; ; CMPB #IS.SUC,IOS ;WAS I/O SUCCESSFUL? BEQ DEFADR ; IF EQ - YES. ; .IF NB ; ; .MCALL CMPBYT ;GET COMPARE MACRO. ; .IRP CODE, ; ; CMPBYT IOS,CODE ;COMPARE CODES. ; .ENDR ; ; .ENDC ; ; .IF NDF Q$$MSG ; ; .GLOBL ERQIOX ;DECLARE ERROR MESSAGE PROCESSOR. ; .IF NB ; ; MOV LUN,-(SP) ;SAVE LUNE NUMBER. ; .IFF ; ; CLR -(SP) ;SET NO LUN. ; .ENDC ; ; MOV IOS,-(SP) ;SAVE I/O CODE. JSR PC,ERQIOX ;ISSUE ERROR AND EXIT. ; .IFF ; ; HALT ;TRAP ON ERROR. ; .ENDC ; ; DEFADR: ; ; .ENDM QIOERR ; ; ; ; FCS ERRORS. ; ; CHECK FOR FCS ERROR MESSAGE AND OPTIONAL GOTO A SPECIFIED ADDRESS. ; .MACRO FCSWRN CNDLST,CONTIN,?DEFADR ; BCC DEFADR ; IF CC - FCS OK. ; .IF NB ; ; .MCALL CMPBYT ;GET COMPARE MACRO. ; .IRP CODE, ; ; CMPBYT F.ERR(R0),CODE ;COMPARE CODES. ; .ENDR ; ; .ENDC ; ; .IF NDF F$$MSG ; ; .GLOBL ERFCSR ;DECLARE ERROR MESSAGE PROCESSOR. ; JSR PC,ERFCSR ;ISSUE ERROR AND RETURN. ; .ENDC ; ; .IF NB ; ; JMP CONTIN ;GOTO SPECIFIED ADDRESS. ; .ENDC ; ; DEFADR: ; ; .ENDM FCSWRN ; ; ; CHECK FOR FCS ERROR AND FAIL IF PROBLEM. ; .MACRO FCSERR CNDLST,?DEFADR ; BCC DEFADR ; IF CC - FCS OK. ; .IF NB ; ; .MCALL CMPBYT ;GET COMPARE MACRO. ; .IRP CODE, ; ; CMPBYT F.ERR(R0),CODE ;COMPARE CODES. ; .ENDR ; ; .ENDC ; ; .IF NDF F$$MSG ; ; .GLOBL ERFCSX ;DECLARE ERROR MESSAGE PROCESSOR. ; JSR PC,ERFCSX ;ISSUE ERROR AND EXIT. ; .IFF ; ; HALT ;TRAP ON ERROR. ; .ENDC ; ; DEFADR: ; ; .ENDM FCSERR ; ; ; DIRECTIVE ERRORS. ; ; CHECK FOR DIRECTIVE ERROR MESSAGE AND OPTIONAL GOTO A SPECIFIED ADDRESS. ; .MACRO DIRWRN CNDLST,CONTIN,?DEFADR ; BCC DEFADR ; IF CC - DIRECTIVE OK. ; .IF NB ; ; .MCALL CMPWRD ;GET COMPARE MACRO. .GLOBL $DSW ;DECLARE DIRECTIVE STATUS STORAGE SYMBOL. ; .IRP CODE, ; ; CMPWRD $DSW,CODE ;COMPARE CODES. ; .ENDR ; ; .ENDC ; ; .IF NDF D$$MSG ; ; .GLOBL ERDIRR ;DECLARE ERROR MESSAGE PROCESSOR. ; JSR PC,ERDIRR ;ISSUE ERROR AND RETURN. ; .ENDC ; ; .IF NB ; ; JMP CONTIN ;GOTO SPECIFIED ADDRESS. ; .ENDC ; ; DEFADR: ; ; .ENDM DIRWRN ; ; ; CHECK FOR DIRECTIVE ERROR AND FAIL IF PROBLEM. ; .MACRO DIRERR CNDLST,?DEFADR ; BCC DEFADR ; IF CC - DIRECTIVE OK. ; .IF NB ; ; .MCALL CMPWRD ;GET COMPARE MACRO. .GLOBL $DSW ;DECLARE DIRECTIVE STATUS STORAGE SYMBOL. ; .IRP CODE, ; ; CMPWRD $DSW,CODE ;COMPARE CODES. ; .ENDR ; ; .ENDC ; ; .IF NDF D$$MSG ; ; .GLOBL ERDIRX ;DECLARE ERROR MESSAGE PROCESSOR. ; JSR PC,ERDIRX ;ISSUE ERROR AND EXIT. ; .IFF ; ; HALT ;TRAP ON ERROR. ; .ENDC ; ; DEFADR: ; ; .ENDM DIRERR ; ; ; PROGRAM ERROR MESSAGE MACROS. ; ; OUTPUT A WARNING MESSAGE AND AND OPTIONAL GOTO A SPECIFIED ADDRESS. ; .MACRO PRGWRN MSGADR,CONTIN ; .GLOBL ERPRGR ;DECLARE ERROR MESSAGE PROCESSOR. ; MOV MSGADR,-(SP) ;SAVE MESSAGE ADDRESS. JSR PC,ERPRGR ;OUTPUT MESSAGE AND RETURN. ; .IF NB ; ; JMP CONTIN ;GOTO SPECIFIED ADDRESS. ; .ENDC ; ; .ENDM PRGWRN ; ; ; OUTPUT THE EXIT REASON AND EXIT TASK. ; .MACRO PRGERR MSGADR ; .GLOBL ERPRGX ;DECLARE ERROR MESSAGE PROCESSOR. ; MOV MSGADR,-(SP) ;SAVE MESSAGE ADDRESS. JSR PC,ERPRGX ;OUTPUT MESSAGE AND EXIT. ; .ENDM PRGERR ; ; ; COMPARE AND BRANCH MACROS. ; .MACRO CMPBYT LOC,MSK,ADR ; ; WHERE: LOC - LOCATION TO COMPARE MASK TO. ; MSK - MASK TO CHECK FOR. ; ADR - PLACE TO GO IF LOC AND MSK ARE EQUAL. ; ; CHECK FOR VALID MASK. ; .NTYPE ..C,MSK ; .IF NE <..C-67> ; ; .ERROR ..C ; INVALID COMPARE MASK. ; .MEXIT ; ; .ENDC ; ; ; DO COMPARE BYTE. ; CMPB #MSK,LOC ;IS MASK EQUAL LOCATION? BEQ ADR ; IF EQ - YES. .ENDM CMPBYT ; ; SAME TYPE OF MACRO, ONLY WORK ON WORD. ; .MACRO CMPWRD LOC,MSK,ADR ; ; CHECK FOR VALID MASK. ; .NTYPE ..C,MSK ; .IF NE <..C-67> ; ; .ERROR ..C ; INVALID COMPARE MASK. ; .MEXIT ; ; .ENDC ; ; ; DO COMPARE WORD. ; CMP #MSK,LOC ;IS MASK EQUAL LOCATION? BEQ ADR ; IF EQ - YES. .ENDM CMPWRD