;* * * * * * * * * ;* * 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