>7$J_>: `Q$ȋ @ B C  ` YSjLKe8}Kj~xeKIj}K9jLpK%8}K4d[qKzn#Y`K 9wWK&ąe K{L}K  \rK%K-v; UPDATE RMACRO.V5A 1/20/73 ; UPDATE RMACRO.V4E 1/15/73 ; UPDATE RMACRO.V05 1/10/73 ; UPDATE RMACRO.V04 1/7/73 ; UPDATE RMACRO.003 08.15.72 ; UPDATE RMACRO.002 08.03.72 ; UPDATE RMACRO.001 07.31.72 .TITLE RMACRO V005A 20-JAN-73 ; 1/20/73 .MACRO GVNUM  ;GEN VERSION NUMBER .ASCII /005A/ ; ID 1/20/73 .ENDM DOSV4= 0  ;DOS VERSION 4 COMPATIBLE NT EQB L BOYM S AET;G  RGSAGL ALC S NTMEGUARF OERMBNU;   : RGNA ITEXM, PETYN, HRNC G,ARNL OBGL. VRTOXI  4$ BR  HRTCGE $: 9T CNONCC IN $: 8 $ 1R B N LINDEL ALC $ 9E BN  MTCIWL ALC $ 8Q BE  CL.XCH,#R5 MPC: 7$ 6$ GTB 0 R5ETG: 1$ 6T IMWC LLCA  1$6E BN  R4 STT: 6$ YMTSSE $: 5T CNONCC DE  MTCIWL ALC T CNONCC DE  R5 EGN 5 ,RPDLURO OVM $ 5Q BE  R40,RV MO  OLARDM ANSC  7$ EQB M SYETG: 4$ HRTCSE YPER  ;ERROR IF MISSING MOV MSBCNT+2,R3 ;SET NUMBER BR NTYPEX NCHR:    ;NUMBER OF CHARACTERS CALL GSARG BEQ NTYPER  ; ERROR ID NO SYMBOL CALL GMARG  ;ISOLATE ARGUMENT BEQ NTYPEX  ; ZERO IF NULL TST R5  ;QUICK TEST FOR COMPLETION BEQ 2$  ; YES 1$: INC R3  ;BUMP COUNT GETCHR   ;GET THE NEXT CHARACTER BNE 1$  ;LOOP IF NOT END 2$: CALL RMARG  ;REMOVE ARG DELIMITERS BR NTYPEX NTYPE:    ;TEST EXPRESSION MODE CALL GSARG ; 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, .STAT, .TRAP, .WAIT .MCALL .WRITE .IF NDF DOSV4 .MCALL .CVTDT, .FLUSH, .RUN, .STSTK NTRPCHF,BUIN#L OVM: 3$ DCEN. E OR MOR FSTTE, ES;Y  STLTSM LLCA  NO ; $ 3Q BE  D?TEES NS,YE;0 ,RMCLSDF#T BI  NO ; $ 3Q BE  O?CRMAM TEYS SIN; T CNMLST TS  MLXS DF NIF. : 3$ 6 N URETR: 2$ 3$ PLB 3 RC DE  R3 ECD $ 3E BN  UEAL,VDMEN#P CM  R3 NCI $ 63 EQB 0 ,RACLMDF#T BI  LITCSE LLCA  AGFLLCD,.MLC#S BI  2$ NEB N LIETGL ALC: 1$ R3 LRC 6 VRTOEN  T:OMPR R OVITX T XI END AEETRN ITERI;W  MTCIWP JM  II  ;GET THE SYMBOL BEQ NTYPER  ; ERROR TSTARG   ;BYPASS ANY COMMAS MOV #SYMBOL,R1 MOV (R1)+,-(SP) ;PRESERVE SYMBOL MOV (R1)+,-(SP) CALL AEXP  ;EVALUATE MOV R0,R3  ;SET RESULT ZAP CODROL  ;CLEAR ANY GENERATED CODE MOV (SP)+,-(R1) ;RESTORE SYMBOL MOV (SP)+,-(R1) NTYPEX: CLR MODE  ;CLEAR MODE MOV R3,VALUE ; AND SET VALUE JMP ASGMTF  ;EXIT THROUGH ASSIGNMENT NTYPER: ERROR A BR NTYPEX MEXIT:    ;MACRO/REPEAT EXIT MOV MAC .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 CALOVR .WORD OVRTMP .MACRO XITSEC .CSECT OVR'N .ENDM XITSEC .ENABL PIC .IFF OVRLVL= -1 .ENDC .ENDM .MPDPV45 = 0 ; MAKE USE OF /45 INSTRUCTIONS IN RMACRO ITSELF SC ATOT ERNVCO;5 ,R.0IG#D DDA R BEUM NET;G  R5+,P)(S OVM: 1$ 4E RSCURE, NO ; $ 40 LLCA  O?ER ZTON OW;D  1$4Q BE  ERMBNUW NET SE; 1 ,RR0 OVM  ERNDAIEM RCKTA;S P)(S,-R1 OVM 0 ,RR3 IVD 0 RR CL  ERRTVEON CERMBNUO CRMA;   : 0$ 4 C ND.E  RNTURE; $ 4 BR  R5+,P)(S OVM S EG RRETOES;R R3+,P)(S OVM T IMWC LLCA  R5 LRC " "$E ITWR; T IMWC LLCA  R5L,DOH.#C OVM I CIASO TRTVEON;C  0$4L ALC L MACIDET IKEMA; 3 ,R0.#1 OVM 3 RND;A P)(S,-R3 OVLVL,CNDMEX ;IN MACRO? BNE 1$  ; YES, POP ERROR O  ; NO, ERROR 1$: RETURN GENCND B, TCB GENCND NB, TCB, F GENCND IDN, TCID GENCND DIF, TCID, F TCB:    ; "IFB" CONDITIONAL BEQ TCBERX  ;OK IF NULL CALL GMARGF  ;ISOLATE ARGUMENT SETNB   ;BYPASS ANY BLANKS BEQ TCIDT  ;TRUE IF POINTING AT DELIMITER BR TCIDF  ;ELSE FALSE TCBERR: ERROR A  ;NAUGHTY TCBERX: RETURN TCID:    ; "IFIDN" CONDITIONAL ACRO 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 .IFF OVRLVL= 0 .MACRO ENTOVR NAME .ENDM .MACRO XITOVR .ENDM .ENDC .MACRO ENTSEC NAME .CSECT NAME .ENDM .MACRO .r@,@,@.kQ@x@kЎHHIH.rH(HxKH@MHkeH].3fH KHK` H K HKH.K%HKKHK[MHKQHKQH@.KRHK RHKwHKyHKzH@.K[H K-HC`OHC`OHC`OH.C`OHC`OHC`OHC`OHC`OHb.C`OHC`OH C`OH C`OH C`OH .C`OH C`M R HA CNTREUR CCKTA;S P)(S,-R5 OVM . 64T ARTTA;S R1>,-164D<#^ DDA T ICHET;F R1S,BASGLV MO  NTOU CMPBU, OLMBSYD TERANEGE; S BASGLC IN $:30 SBDLXE DF NIF. $ 5R B 5 ,R)+SP(V MO  GSREE ORSTRE;3 ,R)+SP(V MO  MTCIWL ALC 5 RR CL  IISC ATOT ERNVCO; $ 40 LLCA  R1O TUEAL;V  R10,RV MO  IXAD RNTREUR CINT OUK EABR;3 ,RIXADCR OVM ) SP-(3,RV MO  ERCTRAHA CCKTA;S P)(S,-R5 OVM S AB, ONSIESPREXE ATLUVA;E   XPSEAB  SSPABY, \" ";  B TNGE $:20BEQ TCBERR  ;ERROR IF NULL ARG CALL GMARGF  ;ISOLATE FIRST ARG MOV CHRPNT,R1 ;SAVE CHARACTER POINTER TST -(R0) MOV -(R0),R2 ;POINTER TO TERMINATOR CALL RMARG  ;RETURN THIS ARG CALL GMARG  ;GET THE NEXT BEQ TCBERR 1$: MOVB (R1),R0  ;SET CHARACTER FROM FIRST FIELD CMP R1,R2  ;IS IT THE LAST? BNE 2$  ; NO CLR R0  ;YES, CLEAR IT 2$: CMP R0,R5  ;MATCH? BNE TCIDF  ; NO TST R5  ;YES, FINISHED? BEQ TCIDT  ; YES, GOOD SHOW 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 .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  ;EOHdH g @ gh@I.z@̖H(qQW((; 9h .; P9h>9@hr.>9hD9hD9%hJ9h9 N URETR  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 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 BGETCHR   ;NO, GET THE NEXT CHARACTER INC R1  ;ADVANCE FIRST ARG POINTER BR 1$  ;TRY AGAIN TCIDF: COM R3  ;FALSE, TOGGLE CONDITION TCIDT: JMP RMARG  ;OK, RESTORE ARGUMENT GMARG:    ;GET MACRO ARGUMENT TSTARG   ;TEST FOR NULL BEQ GMARGX  ; YES, JUST EXIT GMARGF: SAVREG   ;STASH REGISTERS CLR R1  ;CLEAR COUNT MOV #CHRPNT,R2 MOV (R2),-(SP) ;SAVE INITIAL CHARACTER POINTER MOV #CH.LAB,R3 ;ASSUME "<>" MOV #CH.RABD.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 LDRMAP 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, hx;. ;h# ;h#uL`;h{L}hkQphN#W.kQrhN#QLh.( R`;hn&W+h &Xph&\.iYyhZdh6&d^h+dDh/d@h.fZh p.Xq}h"$w~hvysh|~Kh0*h].*hX:(X:;d(X:vL("f((=.s;hzKs;h;d((vL(Hq(L.R(Blzw( w( w(@Ԁ|(y.r (rh(rBx( gw(qQW(; 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 SEDATEREN 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 AL,R4 CMP R5,R3  ;TRUE? BEQ 11$  ; YES CMP R5,#CH.UAR ;UP-ARROW? BEQ 10$  ; YES 1$: BITB #CT.PC-CT.COM-CT.SMC,CTTBL(R5) ;PRINTING CHARACTER? BEQ 21$  ; NO GETCHR   ;YES, MOVE ON BR 1$ 10$: GETNB   ; "^", BYPASS IT BEQ 20$  ;ERROR IF NULL MOV (R2),(SP) ;SET NEW POINTER COM R3  ;NO "<" EQUIVALENT MOV R5,R4  ;">" EQUIVALENT 11$: GETCHR BEQ 20$  ; ERROR IF EOL CMP R5,R3  ; "<"? BEQ 12$  ; YES CMP R5,R4  ;NO,.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 PARAM CMILEN, 163. ; # CHARACTERS IN CSI STRING BUFF1/20/73 ; 1/20/73 PARAM CPL, 80. ;CHARACTERS PER LISTING LINE ; PARf %"t X: X:vL";dF %"t X:;d X:vL"vL %"t X:vL X:vL"Ԁ| ABEILMNOPQRTUZr  rh rBx r  rh rBx C T CNRGA LRC 6 VRTOEN  F:MCRO P3 RR CL C:OMPR R OVITX N URETR K ACSTE UNPR; + P)(S STT: 3$ 1$ BR  IT BYM SEDATEREN GFTHI;S  P)(S ORR C CL  LLROA DMO TNDPEAP; L ROMADD ENPPA T ENUMRG AICOLMBSYT GE;  GFARGS LLCA $: 2T 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 GST ">"? BNE 11$  ; NO, TRY AGAIN DEC R1  ;YES, DECREMENT LEVEL COUNT DEC R1 12$: INC R1 BPL 11$  ;LOOP IF NOT THROUGH INC (SP)  ;POINT PAST "<" BIS #100000,R5 ;MUST MOVE PAST IN RMARG BR 21$ 20$: ERROR A 21$: MOV GMAPNT,R0 ;GET CURRENT ARG SAVE POINTER BNE 22$  ;BRANCH IF INITIALIZED MOV #GMABLK,R0 ;DO SO 22$: MOV (R2),(R0)+ ;SAVE POINTER MOV R5,(R0)+ ; AND CHARACTER CLRB @(R2)  ;SET NULL TERMINATOR MOV (SP)+,(R2) ;POINT TO ST!AM LPP, 56. ;LINES PER PAGE .DELETED PARAM LPP, 52. ;LINES PER PAGE 07.31.72 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 INITIALIZATIO"r  rh rBx r  rh rBx r  rh rBx  r   rh   rBx   IR 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:OMPR R OVITX  RNTURE  AR ROER $: 1 F PTRE MPJ 5 ,RRP.IMT#V MO  MTROPL ALC N LINDEL ALC ) SP-(0,RV MO  P)(S,-R3 OVM ) SP-(T,CNRGAV MO  )+R2(R CL  LKTBGE LLCA  RGMARL ALC 3 ,RR0 OVM F MCROPL ALC S NTMEGUARF OERMBNUY AN;X $ART OF ARG SETCHR   ;SET REGISTER 5 MOV R0,GMAPNT ;SAVE NEW BUFFER POINTER GMARGX: RETURN RMARG:    ;REMOVE MACRO ARGUMENT MOV GMAPNT,R0 ;SET POINTER TO SAVED ITEMS MOV -(R0),R5 ;SET CHARACTER TST -(R0) MOVB R5,@(R0) ;RESTORE VIRGIN CHARACTER ASL R5 ADC (R0) MOV (R0),CHRPNT SETNB MOV R0,GMAPNT RETURN ENTSEC IMPPAS GMAPNT: .BLKW 1  ;POINTER TO FOLLOWING BUFFER GMABLK: .BLKW 1  ;POINTER TO "BORROWED" CHARACTE%N CODE XCTPRG: MOV #IMPURE,R0 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 SWTSEC  ;&r   rh   rBx   r   wrhx @ w@rBxe r   lzwrh   lzw rBx r   wrhi   MARG,A777717#V MO  1$ EQB G ARGM LLCA  RGMARL ALC A OMPR LLCA  1$ EQB G ARGM LLCA  6R OVNTE : RP I3 R NCI: PCIR PCIR P,IR BLLO.G  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 ALL(R .BLKW 1  ;CHARACTER ITSELF .BLKW 3*2  ;ROOM FOR MORE PAIRS XITSEC WCIMT:    ;WRITE CHARACTER IN MACRO TREE DEC CONCNT  ;ANY CONCATENATION CHARS PENDING? BMI 1$  ; NO MOV R5,-(SP) ;YES, STACK CURRENT CHARACTER MOV #CH.XCL,R5 CALL 2$ MOV (SP)+,R5 BR WCIMT 1$: CLR CONCNT 2$: BIT #BPMB-1,R2 ;ROOM IN THIS BLOCK? BNE 3$  ; YES SUB #BPMB,R2 ;NO, POINT TO LINK MOV R2,-(SP) CALL GETBLK MOV R0,@(SP) )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= EDINIT*w rBxv r  Z HqZrh zd HqzrBx r   g rhM  ghrBxZ r  z` Hqzrh V HqrBx qQWM( CAS 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 OLEUPCOA 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: ,;SET NEW LINK TST (SP)+ 3$: MOVB R5,(R2)+ ;WRITE, LEAVING FLAGS SET RETURN GETBLK:    ;GET A MACRO BLOCK MOV MACNXT,R0 ;TEST FOR BLOCK IN GARBAGE BNE 1$  ; YES, USE IT MOV #MACTOP,R2 ;NO, POINT TO TOP OF STORAGE MOV (R2),R0 ADD #BPMB,(R2) ;COMPUTE NEW TOP CMP ROLBAS+0,(R2) ;ROOM? BHI 2$  ; YES SERROR 217  ;NO 1$: MOV (R0),MACNXT ;SET NEW CHAIN 2$: MOV R0,R2 CLR (R2)+  ;CLEAR LINK CELL, POINT PAST IT RETURN INCMAC: INC -!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 .MACRO GENCAL NAME ;CAN BE CHANGED TO OPD.w ," #.f R Ԁ| R"Rs, 1  F!y. r rh rBxRf_D2!0"RR2 Ԁ| RMACRO V005A R  qQWT.Tw K ! f""& Ԁ|K X:  R" "R"p.z0ŝ   .ҕ? w 3$ AR ROER $: 2$ 3Q BE  +2AMCNMA2,L+BOYMSP CM  2$ NEB M NAAC,MR0 MPC $ 3Q BE  YMTSGE  XTTEE THS ESOCPR; T OMPR LLCA  NELIF OFH ISOL;P  INDLEN LLCA  AGFLLCD,.MLC#S BI  TSBIL BOYM SEDATEREN GND A; )+R2,(SBCGMA OVM S RG AOFR BEUM NEPKE;+ 2)(RT,CNRGAV MO  NTOU CELEV LARLE;C  )+R2(R CL  GSARY MMDUS ESOCPR; A OMPR LLCA  EFFDCR  LEAB TINT ERNS;I   RTSEIN  ERNTOI PET;S  4)(R0,RV MO  CKLO BGERATO S AET;G  LKTBGE LLCA $: 1E NCREFEREE THT ENEMCRDE;02(R0)  ;INCREMENT MACRO REFERENCE RETURN DECMAC: DEC 2(R0)  ;DECREMENT MACRO STORAGE BPL REMMAX  ;JUST EXIT IF NON-NEGATIVE REMMAC: MOV R0,-(SP) ;SAVE POINTER 1$: TST (R0)  ;END OF CHAIN? BEQ 2$  ; YES MOV (R0),R0  ;NO, LINK BR 1$ 2$: MOV MACNXT,(R0) MOV (SP)+,MACNXT REMMAX: RETURN MPUSH:    ;PUSH MACRO NESTING LEVEL CALL GETBLK  ;GET A STORAGE BLOCK TST -(R2)  ;POINT TO START MOV #MSBBLK,R1 ;POINTER T1EFS 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 GENCAL RELEXP GENCAL RELTST GENCAL ABS2 wQ& X:  Hq X:  &X: C.t  "   . X:  X:X:  Hq (Hqa.  `5 w  jqX:X:(X:j,  % eX^ !d_. R R X:X X:^&X:d8.h7 }d&  w .X:hX:  X: X: Hq.6B!e 67 C MAECDL ALC L UL NIFH NCRA;B  1$ EQB R TEINPOE THT GE; 0 ,R4)(R OVM E BLTAE THH RCEA;S   CHSRM 2 M+NAAC,M+2OLMBSY OVM M NAAC,MOLMBSY OVM 6 VRTOEN  F:ROAC ML UL NIFR ROER ; M NDEQ BE  MENAE THT GE;   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;4O START OF PROTOTYPE MOV R2,-(SP) ;SAVE DESTINATION MOV R1,-(SP) ; AND CORE POINTERS 1$: MOV (R1),(R2)+ ;XFER AN ITEM CLR (R1)+  ;CLEAR CORE SLOT CMP #MSBEND,R1 ;THROUGH? BNE 1$  ; NO MOV (SP)+,R2 ;YES, MAKE CORE DESTINATION MOV R5,(R2)+ ;SAVE TYPE MOV (SP)+,(R2)+ ; AND PREVIOUS BLOCK POINTER INC MACLVL  ;BUMP LEVEL COUNT RETURN   ;RETURN WITH R2 POINTING AT MSBTXT MPOP:    ;POP MACRO NESTING LEVEL MOV #MSBARG+2,R2 ;POINT ONE SLOT P5EXP 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 R50UNP GENCAL MOVBYT 6 . X:6X:X:"X:$X:.\ N eeE h HqR &Ԁ|0.  ^!" z4 N! d. X:  X:" Ԁ|4r  RG.C 8! w  w   wRB & Ԁ|C X:  X:  "Hq* 1Hq}6,. X:6 X: X: R, R) R0,(XTBTMS OVM S YE ; $ 1T BG  H?UGROTH;+ 0)(R+,0)(R MPC T IMPBU; ) R0(C IN  NTOU CTOR TEINPOT SE;0 ,RNTBCMS#V MO C:MAND E R TEACARCHE ORSTRE;  R CHETS X MA;+ 2)(R+,P)(S OVM R TEUNCO; + 2)(R LRC R TEINPOG ARE ORST;+ 2)(R+,P)(S OVM R TEINPOT EX TRETO;S )+R2,()+SP(V MO  CKLO BROAC MUSIOEVPRH US;P  SHPUML ALC T IMWC LLCA F:PTRE T"EAEP ROFD EN "ANE DGFU;5 ,RPT.RMT#V MO  FFTU SROAC MSE;U  MTROPL ALC T EAEP ROR FGSARY MMDUO ;N  OLARDM APZ E FAST ARG MOV -(R2),R0 ;GET POINTER TO ARG BLOCK BEQ 1$  ;BRANCH IF NULL CALL REMMAC  ;REMOVE IT 1$: MOV -(R2),R0 ;POINT TO TEXT BLOCK BEQ 2$  ;BRANCH IF NULL CALL DECMAC  ;DECREMENT LEVEL 2$: MOV -(R2),R1 ;GET PREVIOUS BLOCK TST -(R2)  ;POINT TO START MOV R1,R0  ;SAVE BLOCK POINTER CALL XMIT0- ;XFER BLOCK CLR (R0)  ;CLEAR LINK CALL REMMAC  ;RETURN BLOCK FOR DEPOSIT DEC MACLVL  ;DECREMENT LEVEL COUNT RETURN ENTSE .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    ;ROLL HANDLER CALLS .MACRO SEARCH ROLNUM ;BINARY SEARCH MOV #ROLNGԀ|. ERRORS DETECTED: FREE CORE: . EWORDS # qQWp. H&/5w & &|.&   e@ F H.(  (T RR JT X:.N& & H e5``&7(X:.t &( ҕ 7 2R) X: X:;d X:;d$  IN LFF OSHLIPO; N LINDEL ALC K OCBLF ORTTA SND A; P)(S,-R0 OVM S NTMEGUARO ;N  P)(S-R CL  RDWOD IRTHN IRTTA;S  )+R2(R CL  CKLO BGERATO S AET;G  LKTBGE LLCA  NGTIIS LHE TRKMA;  1 PFETS T UNCOE AV;S P)(S,-R0 OVM T UNCOE ATLUVA;E   XPSEAB  ERDLAN HATPERE;   : PTRE DREN T,EPRL OBGL. C MAT.M= AX.MMT 037617 C=MAT. M2 60771= RP.IMT 017617 T=RPT. M O CRMAXF NDF .I  RSLENDHAO CRMA TLBT.S  DCEN. E UNPRD ANH NCRA;B`w;3333333333333333333333333333333333333333333333333333333D@DDDDDDDDDDDDDD@DDDDD@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDADDB Cr 6kЎ4d d4d  r^ D[s}P Rs}^ %ю S0 K _ $Dwwwwwwwwwwwwwwwwww33333a ͋,L w:B8 ` 5 &  E >w   f5eU@  [*   & * G &( 8L'4e Q$ BBB"   U@ U e  "U%Gef. U U Bb 0 * B.&0 M &0 & IUM,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 #ROLNUM,R0 CALL APPEND .ENDM .MACRO ZAP ROLNUM ;CLEAR ROLL MOV #ROLNUM,R0 CALL ZAP .ENDM GENCAL INSERT  ;INSERT (MUST BE PJEC IMPURE MSBBLK:    ;PUSHABLE BLOCK (MUST BE ORDERED) MSBTYP: .BLKW   ;BLOCK TYPE MSBPBP: .BLKW   ;PREVIOUS BLOCK POINTER MSBTXT: .BLKW   ;POINTER TO BASIC TEXT BLOCK MSBARG: .BLKW   ;POINTER TO ARG BLOCK MSBCNT: .BLKW 2  ;REPEAT COUNT, ETC. MSBMRP: .BLKW   ;MACRO READ POINTER MSBEND:    ;END OF ORDERED STORAGE MACNXT: .BLKW MACLVL: .BLKW   ;MACRO LEVEL COUNT CONCNT: .BLKW ARGMAX: .BLKW MACNAM: .BLKW 2 MACGSB: .BLKW   ;MACRO GENERATED SYMBOL K 7 7  7 . X:  X:;dX:vLX:vLX:,  ]w f.X:X: X:X:X:vL.fw  7   . X:;d X:vL$X:.R X: X:X:X: . |r    , w0& Hq X:|X:r$X:;d < PC+,P)(S@V MO  SSREDD ARMFO;) SP,(APTRL-TBRP#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( VBMO $: 1G INTR STEBYE OV;M    T:BYOV M N URETR: R0CL X+ 2)(R LRC: R1CL X+ 2)(R LRC: R2CL X+ 2)(R LRC: R3CL X+ 2)(R LRC: R4CL X+ 2)(R LRC: R5CL X+ 2)MRECEDED 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,ADDRESS .ENDM .MACRO RETURN RTS PC .ENDM .MACRO PUTKB ADDR ;LIST TO KB JSR R5,PUTKB .WORD ADDR .ENDM .MACRO PUTLP ADDR ;LIST TO LP JSR R5,PUTLP NBITS XITSEC .GLOBL MCALL  ;.MCALL MCALL: ENTOVR 6 CALL SMLTST  ;TEST FOR UNDEFINED ARGUMENTS BEQ 5$  ; BRANCH IF NONE .IF NDF XSML  ;ERROR IF NOT IMPLEMENTED TST PASS  ;FOUND SOME, PASS ONE? BNE 4$  ; NO, ERROR CLR SMLFIL+6 .INIT #SMLLNK 10$: .OPEN #SMLLNK,#SMLFIL ;OK, OPEN THE FILE 1$: CLR R3  ;SET COUNT TO ZERO 2$: CALL XCTLIN  ;INIT FOR NEW LINE CALL GETLIN  ;GET ONE BNE 3$  ;EXIT IF EOF CALL OHq q qQW> .>  |6 ff7  . X: X:  X:6"X: &Hq &dv -  w  .X: X: X:X:;dX:,7  * Hq X:X:X:d(6 D! ! f.X: X: X:6X:;d X:D56 X:(R LRC: R6CL X+ 2)(R LRC: R7CL X N URETR: T0MI X+ 2)(R+,1)(R OVM: T1MI X+ 2)(R+,1)(R OVM: T2MI X+ 2)(R+,1)(R OVM: T3MI X+ 2)(R+,1)(R OVM: T4MI X+ 2)(R+,1)(R OVM: T5MI X+ 2)(R+,1)(R OVM: T6MI X+ 2)(R+,1)(R OVM: T7MIX DCEN. W LK.B $: 3 N URETR ) SP,(3$ OVM: 2$ OPNTMO),SP(V MO  .= UGEB D$ 2S HIB ) SP,(OPNTMO MPC F ON.M 1, 4MT.E; 1 +4004010 RDWO. ) SP-(2,10#V MO  KWBL.: 1$ 1$+,P)(S OVM  3$+,P)(S OVM: MTTETS ECTSXI  +6OPNTMOQ .WORD ADDR .ENDM .MACRO PUTKBL ADDR ;LIST TO KB AND LP JSR R5,PUTKBL .WORD ADDR .ENDM GENCAL PUTLIN  ;GENERIC OF ABOVE .MACRO SERROR NUMBER JSR R5,SERROR .WORD 2000!NUMBER .ENDM .MACRO ERROR ARG ; SERROR <''ARG> BIS #ERR.'ARG,ERRBTS .ENDM .MACRO BRJMP ADDR .IF GE .- .IF LE .--254. BR ADDR .MEXIT .ENDC .ENDC JMP ADDR .ENDM .MACRO CHSCAN TABLE ;CHARACTER SCAN JSR R5,CHSCAN .WSSETCLI  ;TEST FOR DIRECTIVE BIT #DFLMAC,R0 ;MACRO/ENDM? BEQ 2$  ; NO MOV #VALUE,R4 ;SET FOR LOCAL AND MACROF DEC R3  ;YES, ASSUME .ENDM CMP #ENDM,(R4) ;GOOD GUESS? BEQ 2$  ; YES INC R3  ;NO, BUMP COUNT INC R3 CMP #1,R3  ;OUTER LEVEL? BNE 2$  ; NO GSARG   ;YES, GET NAME BEQ 3$  ; ERROR IF NULL MSRCH   ;SEARCH TABLE BEQ 2$  ;IGNORE IF NOT THERE TST (R4)  ;FOUND, VALUE OF ZERO? BNE 2$  ; NO, NOT INTERESTED CA6HqkQ4dlzw PA`  / qQWqQW, 7 7`7 7 . X: X:;dX:;d X:;d$X:;d 7   .X:;dX:X:;d X: X:vL  evD. X:X:vL  X:;dX: X:D(6 A5'U @ ]V. X:6 X:;d OMC 4 P+TOONMM CO  RGTPXC ECTSEN  4W LK.B P:TOON ME URMPIC SENTE  FT.I  RNTURE  ESOD CONTIDION CET;S  R0 STT 4 ,R)+SP(V MO  R3+,P)(S OVM 2 ,R)+SP(V MO  RSTEISEG RRETOES;R R1+,P)(S OVM F FT.I  $: 26 P+TOON,MR1 OVM $ 2S HIB 6 P+TOON,MR1 MPC 1 ,ROPNTMO UBS 1 ,R+4OPNTMO OVM: 1$ +4OPNTMOP,SV MO  1$ ISBH  +4OPNTMOP,SP CM  UGEBDF DIF. L AL CHE TRNTURE;+ P)(S,@PC SRJ: EXVRSA P)(S8.4,RV MO  OP TONS ESDRADN URET RCELA;P P)(S,-P)(S6. OVMUORD 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 .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 FILEV; UPDATE RPST.V02 1/7/73 ; REPLACES .002 OF 8/26/72 ; UPDATE RPST.001 07.31.72 .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 REQUIRESWLL MACROF  ;GOOD, DEFINE IT DEC SMLCNT  ;DECREMENT COUNT BGT 1$  ;LOOP IF MORE TO GO 3$: .CLOSE #SMLLNK  ;CLOSE IT TST SMLCNT  ;ANY MORE? BGT SMLERR  ; YES, BE SURE TO TRY [1,1] 11$: .RLSE #SMLLNK BR 5$ SMLERR= . TST SMLFIL+6 ;LOOKING LOCALLY? BNE 11$  ; NO, GIVE UP MOV #000401,SMLFIL+6 ;YES, TRY [1,1] BR 10$ .IFTF 4$: ERROR U 5$: CLR SMLCNT  ;MAKE SURE COUNT IS ZAPPED CLR ENDFLG  ;DITTO FOR END FLAG RETURN ) SP-(1,RV MO  P)(S,-R2 OVM ) SP-(3,RV MO  RSTEISEG RVESA;   G:REAV S E AGORSTR TEISEGRL TTSB. RNTURE  R4E,LUVA#V MO  R3E,OD#M OVM 2 ,RORCTSE# OVM 1 ,ROLMBSY#V MO  RSTEISEG RONSIESPREXT SE;   : PRTXSE EXVRSA BR  RSTEISEG RONSIESPREXT SE;  R XPETS S ESDRADN URET RCKTA;S P)(S,-R4 OVM ) SP-(1,RV MO  P)(S,-R2 OVM L AL CBYE AV SAS WR4;) SP-(3,RV MO  ONSIESPREXR FOT SED ANS EG RVESA;   : PRVXSA GSREF OSTRED AN Y ;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 .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= Z EVEN LOCATION DFLGBM= 010   ;DIRECTIVE USES BYTE MODE DFLCND= 004   ;CONDITIONAL DIRECTIVE DFLMAC= 002   ;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  CH.QM= '? CH.IND= '@ CH.BSL= '\ CH.UAR= '^ LET.A= 'A LET.B= 'B LET.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^ND> .IF DF COND .MEXIT .ENDC .ENDC .GLOBL NAME .RAD50 /.'NAME/ .BYTE FLAGS+0 .BYTE 0 .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 _ .BYTE 1,0 .RAD50 /SY/ .WORD SMLERR .BYTE 4,0 SMLFIL: .RAD50 /SYSMAC/ .RAD50 /SML/ .WORD 0,0 XITSEC .ENDC   ;XSML XITOVR .ENDC   ;XMACRO .IF DF OVLAY ENTSEC OVRBLD .MCALL .INIT, .STAT, .LOOK, .ALLOC, .TRAN, .WAIT OVRBLD:    ;OVERLAY BUILD/INIT .INIT #TRNLNK  ;INIT (ONCE ONLY) .STAT #TRNLNK  ;TEST STATUS CMP (SP)+,(SP)+ ;PRUNE TWO, LEAVING WORDS/BLOCK MOV #OVRTBL,R4 ;POINT TO STARTITRENR 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; )+R2,()+R1(V MO $: 2 7 21 ORRRSE  OK, NO ; $ 3I BH  W?LORFa= 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 RELOCATION TST X RLDT05= 05 ; GLOBAL ADDITIVE RELOCATION TST #X+6 RLDT06= 06 ; GLOBAL ADDITIVE DISPLACED RELOCATION TST #X+6 RLDT07= 07 ; NEW CSECT RLDT10= 10 ; SEQUENCE BREAK RLDT11= 11 ; LIMIT RLDT15= 15 ; SECTOR ADDITIVE RELOCATION TST #O RLDT16= 16 ;SECTOR ADDITIVE DISPLACEb, 09, 072000, DR2, X45 OPCDEF , 09, 073000, DR2, X45 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, 0400cNG ADDRESS BLOCK MOV #OVRBKN,R5 ; AND STARTING BLOCK NUMBER TABLES CLR (R5)  ;ZERO FIRST ENTRY 1$: MOV (R4)+,R1 ;STARTING ADDRESS SUB (R4),R1  ;START OF NEXT NEG R1  ;MAKE POSITIVE ASR R1  ;CONVERT TO WORDS CLR R0  ;SINGLE PRECISION MOV (SP),R3  ;WORDS/BLOCK DIV R3,R0  ;COMPUTE NUMBER OF BLOCKS TST R1  ;REMAINDER? BEQ 2$  ; NO INC R0  ;YES, ROUND UP 2$: ADD (R5)+,R0 ;ADD PREVIOUS BLOCK NUMBER MOV R0,(R5)  ;SET NEW ONE CMP VE;O OPCTMA2,RP CM  WNDOT LO SNE OTSINPO2 ;R  R23,RB SU  R21,RV MO  SEBAE UTOLBS AET GO,;N R10,S+BAOLRV MO  R03,RB SU  ITF UFSTT US JS,YE ; $ 5E BN  S?LLRON EETWBEP GA;) R52(S+BAOL,RR2 MPC R TEINPOP TOE ATPD;U 5)(ROPLTRO3,RD AD  NTOU CRYNT ETEDAUP;) R51(Z+SIOLRB NCI S YE ; $ 5E BN  E?RU TCHARSES WA; D UPOLRT TS  OTSLR PERO PTOS NTOI;P R0T,PNOLRV MO F:ERNS I) RG ANOT BU (RSTEISEG RLLROT SE; F ROETSL ALC L OL RINT ERNS;I    T:ERNS I F ERNSIR B eD RELOCATION TST #O+6 RLDT17 = 17 ;INTERNAL RELOCATION PACKED PHYSICAL 08.03.72 ; .PACK X 08.03.72 GSDT00= 00*400  ; OBJECT MODULE NAME GSDT01= 01*400  ; PROGRAM SECTION NAME GSDT02= 02*400  ; INTERNAL SYMBOL TABLE GSDT03= 03*400  ; TRANSFER ADDRESS GSDT04= 04*400  ; SYMBOL DECLARATION GSDT05= 05*400  ; LOCAL SECTION NAME GSDT06= 06*400  ; VERSION IDENTIFICATION BLKT01= 01  ;GSD BLf00, DR2 OPCDEF , 02, 140000, DR2 OPCDEF , 02, 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 
gR4,#OVRTBL+ ;END? BLO 1$  ; NO .LOOK #TRNLNK,#TRNFIL,1 ;YES, LOOK IT UP MOV (SP)+,TRNSBN ;SET STARTING BLOCK NUMBER BNE 10$  ;BRANCH IF FOUND CMP (SP)+,(SP)+ ;NOT FOUND, PRUNE SURPLUS MOV (SP),R3  ;WORDS/BLOCK MUL R3,R0  ;COMPUTE NUMBER OF DSK WORDS MOV #64.,R3 DIV R3,R0  ;COMPUTE # OF 64. WORD BLOCKS .ALLOC #TRNLNK,#TRNFIL,R0 ;GET CONTIGUOUS BLOCKS INC (SP)+  ;GOOD (RETURN= -1)? BNE 20$  ; NO, ERROR .LOOK #TRNLNK,#TRNFIL,D UPOLRR CL  ERNTOI PET;S NTLPRO2,RV MO  OLTRSE LLCA  LLROF OND ETOD ENPP;A    D:ENPPA GSARR EACL, NDOU FOT;N 3)(R+4R0CLXP JM  LFSEITL BOYM SSSPABY;+ 2)(R+,2)(R MPC: 1$ TSENUMRG AERXF, NDOU;F 3)(RT0MIXP JM  NDOU FOT NIFH NCRA;B  1$ EQB G LA FVESA;D UPOL,RR0 OVM E IZ SRYNT ETEGANE; 3 RG NE  L"BOYM"SO TERNTOI;P  R24,RV MO  ERNTOI PRYNT EET;S NTLPRO1,RV MO X:ANSC ITEXE LSFA; 0 RR CL  MPCTSE0,RV MO F:ANSC 1$ BR  ZESIY iKT02= 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  ;DEVICE PARITY ERROR SB.EOF= 100  ;EOF SB.EOM= 100  ;EOM    ;DIRECTIVE FLAGS DEFINED IN PST .GLOBL DFLCND, DFLMAC, DFLGEV, j, 04, 000400, OPCDEF , 04, 102000, OPCDEF , 04, 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, OPCk1 ;YES, GET STARTING ADDRESS MOV (SP)+,TRNSBN ;SAVE IT MOV #OVRTBL,R4 ;PREPARE TO WRITE OUT MOV #OVRBKN,R5 3$: MOV #TRNBLO,R3 ;POINT TO OUTPUT TRAN BLOCK MOV TRNSBN,(R3) ;SET STARTING BLOCK NUMBER ADD (R5)+,(R3)+;ADD IN OFFSET MOV (R4)+,(R3) ;STARTING ADDRESS MOV (R4),R0  ;ENDING ADDRESS SUB (R3)+,R0 ;BYTE LENGTH ASR R0  ;CONVERT TO WORDS MOV R0,(R3)+ ;PLACE IN BLOCK BEQ 4$  ;DON'T WRITE IF EMPTY .TRAN #TRNLNK,#TRNBLO ;WRITE SEGEMENT OUT BNTMERENC;I  R13,RD AD $: 2S YE ; X ANSC EQB ? NDCOSET OUABW HO, NO;) R12(),R42( MPC S YE ; $ 2E BN  S?RDWOT RSFIN OCHAT MO,;N 1)(R),R4(P CM  R0 NCI E LSFAT XI ES,YE ; F ANSC EQB ? ND;E  R12,RP CM $: 1E LSFAE UMSS;A  R0 LRC S ERSTGIREL OL RET;S  OLTRSE LLCA  ANSCL OL RARNELI;   : ANSC ITEXS ANY TRENE OV;M 3)(RT0MIXP JM  ZESIY TRENE ATEG;N  R3 EGN " OLMBSY "TOT INPO; 2 ,RR4 OVM: 2$ SEAL FITEX, ES;Y   RNTURE  R0 LRC O N;  1$mDFLGBM, 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 TOP ROLTOP: ENTSEC ROLSIZ  ;ENTRY SIZE ROLSIZ: XITSEC    ;START OF TABLE TO BE FILLED IN GENROL SYM, 0, 0,4 ;SYMBOL TABLE .IF NDF XMACRO GENROnDEF , 02, 020000, OPCDEF , 02, 120000, OPCDEF , 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 , o.WAIT #TRNLNK  ;AWAIT COMPLETION BIT #140000,(R3) ;ANY ERRORS? BNE 21$  ; YES 4$: CMP R4,#OVRTBL+ ;FINISHED? BLO 3$  ; NO 10$: CMP (SP)+,(SP)+ ;FINISHED, PRUNE ".LOOK" RETURNS TST (SP)+  ; AND WORDS/BLOCK INC OVRFLG  ;DON'T RETURN MOV #OVRXCT,PRGLIM ;SET NEW STACK BASE RETURN 20$: CLR -(SP) MOV #1640,-(SP) BR 24$ 21$: CLR -(SP) MOV #2207,-(SP) 24$: IOT .EXIT .WORD 0 .WORD 13  ;OPENO TRNFIL: .RAD50 / 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 ANSCH UGROTHT XI;E  NXCASR B 3 ,R)+SP(V MO $: 7T LO SONTIERNS ITOT INPO, ES;YqL MAC, 0, 0,4 ;MACRO ROLL GENROL DMA, 0, 0,2 ;DUMMY ARGUMENT ROLL .ENDC .IF NDF XEDLSB GENROL LSY, 0, 0,4 ;LOCAL SYMBOL ROLL .ENDC GENROL SEC, 0, 0,5 ;SECTION ROLL GENROL COD, 0, 0,4 ;CODE ROLL GENROL DUM, 0, 0,0 ;DUMMY (SEPARATES VARIABLE FROM FIXED) GENROL CND,CNDBAS,CNDTOP,2 ;CONDITIONAL ARGUMENTS GENROL SWT,SWTBAS,SWTTOP,2 ;COMMAND STRING SWITCHES GENROL EDT,EDTBAS,EDTTOP,2 ;ENABL/DSABL GENROL r06, 104000, OPCDEF , 00, 000000, OPCDEF , 01, 005200, 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,sMACRO / .RAD50 /OVR/ .WORD 0 .WORD 0 TRNBLO:    ;TRAN OUTPUT BLOCK .BLKW   ;DEVICE BLOCK NUMBER .BLKW   ;MEMORY ADDRESS .BLKW   ;WORD COUNT .WORD 2  ;FUNCTION (OUTPUT) .WORD 0  ;NUMBER OF WORDS NOT TRAN'D ENTSEC MIXED .WORD 0 TRNLNK: .WORD 0 .RAD50 /OVR/ .WORD 1 .RAD50 /SY/ XITSEC CALOVR:    ;OVERLAY CALLING ROUTINE ; MOV @(SP),OVRADR ;STORE ADDRESS ; ADD #2,(SP)  ;MOVE PAST IT MOV )+R1,()+R1(P CM  NO ; $ 2E BN  D?EN; 0 ,R#2 ICB T SEFF OVEAL HN,IOATERITF OND;E  R0 SRA: 6$ R10,RD AD $: 5 $ 6R B X DEINR WELO; 1 ,RR0 UBS: 4$ GHHIO TOF ICHANBR, NO; $ 5I BH $: 3D UNFO, ES Y;  7$ EQB ? NDCOSET OUABW HO, ES;Y 1)(R,24)(R2P CM  NO ; $ 3E BN  H?TCMAS RDWOT RSFI, NO;) R1,(4)(R MPC S YE ; $ 4S LOB ? NDLAS S'AN-MNON IFF;O  R12,R MPC: 2$ NTOI PAY-WLFHAT ARTTA;S  5$ BR  NO ; $ 1E BN  E?ONT AS L. IT BNGDIONSPREOR CuLCD,LCTBAS,LCTTOP,1 ;LISTING CONTROL GENROL PST,PSTBAS,PSTTOP,4 ;PERMANENT SYMBOL TABLE .IF NDF XCREF GENROL CRF,CRFBAS,CRFTOP,1 ;CREF MNEMONIC ROLL .ENDC ENTSEC MIXED  ;DON'T CLEAR MACTOP: .BLKW   ;TOP OF MACRO STORAGE ROLNDX: .BLKW   ;ROLL INDEX ROLPNT: .BLKW   ;ROLL POINTER ROLUPD: .BLKW   ;UPDATE IF NON-ZERO ENTSEC PSTSEC  ;CONTROL LOCATION OF PST XITSEC ENTSEC IMPURE PASS: .BLKW    ;NEXT GROUP MUST Sv X45 OPCDEF , 11, 172400, DR2, X45 OPCDEF , 14, 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, Xw@(SP)+,OVRADR MOV OVRSIP,-(SP) ;STACK SECTOR IN PROGRESS MOV R0,-(SP) ;SAVE REGISTERS MOV R1,-(SP) MOV #OVRTBL+2,R1 ;POINT TO BASES OF OVERLAYS 1$: CMP OVRADR,(R1)+ ;TEST FOR FIRST OUT OF RANGE BHIS 1$ TST -(R1) MOV -(R1),R0 ;GET BASE SUB #OVRXCT,R0 ;COMPUTE SWAPPED-IN ADDRESS SUB R0,OVRADR ;SAVE IT MOV R1,OVRSIP ;SET "IN PROGRESS" CALL 2$  ;SWAP IN, IF NECESSARY MOV (SP)+,R1 ;RESTORE REGISTERS MOV (SP)+,R0 CALL @OVRADR  ;CALL IT ARLE;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 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 NEyTAY TOGETHER SYMBOL: .BLKW 2  ;SYMBOL ACCUMULATOR MODE: FLAGS: .BLKB 1  ;FLAG BITS SECTOR: .BLKB 1  ;SYMBOL/EXPRESSION TYPE VALUE: .BLKW 1  ;EXPRESSION VALUE RELLVL: .BLKW 1 .BLKW 2  ;END OF GROUPED DATA CLCNAM: .BLKW 2  ;CURRENT LOCATION COUNTER SYMBOL CLCFGS: .BLKB 1 CLCSEC: .BLKB 1 CLCLOC: .BLKW 1 CLCMAX: .BLKW 1 ENTSEC IMPPAS  ;CLEAR EACH PASS CHRPNT: .BLKW   ;CHARACTER POINTER SYMBEG: .BLKW   ;POINTER TO START OF SYMBOL ENDFLG: .Bz45 OPCDEF , 02, 010000, DR2 OPCDEF , 02, 110000, 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{MOV (SP)+,OVRSIP ;RESET PREVIOUS SECTOR IN PROGRESS BEQ 5$  ;BYPASS IF RESIDENT 2$: MOV R0,-(SP) ;SET TO TRAN MOV R1,-(SP) MOV OVRSIP,R1 CMP R1,OVRSIC BEQ 4$ MOV #TRNBLI,R0 MOV OVRBKN-OVRTBL(R1),(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 G 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;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}LKW XITSEC   ;RETURN TO NORMAL .SBTTL PROGRAM INITIALIZATION .GLOBL START, CONT, FIN START: .IIF DF TRAPS, .TRAP #0,#TRPPRO ;ENABLE TRAPS .IF DF OVLAY TST OVRFLG  ;FIRST TIME? BNE 1$  ; NO CALL OVRBLD  ;YES, CHECK THINGS OUT 1$: .ENDC CALL XCTPRG  ;CLEAN THINGS UP A BIT ; CLR CMOLNK .INIT #CMOLNK  ;INIT KEYBOARD OUTPUT PUTKB HELLO  ;SAY HELLO ; CLR CMILNK .INIT #CMILNK CONT: MOV PRGLIM,SP ~, 000240, OPCDEF , 00, 000005, OPCDEF , 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, RETURN ENTSEC MIXED TRNBLI: .BLKW .BLKW .BLKW .WORD 4 .WORD 0 XITSEC ENTSEC MIXED OVRSIC: .WORD 0  ;SECTOR IN CORE OVRSIP: .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; 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. 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 ;SET STACK POINTER MOV #DUMROL,R1 ;POINT TO SEPARATOR ROLL 2$: MOV SP,ROLBAS(R1) ;FILL IN VARIABLE BASE MOV SP,ROLTOP(R1) ; AND TOP CLRB ROLSIZ+1(R1) ;CURRENT SIZE DEC R1 DEC R1 BGE 2$  ;LOOP IF MORE ROLLS SUB #400,SP MOV SP,MACTOP ;SET NEW SP AND SET TOP OF MACRO STORAGE ENTOVR 1 CALL XCTPRG  ;INIT FOR PROGRAM ; CLR SRCLNK ; CLR LSTLNK ; CLR OBJLNK .IF DF DOSV4 .SYSDV   ;GET SYSTEM DEVICE .IF NDF XCREF MOV (SP),CRFLNK+6 .E 000261, OPCDEF , 00, 000270, OPCDEF , 00, 170011,  , X45 OPCDEF , 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, '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 ENTSEC 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   ;RETS 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,DEINT 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 TLTAUEFNDC .IF NDF XSML MOV (SP)+,SMLLNK+6 .IFF TST (SP)+ .ENDC .ENDC 3$: .RSTRT #FIN  ;SET RESTART ADDRESS .IF DF KNIGHT 4$: .=3$ BR 4$  ;BYPASS .RSTRT .=4$ .ENDC ENTSEC TXTBYT HELLO: .ASCII /RMACRO V/ ; INTRO MESSAGE 1/7/73 GVNUM    ;GENERATE VERSION NUMBER .ASCIZ / / ENTSEC MIXED PRGLIM: .LIMIT   ;OVER-WRITTEN BY OVRBLD XITSEC CONT2: PUTKB H176000, DR2, X45 OPCDEF , 12, 175400, DR2, X45 OPCDEF , 12, 175400, 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, 17URN FROM ANY OF THE ABOVE ENTSEC SWTSEC SWTTOP: ENTSEC EDTSEC EDTTOP: ENTSEC CNDSEC CNDTOP:    ;TOP OF CONDITIONAL ROLL XITSEC   ;BE NEAT .END START 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!.SCT#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 FOLMBASH  ;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-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$: 0300, DR1, X45 OPCDEF , 02, 160000, DR2 OPCDEF , 11, 173000, DR2, 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, XX:AX:vL"X:;d.. U /D D` W! W!X:;dX:vL*.T W!  RE@ 5@5@d+X:;d Hq(X:d[.ze JU  X:vL"X:;dh$5d7h $.X:hX:$X:dX:h X: .    ! ! f&X:;dX:;dX:;d X: d.,,SYT 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, C 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,ALAL, LP AP,AL, LP AP,AL, LP AP,AL, LPAL, LP AP,AL, LP AP,AL, LP AP,AL, CX

PC, CX PX,PC, CX PC,SM, CX|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 FIELDS? 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$  ;BRA45 DIRDEF , DFLGBM DIRDEF , DFLGBM DIRDEF  DIRDEF  DIRDEF , DFLGEV DIRDEF ; ;07.31.72 DIRDEF , DFLGBM DIRDEF  DIRDEF ; ADD .DEF 1/7/73 DIRDEF  DIRDEF  DIRDEF  DIRDEF , DFLCND DIRDEF , DFLMAC, XMACRO DIRDEF , DFLMAC, Q$  B & R, R,X:X:;dr.*f  - ~ X:X:X:V.(⋁wU5A U X:X:vL $X:..N R wl F7  UX:vLR $Hq$t& $h H %5].X:vL X:$X:hX:X:vL~&A Z>55X PM,NU, UMNU, UM NM,NU, UM NM,NU, UM NM,NU, UMPC, LP AX,PC, OM CX,PC, CX PX,PC, CX

PC, CX PX,PC, LP AX,PC, CX PX,PC, P EO, OL EL,EO, OL EL,EO, OL EL,EO, OLEO, OL EL,EO, OL EL,EO, OL EL,EO, OLEO, OL EL,EO, OL EL,EO, OL EB,TA, OLEO, OL EL,EO, OL EL,EO, OL EL,EO, OLAR<, AP IR. E BLTAE YPxNCH IF LAST SPEC SERROR 204  ; NO, ERROR 11$: .IF NDF XCREF TST CRFFLG  ;CREF REQUESTED? BEQ 12$  ; NO .INIT #CRFLNK  ;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 INPUTXMACRO 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 , DFLCND5..X:vL X:ZX:XX:;dX:vL 6$X  5XE,.X:X X:  X:vL rBx X:Xp&=X! 5X.X:vLX:X X:vLX:X:Xu. ҕ     . Ԁ| X: X: $X: &X:vL &   R?  %. X:X:vL  X:X:vL X:., 5X`  D TERCTRAHA CTERANEGE;G AR TTNCGE ROAC.M  RSHA CNGTIINPR;P ALT.!CUM.NCTX!PCT.!CMC.SCTM!COT.C= PCT. C ) IT BUSIN(M ONOL-CMISE ; 0 20 C=SMT. CA PHALE AS CEROW L;  001= LCT. CR LAOL DT,DO, HALP A; 0 04 P=ALT. CC RIMENU;  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:PNt MOV (PC)+,@(PC)+ ;SET DEFAULT FILE NAME .RAD50 /TEM/ .WORD DEFNAM MOV (PC)+,@(PC)+ .RAD50 /P / .WORD DEFNAM+2 CLR -(SP)  ;INIT FOR MONF 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 DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF , DFLCND DIRDEF  DIRDEF , DFLMAC, XMACRO DIRDEF , DFLMAC, XMACRO DIRDEF , DFLGEV DIRDEF  DIRDEF , DFLMAC, XMACRO DIRDEF , DFLMAC, XMACRO DIRDEF , DFLSMC, XMACRO DIRDEF  , , XMACRO DIRDEF  , , XMACRO DIRDEF  , , XMACRO DIRDEF   . X:  X:X X:vL X: $X:vLc.R .5`ʕ'5@ʕG   X: $X: (X:;d .xW  H H5X tҕ tX:X$X:;d.   . ?.X:;d X: X:X:vL "X:.  .5$X  p-&X:vL RX:X(X: w h.X:RG 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 ANTMERENC;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 ? NGp ; CLR SRCLNK MOV SRCFIL,R0 ;GET SOURCE FILE NAME BEQ 16$  ; BRANCH IF NULL MOV R0,DEFNAM ;NON-NULL, SET DEFAULT NAME 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 DIRDEF  , , XMACRO DIRDEF  DIRDEF ; 07.31.72 DIRDEF  DIRDEF  DIRDEF  DIRDEF , DFLGEV DIRDEF ; ADD .REF 1/7/73 DIRDEF  DIRDEF , DFLMAC, XMACRO DIRDEF  DIRDEF  WRDSYM: DIRDEF <WORD >, DFLGEV DIRDEF <WORD2>, DFLGEV, XFLTG ;07.31.72 � X:� X:�vL�� X:y��������.�� �H H5�X�  ʕ � ����������� X:;d �X:X� X:��������.��(ҕ ��5�X�  Hҕ � �I��������&�� X: X:vL�X:X� (X:vL���������.��N5�X��  &5`�ҕ'�5@�����������X:X�R��������.��tG�ҕ �  � r��E�����������R� X:vL��*��������������������.�� "�ы7 ��R@   7�7 ��������&��X:"� Ԁ|X:vL��&X:�����������HIYTANE 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#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 DO50l� MOV (SP),SP  ; AND STACK BASE .IF DF DEBUG MOV SP,MONTOP+2 .ENDC .STSTK MACTOP ������������������������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�� PSTTOP:    ;TOP LIMIT .END ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������X:� R��w��S�������� ����r\ ���������� qQW\ �qQWZ��������.���] �= W!:�VW!=�R  ����������X:;d� X:;d ���������.��w�  w�` � W!$� ��������.��W!:� �l�5U��� 5 `���������� X:�X:;dl�X:vL��G��������.��D���� x �5��U�� ��������*�� Hq� z X:�&X:vL���������.��j� W!=� W!:� ( b�� ����������,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������������������������������������������������ 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 ,Rh�)+ MOV (R4)+,R1 ;GET PROPER MONTOP ENTRY ASR R1 DNC CMP R4,#MONTOP+10 BNE 49$ .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 C����������.�� g��������; 9@��; P<@��= @����������.��k @��k@�� X@��|@@��@����������.����@��H�,H�,H�kQH�,��������.��xH�`@��q!`@��t!��@��t!@����������.��t!@Q@��t!p@��!��@��""`@��"W@��"��������.��t'�@��t'@��-`@��8Z@��09��@��`��������.��49%@��59@j@��69��@��79��@��79@@����������.��79�}@��<9��@��<9@@��<9�}@��>9@����������.��>9@@��>9@��D9��@��D9%@��J9��@����������.��9��@�� ;�$X:���������.���;-��-  < 5�� �E��������&�� X:� Hq� X:�&X:�%��������&���U �7P���5��-���������.�� X:�X:�X:�X:� X:���������.�����U���U��  p U�u��������.��X:� X:� X:�X:vL��X:� ��������.���� ���w� �ff x I��������&��X:vL�� X:;d��X:vL� X:�L��������.�� T �5� ��-�� U�ff E��������&�� X:�X:vL��X:�)+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;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 d�ALL XMIT5 MOV #CRFFIL-4,R1 CALL XMIT6 .RUN #RUNBLK HALT ������������������������ 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$���@�� ;@��uL`;@��{L�}@��m��������.��kQp@��kQr@��QL@�� R`;@��W+@����������.���Xp@��iYy@��Zd@��d^��@��C`O@��X��������.��C`O@��C`O@��C`O@��C`O@��C`O@����������.��C`O@��C`O@��C`O@��C`O@��C`O@��v��������.��C`O@��C`O@��C`O@��C`O@��+dD@��?��������.��/d@@��fZ@��p�<@��pp@��Nq��@����������.��Uq��@��Xq�}@��$w~@��|~K@��*�@����������.��*�@������(�� gw(p g h�� ghhp����������zh`�b����������������Hq�/��������.��F U  ыw�w�U@��� , �����������X:�X:� X:vL����������.��l � �5�5� U���5�� ��������,�� X:� X:�,� X:vL��$,��������.�� � �  H�� w��Ew�S��������&��X:vL�X:vL�X:vL�(X:vL���������.�� & f� A�f�E� t� ^ ���������� Hq� Hq�(^ ��������.�� w� Ί�  �1P�  �@�Eo����������X:vL�r � r ���������.�� �%P�%E; $ 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  ORATULUMCC 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:NUVT�C��������������������`� .CLOSE R2 .RLSE R2 2$: TST (R1) BNE 1$ RETURN ENTSEC DPURE FINTBL: .WORD SRCLNK, LSTLNK, OBJLNK .IIF NDF XSML, .WORD SMLLNK .IIF NDF XCREF,  .WORD CRFLNK .WORD 0 ENTSEC TXTBYT FINMSG: .ASCIZ <CR><LF>/ERRORS DETECTED: / FINMS1: .ASCII <CR><LF>/FREE CORE: / CRLF: .ASCIZ // FINMS2: .ASCIZ /. WORDS/ HASH: .ASCIZ <CR><LF> /#/ <VT> XITSEC ������������������������    ;ROUTINE TO INIT FILES    ;IN - R4 - POINTER TO CSI BUFFER ������������� gw��q��������.�����%��@  @��@��������.�� C`O�C`O�C`O�!C`O�)C`O�q��������.��&��`�@�%@�@ ��@�t@ @�vD ��3��������&�� C`O�C`O�C`O�#C`O�����������������.��L� D J �� J ���� ��������.��C`O� C`O�C`O�C`O�%C`O���������.��r�����Y ���� ���� ���� ����'��������.��C`O�C`O�C`O�C`O�'C`O�m��������.��� v�� ��@�@ @� ��@�P @�% 5�E%�p&��������.��* E%E%�% � A A �j����������P 5�U�@���w������������������X:vL���Hq���������.������������������H������:����������@����������v���������������qQW^ ��������.��^ � <5U���E� �� ����������X:vL��"X:�$X:���������������������.�� �  e�5�U����������������X:�X:vL��(X:���������.��  � ׭�� ���� � 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 $: 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:R5ET�G��������������������\�    ;OUT - R0 - 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���������.�� C`O�C`O�C`O�!C`O�)C`O�k��������.���� ����0 ��e����o����ov��������&�� C`O�C`O�C`O�#C`O�Y��������.�����t������������ ������������.��C`O� C`O�C`O�C`O�%C`O�w��������.�� ����P������������;������������.��C`O�C`O�C`O�C`O�'C`O�u��������.��0�������������  ��������.�� C`O�C`O�C`O�!C`O�)C`O�u����������������.��V��� �  ���������� X:vL�X:�X:���������.�� X���� H� � v �#���������� X:�X:�G��������.�� �   0U���@�7 ����������"X:vL��i��������.�� l �& W!@� 5�U���U� lW!����������X:vL �X:vL����������.��B #� `% �� * .U�^W!-� ����������X:vL�y��������.��h ��� 8W!(� �U �SW!(� �W!%����������X:;d��X:;d�W��������.�� +� U�F5�U�@ 5  ������� � RNTURE  R0+,P)(S DDA 0 RL AS  R0 SLA ) SP-(0,RV MO  R0 SLA 0 RL AS  R0 SLA 0 5 *R0Y PLTIUL;M    0:R5UL M N URETR 0 ,ROLMBSY OVM: 5$ NBETS: 4$ 1$ BR  )+R1(T TS  3$ EQB $ 2S BC  R2 SRA $ 4E BL  50TRGE $: 3) R1,(R0 DDA $ 1S BC  R2 SRA: 2$ 50LRMU LLCA $: 1$ 5E BG  36,#R0 MPC $ 5E BL  50TRSE  R25,4526#V MO  1)(R-R CL  1)(R-R CL  R14,L+BOYM#S OVM N CAES ROFE AS CINE AV;S EGMBSYT,PNHRCV MO  EGVRSA  M:SYET G X� (SP)+,R3 ;SAVE STATUS 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 BUFFER POINTER ��%�������������������&�� C`O�C`O�C`O�#C`O�c��������.��|��  �����%�� ����%��������.��C`O� C`O�C`O�C`O�%C`O�5��������.����@ % @��  ~��@�r��������.��C`O�C`O�C`O�C`O�'C`O�v��������.��~�@�~%@�\!����42�}���s:������������������.�� C`O�C`O�C`O�!C`O�)C`O���������.�� s: :����@���@�A���KF��������&�� C`O�C`O�C`O�#C`O�^�����.�� W!(�5�3 5�d�5@������������X:d�&X:���������.�� 5�d�U�U7� �5�U������������� X:d�(X:vL����������.��� E�ffff �PU0� &� ��������*��& � U� z ,W!)�U���� d�����������X:vL���w�G�������� ���I\ 5���������� qQW\ �qQWH ��������.��H 7 > 7 ~ =P� �˵@�2Q����������~ Ԁ|P�X:;d���������.��n ˵ �1ы�-�7 V�˵@�!Q�����������X:�S ERDLAN HERCTRAHA/COLMBSY TLBT.S �������������������������������������������� � 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  ALOC LTHWIE ACPLRE;X DIRA,CR2 OVM X DIRAT ENRRCUK ACST;) SP-(X,DIRACV MO  R2.,#2 DDA: 4$ R2.,#6 DDA: 3$ R2.,#2 DDA: 2$ TELUSOABE BSTMU; T TSBSAP JM  UEAL VNTMELEMPCO; T�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 1$: MOV (R1)+,(R2��������.��@�K &@�K8@�K09@�KK@�K��������.��C`O� C`O�C`O�C`O�%C`O���������.��:K@�K��@�K@�K��@�Kf�@��������.��C`O�C`O�C`O�C`O�'C`O�����������������.��`K�K �zQD�� @R��@@R@8�K��������.�� C`O�C`O�C`O�!C`O�)C`O�M��������.��@ S�@�S%@�S��@�S @�pT�l��������&�� C`O�C`O�C`O�#C`O���������.��pT@8 T��@�pT�@�T%@�OX��������.��C`O� C`� Ԁ|V�(X:���������.�� ыʋыE�& e m�7�7����������� r �$X:�(X:���������$��  � m� 7 � ы��������&��rBx �X:�X:��w��������� ���ke\ �������������������� qQW\ �qQW Q��������.�� 5�d�ɋ �W V�W V�U���f��������.��X:d�X:� Ԁ|V� Ԁ|V�(X:vL��|��������.�� J �ԋ� � �U��� ����������X:vL�&X:vL������������" Հ�������������������Ԁ|P��������) R4(M CO  TELUSOABS ESOCPR; 0 M4ERTL ALC: 1$ 0D OR.W  DCEN. F ^; 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:M5ER�T���������������������� � ITEXD ANS ASYP BS,YE; 7 M2ERTP�)+ ;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 ������������������������TSTSW:    ;SWITCH TEST SAVR�O�C`O�C`O�%C`O�0��������.����� OX �OX�OX%Y����b����������������.��C`O�C`O�C`O�C`O�'C`O�}��������.��[q`"��r��@ r @r��� r a��������.�� C`O�C`O�C`O�!C`O�)C`O�s��������.���s����s���s����w�� w ��������&�� C`O�C`O�C`O�#C`O�a��������.��D;w����w����w����w�� w[��������.��C`O� C`O�C`O�C`O�%C`O�����������������.��j%�w@8�w�K� w������P�� ���h�����������qQW* ��������.��*  � �  5��U@�� ����������X:�$X:�#��������.��P @U����  * � ����������X:vL��"X:;d�����������������������v �&�w�H���������� X:� X:&��f ��������� �� � ,�����������X:,��qQW G����������������.�� p� ���� ^� �  ��������&�� Hq � X:�Hq�X:���������.�� .��U �� N  �� w�%�������R B R ROER, NO ; 1 M4ERTE BN  "?">;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  41RMTEL�EG 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 POINTER DEC CHRPNT  ;GET A RUNNING START 3���w������������.��C`O�C`O�C`O�C`O�'C`O���������.��y���~Ly����y�y�y@��������.�� C`O�C`O�C`O�!C`O�)C`O���������.���yh@�y@�y &@�y&@�y`' ��������&�� C`O�C`O�C`O�#C`O���������.��@�y��@�y@�y��@�yfyA����������������.��C`O� C`O�C`O�C`O�%C`O���������.���y�} z��@� z�@� z%@�'��������.��C`O�C`O�C`O�C`O�'C`O�,��������.���.��X:.�X:�X:� X:� "X:���������$�� b ���� 5�d�7 ��������.��Hq � X:�Hq�X:�X:d�`���������� �7 � �z����������X:�X:��w �-�������������� �� � \���������� qQW �qQW ��������.�� �� �   �  f���������� X:� X:�G��������.�� �  � >U����70�=���������� X:vL��&X:0���������.��D�2� VJҋ ` ��������.��X:� EQB R TEACARCHT EX NHE TET;G   HRTCGE $: 1R TEISEG RRETO SMPTET SE, '" "; 1 ,RR4 OVM: 45RMTE ITK AR M","";  R2 NCI: 44RMTE TELUSOABS ITE UR SBE; STSTAB MPJ E LUVAE ATEG;N  4)(R EGN S LU PRYNA UOWRRBO; 0 M4ERTL ALC: 42RMTE RNTURE  ORRR ESSREDD A;  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 " "%; 46H�$: 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 BOTH BE ZERO BEQ 1$ 5$: SERROR 203 6$: RETURN ��(Yz �z�� �d�� ��� �|��������.�� C`O�C`O�C`O�!C`O�)C`O�m��������.��N ��@ %�@�}��j��@�x;1��������&�� C`O�C`O�C`O�#C`O�^����������������.��t���;B���;����\E����\XH���_��������$��; 9; P<= k &kb��������.��t����i}�������%����������������$�� X|@ ��(`��������.��֯����֯�����֯x���֯���֯������������� q!`t!��t!"t!@Q[��������.���X:2� X: X: $X:-��������.��jɕ �w0 �&� �� R( 4 e�5��������&�� X:0 X:;d&�X:�� $X:;de���������.��5� X�\� D  �� � ��������&�� X:X� Ԁ|\�"X:;d��&X:;d ���������.���-�� � � ��A���������� X:;d�X:T�������� �� ��  �re0�J ������������Ԁ|\���������&��\�* * * TABLE OF CONTENTS * * *������������qQWK��������.�� *7 �8� � � <�� ���������RMTE T,PCH.CL TBCHG " "'; 45RMTE L,XCH.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 DSSPABYD�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 FOR PASS 2 NXTPAS: CALL XCTPAS  ;INIT FOR PASS CALL SECINI  ;INIT THE SECTOR ROLL C���ׯ�}����گr����ޯp!��������P$��������$��t!p !��""`"W$t'���������.�� ���$^����l!����n�����n���n3��������$��t'-`8Z09��&49%��������.��2!���n%���n+���n,���n.�����������$��59@j69��79�� 79@(79�}��������.��Xn�K���nK���n N���n&X���nHX����������� <9��<9@<9�}">9��������.��~��n[���n�}���n}���n���q%��������$��>9@ >9D9��D9%$J9����������.������z�d���zxd���鰼R��&�� R� X:8�X:� X:<�5��������.�� 8�U���U��� 2 <  :�C����������X:vL��X:vL����������.��@U���� n  n�C!w�DB���������� X:vL������������������.��f   0 ` � E��U��-��������.��� ��  � �U���7� ��������&��X:;d� X:;d� X:vL��&X:;d��������� ��������������;d ����������� �������������X:;d��qQW!������������.���e�E�� �7 ��7 �U �� �;  R CHETG: 27RMTE EDINEFND UASG LA FO, N;  UR ROER 6:M2ER TC ND.E  NDOU FIFH NCRA;B  27RMTE NEB L BOYM SALOC LO,;N   CHSRL B LSEDXF NDF .I  ES Y;  27RMTE EQB ? ALIMEC;D OT.DCH,#R5 MPC: 5$ 2 $ 21 BR  IXAD RALIMEC DTHWIN AIAGY TR ; 2 ,R0.#1 OVM , NO;  M SYETS S YE ; $ 25 EQB ? ALIMEC DWEE ER W","$R O.";"  0.#12,RP CM $:24 28RMTE BR  ITG LA FS,YE; N ORRRE O N;  28RMTE EQB ? GEAN ROFT OUS ERMBNUY AN, NO; 0 RB STT C ND.E  ES@�LR 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 LINE: CALL GETLIN  ;GET THE NEXT INPUT LINE BNE 1$  ; BRANCH IF EOF CALL STMNT  ���y���� *��������$��9�� ;�� ;uL`;&{L�}P������������������.����� ��� ,��� |����1q����;��������$��kQpkQrQL R`;(W+d��������.��34����<L;����DŞ����\�����x��A���������� �XpiYyZd"d^����������.����,����:����ѱ����ѱ���ձ%>����������������$��+dD /d@fZp�<$pp��������.��<����ձ@Q����ձ g���,����)~����x��������$��Nq��Uq��Xq�}$w~&|~K����������b q���@q�������������*������������X:�X:�$X:���������.�� h F���  Z z L *`O��������.�� �7 �7 � 0 � ����������� rBx �X:�X:���������.��(BGW!<�! @@B!   ���'����������&X:;d����������.��NE 0� N�� ( ) ��������������������� Hq���������.��t& F &  �  (�U���&�����������$X:vL��g��������.�� e  W �  v �U�������������(X:vL��c��������.� Y;  4$2Q BE  L?BOYM SALOC LO,;N OL.DCH,#R5 MPC B LSEDXF NDF .I  ES Y;  4$2Q BE  L?MACIDE, ERMBNU;T DOH.#C5,RP CM $:22 ITG LA FS,YE ; T ORRRE ? OWFLEROVY AN, ERMBNU; $ 22 PLB N AIAGD SEIS ME,OP N;  30RMTE EQB T ERNVCO;  M NUVTC: 1$ 2X DIRAT ENRRCU, ERMBNUE UMSS;A R2X,DIRACV MO  0:M2ER�T���������������������� � 28RMTE BR  ROZES IDEMOE UR SBE; ) R3(R CL $:17 UR ROER  EDINEFND UAST ERNS IE,BLTAN IOT;N   RTSEIN  RSTEINPOH RCEA SET;S   CHSR<�;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 GETSRC:    ;GET THE NEXT SOURCE FILE MOV #SRCLNK,R1 TST (R1)  ;FILE OPEN? BEQ 1$  ; NO .CLOSE R1  ;YES, CLOSE IT ��*������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������  7 rT� > ^���������� "HqT�����������.��>&f&f& H�@ABCe) #����������� X:H�W��������.��  E�� e8�EU�o��������.��2 ��      B A @ ��������(��X�U���H�L ~w�^����������X:vL�� X:H��HqV� �������� ��V�|x���������� qQW| qQWx�w�E�������� ���(\ >���������� qQW\ �qQWx��������&��x � � &��H�P�! W ��������.��X:vLS S YE; $ 17 MIB ? DECOP ;O  3)(R STT ? DECOP- OANS APRHPE, EDINEF DERUST NO;  H RCOS $:16 28RMTE BR  AGFLT SE, NO;) R3,(LGLFRE#S BI  ES Y;  28RMTE EQB ? ONTIEC STELUSOAB; ) R3(T TS  GSLA FARLE;C  3)(R RBCL  T4MIXL ALC 2 ,ROLMBSY#V MO  EAARG INRKWOO TVEMO, OT;D R1M,NALC#C OVM: 4$ 1 8 M2ERTR B G LA FALOBGLL NAERNT IARLE;C 3)(RG,FLLB#G ICB: 2$ 1R ROERD NEFIDEUN, NO; U ORRRE S YE ; 8 M2ERTE BN  L?BALO GO,;N 3)(RG,FLLB#G ITB S YE ; 8� .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, TRY ".MAC" AND ".PAL" 2$: MOV #2$,SRCFIL-4 ;SET ERROR RETURN MOV (R2)+,SRCFIL+4 ;MOVE IN NEXT DEFAULT BNE 4$  ;BRANCH IF N� .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 <CR><LF> /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,�� X:vL�X:;d�� X:H� X:P�`��������.��@�A�F�%+�%-��@� ��3��������&�� X:@� X:F�X:@� (Hq���������.��5� D�  j 0�bab b b m����������X:D�`��������.��B�D� %.�w B�ށ%E� � ���������&��X:B�X:D�X:B�$X:;d�����������.��� U���� 7`D�@@T@T@Th��������&��X:;d�X:vL��X:;d�X:D���������.��. D�1"3 � F� �e�F� D�q��������&��X:D�X:F�$X:F�(X:$ 12 NEB ? EDINEF;D 3)(RG,FLEF#D ITB: 1$ 1S YE ; M ORRRE O N;  1$1Q BE  D?NEFIDEY PLTIUL;M 3)(RG,FLDF#M ITB D UNFOT NOF ICHANBR; $ 16 EQB E BLTAL BOYM SHE TCHARSE;  H RCSS  ALCIPE SATRE TS,YE ; $ 14 EQB ? ERNTOU CONTICALO; 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; G FLXPEC IN $: 1E BLTACALORE, NO4�ON-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: .RAD50 /MAC/ R50PAL: .RAD50 /PAL/ .RAD50 / /  ;TERMINATOR ENTSEC IMPPAS CSISAV: .BLKW   ;SET NON-ZERO ON LAST SRC � .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  ;�D�k��������.��T F�   � � 5� � ����������X:F�d��������.��z� � �  �F� D� F� �����������X:F�X:D�"X:F�������������������.��e�F�G�U��� b(J�  ����������X:F�X:G�X:vL��L��������.��� 5�d��  UH��r H� :��������&�� X:d�X:vL� X:H� &X:H�f��������,��  U���m@�7 �7 ��7Y����������������.��X:vL��X:@�X:�X:vL� X:���������.���� ; 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: RRSEAB RXSEAB EQB S AGFLG,FLEL!RLGBFGL#T BI T:TSBS AP EXLBG : XPSE0�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 ADD R0,PAGNUM ;YES, UPDATE PAGE NUMBER MOV #-1,PAGEXT ; CLR LINNUM ;INIT NEW CREF SEQUENCE .DELETED CLR FFCNT CLR SEQE�PROGRAM 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 ���������������������������������������������������������������� .CSECT��" 0� F� B� $� �����������X:;d��X:F���������.��6 4� $� �l�a �� ��������.��\   � b b b �w�T � %��������������.��,� 2 ��  5�X�w �7 �w�, ��������&��X:;d��X:X�X:vL �"X:vL���������.��)�� \� R��W"�  ! ! ����������X:� X:� X:;d���������*����C � � 7 �2������������������.��X:;d�X:;d�X:;d�X:;d� X:;d���������.���  UAB RRSEAB BR  RXSEAB EQB S AGFLG,FLLB#G ITB: STLTRE XPBEGL  P:EXEL R X ERBSAR B R ERBSAQ BE  PREX  ONSIESPREXL UL-NON;N    P:EXLB G E LUVAO TET SR0;   R ROERS SEAU CLDIE FLLNU;   R XP ETOT INPOY TRENL IAECSP;   ������������������������� ���������������������� � DCEN. $ 1R B 3 RL AS $: 20 RC AD  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),�ND 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 .WAIT #SRCLNK INC LINNUM MOVB SRCHDR+3,R0 ;GET CODE BYTE BIT #047,R0  ;ANYTHING BAD? BEQ 32$  ; NO ERROR � 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, EDIN����U���� � \���������� X:;d�X:vL�X:vL����������,�� � �  I�U��� ���������&�� X:�X:;d�"X:vL���w����������������������!:HX;:[;.DKu��������.�� qQW: qQW; qQW: qQW; qQWD�����������E+D NL,M�KL��������.�� qQWE qQWD qQWL qQWM qQWL����������*�T&XUu���������� qQWT qQWU�qQW:������������������.��: b C � X  P    ��������.��` | 0� 5��@ (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 ; 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(�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)  ;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 FE�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� C BW!&�W!����������X:���������.��!�B   C �C  �'h����������&X:vL�I��������.�� � �  �B ~ �P\�X����������X:vL� X:�&X:\�#��������.��0\� @X�0�`Z� � PX�U�^��������&��X:\� X:X�X:Z�"X:X�9�������� �����]����������X:vL���lzw��������� ���LI�X��������� ������������ ���NL������������ qQW� �}�������� �� �:���������� qQW�qQW���������� ,-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 ; 1$ PLB T ULES RSTTE; + P)(S STT: VXPDEX R03,RV DI  TERAPE;O  R0 LRC: 2$ P)(S OMC 1 RG NE  !!N!AIAG;  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  ORIS$�ED? 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? 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$�L SETCHR GENCAL GSARG GENCAL TSTARG GENCAL MUL GENCAL DIV GENCAL DNC GENCAL R50UNP GENCAL MOVBYT ����������������������������������������������������������������    ;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 ROLNU��U�������������X:;d�X:vL��HqZ�F��������(��Z�w[M y%` QQR RK-[z��s�����������f�w������������^�Y����������X:^��;d�j�����������^�X� "��������&�� X:^� X:X�qQW"�qQW 7��������.�� C �  �B ~ �Pf�\���������� X:�&X:f���������,��00f�@d� Pd�� U����F��������.��X:f� X:d�X:d�X:�$X:vL�������������f�q������������h�����������X:h��;d�IV 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 RG 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 1:P1BO RNTURE  4) �: 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 ������������������������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,CHRPN�M ;FETCH NEXT ENTRY MOV #ROLNUM,R0 CALL NEXT .ENDM .MACRO APPEND ROLNUM ;APPEND TO END OF ROLL MOV #ROLNUM,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) ���������������������������������������������������������������� .MACRO CALL ADDRESS JSR PC,ADDRESS .ENDM .MACRO RETURN RTS PC .ENDM .MACRO SERR�T�����������h�d�������������X:h�X:d��lzw ��������� �� �EN�R��������� ������������ ��� DS�)����������� qQW ������������ ��� CR�)����������� qQW ���������� ���Ts���������� qQWT�qQWT��������.��T � @ � ~P ��������"��zj��-�X t�U����p��������.��X:j� X:�X:t�X:vL���Hqz�����������������z�v@Q�d@�����������qQW��������.��� r�C  r� l�wl� r��>�����(R),R2(C BI  2)(R OMC: 10OP BE NGRAS ABF ORTTA;S    S:ABOP B R ERBSAP JM $: 5 N URETR  )+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 ; $ 5E BN  R?TOEC SMESA, EL R+-L RE;) R21(),R41( PBCM  5$ NEB ) R4,(LGBFGL#T BI  5$ NEB L BALO GERTHEIF IORRR;E 2)(RG,FLLB#G ITB S AGFLD OL, ES Y;  4$ EQB ? BS A *XX;X 4)(RG,FLEL!RLGBFGL#T BI  ET SLL AS,YE �T 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 RIGHT 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)+ ;�OR NUMBER JSR R5,SERROR .WORD 2000!NUMBER .ENDM .MACRO ERROR ARG SERROR <''ARG> .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 S����.��X:vL� X:r�X:r�X:l�"X:l�U��������.��R-n��� ^� n�-p� �� ��������.��X:n� X:;d�X:n�X:p� X:;d ���������.��H� p�z�j� ѭ� k� &� n��������.��X:p� Ԁ|z�X:j�R� "Ԁ|k�;��������������.�� �ҋ�U�U�Rr�7��%����������X:vL� X:r�$X:vL���������.��,� �|�R�ҕ �|�" v���������&�� X:� X:|� X:|� &X:v�5����������R�w �x�7 r����������.��; $ 3Q BE  X?XX* S AB;) R2,(LGLFREG!FLLB#G ITB S AGFLO TND A; 4)(R,-2)(R-P CM  ESLUVAO TCKBAT INPO;) R4-(),R2-( MPC M HE TDD;A 4)(R),R2(D AD  LSVELEL REO TNTOI;P )+R4,()+R2(P CM  ESLUVAD AD, +;) R4,(2)(R DDA: P2BO VLLLRED AN ; L LVELRG NE  UEAL VTEGANE, -; ) R4(G NE  LSBALO GNOE UR SKEMA;  T TSELR: P1BO 0D OR.W  !" ";1 P1BO R,IOH.CL TBCHG " "&; 10OPB, ND.ACH BLHTGC  /" ";V DIXPE, IV.DCH BLHTGC  *" ";L MUXPE, UL.MCH BLHTGC  -" "�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.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 ;T�PACE= 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 C� R� R� X:x�X:r��Ԁ|z��������� ��z��T������������Hq������������ �J��������&�� X:  R� X:�R ����������� ������z�����������qQWd����������d��������������.��X:�X:vL� X:vL�X:�X:vL���������.��x������ fA�ʕ� R���������.��X:�X:vL� X:vL�X:�X:vL���������.��fA� ��� ��e�ʕ����������� Jҋ� ~�M�����������R�;1 OPB, UB.SCH BLHTGC  +" ";2 OPB, DD.ACH BLHTGC  LEAB TOPY ARIN;B    L:TBOP�B���������������������� � OPLO; $ 1R B M ER TUSIOEVPRE UNPR; P ,S0.#1 DDA E INUTROUB SLLCA; + P)(S@L ALC: 2$ 1S ERSTGIREE ORSTRE;+ 4)(R+,2)(R MPC E UTOLBS AOR FSTTE; T TSBSAL ALC S AGFLE RGME, ES;Y 4)(R,-2)(R-S BI  NELIN ICKHE CO, N;  2$1T BG  Y?NL OTELUSOAB;) SP,(BSPABO#P CM $:11 ORRR EL,UL N;  AR ROER  OKF ICHANBR; $ 11 NEB  RNTET EX NTEUAALEV;  M ERT P OSS�RUE? 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 (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 #BP�R.LIN= 003 CR.SYM= 020 CR.MAX= 027 DEFFLG= 000010 RELFLG= 000040 GLBFLG= 000100 REGFLG= 000001 LBLFLG= 000002 MDFFLG= 000004 SRCLEN= 132. LINLEN= 132. LSTLEN= LINLEN BPMB= 8.*2  ;BYTES PER MACRO BLOCK STKSIZ= 4000   ;SP SIZE ���������������������������������������������������������������� .SBTTL ROLL DEFINITIONS .MACRO GENROL NAME, BASE, TOP, SIZE .CSECT ROLBAS NAME'ROL= .-ROLBAS .WORD BASE .CSECT ROLTOP .WORD TOP .CSECT ROLSIZ �����������������������E�����EN�����������qQW_��������.��  ��w�� 5��� Z^5���������� X:��X:vL�� X:��������.���d� � � b0� ��������.��X:d� Hq�X: "X:0�&X:��������.��$�& �� \ '��E�EU���������� R�R� X:���������.��JQa7 �� n��� * 5@������������R� X:�&X:���������*��pŭ�E�U��E*�U*�)�����������PABY;  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 TTSINPO2 ;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 �MB-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)+ ;MOVE 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 NUMBE�.WORD SIZE*2 .CSECT .ENDM .CSECT ROLBAS  ;ROLL BASE ROLBAS: .CSECT ROLTOP  ;ROLL TOP ROLTOP: .CSECT ROLSIZ  ;ENTRY SIZE ROLSIZ: .CSECT    ;START OF TABLE TO BE FILLED IN GENROL T00, 0, 0,4 ;SYMBOL TABLE GENROL T01, 0, 0,4 GENROL T02, 0, 0,4 GENROL T03, 0, 0,4 GENROL T04, 0, 0,4 GENROL T05, 0, 0,4 GENROL T06, 0, 0,4 GENROL T07, 0, 0,4 GENROL T99, 0, 0,4 ����������.��X:�X:�X:�X:*�"X:*���������.��&� 4� l� �7 �� ��������&�� X:&�X:X: R�����������7 � F w r��~����������X:� Ԁ|��Ԁ|������������ END OF PASS 1������������qQWj��������.��  2w� r� X�&� ��������&�� X:X:r� Ԁ|� "X:;d&���������,�� &� J5�d�,�7��������.��X:X:X:d� X:$X:,�#��������&�� $ 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 FERSTGIRET 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; �R 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 FROM 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 �GENROL SEC, 0, 0,5 ;SECTION ROLL GENROL PAG, 0, 0,1 ;PAGE ROLL GENROL DUM, 0, 0,0 ;DUMMY (SEPARATES VARIABLE FROM FIXED) GENROL SWT,SWTBAS,SWTTOP,2 ;COMMAND STRING SWITCHES ; GENROL EDT,EDTBAS,EDTTOP,2 ;ENABL/DSABL ; GENROL LCD,LCTBAS,LCTTOP,1 ;LISTING CONTROL .CSECT MIXED  ;DON'T CLEAR MACTOP: .BLKW 2  ;TOP OF MACRO STORAGE ROLNDX: .BLKW   ;ROLL INDEX ROLPNT: .BLKW   ;ROLL POINTER ROLUPD: .BLKW   ;UPDATE IF NON-ZERO �d5�@X�`7 �7 �z��������.��X: X:X:X�X:;d�R�J��������.��4 �� R 4 � ��5� 2���������� X:  Hq� X:���������.��Z� ��ɥ�f�ҕ �C~Y���������� Ԁ|� X:� ��������.��a ҕ �5�X� · Rʇ 2�����������X:X� X: "X:R��������.��7 � (��  hҕ �� ҕ$����������R� "X:�T��������.�� ��  �   � ������������ X:� X: ) 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 ���������������������������� � ECTSXI  /2ENDLRL KWBL.: UFDBRL 3W LK.B R:HDLD R 1 KWBL.: NDNELI /2ENNLLI KWBL.: UFNBLI F>BUCT-O<.N-LECTOB LK.B 1:PFCT O7 KBBL.: F0TPOC 2B LK.B Q:SECT O0 KBBL.: RPTEOC F:BUCT O 4 KWBL.: ILJFOB 2W LK.B  /2ENJLOB KWBL.: UFJBOB 3W LK.B R:HDBJ O 4 KWBL.: NKJLPASS  ;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 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 .CSECT ���������������������������������������������������������������� .CSECT IMPURE SYMBOL: .BLKW 2  ;SYMBOL ACCUMULATOR .BLKW VALUE: .BLKW .CSECT IMPPAS  ;CLEAR EACH PASS CHRPNT: .BLKW   ;CHARACTER POINTER SYMBEG: .BLKW   ;POINTER TO START OF SYMBOL ENDFLG: .BLKW .CSECT IMPLIN  ;CLEARED EACH LINE .CSECT   ;RETURN TO NORMAL ���������������������������������������������������������������� .SBTTL PROGRAM INITIALIZATION .GLOBL START, CONT,  X: ����������4�������������X:��Hq������������ =�% �R �G @�|�����������������������Ԁ|�w��������(���******�* * * SYMBOL TABLE * * *�/�����������qQW7��������.�� �   ĝ� ��n � ����������X:�X:��$X:vL���������.��$> L 7� `5 �d�\E����������&��X:vL�X:X:d� &Hq�5��������&��J�#�  �����������.��X:X:� X:;d#� X:X:�p���������OB 1W LK.B  4W LK.B L:FIST L2 KWBL. 1 2+>/ENNLLIN+LECT<O KWBL.: UFTBLS 3W LK.B R:HDST L 4 KWBL.: NKTLLS 1W LK.B  REPUIM ECTSEN  ILJFOB K,LNBJO, UFDBCM RDWO.: SIJCOB ILTFLS K,LNSTL, UFDBCM RDWO.: SITCLS REPUDC SENTE 4 KWBL.: ILCFSR 2W LK.B  +2/2ENCLSR KWBL.: UFCBSR 3W LK.B R:HDRC S 4 KWBL.: NKCLSR 1W LK.B  REPUIM ECTSEN  ILCFSR K,LNRCS, UFDBCM RDWO.: SICCSR REPUDC SENTE S ERFFBUO I/ TLBT.S ������������������������ 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 .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 FIN PRGLIM: .LIMIT START: BR 1$  ;NORMAL ENTRY INC RUNFLG  ;RUN UUO ENTRY CALL XCTPRG .INIT #CODLNK MOV SP,R1 MOV #LSTLNK-2,R2 CALL XMIT5 MOV #LSTFIL-4,R2 CALL XMIT6 MOV #SRCLNK-2,R2 CALL XMIT5 MOV #SRCFIL-4,R2 CALL XMIT6 BR CONT 1$: CALL XCTPRG  ;CLEAN UP .INIT #CODLNK  ;INIT KEYBOARD OUTPUT TST RUNFLG BNE CONT MOV #1,R0  ;KB ONLY MOV #HELLO,R1 CALL PUTLIN  ;SAY HELLO .INIT #CIDLNK CONT: �h��#� -�$�  R��������.��X:�X:� X:;d#�X:�X:;d$���������.��| ��� x�@a �` ^��������&�� X:X:�X: X:��������,��W 5�d��� ҝ������������.�� X: X: X:X:d� X:�r��������(���@ �� �F��������.��X:� X:X:�X:� X:�{��������"��ѝ� ѝ �w wa�Y��������.��X:X:�X: �X:X:�������������$��N URETR T IFFTU;S )+R2,(R0 VBMO  R00,#4 DDA: 3$ 20 ,R400-10#D AD $:22 R00,101-#1 DDA: 1$ 2R LAOL DORT DO;0 ,R112-#2 DDA R LAOL;D  1$2Q BE  HALP;A  2$2T BL  LEDDMIT ES;T  33,#R0 MPC S YE ; $ 23 EQB ? CEPA;S  R0 STT: 1$ 10 ,RR3 IVD 0 RR CL $:10 RNTURE  ERSTGIREE ORSTRE, ES;Y R4+,P)(S OVM O N;  1$ NEB ? GHOUHR;T +4OLMBSY,#R4 MPC Y GUT AS LSHNIFI; $ 11 LLCA  R01,RV MO  XTNER FON AIAG; $ 10 LLCA  R30,#5 OVM T IFFTU SND ADEVI� ? 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  ;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)   MOV PRGLIM,SP ;SET STACK POINTER MOV #DUMROL,R1 ;POINT TO SEPARATOR ROLL 2$: MOV SP,ROLBAS(R1) ;FILL IN VARIABLE BASE MOV SP,ROLTOP(R1) ; AND TOP CLRB ROLSIZ+1(R1) ;CURRENT SIZE DEC R1 DEC R1 BGE 2$  ;LOOP IF MORE ROLLS SUB #400,SP MOV SP,MACTOP ;SET NEW SP AND SET TOP OF MACRO STORAGE TST RUNFLG BNE CONT2 CALL XCTPRG  ;INIT FOR PROGRAM CLR SRCLNK CLR LSTLNK 3$: .RSTRT #FIN  ;SET RESTART ADDRESS 4$: .IF DF KNIGHT .=3$ BR  ����������.��X:�X:;d$�X:X:�Hq���������(���������������������������;d$��������� ��$�w#�����������X:;d#��w�M�������� ���3f���������� qQW�qQW7��������,����#���- ��������.�� X:;d#� X:X: X: $X:������������������ ��:w -5���������.�� X: X: X:X: X:��������"��Rd����������.��X:DI; $ 10 LLCA  ORISIV DET;S R30,*550#V MO  RDWOT EX NET;G R1+,4)(R OVM: 1$ GERATO SOLMBSYO TNTOI;P R4L,BOYM#S OVM G REE AV;S P)(S,-R4 OVM E INUTROK ACNP U50D RA;   : NP0UR5 RNTURE  RETO;S )+R2,(R1 VBMO  IISC ATOT ERNVCO;1 ,R.0IG#D DDA R BEUM NVEIETRRE;1 ,R)+SP(V MO $: 1E RSCURE; F NCDL ALC O ER ZSSLEUN ; $ 1Q BE  DEVIDIT EX NOR FET;S  R10,RV MO  ERNDAIEM RVESA;) SP-(1,RV MO  R1E IDIV;D  R03,RV DI  R0 LRC L MACIDEN HA TERTH OOR FRYNT;E ;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) BNE 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  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 d� X:X:X: X:����������lw ���������.�� X: X: X: X: X:��������(��� &fF �C ��������.��X: X: X:X:X:;d���������,��   w �B��0 �2 ��������.��X: X: Ԁ|B�X:0$X:2:��������.���� � � 2 �ҕ+� �c��������&��X:�� Ԁ|�X:;d�X:;d���������,��0   n�w @�&�  w 2���������.��X:0X:    F:NC DR SOVIDIT SE; 3 ,R0.#1 OVM N IORSVEON CERMBNUL MACIDE;   : NC�D���������������������� � VRTOXI  ECTSXI  ENEV. R FEUF BLEIT-TUB;S +1ENLLST KBBL.: UFLBST ASPPIM ECTSEN  ND ELEIT;T   KWBL.: NDLETT NGNIINEG BLEIT;T   KWBL.: EGLBTT ENEV. . TC E#,E AG PE,AT;D  4.4B LK.B 2:BUTL TE AGORSTE TLTI;N LETL+T1B LK.B F:BUTL TE URMPIC SENTE H GTEN LLEIT-TUB;S   4.6= ENLLST THNGLEE TLTI;  . 32 N=LETL T E TLTIT ULFADE;/ N.AI.M/Z CIAS.: D1THSE (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$ MOVB #LET.G,(R2) 15$: CLR (R1)  ;CLEAR PF1 MOV #OCTSEQ,R2 MOV #LINNUM,R0 ;POINT TO CREF LINE NUMBER ; 08.03.72 YESYES: ; 08.03.72 MOV (R0 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 ;DITX: X:;d&�X:h��������$���w *�#w $�B�4�� ��������.�� Ԁ|� Ԁ|# Ԁ|B�X:;d��Ԁ|���������.��� PAGE � COPYRIGHT 1973 GULF ENE��������.���RGY & ENVIRONMENTAL SYSTEMS SAN DIEGO��������.���, CALIFORNIA 92112 ALL RIGHTS RESERVEJ��������.��!D� PRIVATE DATA GULF ENERGY & ENG��������.��GVIRONMEMTAL SYSTEMS FOR INTERNAL USE�������� ��m ONLY������������lzw��������� ���CW�?����������������� ������������ ���*NW���YTTBTX ECTSEN  RNTURE  NDLETT2,RV MO  DCEN. 2 ,R5.#D AD  METID AN ; 2 ,R#1 DTVT.C  )+R2,(CEPA#S VBMO  TEDAD RETO SSTPAE OV;M  R2.,#9 DDA E AT DHE TRTVEON;C  R20,#T TDCV. 4 SVDO DF NIF. # N IORSVER FOO TTDI;  T BYOVM 1 ,R+2LOEL#H OVM + 2)(RB,TA#B OVM A RE ANTTANSCOO TNTOI;P R22,BUTL#T OVM R FEUF BND ALEIT TET;S  LEITTL ALC R CHETS E IN LALRET ANGKIOO LREE' WNDTERE;P NTRPCH1,HDET#S OVM 1 VRTOEN  ERFFBUR DEEA HHE TITIN;   : DRTHSE EC)+,R1 CMP R1,#1000. ;WE DON'T WANT TH ELINE NUMBER 08.03.72 BNE NONO ;TO EXCEED THREE DIGITS 08.03.72 CLR -(R0) ;RESET THE LINE NUMBER TO ZERO 08.03.72 BR YESYES ; 08.03.72 ; 08.03.72 NONO: ; 08.03.72 CMP R1,(TO 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 ������������������������������������������������������� qQW*���������� ���2���������� qQW2�qQW* ��������������������.��*������fA X����������X:X:��������.��P��f5�@ `w n < w K����������$X:��������.��v1 Rŀ�ɕ?���������&�� X: X: X: X::��������.����ҥ �ҕ �ҕ �# ���������� Hq���������"���w � ��������.�� X: R� R� X: TSXI  AMGRRO POFT ARSTT AREHEE OM;C  DRTHSE LLCA  RGTPXC ECTSEN ������������������������ C SEITX 3 L+TBLL CBIN  KBO TITIN; 1 L+TBLL CBIN  RGTPXC ECTSEN  GSLA FITWA; 1 KWBL.: ITWALL NGPIAP MCEVIDEL CASIHY PTOL CAGILO; 2 KWBL.: BLLT LE URMPIC SENTE  RNTURE $: 9G LA FITWAT SE; T AILWLC IN  ITE ITWR;R HDST#LK,LNST#L TERI.W  NO ; $ 9C BC  E?ICEV DNGTIIS LUTBO AOW;H  R4 SRA: 7$ ONTILEMPCOT AIAW;R HDST,LNKOLCM OFITWA  PETY, ES;Y DRTHLS,#NKOLR0)  ;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 CONCATENATION ENDL19: MOV LCBEGL,R1 ;POINT TO START OF LISTING LINE MOVBYT   ;MOVE OVER MOV (SP),R0  ;SET FLAGS MOV #O������������������ 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 X:���������� �d���������� X: X:�f�������������������� ��������&��X: X:qQW�qQW:��������,��r��  <ҕ �� 2���������.�� Ԁ|rX:;d�� X: Ԁ|�$X:2 �����������Ԁ|r����������r.MAIN.�������������qQW '������������.��  �� rf e0�R�&�u���������� $X:���������.��0@ �(� �@ �!��� r ���������� X:���������$��V �e �CM#E ITWR. O N;  7$ CCB ? EDSTUEEQ RKB; 4 RR AS  DEMOR EACL; ) R3-( LRC T UNCOT SE;) R3-(2,RV MO  NTOU CERCTRAHA CTEPUOM;C  R23,R UBS: 5$ LFT SE;+ 2)(RF,#L VBMO  CRF UFST;+ 2)(RR,#C VBMO  LFR/ CNO, ES Y;  5$ EQB ? VTA , ND ETOE OV;M )+R2,(VT#B MPC T IIMTR, ES Y;  4$ NEB ? NKLA;B 0)(RBLTT,CAB.TCTP!.SCT#B ITB R HA CNGDICERE PCHET;F R0),R2-( VBMO $: 4 $ 3R B C ND.E  ?" "ET SR,HA CALEGLL;I 1)(R,-QMH.#C VBMO  FF.I  ORRR EBET US;M 1)(RM,CTBUF,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 #-<CPL-OCTLEN>,R3 ;INIT TO MINUS CHARS PER LINE 21$: MOV R1,R2  ;LCBEGL 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 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 ee �e ��7�����������Hq������������ 6 0����������������.�� X:  X:6 X: X:  X:����������� ��������.�� X: X:  X: X:�qQWrO��������.��r 4 F& ��Rw BE ���������"�� X:� X:�(X: ���������.�� U���U���U� �����������X:vL��X:vL�� "X: ���������.��&  �U���%LX ���������������X:vL�� L��������.��$ e �+ -b*v/.QCH#B OVM E AS CEROW LIFE ORSTE-;R  3$ NEB E RCOU SINT BIN IG SARLE;C 1)(R,-00#2 CBBI  LCEDXF NDF .I  LLNUF IND;E  4$ EQB 0 RET SND AUPK AC BL,IAECSP;0 ,R2)(R-B OVM L IAECSPG INTHNOF IOPLO; $ 3T BG  ERFFBUT PUUT OTOR TEACARCHE OV;M )+R2,()+R1(B OVM: 3$ PYCOA E AV;S  R32,RV MO  ERPPTO SET;S  )+R2(R CL  EXND IONTINATIES DET;S R22,F-BUST#L OVM G INDOG INTHNOF IITEX; $ 9Q BE  UTTPOUL CASIHY PTOT ERNVCO;4 ,R0)(RBLLTLB OVM: 2$ DRTHLSK,LNSTLF TOAIW !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,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."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#T&X!�� � 7 �b$����������$X: ���������.�� b((5`�5`�5@�5@�2�� ��������.��0U � �E �SSST�w�`�J B�R����������� X: ���������.��V&�  N p@   N '��������.��|� r � �  5@�� !����������"X:���������.��5`��7 �7 �U�����7  ��������.�� X:�X:�X: �X:vL��X:���������.�� �E�7 �5 � � �w� 7����������X: �X: �X:vL ��������$ 2C BC  LPR FOO TTDI; T AILWLR AS  RSTEISEG RCKTA;S   EGVRSA  NELIA T PUUT;O    N:LIUT�P���������������������� � UT OMBBO; 2 20 ORRRSE  ALTIAR PSELO CS,YE; F INFL ALC K OO, N;  BXTKPU EQB ? OM;E )+R5@(0,40M*EOB.#S ITB T PUUT OONT AI;W  )+R5(T AI.W F:TOAI W 5 RS RT X:KBUT P1 ,R)+SP(V MO  NELIE THT PUUT;O   INTLPU  RG ACHET;F R1+,5)(R OVM G REE AV;S P)(S,-R1 OVM: BFTKPU LP& B KTOT PUUT;O  R03,#V MO L:KBUT P F KBUTPR B P LTOT PUUT;O  %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 GENEDT WRP,,1  ;/ED:WRP .ENDC ������������������������ENDL50: MOV #OCTBUF,R2 ;POINT TO START OF BUFFER CALL TSTERR  ;SET ERROR FLAGS MOV &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'�.����� -�� 5�U@���5�;��������&��R�X:�Hq�$X:vL��F��������.��5@�GU� ��E@�A��  8 ����������X:vL�� X:� X:�����������.��:U �5    U� �� (� ����������X:vL��&X:;d���������.��`'U���W!.� W!$�U��� Y����������X:vL��$X:vL����������.�� �  �W!.� `U� ��  ����������"X:vL��i����������������.����w  +-&"&':%F<T^�� �������� ��R02,#V MO P:TLPU BFTKPU BR  KBO TUTTPOU; 0 ,R#1 OVM: KBUT P 730//2 1 ; 730//2 1. ORSSCERO PCHITSWI CSY BLYOND LEAL C ; C P TS R 730//2.1-1O TAGFLT SE, ENSEH TCWI SW''NN HE W ; G FLPY,C-1 # OV MW:OTPR N 730//2 1 ; 731//1 1 ; 731//1 1. ORSSCERO PCHIT)#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$ 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 #*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)+��������.�� U���� w�  ɟq����������X:vL��{��������.����ŀ�  U��  pW!>�L����������X:;d����������.�� w 2  CDOB*F�� L �������� ��2��������.��Dw�\e�e�e��� p�� @����������X:;d�X:;d�"X:;d���������.��j � 4����! ! -- @� ����������X:;d��X:;d� X:���������.��� � ` &�   ��m����������(X:���������.��� &SWI CSY BLYOND LEAL C ; C P TS R 730//2.1+1O TAGFLT SE, ENSEH TCWI SW''CN HE W ; LGYFCP1, # OV MT:WRPY C 731//1 1 ; 730//2 1 ; 730//2S1ES MT.RO PNOR FO' NW 'CHITSWE ATEREN G ; TWRONPW, NT SWEN G 730//2 1 ; 731//1 1 T GHRIPYCOR FO' CW 'CHITSWE ATER-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 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 .+,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 / e� �@4�� $����������� Hq���������.�� A� �@�� � U��������.��  ���C0� �  Bp` �e�N����������X:;d�� X:;d�S��������.��( w�� �  87 �U���� �@����������X:�Hq�"X:vL��m��������(��N �  �5� �U���-����������.�� Hq� X:vL�X:vL �X:vL��"X:;d����������.��n � F�>�� ,�U��� � �7 ��������&��X:vL� Hq�X:vL��&X:vL����������� ����EEN G ; RTYWCPW, CT SWEN G 731//1 1 ; 731//1 1 ; C SEIT X 736//1 1EDNTRI PISE TLTIT RSFIR TEAF1 O TET S ; 1 KWBL .M:TTRS F 731//1 1 E.AGSSMET GHRIPYCOT INPR> = 1 ; 730//2 1 . GESAES MTADAE ATIVPRT INPR> = 0 ; 730//2 1 E.AGSSMEY ANT INPRT N'DO> =-1 ; 1ROR 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 ;PREPARE 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 22$  ; 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:    3���������&��X:vL �X:;d�� X:vL��Hq�B��������.���������������������������������� ��������.���  ��������������������.�� �@@@@@@@@@@@@@@@@@m����������>@@@@@@@@@�����g�����������qQW ��������(�� ���  �� ��� ��ş��������.��X:;d�X:;d��X:;d�� Hq� X:;d��9�������� �� ������������X:;d���w�n�������� ���xK\ ���������� qQW\ �qQW O��������.�� �A@N 1 KWBL .G:FLPY C 731//1 1 O.CRMA ROFP OO LCHEAN O 0 ; 731//1 1 TOT SEREA RE AING LA FHTIGYROP CUT P ; E URMP IC SENT E 731//1 1 ; 731//1 1 ; C SEIT X 730//2 1 ; GEPA . 735//1 1 ; Y/NL OSE UALRNTEINR FO /I CIAS . 5CDR,,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? BNE 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$: J6;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 POI7E�@`��� j�� ��������.�� � `��� V�� h�7 h� j��"��������&��X:;dh� X:;dh�$X:;dj� (X:���������(��!j��"�U���� $��9��������&��X:;dj� X:�X:vL���w�'�������� ���M0!<���������� qQW0!�qQW0!��������&��0!5�d�  h��l�E�l�7 ��������.�� X:d�X:;dh�X:�X:;dl�X:;dl�v��������.��N!n�� C� �@ @   #1-����������X:;dn�<��������.��t!�� ` E�Q$) ��`����������&R 735//1 1 /; S EMSTSYL TAEMNMROVIEN& Y RGNE ELFGU /I CIAS . 735//1 1 ; / TADAE ATIVPR /I CIAS . 735//1 1 ; / /B>TA><AB<TB>TA <I CIAS .S:MEVD P 731//1.1ES MTENAMIER T ; / /Z CIAS . 731//1 1 ; D/VEERES RTSGHRIL AL /I CIAS . 731//1 1 ; /2 1192A NIORIFAL CO,EGDIN SA /I CIAS . 731//1 1 9MP 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, TERMINATED 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 PRO: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 ;���������.��!`B ! �� #`B � � s�"&�������� ��("��������.��! ��  #1-��`7.�� w�O����������"X:.�(R���������.��! 7�s�"$s�" f��7 � \���������&�� R�""R�"R���������$�� "� ��`�� ���������.��R� R� rBx� rh�� r ���������.��("��B ��w R �������������&��r �� R�� r �� "rh����������.��N" ~� �u��5��7� <�f ; /S EMSTSYL TAENNMROVIEN& Y RGNE ELFGU /I CIAS . 731//1 1 ; /3 97 1T GHRIPYCO /I CIAS . 731//1 1 ; / /B>TA <I CIAS .S:MEPY C 731//1 1T.ECCS. SSMEO NT IS.ES MHTIGYROP CUT P ; T BYXT TC SENT E 731//1 1 ;C SEITX / E AG P/Z CIAS.: D1THTS YTTBTX ECTSEN  NELIT PUUT OOW;N  INTLPU BR  R0+,P)(S OVM 1 ,R)+SP=CESSOR .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 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 >.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 #?���������&�� rh�� rBx�R�(R���������.��t"A��B��C��� �f& ���������&�� r �� rh�� rBx�� X:�����������.��"�����f�6� ��������&�� X:� X:� X:� X:���������.��" �RRRRRRR�       �e��������.��"R⋇� & ~  & & Z� d��������.�� #H d N    $_���������� $X:��������.��2#e��7 �w�U���� ���������&��X:(V MO $: 1T UNCOE IN LEW NET;S NTPCLPP,LP#V MO  3 /7201/ . GOE WAYAWD AN; $:40 NELIK ANBLA D AN ; F RLCP TLPU  3 /7151/ A.AT DTEVARI PLFGU; $:30 3 /7151/ BET US MREFOREHE TT;GHRIPYCOT NO; ESDMPV P TLPU $:20 3 /7151/ ONY RRCA; $ 30 BR 3 /7111/ S.YE; ESYMCP P TLPU 3 /7201/A ������������������������SETCLI: 1$: GETSYM   ;TRY FOR SYMBOL BEQ 3$  ; EXIT IF NO SYMBOL CMP R5,#CH.EQU ;ASSIGNMENT (=)? BEQ 3$  ; 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 PROCESSBVT,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 CX:;d �X:vL��(X:�`��������.��X#� � Z *   �����������X:X:� X:0��������.��~# �U@��  7 -��������&��X:vL� X:X:vL�$X:I��������.��#�U���  � �&��������&��X:�X:X:vL��$X:���������.��# $77& � ���������� X:X:$X:$��������.��#� �  @� > ����������X:vL�i��������.��$ l� . NGHIYTANT INPRT N'DO; $ 40 T BL 3 /7201/ . TADAE ATIVPRT INPR- O NE.AGSSME; $ 20 Q BE 3 /7111/ N IOECOTPRT GHRIPYCOE THT INPRE WDO; LGYFCP T TS E,TLTIB-SU ; F BUTLSP TLPU  ITT PUUT;O   INTLPU  3 /7161/ B.JOE THH IT WONY RRCA; $:15 3 /7161/ N.AIAGE OM C'TON DWEO SAGFLT SE; TMSTFR C IN 3 /7161/ ; EOR CMP SYMBOL,R50DOT ;PERIOD? BEQ 4$  ; YES, ERROR .IF NDF XEDLSB CALL LSBSET  ;FLAG START OF NEW 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-<RELFLG>,R0 ;CLEAR ALL BUT RELOCATION FLAG BIS #DEFFLG!LBLFLG,R0 ;FLAG AS LABEL BIS R0,MODE  ;SET MODE MOV CLCLOC,VALUE ; AND CURRENT LOCATIONFGETSYM 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 G( t �& , >w����������X:X:vL�"��������.��<$w�U����� 7 �7 � j���������� X:vL��X:vL�X:��������.��b$%?�S : � ~�  � ���������� X:��������.��$7 � & #-�&   %\���������&��X:vL�X:X:vL�"X:/��������.��$0   :   | 6��������������������X:&X:Q��������.��$ �  E xE 5�X� ����������X:vL�&X:X������ R1 C IN 3 /7161/ D.TEINPRS ILEIT THE TMETI; $ 15 E BN 3 /7161/ STIR FRYVEN OEDFEM OR FOFD RIT GE; TMSTFR T TS LEIT TOFT ARSTO TNTOI;P R1G,BETLTV MO  R02,#V MO  2)(R RBCL $: 2+ 2)(RD,ADH.#C VBMO  2$ EQB T EXAGPC IN  ALIMEC DTOT ERNVCO;  C DN  R1M,NUAGPV MO  ONTISIPOO NT IE"AG"PE OV;M   YTVBMO  R11,HDST#T OVM $ 2Q BE  SSPA STT R BEUM NGEPAO TNTOI;P R2D,ENTLTV MO  3 /7111/ I BR 3$  ;INSERT 1$: BIT #LBLFLG,FLAGS ;DEFINED, AS LABEL? BEQ 2$  ; NO, INVALID CMP CLCLOC,VALUE ;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  ;TRJ13$ 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,K���������������.��$�7 �U��� f���������&��X:vL� X:vL �X:vL�(X:;d���������.�� % 8� < n�n�e?�f �����������X:;dn�X:;dn�W��������.��F% �$�  � rf 3��������.��l%e0�w� LU@�� 5��  %����������X:vL�"kQn��������*��%F#�  � �5��  #����������������(��F#X:�X:;d�x $X: Q��������.��%��  �  �  ����������X:;d�� . ONY RRCA; $:10 3 /7111/ E.TLTIM TOOT BHE TUT OUT PWEY LLNAFI; INTLPU 3 /7111/ D.EE FRMFOE THR VE OIPSKE WREHE; R1 C IN 3 /7111/ E.AGSSMEF OSSREDD=AR1; 3 /7111/ . UTTPOUR TEINPRE IN LOR F=2R0; 3 /7111/ T.OREP R AIND UNBON HE WSE UOF; 1 ,REGLBTT V MO 3 /7111/ SEEAR FOE AG PCHMY FOR MORE ����������������������������������������� .SBTTL ASSIGNMENT PROCESSOR ASGMT: 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,R50DONMAXPAG 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 OR�$X: ��������.��%   ~ W!'� n `ߧ����������X:��������.���&   *! $ � ����������X:X:��������.��&&    �ff ���������� X:�����������.��L& � �7 ��w�U���X��������&��X:�X:�"X:vL��(X:T����������r& �U����W����������X:;d � X:vL���w0�����������0� ~&W&8&n&��������.�� qQW~& qQW& qQW& qQW&�qQW~&�����EAF OOMTTBOE TH; 0 ,R#2 V MO 3 /7111/ N ONELIE TLTIT PU- S AS PNGTIIS LON; LFCR P TLPU 3 /7111/ . SSPAG INSTLIE TH; $ 10 Q BE 3 /7161/ L TIUNE IN LOMTTBOT INPRT N'DOS-YE; TMSTFR T TS 3 /7201/ . NO; $ 10 E BL 3 /7111/ E?OD MHTIGPRCON IWEE AR; LGYFCP T TS METIT NOF IIPSK; $ 1E BG  NTOU CNTMEREEC DQT ;MESSING WITH THE PC? BEQ 1$  ; YES BIS #DEFFLG,(R1) ;FLAG AS DEFINED MOV (R1)+,-(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 ����R-(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 .CSS���.��~&  L� &U���� 6���  ����������X:vL��"X:;d�� ��������.��&� �@B �    C w��N��������.��& ~<  ��<�>�C!W!^����������� X:;d����������.��&8��  C D C!D!d���������� Hq���������.��' U�U���p�r�P:����������X:vL��X:;dp� "X:;dr���������.��<'�� |7p��p� x�� H 7�� L ����������X:;dp�X:;dp�$X:;d����������.��b'7p�� f'� �S,YE; T CNPPLC DE  NO ; $ 1Q BE  E?ICEV DNGTIIS LALICYSPH; 2 L+TBLL TBTS  P)(S,-R1 OVM S AGFLG INSTLIE AV;S P)(S,-R0 OVM G REAVS E IN LUTTPOUD ANR DEEA HOR FSTTE;   : DRTHTS UTTPOUG INSTLI TLBT.S ������������������������ C SEITX W LK.B P:TYLK BW LK.B T:PNLD RW LK.B T:PNBJ OE URMPIC SENTE N URETR: NXJIOB NTDPRL2,F+BULD#R OVM T PNBJ,OUFJBOB#V MO I:INBJ O : 9$ DRDHRLK,LNBJOF TOAIW R HDLD#RK,LNBJ#O TERI.W  0)(R,-#1 OVM ) R0,(UFDBRL#B SU  0)(RU������������������������������������������ .SBTTL OP CODE PROCESSOR PROPC:    ;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 MODEVECT ����������������������������������������������������������������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 MAW7 5�����������X:;dp� X: X:��������.��'� �>�� R� ��e�-��E��������������������X: R��(r ����������.��'w "ۏ7 � �� � & �����������X:��������������������.��'� fR %o��������&��X: X: X: $X: ��������.��'R �   @ @���������� X: X:��������.�� ( � �D ��>7 >�,�u��������&��X:X:�� ,-NTDPRL OVM ) R0,(YPKTBL OVM 0 ,RUFDBRL#V MO  DCEN. D RLO NS,YE ; I INBJOQ BE  T?PUUT OBS;A SKMAEDS,ABD.#E ITB S ABEDXF NDF .I  P:DMLD RT NI ISTJU, NO ; I INBJOS LOB ? LD RING INTHNY;A +2UFDBRL,#NTDPRL MPC: 1$ $: 9R HDBJ,ONKJLOB OFITWA  DRJHOB,#NKJLOB#E ITWR. Y PTEMF ICHANBR ; $ 1Q BE  ZESIE UTMPCO;) R0,(UFJBOB#B SU  D)TEITINT NO (LLNUF IITEX; X INBJOQ BE  0)(RT,PNBJOV MO  RYNABID TEATRMFO;+ 0)(R1,#V MO  R02,R+HDBJ#O OVM R FEUF BCTJEOBE Y DIRECTIVE? BEQ 2$  ; NO INC BYTMOD  ;YES, SET FLAG 2$: TST R1  ;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 CLZXDIG,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 TSTHD[R>� $R,�b��������.��F(8�,� �� p 5��� %y��������,�� R8� R,�vL��kQ $X:���������.��l(F# %�  p  �����������F#(X:;d���������.��(,� �,�  >�>�U��������.�� R,�X:;d� R,�R>�$R>�T��������.��(� ��7 �7 �� f  $ 2 � ��������&��X:vL�� X:;d�X:;d�$X:;d�l����������(�� ����������X:;d��R*��������� ��*�����x�z(�zkQx����2�������THP UM;D    P:DMBJ�O���������������������� � DCEN. N URETR K EABRE NCUEEQ SCEOR;F ECJSOB7,37#B OVM: ETCSPN OLTRON CCHUN;P ETCSPNC,PN DTNEGE  NCDPXE DF NIF. C SEITX K EABRE NCUEEQ SCEOR;F  ECJSOB MBCO  SSPAH AC ETECUXE;E  ASTPXC ECTSEN  ONTICALOE IL FCTJEOB; 1 KWBL.: OCJLOB ORCTSEE IL FCTJEOB; 1 KBBL.: ECJSOB DD.O  ASPPIM ECTSEN  723..008 ;* 723..008 ]ASS ASL R1 ASL R1  ;FOUR BYTES PER TABLE ENTRY CLR -(SP)  ;SET 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) ;C^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 ����� qQW(�vL �j�������� �� ��_��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� D RLF OZESI -7 0TSBI ;* 723..008 NTSERE PUEAL VRYNABI 1 =13T BI ;* 723..008 .)TC EL,OBGLR FOG (NTSERE POLMBSY 1 =14T BI ;* 723..008 T ENESPRD RL 1 =15T BI ;* 723..008 ;* 723..008 : ESRINT EBLRTPCF OONTINIFIDE ;* 723..008 aALL PROPER ROUTINE .IF NDF XCREF ROLB CRFDFL+1 ;MOVE SECOND FIELD BIT .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 R0bR0,-(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 <FF>/CROSS REFERENCE TABLE / HDRBU1: .ASCII /S-/ HDRBU2: .BLKB 20 .EVEN HDRTYP: .IRPC X,<SMPCE > .ASCIZ /X/ .ENDM .CSECT IMPURE PAGNUM: .BLKW c����������Ϣ����%������������ CREF V004B� ����������XX %X���������tD %X���������������������T %X�����������7��������������������������������5������������������������������������3���������������������������������1��������������������������������/��������������������������������-�������������������� ������������+��������������������"������������������ ;* 725..108L CASIHY PEDCKPAE BLTACALORE- --7 T1LD;R 040012 D OR.W 16DTRL; 0 01601D OR.W  15DTRL; 0 01601D OR.W  0D OR.W  0D OR.W  0D OR.W  11DTRL; 0 00001D OR.W  0D OR.W  0D OR.W  06DTRL; 0 01601D OR.W  05DTRL; 0 01601D OR.W  04DTRL; 6 00401D OR.W  03DTRL; 4 00201D OR.W  02DTRL; 6 00401D OR.W  01DTRL; 4 00201D OR.W  0 RDWO. E YP TLD RBYE BLTA;   : BLRTPC REPUDC SENTE N URETR 2 ,RNTDPRLe,R1 BIC #000007,R1 CMP #000120,R1 ; 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 fLPPCNT: .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 g������)��������� �����������$������������'��������� �� ���������&������������%����������� ���������( ������������#��������������������*������������!��������������������,�����������������������c���������D���������.���������&�ώ0   ��������*�Ϫ v    ��������,� � �ޱ��������(�1 � 9 67 R 7 ����������������$� OVM P DMBJOL ALC R TEINPOD RLT SE;T PNLD,RR2 OVM : MPRDPC������������������������ C SEITX G LA FNELIN IONSTEEX;  W LK.B T:CNCR PN LIMPIC SENTE N URETR: L3ROPC RNTUREE RU TET;S  R0 NZETS K EABRE NCUEEQ SET;S OCJLOBC,LOLCCV MO  PCE ATPD;U OCCLCL5,RD AD  2OR1 T UNCOE AK;M  R5 NCI: L2ROPC NTJPOB1,RV MO $:29 )+R1,(+1UEALVB OVM N IOCTRUSTINE YT BIFH NCRA;B  9$2Q BE  R5 STT + 1)(RE,LUVA VBMO  ERNTOI PVESA;T PNLD,RR2 OVM: 2$ 2T IVEMO, ES;Y )+R2,(iROL R1 ROL R1 SWAB R1 SUB R0,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 <SUBR1>, .BYTE SUBR1-OPJBAS .IIF B <SUBR1>, .BYTE 0 .BYTE SC1+0 .IIF NB <SUBR2>, .BYTE SUBR2-OPJBAS .IIF B <SUBR2>, .BYTE 0 .BYTE SC2+0 .ENDM ENTSEC DPURE OPJTBL:    ;OP CODE JUMPj4$  ; 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 k( �!��������,�F S�! S�f. ҕ��������,�l?� � ` �h & ��������,�R � `� 5�� � 7 c��������,�> & L �w r�B�!e x��������,�7 R �eeE�  ��������,� l8B  x @ ݦ��������$�*ѦW <w�xff��������� �SA�����������H ��������,�Hѷ  ��� ��� \  H��&��������,�n/5�w &�&UEALVV MO  NO ; $ 22 CCB ? UEAL VNY;A  R4 SLA: 1$ 2+ 2)(R2,L+BOYMSV MO  ITE OV MS,YE;+ 2)(RL,BOYMSV MO  NO ; $ 21 CCB ? EDSTUEEQ ROLMBSYY AN; 4 RL AS 1:OLCR P+ 2)(R0,RB OVM X DEINE UTMPCO;0 ,RUFJBOB#B SU  R01,RV MO  DECOT SE, ES;Y )+R2,(ORCTSE VBMO  NO ; 1 OLCRPC BC  D?RLY AN; 4 RL AS $:16 SSREDD ANGTIARSTD AN ;+ 1)(RC,LOLCCV MO $:15 PETYK OCBLT SE, ES;Y )+R1,(03KTBL#V MO  DCEN. S YE ; $ 15 EQB ? UTTPOUS AB;K ASDM,EBS.AED#T BI  BSm TABLE 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: .BLKWn 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 �����������������������������������o&   ��������,�p� �   � (�h��������,� �RR   & &���������,� &&  %  �  � ��������,� H 1e�-``&76 � B ������������������,�,ҕ � 7  lR  ��������(�R 7    w �F�����������[������������������,�t 7 6 2 �  :  w�?��������,�p B }%�%�%�% � r��������,�%�%� T : 4DAXE DF NIF. O N;  6$1 NEB ? EMITT RSFI;F BUBJ#O1,RP CM  R1T,PNBJOV MO  ERFFBUP UM DM,OO RNO ; $ 13 HIB N LELD+RUFDBRL,#R0 MPC 0 ,RR2 DDA E IZ SLD RET GS,YE; 0 ,RR4 VBMO  NO ; $ 13 HIB ? OMRO;1 N-LEBJ+OUFJBOB,#R0 MPC D ENW NEE UTMPCO; R05,RD AD  ERNTOI PDECOT GE;0 ,RNTJPOB OVM: 4$ 1R FEUF BMPDU; P DMCRPL ALC: 3$ 1C PEW NET;S )+R2,(OCCLCL OVM: 2$ 1+ 2)(R0,T1LD#R OVM: 1$ 1R FEUF BNTREUR CMPDU, ES;Y  MPRDPC LLCA  ES Y;  1$1S LOB ? ERq   ;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 TSTB R0 BPL 1$ ADD #000400,R0r����������������������������� .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 SUPPRsf r;��������&��  v R P -L h��������,�D `f � D� e��$  C  ��������&�,C %-  ̇ - LJ-�������� �L ‡-d - - ��������,�f <7 V  BU;��������,��  P%p �pc��������,� w��  7����������������&� 7m 7��t&  ��������,�j \, V && � e� &��������,�5� &     H�N ѕ5�����FFBUD RLT ENRRCUN IOMRO;4 N-LELD+RUFDBRL,#R2 MPC O N;  4$1Q BE  S? UONE OV MPCD DI;C LOBJ,OOCCLCL MPC: 0$�1���������������������� � 2$1R B C SEBJ,OECCSCL VBMO  )+R2,(+2AMCNCL OVM E AM NORCTSEW NED AN ;+ 2)(RM,NALCCV MO  7PETYD RLT SE;+ 2)(R7,T0LD#R OVM: 4$ RSFEUF BNTREUR CMPDU, ES;Y  MPRDPC LLCA  ES Y;  4$ OSBL  D?RLT ENRRCUN IOMRO;0 -1ENDLRLF+BULD#R2,RP CM  NO ; $ 10 EQB ? GEANCHR TOEC;S ECJSOBC,SELCCB MPC R FEUF BLD RTOR TEINPOT SE;2 ,RNTDPRLu 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 ABSOLUTE BYTE SWAB (SP) MOV (SPvESSED? 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$  ;w���,�D#� ѕ@� �e�7� �Ã��������,�jԷ N<f  �w�m%ۼ��������,� f�e�fT P H  ��������,�*�m "ҕ-� �m  �������� �Ԃ ��������� �d ��������,�P Ԁ � �c�' f�pۈ��������,� �p %�-@H &6������������*�.7<7m�7 7   &f ��������,�Rՠ ҕ �ҕ �ҕ �ҕ � ���������,�xՌ �8�rw�� CROSS REFERENCE T,������� OVM Y TRENE BLTAR PERO PET;G R4),R4L(TBCRPV MO  TSBIR DEORH IG HARLE CS,YE;4 ,R007417#C BI  DCEN. S YE ; 2 OLCRPE BN  D?LEABIS DCHUN;P SKMAEDC,PND.#E ITB C PNEDXF NDF .I  NO ; 2 OLCRPQ BE  R?FOD LEAL CDECOT ECBJ ONY;A  YPKTBL STT: 3$ TEBYS AAGFL; 1 1+PF GBNE  OT NIFH NCRA B;  3$ CCB ? TEBY; 4 RL AS  NE OLDIE FNTRI PET;S   F1TPSE $: 2O ER ZMNLUCOT IS;L   F0TPSE  ES Y;  2$ MIB ? NELIN IONSTEEX; T CNCRPC IN  PCE ATPD USTJU, ES Y;  y)+,VALUE ;SET ORIGIONAL VALUE STCODE CLR R0 RETURN ������������������������ .IF NDF X45 DRGEXP:    ;DOUBLE REGISTER EXPRESSION CALL REGEXP  ;EVALUATE NORMAL MOV #177774,R3 ;TEST FOR OVERFLOW BR MASKR3 SOBOP:    ;SOB OPERATOR CALL BROP  ;FREE-LOAD OFF BRANCH OPERATOR MOVB R0,R0  ;EXTEND SIGN NEG R0  ;POSITIVE FOR BACKWARDS BR MASKB6  ;MASK TO SIX BITS SPLOP:    ;SPL TYPE ABSEXP MOV #177770,R3 ;ONLY THREE BITS ALLOWED BR z 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${��ABLE S-���������,�S�M�P�C�E� � � �` x f��������&�fL b w |  ���������Ֆ}���������7 7 �x��������,�x! ! �fx� ݯ��������&�<x9]  |"�������� �\&0 (  ���������$����� # �����E�����Et��������(�v   p7S��������,�#$   �ҕ �ҕ �# ]��������,�5�    ��������L2ROPC EQB  E?ONS AS;P  SSPA STT: 1$ 1TOP UM BD,OR W;  R5 NCI E YT BIFH NCRA;B  1$ MIB E YP TLD RHE TET;G R4R,TOECSB OVM E YT BMESUAS; 5 RR CL  EGVRSA  ND E;  L3ROPC EQB Y TRENL OL RDECOT EX NET;G  OLDRCO XTNE  LLROE OD CSSCERO;P    L:OLCR�P���������������������� � VRTOXI  ECTSXI  737/1/ ;*/* * E BLTAL BOYM S * */* IZSC.A: XTMTSY */****/* IZSC.A S:ARST YTTBTX ECTSEN  LGBFGL RDWO. / G /I CIAS. G FLELRD OR.W  }MASKR3 MARKOP:    ;MARK OPERATOR ABSEXP   ;EVALUATE ABSOLUTE MASKB6: MOV #177700,R3 ;SET TO MASK HIGH ORDER MASKR3: BIT R3,R0  ;OVERFLOW? BEQ 1$  ; NO ERROR T  ;YES, FLAG TRUNCATION ERROR BIC R3,R0  ;CLEAR EXCESS 1$: RETURN .ENDC ������������������������AEXP:    ;ADDRESS EXPRESSION EVALUATION SAVXPR   ;SAVE REGS AND SET FOR EXPRESSION INC EXPFLG CLR -(SP)  ;ACCUMULATE ON TOP OF STACK 2$: CMP R5,#CH.IND ;INDIRECT (@)? BNE 6$  ~  ; 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 A��h޷ �b��������,� � �f e0�R�&X<��������,� @ �(� �@ �!\� � ��������,�0 �e �ee �e ��x��������,�V׮ N \! ! -- @� ���������,�| � ` &�   j� ��������,� & e� ^@4�x $� y��������������,�A� �@���& � ��������,� @   � �&�   Q��������,�`@  � 2w A� �@x1��������,�:  //R IISC.A  LGGFRE RDWO. / % /I CIAS. G FLBLLD OR.W  =// IISC.A  T:P2ND EE URDP ECTSEN  RNTURE  )+R2,(R0 VBMO $:32 R0 ABSW  2$3E BN  DEMO+,3)(R ITB 0 ,R)+R3(V MO $:31 1$3L ALC: 2CDPEN RNTURE D:P2ND ER FEUF BOFT ARSTO TETES;R R2F,BUIN#L OVM R HDSTTL ALC 1 ,RUFNBLI#V MO  R02,#V MO  2)(R RBCL B:P2ND E $ 21 BR  ERMBNUY TRENE THD AN ; T BYETSL ALC 1 ,R-2ORCTSE#V MO  )+R2,(AB#T VBMO  E,LUVAE TH ; D WRETSL ALC 1 ,RUEAL#V OVM + ; NO BIT #10,(SP) ;YES, SECOND TIME AROUND? BEQ 4$  ; NO ERROR Q  ; YES 4$: BIS #10,(SP) ;SET IT GETNB   ;MOVE PAST BR 2$ 6$: CMP R5,#CH.HSH ;LITERAL (#)? BNE 10$  ; NO GETNB   ;YES, MOVE PAST .IF NDF XFLTG CMP #OPCL11,OPCLAS ;CLASS 11? BNE 8$  ; NO CALL FLTG1W  ;YES, TRY FOR ONE-WORD FLOATING BNE 9$  ;BRANCH IF OK .ENDC 8$: GLBEXP   ;EVALUATE EXPRESSION 9$: BIS #27,(SP) ;SET BITS BR AEXP32  ;USE COMMON EXITDD 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 GE5�-  ��x �w ��������,�`A �  ��������������4��������,�������������������  ��������,�� ��������,� ����������������������������������������"�JF  @ş<�x ��������,�.ş*� C� �@ @   #��������,�:1-�� ` E�Q$' ���������,�`Z``B  �� #`B � � Z��������,�s�| ��  #1-��`� ww��������,� 2)(RB,TA#B OVM , MENAE THT INPR;  P UN50R L OL ROFD ENF IITEX ; D P2NDEQ BE  RYNT EXTNEE THT GE; L ROECST EXN E IN LUTTPOU; B P2NDEL ALC: 1$ 2N CA SORCTSER FOT SE; D UPOLRR CL A:P2ND�E���������������������� � NELIT EX;N  2$ BR  NELIT PUUT;O  2BDPEN LLCA  3 /7101/ E.IN LLLFUA T INPRO TREHE; $:50 3 /7101/ M OO RREMO; 3$ O BL 3 /7101/ . NELIS/OLMBSY3 W LOALM TT; 0. 10$: CMP R5,#CH.SUB ;PERHAPS AUTO-DECREMENT (-)? BNE 12$  ; NO MOV CHRPNT,SYMBEG ;PERHAPS, SAVE JUST IN CASE GETNB CMP R5,#CH.LP ;YES? BNE AEXP20  ; NOT A CHANCE CALL AEXPLP  ;PROCESS PARENS BIS #40,(SP) BR AEXP36 12$: CMP R5,#CH.LP ; "("? BNE AEXP22 CALL AEXPLP  ;EVALUATE REGISTER CMP R5,#CH.ADD ;AUTO-INCREMENT (+)? BNE 14$  ; NO GETNB   ;YES, POLISH IT OFF BIS #20,(SP) ;SET BITS BR AEXP36 14$: BIT #10,(SP) ;NLCT 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   ;FL7s�|ڒ$s� h�7  ^���������"� `޵ ��������,�B w >R �I��������,�ڃ  � �u5߇�7 �f\��������,�:|ABCX �f�6���������,�`  �RRRRRRR�    A��������,�   �R⋇�5�� �R�%��������,� ހe�-"w v7v ���������,�& �b^�e �7 1Q������������������,�e@�7 * L�� ��H�������+5UFNBLI,#R2 P CM $:51 3 /7101/ . LLFUS INELI; $ 50 BR 3 /7101/ M.OO RREMO; 3$ O BL 3 /7101/ . DEMOP LINE IN/LLSBOYM S 5OWLL-ANO; . 00+1UFNBLI,#R2 P CM 3 /7101/ S.YE; $ 51 Q BE 3 /7101/ E?OD MTM TIN; SKMALCM,TTC.#L T BI ORATAREP;S )+R2,(AB#T VBMO $:10 YTTBSE LLCA  1)(R,-1)(R-B MPCINDIRECT SEEN? BNE 16$  ; YES BIS #10,(SP) ;NO, SET BIT BR AEXP36 16$: CLR (R3)  ;MODE CLR (R4)  ; AND VALUE BR AEXP30 ������������������������AEXP20: SETSYM   ;AUTO-DEC FAILURE, POINT TO - AEXP22: GLBEXP   ;GET AN EXPRESSION CMP R5,#CH.LP ;INDEXED? BEQ 24$  ; YES BIT #REGFLG,(R3) ;FLAGS BNE AEXP36 .IF NDF XEDPIC&XEDAMA TST (SP) BNE 23$ .IF NDF XEDPIC BIT #ED.PIC,EDMASK BNE 1$ BIT #GLBFLG,(R3) BNE 2$ CMPBAG 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+<LCSAVE-LCMASK> ;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 ���*�۲,$e��e� 7���������B7 4@�7!`����������w w w �x�Y���������X�1 ���������އ����������ϊ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 730//1 1 ; : 0$ 3 730//1 1 ; 0$ 1 R B 730//1 1 ; 1 ,R)+SP ( OV M 730//1 1 ; $ 201, R OB S 730//1 1 ; + 2)(RE,ACSP # B OV M : 0$ 2 730//1 1 . OWEL BERNTOU CNELIL/BOYM SHE TOR F ; R16, # OV M 730//1 1 | (R2),CLCSEC BEQ 23$ BR 2$ 1$: .ENDC .IF NDF XEDAMA BIT #ED.AMA,EDMASK ;ABSOLUTE MODE REQUESTED? BNE 23$  ; NO .ENDC 2$: BIS #37,(SP) ;OK, SET ABS MODE BR AEXP32 .ENDC 23$: BIS #67,(SP) ;NO SETDSP   ;SET DISPLACEMENT BR AEXP34 24$: BIT #REGFLG,(R3) ;FLAGS BEQ 26$ ERROR R BIC #REGFLG,(R3) ;FLAGS 26$: MOV (R1)+,-(SP) ;STACK CURRENT VALUE MOV (R1)+,-(SP) MOV (R1)+,-(SP) MOV (R1)+,-(SP) CALL AEXPLP  ;PROCESS INFUNCTIONS .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$  ;��ITH IPL-EXECUTE ROS ; ; ; ; .IFNZ OVRLAY ENDDYN = . - 2 ; TOP ADDRESS OF DYNAMIC CORE POOL ; SSTACK = 3000 ; WORD BEFORE THE STACK ******** ; .ENDC ; ; DYNSIZ: .WORD ENDDYN-SSTACK ; MAX # BYTES AVAIL. FOR DYN. AREA. ******** .END ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������S CEPA STHWIT OUD PA- T ECCSO N ; ) SP-(1, R OV M 730//1 1 T. IDOO G -CTSE C AVEHAE W ; 0$ 3 LT B ) R1,(#1 PBCM  R1R,TOEC#S OVM C P2NDEL ALC: 6$ ******E UTITSTUB SD,NEFIDEUN;  T BYOVM 1 ,RRSTA#S OVM: 4$ 6$ BR  RDTWSE LLCA  NO ; $ 4Q BE  D?NEFIDE;) R1,(LGFFDE#T BI  TSBIE OD MTOT INPO;1 ,RDEMO#V MO  2CDPEN LLCA  R3T,P2ND#E OVM L BOYM SHE TCKPAUN;  P UN50R E OR MNO ; A P2NDEQ BE  OLMBSYT EX NHE TET;G  xDEX MOV (SP)+,-(R1) ;RESTORE MOV (SP)+,-(R1) MOV (SP)+,-(R1) MOV (SP)+,-(R1) AEXP30: BIS R0,(SP) BIS #60,(SP) AEXP32: SETIMM AEXP34: STCODE CLR R0 AEXP36: BIS (SP)+,R0 RETURN AEXPLP:    ;AEXP PAREN PROCESSOR GETNB   ;BYPASS PAREN CALL REGEXP  ;GET A REGISTER EXPRESSION CMP R5,#CH.RP ;HAPPY ENDING ")"? BEQ 1$  ; YES ERROR Q  ;NO RETURN 1$: GETNB RETURN .IF NDF XEDAMA GENEDT AMA,,1  ;ABSOLUTE MODE ADDRESSING  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 EDMBA .TITLE SYSBLD ; SBLD ;***********************************************************************SBLD ; *SBLD ; S Y S B L D *SBLD ; *SBLD ; IDENTIFICATION: SYSBLD *SBLD ; OLMRSY XTNE $: 3E AGORSTO TNTOI;P R2F,BUIN#L OVM: 2$ ANSCE BLTAL BOYM SOR FET;S  PDLURO LRC E AG PEW NCEOR;F  NTPCLP LRC S YE ; D P2NDEE BN  N?IOSSREPPSUE BLTAL BOYM;S SKMALCM,SYC.#L ITB O N;  2DDPEN EQB ? UTTPOUG INSTLIY AN; 2 L+TBLL TBTS $: 1C ND.E  MPJDOB LLCA  NTJPOB0,RV MO  ORCTVED ENT SE;+ 0)(R6,C+VENDEV MO  R0T,PNBJOV MO  NO ; $ 1E BN  T?PUUT OBS;A SKMAEDS,ABD.#E ITB S ABEDXF NDF .I  ITP UM;D  MPDDRL LLCA  ND EET;S YPKTBL6,T0LKt.ENDC ������������������������ .SBTTL EXPRESSION TO CODE-ROLL CONVERSIONS SETIMM:    ;SET IMMEDIATE MODE SAVXPR TST PCKODE ;IS THIS A PACKED PHYSICAL DIRECTIVE 08.15.72 BEQ SET000 ;BRANCH IF NO 08.15.72 CLR PCKODE ;CLEAR THE FLAG FOR THE NEXT GUY 08.15.72 MOV #SETR17,R1 ;POINT TO PACKED PHYSICAL CODE '17' 08.15.72 BR SETDSX ;GO PROCESS IT SET000K,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 ; UPDATE 10/20/72 SYSINI.GK1 OFF SYSINI.C01 NDISCS = 0 ; UPDATE 10/18/72 SYSINI.C01 ; UPDATE 5/2/72 SYSINI.S02 ; UPDATE 4/14/72 SYSINI.S01 .TITLE SYSINI ;*********************************************************************** ;* * ;* SET UP SYSTEM TASKS IN TASK TABLE IF THEY ARE CORE * ;* RESIDENT TASKS-CALLED BY IPL. #B OVM T IMPDU, ES;Y  MPJDOB LLCA  NO ; $ 1Q BE  T?PUUT OCTJEOBY AN; P TYLKBT TS  LEIT-TUB SE"BLTAL BOYM"ST SE;  T BYOVM 2 ,RUFLBST#V MO  R1T,TXYM#S OVM C ND.E  $: 8R FEUF BSELO CND AMPDU, ES;Y  MPFDCR LLCA  NO ; $ 8Q BE  S?ESGRRO PINF RE CNY;A R2T,PNRFCV MO  EFCRXF NDF .I  2SSPAF OND;E    2:DPEN������������������������ S RDWOR OU FVEMO; 4 ITXM MPJ: 1$ NTREUR CMPDU, NO; P DMCRPL ALC S YE ; $ 1S LOB  R?HEOTANR FOM OO;R 10N-LELD+RUFp: ; 1/7/73 MOV #IMMMOD,R1 ;SET TABLE INDEX TST ENDFLG  ;SPECIAL FOR .END? BNE SETDS1  ; YES BITB #GLBFLG,(R3) ;EXTERNAL? BNE SETDS3  ; YES, USE COMMON HANDLER CMPB (R1)+,(R1)+ ;MOVE INDEX BITB #RELFLG,(R3) ;RELOCATABLE? BEQ SETDSX  ; NO, ALL SET TSTB (R1)+ CMPB (R2),CLCSEC ;YES, CURRENT SECTOR? BEQ SETDSX  ; YES BR SETDS1  ;NO SETR17: .WORD RLDT17 ; BR 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 �������������������������������� * ;* * ;*********************************************************************** .DEF SYSINI .REF CMPRHD,FLSTHD,RASHED,LODHED .REF HEADER,TSTAT,TPRTY,TASKS .REF QIPL,INPTHD .REF TSCHED ; ******** ; .REF ADIRHD ; ******** .CSECT .SYSIN ; DBRL,#R2 MPC K OCBLD GSA P UM;D    P:DMSD G C SEITX / 1SSPAF OND/EF><LR><C IZSC.A M:P1ND ET BYXTTC SENTE N URETR G MS1 SSPAF OND;E  1MDPEN KBUTP: 2$ 3 $ 31 BR  LEAB TINK AC BUT;P   RTSEIN  PCT SERE, NDOU;F  UEALVR CL  EDSHNIFIF ICHANBR ; $ 32 EQB Y TRENT EX NHE TET;G  OLCRSE XTNE $:31 ANSCT NI-IRER FOT SE; D UPOLRR CL B:P1ND ES CKLO BXTTER FOT NI;I YPKTBL4,T0LK#B OVM P DMLDRL ALC " SD GOFD EN "ET;S YPKTBL2,T0LK#B OVM T IMPDU; P DMCRPl 08.15.72 SETDSP:    ;SET DISPLACEMENT MODE SAVXPR MOV #DSPMOD,R1 ;SET INDEX BITB #GLBFLG,(R3) ;EXTERNAL? BNE SETDS3  ; YES, TEST FOR ADDITIVE CMPB (R1)+,(R1)+ CMPB (R2),CLCSEC ;CURRENT SECTOR? BEQ SETDS2  ; YES TSTB (R1)+ TSTB (R2)  ;LOOKING AT ABSOLUTE? BEQ SETDSX  ; YES SETDS1: TSTB (R1)+ MOVB (R2),R0  ;FETCH SECTOR BIC #177400,R0 ;CLEAR HIGH BITS MOV R0,-(SP) ;SAVE A COPY ASL R0  ;MULTIPLY BY �������������������������������� .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 <CIDLEN+1>/2 CMDSAV: .BLKW 7. CSISAV: .BLKW HDRTBL = . .WORD ADIRHD ; GENE'S TASK ******** .WORD FLSTHD .WORD TSCHED ; ******** .WORD LODHED .WORD INPTHD ; ; TNOTBL = . .WORD 2 ; TASK NUMBER FOR GENE'S TASK ******** .WORD $FLTNO .WORD $TKCNO ; ******** .WORD $RLDNO .WORD L ALC K OCBLD ENT PUUT;O  MPDDGS LLCA  R1C,VEND#E OVM 4 C+VEND,ELGFFDE3+T0SD#G ISB G LA FEL RUT BLL AARLE;C +4ECDVEN>,LGLFREC<#^ ICB: 1ADPEN������������������������ T IUTTPOU; $ 12 BR  4PETYT SE;E OD,M04DTGS#S BI  STMOR EACL;E OD,MG>FLLB!GLGLFREG!FLEF<D^C#C BI  NO ; $ 13 NEB ? ORCTSER PERO PS,YE;5 ,RORCTSE PBCM  NO ; $ 13 EQB ? ALOBGL;E OD,MLGBFGL#T BI  UY GISTHH IT WEDSHNIFI ; $ 10 EQB L BOYM SXTNEE THH TCFE; L ROYMST EXN: 3$ 1K OCBLS HI TUTTPhFIVE ASL R0 ADD (SP)+,R0 ASL R0  ;TWO BYTES TO WORD ADD ROLBAS+SECROL,R0 ;COMPUTE BASE OF SECTOR ROLL MOV (R0)+,SYMBOL ;XFER SECTOR NAME TO SYMBOL MOV (R0)+,SYMBOL+2 BR SETDSX ������������������������SETDS2: MOVB ROLSIZ+CODROL+1,R0 ;GET CODE ROLL ENTRY NUMBER INC R0 ASL R0  ;MAKE IT 4 OR 6 ADD CLCLOC,R0 SUB R0,(R4) CLR MODE BR SETDSX SETDS3: TST (R4)  ;EXTERNAL, ANY OFFSET? BEQ SETDSX  ; NO TSTB (R1)+  ;YES, ADVANCE INDEX .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 CHARACT $INPNO ; ; NOSYST = 5. ; NO. OF TASKS IN TABLE TO INITIALIZE NOSYSI = NOSYST+NOSYST ; INDEX OF ABOVE PRIOR = 9. ; TASK PRIORITY IN HEADER ; ; SYSINI = . JSR PC,QIPL ; INIT. TASK TABLE MOV #-NOSYSI,R0 ; LOOP CONTROL AND INDEX SYSI00: MOV HDRTBL+NOSYSI(R0),R1 ; GET A HEADER ADDRESS BEQ SYSI20 ; NOT IN CORE-FORGET MOV TNOTBL+NOSYSI(R0),R2 ; GET TAOU; P DMSDGL ALC 1 ,ROLMBSY#V MO $:12 ANSCR NEINR FOT SE; D UPOLRR CL $:11 AX MET SL,RE ;) R1-(),R1(V MO  S!OP O;  1$1Q BE  BS AMESUAS;+ 1)(R5,RV MO  EDINEF D1,E YP TTOT SE;+ 1)(RG,FLEF+D1>T0SD<G#S BI  IT BEL RUT BLL AARLE;C 1)(R>,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  ERdSETDSX: .IF NDF XEDPIC GENEDT PIC,,1 BIT #ED.PIC,EDMASK BNE 12$ TSTB (R1) BEQ 12$ CMPB (R2),CLCSEC BEQ 10$ CMP R1,#DSPMOD BHIS 11$ BR 12$ 10$: CMP R1,#DSPMOD BHIS 12$ 11$: ERROR R 12$: .ENDC MOVB (R1),(R2) ;FILL IN TYPE TST BYTMOD  ;IN BYTE MODE? BEQ 4$  ; NO TSTB (R4)+  ;MOVE TO HIGH BYTE OF "VALUE" MOVB (R4),R0  ;ANY HIGH ORDER BITES? BEQ 1$  ; NO, OK INC R0  ;YES, ALL ONES? BNE 2$  ; NO, YOU LOER 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.,SK'S NUMBER CLRB TSTAT(R2) ; SET TASK QUIESCENT MOVB PRIOR(R1),TPRTY(R2) ; SET PRIORITY DEFAULT CMP R2,TASKS BLE SYSI10 MOV R2,TASKS SYSI10: ASL R2 ; TASK NO. WORD INDEX MOV R1,HEADER(R2) ; HEADER ADDRESS SYSI20: ADD #2.,R0 ; BUMP INDEX BLT SYSI00 ; DO FOR ALL .IFNZ NDISCS .REF $TKFLS,PFRITE MOV #$TKFLS,-(SP) ; WRITE TASK TABRKMAN CA SET;S PDLURO+,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`SE 1$: CMPB (R2),#RLDT01 ;ERROR IF RLD TYPE 1 BEQ 2$ CMPB (R2),#RLDT15 ; OR 15 BNE 3$ 2$: ERROR A  ;FLAG ERROR CLRB (R2) 3$: CLRB (R4) BISB #200,(R2) ;FLAG AS BYTE 4$: RETURN ENTSEC TXTBYT IMMMOD: .BYTE RLDT02, RLDT05, RLDT00, RLDT01, RLDT15, 0 DSPMOD: .BYTE RLDT04, RLDT06, RLDT00, RLDT03, RLDT16, 0 ENTSEC IMPLIN BYTMOD: .BLKW   ;BYTE MODE IF NON-ZERO XITSEC ������������������������ .SBTTL CODE ROLL STORAGE STCODE: APPR3  ;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��LE ON DISC JSR PC,PFRITE .ENDC RTS PC ; RETURN TO IPL ; ; .END ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������+,C)(P OVM S YE ; $ 8E BN  S?ESGUD OO;G SKMAEDS,ABD.#E ITB S ABEDXF NDF .I  J/OB/0 D5RA. E BLTACALOREE UMSS;A R5+,C)(P OVM O N;  1BDPEN EQB ? CTJEOBY AN, NE OSSPA; K LNBJOT TS  NO ; $ 1Q BE  D?UNFO;S BTRR,E.ERR#E ITB F EOO TVEMO; N LIETGL ALC: 1$ 2SSPAF ICHANBR;  P2NDEP JM  1$ EQB ? NE OSSPA; S ASPT TS  AXTMSE LLCA  4R OVNTE R LENDHAS AS POFD EN;   : DPEN RSLENDHAE OD CCTJEOB TLBT.S ������������������������ C SEITX . 7\END CODROL  ;APPEND TO CODROL RETURN ������������������������ .SBTTL DIRECTIVES .GLOBL GLOBL .GLOBL REF,DEF ; DEFINE .REF AND .DEF AT LAST. 1/7/73 GLOBL:    ;GLOBAL HANDLER REF: ; 1/7/73 DEF: ; 1/7/73 1$: GSARG   ;GET A SYMBOL BEQ 3$  ; END SSRCH   ;NO, SEARCH USER SYMBOL TABLE BIT #REGFLG,FLAGS ;REGISTER? 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 *SBLD ; PURPOSE: COPY ROS TO DDC DISK AND PROVIDE A DISK BOOT PROGRAM. *SBLD ; *SBLD ; METHOD: 1. THE BOOT PROGRAM (TO BE READ VIA ROM) IS COPIED TO *SBLD ; DISK BETWEEN SECTORS 0 & 3. THE PROGRAM IS PART OF *SBLD ; THIS MODULE. THE ROM WILL LOAD IT STARTING AT *SBLD ; LOCATION 0. *SBLD ; W LK.B V:SAMD C2 >/+1ENILCM<W LK.B F:BUMI C3 KWBL.: DRIHCM ERADHER FEUF BNDMAOM;C  7. KWBL.: UFDBCM 3 /7201/ 3. 8= ENILCM; REPUIM ECTSEN  B//K 50AD.R  1D OR.W  I/CM/0 D5RA. K IN LUTNP IKB; 0 RDWO.: NKILCM 0D OR.W  B//K 50AD.R  1D OR.W  O/CM/0 D5RA. K IN LUTTPOUB ;K  0D OR.W K:LNMO C0 RDWO. D XEMI ECTSEN  RSLENDHAD ARBOEYKL TTSB.� ���������������������� � RNTURE  R1+,P)(S OVMX BNE 2$  ; YES, ERROR BIS #GLBFLG,FLAGS ;NO, FLAG AS GLOBL INSERT   ;UPDATE/INSERT CRFDEF BR 1$ 2$: ERROR R BR 1$ 3$: RETURN .GLOBL END END:    ;TEMP END DIRECTIVE EXPR   ;EVALUATE THE EXPRESSION BNE 1$  ; BRANCH IF NON-NULL INC (R4)  ;NULL, MAKE IT A ONE 1$: CALL RELTST  ;NO GLOBALS ALLOWED INC ENDFLG SETIMM   ;FILL OUT BLOCK SETPF1   ;LIST FIELD 1 MOV #SYMBOL,R1 MOV #ENDVEC,R2 JMP XMIT4  ;MOVE TO ENURN ���������������������������������������������������������������� .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 2. ROS IS COPIED TO DISK STARTING AT SECTOR 4. THE *SBLD ; FIRST WORD TRANSFERED IS THE GLOBAL LABEL 'IPL'. *SBLD ; THE LAST WORD IS THE GLOBAL 'ROSEND'. SINCE THIS *SBLD ; MODULE IS LINKED WITH ROS, IT WILL KNOW THE SIZE OF *SBLD ; THE AREA TO TRANSFER FROM THE LINKER. *SBLD ; 3. TO POSITION 'ROSEND' CORRECTLY, THIS MODULE MUST BE *SBLD ; THE LAST ONE IN THE ROS LOAD X BYET,SR0 OBS 0 RB WAS + 2)(R TBTS  1$ GTB 0 RB ECD ) R2(B OLR 1 RL AS $: 1) R2,(100/G.DI#B OVM 0 ,R#3 DDA 0 RB WAS: YXTBSE R03,#V MO  R1 ORR C CL  UY GSTLAE THT GE; 1 RB ORR F AL HFTLEO TTELAPUNIMA; 1 RB WAS + 2)(R0,RB OVM + 2)(R0,RB OVM S CEPA STHWID PA;+ 2)(R0,RB OVM 0 ,RCEPA#S OVM E LUVAT GE;1 ,R1)(R2B OVM X DEINK ACST;) SP-(1,RV MO T:BYET S X BYETSR B 0 ,R#5 OVM T BIN IVEMO; + 2)(R LBRO  R1 SLA E IVITIMPRT SE;) R2TD VECTOR ENTSEC IMPURE ENDVEC: .BLKW 4  ;END VECTOR STORAGE ENTSEC XCTPRG INC ENDVEC+6 ;DEFAULT TO NO END VECTOR XITSEC ������������������������ .GLOBL ASECT, CSECT ASECT: CALL SETMAX  ;CLEAN UP CURRENT SECTOR MOV R50ABS,SYMBOL ;SET ". ABS." MOV R50ABS+2,SYMBOL+2 BR CSECTF  ;USE COMMON EXIT CSECT: CALL SETMAX  ;CLEAN UP CURRENT SECTOR GETSYM   ;GET ARGUMENT (OR NULL) CSECTF: SCAN SECROL  ;SCAN FOR MATCH BNE 3$  ; BRANCH IF ND: .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: MODULE. *SBLD ; 4. ALL CODE IN THIS MODULE, EXCEPT FOR ROSEND, IS *SBLD ; CONTAINED IN THE CSECT 'SYSBLD'. THIS WILL FORCE *SBLD ; IT TO BE LOADED IN ROS'S DYNAMIC AREA. *SBLD ; 5. ONLY REGISTERS R0-R3, & R5 ARE USED. *SBLD ; *SBLD ; DATE: 21 OCT 1972 *SBLD ; PROG,(/2.0IG#D VBMO  UEAL VALTUACT GE;1 ,R1)(R2 OVM G REK ACST;) SP-(1,RV MO D:WRET SE YT BO, N;  YTTBSE MIB ? VETISIPO; ) R1(T TS  TEBYR ORDWOT SE;   B:WDET S C SEITX 2 KWBL.: F1 P2 KWBL.: F0 PN LIMPIC SENTE N URETR 2 1+PFE,LUVA OVM 1 1+PF CBIN  UEAL VNTREUR COFE OD MET;S F1,PDEMO VBMO  NE OLDIE FNTRI PET;S    1:PFET S N URETR N IOATOC LET;S +2F0,POCCLCL OVM D OR WMESUAS; 1 0+PF CBIN  GSLA FONTICALOT ENRRCUT SE;0 PFS,FGLCCB OVM O ER ZPMATCH MOVB SECTMP,SECTOR ;NEW GUY, SET SECTOR BEQ 2$  ;BRANCH IF ABS SECTOR (FOR NOW) BIS #RELFLG,MODE 2$: INSERT   ;ATTACH TO ROLL 3$: SETPF1 CRFREF MOV #SYMBOL,R1 MOV #CLCNAM,R2 .IF NDF XEDLSB CALL XMIT5 JMP LSBSET  ;SET NEW LOCAL SYMBOL BASE .IFF JMP XMIT5  ;MOVE AND EXIT .ENDC ENTSEC IMPURE SECTMP: .BLKW XITSEC SECINI: MOV R50ABS,SYMBOL ;SET ". ABS." MOV R50ABS+2,SYMBOL+2 CALL CSECTF  ;MOVE ONTO ROLL .IF NDF    ;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 RAMMER: 53 *SBLD ; *SBLD ;***********************************************************************SBLD .PAGE ; SBLD .DEF SBLD,ROSEND ; SBLD .REF IPL ; SBLD .CSECT SYSBLD ; FORCE CODE INTO DYNALDIE FNTRI PET;S    0:PFET S F UFSTG INSTLI TLBT.S ������������������������ C ND.E  ECTSXI  4W LK.B L:FIRF C2 KWBL. E URMPIC SENTE / SY/0 D5RA. 1 RDWO. / RF/C 50AD.R  0D OR.W K:LNRF C0 RDWO. D XEMI ECTSEN  ILFFCR K,LNRFC, UFDBCM RDWO.: SIFCCR REPUDC SENTE L RORREE YT.B  OLCRSE TEBY. L ROSTPE YT.B  DCEN. 1 -E YT.B  FF.I  OLCRMA TEBY. O CRMAXF NDF .I  OLMRSY TEBY. : YPFTCR YTTBTX ECTSEN  GSLA F*" "ND A#" "; 2 KBBL.LXEDABS BIT #ED.ABS,EDMASK ;ABS MODE? BEQ 1$  ; YES .ENDC CLR SYMBOL  ;DITTO FOR BLANK CSECT CLR SYMBOL+2 CALL CSECTF 1$: RETURN .IF NDF XEDABS GENEDT ABS,SECINI,1 .ENDC ������������������������������������������������SETMAX:    ;SET MAX AND ENTER ONTO ROLL SAVREG   ;PLAY IT SAFE MOV #CLCNAM,R1 MOV #SYMBOL,R2 CALL XMIT2  ;MOVE NAME TO SYMBOL SCAN SECROL  ;SCAN SECTOR ROLL CALL XMIT3  ;SET REMAINDER OF ENTRIES INSERT   ;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 REGISTERMIC AREA. SBLD ; EQUATES FOR SYSBLD SBLD ; SBLD ; DISK REGISTER ADDRESSES SBLD DCS = 165300 ; SBLD WC = 165302 ; SBLD CMA = 165304 ; SBLD DAR = 16: FLFDCR INPLIM ECTSEN  /2ENFLCR KWBL.: UFFBCR 3W LK.B R:HDRF C G LA FGOO-;N   KWBL.: GFFNCR KWBL.: NTFPCR KWBL.: INFLCR KWBL.: AGFPCR AGFLN IORSVE;  W LK.B R:VERF CW LK.B G:FLRF CE URMPIC SENTE N URETR E OSCLD AN ; T PNRFCR CL  ONTILEMPCOT AIAW; DRFHCRK,LNRFCF TOAIW R HDRF#CK,LNRF#C TERI.W  IISC AEDTTMAOR;F  2)(R-R CL  ITE ORST;) R2-(+,P)(S OVM H GTEN LTEPUOM;C  P)(S2,RB SU  RTTA STOT INPO;2 ,RUFFBCR#V MO  ND ETOR TEINPOE AV;S P)(S,-R2 H;UPDATE ROLL RETURN .GLOBL LIMIT LIMIT: CALL OBJDMP CLR (R4)  ;CLEAR VALUE MOV #RLDT11*400,-(R4) ;SET RLD TYPE STCODE CLR (R4) STCODE RETURN ������������������������ .GLOBL TITLE, SBTTL, IDENT TITLE: ENTOVR 2 GETSYM   ;GET A SYMBOL BNE 1$  ; ERROR IF NULL ERROR A RETURN 1$: MOV R0,PRGTTL ;MOVE INTO STORAGE MOV SYMBOL+2,PRGTTL+2 CALL SETSYM  ;POINT TO START OF TITLE MOV #TTLBUF,R2 ;POINT TO BUFFER CLRB (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$: ASL5306 ; SBLD ; DISK FUNCTION EQUATES SBLD WFCN = 2 ; WRITE FUNCTION SBLD RFCN = 4 ; READ FUNCTION SBLD GO = 1 ; GO FUNCTION SBLD ; MISS. EQUATES SBLD ERRCNT = 10 ; NUMBER OF TIMES TO TRY OPEOVM D ENT SE;+ 2)(RT,#V VBMO  ERFFBUF RE CMPDU;   : MPFDCR RNTURE  TEBYE THE ORST;+ 2)(R1,RB OVM: 1$ NELIW NET ARST;2 ,RUFFBCR#V MO  NTREUR CMPDU, NO; P DMRFCL ALC S YE ; $ 1I BH  W?FEA E ORSTO TOMRO;2 ,R12N-LERF+CUFFBCR#P CM  TEBYE ORSTD ANM OO ROR FSTTE;   : STFTCR������������������������ N URETR L DFRFCB LRC: 9$ ERNTOI PEW NRETO;S NTFPCR2,RV MO $: 8+ 2)(R1,RB OVM R TONAMIER TET;S R1M,SYR.#C ISB: 6$ R12,#S BI  *" "NOF ICHANBR; $ 6L BP  D ;SET STOPPER 2$: MOVB R5,(R2)  ;STORE CHARACTER BEQ 3$  ; BRANCH IF END TSTB (R2)+ GETCHR   ;GET THE NEXT CMP R2,#TTLBU2-1 ;END OF BUFFER? BLO 2$  ; NO 3$: MOV #TTLBU2,R1 ;SET DESTINATION REG 4$: MOVB -(R2),-(R1) ;MOVE CHARACTER UP BNE 4$ MOVB #FF,(R1) ;SET PAGE EJECT MOV R1,TTLBEG ;MARK BEGINNING CLR R5  ;NO "Q" ERRORS RETURN XITOVR ������������������������SBTTL:    ;SUB-TITLE DIRECTIVE ENTOVR 2 MOV #STLBUF,R2 ;POINT  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 #CTRATIONS SBLD .PAGE ; SBLD .BOUND ; PUT START ON A 2 WORD BOUNDARY SBLD SBLD = . ; PUT THE BOOT ONTO THE DISK. SBLD RESET ; CLEAR EVERYTHING FIRST SBLD SYSA10: MOV #400,@#DCS ; CLEAR THE DISK FIRST. SBLD MOV #DAR,R0 ; GET ADDRESS OF DAR TO USE. SBLD MOV #BOOTOP,IT B#" "ET;S R1L,DFRFC OVM + 2)(R TBTS  5$ EQB S NKLA BNGLIAITRM RI;T 2)(R,-CEPA#S PBCM $: 5P UN50R T TSRFCL ALC 1 ,RYM.SCR1-P+TYRF#C UBS $ 8C BC  R0 SRA $ 4E BN  PETYF RE CTOR BEUM NLLROP MA;+ 1)(RX,NDOLRB MPC 0 RR AS $: 40 ,RLGFFCR OVM 1 ,RYPFTCR#V MO $: 3 $ 2R B N LIRFCC IN  STFTCR LLCA  R1N,LIR.#C OVM O N;  3$ ISBH  R?BEUM NNELIW NE; UMNNLIN,LIRFCP CM $: 2 $ 1R B 730//2 1 #NELIT SERET N'ESDOO CRMA R ; N LIRF C @TO SUB-TITLE BUFFER TST PASS  ;PASS ONE? BEQ 2$  ; YES 1$: MOVB R5,(R2)+ ;MOVE CHARACTER IN BEQ 4$  ; BRANCH IF END GETCHR   ;GET THE NEXT CHARACTER CMP R2,#STLBUF+STLLEN-1 ;TEST FOR END BLO 1$ TSTB -(R2)  ;POLISH OFF LINE BR 1$ 2$: BIT #LC.TOC,LCMASK BNE 4$ MOV #TOCTXT,R1 MOVBYT   ;SET TABLE OF CONTENTS CALL SETSYM  ;POINT TO ".SBTTL" 3$: GETR50   ;GET RADIX-50 CHAR BGT 3$  ;STOP AT FIRST TERMINATOR MOV CHRPNT,R2 ;S.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 -(R0) ; SET ADD. OF FIRST WORD TO TRANSFER. SBLD MOV #BOOTED-BOOTOP/2,-(R0) ; SET NUMBER OF WORDS TO TRANSFERSBLD COM (R0) ; TURN WORD COUNT INTO 2'S COMP. SBLD MOV #WFCN!GO,-(R0) ; START THE WRITE SBLD SYSA20: TSTB (R0) ; WAIT UNTIL DONE. SBLD BPL SYSA20 ; SBLD TST (R0) ; ANY ERRORS? LR C ;G PARFCC IN  STFTCR LLCA  AGFLD EN SS,YE;1 ,RAG.PCR#V MO  NO ; $ 2S HIB ? GEPAW NE;M NUAG,PAGFPCR MPC: 1$ ERMBNUN IORSVEF UFST;+ 2)(R1,RB OVM 1 RB WAS T SIPODED ANT ES;T  STFTCR LLCA  AGFLT SE;R VERF,CR1 OVM 1 ,RER.VCR#V MO  ES Y;  1$ NEB ? ET YNTSER BEUM NONSIER;V  ERFVCR STT R TEINPOR FEUF BETESPR;2 ,RNTFPCR OVM G REAVS O N;  9$ EQB ? METIS HI TATT PUUT OEFCRY AN; T PNRFCT TS  CEENEREF REFCR;   : EFFRCR ONTINIFIDEF RE;C<ET POINTER MOV LINNUM,R0 CALL 10$ MOVB #CH.SUB,-(R2) MOV PAGNUM,R0 CALL 10$ MOVB #SPACE,-(R2) MOV R2,R1 MOVB LLTBL+2,R0 BEQ 4$ CALL TSTHDR 4$: RETURN 10$: MOV #5,R4 ; # OF DIGITS IN A FULL LINE NUMBER. 1/7/73 11$: MOVB #SPACE,-(R2) MOV R0,R1 BEQ 12$ CLR R0 MOV #^D10,R3 DIV R3,R0 ADD #DIG.0,R1 MOVB R1,(R2) 12$: SOB R4,11$ RETURN XITOVR ENTSEC TXTBYT TOCTXT: .ASCIZ /* * * TABLE OF CONTENTS * * */ .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, <ARG> .BYTE CT.'A .ENDM .ENDM  SBLD BMI ERROR ; YES. SBLD MOV #DAR+2,R0 ; NO. GET READY TO WRITE ROS OUT SBLD MOV #4,-(R0) ; STRAT AT SECTOR 4 SBLD MOV #SBLD,-(R0) ; SET FIRST ADDRESS TO TRANSFER SBLD MOV #ROSEND,-(R0) ; CAL. # OF WORDS TO MOVE SBLD SUB @#CMA,(R0) ; SBLD ASR (R0)  FLFDCR CBIN F:DERF�C���������������������� � VRTOXI  ECTSXI  P:TORF CM ND.E  G/AR/0 D5RA. E PCSMG,AR PCIR. : ASFBCR REPUDC SENTE N URETR A ORRRE: 6$ 1$ BR  AGFLP UM BS,YE; F NGRFCC IN  ORRR EO, N;  6$ NEB / NG/0 D5RA. ? CHITSWO -GNO;+ C)(PL,BOYMSP CM $: 5 N URETR G LA FVESA;G FLRF,CR3 OVM: 4$ P" "UT BLL AO, N; R30,C1#^ OVM S YE ; $ 4E BN  S?RG ANY;A  R3 STT: 3$ 1$ BR  GSLA FTELAMUCUAC; 3 ,RR2 ISB $ ,2R0 OBS 2 RL AS 8 ; 1/7/73 XITSEC ������������������������IDENT:    ;IDENT DIRECTIVE ENTOVR 2 CALL RAD50  ;TREAT AS RAD50 CLR ROLUPD  ;POINT TO START OF CODE-ROLL MOV #PRGIDN,R2 ; AND TO IDENT BLOCK 1$: NEXT CODROL  ;GET NEXT ITEM MOV VALUE,(R2)+ ;STORE IT CMP R2,#PRGIDN+4 ;PROCESSED TWO WORDS? BLO 1$  ; NO MOV #GSDT06,(R2)+ ;YES, SET GSD TYPE ZAP CODROL  ;CLEAR CODE ROLL RETURN XITOVR ENTSEC IMPURE PRGTTL: .BLKW 4 PRGIDN CTTBL:    ;CHARACTER TYPE TABLE GENCTT <EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL> GENCTT <EOL, TAB, EOL, EOL, EOL, EOL, EOL, EOL> GENCTT <EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL> GENCTT <EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL> GENCTT <SP , PC , PC , PC , ALP, PC , PC , PC > GENCTT <PC , PC , PC , PC , COM, PC , ALP, PC > GENCTT <NUM, NUM, NUM, NUM, NUM, NUM, NUM, NUM> GENCTT <NUM, NUM, PC , EOL, PC , PC , PC , PC > GENCTT <PC , ALP, ALP, ALP, ALP, ALP, ALP, ALP> ; CHANGE BYTE COUNT INTO WORD COUNT SBLD COM (R0) ; AND COMPLEMENT IT FOR THE HARDWARE. SBLD MOV #WFCN!GO,-(R0) ; START THE WRITE OF ROS. SBLD SYSA30: TSTB (R0) ; WAIT UNTIL DONE. SBLD BPL SYSA30 ; SBLD TST (R0) ; DONE. ANY ERRORS? SBLD BMI ERROR ; YES. $: 22 ,R#1 OVM R ROER, REHE TOT N;  5$ EQB T IOR FLLRON CA;S  OLFRCR NWCAS D HEISIN F;  3$ EQB T ENUMRG AOR FRY;T   RGSAG: 1$ 2R OVNTE R SOESOCPRH TCWI SEFCR;   : ETFSCR LLROY MMDU;  1 L=RORR E T SERF,CCR WTNSGE  OLMBSY;  0 02 M=SYR. CE IN LEW;N   030= IN.LCR GEPAW NE;  2 00 G=PAR. C1 #ONSIER V1,E YP;T  0>401*00+<010= ER.VCR THNGLER FEUF BEFCR;  . 321= ENFLCR EFCRXF NDF .I  RSLENDHAE NCREFERES OSCR TLBT.S ������������������������4: .BLKW 4  ;IDENT BLOCK XITSEC ������������������������ .GLOBL PRINT, ERROR .ENABL LSB PRINT: ERROR <>  ;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 .DSABL LSB .GLOBL REM REM:    ; ".REM" DIRECTIVE MOV R5,R3  ;SET TERMINATING CHARACTER BNE 1$  ;BRANCH IF NON-NULL ERROR A  ;ERROR GENCTT <ALP, ALP, ALP, ALP, ALP, ALP, ALP, ALP> GENCTT <ALP, ALP, ALP, ALP, ALP, ALP, ALP, ALP> GENCTT <ALP, ALP, ALP, PC , PC , PC , PC , PC > GENCTT <EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL> GENCTT <EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL> GENCTT <EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL> GENCTT <EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL> ����������������������������������������������������������������SETSYM:    ;SET SYMBOL FOR RE-SCAN MOV SYMBEG,CHRPNT ;SET THE POINTESBLD MOV #DAR+2,R0 ; NO. NO SIMULATE A ROM BOOT TO TEST ITSBLD CLR -(R0) ; START AT SECTOR ZERO. SBLD CLR -(R0) ; AND AT LOCATION ZERO. SBLD MOV #-256.,-(R0) ; MAX TRANSFER OF 4 SECTORS. SBLD MOV #RFCN!GO,-(R0) ; READ IN THE BOOT PROGRAM. SBLD SYSA40: TSTB (R0) ; WAIT HERE UNTIL DONE. SBLD BPL SYSA40 ; ���� S IETRENE BLTAH TCWI SDS /ND A; BLSA,DDS WTNSGE  EN /TERANEGE;L ABENN,ET SWENG C SEITX S AS PCHEAT SE;K ASDM,EAKMBED OVM S PACTXC SENTE S ONTIDION CLTAUEF DET;S AKMBEDT,NIDI#E OVM 1 -W LK.B  S:ITDB E1 KWBL. S ITDBEL OBGL. G PRCTXC SENTE 2 S AS POR FITINE- RTO;  W LK.B K:BADM EE IDRRVE OSI COR FTSBI;  W LK.B I:CSDM ES AGFLT SES INTAON;C   KWBL.: SKMAED REPUIM ECTSEN  VRTOXI  RNTURE $: 8A ORRRE: 7$ 1$ BR  NETIOU RLLCA; + P)0, 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  ;YES, BYPASS AND EXIT ������������������������ .GLOBL BLKW, BLKB, EVEN, ODD, RADIX, EOT BLKW: INC R3  ;FLAG WORD TYPE BLKB: EXPR   ;EVALUATE THR 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  SBLD TST (R0) ; DONE. ANY ERRORS? SBLD BMI ERROR ; YES. SBLD JMP @#0 ; NO. TRANSFER TO ZERO (BOOTOP). SBLD ; SBLD ERROR: INC R5 ; COUNT AN ERROR. SBLD CMP R5,#ERRCNT ; MAX # OF ERRORS? S237D (S@L ALC S AGFLT SE; 3 RT TS  IC PITE AK;M P)(S,-+2OLMBSY OVM: 5$ ITR EACL, NO;K ASDM,ER2 ISB R EACLT IVEEA LS,YE ; $ 5Q BE  E?BLND;E  R3 STT T BID TEECEL SARLE CO,;N SKMAED2,RC BI $: 4T IRENOIG, ES Y;  1$ NEB  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 FLSICT TS  2$0,RB SO  R2 OLR: 2$ ECS N IOITOS PIT BTEPUOM;C  R2 LRC R ,E 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 RETURN 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$: E 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 BLT SYSA10 ; NO - TRY AGAIN. SBLD HALT ; YES STOP. SBLD BR SBLD ; BOSS SAYS TO TRY AGAIN. SBLD ; SBLD ; THIS IS THE END OF THE SYSTEM BUILDING ROUTINE. SBLD .PAGE ; SBLD ; THIS IS THE ROUTINE TO BE USED TO DO AROER, 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  SSPAH AC EDECOS HI TTECUXE;E  ASTPXC ECTSEN  GSLA FLTAUEF;D E>AVCS-LSKMALC+<AKSBLCT,NICI#L OVM 1 -W LK.B  S:ITCB L(RROR 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 ; 07.31.72 .GLOBL BOUND,PACK ; 07.31.72 ; 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 ROM BOOT OF ROS. SBLD ; IT RESIDS ON DISK FROM SECTOR 0 AND IS LOADED AT LOCATION 0. SBLD .BOUND ; FORCE A DOUBLE WORD ADDRESS SBLD BOOTOP = . ; START OF ROM BOOT. SBLD RESET ; CLEAR EVERYTHING. FIRST. SBLD BOOT10: MOV #400,@#DCS ; FORCE A DISK CLAER FIRST. SBLD MOV #DAR+2,R0 ; GET ADDRESS OF DAR+2 TO SET UP DISK. SBLD 1 KWBL. S ITCBLL OBGL. G PRCTXC SENTE ) NGSIAR POR(FL BELAF OND;E   KWBL.: NDLELB NELIF OND ETOR TEINPO;  W LK.B L:NDCE LE IN LOFT ARSTO TERNTOI;P   KWBL.: GLBELC TSBIG LA;F   KWBL.: AGFLLC INPLIM ECTSEN  2SSPAG INTTNI IOR;F /2VLSALC KWBL.: AKSBLC VESALC.- L=AVCS LE AGORSTG INTR SNDMAOM;C   KWBL.: SIMCLC NTOU CELEV;L   KWBL.: VLCL LS IT BSKMA;  W LK.B K:ASCM LK OCBLE AV SOLTRON CNGTIIS;L    E:AVCS LE URMPIC SENTE : OPTTLC LLNU; > $ 07.31.72 BOUND: ; 07.31.72 ADD #3,(R2) ;FORCE TO A 07.31.72 BIC #3,(R2) ;DOUBLEWORD BOUNDARY 07.31.72 RETURN ; 07.31.72 ;* 07.31.72 ;* PACKED PHYSICAL DIRECTIVE: .PACK LOC 07.31.72 ;* 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  MOV #4,-(R0) ; START TRANSFER OF ROS FROM SECTOR 4. SBLD MOV #SBLD,-(R0) ; SET FIRST WORD TO TRANSFER AT. SBLD MOV #ROSEND,-(R0) ; CAL. # WORDS TO MOVE. SBLD SUB @#CMA,(R0) ; ASR (R0) ; CHANGE BYTE COUNT INTO WORD COUNT. SBLD COM (R0) ; AND COM. IT FOR THE HARDWARE. SBLD MOV #RFCN!GO,-(R0) ; START THE TRANSFER. SBLD BOOT20: TS < CTNLGE  YMST LCENG C TO CTNLGE  737/1/ E.OD MLPO TLTAUEF DGEANCH; 1 M,TT CTNLGE ,1D LT LCENG D CN CTNLGE  ,1EBMT LCENG 1 ,ME CTNLGE  MC CTNLGE  MD CTNLGE  EXBT LCENG M CO CTNLGE  RCST LCENG N BI CTNLGE  OCLT LCENG Q SE CTNLGE  S:BACT LE URDP ECTSEN  0= ITINLC DMEN. C ND.E  NE'MC.+LITINLC T=NICIL > ITIN<B NIF. / NE/M 50AD.R  NE'MC.LL OBGL. R ND.E  NE'MC.+LNE'MC.L= NE'MC. L2 >/ASTBLC.-<T EP.R   07.31.72 PACK: ; 07.31.72 EXPR ;EVALUATE THE EXPRESSION 07.31.72 CLC ;CONVERT 07.31.72 ROR VALUE ; TO 07.31.72 CLC ; PACKED 07.31.72 ROR VALUE EXIT 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 SIZTB (R0) ; WAIT HERE UNTIL IT IS DONE. SBLD BPL BOOT20 ; SBLD TST (R0) ; DONE - ANY ERRORS? SBLD BMI BOOTER ; YES. SBLD JMP @#IPL ; NO. GO TO IPL AND STRAT ROS. SBLD ; SBLD BOOTER: INC R5 ; COUNT THE ERROR 1= NE'MC. LE BLTAL RONTCOG INSTLIE ATEREN;G ITINE,MN CTNLGE ROAC.M ������������������������������ N URETR 2 .7317. 0 ; X:EXAG P2 .7317. 0 E IVCTREDIG INSTLIS AAGFL ; AGFLLCD,.LLC # IS B 2 .7317. 0 ; X EXAG P R B: EXAG PD TELEDE . E IVCTREDIG INSTLIS AAGFL ; AGFLLCD,.LLC # IS BX:GEPA ;E IN LISTHR TEAFF FTELAMUSI; T CNFF NCI: GEPA GEPA BLLO.G   ; PHYSICAL 07.31.72 BIS #RELFLG,FLAGS ;SET RELOCATABLE FLAG 08.03.72 INC PCKODE ;SET PACKED PHYSICAL CODE 08.15.72 SETIMM ;CONVERT TO OBJECT FORMAT 07.31.72 STCODE ;THEN INSERT IN OBJECT CODE 07.31.72 RETURN ;AND EXIT 07.31.72 PCKODE: .WORD 0 ; E 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 PROPE SBLD CMP R5,#ERRCNT ; REACHED MAX ERRORS YET? SBLD BLT BOOT10 ; NO. TRY AGAIN. SBLD HALT ; YES. SBLD BR BOOTOP ; OPERATOR SAID TO TRY AGAIN. SBLD .BOUND ; FORCE BOOTED TO DOUBLE WORD SBLD BOOTED = . ; LAST WORD OF BOOT PROGRAM. SBLD ; VRTOXI  ESRINT ECHITSWL /ND AN ;T ISNLL,NT SWENG I /LE ATEREN;G  STLII,LT SWENG N URETR: 7$ AR ROER $: 6 E OR MOR FRY;T  1$ BR $: 5K ASCM,LR2 ISB H NCRA BT,IS.L; $ 5L BP  R3 STT: 4$ OLTRON CNGTIIS LET;S  EXAGPL ALC T UNCOL VELEE ATPD US,YE;L LVLC3,RD AD  NO ; $ 4Q BE  L?UL;N  C.#L2,RT BI  SKMALC2,RC BI $:12 ES Y;  5$ NEB ? TSMILIF OFG LA FISTH;I CSCM,LR2 ITB: 1$ 1 T ES TIPSKD AN ; $ 12 BR  TSBIE BLSADIT SE, ES;Y SIMCLC2,RS BI  08.15.72 ������������������������ .SBTTL  DATA-GENERATING DIRECTIVES .GLOBL BYTE, WORD WORD: INC R3  ;"WORD" DIRECTIVE, SET TO 2 BYTE: ENTOVR 3 INC R3  ;"BYTE" DIRECTIVE, SET TO 1 MOV (R2),-(SP) ;STACK CURRENT PC 1$: TSTARG   ;TEST FOR ARGUMENT BEQ 2$  ; END EXPR   ;PROCESS GENERAL EXPRESSION SETIMM   ;CONVERT TO OBJECT FORMAT STCODE   ;PUT ON CODE ROLL ADD R3,(R2)  ;UPDATE PC BR 1$  ;TEST FOR MORE R 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$: SBLD ; SBLD .CSECT ; PUT ROSEND AT END OF ROS. SBLD .WORD 125252 ; FLAG SBLD .WORD 125252 ; SBLD .BOUND ; SBLD ROSEND = . ; THE END OF ROS. NO ; $ 11 EQB ? NGRISTD ANMMCOM RO FEDLLCA; G FLSICT TS  3$0,RB SO  R2 OLR: 3$ ECS 2 RR CL  NDOU FOT NIFR ROER ; $ 6Q BE  LEAB THE TINP UITK OO;L  OLDRLC NWCAS L BOYM S AOR FRY;T   YMTSGE $: 2T IRKMA, ES;Y  NTGCAR NCI H UGROTHE 'RWE, NO ; $ 7E BN  T?RSFI, LLNU; T CNRGAT TS  IDAL V;  2$ NEB T ENUMRG AERTHNO AOR FSTTE;  G ARSTT: 1$ -11/W NO; 3 RC IN  -20/3 RKEMA; 3 RL AS  2R OVNTE  T:IS L1 -R3E AK;M  R3 OMC: STLI N T IS 2$: MOV (SP)+,(R2) ;RESTORE INITIAL PC DGTEST: TSTB ROLSIZ+CODROL+1 ;ANY CODE GENERATED? BNE 1$  ; YES CLR MODE  ;NO, STORE A ZERO CLR VALUE SETIMM STCODE 1$: RETURN XITOVR ������������������������ .GLOBL RAD50, ASCII, ASCIZ ASCIZ: INC R3  ; ".ASCIZ", SET TO 1 ASCII: INC R3  ; ".ASCII", SET TO 0 RAD50: ENTOVR 3 DEC R3  ; ".RAD50", SET TO -1 CALL 23$  ;INIT REGS 1$: MOV R5,R2  ;SET TERMINATOR BEQ 28$  ;ERROR IF EOL 2$ 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,ROLND�� SBLD .END ; SBLD ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������L, STLINL OBGL. L RONTCOG INSTLI TLBT.S ������������������������ C SEITX G LA FITEX;M   KWBL.: EXDMCN ELEV LNGTIES;N   KWBL.: VLDLCN SKMAN IOITNDCO;  W LK.B K:MSND CD OR WSTTE;  KWBL.: RDDWCN D)REDEORE BSTMU (GERATO SALONTIDION;C     ASPPIM ECTSEN  RNTURE $: 6E GLOG TO,;N  R3 OMC S YE ; $ 6Q BE  F?FD;I  R1 STT: 5$ INGA ARY;T  1$ BR  OPS ASYP;B   NBETG: 4$ DEMOE GLOG TS,YE; 2 RM CO  NO ; $ 5E BN  R? OPSHAER;P OR.ICH,#R5 : 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 .ENDC X ;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 R; UPDATE 11/10/72 ; IPL2.GK2 ; UPDATE 10/20/72 IPL2.GK1 OFF IPL2.C02 NLP = 0 NCR = 0 $DTAPE = 0 OVRLAY = 0 NDISCS = 0 ; UPDATE 10/20/72 IPL2.C02 ; UPDATE 10/18/72 IPL2.C01 ; UPDATE 6/22/72 IPL2.S27 ; UPDATE 5/17/72 IPL2.S26 ; UPDATE 5/16/72 IPL2.S25 ; UPDATE 5/16/72 IPL2.S24 ; UPDATE 5/5/72 IPL2.S23 ; UPDATEMPC S ESGUD OO GIFH NCRA B;  4$ EQB " "&; ND.ACH,#R5 MPC " "&E UMSS;A  R21,RV MO $: 33 RM CO  NO ; 3 ,RR2 OVM T SEL AL, ES Y;  3$ EQB ? CHAT MS,YE; 3 ,RR0 MPC: 2$ LEGGTO, NO; 0 RM CO  ES Y;  2$ NEB ? SSUE GODGO;E OD,MLGFFDE#T BI  EDINEF DMESUAS; 0 RR CL  EFFRCR  LEAB TOLMBSYR SE UCHARSE;  H RCSS  YM S AOT NIFR ROER ; R ERFAIQ BE  OLMBSYA T GE;  M SYETG: 1$ UETRF OFT ARST; 3 RR CL  &" "ET;S  R2 LRC N IOITNDCOL IAITINE AV;S  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) ;"<EXPRESSION>", SAVE PEGISTER 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 5/2/72 IPL2.S22 ; UPDATE 4/17/42 IPL2.S21 ; UPDATE 4/14/72 IPL2.S20 ; UPDATE 4/12/72 IPL2.S19 ; UPDATE 4/10/72 IPL2.S18 ; UPDATE 4/5/72 IPL2.S17 ; UPDATE 3/23/72 IPL2.S16 ; UPDATE 3/21/72 IPL2.S15 ; UPDATE 3/20/72 IPL2.S14 ; UPDATE 3/17/72 IPL2.S13 ; UPDATE 3/13/72 IPL.S12 ; UPDATE 2/16/72 IPL2.S11 ; UPDATE 1/19  R13,RV MO  DF/IIF;   : DFONTC FAONTC BR  TRONTC LTB P EXBSA: LTONTC FAONTC BR  TRONTC GTB P EXBSA: GTONTC ITEXT US JE,RU;T   RNTURE R:NTCO TE GLOG TE,LSFA ; 3 RM CO A:NFCO TT SAF ICHANBR; R NTCOTQ BE  ONSIESPREXT ES TE,/NEQ;  P EXBSA: EQONTC������������������������������ � F, DFONTC F,ND NDNCGE  DFONTC F,DD CNENG T NLCOT, LD CNENG F T,NLCOT, GE NDNCGE  LTONTC T,LD CNENG T NGCOT, GD CNENG F T,NGCOT, LE NDNCGE  GTONTC T,ARTIAL 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 CURRENT MOV R0,(R4)  ;SAVE INC R1  V (R1)+,(R2)+ XMIT0: RETURN XCLR7: CLR (R2)+ XCLR6: CLR (R2)+ XCLR5: CLR (R2)+ XCLR4: CLR (R2)+ XCLR3: CLR (R2)+ XCLR2: CLR (R2)+ XCLR1: CLR (R2)+ XCLR0: RETURN MOVBYT:    ;MOVE BYTE STRING 1$: MOVB (R1)+,(R2)+ ;MOVE ONE BNE 1$  ;LOOP IF NON-NULL TSTB -(R2)  ;END, POINT BACK TO NULL RETURN ����������������������������������������������������������������WWIMT:    ;WRITE WORDIN MACRO TREE BIT #BPMB-1,R2 ;ROOM IN THIS BLOCK? BNE 3$  ; YE/72 IPL2.S10 ; UPDATE 1/12/72 IPL2.S09 ; UPDATE 12/11/71 IPL.S08 ; UPDATE 12/10/71 IPL.S07 ; UPDATE 12/2/71 IPL.S06 ; UPDATE 11/18/71 IPL.S05 ; UPDATE 11/15/71 IPL.S04 ; UPDATE 11/12/71 IPL.S03 ; UPDATE 11/11/71 IPL.S02 ; UPDATE 11/10/71 IPL.S01 .TITLE IPL ;*********************************************************************** ;* GD CNENG F Q,NECOT, NZ NDNCGE  EQONTC Z, NDNCGE  F, EQONTC E,ND CNENG Q NECOT, EQ NDNCGE  RNTURE  ORRR EQ" "NO; 5 RR CL X:ERFA IA ORRRE: RRAEIF ERDLAN HGHOUHR TITEX, NO; 1 @R MPJ A MMCOS ASYP;B   RGTATS  ITEXT US JS,YE ; X ERFAIE BN  T?SAUNY ADREAL; D WRNDCT TS  N)VE END(AL MAOR NTOK AC;B  R1 SLA D ODF I-1O TESGO3 ;R  R3 BCS G LA FLEGGTOR FOD SE UIT BOW;L  R1 SRA S ESDRADT GE;1 ,R+2OLMBSY OVM D UNFOT NOF IORRR E;  RRAEIF ;BUMP COUNT CMP R1,#3  ;WORD COMPLETE? BNE 24$  ; NO 22$: MOV R0,(R4)  ;STUFF IN VALUE SETIMM   ;CONVERT TO OBJ MODE STCODE   ;STOW IT 23$: CLR R1  ;CLEAR LOOP COUNT CLR (R4)  ; AND VALUE 24$: RETURN 28$: ERROR A 29$: BR DGTEST  ;TEST FOR DATA PROCESSED XITOVR ������������������������ .IF NDF XFLTG .GLOBL FLT2, FLT4 .GLOBL WORD2 ; 07.31.72 ; S SUB #BPMB,R2 ;NO, POINT TO LINK MOV R2,-(SP) CALL GETBLK MOV R0,@(SP)+ ;SET NEW LINK 3$: MOV R5,(R2)+ ;WRITE, LEAVING FLAGS SET RETURN GETBLK:    ;GET A MACRO BLOCK MOV MACNXT,R0 ;TEST FOR BLOCK IN GARBAGE BNE 1$  ; YES, USE IT MOV #MACTOP,R2 ;NO, POINT TO TOP OF STORAGE MOV (R2),R0 ADD #BPMB,(R2) ;COMPUTE NEW TOP CMP ROLBAS+0,(R2) ;ROOM? BHI 2$  ; YES SERROR 217  ;NO 1$: MOV (R0),MACNXT ;SET NEW CHAIN 2$: MOV R0,R2  * ;* INITIAL PROGRAM LOAD WILL INITIALIZE THE ROS SYSTEM AND * ;* THEN EXIT TO DISPATCH. THIS MODULE SHOULD BE EXECUTED * ;* BEFORE ENTERING ROS FOR THE FIRST TIME. * ;* * ;* PROGRAMMER 51,52,53 AND 54 * ;* DATE 11/9/71 * ;* EQB T ENUMRG AOR FANSC; L RONDCW ANSC F:ONTC OLMBSYA T GE;  G ARGS  ONTIDION CSTTE;   : ONTC������������������������ N URETR R ROERN IOITNDCO; O ORRRE: RROEIF RNTURE  ALONTIDION CRKMA;G LACF,LND.CLC#S BI X:DCEN RDWOT ES TND A;  1)(R-L AS  SKMAE UCED;R  1)(R-L AS  NTMEREEC DS,YE; ) R1(C DE  ORRR EO, N;  RROEIF LEB ? ALONTIDION CIN; ) R1(T TS  ELEV LTOT INPO;1 ,RVLDLCN# OVM L NAIOITNDCOF OND;E    C:ND E X DCEN BR  ONV MO; D WRNDCR �  07.31.72 DBLINT: .WORD 0 ;0 = FLT2 OR FLT4, 1 = WORD2 07.31.72 ; 07.31.72 WORD2: ; 07.31.72 INC DBLINT ;SET .WORD2 FLAG 07.31.72 INC R3 ;SET FOR .FLT4 PROCESSING 08.03.72 BR FLT2X ; CLR (R2)+  ;CLEAR LINK CELL, POINT PAST IT RETURN REMMAC: MOV R0,-(SP) ;SAVE POINTER 1$: TST (R0)  ;END OF CHAIN? BEQ 2$  ; YES MOV (R0),R0  ;NO, LINK BR 1$ 2$: MOV MACNXT,(R0) MOV (SP)+,MACNXT RETURN ���������������������������������������������������������������� .IF NDF SDELTA SDELTA= 10 .ENDC TSTCOR: MOV MACTOP,R0 ADD #BPMB*2,R0 CMP R0,ROLBAS+0 BLO 9$ MOV ROLBAS+0,R0 ADD #SDELTA*8.,R0 CMP R0,ROLBAS+T99ROL BHI   REVISION ;* REVISION * ;* * ;*********************************************************************** .DEF IPL,SSTACK .DEF DYNSIZ ; # BYTES IN DYNAMIC POOL .DEF ENDDYN,DYSINI ; ******** .REF CLINIT .REF RQUEST,SAVE,DSPTCH,TPRTY,HEADER .REF PFSIPL,PSTIPL RO  RYAR CET;S  R3 SLA G LA FNTREUR CFF OVEMO; D WRNDCL AS  ORRR EO, N;  RROEIF LEB ? SSREOGPRN IALONTIDION;C  VLDLCN STT ) LYCTREDID LEAL CENWH0 3=(R;   L NAIOITNDCOB-SUL NAIOITNDCOUN;   : TFIF GHOUHR TLLFAD ANT ENEMPLOM CSE;U  R3 OMC N IOITNDCOT ENRRCUT GE;3 ,RSKDMCN OVM L NAIOITNDCOB-SUE LSFAF ;I    F:IF CHANBRD AN ; F FTIR B T ENRRCUT GE;3 ,RSKDMCN OVM L NAIOITNDCOB-SUE RU TIF;   : FT�I���������������������� � CXNDER B D WRND COR F  07.31.72 FLT4: INC R3 FLT2: CLR DBLINT ; 07.31.72 FLT2X: ; 07.31.72 ENTOVR 3 INC R3  ;MAKE IT 1 OR 2 ASL R3  ;NOW 2 OR 4 FF1: ; 08.03.72 1$: TSTARG BEQ DGTEST MOV FLTPNT-2(R3),-(SP) ;EVALUATE NUMBER CALL @(SP)+ ; BNE 2$ ;BRANCH IF NOT NULL 9$ SAVREG MOV #SDELTA,R3 MOV ROLBAS+T99ROL,R4 1$: MOV -(R4),R0 BEQ 2$ CALL REMMAC 2$: MOV #T99ROL,R2 3$: SUB #2,R2 CMP ROLBAS(R2),ROLTOP(R2) BHIS 3$ MOV R2,MAXSYM 4$: ADD #SDELTA,ROLBAS(R2) SUB #2,R2 BLT 5$ ADD #SDELTA,ROLTOP(R2) BR 4$ 5$: TST -(R4) MOV -(R4),MAXSYM+4 MOV -(R4),MAXSYM+2 DEC R3 BGT 1$ 6$: MOV -(R4),SDELTA*8.(R4) CMP R4,MACTOP BGT 6$ 9$: RETURN .CSECT IMPURE MINSYM: .BLKW 3  ;0, 0, 0  .REF TSTAT,SYSINI,DINT .REF EMTINIT .REF PRTINT,KBDINT ;TTYIO PRINTER AND KEYBOARD ;INTERRUPT ROUTINES .REF TTINIT ;TTYIO INITIALIZATION SUBROUTINE .IFG NLP ; ONLY IF HAVE LINE PRINTERS .REF LPINIT .ENDC .IFG NCR ; ONLY IF HAVE CARD READERS .REF CRINIT .ENDC .IFNZ $DTAPE .REF DTINT .ENDC TOIT;D  1)(R-R RO  R3 SLA K MSND CTOINE ATOT;R  1)(R-R RO  1) (SEAL FOR) (0E RU TTOY RRCAT SE; 3 RL AS  ELEV LMPBU, ES;Y  1)(R NCI R ROER, NO ;  RROEIF GTB ? ERTHNO AOR FOMRO;. 15,#1)(R MPC L VELEO TNTOI;P R1L,LVND#C OVM: F1 IT ENUMRG ASTTE; N COTL ALC L NAIOITNDCOD MEMMRAOGPRO-CRMI;   : IF DCEN F,FTI, FFI, FTI, IF BLLO.G  AMRESTN AI MHE TTOIN; 1 IF BR  ITE INAMEX; F ONTC LLCA  NTMEGUARS ALFHAD ONEC SATRE;T OLMBSY2,L+BOYMSV MO   .DELETED BEQ FLTERR ;BRANCH IF NULL 07.31.72 TST DBLINT ;IS THIS A .WORD2 DIRECTIVE? 07.31.72 BEQ FF2 ;BRANCH IF NO - MUST BE FL. PT. 08.03.72 MOV R0,-(SP) ;YES - SAVE R0 AND R1 07.31.72 MOV R1,-(SP) ; 07.31.72 MOV R4,-(SP) ;AND R4 07.3 .CSECT IMPPAS MAXSYM: .BLKW 3  ;-1, -1, -1 .CSECT XCTPAS COM MAXSYM COM MAXSYM+2 COM MAXSYM+4 MOV #T07ROL,R1 1$: MOV ROLTOP+T99ROL,ROLTOP(R1) MOV ROLBAS+T99ROL,ROLBAS(R1) CLRB ROLSIZ+1(R1) DEC R1 DEC R1 BPL 1$ .CSECT .CSECT IMPURE MACNXT: .BLKW .CSECT ���������������������������������������������������������������� .SBTTL FIN .CSECT IMPURE  ;CLOSE OUT IMPURE SECTORS .CSECT IMPPAS .CSECT IMPLIN IMPTOP: .CSECT ; .CSECT .IFZ OVRLAY SSTACK = . ; BEGIN SYSTEM STACK HERE FOR ROS I .ENDC PSR = 177776 ; PROCESSOR STATUS REGISTER EQUATE PSBENB = 165400 ; DEVICE ADDRESS AT WHICH TO ENABLE ; ; MANUAL PUSHBUTTON ; ; INTERRUPT VECTOR EQUATES ; MPSHBT = 244 ; MANUAL PUSHBUTTON MPSHLV = 200 ; BR4 FOR MANUAL PUSHBUTTON .IFZ $SAVE-DMEN. : RG'AIF RG'AIF BLLO.G  F>NDF,,D,ZNZL,G,E,,NLTE,,LGTE,,GEQ<, RGAP IR. S ALONTIDION CEDATENATNCCO;   X DCEN BR  ORRR EQ" "NOT BU, SEAL;F  R5 LRC: 3$ NTMETETA STOK AC;B  NTTMSP JM  NTGCAR LRC: 2$ MAOM CTOP ULL ASSREPPSU, ES;Y GLBELC1,RV MO  NO ; $ 2Q BE  N?IOSSREPPSUL NAIOITNDCO;K ASCM,LND.CLC#T BI  NKLA-BOM NTOT SE;  B TNSE  ONTICALOT ENRRCUE AV;S R1T,PNHRCV MO $: 1S ASYP BS,YE;  R CHETG O N;  1$ NEB ? MAOM;C R5M,COH.#C MPC 1.72 MOV R5,-(SP) ;AND R5 07.31.72 CLR -(SP) ;SET SIGN FLAG POSITIVE 07.31.72 MOV #FLTBUF,R5 ;GET ADDRESS OF FL. PT. BINARY NO. 07.31.72 MOV (R5)+,R0 ;AND LOAD THE MOV (R5)+,R1 ; DOUBLE PRECISION 07.31.72 MOV (R5)+,R2 ; FLOATING POINT 07.31.72 MOV (R5)+,R3 ; NUMBER  XCTPRG .CSECT XCTPAS .CSECT XCTLIN RETURN   ;RETURN FROM ANY OF THE ABOVE .CSECT SWTSEC SWTTOP: .IF DF FUTURE .CSECT EDTSEC EDTTOP: .ENDC .CSECT   ;BE NEAT .END START �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3 ; ONLY IF REAL SAVE (BPT TRAP) SAVTRP = 14 ; SAVE TRAP .ENDC .IFZ $SAVE-104400 ; ONLY IF ODT SAVE (TRAP TRAP) SAVTRP = 34 .ENDC SAVLEV = 340 ; SAVE UNDER LOCKOUT .CSECT SYSBLD ; FOR MOD. TO WRITE TO DDC DISK ******** ; .CSECT .ALINT ; GENE'S ASYNC INIT CSECT ******** ; .CSECT .CRINT .CSECT .LPINT .CSECT .SYSIN D IESFTISAUNF ICHANBR ; $ 3I BM  R3 STT T ENUMRG ASTTE; N COTL ALC S ERDLAN HTEIAEDMM;I    F:II IFIL OBGL. S ALONTIDIONCL TTSB. ������������������������ C ND.E  VRTOXI  ECTSXI  NTOU CRDWO;  W LK.B C:WDLT FN LIMPIC SENTE 4 KWBL. V:SALT FC AINMA; 4 KWBL.: UFTBFL F)BULT FEDCERE PSTMU (NTNEPOEXY ARIN;B  1W LK.B X:BELT FT ENONXP EALIMEC;D   KWBL.: XPTEFL AGFLT INPOL MACIDE;  W LK.B T:DOLT FT BIN IG;S   KWBL.: GNTSFL REPUIMT INPOG  07.31.72 CMP -(R5),-(R5) ;BACK R5 UP TWO NOTCHES 07.31.72 MOV R0,R4 ;FIRST WORD HAS THE EXPONENT 07.31.72 BGT WORD3A ;BRANCH IF NUMBER IS POSITIVE 07.31.72 BLT WORD2A ;BRANCH IF THE NUMBER IS NEGATIVE 07.31.72 TST (SP)+ ;IT'S ZERO, SO POP OFF THE SIGN FLAG 07.31.72 BR WORD2E ;AND GO EXIT ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.CSECT .DYSIN .CSECT .QUEUE .CSECT .EMTIN .CSECT .CLINT .CSECT .TTYIN .CSECT .MAIN. ; START OF CODE. MUST BE AFTER OTHER NAMED ; IPL = . RESET ; SEND INIT PULSE TO ALL DEVICES MOV #340,PSR ; SET CPU LEVEL TO 7 DURING IPL MOV #SSTACK,SP ; SET UP SYSTEM STACK .IFZ $SAVE-104400 MOV 14,-(SP) MOV 16,-(SP) .ENDC JSINATLO FOFT ARST;   G:BELT FE URMPIC SENTE 4 ITXM MPJ 2 ,RR4 OVM V SALT FTOF BULT FVEMO; 1 ,RR3 OVM: SVTGFL RNTURE  2)(R- OLR ) R2-( OLR ) R2-( OLR ) R2-( SLA 2 ,RR4 OVM T IFSHT EF;L    S:GLLT F N URETR + 1)(R ORR + 1)(R ORR + 1)(R ORR + 1)(R ORR E ATOT RHTIG;R  R13,RV MO  FTHI SHTIG;R   LCC: RSTGFL������������������������ N URETR O N;  1$ NEB ? GHOUHR;T  R32,RP CM  RYSAESEC NIF, LEPPRIE NUTION;C  2$ CSB N IDD;A  07.31.72 ; 07.31.72 WORD2A: ; 07.31.72 INC (SP) ;SET SIGN NEGATIVE 07.31.72 ; 07.31.72 WORD3A: ; 07.31.72 ASR R4 ;PUT 07.31.72 IME TO INSERT ENTRY INTO LSD CMP R4,PTROBJ ;IF INSERTING BELOW OBJ MOD POINTER... BHI INPT03 ADD #BPSYM,PTROBJ ;...MUST ADVANCE IT ALONG WITH OTHERS INPT03: BR INSY01 ;GO INSERT AT R4 .PAGE UNSQUISH: ;MAKE A HOLE IN TABLE. R4 POINTS TO DESIRED HOLE LOC'N MOV R0,-(SP) MOV R1,-(SP) MOV USYME,R0 ;START @ TOP ENTRY... MOV R0,R1 ADD #BPSYM,R1 ;...AND EXR PC,PSTIPL ; TRAP INIT. .IFZ $SAVE-104400 MOV (SP)+,16 MOV (SP)+,14 .ENDC JSR PC,PFSIPL ; FOWER FAIL INIT. ; ; SET UP INTERRUPT AND TRAP VECTORS ; MOV #RQUEST,MPSHBT ; SET UP HANDLER FOR MANUAL PUSHBUTTON MOV #MPSHLV,MPSHBT+2 MOV #SAVE,SAVTRP ; SET UP SAVE TRAP HANDLER MOV #SAVLEV,SAVTRP+2 .IFGE NTTYS-1 MOV #200,R1 ;INIT INTERRUP 1)(R-C AD $: 2S IERRCAR FOT SE; 1 ,RR2 OVM D OR WIND AD;) R2-(),R26( DDA: 1$ EAARE AV STOT INPO; 2 ,RR4 OVM F BULT FTOR FEUF BVESAD AD;   : ADTGFL LSTGFL LLCA  LSTGFL LLCA  SVTGFL LLCA  *5;   : 50TMFL ADTGFL BR  RSTGFL LLCA  HTIG RLECA;S  RSTGFL LLCA  UPCKBAN IVESA; V GSLTFL ALC: 1$ EXTBFL NCI S GRLTFL ALC $ 1O BL  M?OO;R 146314,#3)(R MPC 4 5/;*    4:M5LT�F���������������������� � RNTURE  R0N IAGFLT SE; 0 ,RR3 OVM K ANBLN-! ASR R4 ; THE 07.31.72 ASR R4 ; EXPONENT 07.31.72 ASR R4 ; AT 07.31.72 ASR R4 ; BINARY 07.31.72 ASR R4 ; ZERO 07.31.72 ASR R4 ; 07.31.72 BIC #1"PAND UPWARD UNSQ01: CMP R0,R4 ;ARE WE DOWN TO DESIRED LOC'N YET? BHI UNSQ02 ;NOT YET: MOVE ANOTHER ONE MOV (SP)+,R1 MOV (SP)+,R0 ADD #BPSYM,SYME ;BUMP BOTH POINTERS ADD #BPSYM,USYME RTS PC UNSQ02: MOV -(R0),-(R1) ;BLOCK MOVE MOV -(R0),-(R1) MOV -(R0),-(R1) MOV -(R0),-(R1) MOV -(R0),-(R1) BR UNSQ01 ; ******************************#T VECTORS FOR MOV #KBDINT,60 ;TTY UNIT 0 MOV R1,62 MOV #PRTINT,64 MOV R1,66 .ENDC .IFGE NTTYS-2 INC R1 ;INIT INTERRUPT VECTORS FOR MOV #KBDINT,340 ;TTY UNIT 1 MOV R1,342 MOV #PRTINT,344 MOV R1,346 .ENDC ; ; JSR TO GENE'S INIT ROUTINE HERE ; .REF ASYNCI ; ******** NOH IT WRNTURE;  B TNSE $: 1E LSFAS AAGFL; 3 RR CL  INE AM CWEE ERWHO TETES RE,ON;N NTRPCH0,RV MO  EDSSCERO PTSGIDIY ANF ID)OO(GO ER;Z  1$ EQB R TEINPOR HA CALONGIRI;O R0+,P)(S OVM E LUVAN IUY GSTIR FCELA;P UEAL,V3)(R OVM T UNCOR EACL; C WDLTFR CL  TELUSOABE AK;M  DEMO LRC: EXTGFL NY AIF, GNSIT SE;) R3,(GNTSFL DDA: 7$ TR ROER $: 6E IVITOS PIFK ;O  7$ PLB N IOITOS PGNSIT ES;T  3)(R STT $ 5E BG  R2 ECD 2 RC DE  2)(RUFTBFL DCA: 5$ ECS ) R2%77400,R4 ;GET RID OF EXTRANEOUS BITS 08.03.72 SUB #200,R4 ;GET RID OF BASE 200 (128 DECIMAL) 07.31.72 NEG R4 ; 07.31.72 ADD #56.,R4 ;R4 NOW EQUALS THE NO. BITS TO SHIFT 07.31.72 ;THE FL. PT. NUMBER RIGHT 07.31.72 BIC #177600,R0 ;GET RID OF SIGN AND EXP IN FL. PT. NO. 08.03.72 BIS #200,R0 ;PUT&************************************** SQUISH: ;REMOVE ENTRY POINTED TO BY R4 FROM THE UNDEF'D TABLE JSR R5,REGSAV MOV R4,R0 MOV #BPSYM,R1 ;ELEMENT SIZE ADD R1,R0 ;STAYS ONE ELEMENT ABOVE R1 ASR R1 ;USE BELOW AS COUNTER SQUI01: CMP R0,USYME ;REACHED TOP OF TABLE? BHIS SQUI04 ;YES: EXIT SQUI02: MOV R1,R2 ;COUNTER=# WORDS PER SYMBOL SQUI03: MOV ' JSR PC,ASYNCI ; ******** ; .IFG NTTYS-2 XXXXXX ;CREATE ASSY ERROR IF NTTYS .GT. 2 .ENDC .IFNZ NDISCS .IFZ $DDSDC ; ONLY FOR RF-11 DISK MOV #DINT,204 ; SET UP FOR DISC 0 MOV #240,206 ; AT INTERRUPT LEVEL 5 .ENDC .IFNZ $DDSDC ; ONLY FOR DDS DISK MOV #DINT,530 ; DISC 0 MOV F(BULT,F777707#S BI  ESYT BTOT ERNVCO; 2 RL AS $: 8D OR WLENGSI; 2 RC IN  PETYT SERE;P  8$ NEB E BLOU;D  R2 SLA  NTOU CZESIT GE;2 ,RDCTWFL OVM C ND.E  ES Y;  7$ EQB ? ONTICAUNTR;K ASDM,EPT.FED#T BI  PTDFXE DF NIF. Y RRCAH IG HET;S  4)(R ORR T GHRIE ACPLE ONT IFSH; S GRLTFL ALC $ 4E BN  D?EN; 3 ,RR2 MPC ! C! PUT-ODESIINE THF OREWABE; ) R2(B WAS E YT B AUPE OV;M 2)(R),R1(B OVM D OR WNE OWNDO;) R2-(),R1-( MPC: 4$ R2N HA TEROW LNE OIS1 ) IN 'HIDDEN' BIT 07.31.72 ; 07.31.72 WORD2B: ; 07.31.72 DEC R4 ;NOW WE'LL BEGIN SHIFTING THE 07.31.72 BLT WORD2C ;NORMALIZED FLOATING POINT NUMBER 07.31.72 CLC ;ALL THE WAY DOWN TO DOUBLEWORD 07.31.72 ROR R0 ;BINARY ZERO *(R0)+,(R4)+ ;BLOCK TRANSFER DEC R2 BGT SQUI03 ;STILL IN BLOCK BR SQUI01 SQUI04: JSR R5,REGPOP SUB #BPSYM,USYME ;ADJUST POINTER TO BEGIN OF UNDEFINEDS RTS PC .PAGE NXTMOD: ;ROUTINE SETS UP PARAMETERS TO READ NEXT OBJ MODULE DEC NAMCTR ;MORE MODULES? BLT NXTM30 ;NO MORE: TAKE "DONE" EXIT CLR BLOCK1 ;FLAGS FIRST BLOCK IN MODULE + #240,532 ; AT LEVEL 5 .ENDC .ENDC .IFNZ $DTAPE MOV #DTINT,214 ; SET UP VECTOR FOR MOV #300,216 ; THE DECTAPE .ENDC ; ; XFER TO OTHER INITIALIZATION SUBROUTINES ; JSR PC,EMTINIT ; FILL UNDEFINED EMT REFS WITH ERROR RETURN JSR PC,TTINIT ;INITIALIZE TTYIO TABLES JSR PC,CLINIT ;INIT FOR CLOCK ROUTINES JSR PC,SYSINI ; INIT T;R  1)(R-T TS  R12,RV MO  TSBIT GHEIT IFSHO TET;S  R24,RV MO $: 3R ROER, NO; N ORRRE: 2$ ES Y;  3$ EQB ? ROZER DEORH IG;H +1EXTBFL TBTS  OWFLR-DEUNF ICHANBR; $ 2E BL  8.12S ESXC EET;S EXTBFL0,20#D AD  IT BNE OSELO; 5 TGFL CCB S GLLTFL ALC T IFSTJUT EF;L  EXTBFL ECD: G5LT�F���������������������� � 1$3R B P EXLTFC IN  EXTBFL.,#3 UBS K ACSTE UNPR, ES;Y  )+SP(T TS  NO ; $ 42 GTB ? OPLOF OND;E  P)(S ECD R FEUF BVESAN IDD;A  ADTGFL- 07.31.72 ROR R1 ; 07.31.72 ROR R2 ; 07.31.72 ROR R3 ; 07.31.72 BR WORD2B ; 07.31.72 ; 07.31.72 WORD2C: ; . MOV NAMPTR,R0 MOV 4(R0),OBJSEC ;START SECTOR # MOV 6(R0),SECTCT ;SECTOR COUNT INC SECTCT ;WANT ONE EXTRA SECTOR ON LAST READ ADD #8.,NAMPTR ;ADVANCE TO NEXT NAME MOV #OBJBK2,BLKPTR ;INIT BLOCK POINTER TO FORCE FIRST READ ADD #2,(SP) ;BUMP TO TAKE "GOOD" EXIT NXTM30: RTS PC .PAGE ;"NEXT BLOCK": SUBROUTINE READS IN SECTORS UNTIL ; AT LEAST O/HE CORE TASKS ******** .IFNZ OVRLAY JSR PC,DYSINI ; INIT. DYNAMIC STORAGE ALLOCATOR .ENDC .IFG NLP ; ONLY IF HAVE LP JSR PC,LPINIT .ENDC .IFG NCR ; ONLY IF HAVE CARD READER JSR PC,CRINIT .ENDC .IFNZ NDISCS .REF AUFCN,AULIST,DISCIO,INIDSC .REF CDIFCN,CDILST .REF TASKS,$TKFLS,$TKFLF CLR PSR LLCA  HTIG RHE TTOE OR MCEON; S GRLTFL ALC: 3$ 4S GRLTFL ALC T GHRIS IT BOFE PLOU C AVEMO; S GRLTFL ALC S YE ; $ 43 NEB ? AP LDD;O  P)(S1,#T BI $:42 ERFFBUE AV SINE ACPL; V GSLTFL ALC T GHRIT IFSH; S GRLTFL ALC R NEIN2 , ERUT O16;) SP-(2,.*16#V MO  OPLO, NO ; $ 40 PLB ? ET SIT BGNSI; ) R3(T TS $:41 LSTGFL LLCA  TSBIY IFSTJUT EF LN,IOISIV;D  EXTBFL ECD: 0$ 4 $ 31 BR  10R VE O;  XPTEFL ECD: 3$ 38 Y BND A; EXTBFL.,#3 DDA 4 5/Y BLYIPLT107.31.72 TST (SP)+ ;SEE IF THE SIGN IS NEGATIVE 07.31.72 BEQ WORD2D ;BRANCH IF POSITIVE 07.31.72 NEG R3 ;UDDERWISE, 07.31.72 COM R2 ; DO A 2'S 07.31.72 COM R1 ; COMPLEMENT 07.31.72 COM R0 ; TO THE NUMBER 07.31.72 ; 2NE BYTE OF NEXT BLOCK IS IN UPPER HALF OF THE ; TWO-SECTOR BUFFER. ONE ADDITIONAL SECTOR IS READ AFTER ; THE FINAL SECTOR IN THE MODULE TO FORCE THE LAST BLOCK ; INTO THE UPPER HALF. NXTB90: JSR PC,NXTMOD ;INIT FOR NEXT MODULE AND READ A BLOCK BR NXTB80 ;NO MORE MODULES NXTBLK: MOV #ONEZRO,PTR1.0 ;INIT PTR TO [1] CMP BLKPTR,#OBJBK2 ;ARE WE INTO LOWER SECTOR? BLO NXTB30 3 ; RESET LOCKOUT SO DISC INTERRUPT ; ; MAY BE RECEIVED CLRB AUFCN ; SET TO READ ALLOCATION FILE TYPE DIR. MOV #AULIST,-(SP) JSR PC,DISCIO ; READ FILE TYPE DIRECTORY IPLX20: CMP #1.,AULIST ; I/O COMPLETE? BNE IPLX20 ; NO-KEEP CHECKING MOVB #1.,AUFCN ; PUT BACK FCN AS WRITE IN LIST CLRB CDIFCN ; SET TO READ CORE DIRECTORY IMAGE MU; 4 M5LTFL ALC: 2$ 3 $ 33 BR  WO TBYD AN ; X BELTFC IN  5BYY PLTIUL MS,YE; 0 M5LTFL ALC O N;  2$3I BH  5? *WEN CA, LYIPLTMU;6 4231#0),R3(P CM  ROZE. LT .IFE IDIV;D  1$4T BL  ROZEF INIFI; 5 TGFL EQB  LECA STOE IM;T  XPTEFL STT: 1$ 3O SIFT XI;E  EXTGFL EQB 0 ,R)+R1(S BI  R0+,1)(R ISB 0 ,R)+R1(S BI  ROZER FOT ES;T R0+,1)(R OVM 1 ,RR3 OVM: G3LT�F���������������������� � GHOUHR TLLFA; 3 TGFL BR  ;T ENONXP ETEDAUP;P EXLT,FR0 DDA E UT5 07.31.72 WORD2D: ; 07.31.72 MOV R3,-(R5) ;STORE THE DOUBLEWORD 07.31.72 MOV R2,-(R5) ; INTEGER WHERE IT BELONGS 07.31.72 ; 07.31.72 WORD2E: ; 07.31.72 MOV (SP)+,R5 6;NO-NEW READ NOT NEEDED NXTB10: ;LOOP HERE FOR SUCCESSIVE SECTOR READS DEC SECTCT ;ANY MORE SECTORS IN MODULE? BLT NXTB90 ;NO MORE: GO INIT FOR NEXT MODULE ;YES - READ NEXT SECTOR--- MOV #OBJLST,-(SP) ;DISC READ LIST EMT DISCIO ;****READ NEXT SECTOR**** TST OBJERR ;READ ERROR? BNE LDER01 ;YES INC OBJSEC ;BUMP SECTOR # FOR NEXT TIME 7 MOV #CDILST,-(SP) JSR PC,DISCIO ; READ CORE DIRECTORY IMAGE INTO CORE DIR. IPLX30: CMP #1.,CDILST ; I/O COMPLETE? BNE IPLX30 ; NO-KEEP CHECKING MOVB #1.,CDIFCN ; RESET FCN IN LIST BACK TO WRITE CLRB $TKFLF ; SET UP TO READ TASK TABLE MOV #$TKFLS,-(SP) JSR PC,DISCIO ; READ TASK TABLE IPLX40: CMP #1.,$TKFLS ; I/O COMPLETE? BNE IPLX40 MOVB OLBS ATS IRESUE AK;M   STSTAB  IXAD RRETOES;R IXADCR+,P)(S OVM: 2$ 2L UL NR,ROER ; A ORRRE L UL-NON NIFH NCRA;B  2$2E BN  RMTEE ATLUVA;E   RMTE  ALIMEC DTOT SE;X DIRA,C0.#1 OVM X DIRAT ENRRCUK ACST;) SP-(X,DIRACV MO  KSANBLD AN" "ES ASYP BS,YE;  B TNGE  NO ; 3 TGFL NEB ? NTNEPOEX;5 ,R.EET#L MPC: 1$ 2D UNRO AMETIT RSFIF IOPLO; $ 10 MIB T IRKMA, ES;Y  OTTDFL OMC O N;  1$2E BN  T?INPOL MACIDE;5 ,ROT.DCH#P CM $:20 REMOR FOY TR; $ 10 BR9 ;RESTORE 07.31.72 MOV (SP)+,R4 ; THE 07.31.72 MOV (SP)+,R1 ; GENERAL 07.31.72 MOV (SP)+,R0 ; REGISTERS 07.31.72 MOV #2,R3 ;MAKE FLT2/4 THINK IT'S FLT2 FORMAT 07.31.72 BR FF2 ;AND WE'RE DONE 08.03.72 ; : SUB #128.,BLKPTR ;SHIFT POINTER BACK TO TOP SECTOR AREA .PAGE NXTB30: ;PREPARE TO FIND NEXT BLOCK START MOV BLKPTR,R0 MOV #OBJBK2,R1 ;TOP OF LOWER AREA SUB R0,R1 ;# BYTES REMAINING IN TOP SECTOR BR NXTB44 ;AVOID RESET "PTR1.0" IN CASE OF BLOCK BOUNDARY ; SEARCH FOR A "1-0" SEQUENCE TO START NEXT BLOCK NXTB40: MOV #ONEZRO,PTR1.0 ;INIT PTR TO [1] NXTB44: DEC R1 ;END OF TOP ;#1,$TKFLF ; SET FUNCTION TO A WRITE FOR OTHERS ******** JSR PC,SYSINI ; INIT. CORE TASKS ; ; SET UP INIDSC IN TASK TABLE MOV #$INITD,R0 ; TASK NUMBER MOVB #1,TPRTY(R0) ; RUN AT PRIORITY 1 ASL R0 MOV #INIDSC,HEADER(R0) ; TASK'S HEADER ADDRESS CMP #$INITD,TASKS BLE IPLX60 MOV #$INITD,TASKS IPLX60 = . .ENDC CLR R0 CLR R1  D)OO GREE'(WR TEINPOR HA CALTINI IARLE;C  P)(S LRC N IOCTRA FNGSIESOCPRF INTMEREEC;D XPTEFLT,DOLTFD AD $:13 2)(R-C AD  2)(R-C AD  RYAR CLEPPRI; ) R2-( DCA N IDD;A 2)(R,-R5 DDA R FEUF BOFD ENO TNTOI;P  R24,RV MO  TELUSOABE AK;M R50,G.DI#B SU  10 *ATTHE AK MN,IOCTREOR;C  LSTGFL LLCA  5BYY PLTIUL;M  50TMFL LLCA $:12 3$1R B B NU SHE TOR FTESAENMPCO, NO; P EXLTFC IN  ES Y;  2$1Q BE  N?IOATICPLTIUL MOR FOMRO, ICERUM;N 3)(R0,0074#1 ITB O N; = 07.31.72 FLTERR: ; 07.31.72 ERROR A  ; NULL, FLAG ERROR FF2: ; 08.03.72 2$: MOV R3,R2  ;GET A WORKING COUNT MOV #FLTBUF,R1 ;POINT TO FLOATING POINT BUFFER FF3: ; 08.03.72 3$: MOV (R1)+,(R4) ;MOVE IN NEXT NUMBER STCODE   ;PLACE ON CODE ROLL SOB R2,>BLOCK YET? BGE NXTB46 ;NOT YET - KEEP GOING MOV R0,BLKPTR ;UPDATE FOR PROPER PLACE IN NEW BLOCK BR NXTB10 ;...AND GO MOVE NEXT BLOCK UP NXTB46: CMPB (R0)+,@PTR1.0 ;IS NEXT BYTE A MATCH FOR SEQUENCE? BNE NXTB40 ;NO MATCH - KEEP LOOKING INC PTR1.0 ;MATCH: BUMP TO NEXT BYTE IN CODE BIT #1,PTR1.0 ;HAVE BOTH [1] AND [0] BEEN TESTED? BNE NXTB44 ;NO - CH? CLR R2 CLR R3 CLR R4 CLR R5 JMP DSPTCH ; FINISHED WITH IPL-EXECUTE ROS ; ; ; ; .IFNZ OVRLAY ENDDYN = . - 2 ; TOP ADDRESS OF DYNAMIC CORE POOL ; SSTACK = 3000 ; WORD BEFORE THE STACK ******** ; .ENDC ; ; DYNSIZ: .WORD ENDDYN-SSTACK ; MAX # BYTES AVAIL. FOR DYN. AREA. ******** .END ��������������������������������������������  0$2Q BE  C?RIMENU;) R5L(TBCTM,NUT.#C TBBI $:11 ERCTRAHA CXTNEE THT GE;  R CHETG: 0$ 1R HA CSSPABYD ANN IG SET SS,YE;N SGLT,F000010#V MO  NO ; $ 11 NEB ? -" ";5 ,RUB.SCH#P CM  RENOIGD ANS ASYP BS,YE ; $ 10 EQB ? +" "; R5D,ADH.#C MPC T ENONXP ERYNABIT NI;I EXTBFL.,65#V MO  NEDOL TIUNP OO;L  1$ HIB G BELT#F1,RP CM  ESBLIAAR VITIN; ) R1-( LRC: 1$ R14,RV MO  EAARE AV SND AERFFBUO T; R4V,SALT#F OVM S ERNTOI POFY OP CNTIEENNVCO;3 ,RUFTBFL#V MO FF3 ;LOOP ON WORD COUNT 08.03.72 JMP FF1 ;CONTINUE 08.03.72 ENTSEC DPURE FLTPNT: .WORD FLTG2W, FLTG4W XITSEC .IF NDF XEDFPT GENEDT FPT,,1  ;FLOATING POINT TRUNCATION .ENDC XITOVR ������������������������FLTG4W: INC FLTWDC  ;FLOATING POINT NUMBER EVALUATOR FLTG2W: INC FLTWDC FLTG1W: ENTOVR 5 SAVREG   ;SAVE REGISTERS MOV CHRPNT,-(SP) ;STACK CURRENT CHARACTER POINTER ECK FOR [0] .PAGE ; YEA! A [1-0] SEQUENCE HAS BEEN FOUND: NOW PROCESS BLOCK MOVB (R0)+,R1 ;BLOCK'S BYTE COUNT TSTB (R0)+ ;UPPER BYTE OF BC MUST BE ZERO BNE LDER02 MOV R0,R5 ;SAVE POINTER TO FIRST DATA BYTE ; NOW WANT TO COMPUTE CHECKSUM TO VERIFY CORRECT READ: MOV R1,R2 ;INIT CHECKSUM, WHICH INCLUDES BC SUB #4,R1 ;REDUCE BC TO ELIM "1-0" AND BC WORDS ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������