cdc:nos2.source:nam5871:lfgzap
Table of Contents
LFGZAP
Table Of Contents
- [00005] INTERFACE TO *Z* ARGUMENT PROCCESSOR.
- [00032] *Z* ARGUMENT PROCESSOR.
- [00037] *Z* ARGUMENT PROCESSOR.
Source Code
- LFGZAP.txt
- *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
cdc/nos2.source/nam5871/lfgzap.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator