mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-07 11:17:06 +00:00
778 lines
25 KiB
Plaintext
778 lines
25 KiB
Plaintext
TITLE PROJCT - PROGRAM TO CONVERT PROJCT.ACT TO PROJCT.SYS FOR VALIDATION - V1(11)
|
||
|
||
|
||
|
||
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1979,1980,1984,1986.
|
||
;ALL RIGHTS RESERVED.
|
||
;
|
||
;
|
||
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
|
||
;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
|
||
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
|
||
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
|
||
;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
|
||
;TRANSFERRED.
|
||
;
|
||
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
|
||
;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
|
||
;CORPORATION.
|
||
;
|
||
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
|
||
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
|
||
|
||
|
||
SUBTTL AECARLSON/AEC/BAH/JMF 29-Jan-81
|
||
SALL
|
||
SEARCH UUOSYM,MACTEN,ACTSYM
|
||
|
||
PRJVER==1 ;MAJOR VERSION
|
||
PRJEDT==11 ;EDIT LEVEL
|
||
PRJMIN==0 ;MINOR VERSION
|
||
PRJWHO==0 ;LAST MODIFIER
|
||
|
||
LOC 137
|
||
|
||
VRSN. (PRJ)
|
||
|
||
RELOC
|
||
|
||
|
||
COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1979,1986.ALL RIGHTS RESERVED.
|
||
\;END COPYRIGHT MACRO
|
||
|
||
|
||
X==4
|
||
MASK==5
|
||
T1==6
|
||
T2==7
|
||
FIELD==10
|
||
A==11
|
||
D==12
|
||
ERRTYP==13
|
||
TBLPTR==14
|
||
B==15
|
||
C==16
|
||
P==17 ;PUSHDOWN LIST POINTER
|
||
|
||
|
||
|
||
|
||
SUBTTL EDIT HISTORY
|
||
|
||
;2 CORRECT MASK FOR WILD-CARD PPN'S, ALLOW WILD CARDS IN ACCOUNT STRING.
|
||
;3 CONVERT LOWER CASE TO UPPER CASE IF FTCASECONVERT IS ON FROM ACTSYM.
|
||
;4 REPORT FILOP. ERROR CODES WHEN LOOKUP/ENTER FAILS.
|
||
;5 ACCEPT SOS LINE NUMBERED PROJCT.ACT
|
||
;6 USE ASSEMBLY PARAMETER "PRJWPB" INSTEAD OF ABSOLUTE 200'S
|
||
;7 LONG LINES COULD OVERFLOW OUTREC, COUNT CHARACTERS
|
||
;10 RANGE CHECK ACCOUNT STRING LENGTH. CHANGE THE WAY SWITCHES ARE (NOT)
|
||
; HANDLED. IMPLEMENT /DEFAULT TO SET DEFAULT ACCOUNT STRING
|
||
;11 SAVE SPACE IN PROJCT.SYS IF PRJWPB .GT. 200. ALLOW PPN ENTRIES TO
|
||
; CROSS BLOCK BOUNDRIES. THESE CHANGES CONSTITUTE FORMAT VERSION 2.
|
||
;
|
||
SUBTTL MACROS AND DEFINITIONS
|
||
|
||
DEFINE CRLF(X),<
|
||
IFE <X>, <OUTSTR [BYTE(7) 12,15,0,0,0]>
|
||
IFE <X-1>,<OUTSTR [BYTE(7) 12,15,0,0,0]>
|
||
IFE <X-2>,<OUTSTR [BYTE(7) 12,15,15,0,0]>
|
||
IFE <X-3>,<OUTSTR [BYTE(7) 12,15,15,15,0]>
|
||
> ; END CRLF MACRO
|
||
|
||
|
||
|
||
ACVERS==2 ;VERSION OF THE PROJCT.SYS FILE
|
||
SUBTTL MAIN PROGRAM
|
||
|
||
PROJCT: RESET
|
||
CRLF 2
|
||
MOVE P,[IOWD 100,STACK] ;INITIALIZE STACK POINTER
|
||
MOVEI T1,[OUTSTR [ASCIZ/PROGRAM NOT RESTARTABLE./]
|
||
CRLF 2
|
||
EXIT]
|
||
HRRM T1,.JBSA## ;DON'T ALLOW "START" AFTER FIRST RUNNING
|
||
MOVE T1,[6,,INPFIL] ;SET UP FILOP. PARMS
|
||
FILOP. T1, ;LOCATE AND OPEN THE INPUT FILE.
|
||
JRST FIL1ER ;IF AN ERROR, GO PROCESS IT.
|
||
MOVE T1,[6,,OUTFIL] ;SET UP OUTPUT FILOP PARMS
|
||
FILOP. T1, ;LOCATE AND OPEN THE OUTPUT FILE.
|
||
JRST FIL2ER ;IF AN ERROR, GO PROCESS IT.
|
||
MOVE T1,[6,,MAPFIL] ;SET UP FILOP. PARMS
|
||
FILOP. T1, ;LOCATE AND OPEN TEMP MAP FILE.
|
||
JRST FIL3ER ;IF AN ERROR, GO PROCESS IT.
|
||
SETZ FIELD, ;SET FIELD INDICATOR TO [P,PN]
|
||
MOVEI TBLPTR,TABLE ;INIT TBLPTR WITH TABLE ADDRESS.
|
||
SETO ERRTYP, ;INDICATE NO ERRORS.
|
||
GETBYT: PUSHJ P,INBYTE ;GO GET A BYTE OF DATA
|
||
JRST @PROCES(T2) ;GO PROCESS THE BYTE.
|
||
|
||
FIL1ER: OUTSTR [ASCIZ/PROJCT.ACT/]
|
||
JRST FILECM ;END ERROR MESSAGE
|
||
|
||
FIL2ER: OUTSTR [ASCIZ/PROJCT.SYS/]
|
||
JRST FILECM ;END ERROR MESSAGE
|
||
|
||
FIL3ER: OUTSTR [ASCIZ/PROJCT.MAP/]
|
||
FILECM: OUTSTR [ASCIZ/ FILOP. ERROR, ERROR CODE = /]
|
||
MOVE T2,T1
|
||
LSH T2,-3
|
||
ADDI T2,"0"
|
||
CAIE T2,"0"
|
||
OUTCHR T2
|
||
ANDI T1,7
|
||
ADDI T1,"0"
|
||
OUTCHR T1
|
||
CRLF
|
||
JRST FINISH
|
||
|
||
SUBTTL ROUTINES - [ BRACKET, ] BRACKET, & ALPHA CHARS ROUTINES.
|
||
|
||
LBRKT: JRST @LBFLD(FIELD) ;GO PROCESS [ BRACKET BY FIELD
|
||
LBPPN: AOSG LBCNT ;MAKE SURE ONLY 1 [ FOR PPN
|
||
JRST GETBYT ;IF SO, IGNORE IT.
|
||
MOVEI ERRTYP,8 ;ELSE TOO MANY ['S, SO
|
||
JRST ERROR ;GO PROCESS THE ERROR.
|
||
|
||
LBFLD: 0,,LBPPN
|
||
0,,STOREC
|
||
0,,[MOVEI ERRTYP,21
|
||
JRST ERROR]
|
||
|
||
|
||
|
||
RBRKT: JRST @RBFLD(FIELD) ;GO PROCESS ] BRACKET BY FIELD
|
||
RBPPN: AOSG RBCNT ;MAKE SURE ONLY 1 ] FOR PPN
|
||
JRST GETBYT ;IF SO, IGNORE IT.
|
||
MOVEI ERRTYP,9 ;ELSE TOO MANY ]'S, SO
|
||
JRST ERROR ;GO PROCESS THE ERROR.
|
||
|
||
RBFLD: 0,,RBPPN
|
||
0,,STOREC
|
||
0,,[MOVEI ERRTYP,21
|
||
JRST ERROR]
|
||
|
||
|
||
ALPHA: JRST @ALFLD(FIELD) ;GO PROCESS ALPHA BY FIELD
|
||
ALPPN: MOVEI ERRTYP,0 ;IF ALPHA IN PPN, THEN ERROR
|
||
JRST ERROR ;SO GO PROCESS IT.
|
||
|
||
ALFLD: 0,,ALPPN
|
||
0,,STOREC
|
||
0,,STOREC
|
||
|
||
SUBTTL CR.LF - ROUTINE TO PROCESS CARRIAGE RETURNS AND LINE FEEDS.
|
||
|
||
CR: JRST @CRFLD(FIELD) ;PROCESS CARRIAGE RETURN BY FIELD.
|
||
CRPPN: MOVEI ERRTYP,1 ;IF CR IN PPN FIELD, THEN ERROR
|
||
JRST ERROR ;SO GO PROCESS IT.
|
||
CRA.S.: SKIPE AS.LEN ;CHECK THE A.S. LENGTH
|
||
JRST CRASOK ;IF A.S. NOT NULL,THEN CONTINUE.
|
||
MOVEI ERRTYP,12 ;ELSE GENERATE AN ERROR CODE.
|
||
JRST ERROR ; AND GO PROCESS THE ERROR.
|
||
CRASOK: PUSHJ P,BUILD ;GO GENERATE A TABLE ENTRY
|
||
NXTBYT: PUSHJ P,INBYTE ;SKIP ALL BYTES
|
||
CAIGE T2,40 ; THAT ARE BREAK CHARACTERS.
|
||
JRST NXTBYT ;SKIP THIS BYTE
|
||
PUSHJ P,RESETA ;GO RESET THE POINTERS AND COUNTERS.
|
||
SOSLE ORCSIZ ;MAKE SURE THERE IS ROOM FOR CHARACTER
|
||
DPB T2,OUTPTR ;SAVE LAST BYTE AT START OF STRING.
|
||
JRST @PROCES(T2) ;GO PROCESS THE DATA
|
||
|
||
CRFLD: 0,,CRPPN
|
||
0,,CRA.S.
|
||
0,,[SKIPE CS.LEN ;CAN'T HAVE NULL SWITCHES
|
||
JRST CRA.S. ;SEE IF ACCOUNT STRING IS OK
|
||
MOVEI ERRTYP,15 ;GENERATE AN ERROR
|
||
JRST ERROR]
|
||
|
||
SUBTTL NUMBER - ROUTINE TO PROCESS NUMERICS BY FIELD.
|
||
|
||
NUMBER: JRST @NBFLD(FIELD) ;GO PROCESS NUMERICS BY FIELD
|
||
NBPPN: CAIG T2,67 ;MAKE SURE DIGIT IS OCTAL.
|
||
JRST DIGOK ;IF SO, THEN CONTINUE
|
||
MOVEI ERRTYP,2 ;ELSE GENERATE THE ERROR CODE,
|
||
JRST ERROR ;AND GO PROCESS THE ERROR.
|
||
DIGOK: IDPB T2,PPNPTR ;SAVE POSSIBLE P,PN VALUE
|
||
AOS PPNCNT ;ADD 1 TO NUMBER BYTE COUNT
|
||
MOVE C,PPNCNT ;LOAD AC C WITH BYTE COUNT
|
||
CAIG C,6 ;IS # OF BYTES > 6 ?
|
||
JRST GETBYT ;IF NOT, RETURN TO GET MORE DATA.
|
||
MOVEI ERRTYP,7 ;ELSE LOAD ERROR CODE
|
||
JRST ERROR ;AND GO PROCESS THE ERROR.
|
||
|
||
NBFLD: 0,,NBPPN ;IF NUMBER IS IN A.S. FIELD OR /SWTCH.
|
||
0,,STOREC ; FIELD, THEN JUST SAVE IT IN
|
||
0,,STOREC ; THE FIELD SAVE AREAS.
|
||
|
||
SUBTTL COMMA - ROUTINE TO PROCESS COMMA'S.
|
||
|
||
COMMA: JRST @CMFLD(FIELD) ;GO PROCESS COMMAS BY FIELD
|
||
CMPPN: AOSG CMCNT ;IF COMMA IN PPN FIELD, ADD 1 TO COMMA
|
||
JRST CHKLEN ;COUNT, IF 0 THEN WE SHOULD HAVE 'P'
|
||
; VALUE, SO MAKE SURE BYTE COUNT > 0.
|
||
MOVEI ERRTYP,3 ;ELSE, MORE THEN 1 COMMA IN PPN, SO
|
||
JRST ERROR ;GO PROCESS THE ERROR
|
||
CHKLEN: SKIPE PPNCNT ;IF NUMBER BYTE COUNT STILL 0
|
||
JRST CVRTP ;THEN THATS AN ERROR, SO
|
||
MOVEI ERRTYP,4 ;SET UP ERROR CODE
|
||
JRST ERROR ;AND GO PROCESS THE ERROR
|
||
CVRTP: PUSHJ P,CV2OCT ;GO CONVERT THE STRING TO OCTAL BINARY
|
||
HRLM C,P.PN ;SAVE THE 'P' FIELD IN OUTPUT TABLE
|
||
HRLM MASK,PPNMSK ;SAVE THE 'P' MASK FOR WILD-CARDING.
|
||
JRST GETBYT ;GO GET SOME MORE DATA
|
||
CMA.S.: SKIPE AS.LEN ;MAKE SURE A.S. FIELD NOT NULL.
|
||
JRST ALENOK ;IF NOT, THEN CONTINUE PROCESSING.
|
||
MOVEI ERRTYP,12 ;ELSE GENERATE ERROR CODE,
|
||
JRST ERROR ; AND GO PROCESS THE ERROR.
|
||
ALENOK: PUSHJ P,BUILD ;GO BUILD AN ENTRY IN TABLE
|
||
MOVEI FIELD,1 ;RESET THE FIELD POINTER TO A.S.
|
||
JRST GETBYT ;GO GET THE NEXT BYTE.
|
||
|
||
CM.SWT: SKIPE CS.LEN ;MAKE SURE /SWTCH. FIELD NOT NULL.
|
||
JRST CMA.S. ;IF NOT, GO CHECK ACCOUNT STRING
|
||
MOVEI ERRTYP,15 ;ELSE GENERATE AN ERROR CODE,
|
||
JRST ERROR ; AND GO PROCESS THE ERROR
|
||
|
||
CMFLD: 0,,CMPPN
|
||
0,,CMA.S.
|
||
0,,CM.SWT
|
||
|
||
SUBTTL EQUALS - ROUTINE TO PROCESS = SIGN DELIMITER.
|
||
|
||
EQUALS: AOSG EQCNT ;MAKE SURE THERE IS ONLY 1
|
||
JRST @EQFLD(FIELD) ;PROCESS THE = BY FIELD.
|
||
MOVEI ERRTYP,5 ;ELSE TOO MANY ='S, SO ERROR.
|
||
JRST ERROR ; GO PROCESS IT.
|
||
EQPPN: SKIPE PPNCNT ;MAKE SURE PN LENGTH NOT 0
|
||
JRST CVRTPN ;IF NOT, THEN GO CONVERT TO BINARY.
|
||
MOVEI ERRTYP,6 ;ELSE 0 LENGTH IS AN ERROR,
|
||
JRST ERROR ;SO GO PROCESS IT.
|
||
CVRTPN: PUSHJ P,CV2OCT ;CONVERT PN TO OCTAL BINARY.
|
||
HRRM C,P.PN ;AND SAVE IT IN TABLE
|
||
HRRM MASK,PPNMSK ;SAVE THE 'PN' MASK FOR WILD-CARDING.
|
||
SKIPL C,P.PN ;PICK UP LAST PPN.
|
||
CAML C,PPNSAV ;COMAPRE AGAINST LAST PPN.
|
||
JRST CHKHI ;IF NOT LESS, THEN CHECK HIGH
|
||
MOVEI ERRTYP,13 ; GENERATE AN ERROR CODE,
|
||
JRST ERROR ; AND GO PROCESS THE ERROR.
|
||
CHKHI: CAME C,PPNSAV ;IF NEW PPN = OLD PPN, THEN CONTINUE.
|
||
PUSHJ P,BLDREC ; ELSE GO BUILD OUTPUT BUFFER
|
||
MOVEI FIELD,1 ;SET FIELD TO ACCOUNT STRING FIELD.
|
||
JRST GETBYT ;GO PROCESS THE NEXT BYTE.
|
||
|
||
EQFLD: 0,,EQPPN
|
||
0,,STOREC
|
||
0,,[MOVEI ERRTYP,21
|
||
JRST ERROR]
|
||
|
||
SUBTTL SLASH - ROUTINE TO PROCESS /SWITCH FIELDS.
|
||
|
||
SLASH: AOSG SLCNT ;CHECK FOR CONSECUTIVE
|
||
JRST SLOK ; SLASHES. IF NONE, CONTINUE.
|
||
SLERRP: MOVEI ERRTYP,23 ;ELSE GENERATE ERROR CODE,
|
||
JRST ERROR ;AND GO PROCESS THE ERROR.
|
||
SLOK: JRST @SLFLD(FIELD) ;GO PROCESS THE / BY FIELD.
|
||
SLA.S.: SKIPE AS.LEN ;MAKE SURE IT'S AFTER THE ACCOUNT STRING
|
||
JRST SLOK1 ;SO FAR SO GOOD
|
||
MOVEI ERRTYP,12 ;NULL ACCOUNT STRING
|
||
JRST ERROR ;GO PROCESS THE ERROR
|
||
SLOK1: MOVEI FIELD,2 ;SET UP /SWTCH. FIELD.
|
||
JRST GETBYT ;GO GET THE NEXT BYTE.
|
||
|
||
SLFLD: 0,,SLERRP
|
||
0,,SLA.S.
|
||
0,,SLERRP
|
||
SUBTTL STOREC - ROUTINE TO STORE CHARS IN A.S. & /SWITCH SAVE AREAS.
|
||
|
||
STOREC: JRST @STFLD(FIELD) ;STORE BYTES ACCORDING TO THE FIELD.
|
||
STA.S.: SKIPL WLASFL ;"*" SEEN IN A.S. FIELD
|
||
JRST [MOVEI ERRTYP,22 ;* NOT LAST
|
||
JRST ERROR] ;REPORT ERROR
|
||
CAIN T2,"*" ;IS THIS THE WILD CARD
|
||
SETZM WLASFL ;YES, MARK WE'VE SEEN IT
|
||
IDPB T2,AS.PTR ;SAVE THE BYTE IN AS.FLD
|
||
AOS AS.LEN ;BUMP AS. LENGTH BY 1
|
||
MOVEI A,^D40 ;CHECK THE LENGTH
|
||
CAMLE A,AS.LEN ;OF ACCOUNT FIELD, IF LESS THEN 40
|
||
JRST GETBYT ;THEN CONTINUE PROCESSING.
|
||
MOVEI ERRTYP,16 ;ELSE GENERATE AN ERROR CODE,
|
||
JRST ERROR ;AND GO PROCESS THE ERROR.
|
||
ST.SWT: AOS A,CS.LEN ;GET LENGTH
|
||
CAIG A,5 ;ONLY SAVE FIRST 5 CHARACTERS
|
||
IDPB T2,CS.PTR ;TUCK IT AWAY FOR BUILD
|
||
JRST GETBYT ;GO GET THE NEXT BYTE
|
||
|
||
STFLD: 0,,0
|
||
0,,STA.S.
|
||
0,,ST.SWT
|
||
|
||
|
||
|
||
SUBTTL WLDCRD - [P,PN] WILD-CARD INITIALIZATION ROUTINE.
|
||
|
||
WLDCRD: JRST @WLFLD(FIELD) ;PROCESS ?,* BY FIELD.
|
||
WLPPN: CAIN T2,"*" ;WILD CARD THE ENTIRE FIELD?
|
||
JRST WLPPN2 ;YES
|
||
IDPB T2,PPNPTR ;STORE THE WILD CARD CHARACTER
|
||
AOS C,PPNCNT ;COUNT CHARACTERS, GET COUNT SO FAR
|
||
CAIG C,6 ;MORE THAN ALLOWED?
|
||
JRST GETBYT ;NO, GET NEXT CHARACTER
|
||
WLPPN1: SETZM .WILD ;HERE ON ERROR, NO WILD CARDS SEEN
|
||
MOVEI ERRTYP,7 ;TOO MANY DIGITS/WILDCARDS IN P,PN
|
||
JRST ERROR ;GO PROCESS THE ERROR
|
||
WLPPN2: SKIPE PPNCNT ;BEEN HERE BEFORE?
|
||
JRST WLPPN1 ;YES, ONLY ONE * ALLOWED, NOT ALLOWED
|
||
; WITH DIGITS
|
||
MOVEI T2,"?" ;FILL FIELD WITH WILD CARD CHARACTERS
|
||
MOVEI C,6 ;P,PN WIDTH
|
||
MOVEM C,PPNCNT ;NOTE THAT WE HAVE BEEN HERE
|
||
WLPPN3: IDPB T2,PPNPTR ;STORE WILD CARD
|
||
SOJG C,WLPPN3 ;FILL THE ENTIRE FIELD
|
||
JRST GETBYT ;GET NEXT CHARACTER
|
||
|
||
WLFLD: 0,,WLPPN
|
||
0,,[SETOM WLDASF ;MARK EITHER ? OR *
|
||
JRST STA.S.] ;AND INCLUDE IT
|
||
0,,[MOVEI ERRTYP,21
|
||
JRST ERROR]
|
||
SUBTTL BUILD - ROUTINE TO BUILD ACCOUNT STRING TABLE ENTRY'S.
|
||
|
||
;BUILD PPN AND ACCOUNT STRING TABLE ENTRY'S
|
||
|
||
BUILD: MOVE T1,AS.LEN ;PICK UP AS. LENGTH IN BYTES
|
||
ADDI T1,4 ;ROUND OFF BYT CNT TO NEXT WORD.
|
||
PUSH P,T2 ;SAVE CHARACTER AROUND DIVIDE
|
||
IDIVI T1,5 ;CALC LENGTH IN WORDS
|
||
POP P,T2 ;RESTORE CHARACTER CLOBBERED BY IDIVI
|
||
ADDI T1,4 ;ADD LENGTHS OF PPN, MASK, AND LENGTH.
|
||
MOVE A,T1 ;LOAD THE LENGTH INTO A
|
||
ADD A,TBLSIZ ;ADD CURRENT TABLE LENGTH
|
||
CAIGE A,PRJWPB ;MAKE SURE WE ARE STILL IN BUFFER.
|
||
JRST AS.FIT ;IF SO, THEN CONTINUE.
|
||
MOVE C,P.PN ;GET CURRENT PPN
|
||
PUSHJ P,BLDREC ;FORCE OUT THIS BUFFER LOAD
|
||
JRST BUILD ;AND START AGAIN
|
||
AS.FIT: HRRZM T1,0(TBLPTR) ;AND SAVE IT IN TABLE
|
||
ADDM T1,TBLSIZ ;ADD A.S. LENGTH TO BUFFER LENGTH.
|
||
SUBI T1,1 ;CALC BLT END ADDRESS-1
|
||
ADD T1,TBLPTR ; PARAMETER.
|
||
MOVE B,AS.LEN ;GET CHARACTER COUNT AGAIN
|
||
HRLZM B,3(TBLPTR) ;SAVE ACCOUNT LENGTH IN TABLE.
|
||
HRRI B,4(TBLPTR) ;SET UP BLT DESTINATION ADDRESS
|
||
HRLI B,AS.FLD ;SET UP BLT SOURCE ADDRESS.
|
||
BLT B,(T1) ;MOVE ACCOUNT STRING TO TABLE.
|
||
MOVE B,P.PN ;PICK UP THE PPN
|
||
TLZ B,400000 ;-1 IS ILLEGAL FOR A PROJECT NUMBER, WILDCARDING
|
||
; COULD HAVE TURNED ON THE SIGN BIT
|
||
MOVEM B,1(TBLPTR) ; AND SAVE IT IN THE TABLE.
|
||
MOVE B,PPNMSK ;PICK UP THE WILD-CARD PPN MASK.
|
||
MOVEM B,2(TBLPTR) ; SAVE IT IN THE TABLE.
|
||
MOVE X,CS.LEN ;GET SWITCH LENGTH IF ANY
|
||
JUMPE X,NOSWT ;NONE TO WORRY ABOUT
|
||
CAILE X,5 ;ONLY CHECK FIRST 5 CHARACTERS
|
||
MOVEI X,5 ;LOWER LIMIT
|
||
MOVE A,[ASCII/DEFAU/] ;ONLY DEFINED SWITCH FOR NOW
|
||
AND A,[BYTE (7) 177,0,0,0,0
|
||
BYTE (7) 177,177,0,0,0
|
||
BYTE (7) 177,177,177,0,0
|
||
BYTE (7) 177,177,177,177,0
|
||
BYTE (7) 177,177,177,177,177]-1(X)
|
||
CAME A,SWTCH. ;CHECK FOR /DEFAULT
|
||
JRST [MOVEI ERRTYP,24 ;UNKNOWN SWITCH
|
||
JRST ERROR]
|
||
SKIPE WLDASF ;NO WILDCARDS ALLOWED IN DEFAULT
|
||
JRST [MOVEI ERRTYP,25
|
||
JRST ERROR]
|
||
MOVEI A,1B35 ;FLAG DEFAULT ACCOUNT STRING FOR PPN
|
||
IORM A,3(TBLPTR) ;LIGHT FLAG BIT FOR ACTDAE
|
||
NOSWT: HRRI TBLPTR,1(T1) ;POINT TO NEXT TABLE ENTRY
|
||
PUSHJ P,RESETB ;GO RESET SOME POINTERS AND COUNTERS.
|
||
POPJ P, ;RETURN TO CALLER
|
||
|
||
SUBTTL INBYTE - ROUTINE TO READ TEMP STORAGE FILE.
|
||
|
||
INBYTE: SOSGE IBFCNT ;MAKE SURE THERE IS DATA IN BUFFER.
|
||
JRST READ ;IF NOT, GO GET A BLOCK.
|
||
ILDB T2,IBFPTR ;ELSE PICK UP A BYTE
|
||
PUSH P,T2 ;CANNOT CLOBBER REGISTERS HERE
|
||
MOVEI T2,1B35 ;LINE NUMBER FLAG
|
||
TDNE T2,@IBFPTR ;DID WE JUST STEP INTO A LINE NUMBER
|
||
JRST [ANDCAM T2,@IBFPTR ;YES, CLEAR IT SO WE DON'T GET BACK HERE
|
||
POP P,T2 ;CLEAN STACK
|
||
PUSHJ P,INBYTE ;EAT UP THE REST OF THE LINE NUMBER
|
||
PUSHJ P,INBYTE ;...
|
||
PUSHJ P,INBYTE ;...
|
||
PUSHJ P,INBYTE ;...
|
||
PUSHJ P,INBYTE ;EAT THE <TAB> BETWEEN LINE NUMBER AND DATA
|
||
JRST INBYTE] ;AND GET FIRST REAL DATA BYTE FROM THIS LINE
|
||
POP P,T2 ;RESTORE CHARACTER AFTER LINE NUMBER CHECK
|
||
IFN FTCASECONVERT,<
|
||
CAIG T2,"Z"+" " ;LOWER CASE Z
|
||
CAIGE T2,"A"+" " ;RANGE CHECK INPUT
|
||
CAIA ;NOT LOWER CASE
|
||
SUBI T2," " ;CONVERT TO UPPER CASE
|
||
>
|
||
CAIGE T2," " ;DO NOT SAVE BREAK CHARACTERS.
|
||
POPJ P, ;CONTROL CHAR, RETURN
|
||
SOSLE ORCSIZ ;MAKE SURE THERE IS ROOM FOR CHARACTER
|
||
IDPB T2,OUTPTR ;AND SAVE IT (FOR POSSIBLE ERROR MSG)
|
||
POPJ P, ;RETURN TO CALLER
|
||
READ: IN X, ;GET A BLOCK OF DATA
|
||
JRST INBYTE ;IF NO ERROR, THEN CONTINUE
|
||
STATZ X,IO.EOF ;WAS ERROR END OF FILE ?
|
||
JRST ENDJOB ;IF SO, THEN FINISH THE JOB
|
||
OUTSTR [ASCIZ\I/O ERROR OCCURED WHILE READING INPUT FILE.\]
|
||
CRLF
|
||
OUTSTR [ASCIZ/PROCESSING TERMINATED./]
|
||
CRLF
|
||
JRST FINISH ;GO RETRN TO MONITOR.
|
||
|
||
SUBTTL ERROR - ROUTINE TO PROCESS ERRORS MESSAGES.
|
||
|
||
ERROR: CAIE T2,15 ;SPIN UNTIL END OF LINE
|
||
CAIN T2,12 ;...
|
||
JRST BRKCHR ;IF SO, THEN WRITE OUT THE ERROR MSG.
|
||
PUSHJ P,INBYTE ;ELSE GO GET ANOTHER BYTE.
|
||
JRST ERROR ;AND CHECK FOR BREAK AGAIN.
|
||
BRKCHR: SETZ C, ;GENERATE A NULL BYTE,
|
||
IDPB C,OUTPTR ;AND SAVE IT IN OUTPUT MSG.
|
||
OUTSTR OUTREC ;PRINT THE BAD DATA,
|
||
CRLF ;SEPARATE LINES
|
||
OUTSTR @ERMSG(ERRTYP) ; AND THE ERROR MESSAGE.
|
||
IOR ERRTYP,.WILD ;MERGE ERROR TYPE AND WILD FLAG.
|
||
CAIN ERRTYP,13 ;DID WE PRINT '[P,PN] OUT OF SEQ' MSG ?
|
||
OUTSTR WLDMSG ;IF SO,,PRINT EXPLANATION.
|
||
CRLF 2 ;SKIP 2 LINES.
|
||
FNDCHR: PUSHJ P,INBYTE ;GO GET A BYTE OF DATA.
|
||
CAIGE T2,40 ;IS IT VALID ?
|
||
JRST FNDCHR ;IF NOT, THEN SKIP IT.
|
||
PUSHJ P,RESETA ;GO RESET SOME POINTERS AND COUNTERS.
|
||
PUSHJ P,RESETB ;AND GO DO IT SOME MORE...
|
||
SOSLE ORCSIZ ;MAKE SURE THERE IS ROOM FOR CHARACTER
|
||
DPB T2,OUTPTR ;SAVE CURRENT BYTE.
|
||
JRST @PROCES(T2) ;THEN GO PROCESS THE DATA.
|
||
|
||
SUBTTL BLDREC - ROUTINE TO MANAGE THE OUTPUT BUFFER AND TABLE MAP.
|
||
|
||
BLDREC: AOSE FSTREC ;IS THIS THE FIRST TIME THROUGH ?
|
||
JRST NOTFST ;IF NOT, DO NOT DO INITIALIZATION.
|
||
PUSHJ P,WRTHDR ;ELSE WRITE OUT A DUMMY HEADER.
|
||
MOVEM C,PPNSAV ;SAVE THE NEW PPN
|
||
POPJ P, ;RETURN TO CALLER
|
||
NOTFST: SKIPG TBLSIZ ;MAKE SURE THERE IS DATA IN BUFFER.
|
||
JRST DONTBD ;IF NOT, THEN DONT BUILD OUTPUT BUFFER.
|
||
MOVEI B,PRJWPB ;SET AC B TO DISK BLOCK SIZE
|
||
SUB B,BLKSIZ ;SUBTRACT CURRECT BLOCK SIZE
|
||
CAMGE B,TBLSIZ ;IS THERE ROOM IN BUFR FOR TABLE?
|
||
PUSHJ P,WRTBFR ;IF NOT, THEN WRITE BUFR & GET ANOTHER.
|
||
MOVE B,TBLSIZ ;PICK UP [P,PN] BLOCK SIZE
|
||
HRLM B,TABLE ;SAVE AS OFFSET TO NEXT [P,PN].
|
||
HRRZ B,BLKSIZ ;PICK UP CURRENT BLOCK SIZE.
|
||
ADDI B,OTBFR ;CALC BUFFER ADDRESS FOR TABLE (DEST)
|
||
MOVE D,B ;LOAD D WITH DEST START ADDRESS
|
||
HRLI B,TABLE ;PICK UP BLT SOURCE ADDRESS.
|
||
ADD D,TBLSIZ ;CALC DEST END ADDRESS
|
||
SUBI D,1 ;CALC DEST END ADDRESS - 1
|
||
BLT B,0(D) ;MOVE TABLE TO OUTPUT BUFFER.
|
||
MOVE D,BLKSIZ ;CHECK AND SEE IF WE ARE AT THE
|
||
CAILE D,1 ; BEGINNING OF THE OUTPUT BUFFER.
|
||
JRST NOMAP ; IF NOT, THEN DO NOT MAKE A MAP ENTRY
|
||
HRLZ B,BLKCNT ;PICK UP RELATIVE BLOCK ADDRESS.
|
||
MOVE D,MAPPTR ;PICK UP CURRENT MAP PONTER
|
||
MOVEM B,MAP.+1(D) ;SAVE OFFSET,,BLOCK# IN MAP.
|
||
MOVE B,PPNSAV ;PICK UP PPN OF ENTRY
|
||
TLZ B,400000 ;SIGN BIT IS NEVER LEGAL FOR A PPN BUT
|
||
; WILDCARDING MIGHT TURN IT ON
|
||
MOVEM B,MAP.(D) ;SAVE PPN ENTRY # IN MAP
|
||
ADDI D,2 ;POINT TO NEXT MAP ENTRY
|
||
MOVEM D,MAPPTR ;AND SAVE IT FOR NEXT INSERT.
|
||
CAIL D,PRJWPB ;ARE WE STILL IN CURRENT BUFFER?
|
||
PUSHJ P,WRTMAP ;IF NOT, THEN WRITE MAP BUFFER.
|
||
NOMAP: HRRZ B,TBLSIZ ;PICK UP TABLE SIZE.
|
||
ADDM B,BLKSIZ ;ADD IT TO CURRENT BLOCK SIZE.
|
||
SETZM TBLSIZ ;ZERO CURRENT TABLE SIZE
|
||
MOVEI TBLPTR,TABLE ;RESET CURRENT TABLE POINTER.
|
||
DONTBD: MOVEM C,PPNSAV ;SAVE THE NEW PPN
|
||
POPJ P, ;RETURN TO CALLER
|
||
WRTHDR:
|
||
IFN <PRJWPB-200>,< ;IF LOGICAL BLOCKS ARE BIGGER THAN PHYSICAL ONES
|
||
MOVNI A,200 ;HEADERS ARE ONLY 1 REAL DISK BLOCK
|
||
HRLM A,OTCCW ;CLOBBER IO WORD COUNT
|
||
PUSHJ P,WRTBFR ;WRITE ONLY 1 DISK BLOCK
|
||
MOVNI A,PRJWPB ;RESTORE LOGICAL DISK BLOCK SIZE
|
||
HRLM A,OTCCW ;STORE
|
||
POPJ P, ;AND RETURN
|
||
> ; OTHERWISE, WRTHDR = WRTBFR
|
||
|
||
WRTBFR: OUT 5,OTCCW ;WRITE OUT THE BUFFER
|
||
JRST .+3 ;IF OUTPUT OK, CONTINUE
|
||
OUTSTR [ASCIZ\I/O ERROR WRITING PROJCT.SYS FILE.\]
|
||
JRST FINISH
|
||
SETZM OTBFR ;ZERO THE CURRENT BLOCK SIZE
|
||
MOVE A,[OTBFR,,OTBFR+1] ;SET UP SOURCE,,DEST BLT PARMS
|
||
BLT A,OTBFR+PRJWPB-1 ;ZERO THE OUTPUT BUFFER.
|
||
AOS BLKSIZ ;ADD 1 TO BLOCK SIZE
|
||
AOS BLKCNT ;ADD 1 TO BLOCK COUNT
|
||
POPJ P, ;RETURN TO CALLER
|
||
|
||
WRTMAP: OUT 6,MPCCW ;WRITE OUT THE MAP BUFFER.
|
||
JRST .+3 ;IF OUTPUT OK, CONTINUE.
|
||
OUTSTR [ASCIZ\I/O ERROR WRITING TEMP MAP FILE.\]
|
||
JRST FINISH ;GO EXIT FROM PROGRAM
|
||
AOS MAPCNT ;ADD 1 TO MAP BLOCK COUNTER.
|
||
SETZM MAPPTR ;ZERO THE CURRENT MAP POINTER
|
||
SETZM MAP. ;ZERO THE FIRST WORD OF MAP BUFFER.
|
||
MOVE A,[MAP.,,MAP.+1] ; SET UP SOURCE,,DEST BLT PARMS
|
||
BLT A,MAP.+PRJWPB-1 ; AND ZERO THE REST OF MAP BUFFER.
|
||
POPJ P, ;RETURN TO CALLER.
|
||
|
||
SUBTTL ENDJOB - ROUTINE TO PERFORM END-OF-JOB FUNCTIONS.
|
||
|
||
ENDJOB: SKIPL FSTREC ;HAS THE OUTPUT FILE BEEN INITLZED?
|
||
JRST FILEOK ;IF SO, THEN CONTINUE OEF PROCESSING.
|
||
MOVE C,P.PN ;PICK UP THE CURRENT [P,PN].
|
||
PUSHJ P,BLDREC ;GO INITIALIZE THE OUTPUT FILE.
|
||
FILEOK: SKIPG TBLSIZ ;IS THERE ANYTHING IN TEMP OUTPUT BUFR ?
|
||
JRST CHKBLK ;IF NOT, GO CHECK REAL OUTPUT BUFFER.
|
||
MOVE C,[377777,,-1] ;ELSE SET [P,PN] TO 377777,,777777
|
||
PUSHJ P,BLDREC ;AND GO BUILD THE OUTPUT BUFFER.
|
||
CHKBLK: MOVE C,BLKSIZ ;CHECK AND SEE IF WE ARE AT THE START
|
||
CAILE C,1 ;OF THE NEXT OUTPUT BUFFER.
|
||
PUSHJ P,WRTBFR ;IF NOT, THEN WRITE CURRENT BUFFER.
|
||
SKIPE B,MAPPTR ;PICK UP THE DATA MAP POINTER.
|
||
PUSHJ P,WRTMAP ;WRITE OUT THE LAST PARTIAL MAP BUFFER.
|
||
USETO 5,1 ;POINT TO FIRST OUTPUT BLOCK.
|
||
MOVEI 10,ACVERS ;PICK UP VERSION NUMBER.
|
||
MOVEM 10,OTBFR ;SAVE IT IN HEADER BLOCK.
|
||
MOVE 10,MAPCNT ;PICK UP # OF MAP BLOCKS WRITTEN.
|
||
JUMPE 10,[OUTSTR [ASCIZ/NO MAP BLOCKS WRITTEN/]
|
||
JRST FINISH]
|
||
SUBI 10,1 ;SUBTRACT 1 TO MAKE RIGHT
|
||
IMULI 10,PRJWPB ;MULTIPLY BY BLOCK SIZE.
|
||
ADDB 10,B ;ADD LAST BLOCK SIZE
|
||
MOVEM 10,OTBFR+1 ;SAVE IT IT HEADER BLOCK
|
||
MOVEI 10,PRJWPB ;GET NUMBER OF WORDS THIS WAS ASSEMBLED FOR
|
||
MOVEM 10,OTBFR+3 ;STORE FOR ACTDAE CHECKS
|
||
MOVE 10,BLKCNT ;PICK UP POINTER TO NEXT BLOCK
|
||
MOVEM 10,OTBFR+2 ;SAVE IT IN HEADER BLOCK
|
||
PUSHJ P,WRTHDR ;WRITE OUT THE HEADER BLOCK
|
||
SUBI 10,2 ;BLOCK NUMBER - 2
|
||
IMULI 10,<PRJWPB/200> ;* NUMBER OF BLOCKS PER BUFFER
|
||
USETO 5,2(10) ; + 2 = REAL DISK BLOCK ADDRESS
|
||
USETI 6,1 ;POINT TO FIRST MAP BLOCK.
|
||
GETMAP: IN 6,OTCCW ;READ A MAP BLOCK
|
||
JRST .+3 ;IF OK, THEN CONTINUE
|
||
OUTSTR [ASCIZ\I/O ERROR READING TEMP MAP FILE.\]
|
||
JRST FINISH ;GO END THE PROGRAM
|
||
IFN <PRJWPB-200>,< ;IF MORE THAT 1 REAL DISK BLOCK PER LOGICAL ONE
|
||
CAIGE B,PRJWPB ;SEE IF DOING LAST (PARTIAL) MAP BLOCK
|
||
JRST [MOVN A,B ;YES, ONLY WRITE OUT WHAT IS NEEDED
|
||
HRLM A,OTCCW ;TO SAVE DISK SPACE IF PRJWPB IS VERY LARGE
|
||
JRST .+1] ;RESUME INLINE
|
||
SUBI B,PRJWPB ;ADJUST COUNT
|
||
>
|
||
PUSHJ P,WRTBFR ;GO WRITE OUT THE MAP BLOCK.
|
||
SOSLE MAPCNT ;CHECK MAP COUNTER.
|
||
JRST GETMAP ;IF MORE MAP BLOCKS, GO GET THEM.
|
||
|
||
FINISH: CLOSE 4, ;CLOSE THE MASTER INPUT FILE.
|
||
CLOSE 5, ;CLOSE THE PROJCT.SYS FILE.
|
||
CLOSE 6, ;CLOSE THE TEMP MAP FILE.
|
||
CRLF
|
||
OUTSTR [ASCIZ/END OF JOB./]
|
||
CRLF
|
||
EXIT
|
||
|
||
SUBTTL CV2OCT - ROUTINE TO CONVERT [P,PN] TO BINARY OCTAL.
|
||
|
||
CV2OCT: MOVEM TBLPTR,SAVE ;SAVE CONTENTS OF AC TBLPTR
|
||
MOVEM B,SAVE+1 ;SAVE CONTENTS OF AC B
|
||
MOVE B,[POINT 7,PPN] ;PICK UP PPN POINTER
|
||
MOVEM B,PPNPTR ;AND SAVE IT.
|
||
MOVE 13,PPNCNT ;SAVE PPNCNT FOR POSSIBLE WLDCRD CHECK
|
||
SETZ C, ;SET RESULT AC TO 0
|
||
SETO MASK, ;CLEAR OUT WILD-CARD MASK.
|
||
OCTLOP: LSH C,3 ;SHIFT RESULT AC LEFT 3 BITS
|
||
LSH MASK,3 ;SHIFT MASK AC LEFT 3 BITS.
|
||
ILDB TBLPTR,B ;PICK UP AN ASCII DIGIT
|
||
CAIN TBLPTR,"?" ;IS THIS A ? WILD-CARD ?
|
||
JRST [TRO C,7
|
||
JRST OCTL.1] ;NOTE IN RESULT
|
||
SUBI TBLPTR,60 ;CONVERT IT TO BINARY
|
||
ADD C,TBLPTR ;ADD BINARY DIGIT TO RESULT
|
||
TRO MASK,7 ;SET MASK BITS TO 111.
|
||
OCTL.1: SOSE PPNCNT ;SUBTRACT 1 FROM BYTE COUNT
|
||
JRST OCTLOP ;IF NOT 0, CONVERT SOME MORE.
|
||
OCTL.2: MOVE TBLPTR,SAVE ;RESTORE AC TBLPTR
|
||
MOVE B,SAVE+1 ;RESTORE AC B
|
||
POPJ P, ;RETURN TO MAIN ROUTINE
|
||
|
||
|
||
SUBTTL RESET (A & B) - ROUTINES TO RE-INITIALIZE DATA AREAS & PTRS.
|
||
|
||
RESETA: MOVE C,[POINT 7,OUTREC,6] ;RESET THE ERROR MSG
|
||
MOVEM C,OUTPTR ;OUTPUT BUFFER POINTER
|
||
MOVEI C,40*5 ;NUMBER OF CHARACTERS IN OUTREC
|
||
MOVEM C,ORCSIZ ;SAVE
|
||
SETOM CMCNT ;RESET THE COMMA COUNTER
|
||
SETOM LBCNT ;RESET THE LEFT BRACKET COUNTER
|
||
SETOM RBCNT ;RESET THE RIGHT BRACKET COUNTER
|
||
SETOM EQCNT ;RESET THE EQUAL SIGN COUNTER
|
||
SETOM .WILD ;RESET THE WILD-CARD FLAG.
|
||
SETO ERRTYP, ;INDICATE NO ERRORS
|
||
SETZ FIELD, ;INDICATE [P,PN] FIELD
|
||
POPJ P, ;RETURN TO CALLER
|
||
|
||
RESETB: MOVE C,[POINT 7,SWTCH.] ;RESET THE SWITCH POINTER
|
||
MOVEM C,CS.PTR ;...
|
||
MOVE C,[POINT 7,AS.FLD] ; ACCOUNT STRING
|
||
MOVEM C,AS.PTR ; BYTE POINTERS.
|
||
SETZM AS.FLD ;ZERO OUT
|
||
MOVE C,[AS.FLD,,AS.FLD+1] ; ACCOUNT STRING
|
||
BLT C,AS.FLD+7 ; SAVE AREA.
|
||
SETZM AS.LEN ;SET ACCOUNT STRING LENGTH TO 0
|
||
SETOM WLASFL ;NO "*" SEEN NOW
|
||
SETZM WLDASF ;NO WILD CARDED ASSOUNT STRING
|
||
SETOM SLCNT ;RESET THE SLASH COUNTER
|
||
SETZM CS.LEN ;ZERO /SWTCH. LENGTH
|
||
SETZM SWTCH. ;ZERO OUT
|
||
POPJ P, ;RETURN TO CALLER.
|
||
|
||
SUBTTL DATA - RPOGRAM DATA AREAS, POINTERS, AND I/O BUFFERS.
|
||
|
||
.WILD: EXP -1
|
||
SLCNT: EXP -1
|
||
CMCNT: EXP -1
|
||
LBCNT: EXP -1
|
||
RBCNT: EXP -1
|
||
EQCNT: EXP -1
|
||
FSTREC: EXP -1
|
||
WLASFL: EXP -1
|
||
WLDASF: 0,,0
|
||
PPNMSK: 0,,0
|
||
MAPPTR: 0,,0
|
||
BLKCNT: 0,,1
|
||
MAPCNT: 0,,0
|
||
TBLSIZ: 0,,0
|
||
TABLE: BLOCK PRJWPB
|
||
SWTCH.: BLOCK 1
|
||
AS.LEN: 0,,0
|
||
AS.FLD: BLOCK 10
|
||
P.PN: 0,,0
|
||
PPNSAV: 0,,0
|
||
STACK: BLOCK 100
|
||
PPNCNT: 0,,0
|
||
PPN: BLOCK 2
|
||
SAVE: BLOCK 2
|
||
CS.LEN: 0,,0
|
||
ORCSIZ: EXP 40*5
|
||
OUTREC: BLOCK 40
|
||
OUTPTR: POINT 7,OUTREC
|
||
AS.PTR: POINT 7,AS.FLD
|
||
PPNPTR: POINT 7,PPN
|
||
CS.PTR: POINT 7,SWTCH.
|
||
|
||
ERMSG: [ASCIZ/NON-NUMERIC BYTE ENCOUNTERED IN [P,PN] FIELD./]
|
||
[ASCIZ/[P,PN] FIELD TERMINATED BY CR!LF./]
|
||
[ASCIZ/NON-OCTAL DIGIT ENCOUNTERED IN [P,PN] FIELD./]
|
||
[ASCIZ/MULTIPLE COMMA'S ENCOUNTERED IN [P,PN] FIELD./]
|
||
[ASCIZ/NULL PROJECT NUMBER ENCOUNTERED IN [P,PN] FIELD./]
|
||
[ASCIZ/MULTIPLE EQUAL SIGNS ILLEGAL./]
|
||
[ASCIZ/NULL PROGRAMMER NUMBER ENCOUNTERED IN [P,PN] FIELD./]
|
||
[ASCIZ/LENGTH OF PPN EXCEEDS 6 DIGITS./]
|
||
[ASCIZ/MULTIPLE ['S ENCOUNTERED IN [P,PN] FIELD./]
|
||
[ASCIZ/MULTIPLE ]'S ENCOUNTERED IN [P,PN] FIELD./]
|
||
[ASCIZ/NULL ACCOUNT STRING ENCOUNTERED IN A.S. FIELD./]
|
||
[ASCIZ/SPECIFIED [P,PN] IS NOT IN ASCENDING [P,PN] SEQUENCE./]
|
||
[ASCIZ/HISTORICAL ERROR, YOU SHOULDN'T GET THIS./]
|
||
[ASCIZ\NULL /SWTCH. FIELD ILLEGAL.\]
|
||
[ASCIZ/ACCOUNT FIELD LENGTH EXCEEDS 39 CHARACTERS./]
|
||
[ASCIZ/EQUAL (=) SIGN MISSING FROM ACCOUNT STRING FIELD./]
|
||
[ASCIZ/ILLEGAL WILD-CARD SYNTAX IN [P,PN] FIELD./]
|
||
[ASCIZ/ILLEGAL CHARACTER IN SWITCH FIELD./]
|
||
[ASCIZ/WILD-CARD * NOT LAST IN A.S. FIELD./]
|
||
[ASCIZ/SWITCH IMPROPERLY PLACED./]
|
||
[ASCIZ/UNKNOWN SWITCH SPECIFIED./]
|
||
[ASCIZ/DEFAULT ACCOUNT STRING MAY NOT CONTAIN WILD-CARDS./]
|
||
WLDMSG: BYTE(7) 12,15,127,111,114 ;LF,CR,W,I,L
|
||
ASCIZ/D-CARD CHARACTERS * AND ? EQUAL ZERO./
|
||
|
||
INPFIL: 4,,.FORED
|
||
.IOASL
|
||
SIXBIT/DSK/
|
||
0,,IBCB
|
||
0,,-1
|
||
0,,INFILE
|
||
INFILE: SIXBIT/PROJCT/
|
||
SIXBIT/ACT/
|
||
0,,0
|
||
0,,0
|
||
IBCB: 0,,0
|
||
IBFPTR: 0,,0
|
||
IBFCNT: 0,,0
|
||
|
||
OUTFIL: 5,,.FOWRT
|
||
.IODMP
|
||
SIXBIT/DSK/
|
||
0,,0
|
||
0,,0
|
||
0,,OTFILE
|
||
OTFILE: SIXBIT/PROJCT/
|
||
SIXBIT/SYS/
|
||
0,,0
|
||
0,,0
|
||
|
||
MAPFIL: 6,,.FOSAU
|
||
.IODMP
|
||
SIXBIT/DSK/
|
||
0,,0
|
||
0,,0
|
||
0,,MPFILE
|
||
MPFILE: SIXBIT/PROJCT/
|
||
SIXBIT/MAP/
|
||
0,,0
|
||
0,,0
|
||
|
||
|
||
OTCCW: IOWD PRJWPB,OTBFR
|
||
0,,0
|
||
OTBFR:
|
||
BLKSIZ: 0,,1
|
||
BLOCK PRJWPB-1
|
||
|
||
MPCCW: IOWD PRJWPB,MAP.
|
||
0,,0
|
||
MAP.: BLOCK PRJWPB
|
||
|
||
LALL
|
||
PROCES: REPEAT 12,< 0,,GETBYT>
|
||
0,,CR
|
||
0,,GETBYT
|
||
0,,GETBYT
|
||
0,,CR
|
||
REPEAT 23,< 0,,GETBYT>
|
||
REPEAT 11,< 0,,STOREC>
|
||
0,,WLDCRD
|
||
0,,STOREC
|
||
0,,COMMA
|
||
0,,STOREC
|
||
0,,STOREC
|
||
0,,SLASH
|
||
REPEAT 12,< 0,,NUMBER>
|
||
0,,STOREC
|
||
0,,STOREC
|
||
0,,LBRKT
|
||
0,,EQUALS
|
||
0,,RBRKT
|
||
0,,WLDCRD
|
||
0,,STOREC
|
||
REPEAT 32,< 0,,ALPHA>
|
||
0,,LBRKT
|
||
0,,STOREC
|
||
0,,RBRKT
|
||
REPEAT 40,< 0,,STOREC>
|
||
0,,GETBYT
|
||
0,,GETBYT
|
||
|
||
END PROJCT
|