DOSV4= 0  ;DOS VERSION 4 COMPATIBLE  ; PDP-11 DOS SYSTEM MACROS V003A ;COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION ; ;  JUNE 1, 1972. .MACRO .PARAM R0=%^O0 R1=%^O1 R2=%^O2 R3=%^O3 R4=%^O4 R5=%^O5 R6=%^O6 R7=%^O7 SP=%^O6 PC=%^O7 PSW=^O177776 SWR=^O177570 .ENDM .MACRO .INIT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O6> .ENDM .MACRO .RLSE .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O7> .ENDM .MACRO .CLOSE . .TITLE MACRO V004A 06-JUN-72 .MACRO GVNUM  ;GEN VERSION NUMBER .ASCII /004A/ .ENDM ; COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION R0= %0 R1= %1 R2= %2 R3= %3 R4= %4 R5= %5 SP= %6 PC= %7 PRGBEG:    ;START OF PROGRAM XEDWRP= 0  ;FLUSH FOR NOW .GLOBL PSTBAS, PSTTOP ;PERM SYMBOL TABLE .GLOBL WRDSYM  ;".WORD" DEFAULT .MCALL .CLOSE, .CSI1, .CSI2, .DELET .MCALL .EXIT, .INIT, .MONF, .OPEN, .READ .MCALL .RLSE, .RSTRT,  .TITLE PST PERMANENT SYMBOL TABLE ; COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION .CSECT PSTSEC .GLOBL PSTBAS, PSTTOP  ;LIMITS .GLOBL WRDSYM  ;POINTER TO .WORD DR1= 200   ;DESTRUCTIVE REFERENCE IN FIRST FIELD DR2= 100   ;DESTRUCTIVE REFERENCE IN SECOND FIELD .GLOBL DFLGEV, DFLGBM, DFLCND, DFLMAC, DFLSMC DFLGEV= 020   ;DIRECTIVE REQUIRES EVEN LOCATION DFLGBM= 010   ;DIRECTIVE USES BYTE MODE DFLCND= 004   ;CONDITIONAL DIRECTIVE DFLMAC= 00(RBLRTOVN-BKVROV MO  R0I,BLRN#T OVM $ 4Q BE  ICRSOV1,RP CM  R1P,SIVROV MO  P)(S,-R1 OVM N RA TTOT SE;) SP-(0,RV MO $: 2T ENIDES RIFS ASYP;B  5$ EQB S ESGRRO PINR TOEC SUSIOEVPRT SERE;P SIVR,O)+SP(V MO  ITL AL;C  DRRAOV@L ALC 0 ,R)+SP(V MO  RSTEISEG RRETOES;R R1+,P)(S OVM Y ARSSCENEF IN, IAPSW; $ 2L ALC " SSREOGPRN "IT SE;P SIVR,OR1 OVM T IVESA;R ADVR,OR0 UBS S ESDRADN -IEDPPWA STEPUOM;C R0T,XCVR#O UBS E AS BET;G R0),R1-( OVM ) R1-( STT $  LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O17> .ENDM .MACRO .READ .LBLCK,.LBUFF .MCALL .AMODE .AMODE .LBUFF .AMODE .LBLCK EMT <^O4> .ENDM .MACRO .WRITE .LBLCK,.LBUFF .MCALL .AMODE .AMODE .LBUFF .AMODE .LBLCK EMT <^O2> .ENDM .MACRO .OPENO .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O2> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENI .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O4> .OPEN .LBLCK,.FBLCK .E .STAT, .TRAP, .WAIT .MCALL .WRITE .IF NDF DOSV4 .MCALL .CVTDT, .FLUSH, .RUN, .STSTK .IFF .MCALL .SYSDV .MACRO .FLUSH CODE .ENDM .MACRO .STSTK ADDR .ENDM .ENDC .IF DF OVLAY NUMOVR= 8.  ;NUMBER OF OVERLAYS .MACRO ENTOVR N .IF NE OVRLVL .PRINT OVRLVL ; NOT = 0 .ENDC .IF NDF XOVR'N OVRLVL= 1 OVRBAS= OVR'N'B .CSECT OVR'N OVRTMP= . .CSECT MAIN 1),(R0) ADD TRNSBN,(R0)+ MOV #OVRXCT,(R0)+ MOV (R1)+,(R0) NEG (R0) ADD (R1),(R0) ASR (R0)+ .TRAN #TRNLNK,#TRNBLI .WAIT #TRNLNK BIT #140000,(R0) BEQ 3$ SERROR 207 3$: MOV R1,OVRSIC 4$: MOV (SP)+,R1 MOV (SP)+,R0 5$: TST R0 RETURN ENTSEC MIXED TRNBLI: .BLKW .BLKW .BLKW .WORD 4 .WORD 0 XITSEC ENTSEC MIXED OVRSIC: .WORD 0  ;SECTOR IN CORE OVRSIP: 1S HIB E NGRAF OUT OSTIR FOR FSTTE;+ 1)(RR,ADVROP CM $: 1S AYRLVE OOFS SEBAO TNTOI;P R12,L+TBVR#O OVM ) SP-(1,RV MO  RSTEISEG RVESA;) SP-(0,RV MO  SSREOGPRN IORCTSEK ACST;) SP-(P,SIVROV MO  DRRAOV+,P)(S@V MO  ITT AS PVEMO; ) SP,(#2 DDA; SSREDD ARETO;S DRRAOV),SP@( OVM; NETIOU RNGLIAL CAYRLVE;O    R:OVALC ECTSXI  Y//S 50AD.R  1D OR.W  R/OV/0 D5RA. 0 RDWO.: NKNLTR 0D OR.W  EDIXMûÿNDM .MACRO .OPENU .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O1> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENC .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O13> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENE .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O3> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPEN .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O16> .ENDM  CALOVR .WORD OVRTMP .MACRO XITSEC .CSECT OVR'N .ENDM XITSEC .ENABL PIC .IFF OVRLVL= -1 .ENDC .ENDM .MACRO XITOVR .IF EQ OVRLVL .PRINT OVRLVL ; NOT = 1 .ENDC OVRLVL= 0 .MACRO XITSEC .CSECT MAIN .ENDM XITSEC .DSABL PIC .ENDM XXX= 0 .RADIX 10 .REPT NUMOVR XXX= XXX+1 .IRP N,<\XXX> .CSECT OVR'N OVR'N'B: .ENDM .ENDR .RADIX 8 OVRLVL= 0 .CSECT OVRBLD .WORD 0  ;SECTOR IN PROGRESS OVRADR: .WORD 0  ;OVERLAY ADDRESS OVRFLG: .WORD 0  ;SET WHEN OVRBLD COMPLETED TRNSBN: .WORD 0  ;TRAN STARTING BLOCK ADDRESS ENTSEC MIXED OVRLEN= 0 OVRTBL: XXX= 0 .RADIX 10 .REPT NUMOVR XXX= XXX+1 .IRP N,<\XXX> ENTSEC OVR'N .IIF GT .-OVR'N'B-OVRLEN, OVRLEN=.-OVR'N'B ENTSEC MIXED .WORD OVR'N'B .ENDM .ENDR .RADIX 8 ENTSEC OVRBLD OVRXCT= .-OVRLEN  ;START OF EXECUTION AREA .GLOBL OVRXCT EN ECTSEN  'DANTRT NOS RDWOF OERMBNU; 0 RDWO. ) UTTPOU (ONTINCFU; 2 RDWO. T UNCOD OR;W   KWBL. S ESDRADY OREM;M   KWBL. R BEUM NCKLO BCEVIDE;  W LK.B  CKLO BUTTPOUN RA;T    O:BLRN T 0 RDWO. 0 RDWO. / VR/O 50AD.R  /ROAC/M 50AD.R L:FIRN TO ENOP; 3 1D OR.W  0D OR.W  ITEX. T IO $:24 P)(S,-0722#V MO  P)(S-R CL $:21 4$2R B ) SP-(0,64#1 OVM ) SP-( LRC: 0$ 2 N URETR E AS BCKTA SEW NET;S IMGLPRT,XCVR#O OVM N URET R'TON;D  LG÷ÿ .MACRO .WAIT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O1> .ENDM .MACRO .WAITR .LBLCK,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .LBLCK EMT <^O0> .ENDM .MACRO .BLOCK .LBLCK,.BBLCK .MCALL .AMODE .AMODE .BBLCK .AMODE .LBLCK EMT <^O11> .ENDM .MACRO .TRAN .LBLCK,.TBLCK .MCALL .AMODE .AMODE .TBLCK .AMODE .LBLCK EMT <^O10> .ENDM .MACRO .SPEC .LBLCK,.SARG .MCALL .AMODE .AMODE .SARG .AMOD .IFF OVRLVL= 0 .MACRO ENTOVR NAME .ENDM .MACRO XITOVR .ENDM .ENDC .MACRO ENTSEC NAME .CSECT NAME .ENDM .MACRO XITSEC .CSECT MAIN .ENDM XITSEC .IIF DF X45, XFLTG=0 ;X45 IMPLIES XFLTG .IIF DF XMACRO, XSML=0;XMACRO IMPLIES XSML .MACRO LDRMAP MNE ;PUT SUPPRESSED ITEMS ON LOADER MAP .IF DF MNE!XALL MNE= 0 .LIST .GLOBL MNE .NLIST TSEC MIXED .WORD OVRBLD OVRBKN: .BLKW NUMOVR+1  ;PHYSICAL BLOCK POINTERS XITSEC .ENDC .SBTTL FIN ENTSEC IMPURE  ;CLOSE OUT IMPURE SECTORS ENTSEC IMPPAS ENTSEC IMPLIN IMPTOP: ENTSEC XCTPRG ENTSEC XCTPAS ENTSEC XCTLIN RETURN   ;RETURN FROM ANY OF THE ABOVE ENTSEC SWTSEC SWTTOP: ENTSEC EDTSEC EDTTOP: ENTSEC CNDSEC CNDTOP:    ;TOP OF CONDITIONAL ROLL XITRFOV NCI K OCBLS/RDWOD AN ; + P)(S STT S RNTURE" OKLO".E UNPR, EDSHNIFI;+ P)(S+,P)(S MPC: 0$ 1 O N;  3$ LOB ? EDSHNIFI;> *2VRMONU+ .ENDM .MACRO .STAT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O13> .ENDM .MACRO .ALLOC .LBLCK,.FBLCK,.N .MCALL .AMODE .AMODE .N .AMODE .FBLCK .AMODE .LBLCK EMT <^O15> .ENDM .MACRO .DELET .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O21> .ENDM .MACRO .RENAM .LBLCK,.OFB,.NFB .MCALL .AMODE .AMODE .NFB .AMODE .OFB .AMODE .LBLCK EMT <^O20> .ENDM .ENDC .ENDM LDRMAP XMACRO  ;ALL GENERATED CODE (MACRO, REPT, ETC.) LDRMAP XSML  ;SYSTEM MACROS LDRMAP X45  ;PDP-11/45 FEATURES LDRMAP XFLTG  ;FLOATING POINT EVALUATION LDRMAP XEDABS  ;ED.ABS LDRMAP XEDAMA  ;ED.AMA LDRMAP XEDPIC  ;ED.PIC LDRMAP XEDFPT  ;ED.FPT LDRMAP XEDLSB  ;ED.LSB LDRMAP XEDPNC  ;ED.PNC LDRMAP XEDLC  ;ED.LC LDRMAP XEDWRP  ;ED.WRP LDRMAP XEDCDR  ;CARD READER FORMAT LDRMAP XZERR  ;"Z" ERRORS LDRMAPSEC   ;BE NEAT .END START 4)(R OVM T SEFF OIND AD+;3)(R+,5)(R DDA R BEUM NCKLO BNGTIARSTT SE;) R3,(BNNSTR OVM K OCBLN RA TUTTPOUO TNTOI;P R3O,BLRN#T OVM: 3$ R5N,BKVR#O OVM T OUE ITWRO TREPARE;P R4L,TBVR#O OVM T IVESA;N SBRN,T)+SP(V MO  SSREDD ANGTIARSTT GE, ES;Y ,1ILNFTR,#NKNLTR#K OO.L  ORRR EO, N;  0$2E BN  )?-1= RNTURE (ODGO; + P)(S NCI S CKLO BUSUOIGNTCOT GE;0 ,RILNFTR,#NKNLTR#C LOAL. S CKLO BRDWO. 64F O #TEPUOM;C  R03,RV DI  R3.,64#V MO  DSOR WSK DOFR BEUM NTEPUOM;C  R0ïÿ .MACRO .APPEND .LBLCK,.1FB,.2FB .MCALL .AMODE .AMODE .2FB .AMODE .1FB .AMODE .LBLCK EMT <^O2> .ENDM .MACRO .LOOK .LBLCK,.FBLCK,.OP .MCALL .AMODE .AMODE .FBLCK .IIF NB,.OP,CLR -(SP) .AMODE .LBLCK EMT <^O14> .ENDM .MACRO .KEEP .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O24> .ENDM .MACRO .EXIT EMT <^O60> .ENDM .MACRO .TRAP .STUS XCREF  ;CREF SUPPRESSION .IIF DF DEBUG, .GLOBL DEBUG ;DEBUG VERSION .IIF DF DOSV4, .GLOBL DOSV4 ;DOS V4 COMPATIBLE .IIF DF KNIGHT, .GLOBL KNIGHT ;SET FOR DAVE'S TIMING TEST .IIF DF PDPV45, .GLOBL PDPV45 ;PDP-11/45 INSTRUCTIONS .IIF DF TRAPS, .GLOBL TRAPS ;ENABLE TRAPS FOR CALLS .IIF DF OVLAY, .GLOBL OVLAY ;ENABLE OVERLAYS .MACRO PARAM MNE, VALUE ;DEFINE DEFAULT PARAMETERS .IIF NDF MNE, MNE= VALUE .LIST MNE= MNE .NLIST .ENDM PARAM2   ;MACRO DIRECTIVE DFLSMC= 001   ;MCALL .IIF DF X45, XFLTG= 0 .IIF DF XMACRO, XSMCAL= 0 .MACRO OPCDEF NAME, CLASS, VALUE, FLAGS, COND .IF NB  .IF DF COND .MEXIT .ENDC .ENDC .RAD50 /NAME/ .BYTE FLAGS+0 .GLOBL OPCL'CLASS .BYTE 200+OPCL'CLASS .WORD VALUE .ENDM .MACRO DIRDEF NAME, FLAGS, COND .IF NB  .IF DF COND .MEXIT .ENDC .ENDC .GLOBL NAME .RAD50 /.'NAME/ .BYTE FLAGS+0 .BYTE 0 3,RL MU  CKLO/BDSOR;W  R3),SP(V MO  USPLUR SNERU PD,UNFOT NO;+ P)(S+,P)(S MPC D UNFOF ICHANBR; $ 10 NEB R BEUM NCKLO BNGTIARSTT SE;N SBRN,T)+SP(V MO  UPT IOKLO, ES;Y ,1ILNFTR,#NKNLTR#K OO.L  NO ; $ 1O BL  D?EN;> *2VRMONU+ .ENDM .MACRO .STFPU .STUS,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .STUS MOV #^O3,-(SP) EMT <^O41> .ENDM .MACRO .RECRD .LBLCK,.RBLCK .MCALL .AMODE .AMODE .RBLCK .AMODE .LBLCK EMT <^O25> .ENDM .MACRO .DUMP .LOW,.HIGH,.CDE .MCALL .AMODE .AMODE .LOW .AMODE .HIGH .AMODE .CDE EMT <^O64> .ENDM .MACRO .RSTRT .ADDR .MCALL .AMODE CPL, 80. ;CHARACTERS PER LISTING LINE PARAM LPP, 56. ;LINES PER PAGE PARAM SRCLEN, 132. ;SOURCE STATEMENT LENGTH PARAM STKSIZ, 4000 ;STACK SIZE AND FUDGE FACTOR .SBTTL SECTOR INITIALIZATION ENTSEC IMPURE  ;IMPURE STORAGE AREA IMPURE: ENTSEC IMPPAS  ;CLEARED EACH PASS IMPPAS: ENTSEC IMPLIN  ;CLEARED EACH LINE IMPLIN: ENTSEC XCTPRG  ;PROGRAM INITIALIZATION CODE XCTPRG: MOV #IMPURE,R .WORD NAME .ENDM PSTBAS:    ;BASE OPCDEF , 01, 170600, DR1, X45 OPCDEF , 01, 170600, DR1, X45 OPCDEF , 01, 005500, DR1 OPCDEF , 01, 105500, DR1 OPCDEF , 02, 060000, DR2 OPCDEF , 11, 172000, DR2, X45 OPCDEF , 11, 172000, DR2, X45 OPCDEF , 09, 072000, DR2, X45 OPCDEF , 09, 073000, DR2, X45 ECPRE GLIN;S  R0 LRC S RDWOO TRTVEON;C  R1 SRA E IVITOS PKEMA; 1 RG NE  XTNEF ORTTA;S  R1),R4(B SU  SSREDD ANGTIARST;1 ,R)+R4(V MO $: 1Y TRENT RSFIO ER;Z  5)(R LRC S LEAB TERMBNUK OCBLG INRTTA SND A; R5N,BKVR#O OVM K OCBLS ESDRADG INRTTA STOT INPO;4 ,RBLRTOV#V MO  CKLO/BDSOR WNGVIEA LO,TWE UNPR;+ P)(S+,P)(S MPC S TUTA SSTTE; K LNRN#T ATST. ) LYONE NC(OT NI;I  NKNLTR#T NI.I  ITIND/ILBUY LAEROV;   : LDRBOV ITWA., ANTR., OCLL.A K,OO.L T,TA.S T,çÿ" .AMODE .ADDR MOV #^O2,-(SP) EMT <^O41> .ENDM .MACRO .CORE MOV #^O100,-(SP) EMT <^O41> .ENDM .MACRO .MONR MOV #^O101,-(SP) EMT <^O41> .ENDM .MACRO .MONF MOV #^O102,-(SP) EMT <^O41> .ENDM .MACRO .DATE MOV #^O103,-(SP) EMT <^O41> .ENDM .MACRO .TIME MOV #^O104,-(SP) EMT <^O41> .ENDM .MACRO .GTUIC MOV #^O105,-(SP) EMT <^O41> .ENDM .MA#0 1$: CLR (R0)+  ;CLEAR IMPURE AREA CMP #IMPTOP,R0 BHI 1$ ENTSEC XCTPAS  ;PASS INITIALIZATION CODE XCTPAS: MOV #IMPPAS,R0 1$: CLR (R0)+  ;CLEAR IMPURE PART CMP #IMPTOP,R0 BHI 1$ ENTSEC XCTLIN  ;LINE INITIALIZATION CODE XCTLIN: MOV #IMPLIN,R0 1$: CLR (R0)+ CMP #IMPTOP,R0 BHI 1$ ENTSEC DPURE  ;MISCELLANEOUS D-SPACE PURE ENTSEC MIXED  ;MIXED MODE SECTOR ENTSEC SWTS$ OPCDEF , 01, 006300, DR1 OPCDEF , 01, 106300, DR1 OPCDEF , 01, 006200, DR1 OPCDEF , 01, 106200, DR1 OPCDEF , 04, 103000, OPCDEF , 04, 103400, OPCDEF , 04, 001400, OPCDEF , 04, 002000, OPCDEF , 04, 003000, OPCDEF , 04, 101000, OPCDEF , 04, 103000, OPCDEF , 02, 040000, DR2 OPCDEF , 02, 140000, DR2 OPCDEF , 02, NI.I LLCA.M  LDRBOV ECTSEN  AYVLOF DIF. ROACXM;  C ND.E  VRTOXI  MLXS;  C ND.E  ECTSXI  ,00D OR.W  L/SM/0 D5RA. / ACSMSY/0 D5RA.: ILLFSM ,04E YT.B  RRLESM RDWO. / SY/0 D5RA. 0 1, TEBY. / ML/S 50AD.R  0D OR.W K:LNML S0 RDWO. D XEMI ECTSEN  FT.I  ECTSXI  NTOU CIT HLLCA;M   KWBL.: NTLCSM ASPPIM ECTSEN  RNTURE  R0O TNTOU CD,HEISIN;F R0T,CNMLSV MO $: 3ãÿ&CRO .SYSDV MOV #^O106,-(SP) EMT <^O41> .ENDM .MACRO .RADPK .ADDR .MCALL .AMODE .AMODE .ADDR CLR -(SP) EMT <^O42> .ENDM .MACRO .RADUP .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O1,-(SP) EMT <^O42> .ENDM .MACRO .D2BIN .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O2,-(SP) EMT <^O42> .ENDM .MACRO .BIN2D .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O3,-(SP) EMT <^O42> .ENDM 'EC  ;SWITCH TABLE SWTBAS:    ;MARK THE BASE .MACRO GENSWT MNE,ADDR ;TO GENERATE ENTRIES ENTSEC SWTSEC XXX= . .ASCIZ /MNE/ .= XXX+2 .WORD ADDR XITSEC .ENDM ENTSEC EDTSEC  ;ENABLE/DSABLE ARGUMENTS EDTBAS: .MACRO GENEDT MNE,SUBR,INIT ENTSEC EDTSEC ED.'MNE= 1 .REPT <.-EDTBAS>/4 ED.'MNE= ED.'MNE+ED.'MNE .ENDR .GLOBL ED.'MNE .RAD50 /MNE/ .IF NB SUBR .WORD SUBR .IFF .WORD CPOPJ .ENDC XITSEC .IIF NB INIT, EDINIT= (050000, DR2 OPCDEF , 02, 150000, DR2 OPCDEF , 02, 030000, OPCDEF , 02, 130000, OPCDEF , 04, 003400, OPCDEF , 04, 103400, OPCDEF , 04, 101400, OPCDEF , 04, 002400, OPCDEF , 04, 100400, OPCDEF , 04, 001000, OPCDEF , 04, 100000, OPCDEF , 00, 000003,  , X45 OPCDEF 
, 04, 000400, OPCDEF , 04, 102000, OPCDEF , 04, $ 1R B T IEFCR;  F DERFC: 2$ NTOU CMPBU; T CNMLSC IN  ERNTOI PROZEH IT WRTSEIN;  T ERNSI D TEESERNT IOT ND,UNFO ; $ 2E BN  OSCRMAR FOT ES TK,;O   CHSRM H UGROTHF IITEX ; $ 3Q BE  NTMEGUART EX NCHET;F   RGSAG: 1$ TSENUMRG ALLCA MSTTE;   : STLTSM N URETR G LA FND EOR FTOIT;D  LGDFEN LRC D PEAP ZIST UNCOE UR SKEMA; T CNMLSR CL $: 5U ORRRE: 4$ TFIF. $ 10 BR  1]1, [RY TS,YE;6 ßÿ* .MACRO .O2BIN .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O4,-(SP) EMT <^O42> .ENDM .MACRO .BIN2O .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O5,-(SP) EMT <^O42> .ENDM .MACRO .CSI1 .CMDBF .MCALL .AMODE .AMODE .CMDBF EMT <^O56> .ENDM .MACRO .CSI2 .CSBLK .MCALL .AMODE .AMODE .CSBLK EMT <^O57> .ENDM .MACRO .DTCVT .ADDR .MCALL .CVTDT +EDINIT!ED.'MNE .ENDM GENEDT .IIF NDF EDINIT, EDINIT= 0 ENTSEC CNDSEC  ;CONDITIONAL TABLE SECTOR CNDBAS:    ;BASE OF CONDITIONAL ROLL .MACRO GENCND MNE, SUBR, TOGGLE ;GENERATE CONDITIONAL ENTSEC CNDSEC .RAD50 /MNE/ .IF B  .WORD SUBR .IFF .WORD SUBR+1 .ENDC XITSEC .ENDM XITSEC   ;UNNAMED IS STANDARD .SBTTL SUBROUTINE CALL DEFINITIONS .IF NDF TRAPS , 102400, OPCDEF , 00, 000257, OPCDEF , 00, 170000,  , X45 OPCDEF , 00, 000241, OPCDEF , 00, 000250, OPCDEF , 01, 005000, DR1 OPCDEF , 01, 105000, DR1 OPCDEF , 01, 170400, DR1, X45 OPCDEF , 01, 170400, DR1, X45 OPCDEF , 00, 000242, OPCDEF , 00, 000244, OPCDEF , 02, 020000, OPCDEF , 02, 120000, OPCDEF  .ENDM .MACRO .GTPLA CLR -(SP) MOV #^O5,-(SP) EMT <^O41> .ENDM .MACRO .STPLA .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O5,-(SP) EMT <^O41> .ENDM .MACRO .GTCIL / .MACRO GENCAL NAME ;CAN BE CHANGED TO OPDEFS OR TRAPS .MACRO NAME JSR PC,NAME .ENDM .ENDM .IFF ENTSEC TRPSEC  ;SET SECTOR FOR TRAPS TRPTBL:    ;MARK BASE XITSEC .MACRO GENCAL NAME ENTSEC TRPSEC .IRP OFFSET, <\.-TRPTBL> ;GENERATE NUMERIC TRP'OFFSET= TRAP+<.-TRPTBL> .WORD NAME .MACRO NAME +TRP'OFFSET .ENDM .ENDM XITSEC .ENDM .ENDC .IIF DF OVLAY, GENCAL CALOVR GENCAL SAVREG GENCAL EXPR GENCAL TERM G0CMPD >, 11, 173400,  , X45 OPCDEF , 11, 173400,  , X45 OPCDEF , 00, 000254, OPCDEF , 01, 005100, DR1 OPCDEF , 01, 105100, DR1 OPCDEF , 01, 005300, DR1 OPCDEF , 01, 105300, DR1 OPCDEF 
, 07, 071000, DR2, X45 OPCDEF , 11, 174400, DR2, X45 OPCDEF , 11, 174400, DR2, X45 OPCDEF , 06, 104000, OPCDEF , 00, 000000, OPCDEF , 01, 3$ EQB E AM NET GS,YE;  G ARGS  NO ; $ 2E BN  L?VELER TEOU; 3 ,R#1 MPC 3 RC IN  NTOU CMPBU, NO; 3 RC IN  ES Y;  2$ EQB ? SSUE GODGO;) R4,(DMEN#P CM  DMEN .MESUAS, ES;Y  R3 ECD F ROAC MND AALOC LOR FET;S R4E,LUVA#V MO  NO ; $ 2Q BE  M?ND/EROAC;M R0C,MAFL#D ITB E IVCTREDIR FOT ES;T  LITCSE LLCA  OF EIFT XI;E  3$ NEB E ONT GE; N LIETGL ALC E IN LEW NOR FITIN; N LICTXL ALC: 2$ ROZEO TNTOU CET;S  R3 LRC: 1$ LEFIE THN PE OK,;O IL×ÿ2 MOV #^O107,-(SP) EMT <^O41> .ENDM .MACRO .GTSTK CLR -(SP) MOV #^O4,-(SP) EMT <^O41> .ENDM .MACRO .STSTK .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O4,-(SP) EMT <^O41> .ENDM .MACRO .RUN .RNBLK .MCALL .AMODE .AMODE .RNBLK EMT <^O65> .ENDM .MACRO .FLUSH .CDE .MCALL .AMODE .AMODE .CDE EMT <^O67> .ENDM ; THE MACRO .AMODE ACCEPTS ONE ARGUMENT AND ; AS A FUNCTION OF THE ADDRESSING MODE OF ; THE ARGUMENT GENERATES THE3ENCAL RELEXP GENCAL RELTST GENCAL ABSEXP GENCAL ABSTST GENCAL ABSERR GENCAL GLBEXP GENCAL GETSYM GENCAL SETSYM GENCAL GETR50 GENCAL SETR50 GENCAL TSTR50 GENCAL GETNB GENCAL SETNB GENCAL GETCHR GENCAL SETCHR GENCAL GSARG GENCAL TSTARG GENCAL SETIMM GENCAL SETDSP GENCAL STCODE GENCAL SSRCH GENCAL OSRCH GENCAL MSRCH GENCAL LSRCH GENCAL SETPF0 GENCAL SETPF1 GENCAL DNC GENCAL CVTNUM GENCAL R4005200, DR1 OPCDEF , 01, 105200, DR1 OPCDEF , 00, 000004, OPCDEF , 01, 000100, OPCDEF , 05, 004000, DR1 OPCDEF , 11, 177400, DR2, X45 OPCDEF , 11, 177400, DR2, X45 OPCDEF , 14, 177000, DR2, X45 OPCDEF , 14, 177000, DR2, X45 OPCDEF , 14, 177000, DR2, X45 OPCDEF , 14, 177000, DR2, X45 OPCDEF , 11, 172400, DR2, X45 OPCDEF , 14LFSM,#NKLLSM#N PE.O $:10 NKLLSM#T NI.I  +6ILLFSM LRC R ROER, NO ; $ 4E BN  E?ONS AS PE,OM SNDOU;F  SSPA STT D TEENEMPLIMT NOF IORRR;E  MLXS DF NIF. E ON NIFH NCRA B;  5$ EQB S NTMEGUARD NEFIDEUNR FOT ES;T  STLTSM LLCA  6R OVNTE : LLCA M L ALMC;.  LLCAML OBGL. ECTSXI  TSBIL BOYM SEDATEREN GROAC;M   KWBL.: SBCGMA 2W LK.B M:NAAC MW LK.B X:MARG AW LK.B T:CNON CT UNCOL VELEO CRMA;  W LKÓÿ6 APPROPRIATE ; MOV TO -(SP). ; ADDRESS MODES THAT ARE TROUBLESOME (E.G. ; X(SP)) OR UNLIKELY (E.G. SP) WILL RESULT ; IN A .ERROR TO CMO INCLUDING THE ; VALUE OF THE ADDRESS MODE (E.G. X(SP) ; IS REPRESENTED AS 000066), THE ARGUMENT ITSELF ; AND THE TEXT "ADDRESSING MODE ILLEGAL AS SYSTEM ; MACRO ARGUMENT". ; .MACRO .AMODE .ARG SP=%^O6 .NTYPE .SYM,.ARG ;.SYM=ADDRESS MODE. .IF LE,.SYM-^O5 MOV .ARG,-(SP) ;R0 TO R5 .MEXIT .ENDC .IF EQ,.SYM&^O70-^O10 .IF LE,.SYM&^O7-750UNP GENCAL MOVBYT .MACRO SAVXPR  ;SAVE REGS AND SET EXPRESSION REGS JSR R4,SAVXPR .ENDM GENCAL SETXPR .IF NDF PDPV45 .MACRO MUL SRC,DST .IIF DIF ,, .PRINT ;ILLEGAL ARGS CALL MUL .ENDM .MACRO DIV SRC,DST .IIF DIF ,, .PRINT ;ILLEGAL ARGS CALL DIV .ENDM .MACRO SOB REG,ADDR DEC REG BNE ADDR .ENDM .ENDC G, 176400, DR2, X45 OPCDEF , 11, 172400, DR2, X45 OPCDEF , 01, 170100,  , X45 OPCDEF , 00, 170004,  , X45 OPCDEF , 00, 170003,  , X45 OPCDEF , 10, 006400,  , X45 OPCDEF , 01, 106500,  , X45 OPCDEF , 01, 006500,  , X45 OPCDEF , 11, 171400, DR2, X45 OPCDEF , 11, 171400, DR2, X45 OPCDEF , 02, 010000, DR2 OPCDEF , 02, 110000,.B L:LVAC MW LK.B T:NXAC M E AGORSTD REDEORF OND;E    D:ENSB MR TEINPOD EA RROAC;M   KWBL.: RPBMMS C.ET, NTOU CATPERE; 2 KWBL.: NTBCMS CKLO BRG ATOR TEINPO;  W LK.B G:ARSB MK OCBLT EX TICAS BTOR TEINPO;  W LK.B T:TXSB MR TEINPOK OCBLS OUVIRE;P   KWBL.: BPBPMS PETYK OCBL;  W LK.B P:TYSB M) EDERRD OBET US(MK OCBLE BLHAUS;P    K:BLSB ME URMPIC SENTE N URETR T UNCOL VELET ENEMCRDE; L LVACMC DE  ITOSEP DOR FCKLO BRNTURE; C MAEMRL ALC K IN LARLE;C  0)ÏÿE^O6 MOV .ARG,-(SP) ;@R0 TO @R6 .MEXIT .ENDC .ENDC .IF EQ,.SYM&^O60-^O20 MOV .ARG,-(SP) ;[@](R0)+ TO [@](R7)+ .MEXIT   ; #N,@#ADDR .ENDC .IF EQ,.SYM&^O40-^O40 .IF LE,.SYM&^O7-^O5 MOV .ARG,-(SP) ;[@]-(R0) TO [@]-(R5) .MEXIT   ;[@]X(R0) TO [@]X(R5) .ENDC .ENDC .IF EQ,.SYM&^O67-^O67 MOV .ARG,-(SP) ;ADDR AND @ADDR .MEXIT .ENDC .ERROR .SYM  ;.ARG ADDRESSING MODE ILLEGAL .PRINT   ;AS SYSTEM MACRO ARGUMENT. .ENDM ; THE MAF    ;ROLL HANDLER CALLS .MACRO SEARCH ROLNUM ;BINARY SEARCH MOV #ROLNUM,R0 CALL SEARCH .ENDM .MACRO SCAN ROLNUM ;LINEAR SCAN MOV #ROLNUM,R0 CALL SCAN .ENDM .MACRO SCANW ROLNUM ;LINEAR SCAN, ONE WORD MOV #ROLNUM,R0 CALL SCANW .ENDM .MACRO NEXT ROLNUM ;FETCH NEXT ENTRY MOV #ROLNUM,R0 CALL NEXT .ENDM .MACRO APPEND ROLNUM ;APPEND TO END OF ROLL MOV #ROLNUMDDDDDDD ¨»»ªªªª@fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff€ˆˆˆˆADD€€B B CkÐŽ4du›»zkQÔxuE›kQØrÑÀu› gÑÀug›•€%ÑÀuHRŒ›$DÿÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffffffffffffffffffffffÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCRO .CODE SETS UP THE FILEBLOCK ; WITH THE HOW OPEN CODE. ; THE ADDRESS OF THE FILEBLOCK MUST ; BE IN A REGISTER (R0 TO R5) .MACRO .CODE .FBLK,.N .NTYPE .SYM,.FBLK .IF LE,.SYM-^O5 MOVB #.N,-^O2(.FBLK) ;R0 TO R5 .MEXIT .ENDC .ERROR .SYM  ;.FBLK ADDRESSING MODE ILLEGAL .PRINT   ;FOR .OPEN FILE BLOCK .ENDM J,R0 CALL APPEND .ENDM .MACRO ZAP ROLNUM ;CLEAR ROLL MOV #ROLNUM,R0 CALL ZAP .ENDM GENCAL INSERT  ;INSERT (MUST BE PRECEDED BY ONE OF    ;THE ABOVE TO SET POINTERS) .IF NDF XCREF GENCAL CRFREF  ;CROSS REFERENCE A SYMBOL GENCAL CRFDEF  ;DITTO, DEFINING IT .IFF .MACRO CRFREF  ;DUMMY IF NO CREF .ENDM .MACRO CRFDEF .ENDM .ENDC .MACRO CALL ADDRESS JSR PC,ADK DR2 OPCDEF , 01, 106600, DR1, X45 OPCDEF , 01, 006600, DR1, X45 OPCDEF , 07, 070000, DR2, X45 OPCDEF , 11, 171000, DR2, X45 OPCDEF , 11, 171000, DR2, X45 OPCDEF , 01, 005400, DR1 OPCDEF , 01, 105400, DR1 OPCDEF , 01, 170700, DR1, X45 OPCDEF , 01, 170700, DR1, X45 OPCDEF , 00, 000240, OPCDEF , 00, 000005, OPCDL .TITLE CREF V004A 06-JUN-72 ; COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION R0= %0 R1= %1 R2= %2 R3= %3 R4= %4 R5= %5 SP= %6 PC= %7 .CSECT   ;INIT SECTIONS PRGBEG:    ;START OF PROGRAM HELLO: .ASCIZ  /CREF V004A / ;INTRO MESSAGE .EVEN .MACRO LDRMAP MNE ;PUT SUPPRESSED ITEMS ON LOADER MAP .IF DF MNE .LIST .GLOBL MNE .NLIST .ENDC .ENDM .MCALL .CLOSE, .CSI1, .CSI2, .DELET .MCALL .EXIT, .INIT, .MONF,(R LRC K OCBLR FE;X K>BLSB-MNDBEMS- BIS #ERR.'ARG,ERRBTS .ENDM .MACROOEF , 01, 006100, DR1 OPCDEF , 01, 106100, DR1 OPCDEF , 01, 006000, DR1 OPCDEF , 01, 106000, DR1 OPCDEF , 00, 000002, OPCDEF , 03, 000200, DR1 OPCDEF , 00, 000006,  , X45 OPCDEF , 01, 005600, DR1 OPCDEF , 01, 105600, DR1 OPCDEF , 00, 000277, OPCDEF , 00, 000261, OPCDEF , 00, 000270, OPCDEF , 00, 170011,  , X45 OPP .OPEN, .READ .MCALL .RLSE, .RSTRT, .STAT, .TRAP, .WAIT .MCALL .WRITE, .LOOK .IF NDF DOSV4 .MCALL .FLUSH, .RUN, .STSTK .IFF .MACRO .FLUSH CODE .ENDM .MACRO .STSTK ADDR .ENDM .ENDC .SBTTL SECTOR INITIALIZATION .CSECT IMPURE  ;IMPURE STORAGE AREA IMPURE: .CSECT IMPPAS  ;CLEARED EACH PASS IMPPAS: .CSECT IMPLIN  ;CLEARED EACH LINE IMPLIN: .CSECT XCTPRG  ;RE  NTOU CELEV LMPBU; L LVACMC IN  ERNTOI PCKLO BUSIOEVPRD AN ;+ 2)(R+,P)(S OVM E YP TVESA;+ 2)(R5,RV MO  ONTINATIES DRECOE AK MS,YE;2 ,R)+SP(V MO  NO ; $ 1E BN  H?UGROTH;1 ,RNDBEMS#P CM  OTSLE OR CARLE;C  )+R1(R CL  EMITN AERXF;+ 2)(R),R1(V MO $: 1S ERNTOI PRECOD AN ;) SP-(1,RV MO  ONTINATIES DVESA;) SP-(2,RV MO  PETYTORO POFT ARSTO TERNTOI;P R1K,BLSB#M OVM T ARSTO TNTOI;P  2)(R-T TS  CKLO BGERATO S AET;G  LKTBGE LLCA  ELEV LNGTIES NROAC MSH·ÿR BRJMP ADDR .IF GE .- .IF LE .--254. BR ADDR .MEXIT .ENDC .ENDC JMP ADDR .ENDM .MACRO CHSCAN TABLE ;CHARACTER SCAN JSR R5,CHSCAN .WORD TABLE .ENDM .MACRO GCHTBL CHAR, ADDR ;GEN CHARACTER SCAN TABLE .BYTE ADDR-.-2, CHAR .ENDM ENTSEC TXTBYT ERRMNE: .IRPC CHAR, < ABEILMNOPQRTUZ> ERR.'CHAR= 1 .REPT <.-ERRMNE> ERR.'CHAR= ERR.'CHAR+ERR.'CHAR .ENDR SCDEF , 00, 170001,  , X45 OPCDEF , 00, 170002,  , X45 OPCDEF , 00, 170012,  , X45 OPCDEF , 00, 000262, OPCDEF , 00, 000264, OPCDEF , 08, 077000, DR1, X45 OPCDEF , 13, 000230,  , X45 OPCDEF , 00, 170005,  , X45 OPCDEF , 00, 170006,  , X45 OPCDEF , 12, 176000, DR2, X45 OPCDEF , 12, 175400, DR2, X45 OPCDEF , 12, 1754TPROGRAM INITIALIZATION CODE XCTPRG: MOV #IMPURE,R0 1$: CLR (R0)+  ;CLEAR IMPURE AREA CMP #IMPTOP,R0 BHI 1$ .CSECT XCTPAS  ;PASS INITIALIZATION CODE XCTPAS: MOV #IMPPAS,R0 1$: CLR (R0)+  ;CLEAR IMPURE PART CMP #IMPTOP,R0 BHI 1$ .CSECT XCTLIN  ;LINE INITIALIZATION CODE XCTLIN: MOV #IMPLIN,R0 1$: CLR (R0)+ CMP #IMPTOP,R0 BHI 1$ .CSECT MIXED  ;MIXED MODE SECTOR .CSECTPU;   : SHPUM RNTURE X:MAEM RT NXAC,M)+SP(V MO  0)(RT,NXACMV MO $: 2 $ 1R B K IN LO,;N  R0),R0(V MO  ES Y;  2$ EQB ? INHA COFD EN; ) R0(T TS $: 1R TEINPOE AV;S P)(S,-R0 OVM: ACMMRE VETIGANEN-NOF IITEXT US;J  AXMMRE PLB E AGORSTO CRMAT ENEMCRDE; ) R02( ECD: ACCMDE RNTURE  CEENEREF RROAC MNTMERENC;I  0)(R2C IN C:MANC I N URETR T ISTPAT INPO, LLCEK IN LARLE;C  )+R2(R CL  R20,R³ÿV.ASCII /CHAR/ .ENDM XITSEC .MACRO SETNZ ADDR ;SET ADDR TO NON-ZERO FOR T/F FLAGS MOV SP,ADDR .ENDM .MACRO INIT FILE ;INIT A FILE MOV #FILE'CSI,R4 CALL INIT .ENDM .MACRO OPENO FILE ;OPEN AN OUTPUT FILE MOV #FILE'CSI,R4 CALL OPENO .ENDM .MACRO WAITOF LNKBLK,BUFHDR ;WAIT ON OUTPUT FILE JSR R5,WAITOF .WORD LNKBLK,BUFHDR+2 .ENDM .IF DF DEBUG .MACRO EMT NUMBER ;TRAP THE EMT'S MOV #104000+NUMBER,-(SP) CALL TSTEMT W00, DR2, X45 OPCDEF , 12, 176000, DR2, X45 OPCDEF , 12, 175400, DR2, X45 OPCDEF , 12, 175400, DR2, X45 OPCDEF , 12, 174000, DR2, X45 OPCDEF , 12, 175000, DR2, X45 OPCDEF , 12, 174000, DR2, X45 OPCDEF , 01, 170200, DR1, X45 OPCDEF , 00, 170007,  , X45 OPCDEF , 01, 170300, DR1, X45 OPCDEF , 02, 160000, DR2 OPCDEF , 11, 173000, DR2, X SWTSEC  ;SWITCH TABLE SWTBAS:    ;MARK THE BASE .MACRO GENSWT MNE,ADDR ;TO GENERATE ENTRIES .CSECT SWTSEC XXX= . .ASCIZ /MNE/ .= XXX+2 .WORD ADDR .CSECT .ENDM .IF DF FUTURE .CSECT EDTSEC  ;ENABLE/DSABLE ARGUMENTS EDTBAS: .MACRO GENEDT MNE,SUBR,INIT .CSECT EDTSEC ED.'MNE= 1 .REPT <.-EDTBAS>/4 ED.'MNE= ED.'MNE+ED.'MNE .ENDR .RAD50 /MNE/ .IF NB SUBR .WORD SUBR .IFF .WORD CPOPJ .ENDC .CSECT .IIF NB INIT, EDINV MO $: 2N AICHW NET SE;T NXAC,M0)(R OVM: 1$ NO; 7 21 ORRRSE  ES Y;  2$ HIB ? OMRO;) R2,(+0ASLBRO MPC P TOW NEE UTMPCO;) R2,(MBBP#D AD  R0),R2(V MO  GERATO SOFP TOO TNTOI PO,;N R2P,TOAC#M OVM T ISE US,YE ; $ 1E BN  GEBAAR GINK OCBLR FOT ES;T R0T,NXACMV MO  CKLO BROAC M AET;G    K:BLET G N URETR T SES AGFLG INAVLE, TERI;W )+R2,(R5 VBMO $: 3+ P)(S STT K IN LEW NET;S P)(S,@R0 OVM K BLETGL ALC ) SP-(2,RV MO  NKLIO TNTOI PO,;N R2B,PM#B UBS¯ÿZ .ENDM .ENDC .SBTTL PARAMETERS TAB= 11 LF= 12 VT= 13 FF= 14 CR= 15 SPACE= 40 CH.IOR= '! CH.QTM= '" CH.HSH= '# CH.DOL= '$ CH.PCT= '% CH.AND= '& CH.XCL= '' CH.LP= '( CH.RP= ') CH.MUL= '* CH.ADD= '+ CH.COM= ', CH.SUB= '- CH.DOT= '. CH.DIV= '/ CH.COL= ': CH.SMC= '; CH.LAB= '< CH.EQU= '= CH.RAB= '> CH.QM= '? CH.IND= '@ CH.BSL= '\ CH.UAR= '^ LET.A= 'A LET.B= 'B L[X45 OPCDEF , 11, 173000, DR2, X45 OPCDEF , 01, 000300, DR1 OPCDEF , 01, 006700, DR1, X45 OPCDEF , 06, 104400, OPCDEF , 01, 005700, OPCDEF , 01, 105700, OPCDEF , 01, 170500,  , X45 OPCDEF , 01, 170500,  , X45 OPCDEF , 00, 000001, OPCDEF , 05, 074000, DR2, X45 DIRDEF , DFLGBM \IT= EDINIT!ED.'MNE .ENDM GENEDT .IIF NDF EDINIT, EDINIT= 0 .ENDC .CSECT   ;UNNAMED IS STANDARD .SBTTL SUBROUTINE CALL DEFINITIONS .MACRO GENCAL NAME ;CAN BE CHANGED TO OPDEFS OR TRAPS .MACRO NAME JSR PC,NAME .ENDM .ENDM GENCAL SAVREG GENCAL GETSYM GENCAL SETSYM GENCAL GETR50 GENCAL SETR50 GENCAL TSTR50 GENCAL GETNB GENCAL SETNB GENCAL GETCHR GENCA  ES Y;  3$ NEB ? CKLO BISTHN IOMRO;2 ,R-1MBBP#T BI $: 2T CNONCR CL $: 1 T IMWC BR  R5+,P)(S OVM $ 2L ALC 5 ,RCL.XCH#V MO  ERCTRAHA CNTREUR CCKTA SS,YE;) SP-(5,RV MO  NO ; $ 1I BM  G?INNDPES ARCHN IOATENATNCCOY AN; T CNONCC DE  EETRO CRMAN IERCTRAHA CTERI;W    T:IMWC C SEITX S IRPAE OR MOR FOMRO; 2 3* KWBL. F ELTS IERCTRAHA;C  1W LK.B  ERCTRAHA CD"WEROOR"BO TERNTOI;P  1W LK.B K:«ÿ^ET.C= 'C LET.D= 'D LET.E= 'E LET.F= 'F LET.G= 'G LET.O= 'O LET.Z= 'Z DIG.0= '0 DIG.9= '9 DEFFLG= 000010 RELFLG= 000040 GLBFLG= 000100 REGFLG= 000001 LBLFLG= 000002 MDFFLG= 000004    ;RLD TYPES RLDT00= 00 ; ABSOLUTE DATA RLDT01= 01 ; INTERNAL RELOCATION  TST #C RLDT02= 02 ; GLOBAL RELOCATION  TST #G RLDT03= 03 ; INTERNAL DISPLACED RELOCATION TST ABS RLDT04= 04 ; GLOBAL DISPLACED_DIRDEF , DFLGBM DIRDEF  DIRDEF  DIRDEF , DFLGEV DIRDEF , DFLGBM DIRDEF  DIRDEF  DIRDEF  DIRDEF  DIRDEF , DFLCND DIRDEF , DFLMAC, XMACRO DIRDEF , DFLMAC, XMACRO DIRDEF  DIRDEF  DIRDEF  DIRDEF , DFLGEV, XFLTG DIRDEF , DFLGEV, XFLTG DIRDEF  DIRDEF  DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF  DIRDEF , DFLMAC, XMACRO DIRDEF , DFLMAC, XMACRO DIRDEF , NO; £ÿf04*400  ; SYMBOL DECLARATION GSDT05= 05*400  ; LOCAL SECTION NAME GSDT06= 06*400  ; VERSION IDENTIFICATION BLKT01= 01  ;GSD BLKT02= 02  ; GSD END BLKT03= 03  ; TEXT BLOCK BLKT04= 04  ; RLD BLOCK BLKT05= 05  ; ISD BLKT06= 06  ; MODULE END OCTLEN= ^D<8*6> LINLEN= SRCLEN OBJLEN= 42. RLDLEN= 42. BPMB= 8.*2  ;BYTES PER MACRO BLOCK SB.ILE= 001  ;INVALID LINE ERROR SB.CSE= 002  ;CHECK SUM ERROR SB.PFE= 004  ;PARITY FORMAT ERROR SB.DPE= 040  ;DEgMIT>, DFLGEV DIRDEF  DIRDEF , DFLMAC, XMACRO DIRDEF , DFLMAC, XMACRO DIRDEF , DFLSMC, XMACRO DIRDEF  , , XMACRO DIRDEF  , , XMACRO DIRDEF  , , XMACRO DIRDEF  DIRDEF  , , XMACRO DIRDEF  DIRDEF  DIRDEF  DIRDEF  DIRDEF , DFLGEV DIRDEF  DIRDEF , DFLMAC, XMACRO DIRDEF  DIRDEF  .ENDM .MACRO SETNZ ADDR ;SET ADDR TO NON-ZERO FOR T/F FLAGS MOV SP,ADDR .ENDM .MACRO INIT FILE ;INIT A FILE MOV #FILE'CSI,R4 CALL INIT .ENDM .MACRO OPENO FILE ;OPEN AN OUTPUT FILE MOV #FILE'CSI,R4 CALL OPENO .ENDM .SBTTL PARAMETERS TAB= 11 LF= 12 VT= 13 FF= 14 CR= 15 S4 ,RR5 MPC S YE ; $ 12 EQB ? <" "; 3 ,RR5 MPC L EOF IORRR E;  0$2Q BE  HRTCGE $:11 NTLEVAUIEQ" ">; 4 ,RR5 OVM T ENALIVQU E<" "NO; 3 RM CO  ERNTOI PEW NET;S P)(S),R2(V MO  LLNUF IORRR;E  0$2Q BE  ITS ASYP B","^;   NBETG: 0$ 1 $ 1R B N OVEMO, ES;Y   HRTCGE  NO ; $ 21 EQB ? ERCTRAHA CNGTIINPR;) R5L(TBCTC,SMT.-COM.CCTC-.PCT#B ITB: 1$ ES Y;  0$1Q BE  W?ROARP-;U AR.UCH,#R5 MPC S YE ; $ 11 EQB ? UETR; 3 ,RR5 MPC 4 ,RAB.RCH#ŸÿjVICE PARITY ERROR SB.EOF= 100  ;EOF SB.EOM= 100  ;EOM    ;DIRECTIVE FLAGS DEFINED IN PST .GLOBL DFLCND, DFLMAC, DFLGEV, DFLGBM, DFLSMC .SBTTL ROLL DEFINITIONS .MACRO GENROL NAME, BASE, TOP, SIZE ENTSEC ROLBAS NAME'ROL= .-ROLBAS .WORD BASE ENTSEC ROLTOP .WORD TOP ENTSEC ROLSIZ .WORD SIZE*2 XITSEC .ENDM ENTSEC ROLBAS  ;ROLL BASE ROLBAS: ENTSEC ROLTOP  ;ROLL TITLE> WRDSYM: DIRDEF , DFLGEV PSTTOP:    ;TOP LIMIT .END lPACE= 40 CH.IOR= '! CH.QTM= '" CH.HSH= '# CH.DOL= '$ CH.PCT= '% CH.AND= '& CH.XCL= '' CH.LP= '( CH.RP= ') CH.MUL= '* CH.ADD= '+ CH.COM= ', CH.SUB= '- CH.DOT= '. CH.DIV= '/ CH.COL= ': CH.SMC= '; CH.LAB= '< CH.EQU= '= CH.RAB= '> CH.QM= '? CH.IND= '@ CH.BSL= '\ CH.UAR= '^ LET.A= 'A LET.E= 'E LET.F= 'F LET.G= 'G LET.Z= 'Z DIG.0= '0 DIG.9= '9 CR.VER= 001 CR.PAG= 002 CV MO  >"" /MACRO V/ ;INTRO MESSAGE GVNUM    ;GENERATE VERSION NUMBER .ASCIZ / / ENTSEC MIXED PRGLIM: .LIMIT   ;OVER-WRITTEN BY OVRBLD XITSEC CONT2: PUTKB HASH  ;TYPE "#" MOV #CMIHDR+6,R1 MOV #CMILEN,-(R1) CLR -(R1) MOV #CMILEN,-(R1) .READ #CMILNK,R1 .WAIT #CMILNK TSTB 3(R1)  ;EOF? BEQ 9$  ; NO .EXIT   ;YES,GOOD-ˆ 4$ .=4$ .ENDC .WRITE #CODLNK,#HASH ;SPECIAL (NO CR/LF) .WAIT #CODLNK  ;WAIT ON KB MOV #CIDHDR+6,R1 MOV #CIDLEN,-(R1) CLR -(R1) MOV #CIDLEN,-(R1) .READ #CIDLNK,R1 .WAIT #CIDLNK .CSI1 #CMDBUF MOV (SP)+,R2 ;GET ERROR FLAG BEQ 10$  ; OK MOVB #CH.QM,(R2)+ ;ERROR, SET "?" CLRB (R2)  ; AND TERMINATOR MOV #1,R0 MOV #CIDBUF,R1 CALL PUTLIN .FLUSH #1 BR CONT CL  6R OVNTE : MTROP VRTOXI  ITEXD ANE RE TINE ITWR; T IMWC MPJ I CIASO TRTVEON;C R50,G.DI#D AD  ERMBNUT GE; 5 ,R)+SP(V MO $:41 SEUREC RO, N;  0$4L ALC ? ROZEO TWNDO; $ 41 EQB R BEUM NEW NET;S  R10,RV MO  ERNDAIEM RCKTA;S P)(S,-R1 OVM 0 ,RR3 IVD 0 RR CL  ERRTVEON CERMBNUO CRMA;   : 0$ 4 C ND.E  RNTURE; $ 4R B 5 ,R)+SP(V MO  GSREE ORSTRE;3 ,R)+SP(V MO  MTCIWL ALC 5 RR ÿŠBYE 9$: MOVB CMIBUF,R5 ;FETCH FIRST CHAR TSTB CTTBL(R5) ;EOL? BEQ 8$  ; YES, IGNORE .CSI1 #CMDBUF MOV (SP)+,R2 ;GET ERROR FLAG BEQ 10$  ; OK MOVB #CH.QM,(R2)+ ;ERROR, SET "?" CLRB (R2)  ; AND TERMINATOR PUTKB CMIBUF .FLUSH #1 8$: JMP CONT 10$: MOV #CMDBUF,R1 MOV #CMDSAV,R2 CALL XMIT7  ;SAVE INITIAL CMD HEADER MOV #2,CMDBUF INIT OBJ  ;PROCESS OBJECT FIRST MOV R2,-(SP) ;STACK BUFFER SIZE ASR R1  ;ANY MORE OUTPUT FIEŒ 10$: MOV #CMDBUF,R1 MOV #CMDSAV,R2 CALL XMIT7  ;SAVE INITIAL CMD HEADER MOV #2,CMDBUF CONT2: CLR -(SP) INIT LST  ;YES, PROCESS LISTING FIELD BEQ 12$  ;BRANCH IF EMPTY ADD R2,(SP)  ;OK, UPDATE BUFFER SIZE MOVB #1,LLTBL+2 ;ASSUME KB BIT #000400,R3 ;TRUE? BNE 12$  ; YES MOVB #2,LLTBL+2 ;NO MOVB #3,LLTBL+3 12$: .IF DF FUTURE MOV #LCSAVE,R1 ;SAVE CURRENT LISTING FLAGS MOV #LCSBAK,R2 CALL XMIT0-LCSAVL MOV EDMASK,EDMBAK ;DITCL  $" "TERI;W  MTCIWL ALC 5 ,ROL.DCH#V MO  IISC ATOT ERNVCO; $ 40 LLCA  ALIMEC DITE AK;M  R3.,10#V MO  R3D AN;) SP-(3,RV MO  ARCHT ENRRCUK ACST;) SP-(5,RV MO  4. 6ATT ARST;1 ,R1>4-<6^D#D AD  ITH TCFE;1 ,RASGBLS OVM T UNCOP UM BL,BOYM SEDATEREN;G  ASGBLS NCI: 0$ 3B LSEDXF NDF .I  5$ BR  R5+,P)(S OVM S EG RRETOES;R R3+,P)(S OVM T IMWC LLCA  R5 LRC I CIASO TRTVEON;C  0$4L ALC 1 RTOE LUVA; 1 ,RR0 OVM X DIRAT ENRRCUN IUT OAKRE;B R3X,DI{ÿŽLDS? BCS 11$  ; NO INIT LST  ;YES, PROCESS LISTING FIELD BEQ 21$  ;BRANCH IF EMPTY ADD R2,(SP)  ;UPDATE BUFFER SIZE INCB LLTBL+2  ;ASSUME TERMINAL BIT #000400,R3 ;TRUE? BNE 21$  ; YES MOV #2+<3*400>,LLTBL+2 ;NO, SET FOR LP 21$: ASR R1 BCS 11$  ;BRANCH IF LAST SPEC SERROR 204  ; NO, ERROR 11$: .IF NDF XCREF TST CRFFLG  ;CREF REQUESTED? BEQ 12$  ; NO .INIT #CTO FOR ENABL/DSABL FLAGS .ENDC CLR CMDBUF  ;SET FOR INPUT CLR -(SP)  ;INIT FOR MONF 13$: INIT SRC  ;SET FOR SOURCE BNE 14$  ;BRANCH IF NON-NULL SERROR 206  ;YOU LOSE!! 14$: .MONF   ;CHECK TH MONITOR SIZE ADD (SP)+,R2 ;ADD TO BUFFER SIZE CMP R2,(SP)  ;NEW HIGH? BLOS 15$ MOV R2,(SP)  ; YES, SAVE IT 15$: .RLSE #SRCLNK  ;RELEASE DEVICE CLR SRCLNK ASR R1  ;ANY MORE? BCC 13$  ; YES RACV MO  P)(S,-R3 OVM R TEACARCHK ACST;) SP-(5,RV MO  BS AN,IOSSREXP ETEUAALEV;  P EXBSA S ASYP B","\;   NBETG: 0$2 RNTURE  R0+,P)(S OVM: 2$ 1G LACF,LMCC.#L ISB: 1$ 1 $ 12 BR  ELAB LLYONT IS LS,YE;L NDCE,LR0 OVM E IN LRETIENS ESPRUP SO, N;  1$1Q BE  L?BELAA E WVEHA, ES;Y R0D,ENBLLV MO  NO ; $ 12 EQB ? ONSIESPRUP SLLCAO CRMA;K ASCM,LMCC.#L ITB 5 RM CO  MTCIWL ALC 5 RM CO $:10 wÿ’RFLNK  ;YES, INIT IT .STAT #CRFLNK CMP (SP)+,(SP)+ ;THROW AWAY TOP TWO ASL (SP)  ;BYTES TO WORDS ADD (SP)+,(SP) ;ADD IN SIZE .ENDC 12$: MOV #LCSAVE,R1 ;SAVE CURRENT LISTING FLAGS MOV #LCSBAK,R2 CALL XMIT0-LCSAVL MOV EDMASK,EDMBAK ;DITTO FOR ENABL/DSABL FLAGS CLR CMDBUF  ;SET FOR INPUT MOV (PC)+,@(PC)+ ;SET DEFAULT FILE NAME .RAD50 /TEM/ .WORD DEFNAM MOV (PC)+,@(PC)+ .RAD50 /P / .WORD DEFNAM+2 CLR -(SP)  ;INIT FOR MONF ” OPENO LST  ;OPEN LISTING FILE ADD (SP)+,(SP) ;ADD INPUT SIZE TO OUTPUT ADD #STKSIZ+BPMB,(SP) ;LEAVE ROOM FOR STACK BIC #BPMB-1,(SP) ;MACRO BLOCKS MUST BE MODULO MOV (SP),MACTOP ;SET FINAL MACRO BASE MOV (SP),MACTOP+2 MOV (SP),SP  ; AND STACK BASE .STSTK MACTOP CALL PROP1  ;CALL THE ASSEMBLER FIN: MOV #FINTBL,R1 1$: MOV (R1)+,R2 TST (R2) BEQ 2$ .CLOSE R2 6$ BR  MTCIWL ALC 5 RR CL  0$1Q BE  MTCIWL ALC: 7$ HRTCGE  NTGCAR NCI: 6$ 1$ BR  NE OEROVT BIN IOATEREN GVEMO; B GSACML AS $: 5G ARRM LLCA $: 4 $ 3R B R CHETG $ 4Q BE  MTCIWL ALC: 3$ $: 2C ND.E  ES Y;  0$3I BM  D?TEESQUREN IOATEREN GO,;N  SBCGMA STT B LSEDXF NDF .I  ES Y;  2$ NEB ? TSENUMRG ANY;A  R5 STT T ENUMRG AET;G  GFARGM LLCA  ES Y;  0$2Q BE  "?"\; R5L,BSH.#C MPC: 9$ GHOUHR TO, N;  0$1Q BE  T?EF LFFTU SEDATERsÿ–CONT4: 13$: INIT SRC  ;SET FOR SOURCE BNE 14$  ;BRANCH IF NON-NULL SERROR 206  ;YOU LOSE!! 14$: .MONF   ;CHECK TH MONITOR SIZE ADD (SP)+,R2 ;ADD TO BUFFER SIZE CMP R2,(SP)  ;NEW HIGH? BLOS 15$ MOV R2,(SP)  ; YES, SAVE IT 15$: .RLSE #SRCLNK  ;RELEASE DEVICE ; CLR SRCLNK MOV SRCFIL,R0 ;GET SOURCE FILE NAME BEQ 16$  ; BRANCH IF NULL MOV R0,DEFNAM ;NON-NULL, SET DEFAULT NAME ˜CMP R2,#SRCLNK BNE 3$ TST PROTEC BNE 3$ .DELET R2,#SRCFIL 3$: .RLSE R2 2$: CMP R1,#FINTBE BNE 1$ .IF NDF DOSV4 TST RUNFLG BNE 4$ .IFTF JMP CONT .IFT 4$: .RLSE #CODLNK .RUN #RUNBLK HALT .CSECT MIXED RUNBLK: .WORD 040023 .WORD RUNFIL .WORD RUNLNK .WORD 0 .WORD 0 RUNLNK: .WORD 0 .RAD50 /RUN/ .WORD 1 .RAD50 /SY/ .WORD 0 .WORD 4 RUNFIL: .RAD50 /MACRO / .RAD50 / / .BYTE 0,0 .WORD EN GNY AL,UL;N  SBCGMA STT L UL-NON NIFK ;O  9$ NEB A MMCOY ANS ASYP;B   RGTATS  0$1S LOB T CNRG,AAXGMAR MPC: 1$ 7$ NEB 3 RT TS  P)(S,-R0 OVM K BLETGL ALC T CNRGAR CL  6R OVNTE : CFOMPR R3 LRC: MCROP VRTOXI  RNTURE  CKTA SNERU;P  )+SP(T TS $: 3 $ 1R B T BIM SYD TERANEGET IFSH; ) SP(R RO  LCC L OL RMA DTOD ENPP;A  OLARDM NDPEAP  NTMEGUARC LIBOYM SET;G  GFARGS LLCA $: 2T oÿšMOV SRCFIL+2,DEFNAM+2 16$: ASR R1  ;ANY MORE? BCC 13$  ; YES MOV (PC)+,R5 ;SET DEFAULT LISTING EXTENSION .RAD50 /LST/ OPENO LST  ;OPEN LISTING FILE ADD (SP)+,(SP) ;ADD INPUT SIZE TO OUTPUT ADD #STKSIZ+BPMB,(SP) ;LEAVE ROOM FOR STACK BIC #BPMB-1,(SP) ;MACRO BLOCKS MUST BE MODULO MOV (SP),MACTOP ;SET FINAL MACRO BASE MOV (SP),SP  ; AND STACK BASE .IF DF DEBUG MOV SP,MONTOP+2 .ENDC .STSTK MACTOP œ0 .ENDC .CSECT FINTBL: .WORD LSTLNK, SRCLNK FINTBE: SERROR:    ;"S" ERROR MOV R5,-(SP) ;DISPLAY ADDRESS SUB #PRGBEG+2,(SP) ;GIVE RELATIVE ADDRESS MOV (R5),-(SP) ; AND NUMBER IOT BR FIN GENSWT SA,PROSET PROSET: INC PROTEC RETURN .CSECT IMPURE PROTEC: .BLKW .CSECT    ;ROUTINE TO INIT FILES    ;IN - R4 - POINTER TO CSI BUFFER    ;OUT - R0 - DEVNA ISSPABY;  B TNGE  IT BEROPPRT SE, ES;Y SBCGMA),SP(S BI  NO ; $ 2E BN  E?YP TEDATEREN GS,YE;5 ,RQMH.#C MPC E OM HGOD ANT UI QO, N;  3$ EQB ? GSARE OR MNY;A   RGTATS $: 1T BIL BOYM SEDATEREN GSTIR FCKTA;S P)(S,-000010#V MO  RNTEAT PIT BEDATEREN GARLE;C  SBCGMA LRC S NTMEGUARH IT WRTTA SSHRE F AET;G  NTGCAR LRC L OL RNTMEGUARY MMDUR EACL; L ROMADP ZA  6R OVNTE S RG AROAC MSSCERO;P    A:OMPRkÿžCONT6: CALL ASSEMB  ;CALL THE ASSEMBLER MOV #FINMSG,R1 ;SET FOR FINAL MESSAGE MOV #LINBUF,R2 MOVBYT   ;MOVE INTO LINBUF MOV ERRCNT,R1 DNC   ;PRINT IN DECIMAL MOV #FINMS1,R1 MOVBYT MOV ROLBAS+0,R1 SUB MACTOP,R1 ROR R1 DNC .IF NDF DEBUG MOV #FINMS2,R1 ;". WORDS" MOVBYT .IFF MOV #MONTOP,R4 49$: MOVB #CH.COM,(R2)+ MOV (R4)+,R1 ;GET PROPER MONTOP ENTRY ASR R1 DNC CMP R4,#MONTOP+10 BNE 49$  M (TESTED)    ; R1 - RESULT OF .CSI2    ; R2 - BUFFER SIZE    ; R3- STATUS WORD INIT: MOV 2(R4),R0 ;GET POINTER TO LINK BLOCK CLR R2  ;CLEAR BUFFER SIZE MOVB #1,4(R0) MOV #1,-(SP) TST RUNFLG BNE 1$ TST (SP)+ MOV #72.,4(R0) ;SET FOR MANY SWITCHES .CSI2 R4  ;TEST THE FIELD BIT #2,(SP)  ;TOO MANY SWITCHES? BEQ 1$  ; NO SERROR 203 1$: MOV 6(R0),-(SP) ;ANY DEVICE? BEQ 2$  ; NO .INIT R0  ;OK, INIT THE D R OVITX N URETR A ORRRE: 1$ TFEPRP JM  R5P,IRT.#M OVM T OMPR LLCA  INDLEN LLCA  P)(S,-R0 OVM ) SP-(3,RV MO  P)(S,-NTGCAR OVM + 2)(R LRC K BLETGL ALC G ARRM LLCA  R30,RV MO  CFOMPR LLCA  TSENUMRG AOFR BEUM NNY;A AXGMAR7,7777#1 OVM $ 1Q BE  RGMAGL ALC G ARRM LLCA  MAROPL ALC $ 1Q BE  RGMAGL ALC 6 VRTOEN  P:IR R3 NCI: PCIR PCIR P,IR BLLO.G gÿ¢ .ENDC CLRB (R2) PUTKBL LINBUF  ;LIST TO KB & LP PUTLP CMIBUF  ;PRINT THE COMMAND STRING XITOVR .IF DF DOSV4!XCREF .IFF TST CRFFLG BEQ FIN TST CRFNGF  ;NO-GO? BNE FIN  ; YES CALL FINF .RLSE #CMILNK .RLSE #CMOLNK SUB #<5+6+5+6+10>*2,SP MOV SP,R2 MOV #LSTLNK-2,R1 CALL XMIT5 MOV #LSTFIL-4,R1 CALL XMIT6 MOV #CRFLNK-2,R1 CALL XMIT5 MOV #CRFFIL-4,R1 CALL XMIT6 .RUN #RUNBLK HALT ¤EVICE .STAT R0  ;GET CHARACTERISTICS MOV (SP)+,R3 ;SAVE STATUS WORD TST (SP)+  ;PRUNE DEVICE NAME MOV (SP)+,R2 ;SET SIZE 2$: MOV R0,R4  ;POINT TO LINK BLOCK CALL TSTSW  ;TEST SWITCHES MOV (SP)+,R0 ; AND DEVICE NAME (SETTING FLAGS) MOV (SP)+,R1 ;SET TERMINATOR TST R0  ;SET FLAGS RETURN OPENO:    ;OPEN OUTPUT FILE SAVREG TST (R4)+  ;MOVE PAST COMMAND BUFFER POINTER MOV (R4) R OVITX N URETR R CHETS E ATECPLRED AN ;+ 2)(R+,2)(R OVM T UNCOT ENUMRG AINL IL;F 2)(RT,CNRGAV MO  ERNTOI PNTMEGUARD AN ;+ 2)(R3,RV MO  ERNTOI PXTTET SE;+ 2)(R+,P)(S OVM P MRSB,M)+SP(V MO  ELEV LNGTIES NSHPU; H USMP LLCA  R5C,MAT.#M OVM R TEINPOK OCBLE AV;S  R30,RV MO  TSENUMRG ALLCAS ESOCPR; C OMPR LLCA  ERNTOI PVESA;) SP-(0,RV MO  TSBIL BOYM SEDATEREN GND A; SBCGMA+,0)(R OVM S RG AOFR BEUM NET;S AXGMAR+,0)(R OVM S OTSLF Ocÿ¦ ENTSEC MIXED RUNBLK: .WORD ^B0100000000010011 .WORD RUNFIL .WORD RUNLNK .WORD 2 .WORD 0 RUNLNK: .WORD 0 .RAD50 /RUN/ .WORD 1 .RAD50 /SY/ .WORD 0 .WORD 4 RUNFIL: .RAD50 /CREF / .RAD50 / / .BYTE 0,0 .WORD 0 XITSEC .ENDC FIN: CALL FINF JMP CONT FINF: ENTOVR 1 MOV #FINTBL,R1 1$: MOV (R1)+,R2 TST (R2) BEQ 2$ .CLOSE R2 .RLSE R2 2$: TST (R1) BNE 1$ RE¨+,R3 ;LINK BLOCK POINTER TO R3 TST (R3)  ;INITTED? BEQ 4$  ; NO MOV (R4)+,R0 ;YES, FILE BLOCK POINTER TO R0 CMP -(R0),-(R0) ;BACK UP TO ERROR SLOT MOV R0,R2  ;GET A WORKING COPY MOV #3$,(R2)+ ;IGNORE DELETION ERROR MOV #2,(R2)+ ;FLAG FOR OUTPUT MOV R2,R1  ;ASSUME NAME SPECIFIED TST (R2)  ;TRUE? BNE 1$  ; YES ; MOV #SRCFIL,R1 ;NO, USE SOURCE NAME 1$: MOV (R1)+,(R2)+ ;XFER NAME MOV (R1)+,(R2)+ TST (R2)  ;EXPLECIT EXTENSION? BNE LEUPCOA P UVEMO;+ 0)(R+,0)(R MPC E NCREFERET ENEMCRIN; C MANCIL ALC ) SP-(0,RV MO  6R OVNTE L UL NIFR ROER ; R ERPCOQ BE  ERNTOI PCKLO BET;G R0E,LUVA OVM N IOATOC LRKMA;  0 PFETS L AL CROAC;M    C:ROACM VRTOXI  RNTURE  HRTCSE  ERRKMAD ENT SE; T IMWC LLCA  R5C,MAT.#M OVM: 3$ AR ROER $: 2$ 3Q BE  +2AMCNMA2,L+BOYMSP CM  2$ NEB M NAAC,MR0 MPC $ 3Q BE  YMTSGE  XTTEE THS ESOCPR;_ÿªTURN ENTSEC DPURE FINTBL: .WORD SRCLNK, LSTLNK, OBJLNK .IIF NDF XSML, .WORD SMLLNK .IIF NDF XCREF,  .WORD CRFLNK .WORD 0 ENTSEC TXTBYT FINMSG: .ASCIZ /ERRORS DETECTED: / FINMS1: .ASCII /FREE CORE: / CRLF: .ASCIZ // FINMS2: .ASCIZ /. WORDS/ HASH: .ASCIZ  /#/ XITSEC    ;ROUTINE TO INIT FILES    ;IN - R4 - POINTER TO CSI BUFFER    ;OUT - R0 -¬2$  ; YES MOV (R4),(R2) ;NO, USE DEFAULT 2$: TST -(R4) TST RUNFLG BNE 10$ .DELET R3,(R4)  ;DELETE CURRENT 3$: CLR (R0)  ;CLEAR ERROR ADDRESS .OPEN R3,(R4)  ;OPEN THE FILE 4$: RETURN 10$: CLR (R0) .LOOK R3,(R4),FOO TST (SP)+ BNE 11$ CMP (SP)+,(SP)+ BR 3$ 11$: TST (SP)+ MOV #13,LSTFIL-2 ;OPENC ROR (SP)+ BCS 3$ MOV #3,LSTFIL-2 ;OPENE BR 3$ TSTSW:      MTROPL ALC E IN LFF OSHLIPO; N LINDEL ALC G LACF,LMDC.#L ISB S IT BOLMBSYD TERANEGED AN ;+ 2)(RB,GSACMV MO  GSARF OERMBNUP EE;K )+R2,(NTGCAR OVM T UNCOL VELER EACL; + 2)(R LRC S RG AMYUM DSSCERO;P  MAROPL ALC F DERFC E BLTAN IRTSEIN;  T ERNSI R TEINPOT SE; ) R4,(R0 OVM K OCBLE AGORSTA T GE; K BLETGL ALC: 1$ CEENEREF RHE TNTMEREEC;D  ACCMDE LLCA  LLNUF ICHANBR; $ 1Q BE  ERNTOI PHE TET;G  R0),R4(V MO  LEAB THE TCHARSE;  H RCMS  +2AMCN[ÿ® DEVNAM (TESTED)    ; R1 - RESULT OF .CSI2    ; R2 - BUFFER SIZE    ; R3- STATUS WORD INIT: MOV 2(R4),R0 ;GET POINTER TO LINK BLOCK CLR R2  ;CLEAR BUFFER SIZE MOV #72.,4(R0) ;SET FOR MANY SWITCHES .CSI2 R4  ;TEST THE FIELD BIT #2,(SP)  ;TOO MANY SWITCHES? BEQ 1$  ; NO SERROR 203 1$: MOV 6(R0),-(SP) ;ANY DEVICE? BEQ 2$  ; NO .INIT R0  ;OK, INIT THE DEVICE .STAT R0  ;GET CHARACTERISTICS MOV (SP)+,R3 ;SAVE ST°;SWITCH TEST SAVREG TST RUNFLG BNE 6$ ADD #8.,R4  ;R4 POINTED TO LINK BLOCK 1$: MOV (R4)+,R3 ;THROUGH? BEQ 6$  ; YES ADD R3,R4  ;NO, MOVE TO END OF BLOCK ADD R3,R4 MOV R4,-(SP) ;MARK THE PLACE MOV -(R4),SYMBOL ;SET FOR SCAN SCANW SWTROL  ;DO SO BEQ 5$  ;ERROR IF NOT IN TABLE MOV #LINBUF,R2 ;USE LINE BUFFER FOR UNPACKING 2$: MOVB #SPACE,(R2)+ ;SET DELIMITER DEC R3  ;END? BEQ 4$  ; YES MOV -(R4),CHRPNT ;SET CHARACTER POIMA2,L+BOYMSV MO  AMCNMAL,BOYMSV MO  6R OVNTE : OFCRMA LLNUF IORRR E;  DMEN EQB E AM NHE TET;G   RGSAG N IOITINEF DROAC;M    R:AC M: ROAC M M NDE, CRMA O,CRMA BLLO.G  N URETR O ORRRE: RRCEOP R:ND E: DMEN OPMP MPJ G LA FITEX MARLE;C  EXDMCN LRC: 1$ RNTURE  NKLIS ASYP;B  0)(R4,#D AD  ERNTOI PADRET SE, NO;) R0,(XTBTMS OVM S YE ; $ 1T BG  H?UGROTH;+ 0)(R+,0)(R MPC T IMPBU; Wÿ²ATUS WORD TST (SP)+  ;PRUNE DEVICE NAME MOV (SP)+,R2 ;SET SIZE ASL R2  ;****BUFFER SIZE IN BYTES??**** ADD #100,R2  ;(32 WORDS)*(2 BYTES/WORD) FIB 2$: MOV R0,R4  ;POINT TO LINK BLOCK CALL TSTSW  ;TEST SWITCHES MOV (SP)+,R0 ; AND DEVICE NAME (SETTING FLAGS) MOV (SP)+,R1 ;SET TERMINATOR TST R0  ;SET FLAGS RETURN OPENO:    ;OPEN OUTPUT FILE SAVREG TST (R4)+  ;MOVE PAST COMMAND´NTER DEC CHRPNT  ;GET A RUNNING START 3$: GETR50   ;GET CHAR AND TEST FOR A/N BLE 2$  ; NO, THROUGH MOVB R5,(R2)+ ;OK, STUFF IT BR 3$ 4$: CLRB (R2)  ;SET TERMINATOR MOV #LINBUF,CHRPNT SETNB CLR ARGCNT INC CSIFLG  ;INDICATE WE'RE IN THE COMMAND STRING ; CLR R3 CALL @SYMBOL+2 DEC CSIFLG MOV (SP)+,R4 TST R5 BEQ 1$ 5$: SERROR 203 6$: RETURN .CSECT IMPURE CSIFLG: .BLKW   ;SET WHEN ROUTINES CALLED FROM CSI .CSECT 0)(R NCI T UNCOO TERNTOI PET;S R0T,CNSB#M OVM: ACDMEN ERCTRAHA CRETOES;R   HRTCSE  AX;M )+R2,()+SP(V MO  ERNTOU;C  )+R2(R CL  ERNTOI PRG ARETO;S )+R2,()+SP(V MO  ERNTOI PXTTEE ORST;+ 2)(R+,P)(S OVM K OCBLO CRMAS OUVIRE PSHPU; H USMP LLCA  MTCIWL ALC: TFEP R" ATPEREF OND"EN AGEUD;F R5T,RPT.#M OVM F UFSTO CRMAE US; T OMPR LLCA  ATPERER FOS RG AMYUM DNO; L ROMADP ZA  NELIF OFH ISOL;P  INDLEN LLCA  CKLO BOFT ARSTD AN ;) SP-(0,RV MO  TSENUMRGSÿ¶ BUFFER POINTER MOV (R4)+,R3 ;LINK BLOCK POINTER TO R3 TST (R3)  ;INITTED? BEQ 4$  ; NO MOV (R4),R0  ;YES, FILE BLOCK POINTER TO R0 CMP -(R0),-(R0) ;BACK UP TO ERROR SLOT MOV R0,R2  ;GET A WORKING COPY .IF LE OVRLVL MOV #3$,(R2)+ ;IGNORE DELETION ERROR .IFF MOV #OVRXCT+<3$-OVRBAS>,(R2)+ .ENDC MOV #2,(R2)+ ;FLAG FOR OUTPUT MOV R2,R1  ;ASSUME NAME SPECIFIED TST (R2)  ;TRUE? BNE 1$  ; YES MOV #DEFNAM,R1 ;NO, USE DEFAULT NAME ¸.CSECT MIXED RUNFLG: .WORD 0 .CSECT .SBTTL CREF PROPER PROP1: .ENABL LSB CALL XCTPAS  ;INIT FOR PASS CLR MACNXT MOV MACTOP+2,MACTOP ZAP PAGROL CALL SETSRC  ;SET SOURCE SCAN $1: 1$: CALL GETLIN TST ENDFLG BEQ 9$ JMP PROP2 9$: MOV #OUTBUF,R4 2$: CALL TSTCOR TST R5 BEQ $12 CMP #CR.VER,R5 BEQ 5$ CMP #CR.PAG,R5 BEQ 6$ CMP #CR.LIN,R5 BEQ 7$ CMP # ANO; ) SP-( LRC D OR WRDHI TINT ARST; + 2)(R LRC K OCBLE AGORSTA T GE; K BLETGL ALC G INSTLIE THK AR;M   F1TPSE  NTOU CVESA;) SP-(0,RV MO  NTOU CTEUAALEV;  P EXBSA R LENDHAT EAEP;R    T:EP R R NDE, PTRE BLLO.G  AC.MMT X=MAT. M3 60771= AC.MMT 027617 P=IRT. M1 60771= PT.RMT ROACXM DF NIF. S ERDLAN HROACML TTSB. DCEN. E UNPRD ANH NCRA;B PC+,P)(S@V MO  SSREDD ARMFO;) SP,(APTRL-TBRPOÿº1$: MOV (R1)+,(R2)+ ;XFER NAME MOV (R1)+,(R2)+ TST (R2)  ;EXPLICIT EXTENSION? BNE 2$  ; YES MOV R5,(R2)  ;NO, USE DEFAULT 2$: ; CMP R50MAC,(R2) ;IF EXTENSION OF .MAC ; BEQ 3$ ; CMP R50PAL,(R2) ; OR .PAL, ; BEQ 3$  ; DON'T DELETE .DELET R3,(R4)  ;DELETE CURRENT 3$: CLR (R0)  ;CLEAR ERROR ADDRESS .OPEN R3,(R4)  ;OPEN THE FILE 4$: RETURN ENTSEC IMPURE DEFNAM: .BLKW 2  ;DEFAULT NAME XITSEC ¼VT,R5 BEQ 4$ CMP #CR.SYM,R5 BHI 3$ CMP #CR.MAX,R5 BHIS $10 3$: TST PASCNT BNE 4$ MOVB R5,(R4)+ $4: 4$: GETCHR BR 2$ 5$: GETCHR BR 4$ 6$: MOV LINCNT,SYMBOL APPEND PAGROL INC MAXPAG CLR LINCNT+2 BR 4$ 7$: INC LINCNT INC LINCNT+2 CMP LINCNT+2,MAXLIN BLOS 4$ MOV LINCNT+2,MAXLIN BR 4$ .DSABL LSB .ENABL LSB $10: 10$: MOV R5,-(SP) GETCHR #T DDA T ICKTA;S P)(S,-)+SP@( OVM N IOCTRUSTINP RA TTOT INPO; ) SP,(#2 UBS P USSREDD ARNTUREE OV;M P)(S,2P)(S OVM R SOESOCPRP RA;T    O:PRRP TS APTR DFF .I  RNTURE  LLNUO TCKBAT INPO, ND;E  2)(R-B STT L UL-NON NIFP OO;L  1$ NEB E ONE OV;M )+R2,()+R1(B OVM: 1$ NGRISTE YT BVEMO;   : YTVBMO RNTURE 0:LRXC )+R2(R CL 1:LRXC )+R2(R CL 2:LRXC )+R2(R CL 3:LRXC )+R2(R CL 4:LRXC )+R2(R CL 5:LRXC )+R2(R CL 6:LRXC )+R2(R CL 7:LRXC RNTURE 0:ITKÿ¾TSTSW:    ;SWITCH TEST SAVREG ADD #8.,R4  ;R4 POINTED TO LINK BLOCK 1$: MOV (R4)+,R3 ;THROUGH? BEQ 6$  ; YES ADD R3,R4  ;NO, MOVE TO END OF BLOCK ADD R3,R4 MOV R4,-(SP) ;MARK THE PLACE MOV -(R4),SYMBOL ;SET FOR SCAN SCANW SWTROL  ;DO SO BEQ 5$  ;ERROR IF NOT IN TABLE MOV #LINBUF,R2 ;USE LINE BUFFER FOR UNPACKING 2$: MOVB #SPACE,(R2)+ ;SET DELIMITER DEC R3  ;END? BEQ 4$  ; YES MOV -(R4),CHRPNT ;SET CÀGETSYM MOV (SP)+,R0 SUB #CR.SYM,R0 ASL R0 ADD #T00ROL,R0 MOV LINCNT,R3 ROR R5 ROL R3 ROR R5 ROL R3 CALL SEARCH BNE 11$ CMP ROLNDX,MINSYM BLO $4 BHI 16$ CMP SYMBOL,MINSYM+2 BLO $4 BHI 16$ CMP SYMBOL+2,MINSYM+4 BLO $4 16$: CMP ROLNDX,MAXSYM BHI $4 BLO 17$ CMP SYMBOL,MAXSYM+2 BHI $4 BLO 17$ CMP SYMBOL+2,MAXSYM+4 BHIS $4 17$: CALL GETBLK MOV R0,VALUE INSERT MOV R2,R1 CLR (R2)+ BR XM )+R2,()+R1(V MO 1:ITXM )+R2,()+R1(V MO 2:ITXM )+R2,()+R1(V MO 3:ITXM )+R2,()+R1(V MO 4:ITXM )+R2,()+R1(V MO 5:ITXM )+R2,()+R1(V MO 6:ITXM )+R2,()+R1(V MO 7:ITXM C ND.E  KWBL.: 3$ RNTURE  P)(S$,3V MO $: 2P TOON,MP)(S OVM . G=BUDE 2$ ISBH  P)(SP,TOONMP CM  NFMO ., 41T EM;.  410+00041D OR.W  P)(S,-02#1 OVM W LK.B $: 1$ ,1)+SP(V MO  3$+,P)(S OVM: MTTETS ECTSXI  +6OPNTMO OMC 4 P+GÿÂHARACTER POINTER DEC CHRPNT  ;GET A RUNNING START 3$: GETR50   ;GET CHAR AND TEST FOR A/N BLE 2$  ; NO, THROUGH MOVB R5,(R2)+ ;OK, STUFF IT BR 3$ 4$: CLRB (R2)  ;SET TERMINATOR MOV #LINBUF,CHRPNT SETNB CLR ERRBTS CLR ARGCNT INC CSIFLG  ;INDICATE WE'RE IN THE COMMAND STRING CLR MODE MOV SYMBOL+2,VALUE ;MAKE IT LOOK LIKE PST CALL PROPC  ;PROCESS AS IF DIRECTIVE DEC CSIFLG MOV (SP)+,R4 BIS ERRBTS,R5 ;R5 AND ERROR BITS MUST BOTÄ13$ 11$: MOV VALUE,R1 TST (R1)+ MOV (R1),R2 MOV -2(R2),R5 BIS #3,R5 SUB R3,R5 ASR R5 ASR R5 BEQ 14$ 13$: CLR R5 CALL WWIMT MOV R2,(R1) 14$: BIS R3,-(R2) BR $4 $12: 12$: CMP #OUTBUF,R4 BEQ 19$ CLRB (R4) MOV #2,R0 MOV #OUTBUF,R1 CALL PUTLIN 19$: JMP $1 .DSABL LSB PROP2: MOV #177777,SYMBOL APPEND PAGROL MOV MAXPAG,R1 CALL DIGCNT MOV R0,TOONMM CO  RGTPXC ECTSEN  4W LK.B P:TOON ME URMPIC SENTE T IF. N URETR S DECON IOITNDCOT SE; 0 RT TS  R4+,P)(S OVM 3 ,R)+SP(V MO  R2+,P)(S OVM S ERSTGIREE ORSTRE;1 ,R)+SP(V MO  TFIF. : 2$ +6OPNTMO1,RV MO  2$ ISBH  +6OPNTMO1,RP CM  R1P,TOONMB SU  R14,P+TOONMV MO $: 14 P+TOON,MSP OVM $ 1S HIB 4 P+TOON,MSP MPC G BUDE DFF .I  LLCAE THN URET;R )+SP@(C,PR JS X:REAV S) SP.(,8R4 OVM P TON OSSREDD ARNTUREE ACPL;) SP-(),SP.(6V MO  P)(S,-R1 CÿÆH BE ZERO BEQ 1$ 5$: SERROR 203 6$: RETURN ENTSEC IMPURE CSIFLG: .BLKW   ;SET WHEN ROUTINES CALLED FROM CSI XITSEC XITOVR   ; 1 SERROR:    ;"S" ERROR MOV R5,-(SP) ;DISPLAY ADDRESS SUB #PRGBEG+2,(SP) ;GIVE RELATIVE ADDRESS MOV (R5),-(SP) ; AND NUMBER IOT BRJMP FIN .SBTTL ASSEMBLER PROPER ASSEMB:    ;ASSEMBLER PROPER CALL NXTPAS  ;PROCESS PASS INC PASS  ;SET ÈMAXPAG MOV MAXLIN,R1 CALL DIGCNT MOV R0,MAXLIN ADD MAXPAG,R0 INC R0 MOV R0,MAXDIG MOV #T00ROL,CURROL 10$: CLR -(SP) 1$: MOV (SP)+,ROLUPD MOVB CURROL,R0 CALL NEXT BEQ 5$ 11$: MOV ROLUPD,-(SP) MOV VALUE,R0 TST (R0)+ MOV (R0)+,-(SP) MOV R0,-(SP) CALL SETOB CALL R50UNP ADD #2,R2 2$: MOV (SP)+,R3 CMP R3,(SP) BEQ 4$ BIT #BPMB-1,R3 BNE 3$ MOV -BPMB(R3),R3 TST (R3)+ 3$: MOV (R3)+,R1 MOV R3,-(SP) CLR OVM ) SP-(2,RV MO  P)(S,-R3 OVM S ERSTGIREE AV;S    G:REAV S E AGORSTR TEISEGRL TTSB. RNTURE  R4E,LUVA#V MO  R3E,OD#M OVM 2 ,RORCTSE#V MO  R1L,BOYM#S OVM S ERSTGIREN IOSSREXP EET;S    R:XPET S X REAVSR B S ERSTGIREN IOSSREXP EET;S   PRTXSE  SSREDD ARNTUREK ACST;) SP-(4,RV MO  P)(S,-R1 OVM ) SP-(2,RV MO  LLCAY BVESAS WA4 ;R P)(S,-R3 OVM N IOSSREXP EOR FET SND AGSREE AV;S    R:XPAV?ÿÊFOR PASS 2 NXTPAS: CALL XCTPAS  ;INIT FOR PASS CALL SECINI  ;INIT THE SECTOR ROLL CLR PF1  ;GOT SET BY SECTOR INIT .IF NDF XCREF TST PASS BEQ 1$  ;BRANCH IF PASS 1 TST CRFLNK BEQ 1$  ; OR IF NO CREF INITTED MOV LSTFIL,CRFFIL ;XFER LIST FILE NAME TO CREF FILE MOV LSTFIL+2,CRFFIL+2 MOV (PC)+,R5 ;SET DEFAULT EXTENSION .RAD50 /CRF/ OPENO CRF  ;OPEN CREF FILE MOV #CRFBUF,CRFPNT ;INIT FOR CREF .ENDC 1$: CALL SETSRC  ;SET SOURCE SCAN Ì-(SP) ROR R1 ROR (SP) ROR R1 ROR (SP) CALL PUTNUM ROL (SP) BCC 7$ MOVB #CH.HSH,(R1)+ 7$: TST (SP)+ BPL 2$ MOVB #CH.IND,(R1)+ BR 2$ 4$: TST (SP)+ CALL PUTOB BR 1$ 5$: MOVB CURROL,R0 ADD #2,R0 MOV R0,CURROL CMP R0,#T07ROL BLOS 10$ INC PASCNT MOV #MAXSYM,R1 MOV #MINSYM,R2 MOV (R1),-(SP) CALL XMIT3 INC (SP)+ BNE 6$ RETURN 6$: JMP PROP1 .CSECT IMPURE CURROL: .BLKW PASCNT: .BLKW .CS S S EG ROFT ES RND A;   RNTURE  ERCTRAHA CNTREUR CRETOES;R R5+,P)(S OVM E INUTROR PERO PLLCA; ) R0(L ALC L BOYM STOR TEINPO;4 ,ROLMBSY#V MO  ZESIY TREN;3 ,R5)(RIZLSRO VBMO  OP TNTREUR;C R2),R5P(TOOLRV MO  SEBAT ENRRCU;1 ,R5)(RASLBRO OVM X DEINT SE;5 ,RDXLNRO OVM R TEACARCHT ENRRCUD AN ;) SP-(5,RV MO  RSTEISEG RVESA;  G REAVS S ESDRADN URET RVESA;0 ,R)+SP(V MO F:ROET ST ENUMRG AET;S DXLNRO0,RV MO  RSTEISEG RLLROT SE;   : OLTRSE;ÿÎ LINE: CALL GETLIN  ;GET THE NEXT INPUT LINE BNE 1$  ; BRANCH IF EOF CALL STMNT  ;PROCESS THE STATEMENT 1$: CALL ENDLIN  ;POLISH OFF LINE TST ENDFLG  ;END SEEN? BEQ LINE  ; NO, CONTINUE JMP ENDP ENTSEC DPURE R50ABS: .RAD50 /. ABS./ R50DOT: .RAD50 /. / XITSEC SETSRC:    ;SET SOURCE FOR BEGINNING OF PASS MOV #CMDSAV,R1 MOV #CMDBUF,R2 CALL XMIT7  ;SET CSI BUFFER GETÐECT PUTNUM: MOV R2,-(SP) ADD MAXDIG,(SP) CMP (SP)+,#OUTBUF+72.-2 BLOS 1$ CALL PUTOB ADD #10,R2 1$: MOV R2,-(SP) MOV R1,-(SP) MOV ROLBAS+PAGROL,R0 2$: CMP R1,(R0)+ BHI 2$ TST -(R0) SUB -(R0),(SP) SUB ROLBAS+PAGROL,R0 MOV R0,R1 ASR R1 INC R1 CALL DIGCNT ADD MAXPAG,R2 SUB R0,R2 DNC MOVB #CH.SUB,(R2)+ MOV (SP)+,R1 CALL DIGCNT MOV (SP)+,R2 ADD MA N URETR T UNCOY TRENR EACL;) R51(Z+SIOLRB LRC M TOOT B =OP TKEMA;) R5P(TOOL,RR1 OVM L ROETSL ALC L OL R ATYMP;E    P:ZA RNTURE  ND EOT NIFP OO;L  6$3,RB SO  CELA PTOINY TRENN AVEMO;+ 0)(R+,4)(R OVM: 6$ NTOU CZESIE LVHA; 3 RR AS $: 5S YE ; $ 4E BG  S?LLROE OR;M  R52,#B SU  5)(ROPLTRO3,RB SU  RSTEINPOT ENEMCRDE;) R5S(BAOL,RR3 UBS: 4$ NO ; $ 2E BN  D?EN; 2 ,RR0 MPC: 3$ WNDOY TRENN AVEMO;+ 2)(R+,7ÿÒSRC:    ;GET THE NEXT SOURCE FILE MOV #SRCLNK,R1 TST (R1)  ;FILE OPEN? BEQ 1$  ; NO .CLOSE R1  ;YES, CLOSE IT .RLSE R1 1$: CLR PASSSW  ;CLEAR PASS SWITCH INIT SRC  ;INIT THE SOURCE FILE DEC PASSSW  ;ANY PASS SWITCH? BMI 5$  ; NO CMP PASSSW,PASS ;YES, THIS PASS? BNE GETSRC  ; NO, IGNORE FILE 5$: ROR R1 ROL CSISAV  ;FLAG POSSIBLE TERMINATOR TST SRCFIL+4 ;EXPLICIT EXTENSION? BNE 3$  ; YES, USE IT MOV #R50MAC,R2 ;NO, ÔXDIG,R2 SUB R0,R2 DNC MOV R2,R1 INC R2 INC R2 INC R2 RETURN .CSECT IMPURE MAXPAG: .BLKW MAXLIN: .BLKW MAXDIG: .BLKW SYMTYP: .BLKW .CSECT XCTPRG DEC SYMTYP .CSECT DIGCNT: MOV #10$,R0 1$: CMP R1,(R0)+ BHI 1$ SUB #10$,R0 ASR R0 RETURN 10$: .WORD 9., 99., 999., 9999., 177777 PUTOB: CLRB (R2) MOV R1,-(SP) MOV #2,R0 MOV #OUTBUF,R1 CALL TSTHD1)(R OVM: 2$ 172R ROERS K OO, N;  3$ HIB ? OWFLEROV;P TOAC,MR2 MPC N OW DOTSLE ONS NTOI PR2; 2 ,RR3 UBS 2 ,RR1 OVM E AS BTELUSOABT GE, NO;1 ,R+0ASLBRO OVM 0 ,RR3 UBS T IFFTU SSTJU, ES Y;  5$ NEB ? LSOL RENWEET BAP;G 5)(R+2ASLBRO2,RP CM  ERNTOI POP TTEDAUP;) R5P(TOOL,RR3 DDA T UNCOY TRENE ATPD;U 5)(R+1IZLSRO CBIN  ES Y;  5$ NEB ? UETRH RCEA SAS;W  PDLURO STT T LO SEROPPRO TTSINPO;0 ,RNTLPRO OVM: RFSEIN G)ARO NUT(BS ERSTGIREL OL RET;S  3ÿÖTRY ".MAC" AND ".PAL" 2$: MOV #2$,SRCFIL-4 ;SET ERROR RETURN MOV (R2)+,SRCFIL+4 ;MOVE IN NEXT DEFAULT BNE 4$  ;BRANCH IF NON-NULL 3$: CLR SRCFIL-4 ;NO MORE ERRORS ALLOWED 4$: MOV #4,SRCFIL-2 ;INPUT .OPEN #SRCLNK,#SRCFIL INC FFCNT  ;START A NEW PAGE INPSRC:    ;INPUT A SOURCE BUFFER MOV #SRCBUF,R1 CLR -(R1)  ;CLEAR COUNT CLR -(R1)  ; AND MODE MOV #SRCLEN,-(R1) ;SET MAX LENGTH .READ #SRCLNK,R1 ;READ IT RETURN ENTSEC DPURE R50MAC: ØR MOV (SP)+,R1 SETOB: MOV #OUTBUF,R0 MOV R0,R2 1$: MOV #SPACE*400+SPACE,(R0)+ CMP #OUTBUF+80.,R0 BNE 1$ RETURN .CSECT IMPURE OUTBUF: .BLKB 132. .CSECT IMPPAS LINCNT: .BLKW 2 .CSECT TSTHDR: CMP CURROL,SYMTYP BEQ 1$ MOV R0,-(SP) MOV CURROL,R0 MOV R0,SYMTYP MOVB HDRTYP(R0),HDRBU1 CLR LPPCNT CLR PAGNUM MOV (SP)+,R0 1$: DEC LPPCNT BPL 9$ SAVREG MOV OFTRSE LLCA  LLRON IRTSEIN;   : RTSEIN RFSEIN BR  PDLURO LRC R TEINPOT SE;T PNOL,RR2 OVM L ROETSL ALC L OL ROFD ENO TNDPEAP;   : NDPEAP S RG AARLE CD,UNFOT NO;) R34(0+LRXC MPJ F ELTS IOLMBSYS ASYP;B )+R2,()+R2(P CM $: 1 S NTMEGUARR FE XD,UNFO;) R30(ITXM MPJ D UNFOT NOF ICHANBR; $ 1Q BE  AGFLE AV;S PDLURO0,RV MO  ZESIY TRENE ATEG;N  R3 EGN " OLMBSY "TOR TEINPO; 2 ,RR4 OVM R TEINPOY /ÿÚ.RAD50 /MAC/ R50PAL: .RAD50 /PAL/ .RAD50 / /  ;TERMINATOR ENTSEC IMPPAS CSISAV: .BLKW   ;SET NON-ZERO ON LAST SRC FILE XITSEC GENSWT PA,PASSSP PASSSP: ABSEXP   ;/PASS, EVALUATE NUMBER MOV R0,PASSSW ;STORE RESULT RETURN ENTSEC IMPURE PASSSW: .BLKW   ;PASS SWITCH XITSEC GETLIN:    ;GET AN INPUT LINE SAVREG GETL01: MOV FFCNT,R0 ;ANY RESERVED FF'S? BEQ 31$  ; NO ÜR0,-(SP) MOV R1,-(SP) INC PAGNUM MOV PAGNUM,R1 MOV #HDRBU2,R2 DNC MOVB #CR,(R2)+ MOVB #LF,(R2)+ MOVB #CR,(R2)+ MOVB #LF,(R2)+ CLRB (R2) MOV #2,R0 MOV #HDRBUF,R1 CALL PUTLIN MOV #LPP,LPPCNT MOV (SP)+,R1 MOV (SP)+,R0 9$: JMP PUTLIN LPP= 57. HDRBUF: .ASCII /CROSS REFERENCE TABLE / HDRBU1: .ASCII /S-/ HDRBU2: .BLKB 20 .EVEN HDRTYP: .IRPC X, .ASCIZ /X/ .ENDM .CSECT IMPURE PAGNUM: .BLKW TRENT SE;T PNOL,RR1 OVM: NXCA ST XI ESEAL;F  R0 LRC P TMEC,SR0 OVM: NFCA S $ 1R B E IZ SBYT ENEMCRIN; 1 ,RR3 DDA: 2$ ES Y;  NXCASQ BE  D?ONEC SUTBO AOW HO,;N 1)(R,24)(R2P CM  ES Y;  2$ NEB ? DSOR WSTIR FONH TCMA, NO;) R1,(4)(R MPC 0 RC IN  SEAL FITEX, ES Y;  NFCASQ BE  D?EN; 1 ,RR2 MPC: 1$ SEAL FMESUAS; 0 RR CL  RSTEISEG RLLROT SE; L ROETSL ALC N CA SLLROR EAIN;L    N:CA S T XI ENS ARYNT EVEMO;) R30(ITXM MPJ E IZ SRYNT ETEGANE; 3 R+ÿÞADD R0,PAGNUM ;YES, UPDATE PAGE NUMBER MOV #-1,PAGEXT CLR LINNUM  ;INIT NEW CREF SEQUENCE CLR FFCNT CLR SEQEND TST PASS BEQ 31$ CLR LPPCNT 31$: MOV #LINBUF,R2 MOV R2,LCBEGL ;SEAT UP BEGINNING MOV #LINEND,LCENDL ; AND END OF LINE MARKERS .IF NDF XSML TST SMLCNT  ;IN SYSTEM MACRO? BNE GETL40  ; YES, SPECIAL .ENDC .IF NDF XMACRO MOV MSBMRP,R1 ;ASSUME MACRO IN PROGRESS BNE GETL10  ;BRANCH IF SO .IFTF MOV #SRCBUF,R1 .WAàLPPCNT: .BLKW .CSECT SETSRC:    ;SET SOURCE FOR BEGINNING OF PASS MOV #CMDSAV,R1 MOV #CMDBUF,R2 CALL XMIT7  ;SET CSI BUFFER GETSRC:    ;GET THE NEXT SOURCE FILE MOV #SRCLNK,R1 TST (R1)  ;FILE OPEN? BEQ 1$  ; NO .CLOSE R1  ;YES, CLOSE IT .RLSE R1 1$: INIT SRC  ;INIT THE SOURCE FILE ROR R1 ROL CSISAV  ;FLAG POSSIBLE TERMINATOR TST SRCFIL+4 ;EXPLICIT EXTENSION? BNE EGN " OLMBSY "TOT INPO; 2 ,RR4 OVM: 2$ SEAL FITEX, ES;Y   RNTURE  R0 LRC O N;  1$ LOB ? EDSHNIFI; 2 ,RR1 MPC R TEINPOT ENEMCRIN, NO; 1 ,RR3 DDA S YE ; $ 2Q BE  H?TCMA;) R1,(4)(R MPC T UNCOY TRENY LLTA; 0 RC IN $: 1E LSFAE UMSS;A  R0 LRC S ERSTGIRET SE; L ROETSL ALC D OR WNE OANSC;   : NWCA S F ANSC BR  NXCASO BL  R21,RP CM  R03,RD AD  R10,RD AD  R0D,UPOLRV MO  OLTRSE LLCA  RYNT EXTNEE THT GE;   : XTNE'ÿâIT #SRCLNK INC LINNUM MOVB SRCHDR+3,R0 ;GET CODE BYTE BIT #047,R0  ;ANYTHING BAD? BEQ 32$  ; NO ERROR L  ;YES, ERROR 32$: ROLB R0  ;EOF? BPL GETL02  ; NO BIS CSISAV,ENDFLG BNE 34$ CALL GETSRC BR GETL01 34$: ERROR E CLRB (R2)  ;MAKE INTO NULL LINE BR GETL09 GETL02: MOV -(R1),R4 ;GET BYTE COUNT CLR (R1)+  ;SET STOPPER ADD R1,R4  ;COMPUTE END 3$: CLRB (R4ä4$  ; YES,   USE IT MOV #-1,SRCFIL+4 ;NO, ASSUME ".CRF" .=.-4 .RAD50 /CRF/ .=.+2 MOV #3$,SRCFIL-4 ;SECOND CHANCE IF NOT THERE BR 5$ 3$: CLR SRCFIL+4 ;FAILED, TRY WITHOUT EXTENSION 4$: CLR SRCFIL-4 ;NO MORE ERRORS ALLOWED 5$: MOV #4,SRCFIL-2 ;INPUT .OPEN #SRCLNK,#SRCFIL INPSRC:    ;INPUT A SOURCE BUFFER MOV #SRCBUF,R1 CLR -(R1)  ;CLEAR COUNT CLR -(R1)  ; AND MODE MOV #SRCLEN,-(R1) ;SET MAX LENGTH .READ #SRCLNK,R1 ;READ IT N CA SGHOUHR TITEX; X ANSC BR  R3+,P)(S OVM: 7$ OTSLN IORTSEINO TNTOI PS,YE;+ 1)(R+,1)(R MPC O N;  2$ NEB ? ND;E  R02,#C BI  ETFSOFE LVHA, ONTIRATE IOFD EN; 0 RR AS $: 61 ,RR0 DDA: 5$ 6$ BR  EXND IEROW;L  R10,RB SU $: 4H IG HOO TIFH NCRA BO,;N  5$ HIB: 3$ NDOU FS,YE ; $ 7Q BE  D?ONEC SUTBO AOW HS,YE;) R12(),R42( MPC O N;  3$ NEB ? CHAT MDSOR WSTIR FO,;N 1)(R),R4(P CM  ES Y;  4$ OSBL  #ÿæ)  ;FORM ASCIZ MOVB -(R4),R5 ;GET LAST CHAR CMP R5,#CR  ;IF > CR BHI 6$ CMP R5,#LF  ; OR < LF BLO 6$  ; MOVE ON CMP R5,#FF  ;FORM FEED? BNE 3$  ; NO, LOOP INC FFCNT  ;COUNT THE PAGE BR 3$ 5$: MOVB R5,(R2)+ ;MOVE INTO LINBUF 6$: MOVB (R1)+,R5 ;FETCH NEXT CHAR MOVB CTTBL(R5),R0 ;GET CHARACTERISTICS BEQ 7$  ;QUESTIONABLE BIT #CT.LC,R0 ;LOWER CASE? BEQ 5$  ; NO .IF NDF XEDLC BIT #ED.LC,EDMASK ;LOWER CASE ENABLED? è RETURN GETLIN:    ;GET AN INPUT LINE SAVREG 1$: MOV #LINBUF,R2 MOV #SRCBUF,R1 .WAIT #SRCLNK TSTB SRCHDR+3 BEQ 2$ BIS CSISAV,ENDFLG BNE 4$ CALL GETSRC BR 1$ 2$: MOV SRCHDR+4,R0 ;GET BYTE COUNT CLRB SRCBUF(R0) ;SET A TERMINATOR MOVBYT   ;MOVE THE STRING CALL INPSRC  ;ALL SET FOR THE NEXT BUFFER 4$: MOV #LINBUF,CHRPNT SETCHR RETURN D?AN L'SNSMAO- NINF OF; 1 ,RR2 MPC: 2$ NTOI PAY-WLFHAT ARTTA;S  5$ BR  NO ; $ 1E BN  E?ONT AS L. IT BNGDIONSPREOR CARLE;C  R30,RC BI  IT BFTHI;S  R0 OLR: 1$ G)LA F/F TASS LEUBDO0 (R ;  C SE  ETFSOFH RCEA STEPUOM CTOT SET GE; 0 RR CL  ZESIE UTMPCO; 3 ,RR1 UBS 3 ,RR2 OVM W LOT LO SNE ONTOI;P  R13,RB SU  P)(S,-R3 OVM S ERSTGIREL OL RET;S  OLTRSE LLCA  CHARSEL OL RRYNABI;   : CHARSEÿê BNE 4$  ; NO, CONVERT TO UPPER ADD #240,R5  ;YES, END UP WITH "200 + LC" .ENDC 4$: SUB #40,R5  ;CONVERT LOWER TO UPPER CASE BR 5$  ;STORE 7$: MOVB R5,(R2)  ;QUESTIONABLE, ASCIZ NULL? BEQ 8$  ; YES, ALL SET ERROR I  ;NO, ILLEGAL CHARACTER MOV #200,R5  ;STORE ZERO WITH FLAG BIT BR 5$ 8$: .IF NDF XSML TST SMLCNT BNE GETL09 .ENDC CALL INPSRC  ;ALL SET FOR THE NEXT BUFFER ì .IF EQ 1 ENDLIN:    ;END OF LINE PROCESSOR SAVREG TST LCLVL  ;TEST OVER-UNDER RIDE BLT 9$  ;IF <0, LIST ONLY IF ERRORS BGT 6$  ;IF >0, LIST UNCONDITIONALLY BIT #LC.COM,LCMASK ;COMMENT SUPPRESSION? BEQ 2$  ; NO MOV CHRPNT,LCENDL ;YES, ASSUME WE'RE SITTING AT COMMENT 2$: BIT #LC.SRC,LCMASK ;LINE SUPPRESSION? BEQ 3$  ; NO MOV #LINBUF,LCENDL ;YES, POINT TO START OF BUFFER 3$: 4$: BIT LCMASK,LCFLAG ;ANYTHING SUPPR C ND.E  SBLL ABDS. N URETR: 2$ SEBAL BOYM SEDATEREN GARLE;C  ASGBLS LRC N VE ETS IRESUE ;B ASYBLS1,#C BI  SEBAW NET SE;S BASY,LOCCLCL OVM K OCBLW NEG LA;F  LGYFLS NCI: 1$ ES Y;  2$ EQB ? DERIR-VE OSB LIN;K ASDM,ESB.LED#T BI T:SESB L $ 1R B S /DF ISSPABY; $ 2E BN T:TSSB LB LS BLNA.E  CKLO BOLMBSYL CALO;1 T,TSSB,LSBLT EDENG C SEITX S OLMBSYD TERANEGER FOE AS;B   KWBL.: ASGBLS SEBAN IOCTSE;  W LK.B S:BASY LR BEUM NCKLOÿîGETL09: .IF NDF XEDCDR MOVB LINBUF+72.,CDRSAV ;SAVE COLUMN 73 BIT #ED.CDR,EDMASK ;CARD READER TYPE? BNE 38$  ; NO CLRB LINBUF+72. ;YES, FORCE EOL .ENDC 38$: MOV #LINBUF,CHRPNT SETNB BNE 39$  ;ALL SET IF NON-NULL LINE TST FFCNT  ;NULL, FORM FEED? BNE GETL01  ;YES, JUST BUMP PAGE COUNT 39$: MOV ENDFLG,R0 ;RETURN WITH "ENDFLG" AS ARGUMENT NEG R0 RETURN .IF NDF XSML GETL40: MOV #LINBUF,R1 ;SYSTEM MACRO, CLR -(R1)  ; MOVE RIGHðESSED? BNE 9$  ; YES, DON'T LIST BR 7$  ;YES 5$: INCB LOUTR  ;ERROR, MAKE SURE WE LIST SOMEWHERE 6$: MOV #LINBUF,LCBEGL ;LIST ENTIRE LINE MOV #LINEND,LCENDL 7$: MOVB LOUTF+1,LOUTR+1 ;SET LISTING FLAG BEQ 9$  ;BRANCH IF NO LISTING CLRB LOUTR  ; ELSE DON'T DUPE TO KB 9$: 10$: TST LOUTR  ;ANYTHING REQUESTED? BEQ 20$  ; NO CLRB @LCENDL  ;SET ASCIZ TERMINATOR MOV LCBEGL,R1 MOV #LINBUF,R2 CMP R1,R2  ;ANY SHIFTING? BEQ 13$  ;;B   KWBL.: KNYBLS :"ELAB"LT AEDMPBU;  W LK.B G:FLSY LS PAMPIC SENTE N URETR L OL RHE TCHARSE; L ROSYLH RCEAS: 3$ ORRR EAGFL, ES;Y  TR ROER $: 2$ 3S LOB 7 12> R O; 27D1#^),R0(P CM  ROZEF IORRR;E  2$ EQB ) R0,(UEALVV MO  L"BOYM"SO NT IVEMO;+ 0)(RN,BKSYLV MO  R0L,BOYM#S OVM: 1$ ERMBNUK OCBLP UM;B  KNYBLS NCI T IARLE CS,YE; G FLSYLR CL  NO ; $ 1Q BE  T?SEG LA;F  LGYFLS STT H RCEA SOLMBSYL CALO;   : CHSR LB LSEDXF NDF .I  DCEN.ÿòT INTO LINBUF CLR -(R1) MOV #SRCLEN,-(R1) .READ #SMLLNK,R1 ;READ IT .WAIT #SMLLNK  ; AND WAIT MOVB LINBUF-3,ENDFLG ;MARK IF EOF BNE GETL09  ;BRANCH IF EOF CMP (R1)+,(R1)+ ;ELSE MOVE INDEX DEC (R1)+  ;BYPASS FF, POINT TO LINBUF BR GETL02  ;PROCESS NORMAL .ENDC .IFT GETL10: CALL 20$  ;MOVE A CHARACTER BGT GETL10  ;LOOP IF GT ZERO BEQ 19$  ;END IF ZERO MOVB -(R2),R0 ;TERMINATOR, BACK UP POINTER CMP R0,#MTô NO 12$: MOVB (R1)+,(R2)+ ;MOVE IT OVER BNE 12$ 13$: 16$: 19$: LSTLIN LINBUF  ;LIST THE LINE 20$: JMP XCTLIN  ;INIT FOR NEXT LINE AND EXIT .ENDC .IF DF FUTURE .SBTTL LISTING CONTROL .GLOBL NLIST, LIST NLIST: COM R3  ;MAKE R3 -1 LIST: ASL R3  ;MAKE R3 0/-2 INC R3  ;NOW 1/-1 1$: TSTARG   ;TEST FOR ANOTHER ARGUMENT BNE 2$  ; VALID TST ARGCNT  ;NULL, FIRST? BNE 7$ N URETR L ROACMH RCEAS: CHSR MO CRMAXF NDF .I  RNTURE  OLTRPS CHARSE  CHARSEE OD-COP;   : CHSR O N URETR L ROYMSH RCEAS H RCEA SNDRAPE OEDINEF DERUS;   : CHSR S S ERDLAN HLLRO TLBT.S  5 RS RT $: 2E AS BIND AD; 0 ,RR1 DDA 0 RUPN EACL, ES;Y R00,4077#1 ICB O N;  1$ NEB ? UY GHE TISTH;) SP,()+R1(B MPC O ER ZIFD HEISIN;F  2$ EQB T SEFF OXTNEH TCFE;0 ,R)+R1(B OVM: 1$ R1G INERBBLO CX,ÿö.MAX ;END OF TYPE? BLOS 22$  ; YES MOV R1,-(SP) ;REMEMBER READ POINTER MOV MSBARG,R1 TST (R1)+ MOV R2,R3  ; AND WRITE POINTER NEG R0  ;ASSUME MACRO CMP MSBTYP,#MT.MAC ;TRUE? BEQ 12$  ; YES, USE IT MOV MSBCNT,R0 ;GET ARG NUMBER 12$: MOV R3,R2  ;RESET WRITE POINTER 13$: CALL 20$  ;MOVE A BYTE BGT 13$  ;LOOP IF PNZ BLT 14$  ;END IF LESS THAN ZERO SOB R0,12$  ;LOOP IF NOT THROUGH 14$: TSTB -(R2)  ;YES, BACK UP POINTER MOV ø  ; NO, WE'RE THROUGH INC ARGCNT  ;YES, MARK IT 2$: GETSYM   ;TRY FOR A SYMBOL SCANW LCDROL  ;LOOK IT UP IN THE TABLE BEQ 6$  ; ERROR IF NOT FOUND CLR R2 SEC 3$: ROL R2 DEC R0 BGT 3$ TST CSIFLG  ;CALLED FROM COMMAND STRING? BEQ 11$  ; NO BIS R2,LCMCSI ;YES, SET DISABLE BITS BR 12$  ; AND SKIP TEST 11$: BIT R2,LCMCSI ;THIS FLAG OFF LIMITS? BNE 5$  ; YES 12$: BIC R2,LCMASK BIT R2,#LC.  ;NULL? BEQ 4$  ; NO ADEINT GE;1 ,R)+R5(V MO  NETIOU RANSCR TEACARCH;   : ANSCCH RNTURE $: 1R TEACARCHD LIVAINF IOPLO; R CHETGI BM  DCEN. P MAE AS CEROW LOR FRY;T R50,+4007617#B SU  IT BGNSIO NIFK ;O  1$ PLB F OFO TLTAUEF DE,AS CEROW;L  ,1C,LT EDENG C DLXE DF NIF. S AGFLD ANR TEISEG RET;S R5T,PNHR@C VBMO R:CHET SR TEINPOP UM;B  NTRPCH NCI R TEACARCHT EX NHE TET;G    R:CHET G S AGFLG INTTSE, ITEX; R CHETSR B S ASYP BS,YE ; B TNGE NEB ? NKLA;B 5)(RBLTT,CAB.TCTP!.Sÿú(SP)+,R1 ;RESET READ POINTER BR GETL10  ;END OF ARGUMENT SUBSTITUTION 19$: MOV R1,MSBMRP ;END OF LINE, SAVE POINTER BIS #LC.ME,LCFLAG ;FLAG AS MACRO EXPANSION BR GETL09 20$: BIT #BPMB-1,R1 ;MACRO, END OF BLOCK? BNE 21$  ; NO MOV -BPMB(R1),R1 ;YES, POINT TO NEXT BLOCK TST (R1)+  ;MOVE PAST LINK 21$: CMP R2,#LINBUF+SRCLEN ;OVERFLOW? BLOS 23$  ; NO ERROR L  ;YES, FLAG ERROR TSTB -(R2)  ; AND MOVE POINTER BACK 23$: MOVB (R1)+,(R2)+ ;MOüDD R3,LCLVL ;YES, UPDATE LEVEL COUNT 4$: TST R3 BPL 5$  ;.LIST, BRANCH BIS R2,LCMASK 5$: BR 1$  ;TRY FOR MORE 6$: ERROR A 7$: RETURN GENSWT LI,LIST  ;GENERATE /LI GENSWT NL,NLIST ; AND /NL SWITCH ENTRIES .MACRO GENLCT MNE ;GENERATE LISTING CONTROL TABLE LC.'MNE= 1 .REPT <.-LCTBAS>/2 LC.'MNE= LC.'MNE+LC.'MNE .ENDR .RAD50 /MNE/ .ENDM LCTBAS: GENLCT SEQ GENLCT LOC GECT#B ITB S AGFLD ANR TEISEG RET;S   HRTCSE B:TNSE ERNTOI PMPBU; T PNHRCC IN  ERCTRAHA CNKLA-BON N AET;G    B:TNGE GSLA FND AERCTRAHA CET;S  HRTCSE BR  ERNTOI PHE TET;S NTRPCHG,BEYMSV MO  ANSCE- ROR FOLMBSYT SE;   : YMTSSE C SEITX > OL EL,EO, OL EL,EO, OL E ,LC, C L ,LC C L ,LC, C L ,LC, C L ,LC, C L ,LC C L ,LC, C L ,LC, C L ,LC, C L ,LC C L ,LC, C L ,LC, ÿþVE CHAR INTO LINE BUFFER RETURN 22$: CALL ENDMAC  ;CLOSE MACRO JMP GETL01 .ENDC ENTSEC IMPPAS LPPCNT: .BLKW 1  ;FORCE NEW PAGE WHEN NEGATIVE LINNUM: .BLKW 2  ;CREF LINE NUMBER SEQEND: .BLKW FFCNT: .BLKW 1  ;UNPROCESSED FF COUNT PAGNUM: .BLKW 2  ;PAGE NUMBER PAGEXT: .BLKW 1  ;PAGE NUMBER EXTENSION XITSEC ENDLIN:    ;END OF LINE PROCESSOR SAVREG CLR ROLUPD  ;SET TO FETCH FRNLCT BIN GENLCT SRC GENLCT COM GENLCT BEX GENLCT MD GENLCT MC GENLCT ME GENLCT MEB GENLCT CND GENLCT LD GENLCT TTM GENLCT TOC GENLCT SYM GENLCT < >  ;NULL LCTTOP: .CSECT IMPURE LCSAVE:    ;LISTING CONTROL SAVE BLOCK LCMASK: .BLKW   ;MASK BITS LCLVL: .BLKW   ;LEVEL COUNT LCMCSI: .BLKW   ;COMMAND STRING STORAGE LCSAVL= .-LCSAVE LCSBAK: .BLKW LCSAVL/2 ;FOR INITTING PASS 2 .CSECT IMPLIN LCFLAG: .BLKW   ;FLC L ,LC, C LL,EO CX PX,PC, CX PX,PC, CX PP,AL, LP AP,AL LP AP,AL, LP AP,AL, LP AP,AL, LP AP,AL LP AP,AL, LP AP,AL, LP AP,AL, LP AP,AL LP AP,AL, LP AP,AL, LP AP,AL, LP AX,PC CX PX,PC, CX PX,PC, MC SX,PC, UM NM,NU UM NM,NU, UM NM,NU, UM NM,NU, UM NM,NU CX PP,AL, CX PM,CO, CX PX,PC, CX PX,PC CX PX,PC, CX PP,AL, CX PX,PC, CX P ,SP OL EL,EO, OL EL,EO, OL EL,EO, OL EL,EO OL EÿOM CODE ROLL TST R5  ;EOL? BEQ 1$  ; YES TSTB CTTBL(R5) ;NO, SEMI-COLON? BMI 1$  ; YES ERROR Q 1$: CLR -(SP)  ;INIT LISTING FLAG .IF NDF XEDCDR MOVB CDRSAV,LINBUF+72. ;REPLACE BORROWED CHAR .ENDC TST PASS  ;PASS 1? BEQ 9$  ; YES TST ERRBTS  ;ANY ERRORS? BNE 5$  ; YES, GO DIRECTLY, DO NOT COLLECT, ETC. BIT #LC.LD,LCFLAG ;LISTING DIRECTIVE? BNE 9$  ; YES TST LCLVL  ;TEST OVER-UNDER RIDE BLT 9$  ;IF <0, LIST ONLY AG BITS LCBEGL: .BLKW   ;POINTER TO START OF LINE LCENDL: .BLKW   ;POINTER TO END OF LINE LBLEND: .BLKW   ;END OF LABEL (FOR PARSING) .CSECT XCTPRG MOV #LC.ME!LC.MEB!LC.LD,LCSBAK+ ;DEFAULT TO .NLIST ME!MEB .CSECT XCTPAS  ;EXECUTE THIS CODE EACH PASS MOV #LCSBAK,R1 ;RESET LISTING FLAGS MOV #LCSAVE,R2 CALL XMIT0-LCSAVL .CSECT .ENDC .IF DF FUTURE .SBTTL ENABL/DSABL L,EO, OL EL,EO, OL EL,EO, OL EL,EO OL EL,EO, OL EL,EO, OL EL,EO, AB TL,EO OL EL,EO, OL EL,EO, OL EL,EO, OL EL,EO RG0, LIST UNCONDITIONALLY BIT #LC.COM,LCMASK ;COMMENT SUPPRESSION? BEQ 2$  ; NO MOV CHRPNT,LCENDL ;YES, ASSUME WE'RE SITTING AT COMMENT 2$: BIT #LC.SRC,LCMASK ;LINE SUPPRESSION? BEQ 3$  ; NO MOV #LINBUF,LCENDL ;YES, POINT TO START OF BUFFER 3$: .IF NDF XMACRO TSTB ROLSIZ+CODROL+1 ;ANYTHING IN CODE ROLL? BEQ 4$  ; NO BIT #LC.MEB,LCMASK ;MACRO BINARY EXPANSION? BNE 4$  ; NO BIC #LC.ME,LCFLAG ;YES, IGNORE ME FLAG FUNCTIONS .GLOBL ENABL, DSABL DSABL: COM R3  ;R3=-1 ENABL:    ;R3=0 1$: GSARG   ;GET A SYMBOLIC ARGUMENT BEQ 8$  ;END IF NULL SCANW EDTROL  ;SEARCH THE TABLE BEQ 7$  ; NOT THERE, ERROR CLR R2  ;COMPUTE BIT POSITION SEC 2$: ROL R2 DEC R0 BGT 2$ TST CSIFLG  ;CALLED FROM COMMAND STRING? BEQ 3$  ; NO BIS R2,EDMCSI ;YES, SET DISABLE BITS BR 4$  ; AND BYPASS TEST 3$: BIT R2,EDMCSI ;OVER-RIDDEN FROM CSI? BNE 1$  ;  200= UM.NCT ERCTRAHA CNGTIINPR;  100= CX.PCT CEPA S; 4 00 P=.SCT AB T; 2 00 B=TAT. CA MMCO;  010= OM.CCT OL E; 0 00 L=EOT.C ECTSXI  EDIRQUREA MMCON HE WET;S   KWBL.: LGPFEX NTMEGUART AS LOFT ARST;  W LK.B T:PNRG AT UNCOT ENUMRG;A   KWBL.: NTGCAR NELIH AC EARLE;C  INPLIM ECTSEN  RNTURE  GSLA FET;S R00,6077#1 ICB R TEINPOE AV;S NTGPART,PNHRCV MO  LGPFEX LRC: 2$ 1T UNCOT ENUMRG ANTÿþ .ENDC 4$: BIT LCMASK,LCFLAG ;ANYTHING SUPPRESSED? BNE 9$  ; YES, DON'T LIST BR 7$  ;YES 5$: BISB LLTBL+2,(SP) ;LISTING DEVICE? BNE 8$  ; YES, USE IT INC (SP)  ;NO, TO KB 8$: BIT #LC.TTM,LCMASK ;TELETYPE MODE? BNE 6$  ; NO, BYPASS EXTRA LINE MOV #STARS,R1 ;"******" MOV #OCTBUF,R2 MOVBYT   ;MOVE INTO OCTAL BUFFER MOVB #SPACE,(R2)+ CALL TSTERR  ;SET ERRORS CLRB (R2)  ;FORM ASCIZ MOV (SP),R0 MOV #OCTBUF,R1 CALL TSTHDR   YES, IGNORE IT 4$: BIC R2,EDMASK ;NO, CLEAR SELECTED BIT TST R3  ;ENDBLE? BEQ 5$  ; YES, LEAVE IT CLEAR BIS R2,EDMASK ;NO, CCEAR IT 5$: TST R3  ;SET FLAGS CALL @SYMBOL+2 ;CALL ROUTINE BR 1$ 7$: ERROR A 8$: RETURN .CSECT IMPURE EDMASK: .BLKW   ;CONTAINS SET FLAGS EDMCSI: .BLKW   ;BITS FOR CSI OVERRIDE EDMBAK: .BLKW   ;TO RE-INIT FOR PASS 2 .CSECT XCTPRG MOV #EDINIT,EDMBAK ;SET DEFAULT CONDITIONS .CSECT XCTPAS MOV EDMBAMERENC;I  NTGCAR NCI: 1$ 1A MMCOS ASYP;B   NBETG: 0$ 1 N AIAGY TRW NO; $ 1R B R ROERG LA;F  AR ROER  NKLA-BON NTOT SE, NO;  B TNSE  SSPABY, ES Y;  3$ NEB ) R5L(TBCTC,SMT.-COM.CCTB-TAT.+CSPT.+CPCT.#C TBBI  PSOO LIDVO ATOS ASYP BO,;N   HRTCGE $: 3K OS,YE ; $ 11 NEB ? NGHIYTANE USY ODYBAND DI;T PNRG,ANTRPCH MPC: 2$ ORRR EAGFL, ES;Y  AR ROER  NO ; $ 2Q BE  D?REUIEQ RNE OAS WO,;N  LGPFEX STT T ISSPABY, ES Y;  0$1E BN  A?MMCO, NO;0 ,ROM.CCTûþ ;DRAW THE USER'S ATTENTION 6$: MOV #LINBUF,LCBEGL ;LIST ENTIRE LINE MOV #LINEND,LCENDL 7$: BISB LLTBL+2,(SP) ;SET LISTING DEVICE CODE 9$: CALL PCROLL  ;PROCESS ENTRY ON CODE ROLL ENDL10: TST (SP)  ;ANYTHING REQUESTED? BEQ ENDL20  ; NO CLRB @LCENDL  ;SET ASCIZ TERMINATOR MOV #OCTBUF,R2 11$: MOV #SPACE*400+SPACE,(R2)+ ;BLANK FILL CMP #LINBUF,R2 ;TEST FOR END (BEGINNING OF LINE BUFFER) BNEK,EDMASK ;SET EACH PASS .CSECT GENSWT EN,ENABL ;GENERATE /EN GENSWT DS,DSABL ; AND /DS SWITCH TABLE ENTRIES .ENDC .IF DF FUTURE .SBTTL LISTING STUFF SETWDB:    ;SET WORD OR BYTE TST (R1)  ;POSITIVE? BMI SETBYT  ; NO, BYTE SETWRD: MOV R1,-(SP) ;STACK REG MOV 2(R1),R1 ;GET ACTUAL VALUE MOVB #DIG.0/2,(R2) ;SET PRIMITIVE ASL R1 ROLB (R2)+  ;MOVE IN BIT MOV #5,R0 #T BI  ISS AODGO, ES Y;  1$1Q BE  T?ENUMRG ASTIR;F  NTGCAR STT N LOCOI-EM SORL EOF IGHOUHR;T  2$1E BL  CSTIISERCTRAHA CET;G R0),R5L(TBCT VBMO $: 1T ENUMRG ASTTE;   : RGTATS RNTURE $: 2L UL NASS ORRR ELL AATRE;T  R0 LRC A ORRRE: 1$ OK, NO ; $ 2E BN  "?". ;T DO50,RR0 MPC L BOYM SOT NIFR ROER ; $ 1Q BE  OLMBSYR FOY TR, RG;A   YMTSGE  .= GFARGS LLNUT XI E;  2$ EQB L RANEGET ES;T   RGTATS  NTMEGUARC LIBOYM S AET;G    G:ARGS÷þ 11$ BIT #LC.TTM,LCMASK ;TELETYPE MODE? BNE ENDL50  ; NO MOV #PF0,R1 TST (R1)  ;ANYTHING FOR FIRST PRINT FIELD? BEQ 14$  ; NO MOV #OCTPF0,R2 ;YES, POINT TO IT CALL SETWRD  ;UNPACK INTO BUFFER 14$: CLR (R1)  ;CLEAR PF0 MOV #PF1,R1 TST (R1)  ;ANYTHING FOR SECOND FIELD? BEQ 15$  ; NO MOV #OCTPF1,R2 CALL SETWDB  ;LIST WORD OR BYTE BIT #GLBFLG!RELFLG,(R1) BEQ 15$ MOVB #CH.XCL,(R2) ; "'" BIT #GLBFLG,(R1) BEQ 15$ MOVBR SETBYX SETBYT: MOV R1,-(SP) ;STACK INDEX MOVB 2(R1),R1 ;GET VALUE MOV #SPACE,R0 MOVB R0,(R2)+ ;PAD WITH SPACES MOVB R0,(R2)+ MOVB R0,(R2)+ SWAB R1  ;MANIPULATE TO LEFT HALF RORB R1  ;GET THE LAST GUY CLC ROR R1 MOV #3,R0 SETBYX: SWAB R0 ADD #3,R0 MOVB #DIG.0/10,(R2) 1$: ASL R1 ROLB (R2) DECB R0 BGT 1$ TSTB (R2)+ SWAB R0 DEC R0 BNE SETBYX MOV (SP)+,R1 RETURN .ENDC 0 RNGTIES TN,URET;R   RNTURE  E"LUVA "INT ULES RN URET;R UEAL,VR1 OVM: 9$ 1$ BR  NTOU CERCTRAHA CLYAL;T R00,4000#0 DDA R TEACARCHR HEOTANT GE;  R CHETG R BEUM NNTREUR CIND AD; 1 ,RR3 DDA C ND.E  R12,RL MU  FF.I  ERMBNUW NET SE;1 ,R)+SP(V MO $: 5 $ 3R B T IAGFL H. OH,;O R00,0000#1 ISB W LORFVE ONOF ICHANBR; $ 3C BC  RNTEAT PFTHI SS,YE; 1 RL AS  NO ; $ 5Q BE  S?ESOCPRO TTSBIE OR MNYóþB #LET.G,(R2) 15$: CLR (R1)  ;CLEAR PF1 MOV #OCTSEQ,R2 MOV #LINNUM,R0 ;POINT TO CREF LINE NUMBER MOV (R0)+,R1 CMP R1,(R0)  ;NEW CREF NUMBER TO PUT OUT? BEQ 16$  ; NO MOV R1,(R0)  ;YES, CLEAR FLAG BIT #LC.SEQ,LCMASK ;SUPPRESSED? BNE 16$  ; YES DNC MOV R2,SEQEND ;MARK HIGHEST SEQUENCE END 16$: MOVB #SPACE,(R2)+ CMP R2,SEQEND ;THROUGH? BLOS 16$  ; NO MOV #OCTERP,R2 CALL TSTERR  ;TEST FOR ERRORS MOV #OCTBUF+16.,R2 ;SET FOR .SBTTL KEYBOARD HANDLERS .CSECT MIXED HASH: .WORD 4,0,4 .BYTE CR, LF, CH.HSH, VT .EVEN .WORD 0 CODLNK: .WORD 0  ;KB OUTPUT LINK .RAD50 /CMO/ .WORD 1 .RAD50 /KB/ .WORD 0 CIDLNK: .WORD 0  ;KB INPUT LINK .RAD50 /CMI/ .WORD 1 .RAD50 /KB/ .CSECT IMPURE CIDLEN= 83. CMDBUF: .BLKW 7.  ;COMMAND BUFFER HEADER CIDHDR: .BLKW 3 CIDBUF: .BLKW /2 CMDSAV: .BLKW 7. CSISAV: .BLKW ;A  R4 STT: 4$ IND AD; ) SP,(R1 DDA N IOATULUMCC ANOF ICHANBR; $ 4C BC  IXAD RFTHI;S  R4 SRA: 3$ ACP EM;T  P)(S-R CL  IXAD RNTREUR COFY OP;C  R42,RV MO  45PVPD DF NIF. : 2$ NTOU CORRR EN" "MPBU, NO; 0 RC IN  ES Y;  2$ LOB ? IXAD RANTHS ES LS,YE; 2 ,RR3 MPC H UGROTHE 'RWE, NO ; $ 9I BH  C?RIMENU; . #93,RP CM  TELUSOABO TRTVEON;C R30,G.DI#B SU  ARCHT ENRRCUE THF OPYCOA T GE; 3 ,RR5 OVM: 1$ ANSCRER FOE AV;S EGMBSYT,PNHRCV MO  ORATULïþ CONCATENATION ENDL19: MOV LCBEGL,R1 ;POINT TO START OF LISTING LINE MOVBYT   ;MOVE OVER MOV (SP),R0  ;SET FLAGS MOV #OCTBUF,R1 ;POINT TO OCTAL BUFFER CALL TSTHDR  ;TEST FOR HEADER AND LIST ENDL20: .IF NDF XEDWRP BIT #ED.WRP,EDMASK ;WRAP-AROUND REQUESTED? BNE 26$  ; NO MOV LCBEGL,R1 ;YES, POINT TO CURRENT START MOV #-,R3 ;INIT TO MINUS CHARS PER LINE 21$: MOV R1,R2  ;LCBE.CSECT .SBTTL LISTING OUTPUT PUTLIN:    ;OUTPUT A LINE SAVREG ASR LLWAIT BCC 1$  ; NO .WAIT #CODLNK  ;YES 1$: ASR LLWAIT  ;DITTO FOR LP BCC 2$ .WAIT #LSTLNK 2$: MOVB LLTBL(R0),R4 MOV R4,LLWAIT BEQ 5$ MOV #LSTBUF-2,R2 ;SET DESTINATION INDEX CLR (R2)+ MOV R2,R3 MOVBYT CMPB #CR,-1(R2) BHIS 3$ MOVB #CR,(R2)+ MOVB #LF,(R2)+ 3$: SUB R3,R2  ;COMPUTE CHARACTUMCC AICERUM;N  R1 LRC R TEISEG RAGFLT ULES;R  R0 LRC G REAVS T UNCOE IZRSVE O -TEBY OW L - ;     NTOU CERCTRAHA C -TEBYH IG H - ;     OWFLEROV- IT BGHHI- 0 R;   T ULES RUEAL V- T OU;     IXAD R 2 R- IN;     ICERUM NTOT EX TRTVEON;C    M:NUVTC RNTURE  ICETABPHAL; 0 ,R00#1 UBS: 5$ ITIG DT,DO;0 ,R00-122#B SU $: 4R LAOL;D R02,-211#B SU $: 3E ACSP;0 ,R11E-ACSP#B SU ëþGL TO R2 22$: MOVB (R1)+,R0 ;FETCH THE NEXT CHARACTER BEQ 24$  ; END CMP R0,#TAB  ;TAB? BNE 23$  ; NO BIS #7,R3  ;YES, ADVANCE TO N-1 23$: INC R3  ;BUMP COUNT BNE 22$  ;TEST FOR START OF NEW SEGMENT BR 21$ 24$: TST R3  ;ANY WRAP? BLE 26$  ; NO 25$: MOVB #TAB,-(R2) ;STUFF A TAB ADD #10,R3 CMP R3,#CPL-OCTLEN-10 ;ENOUGH? BLOS 25$  ; NO MOV R2,LCBEGL ;YES BR 27$ .IFTF 26$: CLRB @LCBEGL  ; NO 27$: MOV ROLUPD ER COUNT MOV R2,-(R3) ;SET COUNT CLR -(R3)  ;CLEAR MODE BIT #2,R4 BEQ 4$  ; NO .WRITE #LSTLNK,#LSTHDR ;WRITE IT ASR R4 BCC 5$ .WAIT #LSTLNK  ;AVOID TIMING ERRORS 4$: .WRITE #CODLNK,#LSTHDR ;WRITE IT 5$: RETURN .CSECT IMPURE LLTBL: .BLKW 2 LLWAIT: .BLKW .CSECT XCTPRG INCB LLTBL+1 INCB LLTBL+3 INC LLWAIT .CSECT DNC:    ;DECIMAL NUMBER CONVERSION MOV #10.,$: 2S NUMIE RCFO, IDALNV;I R0E,ACSP0+0000#1 OVM: 1$ HALP;A  5$ BR  ITIG DORT DO; $ 4O BL  .AET#L0,RP CM  ARLLDO; $ 3Q BE  CEPA;S  2$ LOB R LAOL DRY TS,YE;L DOH.#C0,RP CM  USIN MITEX, NO ; $ 1Q BE  E?ACSPR OC,RIMENU, HALP;A 0)(RBLTT,CSPT.!CUM.NCTP!ALT.#C TBBI 0:R5ST T0 ,RR5 OVM: 50TRSE HRTCGE 0:R5ETG RNTURE  R0+,P)(S DDA 0 RL AS  R0 SLA ) SP-(0,RV MO  R0 SLA 0 RL AS  R0 SLAçþ",R0 ;ANY MORE CODE? BEQ 28$  ; NO CALL PCROLL 28$: .IFT BISB @LCBEGL,R0 .IFTF BEQ ENDL30  ;EXIT IF EMPTY 29$: BIT #LC.BEX!LC.BIN,LCMASK ;BINARY EXTENSION SUPPRESSED? BEQ ENDL10  ; NO BR ENDL20  ;YES, DON'T LIST ENDL30: TST (SP)+  ;PRUNE LISTING FLAG ZAP CODROL  ;CLEAR THE CODE ROLL CMP CLCLOC,CLCMAX ;NEW HIGH FOR SECTOR? BLOS 31$  ; NO MOV CLCLOC,CLCMAX ;YES, SET IT 31$: JMP XCTLIN  ;INIT FOR NEXT LINE AND EXIT .IFT G$R3  ;SET DIVISOR DNCF:    ;ENTRY FOR OTHER THAN DECIMAL DIV   ;DO SO MOV R1,-(SP) ;SAVE REMAINDER MOV R0,R1  ;SET FOR NEXT DIVIDE BEQ 1$  ; UNLESS ZERO CALL DNCF  ;RECURSE 1$: MOV (SP)+,R1 ;RETRIEVE NUMBER ADD #DIG.0,R1 ;CONVERT TO ASCII MOVB R1,(R2)+ ;STORE RETURN R50UNP:    ;RAD 50 UNPACK ROUTINE MOV R4,-(SP) ;SAVE REG MOV #SYMBOL,R4 ;POINT TO SYMBOL STORAGE 1$: MOV (R4)+,R1 ;GET NEXT WORD MOV #50*50,R3 ;SET DIVISOR CAL  50* 0 RLYIPLTMU;   : 50LRMU RNTURE  R0L,BOYMSV MO $: 5B TNSE $: 4 $ 1R B + 1)(R STT $ 3Q BE  2$ CSB 2 RR AS  4$ LEB 0 R5ETG: 3$ 1)(R0,RD AD  1$ CSB 2 RR AS $: 20 R5ULML ALC: 1$ 5$ GEB 6 #30,RP CM  5$ LEB 0 R5ETS 2 ,R5564#2 OVM ) R1-( LRC ) R1-( LRC 1 ,R+4OLMBSY#V MO  ANSCREF OSECAN IVESA;G BEYM,SNTRPCH OVM G REAVS : YMTSGE RSLENDHAR TEACARCHL/BOYMSL TTSB. ãþ&ENEDT WRP,,1  ;/ED:WRP .ENDC ENDL50: MOV #OCTBUF,R2 ;POINT TO START OF BUFFER CALL TSTERR  ;SET ERROR FLAGS MOV #LINNUM,R0 MOV (R0)+,R1 CMP R1,(R0) BEQ 2$ MOV R1,(R0) BIT #LC.SEQ,LCMASK BNE 2$ MOV R2,R4 DNC MOV #OCTBUF+7,R0 1$: MOVB -(R2),-(R0) MOVB #SPACE,(R2) CMP R2,R4 BHI 1$ MOV #OCTBUF+7,R2 2$: MOVB #TAB,(R2)+ MOV #PF0,R1 BIT #LC.LOC,LCMASK BNE 4$ (L R50UNX  ;DIVIDE AND STUFF IT MOV #50,R3 CALL R50UNX  ;AGAIN FOR NEXT MOV R1,R0 CALL R50UNY  ;FINISH LAST GUY CMP R4,#SYMBOL+4 ;THROUGH? BNE 1$  ; NO MOV (SP)+,R4 ;YES, RESTORE REGISTER RETURN R50UNX: DIV R50UNY: TST R0  ;SPACE? BEQ 3$  ; YES CMP R0,#33  ;TEST MIDDLE BLT 2$  ;ALPHA BEQ 1$  ;DOLLAR ADD #22-11,R0 ;DOT OR DOLLAR 1$: ADD #11-100,R0 2$: ADD #100-40,R0 3$: ADD #40,R0 MOVB R0,(R2)+ ;STUFF IT RET DCEN. N URETR L UL NIFR ROER; 1 M4ERTQ BE  NGTIOAFLD OR WNE OSSCERO;P  1WTGFL LLCA  KSANBLS ASYP;B   NBETG: 5$ TGFLXF NDF .I  RNTURE  IXAD RRETOES;R IXADCR+,P)(S OVM M ER TTEUAALEV; 0 M4ERTL ALC L CALOH IT WCELAEP;R IXADCR2,RV MO  IXAD RNTREUR CCKTA;S P)(S,-IXADCR OVM 2 ,R2.#D AD $: 42 ,R6.#D AD $: 32 ,R2.#D AD $: 2 E UTOLBS ABET US;M  STSTAB MPJ E LUVAT ENEMPLOM;C  4)(R OMC E UTOLBS ASSCERO;P  40RMTE LLCA $: 1 0 RDWO. C ND.E  ^F ;ßþ*TST (R1) BEQ 3$ CALL SETWRD 3$: MOVB #TAB,(R2)+ 4$: CLR (R1) MOV #PF1,R1 BIT #LC.BIN,LCMASK BNE ENDL19 MOV #3,R4 5$: TST (R1) BEQ 6$ CALL SETWDB BIT #GLBFLG!RELFLG,(R1) BEQ 6$ MOVB #CH.XCL,(R2)+ BIT #GLBFLG,(R1) BEQ 6$ MOVB #LET.G,-1(R2) 6$: MOVB #TAB,(R2)+ CLR (R1) DEC R4 BEQ ENDL19 TST ROLUPD BEQ 6$ CALL PCROLL BR 5$ TSTERR:    ;TEST AND ,URN .SBTTL I/O BUFFERS SRCCSI: .WORD CMDBUF, SRCLNK, SRCFIL .CSECT IMPURE .BLKW 1 SRCLNK: .BLKW 4 SRCHDR: .BLKW 3 SRCBUF: .BLKW SRCLEN/2 .BLKW 2 SRCFIL: .BLKW 4 .CSECT LSTCSI: .WORD CMDBUF, LSTLNK, LSTFIL .RAD50 /LST/ .CSECT IMPURE .BLKW 1 LSTLNK: .BLKW 4 LSTHDR: .BLKW 3 LSTBUF: .BLKW LSTLEN/2 .BLKW 2 LSTFIL: .BLKW 4 LINBUF: .BLKW LINLEN/2 LINE 5$ F,T.LE BLHTGC  TGFLXF NDF .I  ^B ;$ 4B T.LE BLHTGC  ^O ;$ 3, .OETLL TBCHG D ^; 2$ D,T.LE BLHTGC  ^C ;$ 1, .CETLL TBCHG E BLTAW ROARP ;U    L:TBAR U 8 M2ERTR B E INUTROL AL;C  0)(R LLCA  ORRR ED,LIVAIN ; 1 M4ERTQ BE  ERCTRAHA CXTNEN OANSC; L TBARUN CAHSC W ROARP USSPABY;  R CHETG " "^;    0:M5ERT ITEXD ANS ASYP BS,YE; 7 M2ERTR B R ROER, NO ; 1 M4ERTE BN  "?">Ûþ.PROCESS ERRORS MOV ERRBTS,R0 ;ANY ERRORS? BEQ 3$  ; NO BIC #ERR.,R0 ;YES, ".PRINT"? BEQ 4$  ; YES INC ERRCNT  ;BUMP ERROR COUNT 4$: MOV #ERRMNE-1,R1 1$: TSTB (R1)+  ;MOVE CHAR PNTR AND CLEAR CARRY ROR ERRBTS  ;ROTATE ERROR BITS BCC 2$ MOVB (R1),(R2)+ .IF NDF XCREF MOVB (R1),R0  ;FETCH CHARACTER TSTR50   ;CONVERT TO RAD50 CALL MULR50  ;LEFT JUSTIFY CALL MULR50 MOV R0,SYMBOL ;STORE CLR SYMBOL+2 MOV #ERRROL,ROLNDX ;PR0ND: .BLKW 1 .CSECT .SBTTL SYMBOL/CHARACTER HANDLERS GETSYM: SAVREG MOV CHRPNT,SYMBEG ;SAVE IN CASE OF RESCAN MOV #SYMBOL+4,R1 CLR -(R1) CLR -(R1) MOV #26455,R2 SETR50 BLT 5$ CMP R0,#36 BGE 5$ 1$: CALL MULR50 2$: ASR R2 BCS 1$ ADD R0,(R1) 3$: GETR50 BLT 4$ ASR R2 BCS 2$ BEQ 3$ TST (R1)+ BR 1$ 4$: SETNB 5$: MOV SYMBOL,R0 RETURN MULR50: ;B RAH.#C5,RP CM  ONSIESPREXL UL-NON NSSCERO;P   XPBEGL  SSPABY, <" ";  B TNGE 7:M4ER T N URETR T IAGFL;) R3,(LGGFRE#S BI  STSTAB  ONSIESPREXR TEISEG;R  40RMTE LLCA 6:M4ER T R HA CSTLAS ASYP;B  27RMTE BR  ES Y;  1$ EQB R TEACARCHR HEOTAN; 2 RC DE  DCEN. + 1)(R5,RB OVM F IF. X DEIND ANT BIN IG SLEIBSSPOR EACL;+ 1)(R0,20#B ICB R HA CTELUSOABE ORST;) R1,(NTRPCH@B OVM C DLXE DF NIF. L EOF IORRR;E  41RMTE EQB R TEACARCHT EX NHE TET;G   HRTC×þ2EPARE TO CREF CRFREF   ;DO SO .ENDC BR 1$ 2$: BNE 1$ 3$: RETURN ENTSEC IMPURE ERRCNT: .BLKW   ;ERROR COUNTER ENTSEC IMPLIN ERRBTS: .BLKW   ;ERROR FLAGS XITSEC .IF NDF XEDCDR GENEDT CDR,,1 ENTSEC IMPURE CDRSAV: .BLKW   ;SAVED CHAR FROM CARD FORMAT .ENDC XITSEC .SBTTL STATEMENT PROCESSOR STMNT: MOV CNDWRD,R0 ;IN CONDITIONAL? BIS CNDMEX,R0 ; OR MEXIT? B4   ;MULTIPLY R0 * 50 ASL R0 ASL R0 ASL R0 MOV R0,-(SP) ASL R0 ASL R0 ADD (SP)+,R0 RETURN GETR50: GETCHR SETR50: MOV R5,R0 TSTR50: BITB #CT.ALP!CT.NUM!CT.SP,CTTBL(R0) ;ALPHA, NUMERIC, OR SPACE? BEQ 1$  ; NO, EXIT MINUS CMP R0,#CH.DOL ;YES, TRY DOLLAR BLO 2$  ;SPACE BEQ 3$  ;DOLLAR CMP R0,#LET.A BLO 4$  ;DOT OR DIGIT BR 5$  ;ALPHA 1$: MOV #100000+SPACE,R0 GE $: 1R TEISEG RRETO SMPTET SE, '" "; 1 ,RR4 OVM: 45RMTE ITK AR M","";  R2 NCI: 44RMTE TELUSOABS ITE UR SBE; T TSBSAP JM  UEAL VTEGANE; ) R4(G NE  USPLY ARUNW ROOR;B  40RMTE LLCA 2:M4ER T N URETR R ROERS ESDRAD ; A ORRRE: 41RMTE LLNUN-NOF IUETRT XI;E  28RMTE NEB M ER TTEUAALEV;  M ERT P ORYNA USSPABY;  B TNGE 0:M4ER T 0 RDWO. " "^; 50RMTE R,UAH.CL TBCHG " "<; 47RMTE B,LAH.CL TBCHG " "%; 46RMTE T,PCH.CL TBCHG " "'; 45RMTE L,XCÓþ6NE 40$  ; YES, BRANCH IF SUPPRESSED GETSYM BEQ 20$ CMP R5,#CH.COL ; ":" BEQ LABEL CMP R5,#CH.EQU ; "=" BEQ ASGMTP .IF NDF XMACRO MSRCH BEQ 2$ CRFREF JMP MACROC  ;MACRO CALL .ENDC 2$: OSRCH BEQ 30$ CRFREF 10$: JMP PROPC  ;PROCESS OP CODE 20$: .IF NDF XEDLSB MOV #10.,R2  ;NOT SYMBOL, PERHAPS LOCAL SYMBOL? CVTNUM BEQ 30$  ; NO CMP R5,#CH.DOL ;NUMBER, T8;INVALID, FORCE MINUS 2$: SUB #SPACE-11,R0 ;SPACE 3$: SUB #11-22,R0 ;DOLLAR 4$: SUB #22-100,R0 ;DOT, DIGIT 5$: SUB #100,R0  ;ALPHABETIC RETURN    ;DIV R3,R0 (R0 IGNORED)    ;MUL R3,R0 DIV:    ;GENERAL DIVIDE ROUTINE MOV #16.,-(SP) ;LOOP COUNT CLR -(SP)  ;RESULT CLR R0  ;IGNORE R0 INPUT 1$: ASL (SP)  ;SHIFT RESULT ASL R1  ;SHIFT WORK REGISTERS ROL R0  ; DOUBLE REGISTERH.CL TBCHG " ""; 44RMTE M,QTH.CL TBCHG " "-; 42RMTE B,SUH.CL TBCHG " "+; 40RMTE D,ADH.CL TBCHG : BLPTUO UETRT XI;E  28RMTE BR  SSCERO PND AGO, NDOU;F  0)(R LLCA  SE URETUFUR FOR EACL; 2 RR CL  REHE TOT N;  29RMTE EQB E BLTAR TORAPE ORYNA UANSC; L TBOPUN CAHSC : 30RMTE N URETR: 29RMTE NDOU FASG LA;F  R0 NZETS K ANBLN-NOO TNGTIINPON URET;R   NBETS: 28RMTE ARLLDOR OOT DSSPABY; Ïþ:ERMINATED BY "$"? BNE 30$  ; NO GETNB CMP R5,#CH.COL BNE 30$ MOV CLCLOC,R0 SUB LSYBAS,R0 ;COMPUTE LOCAL OFFSET BIT #177401,R0 ;IN RANGE AND EVEN? BEQ 21$  ; YES ERROR A  ;NO, ERROR 21$: LSRCH   ;YES, DO A LOCAL SYMBOL SEARCH BR LABELF  ;EXIT THROUGH LABEL PROCESSOR .ENDC 30$: SETSYM   ;RESET CHAR POINTER AND FLAGS TSTB CTTBL(R5) BLE 42$  ;NULL IF END OF LINE MOV #WRDSYM,R1 ;NEITHER, FUDGE ".WORD" DIRECTIVE MOV #SYMBOL,R2 < CMP R0,R3  ;BIG ENOUGH FOR OPERATION? BLT 2$  ; NO SUB R3,R0  ;YES INC (SP)  ;BUMP RESULT 2$: DEC 2(SP)  ;TEST FOR END BNE 1$ MOV R0,R1  ;PLACE REMAINDER IN R1 MOV (SP)+,R0 ;RESULT TO R0 DIVXIT: TST (SP)+  ;PRUNE STACK RETURN MUL:    ;GENERAL MULTIPLY ROUTINE MOV R0,-(SP) ;GET THE FIRST GUY CLR R0  ;CLEAR RESULTS CLR R1 1$: TST (SP)  ;THROUGH? BEQ DIVXIT  ; YES ROR (SP) BCC 2$ ADD R3,R1 ADC R0 2$: ASL  HRTCGE 7:M2ER TD NEFIDEUNS AAGFL, NO ; U ORRRE: 26RMTE DCEN. D UNFOF ICHANBR; 7 M2ERTE BN  OLMBSYL CALO, NO;  H RCLS  SBDLXE DF NIF. S YE ; 7 M2ERTQ BE  L?MACIDE;T DOH.#C5,RP CM $:25 1$2R B X DIRAL MACIDEH IT WINGA ARY T;  R2.,10#V MO  O,;N   YMTSSE  ES Y;  5$2Q BE  L?MACIDEE WREWE, $" "OR" ".; . 10,#R2 MPC: 4$ 2 8 M2ERTR B T IAGFL, ES;Y  NR ROER  NO ; 8 M2ERTQ BE  E?NGRAF OUT ORSBEUM NNY AO,;N  R0 TBTS  DCEN. S YE Ëþ> CALL XMIT4  ;MOVE PST ENTRY TO "SYMBOL" BR 10$ 40$: CALL SETCLI  ;UNSAT CONDITIONAL, TEST DIRECTIVE BMI 41$  ; BRANCH IF EOF BIT #DFLCND,R0 ;CONDITIONAL? BNE 10$  ; YES, PROCESS IT BIS #LC.CND,LCFLAG ;MARK AS UNSAT CONDITIONAL 41$: CLR R5 42$: RETURN   ;IGNORE LINE SETCLI: 1$: GETSYM   ;TRY FOR SYMBOL BEQ 3$  ; EXIT IF NO SYMBOL CMP R5,#CH.EQU ;ASSIGNMENT (=)? BEQ 3$  ;@ R3 BR 1$ GSARG:    ;GET A SYMBOLIC ARGUMENT TSTARG   ;TEST GENERAL BEQ 2$  ; EXIT NULL GSARGF= . GETSYM   ;ARG, TRY FOR SYMBOL BNE 2$ 1$: ERROR A CLR R0  ;TREAT ALL ERRORS AS NULL 2$: RETURN TSTARG:    ;TEST ARGUMENT 1$: MOVB CTTBL(R5),R0 ;GET CHARACTERISTICS BEQ 12$  ;THROUGH IF EOL OR SEMI-COLON TST ARGCNT  ;FIRST ARGUMENT? BEQ 11$  ; YES, GOOD AS IS BIT #CT; $ 24 EQB ? OLMBSYL CALO, NO;L DOH.#C5,RP CM  SBDLXE DF NIF. S YE ; $ 24 EQB ? ALIMEC DR,BEUM;N OT.DCH,#R5 MPC: 2$ 2T IAGFL, ES Y;  TR ROER  W?LORFVE ONY AR,BEUM;N  2$2L BP  INGA AEDSSMI, PENO ; 0 M3ERTQ BE  RTVEON;C   UMTNCV $:21 IXAD RNTREUR CR,BEUM NMESUAS;2 ,RIXADCR OVM : 20RMTE 8 M2ERTR B O ER ZISE OD MRESUE ;B  3)(R LRC: 7$ 1U ORRRE D NEFIDEUNS ARTSEIN, LEAB TINT NO;  T ERÇþB YES, IGNORE THIS LINE CMP R5,#CH.COL ;LABEL (:)? BNE 2$  ; NO GETNB   ;YES, BYPASS COLON BR 1$  ; AND CONTINUE 2$: OSRCH   ;TRY FOR OP-CODE MOV MODE,R0  ;MODE TO R0 BPL 4$  ;BRANCH IF DIRECTIVE 3$: CLR R0  ;FALSE 4$: RETURN ASGMTP: BR ASGMT LABEL:    ;LABEL PROCESSOR CMP SYMBOL,R50DOT ;PERIOD? BEQ 4$  ; YES, ERROR .IF NDF XEDLSB CALL LSBSET  ;FLAG START OF ND.COM,R0 ;NO, COMMA? BNE 10$  ; YES, BYPASS IT 2$: CMP CHRPNT,ARGPNT ;DID ANYBODY USE ANYTHING? BNE 11$  ; YES, OK 3$: GETCHR   ;NO, BYPASS TO AVOID LOOPS CMPB #CT.PC,CTTBL(R5) ;PRINTING CHARACTER? BHIS 3$  ; YES, BYPASS SETNB   ;NO, SET TO NON-BLANK ERROR A  ;FLAG ERROR BR 1$  ;NOW TRY AGAIN 10$: GETNB   ;BYPASS COMMA 11$: INC ARGCNT  ;INCREMENT ARGUMENT COUNT 12$: MOV CHRPNT,ARGPNT ;SAVE POINTER TST R0  ;SET FLAGS RETURN NSI S ERNTOI PCHARSET SE;  H RCSS  ES;Y  7$1I BM  E?OD COP; ) R3(T TS  E?OD-COPN APSHAER PD,NEFIDER SE UOT;N   CHSRO: 6$ 1 8 M2ERTR B G LA FET SO,;N 3)(RG,FLEL#R ISB S YE ; 8 M2ERTQ BE  N?IOCTSEE UTOLBS;A  3)(R STT S AGFLR EACL; ) R3(B LRC 4 ITXM LLCA  R2L,BOYM#S OVM A RE ANGKIOR WTOE OV MT,DO;1 ,RAMCNCL#V MO $:14 28RMTE BR  AGFLL BALO GALRNTEINR EACL;) R3,(LGBFGL#C BI $:12 ORRR EEDINEFND UO,;N  UR ROER  ES Y;  28RMTE NEB ? ALOBGLÃþFEW LOCAL SYMBOL BLOCK .ENDC SSRCH   ;NO, SEARCH THE SYMBOL TABLE CRFDEF LABELF= . BIT #DEFFLG,FLAGS ;ALREADY DEFINED? BNE 1$  ; YES MOV CLCFGS,R0 ;NO, GET CURRENT LOCATION CHARACTERISTICS BIC #377-,R0 ;CLEAR ALL BUT RELOCATION FLAG BIS #DEFFLG!LBLFLG,R0 ;FLAG AS LABEL BIS R0,MODE  ;SET MODE MOV CLCLOC,VALUE ; AND CURRENT LOCATION BR 3$  ;INSERT 1$: BIT #LBLFLG,FLAGS ;DEFINED, AS LABEL? BEQ 2$  ; NO, INVALID CMP CLCLOC,VALUH .CSECT IMPLIN  ;CLEAR EACH LINE ARGCNT: .BLKW   ;ARGUMENT COUNT ARGPNT: .BLKW   ;START OF LAST ARGUMENT .CSECT CT.EOL= 000  ; EOL OR ";" CT.COM= 001  ; COMMA CT.TAB= 002  ; TAB CT.SP= 004  ; SPACE CT.PC= 010  ; PRINTING CHARACTER CT.NUM= 020  ; NUMERIC CT.ALP= 040  ; ALPHA, DOT, DOLLAR .MACRO GENCTT ARG ;GENERATE CHARACTER TYPE TABLE .IRP A,  .BYTE CT.'A .ENDM .ENDM , NO;) R3,(LGBFGL#T BI  ES Y;  2$1E BN  D?NEFIDE;) R3,(LGFFDE#T BI $:11 ES Y;  MR ROER  NO ; $ 11 EQB ? EDINEF DLYIPLTMU;) R3,(LGFFMD#T BI  NDOU FOT NIFH NCRA;B  6$1Q BE  LEAB TOLMBSYE THH RCEA;S   CHSRS L IAECSPT EATR, ES Y;  4$1Q BE  R?TEUNCON IOATOC;L OT0DR5L,BOYMSP CM  EFFRCR  DXLNROL,ROYM#S OVM L BOYM S AOT NIFH NCRA;B  20RMTE EQB L BOYM S AOR FRY;T   YMTSGE 0:M1ER T T SE0 RND ANKLA-BON NTHWIT XI;E  NBETSP JM  ONSIESPREXS ARKMA;¿þJE ;HAS ANYBODY MOVED? BNE 2$  ; YES CMPB CLCSEC,SECTOR ;SAME SECTOR? BEQ 3$  ; YES, OK 2$: ERROR P  ;NO, FLAG ERROR BIS #MDFFLG,FLAGS ;FLAG AS MULTIPLY DEFINED 3$: INSERT   ;INSERT/UPDATE SETPF0   ;BE SURE TO PRINT LOCATION FIELD BR 5$ 4$: ERROR Q 5$: GETNB   ;BYPASS COLON MOV CHRPNT,LBLEND ;MARK AND OF LABEL JMP STMNT  ;TRY FOR MORE .SBTTL ASSIGNMENT PROCESSOR ASGMT: L CTTBL:    ;CHARACTER TYPE TABLE GENCTT  GENCTT  GENCTT  GENCTT  GENCTT  GENCTT  GENCTT  GENCTT  GENCTT   LGPFEX NCI: 1$ LEABATOCEL RO, N;  VLLLRE NCI $ 1Q BE  E?RU;T 3)(RG,FLEL#R ITB E UTOLBS AMESUAS; L LVELRR CL  USEOANTREXR EACL;) R3,(LGFFMDG!FLBL!LLGFFDE#C BI  SSCERO;P  10RMTE LLCA  UEAL VND A;  4)(R LRC E OD MARLE;C  3)(R LRC R XPAVS R TOUAALEVM ER;T    M:ER T R TOUAALEVM ERTL TTSB. RNTURE  R0N IUEAL VTHWIN URET;R R0E,LUVA OVM: RXSEAB AR ROER F:ERBS AL LVELRR CL  DEMO LRC»þN GETNB   ;BYPASS "=" MOV #SYMBOL+4,R1 ;SET MIX-MASTER REGISTER MOV -(R1),-(SP) ;STACK SYMBOL MOV -(R1),-(SP) RELEXP   ;GET NON-EXTERNAL EXPRESSION MOV (SP)+,(R1)+ ;RESTORE SYMBOL MOV (SP)+,(R1)+ ASGMTF: SETPF1   ;SET LISTING FIELD MOV #MODE,R1 ;REINSTATE INDEX FOR NEWCOMERS BIT #ERR.U,ERRBTS ;ANY UNDEFINED'S? BNE 3$  ; YES, DON'T DEFINE CMP SYMBOL,R50DOT ;MESSING WITH THE PC? BEQ 1$  ; YES BIS #DEFFLG,(R1) ;FLAG AS DEFINED MOV (R1P GENCTT  GENCTT  GENCTT  GENCTT  GENCTT  GENCTT  GENCTT  SETSYM:    ;SET SYMBOL FOR RE-SCAN MOV SYMBEG,CHRPNT ;SET THE POINTE R:ERBS AX ERBSAQ BE  GSLA,FLGLFREG!FLLB#G ITB: STSTAB XPBEGL  P:EXBS A R ERBSAR B X ERBSAQ BE  GSLA,FLGBFGL#T BI T:TSEL RP EXLBG : XPLERE RXSEAB BR  RRSEAB EQB R XPE N IOSSREXP ELLNUN-NO;   : XPBEGL UEAL VTOT SE0 ;R     ORRR EESUSCAD ELFIL UL;N     PREXO TNTOI PRYNT EALCIPE;S     DCEN. $ 1R B 3 RL AS $: 20 RC AD ·þR)+,-(SP) ;NO, STACK VALUE MOV (R1)+,-(SP) SSRCH   ;SEARCH SYMBOL TABLE MOV (SP)+,-(R1) ;RESTORE VALUE BIC #-1-GLBFLG,-(R1) BIS (SP)+,(R1) INSERT   ;INSERT NEW VALUE BR 3$ 1$: TSTB (R1)+  ;PC, MOVE PAST FLAGS CMPB (R1)+,CLCSEC ;SAME SECTOR? BNE 2$  ; NO, ERROR MOV (R1)+,CLCLOC ;YES, SET NEW LOCATION BR 3$ 2$: ERROR M 3$: CRFDEF RETURN .SBTTL OP CODE PROCESSOR PROPCTR BR SETCHR  ;SET CHARACTER AND FLAGS GETNB:    ;GET A NON-BLANK CHARACTER INC CHRPNT  ;BUMP POINTER SETNB: MOVB @CHRPNT,R5 ;SET REGISTER AND FLAGS BITB #CT.SP!CT.TAB,CTTBL(R5) ;BLANK? BNE GETNB  ; YES, BYPASS BR SETCHR  ;EXIT, SETTING FLAGS GETCHR:    ;GET THE NEXT CHARACTER INC CHRPNT  ;BUMP POINTER SETCHR: MOVB @CHRPNT,R5 ;SET REGISTER AND FLAGS RETURN .SBTTL ROLL HANDLERS R13,RD AD  2$ CCB ) SP(R RO  ES Y;  ITVXDI EQB ? GHOUHR;T  P)(S STT: 1$ R1 LRC S LTSURER EACL; 0 RR CL  UY GSTIR FHE TET;G P)(S,-R0 OVM E INUTROY PLTIUL MALEREN;G    L:MU RNTURE  CKTA SNERU;P  )+SP(T TS T:XIIV D0 RTOT ULES;R R0+,P)(S OVM 1 RINR DEINMAREE ACPL; 1 ,RR0 OVM $ 1E BN  ND EOR FSTTE; ) SP2( ECD: 2$ LTSUREP UM;B  P)(S NCI S YE; 0 ,RR3 UBS O N;  2$ LTB ? ONTIRAPE OOR FGHOUENG BI; 3 ,RR0 MPC R TEISEG RLEUBDO ;³þV:    ;PROCESS OP CODE MOV #MODE,R4 ;POINT TO MODE MOV (R4),R1  ;LEAVE RESULT IN R1 CLR (R4)+  ;SET TO ZERO, POINT TO VALUE MOV #CLCLOC,R2 ;POINT R2 TO LOCATION COUNTER BIT #100000+DFLGEV,R1 ;OP CODE OR EVEN DIRECTIVE? BEQ 1$  ; NO BIT #1,(R2)  ;YES, CURRENTLY EVEN? BEQ 1$  ; YES INC (R2)  ;NO, MAKE IT EVEN ERROR B  ; AND FLAG ERROR 1$: BIT #DFLGBM,R1 ;BYTE MODE DIRECTIVE? BEQ 2$  ; NO INC BYTMOD  ;YES, SET FLAG 2$: TST R1 X SEARCH:    ;BINARY ROLL SEARCH CALL SETROL  ;SET ROLL REGISTERS MOV R3,-(SP) SUB R3,R1  ;POINT ONE SLOT LOW MOV R2,R3 SUB R1,R3  ;COMPUTE SIZE CLR R0  ;GET SET TO COMPUTE SEARCH OFFSET SEC   ; (R0 DOUBLES AS T/F FLAG) 1$: ROL R0  ;SHIFT BIT BIC R0,R3  ;CLEAR CORRESPONDING BIT. LAST ONE? BNE 1$  ; NO BR 5$  ;START AT HALF-WAY POINT 2$: CMP R2,R1  ;OFF IN NO-MANS'S LAND? BLOS 4$  ; YES CMP (R4),(R1) ;NO, FIRST WORDS M 0 RL RO  RSTEISEG RRKWOT IFSH; 1 RL AS  LTSURET IFSH; ) SP(L AS $: 1T PUIN0 RRENOIG; 0 RR CL  LTSURE; ) SP-( LRC T UNCOP OO;L P)(S,-6.#1 OVM E INUTROE IDIV DALEREN;G    V:DI R03, RUL;M     D)RENOIG0 (R 0 ,RR3V DI;   5 V4DPPF NDF .I  N URETR T ULES RET;S  4)(R0,RV MO $: 1T ITEGANE, NO; 0 RG NE  ISS AOK ; $ 1L BP  LTSURET ES;T  )+SP(T TS X:DVXP E 0 ,RR3 IVD E ATEROP;¯þZ ;OP-CODE? BMI 10$  ; YES MOV (R4),R0  ;NO, DIRECTIVE. ADDR TO R0 CLR (R4)  ;CLEAR VALUE CLR R3  ;START WITH R3=0 JMP (R0)  ;GO TO PROPER HANDLER 10$: MOV #077776,PCRCNT ;LIST LOCATION OF FIRST WORD ONLY STCODE   ;STUFF BASIC VALUE .IF NDF XCREF MOVB R1,CRFDFL+1 ;SET "*" CREF MARKERS .ENDC SWAB R1 BIC #177600,R1 ;CLEAR HIGH ORDER BITS MOV R1,OPCLAS ;SAVE CLASS ASL R1 ASL R1  ;FOUR BYTES PER TABLE ENTRY CLR -(SP)  ;SET \ATCH? BNE 3$  ; NO CMP 2(R4),2(R1) ;YES, HOW ABOUT SECOND? BEQ 7$  ; YES, FOUND 3$: BHI 5$  ;NO, BRANCH IF TOO HIGH 4$: SUB R0,R1  ;LOWER INDEX BR 6$ 5$: ADD R0,R1 6$: ASR R0  ;END OF ITERATION, HALVE OFFSET BIC #2,R0  ;END? BNE 2$  ; NO CMP (R1)+,(R1)+ ;YES, POINT TO INSERTION SLOT 7$: MOV (SP)+,R3 BR SCANX  ;EXIT THROUGH SCAN NEXT:    ;GET THE NEXT ENTRY CALL SE 0 RR CL $: 2) SP(M CO  R1 EGN ! !!INGA;A  2$ PLB T ENTIUO QET;S  R1),R2(V MO $: 1S HU TITE AK;M  R3 EGN S LU PIFH NCRA;B  1$ PLB Y OP C AVESA;) SP-(3,RV MO  ORISIV DET;S  R3),R4(V MO  /;   : IVPDEX DEVIDIH UGROTHT XI;E  VXPDEX BR  ITEXR FOT SE; 0 ,RR1 OVM Y PLTIUL;M  R03,RL MU $: 2N IG SLTSUREE GLOG;T  P)(S OMC + T IKEMA, VETIGANE; 3 RG NE  VETISIPOF ICHANBR; $ 2L BP  RG ANDCOSET SE; 3 ,R4)(R OVM: 1$ SOT IKEMA, NO ; 0 R«þ^A STOPPER MOV OPJTBL+2(R1),-(SP) ;STACK SECOND ARG BNE 11$  ;BRANCH IF TWO ARGS TST (SP)+  ;ONE ARG, PRUNE TERMINATOR 11$: MOV OPJTBL(R1),R1 ;SET THE FIRST ARGUMENT BEQ 14$  ;BRANCH IF NO ARGS 12$: MOV R1,-(SP) ;SAVE A COPY OF THE ARG SWAB (SP)  ;SHIFT COUNT TO RIGHT HALF BIC #177400,R1 ;ISOLATE LOW BYTE TSTARG   ;COMMA TEST CLR R0  ;FUNCTION REGISTER CALL OPJBAS(R1) ;CALL PROPER ROUTINE .IF NDF XCREF ROLB CRFDFL+1 ;MOVE SECOND FIELD BIT `TROL MOV ROLUPD,R0 ADD R0,R1 ADD R3,R0 CMP R1,R2 BLO SCANX BR SCANF SCANW:    ;SCAN ONE WORD CALL SETROL  ;SET REGISTERS CLR R0  ;ASSUME FALSE 1$: INC R0  ;TALLY ENTRY COUNT CMP (R4),(R1) ;MATCH? BEQ 2$  ; YES ADD R3,R1  ;NO, INCREMENT POINTER CMP R1,R2  ;FINISHED? BLO 1$  ; NO CLR R0 RETURN   ;YES, EXIT FALSE 2$: MOV R4,R2  ;POINT TO "SYMBOL" NEG R3  ;NEGATE ENTRY SIZE JMP XMIT0(R3) ;MOVE ENTRY ANS G NE  E?IVITOS;P  1$ PLB Y OP C AVESA;) SP-(0,RV MO  RG ASTIR FCHET;F  R0),R2(V MO  *;   : ULPMEX N URETR ) R4,(2)(R ISB: 11OP B N URETR ) R4,(2)(R ICB ) R2(M CO 0:P1BO GEAN RBS AOFT ARST;   : BSPABO RRSEAB MPJ: 5$ RNTURE  )+R3,()+R1(S BI  )+R3,()+R1(V MO  )+R3,()+R1(V MO $: 4 N URETR: 3$ 4)(RG,FLEL!R007417#C BI  3$ NEB L LVELRT TS  4)(RG,FLEL#R ISB R ROER, NO ; $ 5§þb .ENDC 13$: ASL R0  ;SHIFT RESULT DECB (SP)  ;COUNT IN SP, RH BGE 13$ ROR R0  ;WE WENT ONE TOO MANY MOV ROLBAS+CODROL,R1 BIS R0,6(R1) ;SET EXPRESSION BITS TST (SP)+  ;PRUNE WORK ENTRY 14$: MOV (SP)+,R1 ;GET NEXT ARG FROM STACK BNE 12$  ;BRANCH IF NOT TERMINATOR .IF NDF XZERR MOV ROLBAS+CODROL,R1 MOV 6(R1),R0 ;SET FOR "Z" ERROR TESTS MOV R0,R1 BIC #000007,R1 CMP #000120,dEXIT SCAN:    ;LINEAR ROLL SCAN CALL SETROL  ;SET ROLL REGISTERS CLR R0  ;ASSUME FALSE 1$: CMP R2,R1  ;END? BEQ SCANF  ; YES, EXIT FALSE INC R0 CMP (R4),(R1) ;NO, MATCH ON FIRST WORDS? BNE 2$  ; YES CMP 2(R4),2(R1) ;NO, HOW ABOUT SECOND? BEQ SCANX  ; YES 2$: ADD R3,R1  ;INCREMENT BY SIZE BR 1$ SCANF: CLR R0  ;FALSE EXIT SCANX: MOV R1,ROLPNT ;SET ENTRY POINTER MOV R4,R2  ;POINTER TO "SYMBOL" NEG R3  ;NEGATE ENTRY SIZ NEB ? ORCTSEE AM SL,RE- +EL;R 2)(R,14)(R1B MPC $ 5E BN  4)(RG,FLLB#G ITB $ 5E BN  ALOBGLR HEIT EIFR ROER;) R2,(LGBFGL#T BI  GSLA FLD OS,YE ; $ 4Q BE  S?AB* X XX;) R4,(LGLFREG!FLLB#G ITB T SEL AL, ES Y;  3$ EQB ? XX X *BS;A 2)(RG,FLEL!RLGBFGL#T BI  GSLA FTOD AN ;) R4-(),R2-( MPC S UEAL VTOK AC BNTOI;P 4)(R,-2)(R-P CM  EMTHD AD;) R4,(2)(R DDA S ELEV LEL RTOT INPO;+ 4)(R+,2)(R MPC S UEAL VDD A+,; 4)(R),R2(D AD 2:OP B L LVEL RND A;  VLLLRE EG£þfR1 ; JMP (R)+ BEQ 22$ BIC #000700,R1 CMP #004020,R1 ; JSR X,(R1)+ BEQ 22$ MOV R0,R1 BIT #007000,R1 ;FIRST ARG TYPE 0? BNE 23$  ; NO, OK BIC #100777,R1 BEQ 23$ CMP #070000,R1 ;DOUBLE ADDRESS TYPE? BEQ 23$  ; NO MOV R0,R1 BIC #170017,R1 CMP #000760,R1 ; MOV PC,[@]X(R) BEQ 22$ BIC #177717,R1 CMP #000020,R1 ; (R)+ BEQ 21$ CMP #000040,R1 ; -(R) BNE 23$ 21$: MOV R0,R1 ROL R1 ROL R1 SWAB R1 SUB RhE MOV R0,ROLUPD ;SAVE FLAG BEQ 1$  ;BRANCH IF NOT FOUND JMP XMIT0(R3) ;FOUND, XFER ARGUMENTS 1$: CMP (R2)+,(R2)+ ;BYPASS SYMBOL ITSELF JMP XCLR0+4(R3) ;NOT FOUND, CLEAR ARGS APPEND:    ;APPEND TO END OF ROLL CALL SETROL MOV R2,ROLPNT ;SET POINTER CLR ROLUPD BR INSERF INSERT:    ;INSERT IN ROLL CALL SETROF  ;SET ROLL REGISTERS (BUT NO ARG) INSERF: MOV ROLPNT,R0 ;POINTS TO PROPEN E LUVAE ATEG N-,;  4)(R EGN S ALOBGLO NRESUE AK;M   STLTRE 1:OP B 0 RDWO. " "!; 11OPB, OR.ICH BLHTGC  &" ";0 P1BO D,ANH.CL TBCHG " "/; IVPDEX V,DIH.CL TBCHG " "*; ULPMEX L,MUH.CL TBCHG " "-; P1BO B,SUH.CL TBCHG " "+; P2BO D,ADH.CL TBCHG E BLTAP ORYNABI;   : BLPTBO P OO;L  1$ BR  RMTES OUVIRE PNERU;P  SP.,10#D AD  NETIOUBRSUL AL;C  )+SP@( LLCA $:12 RSTEISEG RRETOES;R Ÿþj0,R1 BIT #000007,R1 ; R1=R2 BNE 23$ 22$: ERROR Z 23$: .ENDC CPOPJ: RETURN .MACRO GENOPJ NUMBER,SUBR1,SC1,SUBR2,SC2 ;OP CODE JUMP TABLE .GLOBL OPCL'NUMBER OPCL'NUMBER= <.-OPJTBL>/4 .IIF NB , .BYTE SUBR1-OPJBAS .IIF B , .BYTE 0 .BYTE SC1+0 .IIF NB , .BYTE SUBR2-OPJBAS .IIF B , .BYTE 0 .BYTE SC2+0 .ENDM ENTSEC DPURE OPJTBL:    ;OP CODE JUMP lR SLOT TST ROLUPD  ;WAS SEARCH TRUE? BNE 5$  ; YES INCB ROLSIZ+1(R5) ;UPDATE ENTRY COUNT ADD R3,ROLTOP(R5) ;UPDATE TOP POINTER CMP R2,ROLBAS+2(R5) ;GAP BETWEEN ROLLS? BNE 5$  ; YES, JUST STUFF IT SUB R3,R0 MOV ROLBAS+0,R1 ;NO, GET ABSOLUTE BASE MOV R1,R2 SUB R3,R2  ;R2 POINTS ONE SLOT DOWN CMP R2,MACTOP ;OVERFLOW? BHI 3$  ; NO, OK SERROR 217 2$: MOV (R1)+,(R2)+ ;MOVE AN ENTRY DOWN 3$: CMP R0,R2  ;END? BNE 2$  ; NO 4$:)+R4,()+R2(P CM  TELUSOABR FOT ES;T  STSTAB LLCA  GSLA FGEER MS,YE;) R4-(),R2-( ISB E IN LINK ECCH, NO ; $ 12 GTB ? LYONE UTOLBS;A P)(SS,ABOP#B MPC: 1$ 1R ROER, LLNU ; A ORRRE K OIFH NCRA;B  1$1E BN  RNTET EX NTEUAALEV;  M ERT P OSSPABY;  B TNGE  SSREDD AORATEROP;) SP-(0,RV MO  OLMBSYS OUVIRE PTOS NTOI PR1; 1 ,RSP OVM " OLMBSY "TOT SE3 ;R P)(S,-3)(R-V MO  S)RDWOO TW (OLMBSY ;) SP-(),R3-( OVM E OD M; P)(S,-3)(R-V MO  UEAL VUSIOEVPRO TTSIN›þnTABLE GENOPJ 00 GENOPJ 01, AEXP GENOPJ 02, AEXP, 6, AEXP GENOPJ 03, REGEXP GENOPJ 04, BROP GENOPJ 05, REGEXP, 6, AEXP GENOPJ 06, TRAPOP .IF NDF X45 GENOPJ 07, AEXP, 0, REGEXP, 6 GENOPJ 08, REGEXP, 6, SOBOP GENOPJ 09, AEXP, 0, REGEXP, 6 GENOPJ 10, MARKOP GENOPJ 11, AEXP, 0, DRGEXP, 6 GENOPJ 12, DRGEXP, 6, AEXP, 0 GENOPJ 13, SPLOP GENOPJ 14, AEXP, 0, DRGEXP, 6 .ENDC ENTSEC IMPLIN OPCLAS: .BLKW p SUB R3,ROLBAS(R5) ;DECREMENT POINTERS SUB R3,ROLTOP(R5) SUB #2,R5  ;MORE ROLLS? BGE 4$  ; YES 5$: ASR R3  ;HALVE SIZE COUNT 6$: MOV (R4)+,(R0)+ ;MOVE AN ENTRY INTO PLACE DEC R3 BNE 6$  ;LOOP IF NOT END RETURN ZAP:    ;EMPTY A ROLL CALL SETROL MOV R1,ROLTOP(R5) ;MAKE TOP = BOTTOM CLRB ROLSIZ+1(R5) ;CLEAR ENTRY COUNT RETURN SETROL:    ;SET ROLL REGISTERS MOV R0,ROLNDPO2 ;R  R2P,SV MO  UEAL V; P)(S,-3)(R-V MO  ELEV LEL RCKTA;S P)(S,-3)(R-V MO  RMTES OUVIRE PCKTA STOT SE;3 ,R0.+1OLMBSY#V MO $:10 RNTURE $: 5E RU TET;S  R0 NZETS T BIR TEISEG RGEER;M 3)(R+,P)(S ISB: 4$ ONRICALORER PEROMP;I  AR ROER $: 3 $ 4R B R ROER, EG RND AEL;R  RR ROER  ET SOT NIFH NCRA;B  4$ EQB G LA FERSTGIRET ES TE,BLTACALORE; ) SP(T TS  0IFH NCRA;B  4$ CCB 1 R O 0OT NIFH NCRA;B  3$ NEB L VELEN TOCALORET ES;T  VLLLRE SRA G LA FER—þr  ;OP CODE CLASS XITSEC OPJBAS:    ;INDEX BASE FOR FOLLOWING ROUTINES RETURN REGEXP:    ;REGISTER EXPRESSION CALL ABSEXP  ;EVALUATE ABSOLUTE BIT #177770,R0 ;ANY OVERFLOW? BEQ 1$  ; NO ERROR R  ;YES, FLAG ERROR BIC #177770,R0 ;CLEAR OVERFLOW 1$: RETURN BROP:    ;BRANCH DISPLACEMENT TYPE RELEXP CMPB SECTOR,CLCSEC BNE 2$ SUB CLCLOC,R0 ASR R0 BCS 2$ DEC R0 tX ;SET ARGUMENT SETROF: MOV (SP)+,R0 ;SAVE RETURN ADDRESS SAVREG   ;SAVE REGISTERS MOV R5,-(SP) ; AND CURRENT CHARACTER MOV ROLNDX,R5 ;SET INDEX MOV ROLBAS(R5),R1 ;CURRENT BASE MOV ROLTOP(R5),R2 ;CURRENT TOP MOVB ROLSIZ(R5),R3 ;ENTRY SIZE MOV #SYMBOL,R4 ;POINTER TO SYMBOL CALL (R0)  ;CALL PROPER ROUTINE MOV (SP)+,R5 ;RESTORE CURRENT CHARACTER RETURN   ; AND REST OF REGS .SBTTL RSTGIRET BUL ALK AS;M P)(SG,FLEG-R-1#C BI  NDOU FIFH NCRA;B  0$1E BN  LEAB TORATEROPY ARIN BHE TANSC; L TBOPBN CAHSC G LA FERSTGIREE AV;S P)(S),R3(S BI  R4E,LUVA#V MO  RSTEINPOF OLEUPCOA T SE;3 ,RDEMO#V MO $: 1E AGORSTG LA FERSTGIRET SE, LLNUN-NO; ) SP-( LRC L UL NIFT XI;E  5$ EQB M ER T AOR FRY;T   RMTE  RSTEISEG RVESA;  G REAVS N IOATLUVA EONSIESPREX;   : PREX ORATLUVA EONSIESPREX TLBT.S “þvTSTB R0 BPL 1$ ADD #000400,R0 1$: BIT #177400,R0 BEQ 3$ 2$: ERROR A MOV #000377,R0 3$: RETURN TRAPOP:    ;TRAP TYPE MOV VALUE,-(SP) ;SAVE THE VALUE EXPR   ;EVALUATE THE EXPRESSION (NULL OK) INC BYTMOD  ;TREAT AS BYTE SETIMM CMPB SECTOR,#200 ;ABSOLUTE? BNE 1$  ; NO TST (SP)+  ;YES, PRUNE STACK MOV VALUE,R0 ;VALUE TO MERGE RETURN 1$: ZAP CODROL  ;CLEAR CODE ROLL STCODE   ;STORE ADDRESS MOV #100000,MODE ;SET FOR xEGISTER STORAGE SAVREG:    ;SAVE REGISTERS MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV 6.(SP),-(SP) ;PLACE RETURN ADDRESS ON TOP MOV R4,8.(SP) JSR PC,@(SP)+ ;RETURN THE CALL MOV (SP)+,R1 ;RESTORE REGISTERS MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 TST R0  ;SET CONDITION CODES RETURN XMIT7: MOV (R1)+,(R2)+ XMIT6: MOV (R1)+,(R2)+ XMIT5: MOV (R1)+,(R2)+ XMIT4: MOV (R1)+,(R2)+ XMIT3: MOV (R1)+,(R2)+ XMIT2: MOV (R1)+,(R2)+ XMIT1: MO C SEITX 2 N/LELDRW LK.B F:BULD R3 KWBL.: DRDHRL 1W LK.B D:ENIN L2 N/LEINLW LK.B F:BUIN L> UFTBOC.--LEIN+LENTLOC  ;NULL ERROR (DON'T COUNT) BR 1$ ERROR: ERROR P 1$: SETPF0   ;PRINT LOCATION FIELD EXPR   ;EVALUATE EXPRESSION BEQ 2$  ;BRANCH IF NULL SETPF1   ;NON-NULL, LIST VALUE 2$: RETURN .DETSL ALC ) R1-(),R1-( PBCM  0$1E BG  1)(R1,#B MPC 1 ,RORCTSE#V MO  2CDPEN LLCA $: 6* **** *TETUTIBSSU, EDINEFND;U   YTVBMO  R1S,ARST#V MO $: 4 $ 6R B D WRETSL ALC O N;  4$ EQB ? EDINEF;D 1)(RG,FLEF#D ITB S IT BDEMOO TNTOI;P R1E,OD#M OVM C P2NDEL ALC 3 ,R2TDPEN#V MO  OLMBSYE THK ACNP;U   NP0UR5  REMOO N;  2ADPEN EQB L BOYM SXTNEE THT GE; L ROYMST EXN: 3$ GERATO STOT INPO;2 ,RUFNBLI#V MO $: 2N CA SLEAB TOLMBSYR FOT SE; D UPOLRR CL 3þÖSABL LSB .GLOBL REM REM:    ; ".REM" DIRECTIVE MOV R5,R3  ;SET TERMINATING CHARACTER BNE 1$  ;BRANCH IF NON-NULL ERROR A  ;ERROR, NO DELIMITING CHARACTER RETURN 1$: GETCHR   ;GET THE NEXT CHARACTER 2$: TST R5  ;END OF LINE? BNE 3$  ; NO CALL ENDLIN  ;YES, POLISH OFF LINE CALL GETLIN  ;GET NEXT LINE BEQ 2$  ;LOOP IF NO EOF RETURN   ;EOF, EXIT 3$: CMP R5,R3  ;IS THIS THE TERMINATOR? BNE 1$  ; NO JMP GETNB  ;Y GEPAW NEE RCFO; T CNPPLR CL  ES Y;  2DDPEN NEB ? ONSIESPRUP SLEAB TOLMBSY;K ASCM,LYM.SLC#T BI  NO ; D P2NDEQ BE  T?PUUT ONGTIIS LNY;A  +2BLLTLB STT: 1$ DCEN. P DMBJOL ALC T PNBJ,OR0 OVM R TOEC VND EET;S )+R0,(+6ECDVEN OVM 0 ,RNTJPOB OVM O N;  1$ NEB ? UTTPOUS AB;K ASDM,EBS.AED#T BI  BSDAXE DF NIF. T IMPDU; P DMLDRL ALC D ENT SE;P TYLK,B06KTBL#V MO  ITP UM DS,YE; P DMBJOL ALC O N;  1$ EQB ? UTTPOUT ECBJ ONY;A  YPKTBL STT E /þÚES, BYPASS AND EXIT .GLOBL BLKW, BLKB, EVEN, ODD, RADIX, EOT BLKW: INC R3  ;FLAG WORD TYPE BLKB: EXPR   ;EVALUATE THE EXPRESSION BNE 1$  ;BRANCH IF NON-NULL INC (R4)  ;NULL, MAKE IT ONE 1$: CALL ABSTST  ;MUST BE ABSOLUTE 2$: ADD R0,(R2)  ;UPDATE PC ASR R3  ;WORD? BCS 2$  ; YES, DOUBLE VALUE RETURN EVEN: INC (R2)  ;INCREMENT THE PC BIC #1,(R2)  ;CLEAR IF NO CARRY RETURTLTIB-SU" LEAB TOLMBSY "ET;S   YTVBMO  R2F,BUTL#S OVM 1 ,RXTMTSY#V MO  DCEN. : 8$ ERFFBUE OSCLD ANP UM DS,YE; P DMRFCL ALC O N;  8$ EQB ? SSREOGPRN IEFCRY AN;2 ,RNTFPCR OVM F REXC DF NIF. 2 S AS POFD EN;   : P2NDE DSOR WURFOE OV;M  T4MIXP JM $: 1T ENRRCUP UM DO,;N  MPRDPC LLCA  ES Y;  1$ OSBL  R?HEOTANR FOM OO;R 10N-LELD+RUFDBRL,#R2 MPC K OCBLD GSA P UM;D    P:DMSD G C SEITX +þÞN ODD: BIS #1,(R2)  ;SET LOW ORDER PC BYTE RETURN RADIX: MOV CRADIX,R2 ;SAVE IN CASE OF FAILURE MOV #10.,CRADIX ABSEXP CMP R0,#2. BLT 1$ CMP R0,#10. BLE 2$ 1$: ERROR A MOV R2,R0 2$: MOV R0,CRADIX SETPF1 RETURN ENTSEC IMPPAS  ;IMPURE AREA CRADIX: .BLKW   ;CURRENT RADIX ENTSEC XCTPAS  ;TO BE EXECUTED EACH PASS MOV #8.,CRADIX ;INIT TO OCTAL RADIX XITSEC   ;BACK TO NORMAL EOT: RETURN / 1SSPAF OND/EF>,LGLFREC<#^ ICB: 1ADPEN T IUTTPOU; $ 12 BR  4PETYT SE;E OD,M04DTGS#S BI  STMOR EACL;E OD,MG>FLLB!GLGLFREG!FLEFT0SD,LGLFREC<#^ ICB T GHRIN ICELA PND A;  R5 ABSW  ITE ATOLIS; 5 RB LRC R TOEC SVESA; 5 ,R1)(R OVM 1 ,RDEMO#V MO  ERRKMAE AV;S P)(S,-PDLURO OVM H UGROTHF ICHANBR; A P1NDEQ BE  ORCTSET EX NHE TET;G  OLCRSE XTNE  ERRKMAN CA SET;S PDLURO+,þê EOL 2$: CMP R5,#CH.LAB ; "<", EXPRESSION? BEQ 10$  ; YES 3$: GETCHR   ;NO, GET NEXT CHAR MOV R5,R0  ;SET IN WORK REGISTER BEQ 28$  ;ERROR IF EOL CMP R5,R2  ;TERMINATOR? BEQ 5$  ; YES TST R3  ;NO .IF NDF XEDLC BPL 8$  ;BRANCH IF ASCII/Z TSTR50   ;TEST RADIX 50 BR 4$ 8$: MOV CHRPNT,R0 ;FETCH POSSIBLE LOWER CASE MOVB (R0),R0 BIC #177600,R0 ;CLEAR POSSIBLE SIGN BIT .IFF BPL 4$  ;RAD50? TSTR50   ; YES, CONVERT P)(S OVM: 0$ 1N CA SORCTSER FOT NI;I  P)(S-R CL $: 9C ND.E  ITF UFST, ES;Y  MPDDGS LLCA  NO ; $ 9Q BE  T?SE; ) R14( STT R FEUF BTL-TUB STOT INPO;1 ,RDNGIPR#V MO  V4OSDF NDF .I  CKLO BSD GUTTPOU; P DMSDGL ALC X DEIN" TO "ND A; R2T,PNLDRV MO  EXND IM"RO"FT SE;1 ,RTLGTPR#V MO  RSTEINPOE THT NI;I  NIJIOB LLCA  1P1TYK OCBLT SE;P TYLK,B01KTBL#V MO  LEFIE THN PE;O  BJOO ENOP $: 8C ND.E  N/BI/0 D5RA. E UTOLBS AOR FET SO,;N R5+,C)(P OVM S YE ; þî.ENDC 4$: CALL 20$  ;PROCESS THE ITEM BR 3$  ;BACK FOR ANOTHER 5$: GETNB   ;BYPASS TERMINATOR 6$: TSTB CTTBL(R5) ;EOL OR COMMENT? BGT 1$  ; NO 7$: CLR R0  ;YES, PREPARE TO CLEAN UP TST R3  ;TEST MODE BEQ 24$  ;NORMAL EXIT IF .ASCII BPL 20$  ;ONE ZERO BYTE IF .ASCIZ TST R1  ;.RAD50, ANYTHING IN PROGRESS? BEQ 29$  ; NO, NORMAL EXIT CALL 20$  ;YES, PROCESS BR 6$  ;LOOP UNTIL WORD COMPLETED 10$: MOV (R4),-(SP) ;"", 8$ NEB ? SSUE GODGO;K ASDM,EBS.AED#T BI  BSDAXE DF NIF. / BJ/O 50AD.R  LEABATOCEL RMESUAS;5 ,R)+PC(V MO  NO ; B P1NDEQ BE  T?ECBJ ONY AE,ONS AS;P  NKJLOB STT O N;  1$ EQB ? NDOU;F TSRBERE,R.ER#T BI  OF ETOE OV;M  INTLGE LLCA $: 1 2 S AS PIFH NCRA;B  P2NDEP JM  1$ EQB ? NE OSSPA; S ASPT TS  AXTMSE LLCA  4R OVNTE R LENDHAS AS POFD EN;   : DPEN RSLENDHAE OD CCTJEOB TLBT.S þò SAVE PARTIAL TERM   ;PROCESS AS TERM CALL ABSTST  ;TEST ABSOLUTE AND SET R0 MOV (SP)+,(R4) ;RESTORE PARTIAL CALL 20$  ;PROCESS BYTE BR 6$  ;TEST FOR END 20$: TST R3  ;RAD50? BPL 22$  ; NO CMP R0,#50  ;YES, WITHIN RANGE? BLO 21$  ; YES ERROR T  ;NO, ERROR 21$: MOV R0,-(SP) ;SAVE CURRENT CHAR MOV (R4),R0  ;GET PARTIAL CALL MULR50  ;MULTIPLY ADD (SP)+,R0 ;ADD IN C ECTSXI  7. KWBL.: AVDSCM /21>N+LEMI 00*401<01+00 R=VER. C H GTEN LERFFBUF RE;C   2.13 N=LERF C F REXC DF NIF. S ERDLANïýUP A BYTE SWAB (R2)  ;BEWARE OF THE INSIDE-OUT PC!! CMP R2,R3  ;END? BNE 4$ CALL FLTGRS  ;SHIFT ONE PLACE RIGHT ROR (R4)  ;SET HIGH CARRY .IF NDF XEDFPT BIT #ED.FPT,EDMASK ;TRUNCATION? BEQ 7$  ; YES .ENDC MOV FLTWDC,R2 ;GET SIZE COUNT ASL R2  ;DOUBLE BNE 8$  ;PRESET TYPE INC R2  ;SINGLE WORD 8$: ASL R2  ;CONVERT TO BYTES BIS #077777,FLTBUF(R2) SEC 5$: ADC FLTBUF(R2) DEC R2 DEC R2 BGE 5$ TST (R3)  ;TEST S HCEENEREF RSSROCL TTSB. ESRINT ELEAB TCHITSWS /DD AN ;L ABDSS,DT SWENG N /EE ATEREN;G BLNA,EEN WTNSGE  ECTSXI  SSPAH AC EET;S SKMAEDK,BADMEV MO  ASTPXC ECTSEN  NSIOITNDCOT ULFADET SE;K BADM,EITINED#V MO  -1 KWBL. : TSBIED 1W LK.B  TSBIED BLLO.G  RGTPXC ECTSEN  2SSPAR FOT NI-IREO ;T   KWBL.: AKMBED DERIEROVI CSR FOS IT;B   KWBL.: SIMCED GSLA FET SNSAINTCO;  W LK.B K:ASDM EE URMPëýIGN POSITION BPL 7$  ;OK IF POSITIVE 6$: ERROR T 7$: ADD FLTSGN,(R3) ;SET SIGN, IF ANY FLTGEX: CLR MODE  ;MAKE ABSOLUTE CLR FLTWDC  ;CLEAR COUNT MOV (R3),VALUE ;PLACE FIRST GUY IN VALUE MOV (SP)+,R0 ;ORIGIONAL CHAR POINTER BEQ 1$  ;ZERO (GOOD) IF ANY DIGITS PROCESSED MOV R0,CHRPNT ;NONE, RESET TO WHERE WE CAME IN CLR R3  ;FLAG AS FALSE 1$: SETNB   ;RETURN WITH NON-BLANK MOV R3,R0  ;SET FLAG IN R0 RETURN IC SENTE R OVITX N URETR: 8$ AR ROER $: 7 $ 1R B E INUTROL AL;C  )+SP@( LLCA  GSLA FET;S  R3 STT C PIT IKEMA;) SP-(2,L+BOYMSV MO $: 5T IARLE CO,;N SKMAED2,RS BI  ARLE CITE AVLE, ES Y;  5$ EQB ? LEDBEN; 3 RT TS  IT BEDCTLESER EACL, NO;K ASDM,ER2 ICB: 4$ ITE ORGN IS,YE ; $ 1E BN  I?CSM RO FENDDRIR-VE;O SIMCED2,RT BI $: 3 T ES TSSPABYD AN ; $ 4R B S IT BLEABIS DET SS,YE;I CSDM,ER2 ISB O N;  3$ EQB ? NGRISTD ANMMCOM RO FEDLLCA; G çý"FLTM54:    ;*5/4 CMP (R3),#146314 ;ROOM? BLO 1$ CALL FLTGRS INC FLTBEX 1$: CALL FLTGSV  ;SAVE IN BACKUP CALL FLTGRS  ;SCALE RIGHT CALL FLTGRS BR FLTGAD FLTM50:    ;*5 CALL FLTGSV CALL FLTGLS CALL FLTGLS FLTGAD:    ;ADD SAVE BUFFER TO FLTBUF MOV R4,R2  ;POINT TO SAVE AREA 1$: ADD 6(R2),-(R2) ;ADD IN WORD MOV R2,R1  ;SET FOR CARRIES 2$: ADC -(R1)  ;ADD IN BCS 2$  ;CONTINUE RIPPLE, IF NECEFLSICT TS  2$0,RB SO  R2 OLR: 2$ ECS N IOITOS PIT BTEPUOM;C  R2 LRC R ROER, REHE TOT N;  7$ EQB E BLTAE THH RCEA;S  OLTRED NWCAS L UL NIFD EN; $ 8Q BE  NTMEGUARC LIBOYM S AET;G   RGSAG: 1$ 2R OVNTE 0 3=;R    L:ABEN -13=;R  R3 OMC: BLSA D L ABDS L,ABEN BLLO.G  NSIOCTUN FBLSA/DBLNAEL TTSB. ECTSXI  VLSALC0-ITXM LLCA  R2E,AVCS#L OVM S AGFLG INSTLIT SERE;1 ,RAKSBLC#V MO  SSãý&SSARY CMP R2,R3  ;THROUGH? BNE 1$  ; NO RETURN FLTGRS: CLC   ;RIGHT SHIFT MOV R3,R1  ;RIGHT ROTATE ROR (R1)+ ROR (R1)+ ROR (R1)+ ROR (R1)+ RETURN FLTGLS:    ;LEFT SHIFT MOV R4,R2 ASL -(R2) ROL -(R2) ROL -(R2) ROL -(R2) RETURN FLTGSV: MOV R3,R1  ;MOVE FLTBUF TO FLTSAV MOV R4,R2 JMP XMIT4 ENTSEC IMPURE FLTBEG:    ;START OF FLOATING POINT IMPPAH AC EDECOS HI TTECUXE;E  ASTPXC ECTSEN  GSLA FLTAUEF;D E>AVCS-LSKMALC+ < CTNLGE  YMST LCENG C TO CTNLGE  TMTT LCENG 1 ,LD CTNLGE  NDCT LCENG 1 B,ME CTNLGE  ,1E MT LCENG C MT LCENG D MT LCENG X BE CTNLGE  OMCT LCENG C SR CTNLGE  INBT LCENG C LO CTNLGE  EQST LCENG : ASTBLC REPUDC SENTE 0 T=NICI L M ND.E  DCEN. E MN.'LCT+NICIL= ITINLC  T>NI .GLO DREN. E MN.'LCE+MN.'LC E=MN.'LC /2S>BACT-L<. PTRE. 1 E=MN.'LC LEAB TOLTRON CNGTIIS LTERANEGE;T NI,INEMT LCENGO CRMA. RNTURE  VETIECIR DNGTIIS LASG LA;F AGFLLCD,.LLC#S BI X:GEPA NELIS HI TERFT AFFE ATULIM;S  NTFCFC IN E:AG PE AGPL OBGL. R OVITX S IETRENH TCWI SNL /ND A; STLI,NNL WTNSGE  LI /TERANEGE; T IS,LLI WTNSGE  RNTURE $: 7A ORRRE: 6$ REMOR FOY TR; $ 1R B: 5$ SKMALC2,RS BI  ×ý2BL IF'ARG IF'ARG: .ENDM MOV SYMBOL+2,SYMBOL ;TREAT SECOND HALF AS ARGUMENT CALL TCONF  ;EXAMINE IT BR IF1  ;INTO THE MAIN STREAM .GLOBL IF, IFT, IFF, IFTF, ENDC IF:    ;MICRO-PROGRAMMMED CONDITIONAL CALL TCON  ;TEST ARGUMENT IF1: MOV #CNDLVL,R1 ;POINT TO LEVEL CMP (R1),#15. ;ROOM FOR ANOTHER? BGT IFOERR  ; NO, ERROR INC (R1)  ;YES, BUMP LEVEL ASL R3  ;SET CARRY TO TRUE (0) OR FALSE (1) ROR -(R1)  ;ROTATE INTO CNDMSK ASL CHANBR, STLI;.  5$ PLB 3 RT TS $: 4L RONTCOG INSTLIT SE; X GEPA LLCA  NTOU CELEV LTEDAUP, ES;Y VLCL,LR3 DDA O N;  4$ EQB ? LLNU; . LC,#R2 ITB K ASCM,LR2 ICB: 2$ 1S YE ; $ 5E BN  S?ITIM LFF OAGFLS HI;T SIMCLC2,RT BI $:11 STTEP KI SND A;  2$1R B S IT BLEABIS DET SS,YE;I CSCM,LR2 ISB O N;  1$1Q BE  G?INTR SNDMAOM COMFRD LEAL;C  LGIFCS STT $ ,3R0 OBS 2 RL RO $: 3C SE  R2 LRC D UNFOT NOF IORRR E;  6$ EQB E BLTAE THN IUPT IOKLO;Óý6R3 ROR -(R1)  ;DITTO FOR CNDWRD BR ENDCX IFT:    ;IF TRUE SUB-CONDITIONAL MOV CNDMSK,R3 ;GET CURRENT BR IFTF  ; AND BRANCH IFF:    ;IF FALSE SUB-CONDITIONAL MOV CNDMSK,R3 ;GET CURRENT CONDITION COM R3  ;USE COMPLEMENT AND FALL THROUGH IFTF:    ;UNCONDITIONAL SUB-CONDITIONAL    ;(R3=0 WHEN CALLED DIRECTLY) TST CNDLVL  ;CONDITIONAL IN PROGRESS? BLE IFOERR  ; NO, ERROR A L ROCDLW ANSC  OLMBSYA R FOY TR;  M SYETG: 2$ ITK AR MS,YE; T CNRGAC IN  GHOUHR TREE' WO, N;  7$ NEB ? STIR FL,UL;N  NTGCAR STT D LIVA ; $ 2E BN  NTMEGUARR HEOTANR FOT ES;T   RGTATS $: 11 /- 1OW;N  R3 NCI 2 /- 0R3E AK;M  R3 SLA 2 VRTOEN  T:IS L1 -R3E AK;M  R3 OMC: STLI N T ISL, STLINL OBGL. L RONTCOG INSTLI TLBT.S  C SEITX G LA FITEX;M   KWBL.: EXDMCN ELEV LNGTIES;N   Ïý:SL CNDWRD  ;MOVE OFF CURRENT FLAG ASL R3  ;SET CARRY ROR CNDWRD  ;MOV ON BR ENDCX ENDC:    ;END OF CONDITIONAL MOV #CNDLVL,R1 ;POINT TO LEVEL TST (R1)  ;IN CONDITIONAL? BLE IFOERR  ; NO, ERROR DEC (R1)  ;YES, DECREMENT ASL -(R1)  ;REDUCE MASK ASL -(R1)  ; AND TEST WORD ENDCX: BIS #LC.CND,LCFLAG ;MARK CONDITIONAL RETURN IFOERR: ERROR O  ;CONDITION ERROR RETURN TCKWBL.: VLDLCN SKMAN IOITNDCO;  W LK.B K:MSND CD OR WSTTE;  W LK.B D:WRND C) EDERRD OBET US(ME AGORSTL NAIOITNDCO;   S PAMPIC SENTE N URETR: 6$ LEGGTO, NO; 3 RM CO  ES Y;  6$ EQB ? DFIF; 1 RT TS $: 5 N AIAGY TR; $ 1R B P OSSPABY;  B TNGE $: 4E OD MLEGGTO, ES;Y  R2 OMC O N;  5$ NEB ? ORS APRHPE;R IOH.#C5,RP CM  SSUE GODGOF ICHANBR ; $ 4Q BE  &" ";D ANH.#C5,RP CM  &" "MESUAS; 2 ,RR1 OVM: 3$ R3 OMC O N;  R32,RV MO  ETËý>ON:    ;TEST CONDITION GSARG   ;GET A SYMBOL TCONF: SCANW CNDROL  ;SCAN FOR ARGUMENT BEQ IFAERR  ; ERROR IF NOT FOUND MOV SYMBOL+2,R1 ;GET ADDRESS ASR R1  ;LOW BIT USED FOR TOGGLE FLAG SBC R3  ;R3 GOES TO -1 IF ODD ASL R1  ;BACK TO NORMAL (AND EVEN) TST CNDWRD  ;ALREADY UNSAT? BNE IFAERX  ; YES, JUST EXIT TSTARG   ;BYPASS COMMA JMP @R1  ;NO, EXIT THROUGH HANDLER IFAERR: ERROR A IFAERX: CLR R5  ;NO "Q" ERROR RETURN GE SLL AS,YE ; $ 3Q BE  H?TCMA, ES;Y  R30,RP CM $: 2E GLOG TO,;N  R0 OMC S YE ; $ 2E BN  S?ESGUD OO;G DEMOG,FLEF#D ITB D NEFIDEE UMSS;A  R0 LRC F RERFC E BLTAL BOYM SERUSH RCEA;S   CHSRS M SYA T NOF IORRR E;  RRAEIF EQB L BOYM S AET;G   YMTSGE $: 1E RU TFF ORTTA;S  R3 LRC " "&T SE; 2 RR CL  ONTIDION CALTINI IVESA; 1 ,RR3 OVM F IDF/;I    F:NDCO T A NFCOTR B R NTCOTT BL  XPSEAB T:NLCO T A NFCOTR B R NTCOTT BG  XPSEAB T:NGCO T ÇýÃýNCND EQ, TCONEQ GENCND NE, TCONEQ, F GENCND Z, TCONEQ GENCND NZ, TCONEQ, F GENCND GT, TCONGT GENCND LE, TCONGT, F GENCND G, TCONGT GENCND LT, TCONLT GENCND GE, TCONLT, F GENCND L, TCONLT GENCND DF, TCONDF GENCND NDF, TCONDF, F TCONEQ: ABSEXP   ;EQ/NE, TEST EXPRESSION BEQ TCONTR  ;BRANCH IF SAT TCONFA: COM R3  ; FALSE, TOGGLE TCONTR: RETURN   ;TRUE, JUST EXIT