*DECK LFGZAP IDENT LFGZAP ENTRY LFGZAP SYSCOM B1 ** LFGZAP - INTERFACE TO *Z* ARGUMENT PROCCESSOR. * * D.K. ENDO 81/12/17 * * THIS PROCEDURE CALLS THE *Z* ARGUMENT PROCESSOR FOR LFG TO READ * THE DIRECTIVES OFF THE CONTROL CARD. * * LFGZAP(INFET) * * ENTRY INFET = INPUT DIRECTIVE FET. * * EXIT INFET CIO BUFFER IS FILLED WITH SOURCE LINE. * * METHOD * * INITIATE CALL TO *Z* ARGUMENT PROCESSOR(ZAP FROM CALLCPU) * LFGZAP DATA 0 SB1 1 SX2 X1 RJ ZAP EQ LFGZAP IF -DEF,QUAL$,1 QUAL COMCZAP BASE D * COMMENT COPYRIGHT CONTROL DATA CORP. 1976. ZAP SPACE 4 *** COMCZAP - *Z* ARGUMENT PROCESSOR. * A. D. FORET. 77/02/08. * D. R. HILGREN. 79/04/15. * J. L. LARSON. 79/04/15. ZAP SPACE 4,10 *** ZAP - *Z* ARGUMENT PROCESSOR. * * ENTRY (X2) = ADDRESS OF INPUT FET TO ENTER DIRECTIVES INTO. * (B6) = STRING BUFFER LENGTH. REQUIRED AND USED ONLY * WHEN VARIABLE LENGTH STRING BUFFER OPTION IS * SELECTED (USBL$ DEFINED). SEE COMCUSB. * USBB = STRING BUFFER. MUST BE USER DEFINED IF USBL$ * IS SELECTED. SEE COMCUSB. * CCDR = CONTROL STATEMENT IMAGE. * * EXIT DIRECTIVES ENTERED INTO BUFFER OF FET SPECIFIED. * FET STATUS SET TO EOR READ. * *COMCZAP* WILL SUPPLY A TERMINATOR AT THE END OF A * DIRECTIVE IF NO TERMINATOR (PERIOD OR CLOSED * PARENTHESIS) HAS BEEN SUPPLIED FOR THAT DIRECTIVE * AND IF *ZAP$* HAS BEEN DEFINED IN THE CALLING PROGRAM. * * USES A - 1, 3, 6, 7. * B - 2, 6, 7. * X - 1, 2, 3, 4, 6, 7. * * CALLS /COMCUSB/USB. * * MACROS RECALL, WRITES. * * NOTES THE FIRST CHARACTER AFTER THE CONTROL STATEMENT * TERMINATOR IS THE SEPARATOR CHARACTER FOR ALL * DIRECTIVES ON THE CONTROL STATEMENT. ANY DISPLAY * CODE CHARACTER NOT USED IN ANY DIRECTIVE (INCLUDING * SPACE) CAN BE USED AS THE SEPARATOR CHARACTER. ZAP SUBR ENTRY/EXIT * SET INPUT FET STATUS TO EOR READ. BX4 X2 RECALL X2 MX3 42 SA1 X4 SET EOR READ STATUS IN FET SX2 31B BX6 X3*X1 SX3 41B PRESET TERMINATOR INDICATOR BX6 X6+X2 LX3 12 SA6 A1 SB2 CCDR FWA CONTROL STATEMENT RJ /COMCUSB/USB UNPACK CONTROL STATEMENT * FIND CONTROL STATEMENT TERMINATOR. ZAP1 SA1 B6 GET NEXT CHARACTER FROM CONTROL STATEMENT SB2 X1 LX7 X3,B2 SB6 B6+B1 GE B6,B7,ZAPX IF END OF CONTROL STATEMENT PL X7,ZAP1 IF NOT TERMINATOR * EXTRACT ONE DIRECTIVE. ZAP2 SA3 B6+ GET SEPARATOR SB2 B6+1 SAVE FWA DIRECTIVE .C IF DEF,ZAP$ SX2 B1 ASSUME NO TERMINATOR FOUND .C ENDIF ZAP3 SB6 B6+B1 SA1 B6+ GET NEXT CHARACTER FROM CONTROL STATEMENT BX7 X3-X1 CHECK FOR SEPARATOR GT B6,B7,ZAP4 IF END OF CONTROL STATEMENT .D IF DEF,ZAP$ ZR X7,ZAP3.2 IF END OF DIRECTIVE SX7 X1-1R. ZR X7,ZAP3.1 IF TERMINATOR SX7 X1-1R) NZ X7,ZAP3 IF NOT TERMINATOR ZAP3.1 SX2 B0+ EQ ZAP3 GET SEPARATOR ZAP3.2 BSS 0 .D ELSE NZ X7,ZAP3 IF NOT END OF DIRECTIVE .D ENDIF EQ B2,B6,ZAP2 IF TWO SEPARATORS IN A ROW * ENTER DIRECTIVE INTO INPUT FET BUFFER. ZAP4 SX6 B6 SAVE SEPARATOR ADDRESS SA6 ZAPA .A IF DEF,ZAP$ BX7 X1 SAVE SEPARATOR SA7 ZAPB ZR X2,ZAP5 IF TERMINATOR FOUND SX6 1R. SA6 A1 SB6 B6+B1 INCREMENT DIRECTIVE LENGTH ZAP5 BSS 0 .A ENDIF SB7 B6-B2 SET DIRECTIVE LENGTH WRITES X4,B2,B7 .B IF DEF,ZAP$ SA1 ZAPA RESTORE PROPER SEPARATOR SA3 ZAPB SA1 X1 BX6 X3 SA6 A1+ .B ENDIF SA1 ZAPA RESTORE SEPARATOR ADDRESS SA3 /COMCUSB/USBC RESTORE LWA CONTROL STATEMENT SX4 X2 RESET INPUT FET ADDRESS SB6 X1 SB7 X3+ LT B6,B7,ZAP2 IF MORE DIRECTIVES TO PROCESS EQ ZAPX RETURN ZAPA CON 0 SEPARATOR ADDRESS ZAPB CON 0 SEPARATOR USED BY CALLER ZAP SPACE 4,10 BASE * QUAL$ IF -DEF,QUAL$ QUAL * ZAP EQU /COMCZAP/ZAP QUAL$ ENDIF ENDX SPACE 4 IF -DEF,QUAL$,1 QUAL COMCUSB BASE D * COMMENT COPYRIGHT CONTROL DATA CORP. 1972. USB SPACE 4 *** USB - UNPACK DATA BLOCK TO STRING BUFFER. * D. A. HIVELEY. 72/03/01. * S. R. MCPHERSON. 74/09/30. * A. D. FORET. 74/12/04. RESEQUENCE. USB SPACE 4 *** USB - UNPACK DATA BLOCK TO STRING BUFFER. * * IF THE SYMBOL USBL$ IS DEFINED IN THE USER PROGRAM, THE * VARIABLE LENGTH STRING BUFFER OPTION IS SELECTED. THIS * VARIABLE LENGTH OPTION REQUIRES THAT THE STRING BUFFER USBB, * OF LENGTH SPECIFIED BY B6 UPON ENTRY, ALSO BE DEFINED IN THE * USER PROGRAM. * * ENTRY (B1) - 1. * (B2) - FWA OF PACKED DATA. * (B6) - STRING BUFFER LENGTH, REQUIRED AND USED ONLY * WHEN VARIABLE LENGTH STRING BUFFER OPTION * SELECTED (USBL$ DEFINED). * * EXIT CHARACTER UNPACKED 1 TO A WORD, RIGHT JUSTIFIED * STARTING AT (USBB). A MAXIMUM OF * 80 CHARACTERS ARE ACCOMMODATED, BY * DEFAULT. AN ADDITIONAL WORD IS PROVIDED * FOR THOSE PROGRAMS THAT GUARANTEE A * TERMINATOR AT THE END OF STRING. * (A1) = LWA PACKED DATA PROCESSED. * ((A6)) = LWA OF UNPACK BUFFER. * (B2) = 0, IF MAXIMUM CHARACTERS PROCESSED. * (B6) = FWA OF UNPACK BUFFER. * (B7) = LWA OF UNPACKED BUFFER. * (USBC) = LWA OF UNPACKED BUFFER. * * USES X - 1, 2, 6. * A - 1, 6. * B - 2, 6, 7. USB3 SX6 B7+ ADDRESS OF LAST CHARACTER SA6 USBC SB6 USBB SET BEGINNING ADDRESS OF STRING USB PS ENTRY/EXIT SA1 B2+ CONTROL CARD BUFFER SB7 USBB-1 DATA BLOCK STRING BUFFER MX2 -6 IF DEF,USBL$ SB2 B6+ ELSE 1 SB2 80 SB6 B0 SET CHARACTER COUNT IN WORD USB1 LX1 6 SB6 B6+B1 BUMP CHARACTER COUNT THIS WORD BX6 -X2*X1 BX1 X2*X1 CLEAR CURRENT CHARACTER FROM WORD USB2 SB7 B7+B1 INCREMENT STRING BUFFER ADDRESS SB2 B2-B1 DECREMENT CHARACTER COUNT SA6 B7+ STORE CURRENT CHARACTER IN STRING BUFFER ZR B2,USB3 IF MAXIMUM CHARACTERS PROCESSED NZ X1,USB1 IF MORE CHARACTERS THIS WORD SX6 B6-9 CHECK CHARACTERS PROCESSED THIS WORD NG X6,USB3 IF END OF LINE SB6 B0 RESET CHARACTER COUNT WITHIN WORD SA1 A1+B1 GET NEXT WORD ZR X1,USB3 IF END OF LINE NZ X6,USB1 IF LAST WORD COMPLETELY PROCESSED EQ USB2 PROCESS *00* TERMINATING PREVIOUS WORD SPACE 4 IF -DEF,USBL$,2 IF -DEF,USBB,1 USBB BSS 81 STRING BUFFER IF -DEF,USBC,1 USBC BSS 1 QUAL$ IF -DEF,QUAL$ QUAL * USB EQU /COMCUSB/USB IF -DEF,USBL$,2 IF -DEF,USBB,1 USBB EQU /COMCUSB/USBB IF -DEF,USBC,1 USBC EQU /COMCUSB/USBC QUAL$ ENDIF BASE * ENDX END