Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0057/fasbol.fas
There are 2 other files named fasbol.fas in the archive. Click here to see a list.
;* * * * * * * * *
;* * DECLARATIONS * * * * *
;* * * * * * * * *
;*
;* LOCAL
;*
; DECLARE('SNOBOL.MAIN','FASBOL')
; DECLARE('OPTION','HASHSIZE=509')
; DECLARE('OPTION','NO.STNO')
; DECLARE('PURGE.VARIABLE',ALL)
; DECLARE('PURGE.LABEL',ALL)
; DECLARE('EXTERNAL.FUNCTION','INITLZ,DECLPH,EXECPH,EACTPH,
;.CROSPH')
; DECLARE('GLOBAL.VARIABLE','SRCLIN,OBJLIN,OBJCHR,LSTLIN,LSTCHR')
; DECLARE('STRING','SNUMB(5)')
; DECLARE('INTEGER','I,J,K,DIAGNO,NXTNAM,NXTLAB,MSLI,CRSFLG')
; DECLARE('ENTRY.FUNCTION','PRTOUT(MESG,TTYFLG,CHRMOD)')
; DECLARE('ENTRY.FUNCTION','PUTOUT(MESG,CHRMOD)')
; DECLARE('ENTRY.FUNCTION','NEWNAM()')
; DECLARE('ENTRY.FUNCTION','NEWLAB()')
; DECLARE('ENTRY.FUNCTION','ERRMSG(MESG)')
; DECLARE('ENTRY.FUNCTION','STXERR(MESG)')
; DECLARE('ENTRY.FUNCTION','GETSTA()')
; DECLARE('ENTRY.FUNCTION','GETATR()')
; DECLARE('ENTRY.FUNCTION','GETITM()')
; DECLARE('ENTRY.FUNCTION','PARLIT(QTYP,BRKPAT)')
; DECLARE('ENTRY.FUNCTION','SUBS(SKEL,P1,P2,P3,P4,P5)')
;*
;* SYSTEM COMMON
;*
;* TABLES AND LISTS
; DECLARE('ENTRY.VARIABLE',
;.'SYMBTB,XNAMTB,KEYWTB,CTRLTB,DECLTB,CROSTB,CONSTB,ENTFTB,DSIZTB,
;.BOPRTB,UOPRTB')
; DECLARE('ENTRY.VARIABLE',
;.'ENTRLS,EXTRLS,FORTLS')
;* ARRAYS
; DECLARE('ENTRY.VARIABLE',
;.'PTVRAR,PTFNAR,PRIMAR,GOTOAR,DECLAR,PROGAR,VARBAR,MACHAR,STENAR,BOPRAR,
;.UOPRAR,PATRAR,EXPRAR,AROPAR,ARITAR,EACTAR')
;* PARAMETERS (STRINGS,DATATYPES)
; DECLARE('ENTRY.VARIABLE',
;.'C,INDENT,SPLASH,ITNAM,ITENT,NOFAIL,SNONAM,SUBNAM,PARBLK,PRGNAM,STARTP,
;.TEMLOC,P1,P2,P3,P4,P5')
;* PARAMETERS (INTEGERS)
; DECLARE('ENTRY.VARIABLE',
;.'P,OBJFLG,LISTSR,INTGER,ITTYP,ITATR,PRGALV,PRGALL,PRGALF,STNFLG,HSHSIZ,
;.STRTIM,DMPFLG,LISTOB,STNO,MAXTMP')
; DECLARE('INTEGER',
;.'P,OBJFLG,LISTSR,INTGER,ITTYP,ITATR,PRGALV,PRGALL,PRGALF,STNFLG,HSHSIZ,
;.STRTIM,DMPFLG,LISTOB,STNO,MAXTMP')
; DECLARE('ENTRY.VARIABLE',
;.'XNATRB,VTATRB,VDATRB,LTATRB,FTATRB,FDATRB,TXATRB,VNATRB,VXATRB,VIATRB,
;.VGATRB,LIATRB,LGATRB,FIATRB,FGATRB,FXATRB,SKATRB,SDATRB,BTATRB')
; DECLARE('INTEGER',
;.'XNATRB,VTATRB,VDATRB,LTATRB,FTATRB,FDATRB,TXATRB,VNATRB,VXATRB,VIATRB,
;.VGATRB,LIATRB,LGATRB,FIATRB,FGATRB,FXATRB,SKATRB,SDATRB,BTATRB')
; DECLARE('ENTRY.VARIABLE',
;.'XNVATR,XNLATR,XNFATR,XNXMSK,VTVATR,VDDATR,VDPATR,VDDMSK,LTDATR,LTTMSK,
;.FTFATR,FDPATR,FDIATR,FDDMSK,TXTATR,TXTMSK,VNNATR,VXXATR,VIPATR,VGGATR,
;.LIPATR,LGGATR,FIPATR,FGGATR,FXXATR,FXXMSK,SKRATR,SDRATR,BTRATR')
; DECLARE('INTEGER',
;.'XNVATR,XNLATR,XNFATR,XNXMSK,VTVATR,VDDATR,VDPATR,VDDMSK,LTDATR,LTTMSK,
;.FTFATR,FDPATR,FDIATR,FDDMSK,TXTATR,TXTMSK,VNNATR,VXXATR,VIPATR,VGGATR,
;.LIPATR,LGGATR,FIPATR,FGGATR,FXXATR,FXXMSK,SKRATR,SDRATR,BTRATR')
;* SPECIAL CHARACTERS,CHARACTER SEQUENCES, AND CHARACTER CLASSES
; DECLARE('ENTRY.VARIABLE',
;.'FFCHR,CRLCHR,LFCHR,CRCHR,SQCHR,DQCHR,TBCHR,LCSCHR,BLNCHR,EQLCHR,
;.QTSCHR,ELTCHR,LBCHR')
;* PATTERNS AND MATCHES
; DECLARE('ENTRY.VARIABLE',
;.'COMSPT,INTGPT,BLNKPT,OPBLPT,PCOMPT,PCPRMT,IDENPT,DCLCMT,RSIDPT,LABLPT,
;.POPRMT,IDENMT,SQLTPT,DQLTPT,LBDCPT,IDDCPT')
;*
;* MINIMAL SYMBOL TABLE
;*
; DECLARE('UNPURGE.VARIABLE','PRTOUT,MESG,TTYFLG,CHRMOD,PUTOUT,
;.NEWNAM,NEWLAB,ERRMSG,STXERR,GETSTA,GETATR,GETITM,PARLIT,QTYP,BRKPAT,
;.SUBS,SKEL,P1,P2,P3,P4,P5,SUB1')
; DECLARE('UNPURGE.LABEL','PRTOUT PUTOUT NEWNAM NEWLAB ERRMSG
;. STXERR GETSTA GETATR GETITM PARLIT SUBS SUB1 CTL1 CTL2 CTL3 CTL4
;. CTL5 CTL6 CTL7 CTL8 CTL9 CTL10')
; DECLARE('PURGE.FUNCTION','DEFINE,DATA,DIFFER,TIME,IDENT,LPAD,
;.RPAD,SIZE,DUPL,SUBSTR,TABLE,DATATYPE,REPLACE')
;* * * * * * * * *
;* * MAIN PROCESSING SEQUENCE * * *
;* * * * * * * * *
;*
;* LOCAL INITIALIZATION
; DEFINE('SUB1(SKEL)')
TITLE FASBOL
OPDEF UFERR$ [1B8]
OPDEF CFERR$ [2B8]
OPDEF FCALV$ [3B8]
OPDEF FCALN$ [4B8]
OPDEF DASGN$ [5B8]
OPDEF DCONC$ [6B8]
OPDEF DICNV$ [7B8]
OPDEF DRCNV$ [10B8]
OPDEF AREFV$ [11B8]
OPDEF AREFN$ [12B8]
ENTRY IDDCPT,LBDCPT,DQLTPT,SQLTPT,IDENMT,POPRMT,LABLPT,RSIDPT,DCLCMT,IDENPT
ENTRY PCPRMT,PCOMPT,OPBLPT,BLNKPT,INTGPT,COMSPT,LBCHR,ELTCHR,QTSCHR,EQLCHR
ENTRY BLNCHR,LCSCHR,TBCHR,DQCHR,SQCHR,CRCHR,LFCHR,CRLCHR,FFCHR,BTRATR
ENTRY SDRATR,SKRATR,FXXMSK,FXXATR,FGGATR,FIPATR,LGGATR,LIPATR,VGGATR,VIPATR
ENTRY VXXATR,VNNATR,TXTMSK,TXTATR,FDDMSK,FDIATR,FDPATR,FTFATR,LTTMSK,LTDATR
ENTRY VDDMSK,VDPATR,VDDATR,VTVATR,XNXMSK,XNFATR,XNLATR,XNVATR,BTATRB,SDATRB
ENTRY SKATRB,FXATRB,FGATRB,FIATRB,LGATRB,LIATRB,VGATRB,VIATRB,VXATRB,VNATRB
ENTRY TXATRB,FDATRB,FTATRB,LTATRB,VDATRB,VTATRB,XNATRB,MAXTMP,STNO,LISTOB
ENTRY DMPFLG,STRTIM,HSHSIZ,STNFLG,PRGALF,PRGALL,PRGALV,ITATR,ITTYP,INTGER
ENTRY LISTSR,OBJFLG,P,P5,P4,P3,P2,P1,TEMLOC,STARTP
ENTRY PRGNAM,PARBLK,SUBNAM,SNONAM,NOFAIL,ITENT,ITNAM,SPLASH,INDENT,C
ENTRY EACTAR,ARITAR,AROPAR,EXPRAR,PATRAR,UOPRAR,BOPRAR,STENAR,MACHAR,VARBAR
ENTRY PROGAR,DECLAR,GOTOAR,PRIMAR,PTFNAR,PTVRAR,FORTLS,EXTRLS,ENTRLS,UOPRTB
ENTRY BOPRTB,DSIZTB,ENTFTB,CONSTB,CROSTB,DECLTB,CTRLTB,KEYWTB,XNAMTB,SYMBTB
ENTRY SUBS,PARLIT,GETITM,GETATR,GETSTA,STXERR,ERRMSG,NEWLAB,NEWNAM,PUTOUT
ENTRY PRTOUT
EXTERN CROSPH,EACTPH,EXECPH,DECLPH,INITLZ
Q10002: JSP 14,S$$ILZ##
XWD ^D509,Q10000
JRST Q10003
MOVEI 14,Q10004
MOVEM 14,S$$FLP##
MOVE 1,S10284
FCALV$ ^D1,F10066
Q10004:
; DATA('SYM(INAM,ATRB)')
MOVEI 14,Q10005
MOVEM 14,S$$FLP##
MOVE 1,S10285
FCALV$ ^D1,F10060
Q10005:
; DATA('CRS(NEXT,CRSI)')
MOVEI 14,Q10006
MOVEM 14,S$$FLP##
MOVE 1,S10286
FCALV$ ^D1,F10060
Q10006:
; DATA('NOD(FRNT,BACK)')
MOVEI 14,Q10007
MOVEM 14,S$$FLP##
MOVE 1,S10287
FCALV$ ^D1,F10060
Q10007:
; NXTNAM = 10000
MOVE ^D1,K10288
MOVEM 1,V10100
; NXTLAB = 10000
MOVE ^D1,K10288
MOVEM 1,V10101
; ERRCHR = DUPL(' ',9) SUBSTR(&ALPHABET,1,9) DUPL(' ',118)
MOVEI 14,Q10008
MOVEM 14,S$$FLP##
MOVE 1,S10290
PUSH 16,1
MOVE 1,I10291
FCALV$ ^D2,F10065
PUSH 16,1
MOVE 1,S$$KWD##+^D7
PUSH 16,1
MOVE 1,I10292
PUSH 16,1
MOVE 1,I10291
FCALV$ ^D3,F10081
PUSH 16,1
MOVE 1,S10290
PUSH 16,1
MOVE 1,I10293
FCALV$ ^D2,F10065
JSP 14,S$$CNC##
EXP ^D3
MOVEM 1,@N10289
Q10008:
;* INITIALIZE SYSTEM
; &DENSITY = 90
MOVE ^D1,K10294
MOVEM 1,S$$KWD##+^D15
; NXTLIN = INITLZ() :F(ENDMSG)
MOVEI 14,L10296
MOVEM 14,S$$FLP##
FCALV$ ^D0,INITLZ
MOVEM 1,@N10295
;* PROCESS DECLARATIONS
; DECLPH()
MOVEI 14,Q10009
MOVEM 14,S$$FLP##
FCALV$ ^D0,DECLPH
Q10009:
;* PROCESS EXECUTABLE STATEMENTS
; EXECPH()
MOVEI 14,Q10010
MOVEM 14,S$$FLP##
FCALV$ ^D0,EXECPH
Q10010:
;* GENERATE END-ACTION STORAGE
; EACTPH()
MOVEI 14,Q10011
MOVEM 14,S$$FLP##
FCALV$ ^D0,EACTPH
Q10011:
;* OPTIONAL CROSS-REFERENCE DICTIONARY
; (?DIFFER(CROSTB) ?CROSPH())
MOVEI 14,Q10012
MOVEM 14,S$$FLP##
MOVE 1,@CROSTB
FCALV$ ^D1,F10071
SETZ 1,
FCALV$ ^D0,CROSPH
SETZ 1,
Q10012:
;* END PROCESSING
;ENDMSG PRTOUT(CRLCHR '*TOTAL COMPILATION TIME: ' TIME() - STRTIM
;. ' MS., ' DIAGNO ' ERROR DIAGNOSTICS*' CRLCHR,1,1)
L10296:
MOVEI 14,Q10013
MOVEM 14,S$$FLP##
MOVE 1,@CRLCHR
PUSH 16,1
MOVE 1,S10297
PUSH 16,1
FCALV$ ^D0,F10045
DICNV$ 0
SUB ^D1,STRTIM
TLO 1,1B18
TLZ 1,1B19
PUSH 16,1
MOVE 1,S10298
PUSH 16,1
MOVE ^D1,V10099
TLO 1,1B18
TLZ 1,1B19
PUSH 16,1
MOVE 1,S10299
PUSH 16,1
MOVE 1,@CRLCHR
JSP 14,S$$CNC##
EXP ^D7
PUSH 16,1
MOVE 1,I10292
PUSH 16,1
MOVE 1,I10292
FCALV$ ^D3,PRTOUT
Q10013:
; &OUTPUT = :(END)
MOVEI 14,S$$SXT##
MOVEM 14,S$$FLP##
SETZM S$$KWD##+^D17
JRST S$$SXT##
;* * * * * * * * *
;* * SUBROUTINES * * * * *
;* * * * * * * * *
;* PRTOUT(MESG,TTYFLG,CHRMOD) OUTPUT MESSAGE ON LISTING DEV
;* IF TTYFLG IS NON-NULL, THE MESSAGE IS ALSO OUTPUT ON THE USER
;* TTY. IF CHRMOD IS NON-NULL, THE MESSAGE IS OUTPUT IN CHAR MODE
;*
;PRTOUT LSTLIN = ?IDENT(CHRMOD) MESG :F(PRTOU1)
L10104:
MOVEI 14,L10300
MOVEM 14,S$$FLP##
MOVE 1,@N10268
FCALV$ ^D1,F10072
SETZ 1,
MOVE 1,@N10266
MOVEM 1,@N10093
; OUTPUT = ?DIFFER(TTYFLG) MESG :(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10267
FCALV$ ^D1,F10071
SETZ 1,
MOVE 1,@N10266
MOVEM 1,@S$$OUT##
JRST S$$SRT##
;PRTOU1 LSTCHR = MESG
L10300:
MOVEI 14,Q10014
MOVEM 14,S$$FLP##
MOVE 1,@N10266
MOVEM 1,@N10094
Q10014:
; OUTPUTC = ?DIFFER(TTYFLG) MESG :(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10267
FCALV$ ^D1,F10071
SETZ 1,
MOVE 1,@N10266
MOVEM 1,@S$$OUC##
JRST S$$SRT##
;* * * * * * * * *
;* PUTOUT(MESG,CHRMOD) OUTPUT MESSAGE ON OBJECT DEV
;* ALSO OUTPUTS MESSAGE ON LISTING DEVICE IF LISTOB IS NONZERO
;* IF CHRMOD IS NON-NULL, THE OBJECT DEVICE OUTPUT IS IN CHARACTER
;* MODE AND NO LISTING IS ATTEMPTED
;*
;PUTOUT OBJLIN = ?IDENT(CHRMOD) MESG :S(PUTOU1)
L10106:
MOVEI 14,Q10015
MOVEM 14,S$$FLP##
MOVE 1,@N10268
FCALV$ ^D1,F10072
SETZ 1,
MOVE 1,@N10266
MOVEM 1,@N10091
JRST L10301
Q10015:
; OBJCHR = MESG :(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10266
MOVEM 1,@N10092
JRST S$$SRT##
;PUTOU1 MESG ?INE(LISTOB,0) ';' ! REM $ LSTLIN :(RETURN)
L10301:
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10266
PUSH 16,1
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,LISTOB
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
JSP 11,S$$MKP##
PUSH 16,1
JSP 14,S$$MTX##
XWD ^D2,0
JSP 11,S$$APS##
XWD .-.,Q10017
MOVE 1,^D1(15)
JSP 11,S$$PTX##
MOVE 1,S10303
JSP 11,S$$MST##
JRST Q10016
Q10017:
JSP 11,S$$APF##
JSP 11,S$$VAS##
JSP 11,S$$REM##
MOVE 1,N10093
JSP 11,S$$IVA##
Q10016:
JSP 11,S$$MTS##
JRST S$$SRT##
;* * * * * * * * *
;* NEWNAM() NEW SYMBOL INTERNAL NAME
;* PRODUCES A 5-CHARACTER INTEGER STRING REPRESENTING THE NEXT
;* AVAILABLE INAM FOR PROGRAM SYMBOLS
;*
;NEWNAM SNUMB = NXTNAM
L10108:
MOVEI 14,Q10018
MOVEM 14,S$$FLP##
MOVE ^D1,V10100
TLO 1,1B18
TLZ 1,1B19
DASGN$ 1,V10095
Q10018:
; NXTNAM = NXTNAM + 1
MOVE ^D1,V10100
ADD ^D1,K10292
MOVEM 1,V10100
; NEWNAM = SNUMB :(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10095
JSP 7,S$$CPS##
MOVEM 1,@N10108
JRST S$$SRT##
;* * * * * * * * *
;* NEWLAB() NEW INTERNAL LABEL
;* PRODUCES A 6-CHARACTER STRING OF THE FORM 'QNNNNN' REPRESENTING
;* THE NEXT AVAILABLE INTERNAL LABEL
;*
;NEWLAB SNUMB = NXTLAB
L10110:
MOVEI 14,Q10019
MOVEM 14,S$$FLP##
MOVE ^D1,V10101
TLO 1,1B18
TLZ 1,1B19
DASGN$ 1,V10095
Q10019:
; NXTLAB = NXTLAB + 1
MOVE ^D1,V10101
ADD ^D1,K10292
MOVEM 1,V10101
; NEWLAB = 'Q' SNUMB :(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,S10304
PUSH 16,1
MOVE 1,@N10095
JSP 7,S$$CPS##
JSP 14,S$$CNC##
EXP ^D2
MOVEM 1,@N10110
JRST S$$SRT##
;* * * * * * * * *
;* ERRMSG(MESG) ERROR MESSAGE
;* OUTPUTS APPRPRIATE MESSAGE AND INCREMENTS DIAGNOSTIC COUNT
;*
;ERRMSG DIAGNO = ?PRTOUT(SPLASH 'ERROR **' LPAD(RPAD(MESG,SIZE(
;. MESG) + (38 - SIZE(MESG)) / 2,' '),38,' ') '**' CRLCHR SPLASH,1)
;. DIAGNO + 1 :(RETURN)
L10112:
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@SPLASH
PUSH 16,1
MOVE 1,S10305
PUSH 16,1
MOVE 1,@N10266
PUSH 16,1
MOVE 1,@N10266
FCALV$ ^D1,F10050
DICNV$ 0
PUSH 17,1
MOVE ^D1,K10306
PUSH 17,1
MOVE 1,@N10266
FCALV$ ^D1,F10050
DICNV$ 0
POP 17,0
SUB ^D0,1
MOVE 1,0
IDIV ^D1,K10307
POP 17,0
ADD ^D1,0
TLO 1,1B18
TLZ 1,1B19
PUSH 16,1
MOVE 1,S10290
FCALV$ ^D3,F10080
PUSH 16,1
MOVE 1,I10306
PUSH 16,1
MOVE 1,S10290
FCALV$ ^D3,F10079
PUSH 16,1
MOVE 1,S10308
PUSH 16,1
MOVE 1,@CRLCHR
PUSH 16,1
MOVE 1,@SPLASH
JSP 14,S$$CNC##
EXP ^D6
PUSH 16,1
MOVE 1,I10292
FCALV$ ^D2,PRTOUT
SETZ 1,
MOVE ^D1,V10099
ADD ^D1,K10292
MOVEM 1,V10099
JRST S$$SRT##
;* * * * * * * * *
;* STXERR(MESG) SYNTAX ERROR
;* CALLS ERRMSG IF MESG IS NON-NULL, THEN OUTPUTS APPROPRIATE
;* SECTION OF STATEMENT WITH POINTER INDICATING POSITION OF ERROR
;* EXPECTS STATEMENT IN C AND POINTER IN P
;*
;STXERR (?DIFFER(MESG) ?ERRMSG(MESG))
L10114:
MOVEI 14,Q10020
MOVEM 14,S$$FLP##
MOVE 1,@N10266
FCALV$ ^D1,F10071
SETZ 1,
MOVE 1,@N10266
FCALV$ ^D1,ERRMSG
SETZ 1,
Q10020:
; I = P
MOVE ^D1,P
MOVEM 1,V10096
; STXERR = C
MOVEI 14,Q10021
MOVEM 14,S$$FLP##
MOVE 1,@C
MOVEM 1,@N10114
Q10021:
; STXERR BREAK(CRCHR) @J :S(STXER2)
MOVEI 14,Q10022
MOVEM 14,S$$FLP##
MOVE 1,@N10114
PUSH 16,1
MOVE 1,@CRCHR
JSP 11,S$$MBT##
EXP .
PUSH 16,1
JSP 14,S$$MTX##
XWD ^D2,0
MOVE 1,^D1(15)
JSP 11,S$$BRK##
HRRZ 1,@S$$SJC##
SUBI 1,(13)
MOVEM 1,V10097
JSP 11,S$$MTS##
JRST L10309
Q10022:
;STXER1 PRTOUT(STXERR CRLCHR REPLACE(SUBSTR(STXERR,I),&ALPHABET,ERRCHR)
;. '^',1) :(RETURN)
L10310:
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10114
PUSH 16,1
MOVE 1,@CRLCHR
PUSH 16,1
MOVE 1,@N10114
PUSH 16,1
MOVE ^D1,V10096
TLO 1,1B18
TLZ 1,1B19
FCALV$ ^D2,F10081
PUSH 16,1
MOVE 1,S$$KWD##+^D7
PUSH 16,1
MOVE 1,@N10289
FCALV$ ^D3,F10083
PUSH 16,1
MOVE 1,S10311
JSP 14,S$$CNC##
EXP ^D4
PUSH 16,1
MOVE 1,I10292
FCALV$ ^D2,PRTOUT
JRST S$$SRT##
;STXER2 K =
L10309:
MOVEI 14,Q10023
MOVEM 14,S$$FLP##
SETZM V10098
Q10023:
;STXER3 STXERR = ?ILE(I,J) SUBSTR(STXERR,J - K,K) :F(STXER4)
L10312:
MOVEI 14,L10313
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$LEP##
JUMP 0,V10096
JUMP 0,V10097
ADD 16,S$$STB##
SETZ 1,
MOVE 1,@N10114
PUSH 16,1
MOVE ^D1,V10097
SUB ^D1,V10098
TLO 1,1B18
TLZ 1,1B19
PUSH 16,1
MOVE ^D1,V10098
TLO 1,1B18
TLZ 1,1B19
FCALV$ ^D3,F10081
MOVEM 1,@N10114
; I = I - K :(STXER1)
MOVE ^D1,V10096
SUB ^D1,V10098
MOVEM 1,V10096
JRST L10310
;STXER4 K = J + 1
L10313:
MOVE ^D1,V10097
ADD ^D1,K10292
MOVEM 1,V10098
; STXERR LEN(*K) (BREAK(CRCHR) ! REM) @J :(STXER3)
MOVEI 14,L10312
MOVEM 14,S$$FLP##
MOVE 1,@N10114
PUSH 16,1
MOVE 1,@CRCHR
JSP 11,S$$MBT##
EXP .
PUSH 16,1
JSP 14,S$$MTX##
XWD ^D2,0
MOVE ^D1,V10098
JUMPL 1,S$$MIE##
JSP 11,S$$LEN##
JSP 11,S$$APS##
XWD .-.,Q10025
MOVE 1,^D1(15)
JSP 11,S$$BRK##
JRST Q10024
Q10025:
JSP 11,S$$APF##
JSP 11,S$$REM##
Q10024:
HRRZ 1,@S$$SJC##
SUBI 1,(13)
MOVEM 1,V10097
JSP 11,S$$MTS##
JRST L10312
;* * * * * * * * *
;* GETSTA() GET NEXT STATEMENT
;* RETURNS STRING CORRESPONDING TO NEXT STATEMENT, WHICH IS NOT
;* A COMMENT OR CONTROL LINE, OR FAILS IF SOURCE END-OF-FILE
;* CARRIAGE RETURN CHARACTERS ARE SUBSTITUTED FOR CONTINUATION
;* CHARACTERS IN MULTI-LINE STATEMENTS
;*
;GETSTA ?IEQ(MSLI,0) :F(GETST2)
L10116:
MOVEI 14,L10314
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$EQP##
JUMP 0,V10102
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
;GETST1 MSLI =
L10315:
MOVEI 14,Q10026
MOVEM 14,S$$FLP##
SETZM V10102
Q10026:
; CURLIN = ?DIFFER(NXTLIN,1) NXTLIN :F(FRETURN)
MOVEI 14,S$$FRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10295
PUSH 16,1
MOVE 1,I10292
FCALV$ ^D2,F10071
SETZ 1,
MOVE 1,@N10295
MOVEM 1,@N10316
; NXTLIN = SRCLIN :S(GETST2)
MOVEI 14,Q10027
MOVEM 14,S$$FLP##
MOVE 1,@N10090
MOVEM 1,@N10295
JRST L10314
Q10027:
; NXTLIN = 1
MOVEI 14,Q10028
MOVEM 14,S$$FLP##
MOVE 1,I10292
MOVEM 1,@N10295
Q10028:
;* CHECK FOR COMMENT, CONTROL, PAGE EJECT
;GETST2 CURLIN COMSPT $ STR1 :F(GETST5)
L10314:
MOVEI 14,L10318
MOVEM 14,S$$FLP##
MOVE 1,@N10316
PUSH 16,1
MOVE 1,@COMSPT
JSP 11,S$$MKP##
PUSH 16,1
JSP 14,S$$MTX##
XWD ^D2,0
JSP 11,S$$VAS##
MOVE 1,^D1(15)
JSP 11,S$$PTX##
MOVE 1,N10317
JSP 11,S$$IVA##
JSP 11,S$$MTS##
;* PAGE EJECT
; CURLIN = ?IDENT(STR1,FFCHR) ?PRTOUT(FFCHR,'',1) SUBSTR(CURLIN,
;.SIZE(CURLIN) - 1,1) :S(GETST2)
MOVEI 14,Q10029
MOVEM 14,S$$FLP##
MOVE 1,@N10317
PUSH 16,1
MOVE 1,@FFCHR
FCALV$ ^D2,F10072
SETZ 1,
MOVE 1,@FFCHR
PUSH 16,1
SETZ 1,
PUSH 16,1
MOVE 1,I10292
FCALV$ ^D3,PRTOUT
SETZ 1,
MOVE 1,@N10316
PUSH 16,1
MOVE 1,@N10316
FCALV$ ^D1,F10050
DICNV$ 0
SUB ^D1,K10292
TLO 1,1B18
TLZ 1,1B19
PUSH 16,1
MOVE 1,I10292
FCALV$ ^D3,F10081
MOVEM 1,@N10316
JRST L10314
Q10029:
; (?IEQ(MSLI,0) ?PUTOUT(';' CURLIN) ?INE(LISTSR,0) ?PRTOUT(
;.INDENT INDENT CURLIN))
MOVEI 14,Q10030
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$EQP##
JUMP 0,V10102
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
MOVE 1,S10303
PUSH 16,1
MOVE 1,@N10316
JSP 14,S$$CNC##
EXP ^D2
FCALV$ ^D1,PUTOUT
SETZ 1,
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,LISTSR
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
MOVE 1,@INDENT
PUSH 16,1
MOVE 1,@INDENT
PUSH 16,1
MOVE 1,@N10316
JSP 14,S$$CNC##
EXP ^D3
FCALV$ ^D1,PRTOUT
SETZ 1,
Q10030:
;* COMMENT
; DIFFER(STR1,'*') :F(GETST1)
MOVEI 14,L10315
MOVEM 14,S$$FLP##
MOVE 1,@N10317
PUSH 16,1
MOVE 1,S10319
FCALV$ ^D2,F10071
;* CONTROL
; INTGER =
MOVEI 14,Q10031
MOVEM 14,S$$FLP##
SETZM INTGER
Q10031:
; CURLIN LEN(1) OPBLPT SPAN('ABCDEFGHIJKLMNOPQRSTUVWXYZ') $
;. STR1 OPBLPT FENCE (RPOS(0) ! INTGPT OPBLPT RPOS(0))
;. :F(GETST4)
MOVEI 14,L10321
MOVEM 14,S$$FLP##
MOVE 1,@N10316
PUSH 16,1
MOVE 1,@OPBLPT
JSP 11,S$$MKP##
PUSH 16,1
MOVE 1,@OPBLPT
JSP 11,S$$MKP##
PUSH 16,1
MOVE 1,@INTGPT
JSP 11,S$$MKP##
PUSH 16,1
MOVE 1,@OPBLPT
JSP 11,S$$MKP##
PUSH 16,1
JSP 14,S$$MTX##
XWD ^D5,0
HRRZ 1,K10292
JSP 11,S$$LEN##
MOVE 1,^D1(15)
JSP 11,S$$PTX##
JSP 11,S$$VAS##
MOVEI 1,B10320
JSP 11,S$$SPN##
MOVE 1,N10317
JSP 11,S$$IVA##
MOVE 1,^D2(15)
JSP 11,S$$PTX##
PUSHJ 16,.+2
JRST S$$MTA##
JSP 11,S$$APS##
XWD .-.,Q10033
HRRZ 1,K10302
CAIE 1,(13)
POPJ 16,
JRST Q10032
Q10033:
JSP 11,S$$APF##
MOVE 1,^D3(15)
JSP 11,S$$PTX##
MOVE 1,^D4(15)
JSP 11,S$$PTX##
HRRZ 1,K10302
CAIE 1,(13)
POPJ 16,
Q10032:
JSP 11,S$$MTS##
; STR1 = CTRLTB[STR1]
MOVEI 14,Q10034
MOVEM 14,S$$FLP##
MOVE 1,@N10317
AREFV$ ^D1,CTRLTB
MOVEM 1,@N10317
Q10034:
; IDENT(STR1) :F($STR1)
MOVEI 14,Q10035
MOVEM 14,S$$FLP##
MOVE 1,@N10317
FCALV$ ^D1,F10072
JRST Q10036
Q10035:
MOVEI 14,S$$BGT##
MOVEM 14,S$$FLP##
MOVE 1,@N10317
JSP 14,S$$ILB##
Q10036:
;GETST4 ERRMSG('BAD CONTROL LINE') :(GETST1)
L10321:
MOVEI 14,L10315
MOVEM 14,S$$FLP##
MOVE 1,S10322
FCALV$ ^D1,ERRMSG
JRST L10315
;* NEXT STATEMENT
;GETST5 STNO = ?DIFFER(CURLIN) STNO + 1 :F(GETST1)
L10318:
MOVEI 14,L10315
MOVEM 14,S$$FLP##
MOVE 1,@N10316
FCALV$ ^D1,F10071
SETZ 1,
MOVE ^D1,STNO
ADD ^D1,K10292
MOVEM 1,STNO
; (?IEQ(MSLI,0) ?PUTOUT(';' CURLIN) ?INE(LISTSR,0) ?PRTOUT(INDENT
;. LPAD(STNO,7,' ') ' ' CURLIN))
MOVEI 14,Q10037
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$EQP##
JUMP 0,V10102
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
MOVE 1,S10303
PUSH 16,1
MOVE 1,@N10316
JSP 14,S$$CNC##
EXP ^D2
FCALV$ ^D1,PUTOUT
SETZ 1,
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,LISTSR
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
MOVE 1,@INDENT
PUSH 16,1
MOVE ^D1,STNO
TLO 1,1B18
TLZ 1,1B19
PUSH 16,1
MOVE 1,I10323
PUSH 16,1
MOVE 1,S10290
FCALV$ ^D3,F10079
PUSH 16,1
MOVE 1,S10290
PUSH 16,1
MOVE 1,@N10316
JSP 14,S$$CNC##
EXP ^D4
FCALV$ ^D1,PRTOUT
SETZ 1,
Q10037:
;GETST6 (GETSTA CURLIN) BREAKQ(';') $ GETSTA LEN(1) REM $ CURLIN
;. :F(GETST7)
L10324:
MOVEI 14,L10325
MOVEM 14,S$$FLP##
MOVE 1,@N10116
PUSH 16,1
MOVE 1,@N10316
JSP 14,S$$CNC##
EXP ^D2
PUSH 16,1
JSP 14,S$$MTX##
XWD ^D-1,0
BYTE (2)2(16)1(18).+1
JSP 11,S$$VAS##
MOVEI 1,B10303
JSP 11,S$$BRQ##
MOVE 1,N10116
JSP 11,S$$IVA##
HRRZ 1,K10292
JSP 11,S$$LEN##
JSP 11,S$$VAS##
JSP 11,S$$REM##
MOVE 1,N10316
JSP 11,S$$IVA##
JSP 11,S$$MTS##
;* MULTI-STATEMENT LINE
; MSLI = 1 :(RETURN)
MOVE ^D1,K10292
MOVEM 1,V10102
JRST S$$SRT##
;GETST7 GETSTA = GETSTA CURLIN
L10325:
MOVEI 14,Q10038
MOVEM 14,S$$FLP##
MOVE 1,@N10116
PUSH 16,1
MOVE 1,@N10316
JSP 14,S$$CNC##
EXP ^D2
MOVEM 1,@N10116
Q10038:
;* CONTINUATION CHECK
; NXTLIN ANY('.+') REM $ STR1 :F(GETST8)
MOVEI 14,L10327
MOVEM 14,S$$FLP##
MOVE 1,@N10295
PUSH 16,1
JSP 14,S$$MTX##
XWD ^D-1,0
BYTE (2)2(16)1(18).+1
MOVEI 1,B10326
JSP 11,S$$ANY##
JSP 11,S$$VAS##
JSP 11,S$$REM##
MOVE 1,N10317
JSP 11,S$$IVA##
JSP 11,S$$MTS##
; (?PUTOUT(';' NXTLIN) ?INE(LISTSR,0) ?PRTOUT(INDENT LPAD(STNO,
;.7,' ') ' ' NXTLIN))
MOVEI 14,Q10039
MOVEM 14,S$$FLP##
MOVE 1,S10303
PUSH 16,1
MOVE 1,@N10295
JSP 14,S$$CNC##
EXP ^D2
FCALV$ ^D1,PUTOUT
SETZ 1,
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,LISTSR
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
MOVE 1,@INDENT
PUSH 16,1
MOVE ^D1,STNO
TLO 1,1B18
TLZ 1,1B19
PUSH 16,1
MOVE 1,I10323
PUSH 16,1
MOVE 1,S10290
FCALV$ ^D3,F10079
PUSH 16,1
MOVE 1,S10290
PUSH 16,1
MOVE 1,@N10295
JSP 14,S$$CNC##
EXP ^D4
FCALV$ ^D1,PRTOUT
SETZ 1,
Q10039:
; CURLIN = CRCHR STR1
MOVEI 14,Q10040
MOVEM 14,S$$FLP##
MOVE 1,@CRCHR
PUSH 16,1
MOVE 1,@N10317
JSP 14,S$$CNC##
EXP ^D2
MOVEM 1,@N10316
Q10040:
; NXTLIN = SRCLIN :S(GETST6)
MOVEI 14,Q10041
MOVEM 14,S$$FLP##
MOVE 1,@N10090
MOVEM 1,@N10295
JRST L10324
Q10041:
; NXTLIN = 1 :(GETST6)
MOVEI 14,L10324
MOVEM 14,S$$FLP##
MOVE 1,I10292
MOVEM 1,@N10295
JRST L10324
;GETST8 MSLI = :(RETURN)
L10327:
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
SETZM V10102
JRST S$$SRT##
;* CONTROL ACTIONS
;* LIST
;CTL1 LISTSR = 1 :(GETST1)
L10273:
MOVE ^D1,K10292
MOVEM 1,LISTSR
JRST L10315
;* UNLIST
;CTL2 LISTSR = :(GETST1)
L10274:
MOVEI 14,L10315
MOVEM 14,S$$FLP##
SETZM LISTSR
JRST L10315
;* NOCODE
;CTL3 LISTOB = :(GETST1)
L10275:
MOVEI 14,L10315
MOVEM 14,S$$FLP##
SETZM LISTOB
JRST L10315
;* CODE
;CTL4 LISTOB = 1 :(GETST1)
L10276:
MOVE ^D1,K10292
MOVEM 1,LISTOB
JRST L10315
;* EJECT
;CTL5 (?PRTOUT(FFCHR,'',1) ?PUTOUT(FFCHR,1)) :(GETST1)
L10277:
MOVEI 14,L10315
MOVEM 14,S$$FLP##
MOVE 1,@FFCHR
PUSH 16,1
SETZ 1,
PUSH 16,1
MOVE 1,I10292
FCALV$ ^D3,PRTOUT
SETZ 1,
MOVE 1,@FFCHR
PUSH 16,1
MOVE 1,I10292
FCALV$ ^D2,PUTOUT
SETZ 1,
JRST L10315
;* SPACE N
;CTL6 PRTOUT(DUPL(CRLCHR,INTGER),'',1) :(GETST1)
L10278:
MOVEI 14,L10315
MOVEM 14,S$$FLP##
MOVE 1,@CRLCHR
PUSH 16,1
MOVE ^D1,INTGER
TLO 1,1B18
TLZ 1,1B19
FCALV$ ^D2,F10065
PUSH 16,1
SETZ 1,
PUSH 16,1
MOVE 1,I10292
FCALV$ ^D3,PRTOUT
JRST L10315
;* FAIL
;CTL7 NOFAIL = :(GETST1)
L10279:
MOVEI 14,L10315
MOVEM 14,S$$FLP##
SETZM @NOFAIL
JRST L10315
;* NOFAIL
;CTL8 NOFAIL = GOTOAR<1> :(GETST1)
L10280:
MOVEI 14,L10315
MOVEM 14,S$$FLP##
MOVE 1,I10292
AREFV$ ^D1,GOTOAR
MOVEM 1,@NOFAIL
JRST L10315
;* NOCROSS
;CTL9 CRSFLG = :(GETST1)
L10281:
MOVEI 14,L10315
MOVEM 14,S$$FLP##
SETZM V10103
JRST L10315
;* CROSREF
;CTL10 CRSFLG = 1
L10282:
MOVE ^D1,K10292
MOVEM 1,V10103
; CROSTB = ?IDENT(CROSTB) TABLE(15,7) :(GETST1)
MOVEI 14,L10315
MOVEM 14,S$$FLP##
MOVE 1,@CROSTB
FCALV$ ^D1,F10072
SETZ 1,
MOVE 1,I10328
PUSH 16,1
MOVE 1,I10323
FCALV$ ^D2,F10064
MOVEM 1,@CROSTB
JRST L10315
;* * * * * * * * *
;* PARLIT(QTYP,BRKPAT) PARSE LITERAL
;* PARSES LITERAL AND RETURNS STRING WITH CR'S EXTRACTED AND PAIRS
;* OF QUOTES OF QTYP REDUCED TO ONE QUOTE
;* EXPECTS P TO POINT IMMEDIATELY AFTER THE STARTING QUOTE, AND
;* LEAVES P POINTING TO JUST BEFORE THE CLOSING QUOTE OR ANY OTHER
;* CHARACTER (OTHER THAN CR) INCLUDED IN BRKPAT (A BREAK PATTERN)
;*
;PARLIT C LEN(*P) BRKPAT $ STR1 @P LEN(1) $ STR2
;. :F(FRETURN)
L10122:
MOVEI 14,S$$FRT##
MOVEM 14,S$$FLP##
MOVE 1,@C
PUSH 16,1
MOVE 1,@N10270
JSP 11,S$$MKP##
PUSH 16,1
JSP 14,S$$MTX##
XWD ^D2,0
MOVE ^D1,P
JUMPL 1,S$$MIE##
JSP 11,S$$LEN##
JSP 11,S$$VAS##
MOVE 1,^D1(15)
JSP 11,S$$PTX##
MOVE 1,N10317
JSP 11,S$$IVA##
HRRZ 1,@S$$SJC##
SUBI 1,(13)
MOVEM 1,P
JSP 11,S$$VAS##
HRRZ 1,K10292
JSP 11,S$$LEN##
MOVE 1,N10329
JSP 11,S$$IVA##
JSP 11,S$$MTS##
; PARLIT = PARLIT STR1
MOVEI 14,Q10042
MOVEM 14,S$$FLP##
MOVE 1,@N10122
PUSH 16,1
MOVE 1,@N10317
JSP 14,S$$CNC##
EXP ^D2
MOVEM 1,@N10122
Q10042:
; P = ?IDENT(STR2,CRCHR) P + 1 :S(PARLIT)
MOVEI 14,Q10043
MOVEM 14,S$$FLP##
MOVE 1,@N10329
PUSH 16,1
MOVE 1,@CRCHR
FCALV$ ^D2,F10072
SETZ 1,
MOVE ^D1,P
ADD ^D1,K10292
MOVEM 1,P
JRST L10122
Q10043:
; STR2 = ?IDENT(STR2,QTYP) SUBSTR(C,1,P + 1) :F(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10329
PUSH 16,1
MOVE 1,@N10269
FCALV$ ^D2,F10072
SETZ 1,
MOVE 1,@C
PUSH 16,1
MOVE 1,I10292
PUSH 16,1
MOVE ^D1,P
ADD ^D1,K10292
TLO 1,1B18
TLZ 1,1B19
FCALV$ ^D3,F10081
MOVEM 1,@N10329
; PARLIT = ?IDENT(STR2,QTYP) PARLIT QTYP :F(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10329
PUSH 16,1
MOVE 1,@N10269
FCALV$ ^D2,F10072
SETZ 1,
MOVE 1,@N10122
PUSH 16,1
MOVE 1,@N10269
JSP 14,S$$CNC##
EXP ^D2
MOVEM 1,@N10122
; P = P + 2 :(PARLIT)
MOVE ^D1,P
ADD ^D1,K10307
MOVEM 1,P
JRST L10122
;* * * * * * * * *
;* SUBS(SKEL,P1,P2,P3,P4,P5) SUBSTITUTE PARAMETERS
;* FORMS STRING BY SUBSTITUTING PARAMETERS P1 THROUGH P5 IN
;* SKELETON TREE SKEL. DOES NOTHING IF BOTH OBJECT CODE AND LISTING
;* OF IT ARE TURNED OFF
;*
;SUBS SUBS = ?INE(OBJFLG + LISTOB,0) SUB1(SKEL) :(RETURN)
L10124:
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE ^D1,OBJFLG
ADD ^D1,LISTOB
MOVEM 1,Q10001+^D0
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,Q10001+^D0
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
MOVE 1,@N10271
FCALV$ ^D1,F10272
MOVEM 1,@N10124
JRST S$$SRT##
;* * * * * * * * *
;* SUB1(SKEL) WALK TREE AND SUBSTITUTE
;* WALKS OVER SKELETON TREE FROM LEFT TO RIGHT AND BOTTOM TO TOP
;* PRODUCING STRING RECURSIVELY
;*
;SUB1 SUB1 = DATATYPE(SKEL)
L10272:
MOVEI 14,Q10044
MOVEM 14,S$$FLP##
MOVE 1,@N10271
FCALV$ ^D1,F10052
MOVEM 1,@N10272
Q10044:
; SUB1 = ?IDENT(SUB1,'STRING') SKEL :S(RETURN)
MOVEI 14,Q10045
MOVEM 14,S$$FLP##
MOVE 1,@N10272
PUSH 16,1
MOVE 1,S10330
FCALV$ ^D2,F10072
SETZ 1,
MOVE 1,@N10271
MOVEM 1,@N10272
JRST S$$SRT##
Q10045:
; SUB1 = ?IDENT(SUB1,'NAME') $SKEL :S(RETURN)
MOVEI 14,Q10046
MOVEM 14,S$$FLP##
MOVE 1,@N10272
PUSH 16,1
MOVE 1,S10331
FCALV$ ^D2,F10072
SETZ 1,
MOVE 1,@N10271
JSP 14,S$$IVV##
MOVEM 1,@N10272
JRST S$$SRT##
Q10046:
; SUB1 = SUB1(FRNT(SKEL)) SUB1(BACK(SKEL)) :(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10271
FCALV$ ^D1,F10332
FCALV$ ^D1,F10272
PUSH 16,1
MOVE 1,@N10271
FCALV$ ^D1,F10333
FCALV$ ^D1,F10272
JSP 14,S$$CNC##
EXP ^D2
MOVEM 1,@N10272
JRST S$$SRT##
;* * * * * * * * *
;* GETITM() GET ITEM FROM SYMBOL TABLE
;* EXPECTS ITTYP, ITATR, AND ITNAM SET TO THE TYPE, ATTRIBUTES,
;* AND NAME OF THE SYMBOL, AND DOES LOOKUP TO GET ITENT. CREATES
;* NEW SYM DATATYPE FOR NEW ENTRIES, OR RESETS ITATR FOR OLD ONES
;* CALLS GETATR TO SET ALL THE APPROPRIATE INDIVIDUAL ATTRIBUTES
;* AND MAKES A CROSS-REFERENCE ENTRY IF THE FLAG IS ON
;*
;GETITM ITPTR = .SYMBTB[ITNAM]
L10120:
MOVEI 14,Q10047
MOVEM 14,S$$FLP##
MOVE 1,@ITNAM
AREFN$ ^D1,SYMBTB
MOVEM 1,@N10334
Q10047:
; ITENT = $ITPTR
MOVEI 14,Q10048
MOVEM 14,S$$FLP##
MOVE 1,@N10334
JSP 14,S$$IVV##
MOVEM 1,@ITENT
Q10048:
; $ITPTR = ?IDENT(ITENT) SYM(NEWNAM(),ITATR) :F(GETIT2)
MOVEI 14,L10336
MOVEM 14,S$$FLP##
MOVE 1,@N10334
JSP 14,S$$IVN##
PUSH 16,1
MOVE 1,@ITENT
FCALV$ ^D1,F10072
SETZ 1,
FCALV$ ^D0,NEWNAM
PUSH 16,1
MOVE ^D1,ITATR
TLO 1,1B18
TLZ 1,1B19
FCALV$ ^D2,F10335
JSP 11,S$$ASG##
; ITENT = $ITPTR
MOVEI 14,Q10049
MOVEM 14,S$$FLP##
MOVE 1,@N10334
JSP 14,S$$IVV##
MOVEM 1,@ITENT
Q10049:
;GETIT1 (?GETATR() ?INE(CRSFLG,0)) :F(RETURN)
L10337:
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
FCALV$ ^D0,GETATR
SETZ 1,
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,V10103
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
; ITPTR = .CROSTB[ITNAM]
MOVEI 14,Q10050
MOVEM 14,S$$FLP##
MOVE 1,@ITNAM
AREFN$ ^D1,CROSTB
MOVEM 1,@N10334
Q10050:
; $ITPTR = CRS($ITPTR,LSHIFT(STNO,3) + ITTYP) :(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
MOVE 1,@N10334
JSP 14,S$$IVN##
PUSH 16,1
MOVE 1,@N10334
JSP 14,S$$IVV##
PUSH 16,1
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$LSH##
JUMP 0,STNO
JUMP 0,K10339
ADD 16,S$$STB##
MOVE 1,0
ADD ^D1,ITTYP
TLO 1,1B18
TLZ 1,1B19
FCALV$ ^D2,F10338
JSP 11,S$$ASG##
JRST S$$SRT##
;GETIT2 ITATR = ATRB(ITENT) :(GETIT1)
L10336:
MOVEI 14,L10337
MOVEM 14,S$$FLP##
MOVE 1,@ITENT
FCALV$ ^D1,F10340
DASGN$ 2,ITATR
JRST L10337
;* * * * * * * * *
;* GETATR() GET ATTRIBUTES
;* ENTER WITH ITTYP AND ITATR SET, AND SETS THE INDIVIDUAL 'XXATRB'
;* ATTRIBUTES FOR THE GIVEN TYPE
;*
;GETATR ?INE(ITTYP,0) :F(GETAVR)
L10118:
MOVEI 14,L10341
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,ITTYP
JUMP 0,K10302
ADD 16,S$$STB##
SETZ 1,
; ?INE(ITTYP,1) :F(GETALB)
MOVEI 14,L10342
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,ITTYP
JUMP 0,K10292
ADD 16,S$$STB##
SETZ 1,
; ?INE(ITTYP,2) :F(GETAFN)
MOVEI 14,L10343
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,ITTYP
JUMP 0,K10307
ADD 16,S$$STB##
SETZ 1,
; ?INE(ITTYP,3) :F(GETAST)
MOVEI 14,L10344
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,ITTYP
JUMP 0,K10339
ADD 16,S$$STB##
SETZ 1,
; ?INE(ITTYP,4) :F(GETABT)
MOVEI 14,L10346
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,ITTYP
JUMP 0,K10345
ADD 16,S$$STB##
SETZ 1,
; ?INE(ITTYP,5) :F(GETAVX)
MOVEI 14,L10348
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,ITTYP
JUMP 0,K10347
ADD 16,S$$STB##
SETZ 1,
; ?INE(ITTYP,6) :F(GETALX)
MOVEI 14,L10350
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$NEP##
JUMP 0,ITTYP
JUMP 0,K10349
ADD 16,S$$STB##
SETZ 1,
;* EXTENDED FUNCTION
; FXATRB = AND(ITATR,FXXMSK)
MOVEI 14,Q10051
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,FXXMSK
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,FXATRB
Q10051:
; FGATRB = AND(ITATR,FGGATR)
MOVEI 14,Q10052
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,FGGATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,FGATRB
Q10052:
; FIATRB = AND(ITATR,FIPATR)
MOVEI 14,Q10053
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,FIPATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,FIATRB
Q10053:
;* NORMAL FUNCTION
;GETAFN FTATRB = AND(ITATR,FTFATR)
L10343:
MOVEI 14,Q10054
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,FTFATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,FTATRB
Q10054:
; FDATRB = AND(ITATR,FDDMSK) :(GETATX)
MOVEI 14,L10351
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,FDDMSK
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,FDATRB
JRST L10351
;* EXTENDED LABEL
;GETALX LGATRB = AND(ITATR,LGGATR)
L10350:
MOVEI 14,Q10055
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,LGGATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,LGATRB
Q10055:
; LIATRB = AND(ITATR,LIPATR)
MOVEI 14,Q10056
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,LIPATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,LIATRB
Q10056:
;* NORMAL LABEL
;GETALB LTATRB = AND(ITATR,LTTMSK) :(GETAXN)
L10342:
MOVEI 14,L10352
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,LTTMSK
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,LTATRB
JRST L10352
;* EXTENDED VARIABLE
;GETAVX VXATRB = AND(ITATR,VXXATR)
L10348:
MOVEI 14,Q10057
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,VXXATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,VXATRB
Q10057:
; VGATRB = AND(ITATR,VGGATR)
MOVEI 14,Q10058
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,VGGATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,VGATRB
Q10058:
; VIATRB = AND(ITATR,VIPATR)
MOVEI 14,Q10059
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,VIPATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,VIATRB
Q10059:
; VNATRB = AND(ITATR,VNNATR)
MOVEI 14,Q10060
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,VNNATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,VNATRB
Q10060:
;* NORMAL VARIABLE
;GETAVR VTATRB = AND(ITATR,VTVATR)
L10341:
MOVEI 14,Q10061
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,VTVATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,VTATRB
Q10061:
; VDATRB = AND(ITATR,VDDMSK)
MOVEI 14,Q10062
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,VDDMSK
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,VDATRB
Q10062:
;GETATX TXATRB = AND(ITATR,TXTMSK)
L10351:
MOVEI 14,Q10063
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,TXTMSK
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,TXATRB
Q10063:
;GETAXN XNATRB = AND(ITATR,XNXMSK) :(RETURN)
L10352:
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,XNXMSK
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,XNATRB
JRST S$$SRT##
;* STRING
;GETAST SKATRB = AND(ITATR,SKRATR)
L10344:
MOVEI 14,Q10064
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,SKRATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,SKATRB
Q10064:
; SDATRB = AND(ITATR,SDRATR) :(RETURN)
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,SDRATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,SDATRB
JRST S$$SRT##
;* BREAK TABLE
;GETABT BTATRB = AND(ITATR,BTRATR) :(RETURN)
L10346:
MOVEI 14,S$$SRT##
MOVEM 14,S$$FLP##
SUB 16,S$$STB##
MOVEM 16,S$$STS##
JSA 16,F$$AND##
JUMP 0,ITATR
JUMP 0,BTRATR
ADD 16,S$$STB##
MOVE 1,0
MOVEM 1,BTATRB
JRST S$$SRT##
;* * * * * * * * *
;END
Q10003=Q10002+3
JRST S$$SXT##
Q10001: BLOCK ^D1
K10288: EXP ^D10000
I10291: EXP ^D9!1B0
K10292: EXP ^D1
I10292: EXP ^D1!1B0
I10293: EXP ^D118!1B0
K10294: EXP ^D90
K10302: EXP ^D0
K10306: EXP ^D38
I10306: EXP ^D38!1B0
K10307: EXP ^D2
I10323: EXP ^D7!1B0
I10328: EXP ^D15!1B0
K10339: EXP ^D3
K10345: EXP ^D4
K10347: EXP ^D5
K10349: EXP ^D6
F10045: BYTE (4)4(4)0(5)^D0(5)0(18)P$$TIM##
F10050: BYTE (4)4(4)0(5)^D1(5)0(18)P$$SIZ##
F10052: BYTE (4)4(4)0(5)^D1(5)0(18)P$$DTY##
F10060: BYTE (4)4(4)0(5)^D1(5)0(18)P$$DAT##
F10064: BYTE (4)4(4)0(5)^D2(5)0(18)P$$TBL##
F10065: BYTE (4)4(4)0(5)^D2(5)0(18)P$$DUP##
F10066: BYTE (4)4(4)0(5)^D2(5)0(18)P$$DEF##
F10071: BYTE (4)4(4)0(5)^D2(5)0(18)P$$DIF##
F10072: BYTE (4)4(4)0(5)^D2(5)0(18)P$$IDT##
F10079: BYTE (4)4(4)0(5)^D3(5)0(18)P$$LPD##
F10080: BYTE (4)4(4)0(5)^D3(5)0(18)P$$RPD##
F10081: BYTE (4)4(4)0(5)^D3(5)0(18)P$$SBS##
F10083: BYTE (4)4(4)0(5)^D3(5)0(18)P$$RPL##
A10090: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'SRCLIN'
A10091: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'OBJLIN'
A10092: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'OBJCHR'
A10093: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'LSTLIN'
A10094: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'LSTCHR'
V10095: POINT 7,.+1,35
BYTE (2)0(16)^D1+1(18)0
BLOCK ^D1
N10095: BYTE (4)4(2)1(12)0(18)V10095
V10096: EXP 0
V10097: EXP 0
V10098: EXP 0
V10099: EXP 0
V10100: EXP 0
V10101: EXP 0
V10102: EXP 0
V10103: EXP 0
A10104: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'PRTOUT'
A10105: BYTE (2)2(16)^D6+1(18)^D26
ASCII 'PRTOUT(MESG,TTYFLG,CHRMOD)'
A10106: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'PUTOUT'
A10107: BYTE (2)2(16)^D4+1(18)^D19
ASCII 'PUTOUT(MESG,CHRMOD)'
A10108: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'NEWNAM'
A10109: BYTE (2)2(16)^D2+1(18)^D8
ASCII 'NEWNAM()'
A10110: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'NEWLAB'
A10111: BYTE (2)2(16)^D2+1(18)^D8
ASCII 'NEWLAB()'
A10112: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'ERRMSG'
A10113: BYTE (2)2(16)^D3+1(18)^D12
ASCII 'ERRMSG(MESG)'
A10114: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'STXERR'
A10115: BYTE (2)2(16)^D3+1(18)^D12
ASCII 'STXERR(MESG)'
A10116: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'GETSTA'
A10117: BYTE (2)2(16)^D2+1(18)^D8
ASCII 'GETSTA()'
A10118: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'GETATR'
A10119: BYTE (2)2(16)^D2+1(18)^D8
ASCII 'GETATR()'
A10120: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'GETITM'
A10121: BYTE (2)2(16)^D2+1(18)^D8
ASCII 'GETITM()'
A10122: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'PARLIT'
A10123: BYTE (2)2(16)^D4+1(18)^D19
ASCII 'PARLIT(QTYP,BRKPAT)'
A10124: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'SUBS'
A10125: BYTE (2)2(16)^D5+1(18)^D25
ASCII 'SUBS(SKEL,P1,P2,P3,P4,P5)'
SYMBTB: BYTE (4)4(14)0(18)Q10065+^D17
XNAMTB: BYTE (4)4(14)0(18)Q10065+^D18
KEYWTB: BYTE (4)4(14)0(18)Q10065+^D19
CTRLTB: BYTE (4)4(14)0(18)Q10065+^D20
DECLTB: BYTE (4)4(14)0(18)Q10065+^D21
CROSTB: BYTE (4)4(14)0(18)Q10065+^D22
CONSTB: BYTE (4)4(14)0(18)Q10065+^D23
ENTFTB: BYTE (4)4(14)0(18)Q10065+^D24
DSIZTB: BYTE (4)4(14)0(18)Q10065+^D25
BOPRTB: BYTE (4)4(14)0(18)Q10065+^D26
UOPRTB: BYTE (4)4(14)0(18)Q10065+^D27
ENTRLS: BYTE (4)4(14)0(18)Q10065+^D28
EXTRLS: BYTE (4)4(14)0(18)Q10065+^D29
FORTLS: BYTE (4)4(14)0(18)Q10065+^D30
PTVRAR: BYTE (4)4(14)0(18)Q10065+^D31
PTFNAR: BYTE (4)4(14)0(18)Q10065+^D32
PRIMAR: BYTE (4)4(14)0(18)Q10065+^D33
GOTOAR: BYTE (4)4(14)0(18)Q10065+^D34
DECLAR: BYTE (4)4(14)0(18)Q10065+^D35
PROGAR: BYTE (4)4(14)0(18)Q10065+^D36
VARBAR: BYTE (4)4(14)0(18)Q10065+^D37
MACHAR: BYTE (4)4(14)0(18)Q10065+^D38
STENAR: BYTE (4)4(14)0(18)Q10065+^D39
BOPRAR: BYTE (4)4(14)0(18)Q10065+^D40
UOPRAR: BYTE (4)4(14)0(18)Q10065+^D41
PATRAR: BYTE (4)4(14)0(18)Q10065+^D42
EXPRAR: BYTE (4)4(14)0(18)Q10065+^D43
AROPAR: BYTE (4)4(14)0(18)Q10065+^D44
ARITAR: BYTE (4)4(14)0(18)Q10065+^D45
EACTAR: BYTE (4)4(14)0(18)Q10065+^D46
C: BYTE (4)4(14)0(18)Q10065+^D47
INDENT: BYTE (4)4(14)0(18)Q10065+^D48
SPLASH: BYTE (4)4(14)0(18)Q10065+^D49
ITNAM: BYTE (4)4(14)0(18)Q10065+^D50
ITENT: BYTE (4)4(14)0(18)Q10065+^D51
NOFAIL: BYTE (4)4(14)0(18)Q10065+^D52
SNONAM: BYTE (4)4(14)0(18)Q10065+^D53
SUBNAM: BYTE (4)4(14)0(18)Q10065+^D54
PARBLK: BYTE (4)4(14)0(18)Q10065+^D55
PRGNAM: BYTE (4)4(14)0(18)Q10065+^D56
STARTP: BYTE (4)4(14)0(18)Q10065+^D57
TEMLOC: BYTE (4)4(14)0(18)Q10065+^D58
A10168: BYTE (2)2(16)^D1+1(18)^D2
ASCII 'P1'
A10169: BYTE (2)2(16)^D1+1(18)^D2
ASCII 'P2'
A10170: BYTE (2)2(16)^D1+1(18)^D2
ASCII 'P3'
A10171: BYTE (2)2(16)^D1+1(18)^D2
ASCII 'P4'
A10172: BYTE (2)2(16)^D1+1(18)^D2
ASCII 'P5'
P: EXP 0
OBJFLG: EXP 0
LISTSR: EXP 0
INTGER: EXP 0
ITTYP: EXP 0
ITATR: EXP 0
PRGALV: EXP 0
PRGALL: EXP 0
PRGALF: EXP 0
STNFLG: EXP 0
HSHSIZ: EXP 0
STRTIM: EXP 0
DMPFLG: EXP 0
LISTOB: EXP 0
STNO: EXP 0
MAXTMP: EXP 0
XNATRB: EXP 0
VTATRB: EXP 0
VDATRB: EXP 0
LTATRB: EXP 0
FTATRB: EXP 0
FDATRB: EXP 0
TXATRB: EXP 0
VNATRB: EXP 0
VXATRB: EXP 0
VIATRB: EXP 0
VGATRB: EXP 0
LIATRB: EXP 0
LGATRB: EXP 0
FIATRB: EXP 0
FGATRB: EXP 0
FXATRB: EXP 0
SKATRB: EXP 0
SDATRB: EXP 0
BTATRB: EXP 0
XNVATR: EXP 0
XNLATR: EXP 0
XNFATR: EXP 0
XNXMSK: EXP 0
VTVATR: EXP 0
VDDATR: EXP 0
VDPATR: EXP 0
VDDMSK: EXP 0
LTDATR: EXP 0
LTTMSK: EXP 0
FTFATR: EXP 0
FDPATR: EXP 0
FDIATR: EXP 0
FDDMSK: EXP 0
TXTATR: EXP 0
TXTMSK: EXP 0
VNNATR: EXP 0
VXXATR: EXP 0
VIPATR: EXP 0
VGGATR: EXP 0
LIPATR: EXP 0
LGGATR: EXP 0
FIPATR: EXP 0
FGGATR: EXP 0
FXXATR: EXP 0
FXXMSK: EXP 0
SKRATR: EXP 0
SDRATR: EXP 0
BTRATR: EXP 0
FFCHR: BYTE (4)4(14)0(18)Q10065+^D64
CRLCHR: BYTE (4)4(14)0(18)Q10065+^D65
LFCHR: BYTE (4)4(14)0(18)Q10065+^D66
CRCHR: BYTE (4)4(14)0(18)Q10065+^D67
SQCHR: BYTE (4)4(14)0(18)Q10065+^D68
DQCHR: BYTE (4)4(14)0(18)Q10065+^D69
TBCHR: BYTE (4)4(14)0(18)Q10065+^D70
LCSCHR: BYTE (4)4(14)0(18)Q10065+^D71
BLNCHR: BYTE (4)4(14)0(18)Q10065+^D72
EQLCHR: BYTE (4)4(14)0(18)Q10065+^D73
QTSCHR: BYTE (4)4(14)0(18)Q10065+^D74
ELTCHR: BYTE (4)4(14)0(18)Q10065+^D75
LBCHR: BYTE (4)4(14)0(18)Q10065+^D76
COMSPT: BYTE (4)4(14)0(18)Q10065+^D77
INTGPT: BYTE (4)4(14)0(18)Q10065+^D78
BLNKPT: BYTE (4)4(14)0(18)Q10065+^D79
OPBLPT: BYTE (4)4(14)0(18)Q10065+^D80
PCOMPT: BYTE (4)4(14)0(18)Q10065+^D81
PCPRMT: BYTE (4)4(14)0(18)Q10065+^D82
IDENPT: BYTE (4)4(14)0(18)Q10065+^D83
DCLCMT: BYTE (4)4(14)0(18)Q10065+^D84
RSIDPT: BYTE (4)4(14)0(18)Q10065+^D85
LABLPT: BYTE (4)4(14)0(18)Q10065+^D86
POPRMT: BYTE (4)4(14)0(18)Q10065+^D87
IDENMT: BYTE (4)4(14)0(18)Q10065+^D88
SQLTPT: BYTE (4)4(14)0(18)Q10065+^D89
DQLTPT: BYTE (4)4(14)0(18)Q10065+^D90
LBDCPT: BYTE (4)4(14)0(18)Q10065+^D91
IDDCPT: BYTE (4)4(14)0(18)Q10065+^D92
A10266: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'MESG'
A10267: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'TTYFLG'
A10268: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'CHRMOD'
A10269: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'QTYP'
A10270: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'BRKPAT'
A10271: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'SKEL'
A10272: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'SUB1'
A10273: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'CTL1'
A10274: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'CTL2'
A10275: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'CTL3'
A10276: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'CTL4'
A10277: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'CTL5'
A10278: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'CTL6'
A10279: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'CTL7'
A10280: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'CTL8'
A10281: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'CTL9'
A10282: BYTE (2)2(16)^D1+1(18)^D5
ASCII 'CTL10'
A10283: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'FASBOL'
S10284: POINT 7,A10284,35
A10284: BYTE (2)2(16)^D2+1(18)^D10
ASCII 'SUB1(SKEL)'
S10285: POINT 7,A10285,35
A10285: BYTE (2)2(16)^D3+1(18)^D14
ASCII 'SYM(INAM,ATRB)'
S10286: POINT 7,A10286,35
A10286: BYTE (2)2(16)^D3+1(18)^D14
ASCII 'CRS(NEXT,CRSI)'
S10287: POINT 7,A10287,35
A10287: BYTE (2)2(16)^D3+1(18)^D14
ASCII 'NOD(FRNT,BACK)'
N10289: BYTE (4)4(14)0(18)Q10065+^D100
S10290: POINT 7,A10290,35
A10290: BYTE (2)2(16)^D1+1(18)^D1
ASCII ' '
N10295: BYTE (4)4(14)0(18)Q10065+^D101
S10297: POINT 7,A10297,35
A10297: BYTE (2)2(16)^D5+1(18)^D25
ASCII '*TOTAL COMPILATION TIME: '
S10298: POINT 7,A10298,35
A10298: BYTE (2)2(16)^D2+1(18)^D6
ASCII ' MS., '
S10299: POINT 7,A10299,35
A10299: BYTE (2)2(16)^D4+1(18)^D19
ASCII ' ERROR DIAGNOSTICS*'
B10303: EXP ^D0
XWD ^D0,^D0
XWD ^D0,^D0
XWD ^D0,^D64
S10303: POINT 7,A10303,35
A10303: BYTE (2)2(16)^D1+1(18)^D1
ASCII ';'
S10304: POINT 7,A10304,35
A10304: BYTE (2)2(16)^D1+1(18)^D1
ASCII 'Q'
S10305: POINT 7,A10305,35
A10305: BYTE (2)2(16)^D2+1(18)^D10
ASCII 'ERROR **'
S10308: POINT 7,A10308,35
A10308: BYTE (2)2(16)^D1+1(18)^D2
ASCII '**'
S10311: POINT 7,A10311,35
A10311: BYTE (2)2(16)^D1+1(18)^D1
ASCII '^'
N10316: BYTE (4)4(14)0(18)Q10065+^D102
N10317: BYTE (4)4(14)0(18)Q10065+^D103
S10319: POINT 7,A10319,35
A10319: BYTE (2)2(16)^D1+1(18)^D1
ASCII '*'
B10320: EXP ^D32256
XWD ^D0,^D32512
XWD ^D0,^D32512
XWD ^D0,^D16128
A10320: BYTE (2)2(16)^D6+1(18)^D26
ASCII 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
S10322: POINT 7,A10322,35
A10322: BYTE (2)2(16)^D4+1(18)^D16
ASCII 'BAD CONTROL LINE'
B10326: EXP ^D0
XWD ^D0,^D0
XWD ^D0,^D8
XWD ^D0,^D4
A10326: BYTE (2)2(16)^D1+1(18)^D2
ASCII '.+'
N10329: BYTE (4)4(14)0(18)Q10065+^D104
S10330: POINT 7,A10330,35
A10330: BYTE (2)2(16)^D2+1(18)^D6
ASCII 'STRING'
S10331: POINT 7,A10331,35
A10331: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'NAME'
A10332: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'FRNT'
A10333: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'BACK'
N10334: BYTE (4)4(14)0(18)Q10065+^D105
A10335: BYTE (2)2(16)^D1+1(18)^D3
ASCII 'SYM'
A10338: BYTE (2)2(16)^D1+1(18)^D3
ASCII 'CRS'
A10340: BYTE (2)2(16)^D1+1(18)^D4
ASCII 'ATRB'
Q10065: BYTE (2)2(16)^D105+1(18)0
REPEAT ^D105,<0>
Q10066: BYTE (2)2(16)^D67*4+1(18)-^D67
EXP 0
BYTE (5)5(31)0
POINT 7,A10340,35
F10340: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF##
EXP 0
BYTE (5)5(31)0
POINT 7,A10338,35
F10338: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF##
EXP 0
BYTE (5)5(31)0
POINT 7,A10335,35
F10335: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF##
EXP 0
BYTE (5)5(31)0
POINT 7,A10333,35
F10333: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF##
EXP 0
BYTE (5)5(31)0
POINT 7,A10332,35
F10332: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF##
EXP 0
BYTE (5)3(31)0
POINT 7,A10282,35
JRST L10282
EXP 0
BYTE (5)3(31)0
POINT 7,A10281,35
JRST L10281
EXP 0
BYTE (5)3(31)0
POINT 7,A10280,35
JRST L10280
EXP 0
BYTE (5)3(31)0
POINT 7,A10279,35
JRST L10279
EXP 0
BYTE (5)3(31)0
POINT 7,A10278,35
JRST L10278
EXP 0
BYTE (5)3(31)0
POINT 7,A10277,35
JRST L10277
EXP 0
BYTE (5)3(31)0
POINT 7,A10276,35
JRST L10276
EXP 0
BYTE (5)3(31)0
POINT 7,A10275,35
JRST L10275
EXP 0
BYTE (5)3(31)0
POINT 7,A10274,35
JRST L10274
EXP 0
BYTE (5)3(31)0
POINT 7,A10273,35
JRST L10273
EXP 0
BYTE (5)5(31)0
POINT 7,A10272,35
F10272: BYTE (4)4(4)0(5)20(5)0(18)S$$UDF##
EXP 0
BYTE (5)3(31)0
POINT 7,A10272,35
JRST L10272
EXP 0
BYTE (5)1(31)0
POINT 7,A10272,35
N10272: BYTE (4)4(14)0(18)Q10065+^D99
EXP 0
BYTE (5)1(31)0
POINT 7,A10271,35
N10271: BYTE (4)4(14)0(18)Q10065+^D98
EXP 0
BYTE (5)1(31)0
POINT 7,A10270,35
N10270: BYTE (4)4(14)0(18)Q10065+^D97
EXP 0
BYTE (5)1(31)0
POINT 7,A10269,35
N10269: BYTE (4)4(14)0(18)Q10065+^D96
EXP 0
BYTE (5)1(31)0
POINT 7,A10268,35
N10268: BYTE (4)4(14)0(18)Q10065+^D95
EXP 0
BYTE (5)1(31)0
POINT 7,A10267,35
N10267: BYTE (4)4(14)0(18)Q10065+^D94
EXP 0
BYTE (5)1(31)0
POINT 7,A10266,35
N10266: BYTE (4)4(14)0(18)Q10065+^D93
EXP 0
BYTE (5)1(31)0
POINT 7,A10172,35
P5: BYTE (4)4(14)0(18)Q10065+^D63
EXP 0
BYTE (5)1(31)0
POINT 7,A10171,35
P4: BYTE (4)4(14)0(18)Q10065+^D62
EXP 0
BYTE (5)1(31)0
POINT 7,A10170,35
P3: BYTE (4)4(14)0(18)Q10065+^D61
EXP 0
BYTE (5)1(31)0
POINT 7,A10169,35
P2: BYTE (4)4(14)0(18)Q10065+^D60
EXP 0
BYTE (5)1(31)0
POINT 7,A10168,35
P1: BYTE (4)4(14)0(18)Q10065+^D59
EXP 0
BYTE (5)5(31)0
POINT 7,A10124,35
SUBS: BYTE (4)4(4)0(5)^D6(5)0(18)E10124
EXP 0
BYTE (5)3(31)0
POINT 7,A10124,35
JRST L10124
EXP 0
BYTE (5)1(31)0
POINT 7,A10124,35
N10124: BYTE (4)4(14)0(18)Q10065+^D16
EXP 0
BYTE (5)5(31)0
POINT 7,A10122,35
PARLIT: BYTE (4)4(4)0(5)^D2(5)0(18)E10122
EXP 0
BYTE (5)3(31)0
POINT 7,A10122,35
JRST L10122
EXP 0
BYTE (5)1(31)0
POINT 7,A10122,35
N10122: BYTE (4)4(14)0(18)Q10065+^D15
EXP 0
BYTE (5)5(31)0
POINT 7,A10120,35
GETITM: BYTE (4)4(4)0(5)^D0(5)0(18)E10120
EXP 0
BYTE (5)3(31)0
POINT 7,A10120,35
JRST L10120
EXP 0
BYTE (5)1(31)0
POINT 7,A10120,35
N10120: BYTE (4)4(14)0(18)Q10065+^D14
EXP 0
BYTE (5)5(31)0
POINT 7,A10118,35
GETATR: BYTE (4)4(4)0(5)^D0(5)0(18)E10118
EXP 0
BYTE (5)3(31)0
POINT 7,A10118,35
JRST L10118
EXP 0
BYTE (5)1(31)0
POINT 7,A10118,35
N10118: BYTE (4)4(14)0(18)Q10065+^D13
EXP 0
BYTE (5)5(31)0
POINT 7,A10116,35
GETSTA: BYTE (4)4(4)0(5)^D0(5)0(18)E10116
EXP 0
BYTE (5)3(31)0
POINT 7,A10116,35
JRST L10116
EXP 0
BYTE (5)1(31)0
POINT 7,A10116,35
N10116: BYTE (4)4(14)0(18)Q10065+^D12
EXP 0
BYTE (5)5(31)0
POINT 7,A10114,35
STXERR: BYTE (4)4(4)0(5)^D1(5)0(18)E10114
EXP 0
BYTE (5)3(31)0
POINT 7,A10114,35
JRST L10114
EXP 0
BYTE (5)1(31)0
POINT 7,A10114,35
N10114: BYTE (4)4(14)0(18)Q10065+^D11
EXP 0
BYTE (5)5(31)0
POINT 7,A10112,35
ERRMSG: BYTE (4)4(4)0(5)^D1(5)0(18)E10112
EXP 0
BYTE (5)3(31)0
POINT 7,A10112,35
JRST L10112
EXP 0
BYTE (5)1(31)0
POINT 7,A10112,35
N10112: BYTE (4)4(14)0(18)Q10065+^D10
EXP 0
BYTE (5)5(31)0
POINT 7,A10110,35
NEWLAB: BYTE (4)4(4)0(5)^D0(5)0(18)E10110
EXP 0
BYTE (5)3(31)0
POINT 7,A10110,35
JRST L10110
EXP 0
BYTE (5)1(31)0
POINT 7,A10110,35
N10110: BYTE (4)4(14)0(18)Q10065+^D9
EXP 0
BYTE (5)5(31)0
POINT 7,A10108,35
NEWNAM: BYTE (4)4(4)0(5)^D0(5)0(18)E10108
EXP 0
BYTE (5)3(31)0
POINT 7,A10108,35
JRST L10108
EXP 0
BYTE (5)1(31)0
POINT 7,A10108,35
N10108: BYTE (4)4(14)0(18)Q10065+^D8
EXP 0
BYTE (5)5(31)0
POINT 7,A10106,35
PUTOUT: BYTE (4)4(4)0(5)^D2(5)0(18)E10106
EXP 0
BYTE (5)3(31)0
POINT 7,A10106,35
JRST L10106
EXP 0
BYTE (5)1(31)0
POINT 7,A10106,35
N10106: BYTE (4)4(14)0(18)Q10065+^D7
EXP 0
BYTE (5)5(31)0
POINT 7,A10104,35
PRTOUT: BYTE (4)4(4)0(5)^D3(5)0(18)E10104
EXP 0
BYTE (5)3(31)0
POINT 7,A10104,35
JRST L10104
EXP 0
BYTE (5)1(31)0
POINT 7,A10104,35
N10104: BYTE (4)4(14)0(18)Q10065+^D6
EXP 0
BYTE (5)2(31)0
POINT 7,A10094,35
N10094: BYTE (4)4(14)0(18)Q10065+^D5
EXP 0
BYTE (5)2(31)0
POINT 7,A10093,35
N10093: BYTE (4)4(14)0(18)Q10065+^D4
EXP 0
BYTE (5)2(31)0
POINT 7,A10092,35
N10092: BYTE (4)4(14)0(18)Q10065+^D3
EXP 0
BYTE (5)2(31)0
POINT 7,A10091,35
N10091: BYTE (4)4(14)0(18)Q10065+^D2
EXP 0
BYTE (5)2(31)0
POINT 7,A10090,35
N10090: BYTE (4)4(14)0(18)Q10065+^D1
POINT 7,A10283,35
Q10000: XWD 0,Q10065
XWD Q10066,^D0
EXP Q10066
XWD ^D10,Q10000
E10104: JSP 13,S$$EFI##
POINT 7,A10105,35
EXP 0
XWD ^D11,Q10000
E10106: JSP 13,S$$EFI##
POINT 7,A10107,35
EXP 0
XWD ^D12,Q10000
E10108: JSP 13,S$$EFI##
POINT 7,A10109,35
EXP 0
XWD ^D13,Q10000
E10110: JSP 13,S$$EFI##
POINT 7,A10111,35
EXP 0
XWD ^D14,Q10000
E10112: JSP 13,S$$EFI##
POINT 7,A10113,35
EXP 0
XWD ^D15,Q10000
E10114: JSP 13,S$$EFI##
POINT 7,A10115,35
EXP 0
XWD ^D16,Q10000
E10116: JSP 13,S$$EFI##
POINT 7,A10117,35
EXP 0
XWD ^D17,Q10000
E10118: JSP 13,S$$EFI##
POINT 7,A10119,35
EXP 0
XWD ^D18,Q10000
E10120: JSP 13,S$$EFI##
POINT 7,A10121,35
EXP 0
XWD ^D19,Q10000
E10122: JSP 13,S$$EFI##
POINT 7,A10123,35
EXP 0
XWD ^D20,Q10000
E10124: JSP 13,S$$EFI##
POINT 7,A10125,35
EXP 0
END Q10002