B &vLI(!( z& #(f d\ (M K &v7 F F>v 8 8K <.<2v B-:  - v .bH@bh .B ',5 .e ; PDP-11 LINKER, LINK-11 V004A ; COPYRIGHT 1970,1971 DIGITAL EQUIPMENT CORPORATION .TITLE LINK11 ; ; ; ; DEFINE REGISTERS ; R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 ; ; DEFINE PARAMETERS ; ; ASCII CHARACTERS CR=15 LF=12 VT=13 TAB=11 FF=14   ;FORM FEED LANG=74   ;< RANG=76   ;> CRLF=005015 ; ; SYMBOL TABLE PARAMETERS ; BPSYM=10.  ;# OF BYTES PER SYMBOL BASE=8.   ;DISTANCE TO BASE OF A SECTION FLAGS=nn"lvLI~n #f dK\7 F FK>2 B-:  -H@~bh B ',5 ee e "w@7lB&(~^e, "7lee "p7xwv-XTrw t  ٦*٦ x4Z&~־ &E&& &77 77,7 ;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 CALL 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 SMLFI e e ".w@7lB&e, S."7lee "p7. xwv-XTrw t  &.F xZ&   .l&E&v& &7 v.7 77,77 F7777.7777777777..777 4   ;DISTANCE TO FLAGS OF AN ENTRY VALR=6   ;DISTANCE TO RELOCATABLE VALUE OF AN ENTRY NAME2=2   ;DISTANCE TO 2ND WORD ON AN ENTRY OBJMN=0   ;OBJECT MODULE NAME SECTN=1   ;SECTION NAME SYMN=4   ;SYMBOL ENTRY ABSREL=40  ;ABS/REL BIT (0/1) UNDEF=10  ;UNDEFINED/DEFINED (0/1) INTGLB=100  ;INTERNAL/GLOBAL (0/1) MONCND=1  ;MONITOR ROUTINE CANDIDATE ; ; TXT MODIFICATION COMMANDS ; TCMD1=1   ;INTERNAL RELOCATION TCMD2=2 7 F77777777777777\~N7777 777777777  **!,w~ƿ B!/ z%Z n/%Z \L7FC? B>h/   ~>V#w : 8 PHw @!ew n7n7 h+%5  EE w~UH0 0 e  L+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 SMLTST:    ;TEST MCALL ARGUMENTS 1$: GSARG   ;FETCH NEXT ARGUMENT BEQ 3$  ; EXIT IF THROUGH MSRCH   ;OK, TEST FOR MACROS BNE 2$  ; FOUND, NOT INTERESTED INSERT   ;INSERT WITH ZERO POINTER INC SMLCNT  ;BUMP COUNT 2$ 7 77777U.7777>4">&.*L !GL &o.Pw B!/0&.v z%Z n$/' "$.%Z \L7FC? B>h.*/   V#w : 8 *.v hPHw   ;GLOBAL RELOCATION TCMD3=3   ;INTERNAL DISPLACED TCMD4=4   ;GLOBAL DISPLACED TCMD5=5   ;GLOBAL ADDITIVE TCMD6=6   ;GLOBAL ADDITIVE DISPLACED TCMD7=9.  ;GENERATE LIMITS ; ; PC MODIFICATION COMMANDS ; PCMD1=7   ;SET PC PCMD2=8.   ;MODIFY PC ; MISCELLANEOUS SPLEN=100.  ;STACK LENGTH ALODSZ=320  ;ABSOLUTE LOADER SIZE HGHMEM=16384.  ;HIGH MEMADR +1 ; ; MONITOR IO COMMANDS ; INIT=6 OPEN=16 OPENI=4 OPENO=2 RSTRT=41 WU0 HAw7:-w77 e 7 a~. " µ 0l0µ 0 0 2 C `t~edE^ \~e?RE?L7 JD`>8E2 0E?&7 $737-"m  7w-1~ N*7J0L7N6N7mT0L7xX6N7mZ8: CRFDEF   ;CREF IT BR 1$ 3$: MOV SMLCNT,R0 ;FINISHED, COUNT TO R0 RETURN ENTSEC IMPPAS SMLCNT: .BLKW   ;MCALL HIT COUNT XITSEC .IFT ENTSEC MIXED .WORD 0 SMLLNK: .WORD 0 .RAD50 /SML/ .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, @!ev h.w n7n7 h+%5  i.4EE UH0 .Z0 e U0 HA.w7:-w7.7 e 7 a e." µ 0l.0µ 0 0 2 .C `t~edE^ \e?R.>E?L7 AIT=1 READ=4 WRITE=2 CLOSE=17 RELEAS=7 TRAPV=41 CSI1=56 CSI2=57 FMS=41 CONV=42 DELET=21 TRAN=10 STAT=13 ; ; MONITOR IO DATA MODES ; FASC=0 FBIN=1 UFBIN=3 ; ; MONITOR IO ERROR BITS ; EOF=100 ; ; BLOCK TYPE COMMANDS ; GSDBLK=1 TXTBLK=3 RLDBLK=4 ISDBLK=5 MODEND=6 GSDEND=2 ; ; JUMP TABLE MAX INDICES. ; TMAX=3  ;SEE LINK57 GSDMAX=4 ;SEE GGSD05 PMAX=4  ;SEE SCMDT CMDMAX = 15. ~d`-jAwu/f`۔`>@ɥ<>@B¥, ~¥%($ %7 7De P zzÄö\HP~0bj.@_ @ɥw ,  ( .6F7 2-,(.)B~T !7J 7֋5w%, .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 STARTING 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 PRECISIJD`>8E2 0.dE?&7 $737-".m  7w-. 1.*70L76N$.7m0L7x6N7mf ."Zd`j&.Hwu/f@ ; SEE RCMDT ERMAX=3  ;SEE ERTAB ; COMD SIZE (BYTES) COMDSZ=20. IND=6  ;INDEX INTO FILE BLOCK ; MISCELLANEOUS BUF=100. ;50 WORDS FOR CSI BUFFS. DETACH=40 ;DETACH BIT FOR HEADERS MXDVSZ=1000. ;ASSUME 500 WORDS MAX SIZE FOR   ; DRIVER AND BUFFER. OCTOBI=4 ;OCTAL TO BINARY CODE DETOBI=2 ;DECIMAL TO BINARY CODE RATOBI=0 ;RADIX50 TO BINARY CODE DOTBLK=127400 ;RADIX50 FOR ". " BLANKS=0 ;RADIX50 FOR " " INC=256. ;THIS SOURCE OF THE LINKER CAN Bb7f݃~vz& &,w2e.Ecp!" e Qewe~c;ee TEeE E!# e ee=ee EeE (!~f77  ɵ1a( wT(4Z xQ&~4!e   P {-ON 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 R4,#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 .nɥ<>@B¥>., ¥5.%($ %Q.7 7De P. z H0bj.@F   H.,_ @ɥw ,.R  ( .6F7 2-.x,(.) !7 .E ;ASSEMBLED INTO TWO UNIQUE VERSIONS: ;1. IF THE SYMBOL "NOSEG" IS DEFINED, THE ; RESULTING OBJECT MODULE IS THE FULL ; LINKER. ; ************************************* ;2. IF THE SYMBOL "NOSEG" IS NOT DEFINED, ; THE RESULTING PACKAGE IS A LINKER ; THAT UTILIZES CORE OVERLAYS FROM DISK ; TO CONSERVE ON SYMBOL TABLE SPACE. ; ; THIS VERSION OF THE LINKER ; UTILIZES CORE OVERLAYS FROM DISK ; TO CONSERVE ON SYMBOL TABLE SPACE. ; ;THE OVERLAY VE.&f75e 7 ~Vѕ ѕ &e 7 j݇!q744&&(ZMODU~LEѕ <ѕ ѕ ,ƈѕ<ѕ>ѕ ѕ Bѕ ѕ :~Ff7 @wJɥ<> $ "7&B@s%B%m% |%\)w> ~r3@7^ɥww ;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,1 ;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)+,( ! .7֋5w%,. b7f   ( L.z & &,w  B.62e.E.\cp!" e Qewec .;ee TEeE6. E!# e ee=.ee RSION OF THE LINKER IS SELF CONTAINED ;IN THAT IT IS ITS OWN OVERLAY BUILDER. ; ;WHEN THE SYMBOL "OVRBLD" IS DEFINED, THE ;RESULTING OBJECT MODULE IS THE BUILDER. ; ;WHEN THE SYMBOL "OVRBLD" IS NOT DEFINED, THE ;RESULTING OBJECT MODULE IS THE RESIDENT LINKER. ; ;WHEN LINKED, THE BUILDER'S TOP SHOULD BE XXX460. ;EXECUTING THE BUILDER'S LOAD MODULE ;VIA THE MONITOR COMMAND RUN ;CAUSES THE CREATION OF THE ;CONTIGUOUS FILE OF OVERLAYS ;(LINK11.OVR) ON DISK WITH LOGIN UIC. ; ;WHEN LINKED, THE Rf& `>٦rڦ  R,~67&B@%9%/% %+wee nh{_  ~w>~ȔwPo<(@0.eՔ &f"w7w% P z~t~~&"wF F7٦ ٦*٦w7 7 7 7 77ZR~ɷP& !w 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 .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 !EeE (.77+.  ɵ1a( .@ wT(Z   fa lu lxQ pq.pZL !! ZL  !&.e   P {B  $B .-.&  75"ESIDENT LINKER'S TOP SHOULD ALSO BE XXX460. ;AT RUN TIME, THE RESIDENT LINKER ;REQUIRES THE OVERLAYS TO BE ON DISK ;WITH FILE NAME LINK11.OVR AND LOGIN OR [1,1]UIC. ; .CSECT .IFDF NOSEG OVRBLD=1   ;PORTIONS OF L1=0    ;BUILD SECTION L2=0    ;ARE NEEDED. L3=0    ;SET ALL SYMBOLS L4=0 L5=0    ;USED IN ADJUSTING L6=0 L7=0    ;ADDRESSES TO WORK L8=0 L9=0    ;IN OVERLAY BEGO01=0   ;ENVIRONMENT BEGO02=0   ;TO 0. BEGO03=0 BEGO04=0 BEGO05=0 BEGO06=0 BEG#`d-6 XNeP M Q$B w . ^ZL~ʘ/f7>B!6e0^> %F -X07 ejd~ʎ7 >>@^ dsc>ed:N wL. " ~? nڰ&e 0w wvw @` $ ;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 /MACRO / .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 MIX%e  . 7  ѕ ѕ &  & . e 7 j݇ !qz  .. 7R Z" R     -.T MODULEѕ <ѕ ѕ   4.z  ,B R &!ѕ<ѕ>ѕ   B R &!. ѕ Bѕ ѕ . &O07=0 BEGO08=0 BEGO09=0 BEGOVR=0 .ENDC ; ;*****OVERLAY PROCEDURES***** ; ;THE NUMBER OF BYTES ALLOCATED FOR THE ;OVERLAY AREA OVRSIZ=1000 ;512 DECIMAL BYTES ;THE NUMBER OF WORDS ALLOCATED FOR THE ;OVERLAY AREA OVRWRD=400 ;256 DECIMAL WORDS ; ;IF THE SYMBOL "OVRBLD" IS DEFINED (VIA A ;PARAMETER ASSIGNMENT) THE RESULTING OBJECT ;MODULE WILL CONSIST OF: ;  OVERLAY BUILDER ;  OVERLAY #1 ;  OVERLAY #2 ;  . ;  . ;  . ;  OVERLAY #N ;  OVERLAY AREA ;  RESIDENT LINK-'~~˾  F`w`dw`bw`bw`\w``w`N  %(7 7 h>`  t^ ^~  >7 7(B!PedJB X@Fw w w w w   f~nl.w  X?   / T T  /  V 7  80 ~̄ w%Z7 7  %fB   F `  f e 7   w&$  (ED .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 @(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 )f7 @wJ. ɥ<> $ "7&. B@s%B%m% |%.8 \)w r3 .^ @7^ɥww! (!. !f& `!1.   R7&w . B@%9%/% %U. *11 ; ;THE RUN TIME TRANSFER ADDRESS WILL BE ;"STARTB" IN THE OVERLAY BUILDER ; ;IF THE SYMBOL "OVRBLD" IS NOT DEFINED ;THE RESULTING OBJECT MODULE WILL ;CONSIST OF: ;  OVERLAY AREA ;  RESIDENT LINK-11 ; ;THE RUN TIME TRANSFER ADDRESS WILL ;BE "LNK" IN RESIDENT LINK-11 ; ; ; ;PARAMETER ASSIGNMENTS WTCMD=1    ;.WAIT OPN=16    ;.OPEN DLT=21    ;.DELETE RLS=7    ;.RELEASE R6=%6    ;REGISTER 6 R7=%7    ;REGISTER 7 ERR9=1640   ;NOT+ 7 7 F ~^ ` Z f e  w l w d  wVTBLODTRTAtCCl6 X jf")~F > Z f N`  ( jf"  Zwr  w: h6 > ^  >(~Naf` `>> 7  e% `>`  > ܺ > $n7 7 %,%~e7 ׭ 7h 7d x ` T e^ 7j   ^ 7 Z d P , 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 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-+wee nV. h{_  ~w/.B wPo<(@.h 0.eՔ &f"w. 7w% P z   i" $ & ( .  "wF F7}  . w7 . 7 7 7 77.. ENOUGH ROOM AT BUILD TIME    ;TO ALLOCATE CONTIGUOUS FILE ERR8=2207   ;EOD OR DEVICE ERROR ON OUTPUT    ;.TRAN OR DEVICE ERROR ON    ;INPUT .TRAN ; .IFDF OVRBLD .IFNDF NOSEG .TITLE LINKOB ; ;THE FOLLOWING TABLE CONTAINS THE ;STARTING CORE ADDRESS OF EACH OVERLAY ;IN THE ORDER OF ASCENDING LOCATIONS. ;A 0 WORD TERMINATES THE ENTRIES. ;AS NEW OVERLAYS ARE CREATED THEIR ;POINTERS MUST BE ADDED TO THE END ;OF THE TABLE AND THE OVERLAY ITSELF ;PUT IN THE SAME POSITI/ww 7    7 "~> A     5> r ^j ^ >`>>`  $n7 7 %7$ 7$ 6~Ћ7 ׭ $w f N`  J 7D `n `>>Z $n %`>`> >4 eu~.7# @ @ R % $$Ћ7 ׭ w h jf"  wVwTW"(j\ WA-~f" " i L f"0,(R0)+ MOV (R1)+,(R0) NEG (R0) ADD (R1),(R0) ASR (R0)+ .TRAN #TRNLNK,#TRNBLI .WAIT #TRNLNK BIT #140000,(R0) BEQ 3$ SERROR 207 3$: MOV R1,OVRSIC 4$: MOV (SP)+,R1 MOV (SP)+,R0 5$: TST R0 RETURN ENTSEC MIXED TRNBLI: .BLKW .BLKW .BLKW .WORD 4 .WORD 0 XITSEC ENTSEC MIXED OVRSIC: .WORD 0  ;SECTOR IN CORE OVRSIP: .WORD 0  ;SECTOR IN PROGRESS OVRADR: .WORD 0  ;OVERLAY ADDRESS OVRFLG: .W1& ZRP(& !w`dY (.L -6 XNeP }.r M Q$B w .a /. ^Z*/f7*$. B!6e0^ % . F -X07 I. ejd7 0w &0~.0 @^ ds2ON ;RELATIVE TO THE OTHER OVERLAYS. ; OVRTAB: .WORD BEGO01  ;OVERLAY #1 .WORD BEGO02  ;OVERLAY #2 .WORD BEGO03  ;OVERLAY #3 .WORD BEGO04  ;OVERLAY #4 .WORD BEGO05  ;OVERLAY #5 .WORD BEGO06  ;OVERLAY #6 .WORD BEGO07  ;OVERLAY #7 .WORD BEGO08  ;OVERLAY #8 .WORD BEGO09  ;OVERLAY #9 .WORD 0 ; ;OVERLAY DEVICE OUTPUT TRAN BLOCK ; OVRTBO: .WORD 0  ;DEVICE BLOCK NUMBER OVROSA: .WORD 0  ;MEMORY START ADDRESS .WORD OVRWRD  ;WORD COUNT OV3| ZJ .  9 B h$ EBUh&ff~- wf@wh w0ww(<pz7wpVڷR~ѶeH.ԞԮԄՠjBҰ f\nHpּV֪6Tr~(4@LXz؆ؒ؞تض؂ԔV~ *W"W"Z&ER@R` > x xt^p p^h\>7 L~7`> %4ORD 0  ;SET WHEN OVRBLD COMPLETED TRNSBN: .WORD 0  ;TRAN STARTING BLOCK ADDRESS ENTSEC MIXED OVRLEN= 0 OVRTBL: XXX= 0 .RADIX 10 .REPT NUMOVR XXX= XXX+1 .IRP N,<\XXX> ENTSEC OVR'N .IIF GT .-OVR'N'B-OVRLEN, OVRLEN=.-OVR'N'B ENTSEC MIXED .WORD OVR'N'B .ENDM .ENDR .RADIX 8 ENTSEC OVRBLD OVRXCT= .-OVRLEN  ;START OF EXECUTION AREA .GLOBL OVRXCT ENTSEC MIXED .WORD OVRBLD OVRBKN: .BLKW NUMOVR+1  ;PHYSICAL BLOCK POINTE5- .V ced:N w} .| . " ?. . &e   . 0w wvw . @`  . F`w`dw`bw`bw`\w``w`N -.: %(7 7 hJ.`` @ 6RERR: .WORD 2  ;FUNCTION (WRITE) .WORD 0  ;NUMBER OF WORDS NOT TRAN'D. ; ;RESTART ADDRESS OF OVERLAY BUILDER--- ;RELEASE OVERLAY DEVICE IF STILL INIT'D. AGAIN: TST OVRLB  ;IS DATA SET INIT'D BEQ STARTB  ;NO MOV #OVRLB,-(R6) ;YES--RELEASE IT EMT RLS ; ;STARTING ADDRESS OF OVERLAY BUILDER STARTB: MOV #OVRTAB,R6 ;INITIALIZE THE STACK START=STARTB  ;SET UP TRANSFER ADRESS ;SET UP RESTART ADDRESS MOV #AGAIN,-(R6) MOV #2,-(R6) 7@7 07 6.$ e `۷>ER>٦7s 7[~ $   7  nh   V' ſe7  hӃɥwPwP o~vӆBCmeEj P zӠ$:NnӠ$DDm D  Dd DQ$*~F   Dd 7 DQ$*FD*FQ$Dd 7DQ$*FDdDQ$6J7DDd7 ɥRS XITSEC .ENDC .SBTTL FIN ENTSEC IMPURE  ;CLOSE OUT IMPURE SECTORS ENTSEC IMPPAS ENTSEC IMPLIN IMPTOP: ENTSEC XCTPRG ENTSEC XCTPAS ENTSEC XCTLIN RETURN   ;RETURN FROM ANY OF THE ABOVE ENTSEC SWTSEC SWTTOP: ENTSEC EDTSEC EDTTOP: ENTSEC CNDSEC CNDTOP:    ;TOP OF CONDITIONAL ROLL XITSEC   ;BE NEAT .END START Et^ @  m U ^ Q. h7 7(B!Pedm h`.JB X@Fw ..w w w w   f..w  X?  P ." */ T T  **(*/.H/  V 7  8rFEMT 41 MOV #OVRLB,R1 ;LINK BLOCK CLR @R1  ;FOR ^C BEGIN MOV #OVRFB,R2 ;FILE BLOCK MOV #OVRTBO,R3 ;OUTPUT TRAN BLOCK ;.INIT OVERLAY DEVICE MOV R1,-(R6) ;LINK BLOCK EMT INIT ;OBTAIN DEVICE STATUS MOV R1,-(R6) ;LINK BLOCK EMT 13 CMP (R6)+,(R6)+ ;CORRECT STACK.    ;PHYSICAL BLOCK SIZE MOV @R6,R4  ;(IN WORDS) OF OVERLAY DEVICE MOV #OVRWRD,-(R6) JSR R7,DIVIDE MOV (R6)+,R5 ;NUMBER OF PHYSICAL    ;BLOCKS PER OVERLAY CLR -(R6) MOG~fɥH  f e P" f&f&~   NΕ w$~ Cå å$ נA   e`  v~  Ëנ~Ve ee e ѐ  v@(  DZmfh ->8.7 ,e~Շe #0-6]7 #0- 6ee""""""" """""""DDDDDDD@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDLADDB CvLF^}vLF4dvLFK[$DnffffDDDDDDDDDDDDDDDDDDDDDDDDDDDDDLa ͋,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 & I.n0! w%Z7 7  %fB  !+.   2`  f e%2. 7   w&$  .7 7  ` Z f '.e  w l w d ., wVTPBLODTR"TACC杘" P" $.R6 X jf"F > Z f.x N`  ( JV #OVRTAB,R0 BLDR01: TST (R0)+  ;TOP OF STACK BEQ BLDR02  ;CONTAINS TOTAL ADD R5,@R6  ;NUMBER OF PHYSICAL BR BLDR01  ;BLOCKS REQUIRED. BLDR02: MOV #64.,-(R6) ;DIVIDE PHYSICAL BLOCK MOV R4,-(R6) ;SIZE BY 64 (DECIMAL) JSR R7,DIVIDE ;QUOTIENT ON STACK. MOV (R6)+,R0 ;NUMBER OF 64'S IN    ;PHYSICAL BLOCK MOV @R6,R4  ;TOTAL NUMBER OF    ;PHYSICAL BLOCKS REQUIRED BLDR03: DEC R0 BEQ BLDR08  ;TOTAL NUMBER OF ADD R4K ,e ~Fև,e&e 4ze re n4Re 7!N  #2-7!s~<e 4$e  !!!!! @` 7 B & V LINK-11 V004A PA~6SS 1 PASS 2 # Xlw l!D7 V(7 ~רVwl& ~tOVM E OD CEDATEREN GNY AARLE;C  OLDRCO APZ T ULES RET;S  R30,RV MO  TEUAALEV; P EXAL ALC ) SP-(+,1)(R OVM L BOYM SVEERESPR;) SP-(+,1)(R OVM 1 ,ROLMBSY#V MO  ASMMCOY ANS ASYP;B   RGTATS  ORRR E;  ERYPNT EQB L BOYM SHE TET;G  RGSAGL ALC E OD MONSIESPREXT ES;T    E:YPNT EXYPNT BR  RSTEMILIDEG ARE OVEM;R  RGMARL ALC: 2$ ND EOT NIFP OO;L  1$ NEB R TEACARCHT EX NHE TET;G   HRTCGE  NTOU CMPBU; 3 RC IN $: 1S YE ; $ 2Q BE  ONTILEMPCOR FOMjf"  1. Zwr  w: h6 F (     ^ . haf T h $. 7  e% "&.   $n.D7 7 %,%e7 ׭ 7N,@R6  ;64 (DECIMAL) WORD BLOCKS BR BLDR03  ;REQUIRED ON TOP OF    ;STACK ;DELETE FILE IF ALREADY EXISTING BLDR08: MOV #BLDR04,-4(R2) ;ERROR RETURN MOV R2,-(R6) ;FILE BLOCK MOV R1,-(R6) ;LINK BLOCK EMT DLT BLDR04: CLR -4(R2)  ;ERRORS TO MONITOR ;ALLOCATE THE NECESSARY SPACE FOR ONE ;CONTIGUOUS FILE. MOV R2,-(R6) ;FILE BLOCK MOV R1,-(R6) ;LINK BLOCK EMT 15 TST (R6)+ BLT BLDR09  ;SPACE AVAILABLE? CLR -(R6)  ;NO. MOV #ERR9,-(R6) ;FATALOl b&\PlwlDlwK~&`8lwT,lwJ lw>lw2&Ew7wlwlwlw~lwlwEwlwl&**&44@$-R& ~ vLElMExQM^f\Mfs~ل4>@T ES TCKUI;Q  R5 STT L UL NIFO ER Z;  EXYPNT EQB T ENUMRG ATELASO;I  RGMAGL ALC L BOYM SNOD IORRR E;  ERYPNT EQB G ARGS LLCA  RSTEACARCHF OERMBNU;   : HRNC EXYPNT BR  ERMBNUT SE;3 ,R+2NTBCMS OVM G INSSMIF IORRR;E  ERYPNT 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 ALCQ.jh 7d x ` T e^ 7j  . ^ 7 Z d P ww 7.    7  A .    5 r j } ^k .^ h n h &.( $n7 7 %7$ 7$ Ћ7.N ׭ $w f N`  .tJ 7D n R ERROR. BR BLDR10 ; ;DETERMINE THE PHYSICAL STARTING BLOCK ;OF THE CONTIGUOUS FILE AND PLACE IT ;IN THE 1ST WORD OF THE OUTPUT TRAN BLOCK. BLDR09: MOV R2,-(R6) ;FILE BLOCK CLR -(R6) MOV R1,-(R6) ;LINK BLOCK EMT 14  ;.LOOK MOV (R6)+,@R3 ;STARTING BLOCK. CMP (R6)+,(R6)+ ;CORRECT STACK ;THE ONE CONTIGUOUS FILE WILL CONTAIN ;N OVERLAYS WITH EACH BEGINNING AT THE ;START OF A PHYSICAL BLOCK ON THE DEVICE ; MOV #OVRTAB,R0 BLDR07: MOV (R0)+,OVROSA ;MEMORY START ADDSD~0?n0~~)~/E CC TRANSFER ADDRESS: LOW LIMIT: HIGH LIMIT: ~n  8$ EQB L XCH.#C5,RP CM $: 7$ 6T BG  50TRGE $:61 MTCIWL ALC $ 61 NEB 4 RT TS $: 6M SYETS: 5$ NTNCCO ECD T IMWC LLCA  NTNCCO ECD 5 RG NE  R5D,UPOLRV MO  5$ EQB 4 ,RR0 OVM L ROMADN CAS $ 7Q BE  YMTSGE $: 4R CHETS T PNHR,CUFNBLI#V MO $: 3C ND.E  REMOR FOT ES TS,YE; T TSMLSL ALC O N;  3$ EQB ? EDSTNE, ES;Y R0C,SMFL#D ITB O N;  3$ EQB ? ROAC MEMSTSYN ;I  NTLCSM STT L SMXF NDF .I  $:63 RNTURE $: 2$ 3L BP  R3 ECD 3 UZ $n. %> 4 e.7# @ @ R % $.$Ћ7 ׭ w h jf. "  wVwTW"(j\ W:.2Af" " i L .Xf"| ZJ .  .~9 B h$ EU~&"&~TVRESS BEQ BLDR05 ;TRAN OUT AN OVERLAY. ; MOV R3,-(R6) ;TRAN BLOCK MOV R1,-(R6) ;LINK BLOCK EMT 10 ;WAIT FOR COMPLETION OF TRANSFER ; MOV R1,-(R6) ;LINK BLOCK EMT WTCMD ;CHECK FOR ERROR ON TRANSFER ; BIT #140000,OVRERR BEQ BLDR06 ;ERROR ON TRANSFER MOV OVRERR,-(R6) ;PUSH STATUS BYTE BIC #377,@R6 ;INTO LOW INFO BYTE SWAB @R6  ;AND CLEAR THE REST. MOV #ERR8,-(R6) ;ERROR CODE BLDR10: IOT EMT 60  ;RETURN TO MONITORW8~~^G~NRC DE  3$ NEB E LUVAM,ND#E MPC 3 RC IN  3$6Q BE  R0C,MAFL#D ITB I CLETSL ALC G LACF,LMDC.#L ISB $ 2E BN  INTLGE LLCA $: 13 RR CL  6R OVNTE : MTROP VRTOXI  ITEXD ANE RE TINE ITWR; T IMWC MPJ I CIASO TRTVEON;C R50,G.DI#D AD  ERMBNUT GE; 5 ,R)+SP(V MO $:41 SEUREC RO, N;  0$4L ALC ? ROZEO TWNDO; $ 41 EQB R BEUM NEW NET;S  R10,RV MO  ERNDAIEM RCKTA;S P)(S,-R1 OVM 0 ,RR3 IVD 0 RR CL  ERRTVEON CERMBNUO CRMAY.h&f- w. @wh w0ww(  .pz7w9.pRe8n%"8&(n@<R0@2r|\.R0@  2r|\_PBz.B z rdN<V`.Z BLDR06: ADD R5,@R3  ;CHANGE BLOCK NUMBER    ;IN TRAN BLOCK FOR BR BLDR07  ;NEXT OVERLAY TRANSFER ; ;ALL OVERLAYS HAVE BEEN TRAN'D OUT. ; BLDR05: MOV R1,-(R6) ;RELEASE THE EMT RLS  ;DATA SET ; ;RETURN TO THE MONITOR EMT 60 ;*****OVERLAYS BEGIN HERE***** ; ; OVERLAY #1 L1=BEGOVR-BEGO01  ;COMPUTE OFFSET FROM    ;RUN TIME OVERLAY AREA BEGO01: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP START1  ;ENTRY1 .ENDC ; [~N~ , ********** HG~>UNDEFINED REFERENCES LOAD MAP SECTION ENTRY ADDRESS SIZE ~ ,  ?LOAD MODULE EOM ;   : 0$ 4 C ND.E  RNTURE; $ 4R B 5 ,R)+SP(V MO  GSREE ORSTRE;3 ,R)+SP(V MO  MTCIWL ALC 5 RR CL  $" "TERI;W  MTCIWL ALC 5 ,ROL.DCH#V MO  IISC ATOT ERNVCO; $ 40 LLCA  ALIMEC DITE AK;M  R3.,10#V MO  R3D AN;) SP-(3,RV MO  ARCHT ENRRCUK ACST;) SP-(5,RV MO  4. 6ATT ARST;1 ,R1>4-<6^D#D AD  ITH TCFE;1 ,RASGBLS OVM T UNCOP UM BL,BOYM SEDATEREN;G  ASGBLS NCI: 0$ 3B LSEDXF NDF .I  5$ BR  R5+,P)(S OVM S EG RRETOES;R R3+,P)(S OVM T IMWC LL]N  <V9x`~.`~  m $0<H&j . $ 0 <H&j .\hW"W"Z&E  \h.R@R  (x&([  xt^p ph  ^e .^ ; CREATE COMD ; ; INIT THE OUTPUT DATA SET TO HSP. ; ; ; INITIALIZE LOAD MODULE DATA SET ; START1: TST LODDEV+6-L1 ;ANY LOAD MOD OUTPUT? BEQ LINK24  ;NO-- ; INIT OUTPUT DATA SET, DELETE OUTPUT FILE ; OPEN OUTPUT FILE MOV #OPLOD-BEGO01+BEGOVR,LODADR-4-L1 ;SET UP ERROR RETURN MOV #LODDEV,-(SP) ;.INIT THE DATA SET EMT INIT TST LODADR+4-L1 BNE .+10 MOV #0,LODADR+4-L1 .=.-4 .RAD50 /LDA/ .=.+2 MOV #LODADR,-(SP) ;.DELETE THE FILE MOV #LODDEV,-( :.~. q>@q)eJ x   N Ê <%! ,c ѐjˋÜ`E `߇&  P   cL|wZ ɋr߷ plCA  R5 LRC I CIASO TRTVEON;C  0$4L ALC 1 RTOE LUVA; 1 ,RR0 OVM X DIRAT ENRRCUN IUT OAKRE;B R3X,DIRACV MO  P)(S,-R3 OVM R TEACARCHK ACST;) SP-(5,RV MO  BS AN,IOSSREXP ETEUAALEV;  P EXBSA S ASYP B","\;   NBETG: 0$2 RNTURE  R0+,P)(S OVM: 2$ 1G LACF,LMCC.#L ISB: 1$ 1 $ 12 BR  ELAB LLYONT IS LS,YE;L NDCE,LR0 OVM E IN LRETIENS ESPRUP SO, N;  1$1Q BE  L?BELAA E WVEHA, ES;Y R0D,ENBLLV MO  NO ; $ 12 EQB ? ONSIESPRUP SLLa\h7 L7 % h".*@7 07 6.$ B.Pe ER .v7s t7 $  I tI. 7 t  n  Qt. Vt' ſe7   t .ӃɥwPwP oBbSP) EMT DELET ; IF THE FILE ALREADY EXISTED IT WAS ; DELETED AND CONTROL WAS RETURNED ; NORMALLY. ; IF THE FILE DID NOT EXIST, THE ERROR ; RETURN "OPLOD" WAS TAKEN. ; ; OPEN LOAD MODULE FILE ; OPLOD: CLR LODADR-4-L1 ;NOW LET MON HANDLE ERRORS INCB LODOPF-L1  ;INDICATE LOAD MODULE OPENED TST LODADR+4-L1 BNE .+10 MOV #0,LODADR+4-L1 ;SET DEFAULT EXTENSION .=.-4 .RAD50 /LDA/ .=.+2 MOV #OPENO,LODADR-2-L1 MOV #LODADR,-(SP) MOV #LODDEV,-(SP) EMT CAO 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 B R CHETG $ 4Q BE  MTCIWL ALC: 3$ $: 2C ND.E  ES Y;  0$3I BM  D?TEESQUREN IOATEREN GO,;N  SBCGMA STT B LSEDXF NDF .I  ES Y;  2$ NEB ? TSENUMRG ANY;A  R5 STT T ENUMRG AET;G  GFARGM LLCA  ES Y;  0$2Q BE  "?e .CmeEj P 4 z:2Zz .: 2 Zz.Lz2hDDm D "z2  h.r Dd DQ$*F   Dd 7 .DQ$*FD*FQ$Dd 7D.Q$*FDdDQ$6J7D*.Dd7 ɥɥH .  fOPEN ; INIT OUTPUT ; LINK24: IOOI   ;SETS R0,R1 TO PROPER BUFFER ; ; SET UP THE BUFFER AND DUMP IT. USE R0,R1 AS POINTERS. ; MOV #COMDSZ,(R0) ;SET BC ; SET COMD LOAD ADDRESS MOV LOWADR-L1,-(SP) ;ASSUME LOWADR IS OK. CMP PRSIZE-L1,#COMDSZ ;IS PROGRAM SMALLER THAN COMD? BHIS LINK15  ;NO - USE LOWADR CLR (SP)  ;ASSUME 0 AS LOAD ADDRESS. CMP TOPMEM-L1,#COMDSZ ;IS TOP TOO LOW? BLO LINK15  ;YES - USE 0 AS LOAD ADDRESS MOV TOPMEM-L1,(SP) ;YES - PUT C"\; 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 ALC T CNRGAR CL  6R OVNTE : CFOMPR R3 LRC: MCROP VRTOXI  RNTURE  CKTA SNERU;P  )+SP(T TS $: 3 $ 1R B T BIM SYD TERANEGET IFSH; ) SP(R RO  LCC L OL RMA DTOD ENPP;A  OLARDM NDPEAP  NTMEGUARC if e P" .0f&f&~  u.V NΕ w C.|å å$ נA  Q.  e`  v.  Ëנe e  .e e ѐ  v@(.  DZmf.:h ->8.7 ,e>.`e jOMD UP AGAINST TOP. SUB #COMDSZ,(SP) ;CALCULATE CORRECT ADDRESS. LINK15: MOV (SP)+,(R1)+ ;SET LOAD ADDRESS FOR COMD. MOV #3401,(R1)+ ;SET COMMAND FOR 5 GENERAL WORDS. MOV LOWADR-L1,(R1)+ ;SET PROGRAM LOW ADDRESS MOV PRSIZE-L1,(R1)+ ;SET PROGRAM SIZE MOV TRA-L1,(R1)+ ;SET TRA MOV TRADDT-L1,(R1)+ ;DDT ADDRESS CLR (R1)+  ;NOT LOAD-TIME RELOCATABLE MOV SYMB-L1,R2 MOV (R2)+,(R1)+ ;SET MODULE NAME MOV (R2)+,(R1)+ ; ; ; ; ; ; ; ; MOV R1,R2 MOV LIBOYM SET;G  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 GSTIR FCKTA;S P)(S,-000010#V MO  RNTEAT PIT BEDATEREN GARLE;C  SBCGMA LRC S NTMEGUARH IT WRTTA SSHRE F AET;G  NTGCAR LRC L OL RNTMEGUARY MMDUR EACL; L ROMADP ZA  6R OVNTE S RG AROAC MSSCERO;P    A:OMPR R m#0-6.]7 #0-. 6ee ,.e,e&el. 4ze re n.4Re 7!N  #K.D2-7!<e 4$e  .j!!!!! @` 7 .B & V LINK-11 /. V004A PASS 1 PASS 2n#2,(R1)+ MOV SSYME-L1,R3 LNK119: CMP R3,USYME-L1 BHIS LNK120 CMP -4(R0),(R0) BLE LNK126 BIT #MONCND,FLAGS(R3) BEQ LNK125 MOV BASE(R3),(R1)+ ADD #INC,(R2) ADD #2,(R0) MOV R3,R4 SQUISH SUB #BPSYM,USYME-L1 BR LNK119 LNK125: ADD #BPSYM,R3 BR LNK119 LNK126: IOOP TSTB IOOPER-L1 BEQ .+6 LNK160: JMP LINK25-L1 ADD -4(R0),LOWADR-L1 MOV LOWADR-L1,(R1)+ MOV R1,R2 MOV #2,(R1)+ MOV #4,(R0) BR LNK119 LNK120: MOV (R0),-(OVITX N URETR A ORRRE: 1$ TFEPRP JM  R5P,IRT.#M OVM T OMPR LLCA  INDLEN LLCA  P)(S,-R0 OVM ) SP-(3,RV MO  P)(S,-NTGCAR OVM + 2)(R LRC K BLETGL ALC G ARRM LLCA  R30,RV MO  CFOMPR LLCA  TSENUMRG AOFR BEUM NNY;A AXGMAR7,7777#1 OVM $ 1Q BE  RGMAGL ALC G ARRM LLCA  MAROPL ALC $ 1Q BE  RGMAGL ALC 6 VRTOEN  P:IR R3 NCI: PCIR PCIR P,IR BLLO.G  R OVITX N URETR R CHETS E ATECPLRED AN ;+ 2)(R+,2)(R OVMq. # P!W!H!P! W!&H!6.Xlw lh!Dih"!S.(7 !7 ! ! $!.N!wl!z!!! z!.t& ~tl b&.\PlwlDlw`8\.lwT,lwJ lw>l.w2&rSP) ADD #2,(SP) CMP -4(R0),(SP)+ BGE LNK127 IOOP TSTB IOOPER-L1 BNE LNK160 ADD -4(R0),LOWADR-L1 MOV LOWADR-L1,(R1)+ ADD #2,(R0) LNK127: ADD #2,(R0) CLR (R1)+  ;END OF COMD IOOP   ;PUT OUT THE COMD TSTB IOOPER-L1  ;CHECK FOR ERROR BNE LNK160  ;YES. MOV R0,PUTR0-L1 ;SAVE R0 MOV R1,PUTR1-L1 ;AND R1 FOR NEXT PUT. MOV LIMIT-L1,CMDBUF-L1 ;RESET CSI POINTER CMP SSYME-L1,USYME-L1 BEQ .+4 ERR23 JMP LINK73-L1 .IFNDF NOSE  NTOU CNTMEGUARN ILLFI;) R2,(NTGCAR OVM R TEINPOT ENUMRG AND A; )+R2,(R3 OVM R TEINPOT EX TET;S )+R2,()+SP(V MO  RPBMMS+,P)(S OVM L VELEG INSTNEH US;P  SHPUML ALC 5 ,RAC.MMT#V MO  ERNTOI PCKLO BVESA; 3 ,RR0 OVM S NTMEGUARL AL CSSCERO;P  MCROPL ALC R TEINPOE AV;S P)(S,-R0 OVM S IT BOLMBSYD TERANEGED AN ;B GSAC,M)+R0(V MO  GSARF OERMBNUT SE;X MARG,A)+R0(V MO  TSLO SOFE PLOU C AUPE OV;M )+R0,()+R0(P CM  CEENEREF RNTMERENC;I  ACCMIN LLCA  P)(S,-R0 uEw7w. lwlwlw..2lwlwE).Xwlwl&"(.~&@$-R&  .EEEExQ CM^ff .\MfvZh@<vZvG ENDO01: SIZO01=ENDO01-BEGO01 ; ;*****OVERLAY #2***** L2=BEGOVR-BEGO02  ;COMPUTE OFFSET FROM    ;RUN TIME OVERLAY AREA BEGO02: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP START2  ;ENTRY1 .ENDC ; ; RESET-CLOSE & RELEASE ALL OPENED FILES & INITED DATA SETS ; START2: TST INCMD-L2  ;IS KB INITED? BEQ RESE06  ;NO- MOV #INCMD,-(SP) ;CLOSE RELEASE KB MOV (SP),-(SP) EMT CLOSE EMT RELEAS MOV #OUTCMD,-(SP) ;CLOSE RELEOVM 6 VRTOEN  LLNUF IORRR E;  RRCEOP EQB R TEINPOK OCBLT GE;0 ,RUEALVV MO  ONTICALOK AR;M   F0TPSE  LLCAO CRMA;   : OCCRMA R OVITX N URETR R CHETS R KEAR MND EET;S  MTCIWL ALC 5 ,RAC.MMT#V MO $: 3A ORRRE: 2$ 3$ EQB 2 M+NAAC,M+2OLMBSY MPC $ 2E BN  AMCNMA0,RP CM  3$ EQB M SYETG T EX THE TSSCERO;P  MTROPL ALC E IN LFF OSHLIPO; N LINDEL ALC G LACF,LMDC.#L ISB S IT BOLMBSYD TERANEGED AN ;+ 2)(RB,GSACMV MO  GSyh.:x.`R.,0?!   . D,/E CC TRANSFER ADDRESS:   LOW LIMIT:   zASE TELEPRINTER MOV (SP),-(SP) EMT CLOSE EMT RELEAS RESE06: TST OBJDEV-L2  ;IS OBJ DEV INITED? BEQ RESE01  ;NO- IOIC RESE01: MOV #MAPDEV,R0 TSTB MAPOPF-L2  ;IS MAP OPEN? BEQ RESE02  ;NO- MOV R0,-(SP) ;YES-CLOSE & RELEASE EMT CLOSE RESE02: TST @R0  ;IS IT INITED? BEQ RESE03  ;NO- MOV R0,-(SP) EMT RELEAS RESE03: MOV #LODDEV,R0 TSTB LODOPF-L2  ;IS LOD DEV OPEN? BEQ RESE04  ;NO- MOV R0,-(SP) ;YES-CLOSE & RELEASE IT EMTARF OERMBNUP EE;K )+R2,(NTGCAR OVM T UNCOL VELER EACL; + 2)(R LRC S RG AMYUM DSSCERO;P  MAROPL ALC F DERFC E BLTAN IRTSEIN;  T ERNSI R TEINPOT SE; ) R4,(R0 OVM K OCBLE AGORSTA T GE; K BLETGL ALC: 1$ CEENEREF RHE TNTMEREEC;D  ACCMDE LLCA  LLNUF ICHANBR; $ 1Q BE  ERNTOI PHE TET;G  R0),R4(V MO  LEAB THE TCHARSE;  H RCMS  +2AMCNMA2,L+BOYMSV MO  AMCNMAL,BOYMSV MO  6R OVNTE : OFCRMA LLNUF IORRR E;  DMEN EQB E AM NHE TET;G   RGSAG N IOIT}HIGH LIMIT:     $ c rXr T  I    ;  ,  4  &  1  ********** H   . UNDEFINED REFERENCES LO.!AD MAP SECTION ~ CLOSE MOV #LODADR,-(SP) ;DELETE LOAD MODULE FILE MOV R0,-(SP) EMT DELET RESE04: TST @R0  ;IS IT INITED? BEQ RESE05  ;NO- MOV R0,-(SP) ;YES- EMT RELEAS RESE05: CLRB PASS-L2  ;SET FOR PASS ONE. CLRB TRAF-L2  ;NO TRA YET. CLRB DDTF-L2 CLRB NOINIT-L2  ;OVERLAYS SET UP FLAG. CLRB SDDTRA-L2 CLR TRADDT-L2 CLRB FLINE-L2 CLRB CONCAT-L2 CLRB TAPES-L2 CLRB MAPF-L2 CLRB TOPF-L2 CLRB BOTF-L2 CLRB UTRA-L2 CLRB FTRA-L2 CINEF DROAC;M    R:AC M: ROAC M M NDE, CRMA O,CRMA BLLO.G  N URETR O ORRRE: RRCEOP R:ND E: DMEN OPMP MPJ G LA FITEX MARLE;C  EXDMCN LRC: 1$ RNTURE  NKLIS ASYP;B  0)(R4,#D AD  ERNTOI PADRET SE, NO;) R0,(XTBTMS OVM S YE ; $ 1T BG  H?UGROTH;+ 0)(R+,0)(R MPC T IMPBU; ) 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;ENTRY ADDRESS SIYD!ZE   V!r V!,P ]!k ]! ] `!h*`! ?LOAD MODULE EOM  !@!  !,!  ! !: ! !. ! ! LRB STRA-L2 CLRB MONLIB-L2 CLRB SECTIM-L2 CLRB LASTDB-L2 CLRB REINIT-L2 CLRB INTMOV-L2 CLRB FLAG-L2 CLRB FILEOR-L2 CLRB NOOUTP-L2 CLRB NOONOM-L2 CLRB BELOW0-L2 CLRB ODTF-L2 CLRB NOTINP-L2 CLRB LIBF-L2 CLRB FBBF-L2 CLRB SBBF-L2 CLRB FREADF-L2 CLRB MAPOPF-L2 CLRB LODOPF-L2 ; ; INITIALIZE KEYBOARD DATA SET ; MOV #INCMD,-(SP) EMT INIT ; ; OPEN KEYBOARD FILE ; MOV #OPENI,KBDADR-2-L2 MOV #KBDADR,-(SP) MOV #INCMD+ 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 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 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$: MOV #CMDBUF,R1 ,-(SP) EMT OPEN ; ; INITIALIZE TELETYPE DATA SET ; MOV #OUTCMD,-(SP) EMT INIT ; ; OPEN TELETYPE FILE ; MOV #OPENO,TTYADR-2-L2 MOV #TTYADR,-(SP) MOV #OUTCMD,-(SP) EMT OPEN ; MOV #LINK,-(SP) ;RESTART MOV #2,-(SP) EMT RSTRT ; ; PRINT NAME ; MOV #LNKNM,R0 TYPE ; ; START PASS 1 ; LINK66: MOV #PASS1,R0 ;TYPE "PASS1" TYPE JMP LINK80-L2 .IFNDF NOSEG ENDO02: SIZO02=ENDO02-BEGO02 ; ;*****OVERLAY #3***** L3=BEGOVR-BEGO03  ;CATLUVA;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  C ND.E  NERU PND ACHANBR;C ,P)+SP@( OVM S ESDRADM OR;F P)(SP,RA-TBLPTTR#D AD  ITK ACST;) SP-(+,P)(S@V MO  ONTIUCTRNS IAPTRO TNTOI;P  P)(S2,#B SU  UPS ESDRADN URET RVEMO;) SP2(),SP(V MO  ORSSCERO PAPTR;   : ROPPTR PSRATF DIF. N URETR L UL NTOK AC BNTOIMOV #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$  ;BRANCH IF LAST SPEC OMPUTE OFFSET FROM    ;RUN TIME OVERLAY AREA BEGO03: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP STRT31  ;ENTRY1 JMP STRT32  ;ENTRY2 .ENDC ; ; PROCESS OUTPUT SPECIFICATIONS AND SET MONITOR TOP. ; STRT31: MOV #102,-(SP) EMT FMS MOV (SP)+,MONTOP-L3 ;INITIALIZE AT CURRENT SIZE MOV CMDBUF-L3,BLKO-L3 MOV #2,@CMDBUF-L3 ;PREPARE FOR OUTPUT FIELD MOV #BLKO,-(SP) ;GET FIRST OUTPUT FIELD EMT CSI2 TST LODDEV+6-L3 BNE LINK85 INCB NOOUTP-L3 PD,EN; ) R2-( TBTS  LLNUN-NOF IOPLO; $ 1E BN  NE OVEMO;+ 2)(R+,1)(R 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)(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 | 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 INPUT MOV (PC)+,@(PC)+ ;SET LINK85: CMP #2,(SP) BGT .+4 ERR19 ASR (SP)+ BCS LINK86  ;ODD=>NO MAP FOLLOWS MOV CMDBUF-L3,BLKM-L3 ; GET MAP FILE MOV #BLKM,-(SP) EMT CSI2 INCB MAPF-L3  ;SET MAP FLAG CMP #2,(SP) BGT .+4 ERR19 ASR (SP)+ BCS LINK86 ERR20 LINK86: TSTB NOOUTP-L3 BEQ .+12 CLRB NOOUTP-L3 INCB NOONOM-L3 CLR @CMDBUF-L3 MOV CMDBUF-L3,BLKI-L3 MOV #BLKI,-(SP) EMT CSI2 TST OBJDEV+6-L3 BNE LNK136 ASR (SP)+ BCS LNK135 ERR17 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)+SP(V MO T:EMST T C SEITX 6 P+TOONMM CO  +4OPNTMO OMC G PRCTXC SENTE 4 KWBL.: OPNTMO REPUIM ECTSEN  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 xDEFAULT 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 ; CLR SRCLNK MOV SRCFIL,R0 ;GLNK135: TSTB NOONOM-L3 BEQ .+6 JMP LNK145-L3 ERR02 LNK136: TST LODDEV+6-L3 BEQ LINK35 MOV #LODADR,R0 TST (R0) BNE LINK35 MOV #OBJADR,R1 MOV (R1)+,(R0)+ MOV (R1),(R0) LINK35: JMP LNK128-L3 ; ; OBTAIN ADR OF HIGHEST WORD IN CORE ; STRT32: MOV #100,-(SP) EMT 41 MOV #ALODSZ,-(SP) SUB (SP)+,(SP) ADD #2,(SP) MOV (SP)+,TOPMEM-L3 JMP LINK84-L3 .IFNDF NOSEG ENDO03: SIZO03=ENDO03-BEGO03 ; ;*****OVERLAY #4HIB 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. OVM ) SP-(1,RV MO  P)(S,-R2 OVM ) SP-(3,RV MO  RSTEISEG RVESA;   : EGVRSA GERATO SERSTGIRE TLBT.S  N URETR 4 ,RUEAL#V OVM 3 ,RDEMO#V MO  R2R,TOEC#S OVM 1 ,ROLMBSY#V MO  RSTEISEG RONSIESPREXT SE;   : PRTXSEtET 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 MOV (SP),SP  ; AND STACK BASE ***** L4=BEGOVR-BEGO04  ;COMPUTE OFFSET FROM    ;RUN TIME OVERLAY AREA BEGO04: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP LINK13  ;ENTRY1 .ENDC LINK13: MOV SYME-L4,R0 ;GET BEGINNING OF UNDEFINES MOV R0,SSYME-L4 ;SAVE FOR PMAP LINK27: CMP R0,USYME-L4 ;ANY UNDEFINES LEFT? BHIS LNK112  ;NO-GO SEE ABOUT MAP. CMP #DOTBLK,NAME2(R0) ;IS 2ND WORD ". "? BEQ LNK111  ;YES-GO CHANGE ". " INTO " " BIT #MONCND,FLAGS(R0) ;MONCND FLAG SET? BEQ LNK130 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 ;  N URETR R TEACARCHT ENRRCUE ORSTRE;5 ,R)+SP(V MO  NETIOU REROPPRL AL;C  0)(R LLCA  OLMBSYO TERNTOI;P R4L,BOYM#S OVM E IZ SRYNT;E R3),R5Z(SIOLRB OVM P TOT ENRRCU;2 ,R5)(ROPLTRO OVM E AS BNTREUR;C R1),R5S(BAOLRV MO  EXND IET;S R5X,NDp .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)+ MOV (R4)+,R1 ;GET PROPER MONT  ;NO- TST BASE(R0) ;YES-EMT FILLED IN? BNE LNK116  ;YES- BIC #MONCND,FLAGS(R0) ;NO- MOV #DOTBLK,NAME2(R0) BR LNK130 LNK130: BIC #ABSREL,FLAGS(R0) ;NO-MAKE ABSOLUTE BIS #UNDEF+INTGLB,FLAGS(R0) ;MAKE DEFINED AND GLOBAL. MOVB #SYMN,FLAGS+1(R0) ;MAKE IT A SYMBOL DEFINITION. CLR VALR(R0) CLR BASE(R0) LNK116: ADD #BPSYM,R0 ;UPDATE R0 TO NEXT SYMBOL. BR LINK27 LNK111: MOV #BLANKS,NAME2(R0) ;CHANGE ". " INTO " " BIS #MONCND,FLAGS(R0) ;FLAGS ENTRY: MOLRV MO  ERCTRAHA CNTREUR CND A; P)(S,-R5 OVM S ERSTGIREE AV;S   EGVRSA  SSREDD ARNTUREE AV;S R0+,P)(S OVM: OFTRSE NTMEGUART SE;X NDOL,RR0 OVM S ERSTGIREL OL RET;S    L:ROETS RNTURE  NTOU CRYNT EARLE;C 5)(R+1IZLSRO RBCL  OMTTBO= P TOE AK;M 5)(ROPLTRO1,RV MO  OLTRSE LLCA  LLROA Y PTEM;   : AP Z N URETR D ENT NOF IOPLO; $ ,6R3 OBS E ACPLO NT IRYNT EANE OV;M )+R0,()+R4(V MO $: 6T UNCOE IZ SVEAL;H  R3 SRA: 5$ ES Y;  4$ lOP 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 CALL XMIT5 MOV #CRFFIL-4,R1 CALON ROUTINE CANDIDATE CLR BASE(R0) ;CLEAR SPACE OF EMT BR LNK116 LNK112: TSTB SECTIM-L4 BNE LNK131 INCB MONLIB-L4 ;IN MON LIB SEARCH JMP LINK80-L4 ;CHECK FOR ROOM FOR COM ST LNK131: CLRB SECTIM-L4 ; INITIALIZE FOR PASS 2 CMP SYMB-L4,SYME-L4 ;ANY SYMBOLS? BNE .+6  ;YES JMP LINK-L4  ;NO, RESTART! MOVB #1,TMP1-L4  ;SET ADDRESS REPEAT FLAG MOV TOPMEM-L4,CURPC-L4 ;GET TOP OF MEMORY INTO CURRENT ; ASSIGN ADDRESSES, CALCULATE TOTAL SIZE, KEEP LOWEST ADDGEB ? LSOL RREMO; 5 ,R#2 UBS ) R5P(TOOL,RR3 UBS S ERNTOI PNTMEREEC;D 5)(RASLBRO3,RB SU $: 4O N;  2$ NEB ? ND;E  R20,RP CM $: 3N OW DRYNT EANE OV;M )+R2,()+R1(V MO $: 2 7 21 ORRRSE  OK, NO ; $ 3I BH  W?LORFVE;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 ChL 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$ .CLOSE R2 .RLSE R2 2$: TST RESS LOADED. LINK63: MOV SYMB-L4,R0  ;SET PTR TO FIRST MODULE NAME. MOV R0,PTRG-L4 CLR PRSIZE-L4  ;0 TO PROGRAM SIZE BR LINK17 LINK16: ADD #BPSYM,R0 ;MOVE TO NEXT ENTRY LINK17: CMP R0,SYME-L4  ;DONE? BHIS LINK18  ;YES-GET OUT MOVB FLAGS+1(R0),R1 ;GET FLAG TO HIGH BYTE (ENTRY TYPE) MOVB FLAGS(R0),R2 ;GET FLAG LOW BYTE CMPB #OBJMN,R1 ;OBJ-MODULE NAME? BEQ LMM000 ; YES CMPB #SYMN,R1 ;SYMBOL ENTRY? BEQ LINK19  ;YES-GO CMPBRYNT 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 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 Fd(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 /ERRORS DETECTED: / FINMS1: .ASCII /FREE CORE: / CRLF: .ASCIZ // FINMS2: .ASCIZ /. WORDS/ HASH: .ASCIZ  /#/ XITSEC    ;ROUTINE TO INIT FILES    ;IN - R4 - POINTER TO CSI BUFFER    ;OUT - R0 - DEVNAM (TESTED) #SECTN,R1 ;SECTION NAME? BEQ LINK20  ;YES-GO BR LINK16  ;IGNORE ALL OTHER THINGS. LMM000 = . CMP (R0),(PC)+ ; TASK HEADER NAME .RAD50 /$$T/ BNE LINK16 ; NO MOV PC,SW32WD-L4 ; YES-SET SWITCH BR LINK16 ; ; ENTRY POINT LINK19: BITB #ABSREL,R2 ;ABS OR REL? BEQ LINK33  ;ABS MOV PTSECT-L4,R3 MOV BASE(R3),BASE(R0) ;GET SECTION BASE ADD VALR(R0),BASE(R0) ;RELOCATE BR LINK16  ;DOT 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 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 `    ; R1 - RESULT OF .CSI2    ; R2 - BUFFER SIZE    ; R3- STATUS WORD INIT: MOV 2(R4),R0 ;GET POINTER TO LINK BLOCK CLR R2  ;CLEAR BUFFER SIZE MOV #72.,4(R0) ;SET FOR MANY SWITCHES .CSI2 R4  ;TEST THE FIELD BIT #2,(SP)  ;TOO MANY SWITCHES? BEQ 1$  ; NO SERROR 203 1$: MOV 6(R0),-(SP) ;ANY DEVICE? BEQ 2$  ; NO .INIT R0  ;OK, INIT THE DEVICE .STAT R0  ;GET CHARACTERISTICS MOV (SP)+,R3 ;SAVE STATUS WORD TST O NEXT ENTRY LINK33: MOV VALR(R0),BASE(R0) ;SET ABS VALUE BR LINK16 ; ; SECTION NAME ; LINK20: BITB #ABSREL,R2 ;ABS OR REL? BNE LINK21  ;GO IF REL CLR BASE(R0) ;SET BASE AND CLR VALR(R0) ;SIZE TO 0 BR LINK22 LINK21: MOV VALR(R0),R3 ;GET SECTION SIZE MOV R3,-(SP) ;MAKE SIZE EVEN ASR R3 MOV (SP)+,R3 ADC R3 ADD R3,PRSIZE-L4 ;SUM UP FOR TOTAL SIZE TSTB TMP1-L4  ;IS THIS FIRST TIME? BNE LINK78  ;FIRST ADD #3,CURPC-L4 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$ 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  \(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 MOV (R4)+,R3 ;LINK BLOCK POINTER TO BIC #3,CURPC-L4 ; MAKE DOUBLE WORD BOUND TST SW32WD-L4 ; 32 WORD BOUND REQUEST? BEQ LMM001 ; NO ADD #77,CURPC-L4 BIC #77,CURPC-L4 ; MAKE IT CLR SW32WD-L4 LMM001 = . MOV CURPC-L4,BASE(R0) ;SECOND--SET BASE ADD R3,CURPC-L4 ;ADJUST PC BR LINK22 LINK78: SUB R3,CURPC-L4 ;ADJUST PC BY SIZE. BIC #3,CURPC-L4 ; MAKE DOUBLE WORD BOUND TST SW32WD-L4 ; MAKE 32 WNXCASO BL  R21,RP CM  R03,RD AD  R10,RD AD  R0D,UPOLRV MO  OLTRSE LLCA  RYNT EXTNEE THT GE;   : XTNE N CA SGHOUHR TITEX; X ANSC BR  R3+,P)(S OVM: 7$ OTSLN IORTSEINO TNTOI PS,YE;+ 1)(R+,1)(R MPC O N;  2$ NEB ? ND;E  R02,#C BI  ETFSOFE LVHA, ONTIRATE IOFD EN; 0 RR AS $: 61 ,RR0 DDA: 5$ 6$ BR  EXND IEROW;L  R10,RB SU $: 4H IG HOO TIFH NCRA BO,;N  5$ HIB: 3$ NDOU FS,YE ; $ 7Q BE  D?ONEC SUTBO AOW HS,YE;) R12(),XR3 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)+ ;XFER NAME MOV (R1)+,(R2)+ ORD BOUND? BEQ LMM002 ; NO BIC #77,CURPC-L4 ; MAKE IT CLR SW32WD-L4 LMM002 = . MOV CURPC-L4,BASE(R0) ;SET BASE OF SECTION TO NEW PC. LINK22: MOV R0,PTSECT-L4 ;SAVE PTR TO THIS SECTION. BR LINK16  ;DO NEXT ONE. ; LINK18: ; ; IF BOTTOM SET, CALCULATE NEW TOP AND ; ASSIGN ADDRESSES AGAIN. TSTB BOTF-L4 BEQ LINK77  ;NO BOTTOM. CLRB BOTF-L4 SUB CURPC-L4,TOPMEM-L4 ;CALCULATE NEW TOP AS ADD BOTMEM-L4,TOPR42( MPC O N;  3$ NEB ? CHAT MDSOR WSTIR FO,;N 1)(R),R4(P CM  ES Y;  4$ OSBL  D?AN L'SNSMAO- NINF OF; 1 ,RR2 MPC: 2$ NTOI PAY-WLFHAT ARTTA;S  5$ BR  NO ; $ 1E BN  E?ONT AS L. IT BNGDIONSPREOR CARLE;C  R30,RC BI  IT BFTHI;S  R0 OLR: 1$ G)LA F/F TASS LEUBDO0 (R ;  C SE  ETFSOFH RCEA STEPUOM CTOT SET GE; 0 RR CL  ZESIE UTMPCO; 3 ,RR1 UBS 3 ,RR2 OVM W LOT LO SNE ONTOI;P  R13,RB SU  P)(S,-R3 OVM S ERSTGIREL OL RET;S  OLTRSE LLCA  TTST (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 SAVREG ADD #8.,R4  ;R4 POINTED TO LMEM-L4 ; TOP-(CURRENT-BOTTOM) LINK77: TSTB TMP1-L4  ;DONE TWICE? BEQ LINK64  ;YES CLRB TMP1-L4 MOV TOPMEM-L4,-(SP) ;CALCULATE LOWADR SUB PRSIZE-L4,(SP) MOV (SP),LOWADR-L4 MOV (SP)+,CURPC-L4 JMP LINK63 ; FINALIZE THE TRANSFER ADDRESS ; LINK64: CMP TOPMEM-L4,PRSIZE-L4 BHIS .+6 INCB BELOW0-L4 TSTB TRAF-L4  ;IS THERE ONE? BNE LINK60  ;YES MOV #1,TRA-L4  ;ASSUME 1 BR LINK61 LINK60: TSTB FTRA-L4  ;WAS ONE FORCED? BNE LINK61  ;YCHARSEL 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 NEG LA;F  LGYFLS NCI: 1$ ES Y;  2$ EQB ? DERIR-VE OSB LIN;K ASDM,ESB.LED#T BI T:SESB L $ 1R B S /DF ISSPABY; $ 2E BN T:TSSB LB LS BLNA.E  CKLO BOLMBSYL CALO;1 T,TSSB,LSBLT EDENG C SEITX S OLMBSYD TERANEGER FOE AS;B   KWBL.: ASGBLS SEBAN PINK 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$: GETR50   ;GET CHAR AND TEST FORES- TSTB STRA-L4  ;MUST WE SEARCH? BEQ LINK30  ;NO- MOV #1,R0  ;YES- SEARCH MOV #TRABLK+4,R4 SRGLOB MOV R0,R4 MOV R4,TRA-L4 BR LINK61 LINK30: MOV #TRABLK,R4 SRMODN   ;SEARCH FOR MODULE NAME BR LINK32  ;FOUND ERR12   ;MODULE NAME MUST BE THERE. LINK32: MOV R4,PTRG-L4  ;SET PTRG TO CURRENT NAME. MOV #TRABLK+4,R4 GETSEC   ;SEARCH FOR SECTION NAME. ERR13   ;MUST BE THERE. ADD BASE(R4),TRA-L4  ;CALCULATE TRA ; FINALIZE DDT TIOCTSE;  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; 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; L 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 ENTSEC IMPURE CSIFLG: .BLKW   ;RA LINK61: TSTB SDDTRA-L4 ;HAVE WE SEEN ONE? BEQ LINK31  ;NO- MOV #DDTTRA,R4 ;YES-FIX IT UP SRMODN BR .+4 ERR12 MOV R4,PTRG-L4 MOV #DDTTRA+4,R4 GETSEC ERR13 ADD BASE(R4),TRADDT-L4 LINK31: MOV SYMB-L4,PTRG-L4 ;SET PTRG MOV TRA-L4,R0 ;PRINT MSG--TRA,LOW ADR-L4,ETC MOV #TRAMA,R1 OTOA MOV LOWADR-L4,R0 MOV #TRAMB,R1 OTOA MOV TOPMEM-L4,R0 MOV #TRAMC,R1 OTOA JMP EXOVL4-L4 .IFNDF NOSEG ENDO04: SIZ  : 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 S ERDLAN HLLRO TLBT.S  5 RS RT $: 2E AS BIND AD; 0 ,RR1 DDA 0 RUPN EACL, ES;Y R00,4077#1 ICB O N;  1$ NEB ? UY GHE TISTH;) SP,()+R1(B MPC O ER ZIFD HEISIN;F  2$ EQB T SEFF OXTNEH TCFE;0 ,R)+R1(B OVM: 1$ R1G INERBBLO CX,HSET 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 CLR PF1  ;GOT SET BY SECTOR INIT .O04=ENDO04-BEGO04 ; .EOT ;TAPE2 ;*****OVERLAY #5***** L5=BEGOVR-BEGO05  ;COMPUTE OFFSET FROM    ;RUN TIME OVERLAY AREA BEGO05: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. JMP START5  ;ENTRY1 .ENDC ; ; ; GET GSD (GGSD) ; ; READ GSD OFF A TAPE AND BUILDS A SYMBOL TABLE. ; ; START5: SAVREG   ;SAVE REGISTER TSTB LIBF-L5  ;TEST LIB FLAG BNE GGSD22  ;IN DIR SEARCH MOVTAB   ;INPUT INIT. SET R0, R1 MOV #INA,IN-L5 MOV 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 TLTAUEF DE,AS CEROW;L  ,1C,LT EDENG C DLXE DF NIF. S AGFLD ANR TEISEG RET;S R5T,PNHR@C VBMO R:CHET SR TEINPOP UM;B  NTRPCH NCI R TEACARCHT EX NHE TET;G    R:CHET G S AGFLG INTTSE, ITEX; R CHETSR B S ASYP BS,YE ; B TNGE NEB ? NKLA;B 5)(RBLTT,CAB.TCTP!.SDIF 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  ;PROCESS THE STATEMENT 1$: CALL END#INA,-(SP) MOV #OBJDEV,-(SP) EMT READ GGSD26: IOIG GGSD23: BITB #EOF,-1(R0) ;ERROR? BNE GGSDEX  ;YES, GET OUT CMPB #GSDBLK,(R1) ;IS THIS GSD? BEQ .+4  ;YES, OK ERR03   ;ERROR IF NOT GSD. CMPB #OBJMN,7(R1) ;IS 1-ST ENTRY OBJ MOD NAME? BEQ .+4  ;YES, OK ERR04   ;ELSE, ERROR. GGSD01: BITB #EOF,-1(R0) ;TEST STATUS FOR ERRORS BNE GGSDEX  ;ERROR - EXIT AND IGNORE GGSD02: MOV (R1)+,R2 ;GET BLOCK TYPE SUB #2,(R0)  ;DECREMENT BC CMPB #GCT#B ITB S AGFLD ANR TEISEG RET;S   HRTCSE B:TNSE ERNTOI PMPBU; T PNHRCC IN  ERCTRAHA CNKLA-BON N AET;G    B:TNGE GSLA FND AERCTRAHA CET;S  HRTCSE BR  ERNTOI PHE TET;S NTRPCHG,BEYMSV MO  ANSCE- ROR FOLMBSYT SE;   : YMTSSE C SEITX > OL EL,EO, OL EL,EO, OL E ,LC, C L ,LC C L ,LC, C L ,LC, C L ,LC, C L ,LC C L ,LC, C L ,LC, C L ,LC, C L ,LC C L ,LC, C L ,LC, C L ,LC, C LL,EO CX PX,@LIN  ;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 .RLSE R1 1$: CLR PASSSW  ;CLEASDBLK,R2 ;GSD BEQ GGSD03  ;YES MOVB TAPES-L5,-(SP) BISB CONCAT-L5,(SP)+ BNE GGSD04  ;IGNORE GSDEND IF EITHER    ; TAPES OR CONCAT ON. CMPB #GSDEND,R2 ;GSD END BNE GGSD04  ;NO GGSDEX: RESREG   ;YES - EXIT TSTB LIBF-L5  ;TEST LIB FLAG BNE GGSDE1  ;IN DIR SEARCH IOIC   ;CLOSE OBJECT MODULE FILE GGSDE1: RTS PC GGSD22: TSTB SBBF-L5  ;MATCH IN 2ND LINE? BNE GGSD24  ;YES - FIX UP "IN" IOIG   ;NO - GET NEXT BLOCK BR GGSD23 GGSDPC, CX PX,PC, CX PP,AL, LP AP,AL LP AP,AL, LP AP,AL, LP AP,AL, LP AP,AL LP AP,AL, LP AP,AL, LP AP,AL, LP AP,AL LP AP,AL, LP AP,AL, LP AP,AL, LP AX,PC CX PX,PC, CX PX,PC, MC SX,PC, UM NM,NU UM NM,NU, UM NM,NU, UM NM,NU, UM NM,NU CX PP,AL, CX PM,CO, CX PX,PC, CX PX,PC CX PX,PC, CX PP,AL, CX PX,PC, CX P ,SP OL EL,EO, OL EL,EO, OL EL,EO, OL EL,EO OL EL,EO, OL EL,EO, OL EL,EO, OL EL,EO OL EL,EO, OL EL,EO, OL EL,EO, AB TL,EO OL EL,EO, OL EL,EO, OL EL,EO, OL EL,EO RG CR BHI 6$ CMP R5,#LF  ; OR < LF BLO 6$  ; MOVE ON CMP R5,#FF  ;FORM FEED? BNE 3$  ; NO, LOOP INC FFCNT  ;CGGSD20  ;NO- INCB SDDTRA-L5 MOV #DDTTRA,R2 BR GGSD21 GGSD20: TSTB UTRA-L5  ;SHOULD WE USE THIS ONE? BEQ GGSD18 CLRB UTRA-L5 INCB TRAF-L5 BR GGSD19 GGSD18: TSTB TRAF-L5  ;IS THERE ONE ALREADY? BNE GGSD03  ;YES, GET OUT GGSD19: MOV #TRABLK,R2 ; GET CURRENT OBJ MODULE NAME GGSD21: MOV PTRG-L5,R3 MOV (R3)+,(R2)+ MOV (R3),(R2)+ ; GET TRA SPEC MOV (R4)+,(R2)+ ;SECTION NAME MOV (R4)+,(R2)+ TST (R4)+  ;SKIP FLAGS MOV (R4)+,(R2)+ RE;E LUVA1,RV MO $: 9 $ 1R B T UNCOR TEACARCHY LLTA;0 ,R000400#D AD  ERCTRAHA CERTHNO AET;G   HRTCGE  ERMBNUT ENRRCUN IDD;A  R13,RD AD  DCEN. 1 ,RR2 ULM F IF. R BEUM NEW NET;S R1+,P)(S OVM: 5$ 3$ BR  ITG LA F. OH, OH;0 ,R000010#S BI  OWFLEROVO NIFH NCRA;B  3$ CCB N ERTTPAT IFSH, ES;Y  R1 SLA O N;  5$ EQB ? SSCERO PTOS IT BREMOY AN; 4 RT TS $: 4N IDD;A  P)(S1,RD AD  ONTILAMUCUACO NIFH NCRA;B  4$ CCB X DIRAT IFSH; 4 RR AS $: 3C (OUNT 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$: MOVB R5,(R2)  ;QUESTIONABLE, ASCIZ NULL? ;CONSTANT MOVB DDTF-L5,-(SP) ;IS THIS THE DDT TRA? CLRB DDTF-L5 TSTB (SP)+ BNE GGSD03  ;YES-DO NOT TEST FOR ODD VALUE BIT #1,-(R2) ;IS IT ODD BNE GGSD03  ;YES - IGNORE INCB TRAF-L5  ;NO - SET FLAG GGSD14: JMP GGSD03 ; ; SYMBOL DEFINITION ; GGSD09: MOV R4,R2  ;SAVE R4 BITB #UNDEF,FLAGS(R2) ;REF OR DEF? BEQ GGSD15  ;REF PTGLOB   ;SEARCH FOR IT AND SET R4 BR GGSD16  ;NOT FOUND BITB #UNDEF,FLAGS(R4) ;FOUND, IS IT DEFINED BNE GG AMPTE; ) SP-( LRC X DIRAT ENRRCUF OPYCO; 4 ,RR2 OVM 5 V4DPPF NDF .I  $: 2T UNCOR ROER" "NP UM BO,;N  R0 NCI S YE ; $ 2O BL  X?DIRAN HA TSSLE, ES;Y  R23,RP CM  GHOUHR TREE' WO, N;  9$ HIB ? ICERUM;N  9.,#R3 MPC E UTOLBS ATOT ERNVCO;3 ,R.0IG#D UBS R HA CNTREUR CHE TOFY OP C AET;G  R35,RV MO $: 1N CAES ROR FVESA;G BEYM,SNTRPCH OVM R TOLAMUCUACC RIMENU; 1 RR CL  ERSTGIREG LA FLTSURE; 0 RR CL  EGVRSA  NTOU CZESIEROV- E YT BW LO- ;   $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,CHRPNT SETNB BNE 39$  ;ALL SET IF NON-NULL LINSD13  ;YES - ERROR SQUISH SUB #BPSYM,USYME-L5 GGSD16: MOV R2,R4 INPTRH BR GGSD14 ; ; MULTIPLY DEFINED SYMBOL--BROADCAST IT ; GGSD13: MOV R0,CONVER-L5 ;SAVE R0,R1 MOV R1,-(SP) MOV #MULMSA,R1 ;ADR OF ASCII CHARS MOV R4,R0  ;ADR OF MOD40# UNPACK MOV #MULMSB,R1 ;MODULE NAME MOV PTRG-L5,R0 UNPACK MOV (SP)+,R1 MOV #MULMSG,R0 TYPE MOV #1302,R0 ;CODE=W302 CLR -(SP) MOV R0,-(SP) IOT MOV CONVER-L5,R0 BR GGSD14 ; ; REFEREN T UNCOR TEACARCH- E YT BGHHI- ;   W LORFVE O -T BIH IG H -R0;     LTSUREE LUVA -UT O;   X DIRA R2 -N I;   C RIMENUO TXTTET ERNVCO;   : UMTNCV N URETR C TIBEHALP;A  R00,10#B SU $: 5T GIDI, OT;D R00,102-#2 UBS: 4$ ARLLDO;0 ,R221-#1 UBS: 3$ CEPA;S R01,-1CEPA#S UBS: 2$ USIN MCEOR FD,LIVAIN;0 ,RCEPA+S000010#V MO $: 1 A PHAL; $ 5R B T GIDIR OOT;D  4$ LOB A T.LE,#R0 MPC R LAOL;D  3$ EQB E ACSP; $ 2 E 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)+ ;ELSE MOVE INDEX DEC (R1)+  ;BYPASS FF, POINTCE TO A GLOBAL ; GGSD15: PTGLOB BR GGSD17  ;NOT THERE - INSERT IT. JMP GGSD03  ;IF THERE, IGNORE GGSD17: MOV R2,R4 INUSYM   ;INSERT AS UNDEFINED SYMBOL BR GGSD14 .IFNDF NOSEG ENDO05: SIZO05=ENDO05-BEGO05 ; ;*****OVERLAY #6***** L6=BEGOVR-BEGO06  ;COMPUTE OFFSET FROM    ;RUN TIME OVERLAY AREA BEGO06: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP START6  ;ENTRY1 .ENDC ; ; LIBRARY SEARCHING ROUTINE ; ; INITIALIZO BL  ARLLDOY TR, ES;Y OL.DCH,#R0 MPC S NUMIT XI EO, N;  1$ EQB ? CEPA SOR, ICERUM NA,PHAL;) R0L(TBCTP,.SCTM!NUT.!CLP.ACT#B ITB: 50TRTS R05,RV MO 0:R5ET SR CHETG: 50TRGE N URETR 0 ,R)+SP(D AD  R0 SLA 0 RL AS  P)(S,-R0 OVM 0 RL AS  R0 SLA 0 RL AS  50* 0 RLYIPLTMU;   : 50LRMU RNTURE  R0L,BOYMSV MO $: 5B TNSE $: 4 $ 1R B + 1)(R STT $ 3Q BE  2$ CSB 2 RR AS  4$ LEB 0 R5ETG: 3$ 1)(R0,RD AD  1$ CSB 2 RR  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 ;TRUE? BEQ 12$  ; YES, USE IT MOV MSBCNT,ATION ; ; ; REGISTER ASSIGNMENTS ; ; EVEN REGISTERS ARE ASSOCIATED WITH A LIBRARY DIRECTORY ; ODD REGISTERS ARE ASSOCIATED WITH A SYMBOL TABLE. ; R0 DIRECTORY POINTER ; R1 SYMBOL TABLE POINTER ; R2 SIZE OF DIRECTORY SEGMENT ; R3 SIZE OF SYMBOL TABLE ; R4 CURRENT DIRECTORY SYMBOL ; R5 CURRENT UNDEFINED FROM SYMBOL TABLE ; START6: MOV STBC-L6,R3 ;GET SYMTAB BC BEQ OUT5  ;NO UNDEFINED GLOBALS IN SYMT MOV R3,SVSTBC-L6 ;SAVE SYMTAB BC MOV FDATA-L6,R0 ;GET PTR TO AS $: 20 R5ULML ALC: 1$ 5$ GEB 6 #30,RP CM  5$ LEB 0 R5ETS 2 ,R5564#2 OVM ) R1-( LRC ) R1-( LRC 1 ,R+4OLMBSY#V MO  ANSCREF OSECAN IVESA;G BEYM,SNTRPCH OVM G REAVS : YMTSGE RSLENDHAR TEACARCHL/BOYMSL TTSB. DCEN. N URETR L UL NIFR ROER; 1 M4ERTQ BE  NGTIOAFLD OR WNE OSSCERO;P  1WTGFL LLCA  KSANBLS ASYP;B   NBETG: 5$ TGFLXF NDF .I  RNTURE  IXAD RRETOES;R IXADCR+,P)(S OVM M ER TTEUAALEV; 0 M4ERTL ALC L CALOH 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 #BPMB-1,R1 ;MACRO, END OF BLOCK? BNE 21$  ; N1ST DATA ITEM MOV BC-L6,R2 ;GET DIR BC ADD #2,R2 MOV SYME-L6,R1 ;SET UP SYMTAB PTR MOV (R0)+,R4 ;GET NEXT DIRECTORY SYMBOL MOV (R1)+,R5 ;GET NEXT UNDEFINED IN SYMBOL TABLE TSTB MONLIB-L6 BNE TSTEND COMP1: CMP R4,R5  ;COMPARE SYMTAB SYMBOL TO DIRECTORY    ;SYMBOL BEQ MATCH1  ;IF SYMBOLS MATCH GO TO 2ND COMP ; ; MISMATCH ; ATTEMPT TO INCREMENT INDEX OF SYMBOL TABLE ; MISM1: TST (SP)  ;NOOP TRYINC: ADD #12,R3  ;INCREMENT SYMBOL TABLE COUNT IT WCELAEP;R IXADCR2,RV MO  IXAD RNTREUR CCKTA;S P)(S,-IXADCR OVM 2 ,R2.#D AD $: 42 ,R6.#D AD $: 32 ,R2.#D AD $: 2 E UTOLBS ABET US;M  STSTAB MPJ E LUVAT ENEMPLOM;C  4)(R OMC E UTOLBS ASSCERO;P  40RMTE LLCA $: 1 0 RDWO. C ND.E  ^F ;$ 5, .FETLL TBCHG G LTXF DF NIF. B ^; 4$ .BETLL TBCHG O ^; 3$ O,T.LE BLHTGC  ^D ;$ 2, .DETLL TBCHG C ^; 1$ C,T.LE BLHTGC  LEAB TOWRR AUP;   : BLRTUA 28RMTE BR  NETIOU RLLCA; ) R0(L ALC R ROERO 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 NUMBER SEQEND: .BLKW FFCNT: .BLKW 1  ;UNPROCESSEBNE INCTAB  ;IF MORE SYMBOLS IN SYMTAB GO TO    ;INCREMENT INDEX ; ; REACHED THE END OF THE UNDEFINEDS IN SYMBOL TABLE ; TSTB MONLIB-L6 BNE INCMC1 ADD #10,R2  ;INCREMENT DIRECTORY COUNT OUT1: BR OUT6 OUT5: JMP FINI INCMC1: ADD #16,R2 OUT6: BGE FINI  ;FINISHED IF NO MORE SYMBOLS IN DIRECTORY ; ; DID NOT REACH THE END OF THE DIRECTORY ; TSTB MONLIB-L6 BNE INCE1 ADD #6,R0  ;POINT TO NEXT DIR ENTRY BR OUT2 INCE1: ADD #14,R0 OUT2: MOV (R0)+,, IDALNV I;  41RMTE EQB R TEACARCHT EX NONN CA;S  BLRTUA ANSCCH  OWRR AUPS ASYP;B   HRTCGE  ^" ";   : 50RMTE T XI END ASSPABY, ES;Y  27RMTE BR  ORRR EO, N;  41RMTE NEB ? >";" AB.RCH,#R5 MPC N IOSSREXP ELLNUN-NOS ESOCPR;  P EXLBG S ASYP B","<;   NBETG: 47RMTE RNTURE  ITG LA;F 3)(RG,FLEG#R ISB T TSBSA N IOSSREXP EERSTGIRE; 0 M4ERTL ALC: 46RMTE ARCHT AS LSSPABY; 7 M2ERTR B S YE ; $ 1Q BE  ERCTRAHA CERTHNO;A  D 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 PASS  ;PASS 1? BEQ 9$  ; YES TST ERRR4 ;GET NEXT DIRECTORY SYMBOL ; RESTART UNDEFINEDS IN SYMBOL TABLE MOV SVSTBC-L6,R3 ;RESET SYMBOL TABLE SIZE COUNT MOV SYME-L6,R1 ;REPOSITION THE POINTER IN R1 TO    ;THE BEGINNING OF THE SYMBOL TABLE MOV (R1)+,R5 ;GET NEXT UNDEFINED IN SYMBOL TABLE BR COMP1  ;GO TO COMPARE FIRST UNDEFINED    ;IN SYMBOL TABLE ; INDEX UNDEFINEDS IN SYMBOL TABLE ; INCTAB: ADD #10,R1  ;POINT TO NEXT SYMTAB ENTRY MOV (R1)+,R5 BR COMP1  ;GO TO COMPARE FIRST UNDEFINED MATCHR2 ECD C ND.E  )+R1,(R5 VBMO  FF.I  EXND IND AIT BGNSIE BLSIOS PARLE;C )+R1,(00#2 CBBI  ARCHE UTOLBS ARETO;S 1)(RT,PNHR@C VBMO  LCEDXF NDF .I  OL EIFR ROER; 1 M4ERTQ BE  ERCTRAHA CXTNEE THT GE;  R CHETG: 1$ ERSTGIREE ORSTP EM TET S","';  R14,RV MO 5:M4ER TT IRKMA, "" "; 2 RC IN 4:M4ER T E UTOLBS ATS IRESUE ;B  STSTAB MPJ E LUVAE ATEG;N  4)(R EGN S LU PRYNA UOWRRBO; 0 M4ERTL ALC: 42RMTE RNTURE  ORRR ESSREDD A;  AR ROER 1:M4ER TL UL-NON NIFE BTS  ;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 MOV #LINBUF,LCENDL ;YES, POINT TO START OF BUFFE1: TST (SP)  ;1ST PARTS MATCHED COMP2: MOV (R0)+,R4 ;PREPARE FOR 2ND MATCHING MOV (R1)+,R5 CMP R4,R5 BEQ MATCH2  ;2ND PARTS MATCHED? MISM2: BR TRYIN2  ;NO- MISM3: TST (SP) TRYIN2: ADD #12,R3  ;TRY INCR SYMTAB COUNT BNE INCT2  ;SYMTAB ENDED? TSTB MONLIB-L6 BNE INCM2 ADD #10,R2  ;YES-TRY INCR DIR COUNT BR OUT3 INCM2: ADD #16,R2 OUT3: BGE FINI  ;DIR ENDED? TSTB MONLIB-L6 BNE INCE2 ADD #4,R0  ;NO- GET NEXT DIR ENTRY BR OUT4 RU TITEX; 8 M2ERTE BN  RMTEE ATLUVA;E   RMTE  OPY ARUNS ASYP;B   NBETG: 40RMTE 0D OR.W  ^" ";0 M5ERT, AR.UCH BLHTGC  <" ";7 M4ERT, AB.LCH BLHTGC  %" ";6 M4ERT, CT.PCH BLHTGC  '" ";5 M4ERT, CL.XCH BLHTGC  "" ";4 M4ERT, TM.QCH BLHTGC  -" ";2 M4ERT, UB.SCH BLHTGC  +" ";0 M4ERT, DD.ACH BLHTGC  L:TBOP U E RU TITEX; 8 M2ERTR B S ESOCPRD ANO GD,UNFO; ) R0(L ALC E USE URUT FOR FARLE;C  R2 LRC E ERTHT NO ; 9 M2ERTQ BE  LEAB TORATEROPY R 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? BNE 6$  ; NO, BYPASS EXTRA LINE MOV #SINCE2: ADD #12,R0 OUT4: MOV (R0)+,R4 MOV SVSTBC-L6,R3 ;RESTART UNDEFINES MOV SYME-L6,R1 ;IN SYMTAB MOV (R1)+,R5 BR COMP1 INCT2: ADD #6,R1  ;POINT TO NEXT SYMTAB ENTRY MOV (R1)+,R5 ;SYMTAB DID NOT END YET CMP -(R0),-(R0) ;RESTART DIR ENTRY TO 1ST PART MOV (R0)+,R4 ;OF SYMBOL PAIR BR COMP1    ;IN SYMBOL TABLE ; ; SYMBOLS MATCHED ; MATCH2: TSTB MONLIB-L6 BNE MONLT3 MOVB (R0)+,LBYTE-L6 BITB #10,LBYTE-L6 BEQ INTERM  ;UNDEF MOVB (ARUNN CA;S  BLPTUO ANSCCH  0:M3ERT RNTURE 9:M2ER TD UNFOS AAGFL; 0 RZ TNSE  NKLA-BON NTOG INNTOI PRNTURE;  B TNSE 8:M2ER TR LAOL DORT DOS ASYP;B   HRTCGE 7:M2ER TD NEFIDEUNS AAGFL, NO ; U ORRRE: 26RMTE DCEN. D UNFOF ICHANBR; 7 M2ERTE BN  OLMBSYL CALO, NO;  H RCLS  SBDLXE DF NIF. S YE ; 7 M2ERTQ BE  L?MACIDE;T DOH.#C5,RP CM $:25 1$2R B X DIRAL MACIDEH IT WINGA ARY T;  R2.,10#V MO  O,;N   YMTSSE  ES Y;  5$2Q TARS,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)  ;ANYTHING REQUESTED? BEQ ENDL20  ; NO CLRR0)+,HBYTE-L6 ;DEFINED CMPB #1,HBYTE-L6 ;IS IT A SECTION,OR A SYMBOL? BEQ MATCH3  ;MATCHED A SECTION NAME CMPB #4,HBYTE-L6 ;MATCHED A SYMBOL BEQ MATCH3 TST -(R0) BR MISM3 MONLT3: BITB #1,(R1) BNE MONMAT BR MISM3 INTERM: TSTB -(R0) BR MISM3 MONMAT: MOV 6(R0),4(R1) CMP -(R1),-(R1) BR INCM2 MATCH3: MOV #1,DIRSRV-L6 BR FINI1 TSTEND: TST R4 BEQ FINI JMP COMP1 FINI: MOV #0,DIRSRV-L6 FINI1: RTS PC .IFNDF NOSEG BE  L?MACIDEE WREWE, $" "OR" ".; . 10,#R2 MPC: 4$ 2 8 M2ERTR B T IAGFL, ES;Y  NR ROER  NO ; 8 M2ERTQ BE  E?NGRAF OUT ORSBEUM NNY AO,;N  R0 TBTS  DCEN. S YE ; $ 24 EQB ? OLMBSYL CALO, NO;L DOH.#C5,RP CM  SBDLXE DF NIF. S YE ; $ 24 EQB ? ALIMEC DR,BEUM;N OT.DCH,#R5 MPC: 2$ 2T IAGFL, ES Y;  TR ROER  W?LORFVE ONY AR,BEUM;N  2$2L BP  INGA AEDSSMI, PENO ; 0 M3ERTQ BE  RTVEON;C   UMTNCV $:21 IXAD RNTREUR CR,BEUM NMESUAS;2 ,RIXADCR OVM B @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 (R1)  ;ANYTHING FOR SECOND FIELD? BEQ 15$  ;  ENDO06: SIZO06=ENDO06-BEGO06 ; ;*****OVERLAY #7***** L7=BEGOVR-BEGO07  ;COMPUTE OFFSET FROM    ;RUN TIME OVERLAY AREA BEGO07: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP START7  ;ENTRY1 JMP PMAP10  ;ENTRY2 .ENDC ; ; SUBROUTINE TO PRINT THE LOAD MAP (PMAP) ; ; OUTPUT TO MAPSL ; INIT MAPSL TO DEVICE CODE IN MAPDEV ; ; SET POINTERS TO SYMBOL TABLE START7: SAVREG MOV SP,SSP-L7 ;SAVE SP MOV SYMB-L7,R2 ;BEGINNING OF TABLE : 20RMTE 8 M2ERTR B O ER ZISE OD MRESUE ;B  3)(R LRC: 7$ 1U ORRRE D NEFIDEUNS ARTSEIN, LEAB TINT NO;  T ERNSI S ERNTOI PCHARSET SE;  H RCSS  ES;Y  7$1I BM  E?OD COP; ) R3(T TS  E?OD-COPN APSHAER PD,NEFIDER SE UOT;N   CHSRO: 6$ 1 8 M2ERTR B G LA FET SO,;N 3)(RG,FLEL#R ISB S YE ; 8 M2ERTQ BE  N?IOCTSEE UTOLBS;A  3)(R STT S AGFLR EACL; ) R3(B LRC 4 ITXM LLCA  R2L,BOYM#S OVM A RE ANGKIOR WTOE OV MT,DO;1 ,RAMCNCL#V  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)+,R1 CMP R1,#1000. ;WE DON'T WANT ; ; INITIALIZE MAP OUTPUT DEVICE ; MOV #MAPDEV,-(SP) ;.INIT THE DATA SET EMT INIT INCB MAPOPF-L7 ;INDICATE MAP OPEN TST MAPADR+4-L7 BNE .+10 MOV #0,MAPADR+4-L7 ;SET DEFAULT EXTENSION .=.-4 .RAD50 /MAP/ .=.+2 MOV #OPENO,MAPADR-2-L7 MOV #MAPADR,-(SP) MOV #MAPDEV,-(SP) EMT OPEN MOV #PMAP14,-(SP) ;SET UP ABORTING ADDRESS MOV #2,-(SP) EMT RSTRT MOV #PMAP86,R0 ;PRINT HEAD MAPTYP ; MSG TRAM IS ALREDY FORMATTED MOV #TRAM,R0 MAPMO $:14 28RMTE BR  AGFLL BALO GALRNTEINR EACL;) R3,(LGBFGL#C BI $:12 ORRR EEDINEFND UO,;N  UR ROER  ES Y;  28RMTE NEB ? ALOBGL, NO;) R3,(LGBFGL#T BI  ES Y;  2$1E BN  D?NEFIDE;) R3,(LGFFDE#T BI $:11 ES Y;  MR ROER  NO ; $ 11 EQB ? EDINEF DLYIPLTMU;) R3,(LGFFMD#T BI  NDOU FOT NIFH NCRA;B  6$1Q BE  LEAB TOLMBSYE THH RCEA;S   CHSRS L IAECSPT EATR, ES Y;  4$1Q BE  R?TEUNCON IOATOC;L OT0DR5L,BOYMSP CM  EFFRCR  DXLNROL,ROYM#S OVM L BOYM 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,(R0)  ;NEW CREF NUMBER TO PUT OUT? BEQ 16$  ; TYP BR PMAP01  ;GO TO PRINT LOOP ; UPDATE POINTER AND LOOK FOR END OF TABLE. PMAP02: ADD #BPSYM,R2 PMAP01: CMP R2,SSYME-L7 ;DONE BHIS PMAP09  ;YES - GO DO UNDEFINES MOVB FLAGS+1(R2),R3 ;NO - GET ENTRY TYPE MOV #PMAP82+6,R1 ;ADR OF OUTPUT BUFFER CMP R3,#PMAX BLE .+4 ERR14 ASL R3 JMP @SCMDT-BEGO07+BEGOVR(R3) ;DISPATCH ; ; TEST FOR & LIST UNDEFINES ; PMAP09: MOV SSYME-L7,R0 ;ANY UNDEFINES? CMP USYME-L7,R0 BEQ PMAPX1  ;NO - GET OUT    ; 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, NO ; L LVELRC IN  1$ EQB ? UETR;) R3,(LGLFRE#T BI  TELUSOABE UMSS;A  VLLLRE LRC S OUNERAXT EARLE;C 3)(RG,FLDF!MLGLFLBG!FLEF#D ICB S ESOCPR; 0 M1ERTL ALC E LUVAD AN ; ) R4(R CL  DEMOR EACL; ) R3(R CL  PRVXSA  ORATLUVA ERMTE;   : RMTE ORATLUVA ERMTE TLBT.S  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 #OCTBUF,R1 ;POINT TO OCTAL BUFFER CALL TSTHDR  ;TEYES - PRINT THE HEADING ; ; PRINT HEADING ; MOV R0,-(SP) MOV #PMAP80,R0 ;PRINT SOME STARS MAPTYP MAPTYP   ;MORE STARS MOV #PMAP84,R0 ;"UNDEFINED REFS" MAPTYP MOV (SP)+,R0 CLRB PMAP11-L7 ; ; PRINT VARIABLES, ONE PER LINE. ; PMAP16: BIT #MONCND,FLAGS(R0) BEQ PMAP10 ADD #BPSYM,R0 CMP R0,USYME-L7 BLO PMAP16 BR PMAPX1 PMAP10: MOV #PMAP82+6,R1 UNPACK MOVB #CR,(R1)+ MOVB #LF,(R1)+ MOV #8.,PMAP82+4-L7 ;SET BC MOV R0,-(SP) 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 : XPSEAB 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;   ST FOR HEADER AND LIST ENDL20: .IF NDF XEDWRP BIT #ED.WRP,EDMASK ;WRAP-AROUND REQUESTED? BNE 26$  ; NO MOV LCBEGL,R1 ;YES, POINT TO CURRENT START MOV #-,R3 ;INIT TO MINUS CHARS PER LINE 21$: MOV R1,R2  ;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 TO N-1 23$: INC R3  ;BUMP COUNT BNE 22$  ;TEST FOR START OF NEW SEMOV #PMAP82,R0 TSTB PMAP11-L7 BEQ PMAP12 TYPE BR PMAP13 PMAP12: MAPTYP PMAP13: MOV (SP)+,R0 ADD #BPSYM,R0 ;UPDATE PTR TO NEXT SYMBOL CMP R0,USYME-L7 ;DONE? BLO PMAP16  ;NO - DO IT AGAIN ; DONE PMAPX1: MOV #LINK,-(SP) ;RESTART MOV #2,-(SP) EMT RSTRT RESREG   ;RESTORE REGISTERS ; ; CLOSE MAP FILE ; TSTB PMAP11-L7 ;DO NOT CLOSE IF BNE PMAP15  ;LISTING UNDEFINES CLRB MAPOPF-L7 ;CLEAR MAP DEV OPEN FLAG MOV #MAPDEV,-(SP) EMT C 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)(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$ GMENT 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.BIN,LCMASK ;BINARY EXTENSION SUPPRESSED? BEQ ENDL10  ; NO BR ENDLLOSE ; ; RELEASE MAP DATA SET ; MOV #MAPDEV,-(SP) EMT RELEAS PMAP15: RTS PC  ;EXIT ; SCMDT--SYMBOL TABLE ENTRY TYPE DISPATCH TABLE. ; COMMANDS ARE: OBJ-MOD NAME, PROG-SECT NAME, INT-SYM NAME, ;   TRA-SPEC, SYMBOL ENTRY ; SCMDT: .WORD PMAP03-BEGO07+BEGOVR .WORD PMAP04-BEGO07+BEGOVR .WORD PMAP05-BEGO07+BEGOVR .WORD PMAP05-BEGO07+BEGOVR .WORD PMAP06-BEGO07+BEGOVR ; CNTRL-C RETURN SEEN DURING MAP ;  ABORT IT. ; PMAP14: MOV SSP-L7,SP ;RESTORE SP BRLTB ? 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,-6.#1 OVM E INUTROE IDIV DALEREN;G    V:DI R03, RUL;M     D)RENOIG0 (R 0 ,RR3V DI;   5 V4DPPF NDF .I  N URETR T ULES RET;S  4)(R0,RV MO $: 1T ITEGANE, NO; 0 RG NE  ISS AOK ; $ 1L BP  LTSURET ES;T  )+SP(T TS X:DV!20  ;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 #LINNUM,R0 MOV (R0)+,R1 CMP R1,(R0) BEQ 2$ MOV R1,(R0) BIT" PMAPX1  ;GET OUT ; ; OBJ-MOD NAME PMAP03: MOV #PMAP80,R0 ;PRINT STARS MAPTYP ;MOVE IN "MODULE" MOV #"MO,(R1)+ MOV #"DU,(R1)+ MOV #"LE,(R1)+ MOVB #TAB,(R1)+ ;PUT TAB IN BUFFER MOV R2,R0  ;R0=ADR OF NAME UNPACK   ;DO MOD40 UNPACK MOV #15.,PMAP82+4-L7 ;SET BC PMAP07: MOVB #CR,(R1)+ ;PUT IN CR MOVB #LF,(R1)+ ; AND LF MOV #PMAP82,R0 ; MAPTYP ;PRINT EXTRA HEADING IF OBJ-MODULE CMP SCMDT-BEGO07+BEGOVR(R3),#PMAP03-BEGO07+BEGOVR BNE PMAP02XP E 0 ,RR3 IVD E ATEROP; 0 RR CL $: 2) SP(M CO  R1 EGN ! !!INGA;A  2$ PLB T ENTIUO QET;S  R1),R2(V MO $: 1S HU TITE AK;M  R3 EGN S LU PIFH NCRA;B  1$ PLB Y OP C AVESA;) SP-(3,RV MO  ORISIV DET;S  R3),R4(V MO  /;   : IVPDEX DEVIDIH UGROTHT XI;E  VXPDEX BR  ITEXR FOT SE; 0 ,RR1 OVM Y PLTIUL;M  R03,RL MU $: 2N IG SLTSUREE GLOG;T  P)(S OMC + T IKEMA, VETIGANE; 3 RG NE  VETISIPOF ICHANBR; $ 2L BP  RG ANDCOSET SE; 3 ,R4)(R OVM% #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 #GLBFLG!RELFLG,(R1) BEQ 6$ MOVB #CH.XCL,(R2)+ BIT #GLBFLG,(R1) & MOV #PMAP88,R0 MAPTYP BR PMAP02  ;GO FOR MORE ; ; PROG-SECTION NAME ; PMAP04: MOVB #LANG,(R1)+ ; MOV IN "<" MOV R2,R0 UNPACK   ;MOD40 UNPACK MOVB #RANG,(R1)+ MOVB #TAB,(R1)+ MOV BASE(R2),R0 ;GET BASE VALUE INTO R0 OTOA   ;OCTAL TO ASCII CONVERSION MOVB #TAB,(R1)+ ;INSERT A TAB MOV VALR(R2),R0 ;GET SIZE OTOA   ;DO CONVERSION MOV #24.,PMAP82+4-L7 ;SET PROPER BC BR PMAP07 ; ; INTERNAL SYMBOLS AND TRA ARE ILLEGAL PMAP05: ERR07 : 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: 11OP B N URETR ) R4,(2)(R ICB ) R2(M CO 0:P1BO GEAN RBS AOFT ARST;   : BSPABO RRSEAB MPJ: 5$ RNTURE  )+R3,()+R1(S BI  )+R3,()+R1(V MO  )+R3,()+R1(V MO $: 4 N URETR: 3$ 4)(RG,FLEL!R007417#C BI  3$ NEB L LVELRT TS  4)(RG,FLEL#R ISB R ROER, NO ; $ 5E BN  R?)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 ROR ERRBTS  ;ROTATE ERROR BITS BCC 2$ MOVB (R1),(R2)+ .IF NDF*; ; ENTRY SYMBOL ; PMAP06: MOVB #TAB,(R1)+ ;INSERT TAB MOV R2,R0 UNPACK   ;MOD40 UNPACK MOVB #TAB,(R1)+ MOV BASE(R2),R0 OTOA   ;CONVERT ABSOLUTE VALUE TO ASCII MOV #16.,PMAP82+4-L7 ;SET BC BR PMAP07 ; .IFNDF NOSEG ENDO07: SIZO07=ENDO07-BEGO07 ; ;*****OVERLAY #8***** L8=BEGOVR-BEGO08  ;COMPUTE OFFSET FROM    ;RUN TIME OVERLAY AREA BEGO08: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY. ; JMP START8  ;ENTRY1 .ENDC ; ; PROCESSING FOR PATOEC 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 ; $ 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 V- 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 CDR,,1 ENTSEC IMPURE CDRSAV: .BLKW   ;SAVED CHAR FROM CARD FORMAT .SS2 ; START8: TSTB LIBF-L8 BNE LNK03 IOII   ;INPUT INIT. SET R0,R1 TO BUFFER. LNK05: CLR GENDF-L8 ;NO GSD END SEEN. LINK76: BITB #EOF,-1(R0) ;ERROR? BEQ .+6 JMP LINK53  ;YES,IGNORE INPUT CMPB #GSDBLK,(R1) ;IS THIS A GSD BLOCK BEQ LINK42  ; ERR03   ;ERROR-MODULE MUST START    ;WITH GSD FOR MODULE NAME LINK42: CMPB #OBJMN,7(R1) ;IS THIS THE NAME? BEQ LINK43 ERR04   ;ERROR. LINK43: MOV PTRG-L8,R2  ;SET R2 TO NAME IN SYMBOL TABLE TSTTEGANE, -; ) 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  -" ";1 OPB, UB.SCH BLHTGC  +" ";2 OPB, DD.ACH BLHTGC  LEAB TOPY ARIN;B    L:TBOPB 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 1.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$: JMP PROPC  ;PROCESS OP CODE 20$: .IF NDF XEDLS2 (R1)+  ;ADVANCE POINTER TO MODULE NAME CMP (R2)+,(R1)+ ;IS THE NAME OK? BNE LINK44  ;NO-ERROR CMP (R2),(R1) ;TRY SECOND WORD. BNE LINK44  ;ERROR. CLRB FILEOR-L8 ; START READING THE NON-GSD BLOCKS. LINK45: GNGSD   ;GET A NON-GSD BLOCK    ;R0 POINTS TO BC.    ;R1 POINTS TO FIRST BYTE OF BUFFER. SUB #2,(R0)  ;DECREMENT BC. MOV (R1)+,R2 ;GET BLOCK TYPE BITB #EOF,-1(R0) ;INPUT ERROR? BNE LINK47  ;YES,TREAT AS MODULE END CMP #TXTBLK,R2 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 N ER TXTNEE ATLUVA;E   RMTE  OPS ASYP;B   NBETG S ESDRADR TORAPE;O P)(S,-R0 OVM L BOYM SUSIOEVPRO TTSINPO1 ;R  R1P,SV MO  L"BOYM"SO TET SR3;) SP-(),R3-( OVM ) DSOR WWO(TL BOYM S; P)(S,-3)(R-V MO  DEMO ;) SP-(),R3-( OVM E LUVAS OUVIRE PTOS NTOI PR2; 2 ,RSP OVM E LUVA ;) SP-(),R3-( OVM5B 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 PROCESSOR .ENDC 30$: SETSYM   ;RESET CHAR POINTER AND FLAGS TSTB CT6;TXT? BEQ LINK46  ;YES. CMP #MODEND,R2 ;MODULE END? BEQ LINK47  ;YES CMP #GSDEND,R2 ;GSD END? BNE .+6 INC GENDF-L8 CMP #RLDBLK,R2 ;RLD? BNE LINK45  ;NO-IGNORE ALL OTHER BLOCKS. MOVB #3,T-L8  ;SET T SWITCH TO 3. CMP -(SP),-(SP) ;FAKE DOUBLE PUSH. JMP LINK48  ;GO PROCESS RLD. ; ; MODULES OUT OF ORDER ; LINK44: MOV #OBJDEV,-(SP) EMT STAT TST (SP)+ BPL LNK151 INCB FILEOR-L8 TSTB CONCAT-L8 BEQ LNK150 LNK141: IOIG BIT L VELEL REK ACST;) SP-(),R3-( OVM M ER TUSIOEVPRK ACSTO TET;S R3.,10L+BOYM#S OVM: 0$ 1 N URETR: 5$ UETRT SE; 0 RZ TNSE  IT BERSTGIREE RGME;) R3,()+SP(S BI $: 4N IOAROCEL REROPPRIM; A ORRRE: 3$ 4$ BR  ORRR EG,RED ANL RE; R ORRRE T SET NOF ICHANBR; $ 4Q BE  AGFLR TEISEG RSTTE, LEABATOCEL;R  P)(S STT 0 F ICHANBR; $ 4C BC  1OR0 T NOF ICHANBR; $ 3E BN  ELEV LONATOCEL RSTTE; L LVELRR AS  AGFLR TEISEG RUT BLL ASKMA;) SP,(LGGFRE1-#- ICB D UNFO9TBL(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 SETCLI: 1$: GETSYM   ;TRY FOR SYMBOL BEQ 3$:B #EOF,-1(R0) BEQ .+10 CLRB FILEOR-L8 BR LNK150 CMPB #MODEND,(R1) BEQ .+4 BR LNK141 JMP LINK75 LNK150: JMP LINK53 LNK151: MOV PTRG-L8,R0 MOV #ORDRER,R1 UNPACK MOV #ORDRM,R0 TYPE MOV #406,CODE-L8 ;CODE=A006 CLR -(SP) MOV CODE-L8,-(SP) IOT MOV #OBJDEV,-(SP) ;CLOSE & RELEASE INPUT MOV (SP),-(SP) EMT CLOSE EMT RELEASE BR START8  ;TRY AGAIN LNK03: IOIG BR LNK05 ; ; TXT BLK ; ; MOVE TXT BLOCK TO A SAVE AREA ; LF ICHANBR; $ 10 NEB E BLTAR TORAPE ORYNABIE THN CA;S  BLPTBO ANSCCH  AGFLR TEISEG RVESA;) SP,(3)(R ISB 4 ,RUEAL#V OVM S ERNTOI POFE PLOU C AET;S R3E,OD#M OVM: 1$ GERATO SAGFLR TEISEG RET SL,UL-NON;N  P)(S-R CL  LLNUF IITEX; $ 5Q BE  RMTEA R FOY TR;  M ERT S ERSTGIREE AV;S   EGVRSA  ONTIUAALEVN IOSSREXP;E    R:XP E R TOUAALEVN IOSSREXPEL TTSB. ECTSXI  /2ENDLRL KWBL.: UFDBRL 3W LK.B R:HDLD R 1 KWBL.: NDNELI /2ENNLLI =  ; 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 PROCESSOR CMP SYMBOL,R50DOT ;PERIOD? BEQ 4$  ; YES, ERROR .IF NDF XEDLS>INK46: MOV #TXTSVB,R2 ;ADR OF TXT SAVE AREA MOV R2,-(SP) MOV (R0),(R2) ;MOVE IN BC SUB #2,(R2)+ SUB #2,(R0) MOV CURPC-L8,(R2)+ ;MOVE IN CURRENT PC MOV R2,-(SP) TST (R1)+  ;ADVANCE PTR TO 1-ST    ; DATA WORD. LINK59: DEC (R0)  ;DONE? BLT LINK49  ;YES MOVB (R1)+,(R2)+ ;MOVE IN A BYTE BR LINK59 LINK49: CLRB T-L8 GNGSD   ;GET NEXT NON-GSD BLOCK. MOV (R1)+,R2 ;GET BLK TYPE. SUB #2,(R0) BITB #EOF,-1(R0) ;ERROR? BNE LINK62 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.: NKJLOB 1W LK.B  4W LK.B L:FIST L2 KWBL. 1 2+>/ENNLLIN+LECT,R0 ;CLEAR ALL BUT RELOCATION FLAG BIS #DEFFLG!LBLFLG,R0 ;FLAG AS LABEL BIS R0,MODE  ;SET MODE MOV CLCLOC,VALUE ; AND CURRENT LOCATION BR 3$  ;INSERT 1$: BIT #LBLFLG,FLAGS ;DEFINED, AS LABEL? BEQ 2$ B ;YES,TREAT AS MODULE END CMP #RLDBLK,R2 ;RLD? BEQ LINK48  ;YES CMP #TXTBLK,R2 ;TXT BEQ LINK50  ;YES CMP #GSDEND,R2 ;GSD END? BNE .+6 INC GENDF-L8 CMP #MODEND,R2 ;MODULE END BNE LINK49  ;NO-IGNORE ALL ELSE LINK62: MOVB #2,T-L8  ;TXT FOLLOWED BY MODULE END. BR LINK51 LNK06: JMP LNK10-L8 ; ; ADVANCE TO NEXT MODULE (MOVE PTRG IN SYMBOL TALBE). ; LINK47: MOV PTRG-L8,R2  ;GET PTRG ADD #5,R2  ;SET TO FLAGS OF A SYMBOL. LINK52: ADD #BP.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  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 E ; 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  ;TRY FOR MORE .SBTTL ASSIGNMENT PROCESSOR ASGMT: GFSYM,R2 ;MOVE TO NEXT ENTRY. CMP R2,SYME-L8  ;TOO FAR BHIS LINK53  ;YES CMPB (R2),#OBJMN ;IS ENTRY AN OBJ MODULE NAME? BNE LINK52  ;NO-TRY NEXT ONE SUB #5,R2  ;YES,DO ANOTHER MOV R2,PTRG-L8  ;INPUT FILE MOVB TAPES-L8,-(SP) BISB CONCAT-L8,(SP)+ BNE LINK75  ;IGNORE GENDF-L8 IF TAPES OR    ;CONCAT IS ON. TST GENDF-L8 ;SEEN GSD END? BEQ LINK75  ;NO, STAY IN SAME FILE LINK53: TSTB LIBF-L8 BNE LNK06 IOIC   ;CLOSE OBJECT MODULE FILE 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 ADEVIDI; $ 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;IETNB   ;BYPASS "=" MOV #SYMBOL+4,R1 ;SET MIX-MASTER REGISTER MOV -(R1),-(SP) ;STACK SYMBOL MOV -(R1),-(SP) RELEXP   ;GET NON-EXTERNAL EXPRESSION MOV (SP)+,(R1)+ ;RESTORE SYMBOL MOV (SP)+,(R1)+ ASGMTF: SETPF1   ;SET LISTING FIELD MOV #MODE,R1 ;REINSTATE INDEX FOR NEWCOMERS BIT #ERR.U,ERRBTS ;ANY UNDEFINED'S? BNE 3$  ; YES, DON'T DEFINE CMP SYMBOL,R50DOT ;MESSING WITH THE PC? BEQ 1$  ; YES BIS #DEFFLG,(R1) ;FLAG AS DEFINED MOV (R1)+,J    ;AND RELEASE ITS DATA SET    ;IN SECOND PASS JMP LINK97-L8  ;YES, DO NEXT FILE   LINK75: IOIG  ;GET NEXT BLOCK JMP LINK76  ; AND PROCESS. ; ; TXT FOLLOWED BY TXT ; LINK50: MOVB #1,T-L8 ; ; UPDATE CURPC BY SIZE OF LAST TXT BLK ; ADD @2(SP),CURPC-L8 ;USES STACKED R0 FOR POINTER TO    ;LAST TXT BLK BC. BR LINK54  ;GO OUTPUT LAST TXT BLK. ; ; TXT FOLLOWED BY RLD ; LINK48: PRLD   ;PROCESS RLD LINK51: CMPB #3,T-L8  ;ANY TXT TO OUTPUT? 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    F:NC DR SOVIDIT SE; 3 ,R0.#1 OVM N IORSVEON CERMBNUL MACIDE;   : NCD 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 EM-(SP) ;NO, STACK VALUE MOV (R1)+,-(SP) SSRCH   ;SEARCH SYMBOL TABLE MOV (SP)+,-(R1) ;RESTORE VALUE BIC #-1-GLBFLG,-(R1) BIS (SP)+,(R1) INSERT   ;INSERT NEW VALUE BR 3$ 1$: TSTB (R1)+  ;PC, MOVE PAST FLAGS CMPB (R1)+,CLCSEC ;SAME SECTOR? BNE 2$  ; NO, ERROR MOV (R1)+,CLCLOC ;YES, SET NEW LOCATION BR 3$ 2$: ERROR M 3$: CRFDEF RETURN .SBTTL OP CODE PROCESSOR PROPC:    ;PROCESS OP CODE MOV #MODE,R4 N BEQ LINK55  ;NO ; ; OUTPUT TXT ; LINK54: MOV (SP),R3  ;PTR'S TO TXT DATA MOV 2(SP),R2 ;AND TO TXT BC MOV PUTR0-L8,R4 ;PTR'S TO OUTPUT BC MOV PUTR1-L8,R5 ;AND TO OUTPUT DATA. MOV -2(R3),(R5)+ ;GET LOAD ADDRESS ADD #2,(R4)  ;UPDATE OUTPUT BC. LINK56: MOVB (R3)+,(R5)+ ;MOVE A DATA BYTE INC (R4)  ;OUTPUT BC UPDATE. DEC (R2)  ;DONE BGT LINK56  ;NO-DO ANOTHER. MOV R0,-(SP) MOV R1,-(SP) IOOP   ;OUTPUT THE BUFFER TSTB IOOPER-L8  ;O#,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 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 OVQ;POINT TO MODE MOV (R4),R1  ;LEAVE RESULT IN R1 CLR (R4)+  ;SET TO ZERO, POINT TO VALUE MOV #CLCLOC,R2 ;POINT R2 TO LOCATION COUNTER BIT #100000+DFLGEV,R1 ;OP CODE OR EVEN DIRECTIVE? BEQ 1$  ; NO BIT #1,(R2)  ;YES, CURRENTLY EVEN? BEQ 1$  ; YES INC (R2)  ;NO, MAKE IT EVEN ERROR B  ; AND FLAG ERROR 1$: BIT #DFLGBM,R1 ;BYTE MODE DIRECTIVE? BEQ 2$  ; NO INC BYTMOD  ;YES, SET FLAG 2$: TST R1  ;OP-CODE? BMI 10$  ; YES MOV RUT ERROR? BEQ .+6 JMP LINK25-L8 MOV R0,PUTR0-L8 ;SAVE R0,R1 MOV R1,PUTR1-L8 ;FOR NEXT OUTPUT MOV (SP)+,R1 MOV (SP)+,R0 LINK55: CMP (SP)+,(SP)+ ;REMOVE THE STACKED R0,R1 MOVB T-L8,R2 CMP R2,#TMAX ;INDEX OK? BLE .+4  ;YES ERR14 ASL R2 JMP @LINK57-BEGO08+BEGOVR(R2) LINK57: .WORD LINK45-BEGO08+BEGOVR .WORD LINK46-BEGO08+BEGOVR .WORD LINK47-BEGO08+BEGOVR .WORD LINK45-BEGO08+BEGOVR .IFNDF NOSEG ENDO08: SIZO08=ENDO08-BEGO08 ; ;*****M 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 ECTSXI  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 N U(R4),R0  ;NO, DIRECTIVE. ADDR TO R0 CLR (R4)  ;CLEAR VALUE CLR R3  ;START WITH R3=0 JMP (R0)  ;GO TO PROPER HANDLER 10$: MOV #077776,PCRCNT ;LIST LOCATION OF FIRST WORD ONLY STCODE   ;STUFF BASIC VALUE .IF NDF XCREF MOVB R1,CRFDFL+1 ;SET "*" CREF MARKERS .ENDC SWAB R1 BIC #177600,R1 ;CLEAR HIGH ORDER BITS MOV R1,OPCLAS ;SAVE CLASS ASL R1 ASL R1  ;FOUR BYTES PER TABLE ENTRY CLR -(SP)  ;SET A STOPPER MOV OPJTBL+2(R1),-(SP) ;STAVOVERLAY #9***** L9=BEGOVR-BEGO09  ;COMPUTE OFFSET FROM    ;RUN TIME OVERLAY AREA BEGO09: ;JUMP TABLE TO ENTRY POINTS ;IN THIS OVERLAY ; JMP DONE  ;ENTRY1 .ENDC ; ; ALL OBJ MODULES HAVE BEEN READ. CREATE TRA BLOCK ; ON THE LOAD MODULE, FOLLOWED BY TRAILER. DONE: MOV PUTR0-L9,R0 ;GET PTR'S TO OUTPUT BUFFER. MOV PUTR1-L9,R1 MOV #2,(R0)  ;SET BC MOV TRA-L9,(R1) ;SET TRA IOOP   ;DUMP TSTB IOOPER-L9 BEQ .+6 JMP LINK25-L9 ; ; CLOSE LOAD MODULE FURETR: 9$ AGFLT AI WET;S  ITWALL NCI T ITERI;W DRTHLS,#NKTLLS#E ITWR. O N;  9$ CCB ? CEVIDEG INSTLIT OUABW HO; 4 RR AS $: 7N IOETPLOM CITWA;A DRTHLSK,LNMOCF TOAIW E YP TS,YE;R HDST#LK,LNMO#C TERI.W  NO ; $ 7C BC  D?TEESQUREB ;K  R4 SRA E OD MARLE;C  3)(R-R CL  NTOU CET;S 3)(R,-R2 OVM T UNCOR TEACARCHE UTMPCO; 2 ,RR3 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 YCK SECOND ARG BNE 11$  ;BRANCH IF TWO ARGS TST (SP)+  ;ONE ARG, PRUNE TERMINATOR 11$: MOV OPJTBL(R1),R1 ;SET THE FIRST ARGUMENT BEQ 14$  ;BRANCH IF NO ARGS 12$: MOV R1,-(SP) ;SAVE A COPY OF THE ARG SWAB (SP)  ;SHIFT COUNT TO RIGHT HALF BIC #177400,R1 ;ISOLATE LOW BYTE TSTARG   ;COMMA TEST CLR R0  ;FUNCTION REGISTER CALL OPJBAS(R1) ;CALL PROPER ROUTINE .IF NDF XCREF ROLB CRFDFL+1 ;MOVE SECOND FIELD BIT .ENDC 13$: ASL R0  ;SHIFT RESULT ZILE ; TST LODDEV+6-L9 ;ANY LOAD MOD OUTPUT? BEQ LINK05  ;NO-- CLRB LODOPF-L9  ;CLEAR LOD DEV OPEN FLAG MOV #LODDEV,-(SP) MOV (SP),-(SP) EMT CLOSE ; ; RELEASE LOAD MODULE DATA SET ; EMT RELEAS ; ; CLOSE KEYBOARD FILE ; LINK05: MOV #INCMD,-(SP) MOV (SP),-(SP) EMT CLOSE ; ; RELEASE KEYBOARD DATA SET ; EMT RELEAS ; ; CLOSE TELETYPE FILE ; MOV #OUTCMD,-(SP) MOV (SP),-(SP) EMT CLOSE ; ; RELEASE TELETYPE DATA SET ; EMT RELEASE 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,.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 ] DECB (SP)  ;COUNT IN SP, RH BGE 13$ ROR R0  ;WE WENT ONE TOO MANY MOV ROLBAS+CODROL,R1 BIS R0,6(R1) ;SET EXPRESSION BITS TST (SP)+  ;PRUNE WORK ENTRY 14$: MOV (SP)+,R1 ;GET NEXT ARG FROM STACK BNE 12$  ;BRANCH IF NOT TERMINATOR .IF NDF XZERR MOV ROLBAS+CODROL,R1 MOV 6(R1),R0 ;SET FOR "Z" ERROR TESTS MOV R0,R1 BIC #000007,R1 CMP #000120,R1 ; JMP (R)+ BEQ 22$ BIC #000700,R1 CMP #004020,R1 ; JSR X,(R1)+^ JMP LINK-L9  ;RESTART LINKER .IFNDF NOSEG ENDO09: SIZO09=ENDO09-BEGO09 .ENDC .ENDC .IFNDF NOSEG .EOT ;TAPE 3 .CSECT ;BEGINNING OF OVERLAY AREA ;THE SIZE OF THE OVERLAY AREA IS DETERMINED ;BY THE SYMBOL "OVRSIZ" ; BEGOVR: ;THE BEGINNING REGISTERS OF EACH ;OVERLAY CONTAIN JMP'S TO THE ;ENTRY POINTS OF THE OVERLAY ENTRY1=. ENTRY2=.+4 ENTRY3=.+10 ENTRY4=.+14 ENTRY5=.+20 ENTRY6=.+24 ENTRY7=.+30 ENTRY8=.+34 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 $ 2C BC  LPR FOO TTDI; T AILWLR AS  RSTEISEG RCKTA;S   EGVRSA  NELIA T PUUT;O    N:LIUTP 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:TOa BEQ 22$ MOV R0,R1 BIT #007000,R1 ;FIRST ARG TYPE 0? BNE 23$  ; NO, OK BIC #100777,R1 BEQ 23$ CMP #070000,R1 ;DOUBLE ADDRESS TYPE? BEQ 23$  ; NO MOV R0,R1 BIC #170017,R1 CMP #000760,R1 ; MOV PC,[@]X(R) BEQ 22$ BIC #177717,R1 CMP #000020,R1 ; (R)+ BEQ 21$ CMP #000040,R1 ; -(R) BNE 23$ 21$: MOV R0,R1 ROL R1 ROL R1 SWAB R1 SUB R0,R1 BIT #000007,R1 ; R1=R2 BNE 23$ 22$: ERROR Z 23$: .ENDC CPbENTRY9=.+40 .=.+OVRSIZ ;OVERLAY DEVICE LINK BLOCK ; .WORD 0  ;ERROR RETURN ADDRESS OVRLB: .WORD 0  ;LINK POINTER (DDB) .RAD50 /OVR/  ;LOGICAL DATA SET NAME .BYTE 1  ;DEVICE SPECIFIED .BYTE 0  ;UNIT NUMBER .RAD50 /DF/  ;DEVICE NAME ; ;OVERLAY DEVICE FILE BLOCK ; .WORD 0  ;ERROR RETURN ADDRESS .BYTE 13  ;HOW OPEN COEE (OPENC) .BYTE 0  ;ERROR RETURN CODE OVRFB: .RAD50 /LIN/  ;FILENAME AND EXTENSION .RAD50 /K11/  ;IN RADIX 50 .RAD50 /AI 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  R02,#V MO P:TLPU BFTKPU BR  KBO TUTTPOU; 0 ,R#1 OVM: KBUT P C SEITX / E AG P/Z CIAS.: D1THTS YTTBTX ECTSEN  NELIT PUUT OOW;N  INTLPU BR  R0+,P)(S OVM 1 ,R)+SP(V MO $: 1T UNCOE IN LEW NET;S NTPCLPP,LP#V MO  NELIK ANBLA D AN ; F RLCP TLPU  E,TLTIB-SU ;eOPJ: RETURN .MACRO GENOPJ NUMBER,SUBR1,SC1,SUBR2,SC2 ;OP CODE JUMP TABLE .GLOBL OPCL'NUMBER OPCL'NUMBER= <.-OPJTBL>/4 .IIF NB , .BYTE SUBR1-OPJBAS .IIF B , .BYTE 0 .BYTE SC1+0 .IIF NB , .BYTE SUBR2-OPJBAS .IIF B , .BYTE 0 .BYTE SC2+0 .ENDM ENTSEC DPURE OPJTBL:    ;OP CODE JUMP TABLE GENOPJ 00 GENOPJ 01, AEXP GENOPJ 02, AEXP, 6, AEXP GENOPJ 03, REGEXP GENOPJ 04, BROP GEfOVR/  ;NOTATION USERID: .WORD 0  ;USER ID CODE .BYTE 233  ;PROTECT CODE .BYTE 0 ; ;OVERLAY DEVICE INPUT TRAN BLOCK ; OVRTBI: .WORD 0  ;DEVICE BLOCK NUMBER .WORD BEGOVR  ;MEMORY START ADDRESS .WORD OVRWRD  ;WORD COUNT OVRIER: .WORD 4  ;FUNCTION (READ) .WORD 0  ;NUMBER OF WORDS NOT TRAN'D ;SUBROUTINE TO DIVIDE THE TOP WORD OF ;THE STACK BY THE NEXT WORD. EXITS ;WITH THE QUOTIENT ON TOP OF THE ;STACK. THE QUOTIENT IS INCREMENTED BY ;ONE IF THERE IS A REM  UFLBST LPUTP T IUTTPOU;  N LIUTP E TLTIF ORTTA STOT INPO;1 ,REGLBTT OVM 0 ,R#2 OVM ) R2(B LRC: 2$ )+R2,(DD.ACH#B OVM $ 2Q BE  XTGEPA NCI L MACIDEO TRTVEON;C   NCD 1 ,RUMGNPA OVM N IOITOS PTOIN" GEPA "VEMO;  T BYOVM 1 ,RD1THTS#V MO  2$ EQB S ASPT TS  ERMBNUE AG PTOT INPO;2 ,RNDLETT OVM E IM TOT NIFP KI;S  1$ GEB T UNCOT ENEMCRDE, ES;Y  NTPCLP ECD O N;  1$ EQB ? CEVIDEG INSTLIL CASIHY;P  +2BLLTLB STT ) SP-(1,RV MO  GSLA FNGiNOPJ 05, REGEXP, 6, AEXP GENOPJ 06, TRAPOP .IF NDF X45 GENOPJ 07, AEXP, 0, REGEXP, 6 GENOPJ 08, REGEXP, 6, SOBOP GENOPJ 09, AEXP, 0, REGEXP, 6 GENOPJ 10, MARKOP GENOPJ 11, AEXP, 0, DRGEXP, 6 GENOPJ 12, DRGEXP, 6, AEXP, 0 GENOPJ 13, SPLOP GENOPJ 14, AEXP, 0, DRGEXP, 6 .ENDC ENTSEC IMPLIN OPCLAS: .BLKW   ;OP CODE CLASS XITSEC OPJBAS:    ;INDEX BASE FOR FOLLOWING ROUTINES RETURN REjAINDER. ; CALLING SEQUENCE: ;  MOV DIVISOR,-(R6) ;  MOV DIVIDEND,-(R6) ;  JSR R7,DIVIDE ;  MOV (R6)+,QUOTIENT ;R0 IS DESTROYED DIVIDE: MOV #1,R0  ;QUOTIENT AT LEAST 1 DIVID1: SUB 4(R6),2(R6) ;SUBTRACT DIVISOR FROM DIVIDEND BLE DIVID2  ;DONE? INC R0  ;NO. BR DIVID1 DIVID2: MOV R0,4(R6) ;QUOTIENT MOV (R6)+,@R6 ;R7 RTS R7 ; ;THE FOLLOWING TABLE IN THE RESIDENT ;LINKER CONTAINS A ONE WORD ENTRY ;FOR EACH OF THE N OVERLAYS. THE ;1ST WORD OF THE TABLTIIS LVESA;) SP-(0,RV MO  EGVRSA  NELIT PUUT OND AERADHER FOT ES;T    R:HDST T T PUUT ONGTIISLL TTSB. ECTSXI  KWBL.: YPKTBL KWBL.: NTDPRL KWBL.: NTJPOB REPUIM ECTSEN  RNTURE X:INBJ OT PNLD,R+2UFDBRL#V MO  NTJPOBF,BUBJ#O OVM: NIJIOB $: 9R HDLD,RNKJLOB OFITWA  DRDHRL,#NKJLOB#E ITWR. ) R0-(1,#V MO  0)(RF,BULD#R UBS ) R0-(T,PNLDRV MO  0)(RP,TYLKBV MO  R0F,BULD#R OVM C ND.E  LD RNO, ES Y;  NIJIOB EQB ? UTTPOUS AB;K ASmGEXP:    ;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,R0 1$: BIT #177400,R0 BEQ 3$ 2$: ERROR A MOV #000377,R0 3$: RETURN TRAPOP:    ;TRAP TYPE MOV VALUE,nE CONTAINS N*2. ;AS NEW OVERLAYS ARE CREATED, ENTRIES ;MUST BE ADDED TO THE END OF THE TABLE. ;WHEN THE LINKER GETS CONTROL AT ;"LNK", IT WILL PLACE THE STARTING ;PHYSICAL BLOCK NUMBER OF EACH OVERLAY ;IN THE RESPECTIVE ENTRY. ;THE SIGN BIT (BIT 15) OF EACH ENTRY WILL ;INDICATE WHETHER OR NOT THE ASSOCIATED ;OVERLAY IS IN CORE: ; 1=RESIDENT ; 0=NOT RESIDENT ; RUNTAB: .WORD RUNEND-RUNTAB ;N*2 .WORD 0  ;OVERLAY #1 .WORD 0  ;OVERLAY #2 .WORD 0  ;OVERLAY #3 .WORD 0  ;DM,EBS.AED#T BI  BSDAXE DF NIF. : MPDDRL ITINT US JO, N;  NIJIOB OSBL  D?RLN INGHIYTAN;2 F+BULD#RT,PNLDRP CM $: 1: 9$ DRJHOBK,LNBJOF TOAIW R HDBJ#OK,LNBJ#O TERI.W  TYMP EIFH NCRA B;  1$ EQB E IZ STEPUOM;C 0)(RF,BUBJ#O UBS ) EDTTNI IOT(NL UL NIFT XI;E  NXJIOB EQB ) R0,(NTJPOB OVM Y ARIN BEDTTMAOR;F )+R0,(#1 OVM 0 ,R+2DRJHOB#V MO  ERFFBUT ECBJ OHE TMPDU;   : MPJDOB C ND.E  RNTURE  AKRE BCEENQUSEE RCFO;C SEBJ,O77#3 VBMO T:SEq-(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 (SP)+,VALUE ;SET ORIGIONAL VALUE STCODE CLR R0 RETURN .IF NDF X45 DRGEXP:    ;DOrOVERLAY #4 .WORD 0  ;OVERLAY #5 .WORD 0  ;OVERLAY #6 .WORD 0  ;OVERLAY #7 .WORD 0  ;OVERLAY #8 RUNEND: .WORD 0  ;OVERLAY #9 ; ;SUBROUTINE TO TRANSFER A REQUESTED ; OVERLAY FROM DISK TO THE OVERLAY AREA. ;CALLING SEQUENCE: ;  CONTRL ;  .WORD N ;WHERE N IS ;    ;THE OVERLAY NUMBER ; ;IF THE REQUESTED OVERLAY IS ALREADY RESIDENT, ;CONTROL IS RETURNED IMMEDIATELY TO THE CALLER. ; ; ;IF THE REQUESTED OVERLAY IS NOT RESIDENT: ; 1. B RTTA SORK LNS=ESDRADG INRTTA;S RTTASD EN. N VE.E E:ILRF EF ,LCR TEBY. 6 .+.= B:ILRF E/ /. IISC.A  +6=..: LAFIER ://I CIAS. 6 .+.= C:ILRF EF ,LCR TEBY. 6 L-FIERE-ILRFE 0 C,ASFE YT.B  -6ILRF-ELEFIER L:FIER ;E AM NLEFIH IT WGESAES MORRRE; ;A AT;D  0 C ;B  0 I CIASD TEATRMFO; 0 C,ASFE YT.B  BCX MA;  2 +: INUM D> LFR,RLFLEL,LGBFGLG!FLEL!RLGFFDEC<#^ ICB O N;  3$1E BN  R?TOEC SEROPPR, ES;Y R5R,TOECSB MPC O N;  3$1Q \ECTOR GETSYM   ;GET ARGUMENT (OR NULL) CSECTF: SCAN SECROL  ;SCAN FOR MATCH BNE 3$  ; BRANCH IF MATCH 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 SR4 MOV R4,R0 MOV D1,R1 ADD R1,R0  ;R0 CONTAINS NEW USYME ASR R1  ;INCREMENTS IN WORDS MOV D2,R2 ASR R2 BGT LINK87  ;DONE? LINK88: ASL R1  ;YES- ADD R1,SP ADD R1,SYMB ADD R1,SYME ADD R1,SSYME ADD R1,USYME ADD R1,PTRG ADD R1,PTRH BR LNK132 LNK138: RESREG RTS PC LINK87: MOV -(R4),-(R0) ;NO- DEC R2 BGT LINK87 BR LINK88 ERRET1: CMP #401,OBJADR+6 BNE .+14 CLR OBJADR-4 CLR OBJADR+6 BR LNK144 MOV #4; ;E YPETEL;T  B//K 50AD.R  1 E YPETEL;T  B//K 50AD.R  0: MDTCOU 0 ; T)PUUT(OE YPETEL TOR FCKLO BNKLI  ;; RDOAYBKE; / KB/0 D5RA. 1  RDOAYBKE; / KB/0 D5RA. 0 D:CMIN 0 ; T)PUIN (RDOAYBKER FOK OCBLK INL; ;; S.CKLO BNKLIT SEA AT D 5NEFIDE  ;; PC TSR T AIWT EM  ITN OITWA;) SP-(D,CMIN#V MO  ADRE MTE ) SP-(D,CMIN#V MO  ADRE;) SP-(0,RV MO 0:E0CC A ; R0Y BTOD TEINPOR FEUF BTOIND KBM RO FNELIA D EAR; ;T EPCC ANETIOUBRSU  ;; YBE  L?BALO;G DEMOG,FLLB#G ITB Y GUS HI TTHWID HEISIN F;  0$1Q BE  OLMBSYT EX NHE TCHET;F  OLMRSY XTNE $:13 CKLO BISTHT PUUT;O  MPDDGS LLCA  R1L,BOYM#S OVM: 2$ 1N CA SERNN IOR FET;S  PDLURO LRC: 1$ 1X MAT SE, EL R; 1)(R,-1)(R OVM ! PSOO ; $ 11 EQB S ABE UMSS;A )+R1,(R5 OVM D NEFIDE, 1PETYO TET;S )+R1,(LGFFDE>+01DTGS#< ISB T BIL RET BUL ALR EACL;) R1,(G>FLELN+LEMINO MULT "<" IN CSI ERR16   ;EVEN=> MULT "<" IN CSI LINK38: MOV #2,@CMDBUF ;CHANGE TO OUTPUT ON ALL LINES EXCEPT    ;FIRST LINK91: MOV CMDBUF,BLKI ; SET UP INPUT BLOCK MOV #BLKI,-(SP) ; CALL CSI2 EMT CSI2 MOV (SP),SCSIRV ; SAVE THE RETURN VALUE TST OBJDEV+6 BNE LINK39 ASR (SP)+ BCS LNK139 ERR17   ;MISSING INPUT SPEC. LNK139: TSTB NOONOM BE NKLI MPJ E ODRCE 0 22=SDECO;E OD,C2022#V MO 0:40R1 E; GEAN ROFT OUX DEINE BLTAP UMJ; ;K INLP JM  DECOER  17S2E=OD;C DECO7,21#2 OVM: 0013ER ;A TRR FOE AM NONTIEC SNDFIT N'CA  ;; NKLI MPJ E ODRCE 6 21=SDECO;E OD,C1622#V MO 0:20R1 E; RA TOR FMENAE ULOD MNDFIT N'CA  ;; MFER MPJ E ODRCE 5 21=SDECO;E OD,C1522#V MO 0:10R1 E; LD RIND IEIFECSPE AM NONTIEC SNDFIT NOANC; ;F RMEP JM  DECOER  12S2E=OD;C DECO2,21#2 OVM: 0010ER ;D RLN ISTLAT NOD ANMMCOD I HRDOAYBKE TLBT.S  N URETR 1 ,R)+SP(V MO  YXTBSE0,RB SO  R0 ABSW  )+R2(B STT $ 1T BG  R0 CBDE  2)(R LBRO  R1 SLA: 1$ 2)(R0,/1.0IG#D VBMO  R03,#D AD  R0 ABSW X:BYET S0 ,R#3 OVM 1 RR RO  LCC Y GUT AS LHE TET;G  R1 RBRO  LFHAT EF LTOE ATULIPAN;M  R1 ABSW  )+R2,(R0 VBMO  )+R2,(R0 VBMO  ESACSPH IT WAD;P )+R2,(R0 VBMO  R0E,ACSP#V MO  UEAL VET;G R1),R12( VBMO  EXND ICKTA;S P)(S,-R1 OVM: YTTBSE YXTBSE BR  R05,H 3$: GETR50   ;GET RADIX-50 CHAR BGT 3$  ;STOP AT FIRST TERMINATOR MOV CHRPNT,R2 ;SET 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 #3,R4 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: .Q LNK140 LNK145: CLRB NOONOM LNK140: MOV #CRLF,DUMIN+6 MOV #2,DUMIN+4 MOV #DUMIN,R0 TYPE MOV CMDBUF,-(SP) JMP LINK81 LINK39: CMP (SP)+,#1 ; CHECK FOR SWITCH OVERFLOW BLOS LNK142 .EOT ;TAPE 4 ; ; PROCESS PRESWITCHES ; ERR19   ;SWITCH OVERFLOW  LNK142: CLRB TAPES CLR TAPCT CMP #63320,OBJDEV+6 BNE LINK92 INCB TAPES MOV #1,TAPCT LINK92: MOV #OBJDEV+8.,R1 ; PTR TO SWITCH SIZE LINK95:MOC P; ;F RMEP JM  DECOER  11S2E=OD;C DECO1,21#2 OVM: 0009ER ;D RLN IRELUAI FCHARSEL BALOG; ; N URET;R  PC TSR G REESR T IO  P)(S,-DECO OVM ) SP-(4,RV MO  01W3E=OD;C DECO1,30#1 OVM 4 ,R#2 UBS 4 RTOINC PNTREUR CUT;P   PCETG G REAVS: 0008ER ;L TAFAT NO- -ORRR EONTICALOREE YTB; ;F RMER B E ODRCE 0 21=SDECO;E OD,C1022#V MO 0:70R0 E; RELUAI F11K-IN L -ESRINT EALEGLL I -ORRR ELEAB TOLMBSY  ;; PC TSR T IO  P)(S,-DECO OVM ) SP-( LRE#V MO  IT BINE OV;M  )+R2(B OLR 1 RL AS  VETIMIRI PET;S 2)(R2,0/G.DI#B OVM E LUVAL UACT AET;G R1),R12( OVM G REK ACST;) SP-(1,RV MO D:WRET SE YT BO, N;  YTTBSE MIB ? VETISIPO; ) R1(T TS  TEBYR ORDWOT SE;   : DBTWSE ECTSXI  2W LK.B 1:PF 2W LK.B 0:PF INPLIM ECTSEN  RNTURE  +2F1,PUEALVV MO  +1F1PB NCI E LUVAT ENRRCUF ODEMOT SE;1 PFE,ODMB OVM E OND ELFIT INPRT SE;   : F1TPSE RNTURE  ONTICALOT SE;2 0+PFC,LOLCCV MO  RDWOE UMSS;A  DASCIZ /TABLE OF CONTENTS/ 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: .B TST (R1) BEQ LINK90  ; DONE- NO MORE SWITCHES MOV #PRESW,R0 SWSR   ; RET DISPATCH ADR IN R0 TST R0  ; IGNORE IF DON'T RECOGNIZE THE SWITCH. BEQ LINK93  ;ASSUME IT IS A POST SWITCH. LINK94: JSR PC,(R0)  ; GO PROCESS SWITCH LINK93: MOV (R1),-(SP) ; ADVANCE R1 TO NEXT SWITCH ASL (SP) ADD (SP)+,R1 ; R1=R1+2*N TST (R1)+ BR LINK95 LNK02: CLRB LIBF BR LINK98 LINK90:TSTB LIBF  ;TEST LIB. FLAG BNE LNK02 TSTB PASS BEQ .+6 JMP LINK40C 0 30=WDECO;E OD,C0013#V MO  PETY  R0U,NN#M OVM K ACNPU 1 ,RUANN#M OVM E AM NTOR PT; 0 ,RR2 OVM: 0005ER ;E QUNI UOT NMENAD MO  ;; MFER BR  DECOER  14S2E=OD;C DECO4,21#2 OVM: 0004ER ;E AM NLEDUMOJ OBT NOD GSN IRYNT ESTIRF; ;K INLP JM  PETY  R0L,FIER#V MO  CKPAUN  R1C,ILRF#E OVM 0 ,RERNVCO#V MO  +2ERNVCO6,V+DEBJOV MO  ERNVCO LRC K ACNPU 1 ,RLBFIER#V MO  R0R,VEON#C OVM 2 R+VEONCR CL  ERNVCO4,R+ADBJOV MO  CKPAUN  R1A,ILRF#E OVM A+1F0PB NCI S AGFLN IOATOC LNTREUR CET;S F0,PGSCFCL VBMO  ROZED ELFIT INPRT SE;   : F0TPSE FFTU SNGTIISLL TTSB. DCEN. C SEITX 4 KWBL.: ILFFCR 2W LK.B  REPUIM ECTSEN  Y//S 50AD.R  1D OR.W  F/CR/0 D5RA. 0 RDWO.: NKFLCR 0D OR.W  EDIXMC SENTE L FIRFC, NKFLCR F,BUMDCD OR.W I:CSRF CE URDP ECTSEN  OLRRER TEBY. L ROECSE YT.B  OLTRPS TEBY. C ND.E  -1 TEBY. F IF. L ROACME YT.B  ROACXM DF NIF. L ROYMSE @LKW 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, NO   ;PASS 2 GGSD   ;GET GSD LINK97: TSTB TAPES  ; DOING TAPES ? BEQ LINK98  ; NO- DEC TAPCT  ;YES- DECREMENT COUNTER BGT LINK90  ; IF >0 , DO ANOTHER TAPE CLRB TAPES ; ; PROCESS POST SWITCHES ; LINK98: CLRB CONCAT  ;NO MORE CONCATENATION MOV #OBJDEV+8.,R1 ; ADR OF FIRST SWITCH LINK99: TST (R1)  ; DONE WITH SWITCHES ? BEQ LINK70  ; YES- MOV #POSTSW,R0 SWSR TST R0  ; FIND IT ? BNE LINK71  ; YES- ; ; 2 ILLE0 ,RDRJAOB#V MO F:RM EF RMER B E ODRCE 3 21=SDECO;E OD,C1322#V MO 0:30R0 E; SD GTHWIT ARSTT NOS OE DLEDUMOJ OB  ;; NKLI MPJ E ODRCE 3 24=SDECO;E OD,C4322#V MO 0:20R0 ET ARSTRE;  8 R1ER  GESAES MPETY;  E YPT 0 ,RSM#U OVM E AM NOLMBSYK ACNP;U   CKPAUN  R1B,SM#U OVM 0 ,RR4 OVM E AM NLEDUMOK ACNP;U   CKPAUN  R1A,SM#U OVM E AM NLEDUMOF ODR;A  R0G,TRPV MO  OLMBSYO TTR;P  R4.,#8 UBS: 0001ER ;L TAFA- W LORFVE OOLMBSY  ;; ENEV.: OA NT VE =YT.B  P:TYRF CT BYXTTC SENTE S AGFL" "*D AN" "#;  2B LK.B L:DFRF CN LIMPIC SENTE 2 N/LERFCW LK.B F:BURF C3 KWBL.: DRFHCR AGFLO -GNO;  W LK.B F:NGRF CW LK.B T:PNRF CW LK.B N:LIRF CW LK.B G:PARF CG LA FONSIER;V   KWBL.: ERFVCR KWBL.: LGFFCR REPUIM ECTSEN  RNTURE  SELO CND A;  NTFPCR LRC N IOETPLOM CITWA;A 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  <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 THE EXPGAL SWITCH!! ; ERR19  BR LINK79 LINK71: JSR PC,(R0)  ; PROCESS THE SWITCH LINK79: MOV (R1),-(SP) ASL (SP) ADD (SP)+,R1 ;R1=R1+2*N TST (R1)+ BR LINK99  ; DO NEXT SWITCH ; ; CHECK FOR END OF COMMAND STRING ; LINK70: TST SCSIRV  ; CHECK RETURN VALUE FROM CSI2 BNE LINK72  ; END- JMP LINK84  ; NOT END- LINK72: INCB FLINE  ; COUNT TO NEXT LINE TSTB PASS  ; WHICH PASS? BNE LINK73  ; PASS 2- JMP LINK80  ; PASS 1- LINK73: SUB #BUF,YT.B  #//I CIAS. 6 O--NOA+N  ,0SCFA TEBY. # ; 6 O--NOA+N O: N; #" "NGNIAINTCOR FEUFB; ;   N VE.E A:S2AS PF ,LCR TEBY. / 2SSPA/I CIAS. F ,LCR TEBY. 6 2-SSPAA-S2AS+P  ,0SCFA TEBY. > LFCR2PLFCR;<  -6S2AS-P2ASSPA+: S2AS P; ENEV.: 1ASSPA LFR,CE YT.B  1/S AS/P IISC.A  LFR,CE YT.B  -6S1AS-P1ASSPA+ 0 C,ASFE YT.B  F>RLRL LFCR1<-1NKLIF>RLTISH ICWHY TRENN AOR;   N IOCTSEF OND-  FLFDCR CBIN F:DERFC 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 , 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 TA SET EMT INIT TST OBJADR+4 BNE .+10 MOV #0,OBJADR+4 ;SET DEFAULT EXT .=.-4 .RAD50 /OBJ/ .=.+2 MOV #OPENI,OBJADR-2 ;OPEN OBJ MOD DATA SET MOV #OBJADR,-(SP) MOV #OBJDEV,-(SP) EMT OPEN BR LINK07 LNK129: MOVTAB MOV #INA,IN MOV #INA,-(SP) ;DO A PREREAD MOV #OBJDEV,-(SP) EMT READ MOV #OBJDEV,-(SP) EMT WAIT LINK41: TSTB FREADF  ;LOOP,1ST READ COMMING? BEQ LINK96  ;NO- CLRB FREADF  ;CLEAR 1ST READ FLAG LINK23: MOV IN, EOR FNGKIOO LOPLOT ARST;4 ,RYMPS#B DDA: 01PTIN R4H,TRPV MO  RSPTT SE; 2 ,RR4 OVM G REAVS: 00PTIN ;E YMUSE,YM SRSTEINPOE ATPDU; RYNT EHE TTOS NTOI PR4  ;Y LLCATIBEHALP ARYNT EHE TRTSEIN  ;M SYBP)+RHPT (ATY TRENN ARTSEIN  ;; PC TSR G REESR ? OWFLEROVL BOYM;S   VFMOSY  )+R4,()+R2(V MO  )+R4,()+R2(V MO  )+R4,()+R2(V MO  OLMBSYE THN IVEMO;+ 4)(R+,2)(R OVM E YMUSM,SYBP#D AD  MESYM,SYBP#D AD  MESYT ALEHOA E AK;M  SHUISQUN 1:Y0NS I4 ,RMESY OVM 2 ,RR4 )$: 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 ( ; PHYSICAL 07.31.72 BIS #RELFLG,FLAGS ;SET RELOCATABLE FLAG 08.03.72 MOVB #RLDT17,SECTOR ;SET THE RLD MODE TO RELOCATABLE PACKED 08.03.72 MOV #"P ,SYMBOL ;PHYSICAL AND SET A 'P' SYMBOL 08.03.72 MOV #" ,SYMBOL+2 ;FOR THE LISTING 08.03.72 SETIMM ;CONVERT TO OBJECT FORMAT 07.31.72 STCODE ;THEN -(SP) ADD #INBLN,(SP) CMP (SP)+,#INB BLOS LNK109 LNK105: MOV #INA,-(SP) MOV #OBJDEV,-(SP) EMT READ MOV #INA,IN BR LINK96 LNK109: MOV #INB,-(SP) MOV #OBJDEV,-(SP) EMT READ MOV #INB,IN LINK96: MOV #OBJDEV,-(SP) EMT WAIT  ;WAIT ON READ FROM GGSD & UP MOV IN,R0 CMP (R0)+,(R0)+ ;IGNORE FORM. BIN. CODE READER MOV (R0)+,BC ;GET BYTE COUNT NEG BC  ;GET -BC CMP #10,(R0) ;DIR ENDED? BEQ LINK26  ;YES-GET OUT CMP #1,(R0)  OVM G REAVS: 00SYIN ;; MESY UND AMESYS ERNTOI PSTJUAD  ;. RYNT EHE TTOS NTOI PR4 E.YM SATY TRENN ARTSEIN  ;; MESYIN  ;; PC TSR 0 ,R)+SP(V MO  W?LORFVE;O   VFMOSY  MESY,UYMPS#B DDA + 0)(R+,4)(R OVM + 0)(R+,4)(R OVM + 0)(R+,4)(R OVM L BOYM SEDINEFND UHE TINE OV;M )+R0,()+R4(V MO  R0E,YMUS OVM 0 RCKTA;S P)(S,-R0 OVM: 00USIN ;; EAARD NEFIDEUNO NT IRTSEINO TATWHF ODR=AR4 T:PUIN  ;; EDINEFND UAST ERNS-IM-SYNUI; ; T XI;E  PC TSR ) SP,(#2 DD% ESRINT ELEAB TCHITSWS /DD AN ;L ABDSS,DT SWENG N /EE ATEREN;G BLNA,EEN WTNSGE  ECTSXI  SSPAH AC EET;S SKMAEDK,BADMEV MO  ASTPXC ECTSEN  NSIOITNDCOT ULFADET SE;K BADM,EITINED#V MO  -1 KWBL. : TSBIED 1W LK.B  TSBIED BLLO.G  RGTPXC ECTSEN  2SSPAR FOT NI-IREO ;T   KWBL.: AKMBED DERIEROVI CSR FOS IT;B   KWBL.: SIMCED GSLA FET SNSAINTCO;  W LK.B K:ASDM EE URMPIC SENTE R OVITX N URETR: 8$ AR ROER $: 7 $ 1R B E INUTROL AL;C  )+$INSERT IN OBJECT CODE 07.31.72 RETURN ;AND EXIT 07.31.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   ;GSD BLOCK? BNE LINK23  ;NO- ADD #7,R0  ;YES-OBJ MOD NAME BLOCK? MOVB (R0)+,HBYTE CMPB HBYTE,#0 BNE LNK100  ;NO- MOV -6(R0),FNAME ;YES-SAVE CURRENT OBJ MOD. NAME MOV -4(R0),SNAME ;IN DIRECTORY MOV IN,INSAVE INCB FBBF  ;MARK THIS BLOCK AS 1ST READ LNK100: TST (R0)+  ; ADD #10,BC  ;PREP BC MOV R0,FDATA ;SAVE PTR TO 1ST DATA MOV USYME,-(SP) MOV SYME,-(SP) SUB (SP)+,(SP) ;SAVE SYMTAB BC MOV (SP)+,STBC NEG STBC DIRSR TST A E LUVAH TCFE;4 ,R4)(RSEBA OVM D UNFOT NO; C PS RT  ALOBGLO TERNTOI PET;G   OBGLPT 0:L0RG S; ;D UNFOT NO; R B ; OBGLSR LLCA  ;; UEAL=VR4 T:PUUTO; MENAL BALO GOFR AD4= R: UTNPI; ;4 RINE LUVAN URET RND AALOBGLR FOH RCEA-S--OBGLSR  ;; PC TSR N URET RSTJUAD. MENAT EC;S  P)(S2,#D AD  MENAN IOCTSEA T NO; 1 S0ETGE BN  4)(R+1GSLA,FTNEC#S PBCM  E.AM NONTIEC S AIST IATTHE URNS ID,UNFO  ;. NDOU FOT;N  PC TSR: 01TSGE MENAL BALO!SP@( LLCA  GSLA FET;S  R3 STT C PIT IKEMA;) SP-(2,L+BOYMSV MO $: 5T IARLE CO,;N SKMAED2,RS BI  ARLE CITE AVLE, ES Y;  5$ EQB ? LEDBEN; 3 RT TS  IT BEDCTLESER EACL, NO;K ASDM,ER2 ICB: 4$ ITE ORGN IS,YE ; $ 1E BN  I?CSM RO FENDDRIR-VE;O SIMCED2,RT BI $: 3 T ES TSSPABYD AN ; $ 4R B S IT BLEABIS DET SS,YE;I CSDM,ER2 ISB O N;  3$ EQB ? NGRISTD ANMMCOM RO FEDLLCA; G FLSICT TS  2$0,RB SO  R2 OLR: 2$ ECS N IOITOS PIT BTEPUOM;C  R2 LRC R ;PUT ON CODE ROLL ADD R3,(R2)  ;UPDATE PC BR 1$  ;TEST FOR MORE 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$  ;IDIRSRV  ;RET VAL: 0=FAIL,1=SUCCEED BEQ LNK101  ;FAILED-GO TO READ NEXT BLOCK BR LNK102  ;SUCCEEDED LINK07: JMP LNK117 LINK26: JMP LNK110 LNK101: TSTB FBBF BEQ LNK108 CLRB FBBF INCB SBBF MOV #2,CNT BR LINK23 LNK108: TSTB SBBF BEQ LINK23 CLRB SBBF BR LINK23 LNK102: TSTB FBBF  ;IS 1ST BB FLAG STILL ON? BNE LNK103  ;YES-GO GET GGSD,"IN" OK TSTB SBBF BNE LNK106 BR LNK107 LNK106: MOV IN,-(SP) MOV INSAVE,IN MOV (SP)+,INS GNDFI;  B LOTGP: 00TSGE ;D UNFOT NO; R B ; ECTSGE L:ALC; ;Y TRENR PERO PTOS PT4 R: UTTPOU  ;. MENAO TTS PR4 T:PUIN  ;; E.AM NONTIEC STOR TEINPOT GE--ECTSGE  ;; N.AIAGY TR; 2 L0TGPR B Y TRENT EX NTO0 RCEANDV;A R0M,SYBP#D AD 4:L0TG P- H-TCMAO N; PC TSR ) SP,(#2 DDA G REESR ) SP.(,8R0 OVM 4 L0TGPQ BE  S.MENAE ULOD MBJ OUT OERLTFI ;0)(R+1GSLA,FMNBJ#O PBCM  --H-TCMA  ;. CHAT MNO; 4 L0TGPE BN  RDWOD ONEC SRY;T 0)(R,24)(R2P CM  H.TCMAO ;N  04GLROER, 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+ N BIT .IFF BPL 4$  ;RAD50? TSTR50   ; YES, CONVERT .ENDC 4$: CALL 20$  ;PROCESS THE ITEM BR 3$  ;BACK FOR ANOTHER 5$: GETNB   ;BYPASS TERMINATOR 6$: TSTB CTTBL(R5) ;EOL OR COMMENT? BGT 1$  ; NO 7$: CLR R0  ;YES, PREPARE TO CLEAN UP TST R3  ;TEST MODE BEQ 24$  ;NORMAL EXIT IF .ASCII BPL 20$  ;ONE ZERO BYTE IF .ASCIZ TST R1  ;.RAD50, ANYTHING IN PROGRESS? BEQ 29$  ; NO, NORMAL EXIT CALL 20$  ;YES, PROCESS BR 6$   NEG BC  ;GET BC CMP #1,(R0)+ ;GSD BLOCK? BNE LNK104  ;NO-HADE TO BE GSD END CMP (R0)+,FNAME ;YES-1ST PART OF SYMBOL MATCH? BNE LNK104  ;NO- CMP (R0)+,SNAME ;YES-2ND PART OF SYM MATCH? BNE LNK104  ;NO- TSTB (R0)+  ;YES MOVB (R0)+,HBYTE ;WAS SYMBOL OBJ MOD NAME? CMPB HBYTE,#0 BNE LNK104  ;NO- LNK103: GGSD   ;YES-GO GET GGSD "IN" OK JMP LINK96  ;GO TO WAIT ON LAST READ LNK110: IOIC   ;CLOSE & RELEASE OBJ DEV MOV SWSIZE,R1 ;SAVE P NTOR TEINPO4= R: UTNPI; ;. ITO TERNTOI P ARNTURE& L BALO GOR FCHARSE--B-LOTGP; ; C PS RT  EGSRRE  CKTA STOON0 RNTREUR CUT;P P)(S8.0,RV MO  !!NDOUF; RYNT EXTNEO TGO- O ;N  04MOSR NEB ? OKD OR WNDCOSE;) R02(),R42( MPC Y TRENT EX NTOO G -NO; 4 O0RMSE BN  K? ORDWOT RSFI;) R0,(4)(R MPC: 03MOSR 01MOSR BR  NE OXTNEY TR- O ;N R0M,SYBP#D AD 4:O0RM SE AM SISE AM NIFE SE- S YE; 3 O0RMSQ BE  E?AM NLEDUMOJ OBN AISTHS ;I) R01(S+AGFLN,JMOB# < CTNLGE  YMST LCENG C TO CTNLGE  TMTT LCENG 1 ,LD CTNLGE  NDCT LCENG 1 B,ME CTNLGE  ,1E MT LCENG C MT LCENG D MT LCENG X BE CTNLGE  OMCT LCENG C SR CTNLGE  INBT LCENG C LO CTNLGE  EQST LCENG : ASTBLC REPUDC SENTE 0 T=NICI L M ND.E  DCEN. E MN.'LCT+NICIL= ITINLC  T>NIBACT-L<. PTRE. 1 E=MN.'LC LEAB TOLTRON CNGTIIS LTERANEGE;T NI,INEMT LCENGO ;LOOP UNTIL WORD COMPLETED 10$: MOV (R4),-(SP) ;"", SAVE PARTIAL TERM   ;PROCESS AS TERM CALL ABSTST  ;TEST ABSOLUTE AND SET R0 MOV (SP)+,(R4) ;RESTORE PARTIAL CALL 20$  ;PROCESS BYTE BR 6$  ;TEST FOR END 20$: TST R3  ;RAD50? BPL 22$  ; NO CMP R0,#50  ;YES, WITHIN RANGE? BLO 21$  ; YES ERROR T  ;NO, ERROR 21$: MOV R0,-(SP) ;SAVE CURRENT CHAR MOV (R4),R0  ;GET PARTIAL CALL MULR50  ;MULTIPTR TO LIB SW SIZE MOV (R1),-(SP) ;FORM ADDRESS OF SWITCH ASL (SP) ADD R1,(SP) CLR @(SP)+  ;CLEAR THE SWITCH MOV SPRETV,(SP) ;RESTORE STACK RET VALUE RTS PC LNK117: TSTB FREADF  ;1ST READ? BEQ LNK10  ;NO- CLRB FREADF  ;YES- LNK08: MOV #INA,IN MOV #INA,-(SP) MOV #OBJDEV,-(SP) EMT READ MOV #OBJDEV,-(SP) EMT WAIT MOV IN,R0 CMP (R0)+,(R0)+ READER TST (R0)+ CMP #10,(R0) BNE LNK08 LNK09: MOV #INA,-(SP) ;BUF A STARTS W B MPC: 02MOSR ITEX; C PS RT  SSREDD ARNTURET USDJ;A  P)(S2,#D AD  NDOU FOT N -ES;Y   EGSRRE  NO; 2 O0RMSO BL  NEDO; E YM,SR0 MPC: 01MOSR LEAB TOFT ARSTO TERNTOI PET;G  R0B,YMSV MO  EGVRSA 0:O0RM S; NDOU FOT;N  BR   ;D UNFO; R B ; DNMOSR L:ALC; ;D UNFOF IMENAE THO TTSINPO4 RT:PUUTO; MENAO D4MOO TTSINPO4 R: UTNPI; ;. MENAE ULOD M AOR FCHARSE--N-ODRMS; ; . OK; C PS RT 1:O0YM S! E!DI;  1 R0ER  01MOSY LOB + P)(SE,YMUS MPC ) SPCRMA. RNTURE  721..307 ; : XXGEPA 721..307 VETIECIR DNGTIIS LASG LA;F G LACF,LLDC.#L S BI 721..307 ; XXGEPA BR X:GEPA EDETEL.D VETIECIR DNGTIIS LASG LA;F G LACF,LLDC.#L S BI: EXAG;P NELIS HI TERFT AFFE ATULIM;S  NTFCFC IN E:AG PE AGPL OBGL. R OVITX S IETRENH TCWI SNL /ND A; STLI,NNL WTNSGE  LI /TERANELY ADD (SP)+,R0 ;ADD IN CURRENT MOV R0,(R4)  ;SAVE INC R1  ;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 ; 1ST OMN MOV #OBJDEV,-(SP) ;OF LIBR CONTENT EMT READ MOV #INA,IN LNK10: MOV #OBJDEV,-(SP) EMT WAIT MOV IN,R0 ADD #3,R0 MOVB (R0)+,HBYTE BITB #100,HBYTE ;EOF OF LIBR SEEN? BNE LNK110 BITB #EOF,HBYTE BEQ .+4 ERR15 TST (R0)+ CMP #1,(R0)  ;GSD? BNE LNK09  ;NO- MOV PTRG,R1  ;YES- TST (R0)+  ;ADVANCE PTR IN READIN BUFF CMP (R0)+,(R1)+ ;1ST MATCH? BNE LNK09  ;NO- CMP (R0)+,(R1)+ ;YES-2ND MATCH ALSO? BNE LNK09  ;,(YMPS#B UBS ) SP-(M,NDEV MO 0:O0YM S; CKHE COWFLEROVE BLTAL BOYM-S--VFMOSY  ;; PC TSR . CELA PNTREUR CDD;A R4T,SEFFOD AD  CKLO BTOY TRENT APCT GE;4 ,RPCURCV MO 0:P0ET G; CKLO BXT TINE ACPLT ENRRCUR FOC PETG; PCET GNETIOUBRSU  ;; RNTURE; C PS RT  WNDOS ESDRADN URET RVEMO;) SP,()+SP(V MO  2:P0XT T! ORRR EOCEL RTEBY;   08RRE . OK; 2 P0XTTQ BE  R4 ABSW  RDWO; 2 P0XTTL BP  D?OR WORE YT;B  P)(S2T TS  TEBYN IUT;P )+R3,(R4 VBMO 1:P0XT T. TE GE; T IS,LLI WTNSGE  RNTURE $: 7A ORRRE: 6$ REMOR FOY TR; $ 1R B: 5$ SKMALC2,RS BI  CHANBR, STLI;.  5$ PLB 3 RT TS $: 4L RONTCOG INSTLIT SE; X GEPA LLCA  NTOU CELEV LTEDAUP, ES;Y VLCL,LR3 DDA O N;  4$ EQB ? LLNU; . LC,#R2 ITB K ASCM,LR2 ICB: 2$ 1S YE ; $ 5E BN  S?ITIM LFF OAGFLS HI;T SIMCLC2,RT BI $:11 STTEP KI SND A;  2$1R B S IT BLEABIS DET SS,YE;I CSCM,LR2 ISB O N;  1$1Q BE  G?INTR SNDMAOM COMFRD LEAL;C  LGIFCS STT $  07.31.72 ; 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 NO- TSTB (R0)+ MOVB (R0)+,HBYTE CMPB HBYTE,#0 BNE LNK09  ;LIB ENTRY NOT OMN LINK40: .IFNDF NOSEG CONTRL .WORD 8.  ;OVERLAY #8 JMP ENTRY1 .ENDC .IFDF NOSEG JMP START8 .ENDC ; ; CC SWITCH--CONCATENATION ; LINK74: INCB CONCAT NOVAL BR LINK01 ; ; TAPES ; LINK58: ONEVAL MOV 2(R1),-(SP) MOV #DETOBI,-(SP) EMT CONV INCB TAPES MOV (SP)+,TAPCT ;SET COUNT LINK04: JMP LNK04  ;EXIT LINK01:LINK11: JMP LNK01 ; ; TRANSFEBYD ONEC SOR FREPARE;P  R4 ABSW  TEBYT RSFIN IUT;P )+R3,(R4 VBMO  D.ANMMCOE YT BIFO ;G  01TPTX MIB D ANMMCOD OR WORE YT;B  P)(S2T TS 0:P0XT T P ,SCKTA SHE TOMFR   ;D OR W 1ESOVEM RNETIOU RISTH   ;; EDCKTA SISD ANMMCOD RLE TH  ;K OCBLT TXO NT IFOINT PU  ;; UTTPTXE INUTROUBS; ; 0 .^40;  . +1  ^10.;4   0.+4  ^20.;4   0.60+1 F:EFCO ;E BLTAT ENCIFIEFCO  ;; PC TSR G REESR ) SP2(1,RV MO  CKTA SHE TTOON1 RNTREUR CUT-PE-OND; NO; 7 A0NPUT BL  ,3R0 OBS 2 RL RO $: 3C SE  R2 LRC D UNFOT NOF IORRR E;  6$ EQB E BLTAE THN IUPT IOKLO; L ROCDLW ANSC  OLMBSYA R FOY TR;  M SYETG: 2$ ITK AR MS,YE; T CNRGAC IN  GHOUHR TREE' WO, N;  7$ NEB ? STIR FL,UL;N  NTGCAR STT D LIVA ; $ 2E BN  NTMEGUARR HEOTANR FOT ES;T   RGTATS $: 11 /- 1OW;N  R3 NCI 2 /- 0R3E AK;M  R3 SLA 2 VRTOEN  T:IS L1 -R3E AK;M  R3 OMC: STLI N T ISL, STLINL OBGL. L RONTCOG INSTLI TLBT.S  08.03.72 BR FLT2X ; 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 NUMBERR ADDRESS ; LINK69: CMP (R1),#2  ;DOES IT HAVE A VALUE? BLO LINK08  ;NO VALUE- ONEVAL TSTB PASS BNE LINK01  ;IGNORE IF PASS 2 CMPB @2(R1),#'A ;IS FIRST CHAR A # OR A LETTER? BLO LINK09  ;NUMBER- MOV 2(R1),-(SP) ;SYMBOL-DO A RADIX 50 PACK MOV #RATOBI,-(SP) EMT CONV MOV (SP)+,TRABLK+4 MOV #RATOBI,-(SP) ;SECOND WORD EMT CONV MOV (SP)+,TRABLK+6 INCB STRA INCB TRAF BR LINK04 ; NUMBER LINK09: MOV 2(R1),-(SP) ;DO OCTAL CONV MODSOR W 2NEDO; 4 RC IN  RDWOT EX NTOE OV;M  )+R0(T TS  ND AR0L NAGIRI ORETOES;R  R0),SP(V MO  REMOO -DNO; 6 A0NPUT BL  S?ARCH3 E ON;D  R5 NCI . FFOE CXTNEO TCEANDV;A  )+R2(T TS  ERCTRAHA CRETO;S )+R1,(R3 VBMO  R31,#1 DDA: 05PAUN R31,#1 DDA: 04PAUN R36,#1 DDA: 03PAUN Z"A-;"  R30,#4 DDA " -9"0R O.";"  04PAUN GTB " "$; 5 A0NPUQ BE  33,#R3 PBCM  K"ANBL;"  03PAUN EQB 3 RB STT: 01PAUN ERCTRAHA CIISC AANO TRTVEONC; R0N IERNDAIEM R3, R C SEITX G LA FITEX;M   KWBL.: EXDMCN ELEV LNGTIES;N   KWBL.: VLDLCN SKMAN IOITNDCO;  W LK.B K:MSND CD OR WSTTE;  W LK.B D:WRND C) EDERRD OBET US(ME AGORSTL NAIOITNDCO;   S PAMPIC SENTE N URETR: 6$ LEGGTO, NO; 3 RM CO  ES Y;  6$ EQB ? DFIF; 1 RT TS $: 5 N AIAGY TR; $ 1R B P OSSPABY;  B TNGE $: 4E OD MLEGGTO, ES;Y  R2 OMC O N;  5$ NEB ? ORS APRHPE;R IOH.#C5,RP CM  SSUE GODGOF ICHANBR ; $ 4Q BE  &" ";D ANH.#C5,R CALL @(SP)+ ; BNE 2$ ;BRANCH IF NOT NULL .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 V #OCTOBI,-(SP) EMT CONV MOV (SP),TRA ASR (SP)+ BCC .+4 ERR19 INCB FTRA INCB TRAF BR LINK04 LINK08: TSTB PASS  ;IGNORE ON PASS 2 BNE LINK11 INCB UTRA BR LINK11 ; ; /D- DEBUG FILE ; LINK65: INCB ODTF TSTB PASS BNE LINK11 NOVAL INCB DDTF BR LINK11 ; ; PROCESSING FOR POST SWITCHES ; ; DISPATCH TABLE ; POSTSW: .BYTE 'E,0  ;EXIT +LINK12 .BYTE 'U,0  ;UNDEFINES +LINK10 .WORD 0  ; PRESINT UO Q. NEDOE IDIVD; 02PAUN BR  NTIEOTQUO T 1DD;A  R3 NCI . FFOE CCTRABTSUO-;N  R0),R2(B SU  ES;Y  01PAUN LOB E IDIV DTHWIE ON;D 2)(R0,RP CM 2:A0NP U S NTIEICFFOE CBYE IDIVD; NTIEOTQU0 ; 3 RR CL 6:A0NP UE BLTAT ENCIFIEFCOO TTR;P R2F,EFCO#V MO  RDWO0 D4MOT GE; 0 ,R0)(R OVM T UNCOP OO LORIN;M  R53,#- OVM: 07PAUN NTOU COPLOR JOMA; 4 ,R-2#V MO  EGVRSA 0:A0NP U; C.ET2 CET GTO0 5BYD DEVIDIS IERNDAIEM RHET; C30+*5C2S IERNDAIEM RHE TND AC1S I^250N/P CM  &" "MESUAS; 2 ,RR1 OVM: 3$ R3 OMC O N;  R32,RV MO  ET SLL AS,YE ; $ 3Q BE  H?TCMA, ES;Y  R30,RP CM $: 2E GLOG TO,;N  R0 OMC S YE ; $ 2E BN  S?ESGUD OO;G DEMOG,FLEF#D ITB D NEFIDEE UMSS;A  R0 LRC F RERFC E BLTAL BOYM SERUSH RCEA;S   CHSRS M SYA T NOF IORRR E;  RRAEIF EQB L BOYM S AET;G   YMTSGE $: 1E RU TFF ORTTA;S  R3 LRC " "&T SE; 2 RR CL  ONTIDION CALTINI IVESA; 1 ,RR3 OVM F IDF/;I    F:NDCO T A NFCOTR B R NTCO  MOV R4,-(SP) ;AND R4 07.31.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 WITCH +LINK02 -1   ;END OF TABLE ; ; U SWITCH- LIST UNDEFINES ; LINK10: NOVAL MOV R0,-(SP) ;SAVE R0,R1 MOV R1,-(SP) MOV SYME,R0 MOV R0,R1 CMP USYME,R0 ;ANY UNDEFINES? BEQ LINK03  ;NO- JSR PC,LINK14 ;YES- GO PRINT THEM LINK03: MOV (SP)+,R1 MOV (SP)+,R0 JMP LINK02  ;EXIT ; ; USE PART OF PMAP TO PRINT UNDEFINES ; LINK14: INCB PMAP11 SAVREG MOV #PMAP84,R0 ;PRINT HEADING TYPE MOV R1,R0  ;GET PTR TO END OF SYMBOLS .IFNDF NO, USTH  ;3 +C502*+C^2501*=CN ; ENTH, ERMBNU0 D4MOE THS I NIF  ;; ;R TEACARCHD TERANEGET AS LSTPAE ONS NTOI PR1 T:PUUTO; ;) ESYT B(6G INTR SIISC AOFR AD1=R ; S)RDWO2 (ERMBNU0 D4MOF ODR=AR0 T:PUIN  ;; CKPAUN0 D4MO  ;; ITEX; C PS RT  EGSRRE  R1T ENRRCUK ACST;) SP2(1,RV MO  NO; 1 K0ACPT BL  DSOR W 2NEDO; 5 RC IN  RDWO0 D4MOE ORSTS-YE;+ 0)(R2,RV MO  NO; 5 K0ACPT BL  S?ARCH3 E ON;D  R4 NCI 2 ,RR3 DDA R TEACARCHT ENRRCUE UDCLIN  ;2 *R0.;4 R2+,TT BL  XPSEAB T:NLCO T A NFCOTR B R NTCOTT BG  XPSEAB T:NGCO T T XI ESTJU, UETR;  N URETR: TRONTC LEGGTO, SEAL F;  R3 OMC: FAONTC AT SIFH NCRA;B  TRONTC EQB N IOSSREXP ESTTE, NEQ/;E   XPSEAB Q:NECOT 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,GD CNENG F Q,NECOT, NZ NDNCGE  EQONTC Z, NDNCGE  F, EQON  07.31.72 MOV (R5)+,R3 ; NUMBER 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 SEG CONTRL .WORD 7  ;OVERLAY #7 JMP ENTRY2 .ENDC .IFDF NOSEG JMP PMAP10 .ENDC ; ; E SWITCH-FORCE UNDEFINES TO 0 AND PROCEED TO PASS 2. ; LINK12: NOVAL TST (SP)+  ;IGNORE RETURN ADDRESS TSTB PASS BNE LNK07  ;SPECIAL ACTION ON PASS 2 .IFNDF NOSEG CONTRL .WORD 4 JMP ENTRY1 .ENDC .IFDF NOSEG JMP LINK13 .ENDC LNK07: .IFNDF NOSEG CONTRL .WORD 9.  ;OVERLAY #9 JMP ENTRY1 .ENDC .IFDF P)(S DDA 2 *R2.;3  R2 SLA 2 *R6.;1  R2 SLA 2 *R 8CKTA;S P)(S,-R2 OVM 2 *R;8  R2 SLA 2 *R;4  R2 SLA 2 *R;2  R2 SLA . 40Y BR2T ULM; R31,#1 UBS: 04CKPA R31,#1 UBS: 03CKPA R36,#1 UBS: 02CKPA Z"A-;"  R30,#4 UBS " -9"0R O.";"  03CKPA LOB A #'3,RB MPC " "$; 4 K0ACPQ BE  R3$,#' PBCM  K"ANBL;"  02CKPA EQB 3 ,R' #B MPC . ARCHI CIAST EX NET;G R3+,1)(R VBMO 5:K0AC PM SU0 ; 2 RR CL  T. COPLOR NOMI; 4 ,R-3#V MO 1:K0AC P. CTP OO LORAJTC 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 EQB T ENUMRG AOR FANSC; L RONDCW ANSC F:ONTC OLMBSYA T GE;   07.31.72 BR WORD2E ;AND GO EXIT 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 NOSEG JMP DONE .ENDC .IFNDF NOSEG CONTRL .WORD 4  ;OVERLAY #4 JMP ENTRY1 .ENDC .IFDF NOSEG JMP LINK13 .ENDC EXOVL4: TSTB MAPF  ;WANT A MAP BEQ .+4  ;NO PMAP   ;PRINT IT MOV #TRAM,R0 ; DON'T PRINT IF A MAP WAS PRINTED TSTB MAPF BNE .+4 TYPE MOV #PASS2,R0 ;TYPE "PASS 2" TSTB BELOW0 BEQ .+4 ERR22 TYPE INCB PASS CLRB FLINE  ;BACK TO FIRST LINE .IFNDF NOSEG  ;OF CSI INPUT CONTRL .WORD 1  ;OV;M  R52,#- OVM G REAVS: 00CKPA C30+*4C22+0^*4C1N=   ;S AEDRMFOS IRDWO0 D4MOH ACE ; NGRISTI CIASF OND ESTPAE ONS NTOI PR1 T:PUUTO; ;) RSHA C(6S ERCTRAHA CIISC AOFR AD1=R ; S)RDWO2 (DSOR W40OD MOFR AD0=R: UTNPI; ;K AC P40ODM; ; DCEN. 6 RTTASP JM  EGOSNF FD.I  DCEN. 1 RYNTEP JM  #6Y LAEROV; 6 RDWO. L TRONC G SENO DFFN.I 0:S0IR DE INUTROH RCEA SRYRAIB LNTDESIRE  ;; ITEX& . ..; C PS RT  CKTA SUPN EACLS-YE; + P)(S 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#V MO  ALONTIDION COFD EN;   : DCEN CXNDER B N OOV;M  RDDWCN ORR Y RRCAT SE; 3 RL AS  AGFLT ENRRCUF OFE OV;M  RDDWCN SLA  ASR R4 ;PUT 07.31.72 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 ERLAY #1 JMP ENTRY1 .ENDC .IFDF NOSEG JMP START1 .ENDC ; ; LOAD MODULE OUTPUT ERROR--DIE ; LINK25: MOVB IOOPER,HBYTE MOV #CONVER,R0 INCB NOTINP ERR15 ; ; TRAP HANDLER AND JUMP TABLE ; TRAPH: MOV @SP,2(SP) ;STACK RTN ADDRESS. SUB #2,@SP  ;FORM ADR OF TRAP INSTRUCTION MOV @(SP)+,-(SP) ;GET TRAP INSTRUCTION. ADD #JTABLE-TRAP,@SP ;GET TABLE INDEX. MOV @(SP)+,PC ;GO TO SUBROUTINE. ; ; JUMP TABLE ; JTABLE: JT: UNPACK=.-JT+TRAP   ;MODSTT 1 A0TOOC BC  S?ITIG D 6NEDO; P @S SLA P @S3,#2 VBMO  ERFFBUN IARCHE ORSTO SIF;+ 1)(RP,@S VBMO  D?ENR HEOTT AUT OERRKMA; 1 A0TOOC BC  ITIG DIISC ATOINE OV M.&..; P @S LBRO  ..R.BEUM NOMFRT BIT GE; 0 RL AS 1:A0TO OS IT BIG DST 1 &NT CLPT SE;) SP-(0,23#2 OVM: 00OAOT ;N EACLK ACSTF OOP T   ; EDARLE CERSTGIRER BEUM N   ; TEBYT EX NATR PT, ERFFBUN IONSIERNVCO T:XI EON  ;. EG RRD 3ANTHR HEAT ROP TCKTA S) 3 ; 1)(RT SER PT. QDREE AGORSTR FEUF B) 2 ; R ROER, NO ; R ERFOIE BL  S?ESGRRO PINL NAIOITNDCO; L LVNDCT TS  Y)TLECIR DEDLLCAN HE W=0R3;(     ALONTIDION-CUB SALONTIDIONNC;U    F:FT I H UGROTHL AL FND ANTMELEMPCOE US; 3 RM CO  ONTIDION CNTREUR CET;G R3K,MSNDCV MO  ALONTIDION-CUB SSEAL FIF;   : FF I H NCRA BND A;  TFIF BR  NTREUR CET;G R3K,MSNDCV MO  ALONTIDION-CUB SUETRF ;I    T:IF X DCEN BR  RDDWCNR FOO TTDI; ) R1-( ORR 3 RL AS  SKDMCNO NT ITETARO; ) R1-( ORR  ; 07.31.72 BIC #177400,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 O40 UNPACK .WORD UNPA00 PACK=.-JT+TRAP   ;MOD 40 PACK .WORD PACK00 OTOA=.-JT+TRAP   ;OCTAL TO ASCII CONVERRSION .WORD OTOA00 SAVREG=.-JT+TRAP   ;SAVE REGISTERS .WORD SAVR00 RESREG=.-JT+TRAP   ;RESTORE REGISTERS .WORD RESR00 TXTPUT=.-JT+TRAP   ;PUT INTO TXT BLOCK .WORD TXTP00 GETPC=.-JT+TRAP   ;GET CURRENT PC VALUE .WORD GETP00 TYPE=.-JT+TRAP   ;TYPE A BUFFER ON TTY .WORD TYPE00 ACCEPT=.-JT+TRAP   ;READ FROM KBD .WORD ACCE00 SQUISH=.-JT+TR 0)(RRYNT EONR TEISEG RINR BEUM N) 1S MESUAS  ;) ONSIERNVCOI CIASO TALCT(OA TO ONETIOUBRSU ;T XI;E  PC TSR 5 ,R)+SP(V MO  R4+,P)(S OVM 3 ,R)+SP(V MO  R2+,P)(S OVM 1 ,R)+SP(V MO  EMTHE ORSTRE;0 ,R)+SP(V MO  SSREDD ARNTUREK ACST;) SP.(12+,P)(S OVM: 00SRRE ;S ERSTGIREE ORSTRE  ;; T.XI;E P)(S2.@1 MPJ ) SP-(0,RV MO  P)(S,-R1 OVM ) SP-(2,RV MO  P)(S,-R3 OVM ) SP-(4,RV MO  EMTHE AV;S P)(S,-R5 OVM: 00VRSA ;S ERSTGIRE VESA  ;; T.XI E &ERDLAN HOF) (1E LSFAR O0) (UETRO TRYAR CET;S  R3 SLA L VELEP UM BS,YE; ) R1(C IN  ORRR EO, N;  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  DMEN. : RG'AIF RG'AIF BLLO.G  F>NDF,,D,ZNZL,G,E,,NLTE,,LGTE,,GEQ<F SIGN AND EXP IN FL. PT. NO. 08.03.72 BIS #200,R0 ;PUT 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 DOUBLEWAP   ;REMOVE WORDS FROM TABLE .WORD SQUI00 UNSQUISH=.-JT+TRAP   ;MAKE A HOLE IN TABLE .WORD UNSQ00 PMAP=.-JT+TRAP   ;PRINT LOAD MAP .WORD PMAP00 MAPTYP=.-JT+TRAP  ;TYPE ON MAP DEVICE .WORD MAPT00 IOII=.-JT+TRAP   ;OBJ MODULE INPUT INIT. .WORD IOII00 IOIG=.-JT+TRAP   ;OBJ MODULE INPUT GET .WORD IOIG00 IOIC=.-JT+TRAP   ;OBJ MODULE INPUT CLOSE AND RELEASE .WORD IOIC00 IOOI=.-JT+TRAP   ;LOAD MODULE OUTPUT INIT .WORD IOOI00 IOOP=.-JT+TRAP   ;LOA ; 3 R0WSSR B S ESDRADO TR0D VESAT SE;) SP,(0)(R OVM: 01SRSW PC TSR T XI-EES;Y  EGSRRE 3:R0WS S- NO; 2 R0WSSL BP  E?BLTAF OND;E  0)(R STT R ADP KI-SNO; + 0)(R STT - ES;Y  01SRSW EQB ? NE OISTHT IIS;+ 0)(R),R1(P CM 2:R0WS S0 REDAV SOFR EACLL IAITIN; ) SP(R CL  R1+,P)(S DDA S ERCTRAHA CCHITSW;  P)(S SLA ) SP-(),R1(V MO  EGVRSA 0:R0WS S; 0.0= RRNTURE  ;, CHITSWE THD IN F'TAN CIF. NETIOU RCHITSWF ODR=AR0T-PUUTO; OR FCHARSEO TADHEH G,AR RP.I  LSNAIOITNDCOD TENATECAON;C     CXNDER B R ROER" "QO NUT BE,LSFA; 5 RR CL $: 3 T ENEMATSTO TCKBA; T MNST MPJ T CNRGAR CL $: 2A MMCOO TUPL ALS ESPRUP SS,YE;L EGCB,LR1 OVM O N;  2$ EQB ? ONSIESPRUP SALONTIDION;C SKMALCD,CNC.#L ITB K ANBLM-NOO TET;S   NBETS N IOATOC LNTREUR CVESA;1 ,RNTRPCH OVM: 1$ SSPABY, ES;Y   HRTCGE  NO ; $ 1E BN  A?MMCO;5 ,ROM.CCH#P CM  EDFIISATNS UIFH NCRA B;  3$ MIB 3 RT TS  NTMEGUART ES;T  ON!ORD 07.31.72 ROR R0 ;BINARY ZERO 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."D MODULE OUTPUT PUT. .WORD IOOP00 GGSD=.-JT+TRAP   ;GET GSD .WORD GGSD00 GNGSD=.-JT+TRAP   ;GET NON-GSD BLOCK. .WORD GNGS00 PRLD=.-JT+TRAP   ;PROCESS RLD .WORD PRLD00 SRGLOB=.-JT+TRAP   ;GET VALUE OF GLOBAL .WORD SRGL00 PTGLOB=.-JT+TRAP   ;GET PTR TO GLOBAL .WORD PTGL00 INSYME=.-JT+TRAP   ;INSERT AT SYME .WORD INSY00 SRMODN=.-JT+TRAP   ;SEARCH FOR MODULE NAME .WORD SRMO00 INUSYM=.-JT+TRAP   ;INSERT UNDEFINED SYMBOL .WORD INUS00 SYMOVF=.-TCWI SOFR AD1=-R  ; LEAB TCHATSPDIF ODR=AR0T-PUIN  ;; NETIOU RCHARSEH TCWIS; ;0 D0RLPR B C BSTJUAD; ) R0,(#2 UBS T PUXTT T MILIH IG HET;S R4M,MEOPTV MO  UTTPTX  AGFLF OESPICOO TWT GE;) SP-(),SP(V MO  ITIM LOW LET;S R4R,ADOWLV MO 9:MD C; TSMILIM RAOGPRT SE--9- #MDC; ; R ROERL TAFA; 0 R1ER  ;. PETYC PBET US MMD C-- -ORRRE; ;0 D0RLPQ BE  1)(R2,MDPC#B MPC 0 D0RLPQ BE  1)(R1,MDPC#B MPC E YP TPCE BSOALT US MNDMAOM CXTNE, NEDOT NOF I; EXLDTC LLCA  RSLENDHAE ATDIMEIM;   : IF I F II BLLO.G  LSNAIOITNDCO TLBT.S  C ND.E  VRTOXI  ECTSXI  NTOU CRDWO;  W LK.B C:WDLT FN LIMPIC SENTE 4 KWBL.: AVTSFL ACN AI;M  4W LK.B F:BULT F) UFTBFLD EEECPRT US(MT ENONXP ERYNABI; 1 KWBL.: EXTBFL NTNEPOEXL MACIDE;  W LK.B P:EXLT FG LA FNTOI PALIMEC;D   KWBL.: OTTDFL IT BGNSI;  W LK.B N:SGLT FE URMP INTOI PNGTIOAFLF ORTTA;S    G:BELT FE URMPIC SENTE 4 ITXM MPJ 2 ,R%72 WORD2C: ; 07.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 &JT+TRAP   ;CHECK FOR SYMBOL OVERFLOW (FATAL) .WORD SYMO00 GETSEC=.-JT+TRAP   ;GET SECTION NAME POINTER .WORD GETS00 ERR01=.-JT+TRAP .WORD ER0100 ERR02=.-JT+TRAP .WORD ER0200 ERR03=.-JT+TRAP .WORD ER0300 ERR04=.-JT+TRAP .WORD ER0400 ERR05=.-JT+TRAP .WORD ER0500 ERR07=.-JT+TRAP .WORD ER0700 ERR08=.-JT+TRAP .WORD ER0800 ERR09=.-JT+TRAP .WORD ER0900 ERR10=.-JT+TRAP .WORD ER1000 ERR11=.-JT+TRAP .WORD ER1100 ERR12=.-JT+TRAP .WORD ER1200 ERR1PR LEB D RLN ISTLAE BSTMUS NDMAOM CPC  ;) R0,(#4 UBS + P)(S STT C RPCU4,RV MO  FYDIMO;4 ,R)+R1(D AD  UEAL VSEBAN IOCTSET GE;4 ,R5)(RSEBA OVM: D8CM ;N IOATICIFOD MPC- -#8D CM  ;; D8CM BR  0)(R4,#B SU  R54,RV MO  CTSEPTT SE;T ECTS,PR4 OVM R ROERL TAFA; 1 R1ER  ERNTOI PONTIEC SET;G   ECTSGE  )+R1,()+R1(P CM  R41,RV MO 7:MD C; PCT SE- -#7D CM  ;; 05LDPR BR  0)(R2,#B SU  R4+,1)(R DDA R ROER; 9 R0ER  OBGLSR  )+R1,()+R1(P CM  R41,RR4 OVM V SALT FTOF BULT FVEMO; 1 ,RR3 OVM: SVTGFL RNTURE  2)(R-L RO  2)(R-L RO  2)(R-L RO  2)(R-L AS  R24,RV MO  FTHI SFTLE;   : LSTGFL RNTURE  )+R1(R RO  )+R1(R RO  )+R1(R RO  )+R1(R RO  TETAROT GHRI; 1 ,RR3 OVM T IFSHT GHRI;  C CL S:GRLTF RNTURE  NO ; $ 1E BN  H?UGROTH; 3 ,RR2 MPC Y ARSSCENEF IE,PLIP RUEINNTCO; $ 2S BC  IND AD; ) R1-( DCA: 2$ ESRIAR COR FET;S  R12,RV MO  RDWON IDD;A 2)(R,-2)) R0 ; TO THE NUMBER 07.31.72 ; 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: *3=.-JT+TRAP .WORD ER1300 ERR14=.-JT+TRAP .WORD ER1400 ERR15=.-JT+TRAP .WORD ER1500 ERR16=.-JT+TRAP .WORD ER1600 ERR17=.-JT+TRAP .WORD ER1700 ERR18=.-JT+TRAP .WORD ER1800 ERR19=.-JT+TRAP .WORD ER1900 ERR20=.-JT+TRAP .WORD ER2000 ERR21=.-JT+TRAP .WORD ER2100 SWSR=.-JT+TRAP  ;SWITCH SEARCH .WORD SWSR00 INPTRH=.-JT+TRAP ;INSERT AT PTRH .WORD INPT00 DIRSR=.-JT+TRAP  ;DIRECTORY SEARCH .WORD DIRS00 MOVTAB=.-JT+TRAP .WORD MOVT00 NOVAL=.-JT+TRAP OVM 1 MP,TR4 OVM W NOC PET;G   PCETG: D6CM ;D CELASPDIE IVITDD AALOBGL- -#6D CM  ;; -204LDPR BR  0)(R2,#B SU  NTTANSCOE IVITDD;A R4+,1)(R DDA + 1)(R+,1)(R MPC R ROER; 9 R0ER  UEAL VALOBGLT GE;  B LORGS 4 ,RR1 OVM: D5CM ;C LOREE IVITDD AALOBGL- -#5D CM  ;; -204LDPR BR  ))+2(.X- (RMFO; 4 ,RP1TM UBS: 05LDPR ORRR;E  09RRE E LUVAL BALO GET;G   OBGLSR  )+R1,()+R1(P CM  R41,RV MO  P1TM4,RV MO  OW NPCT GE;  C TPGE 4:MD C; OCEL REDACPL(R6D AD $: 1A RE AVESAO TNTOI;P  R24,RV MO  UFTBFLO TERFFBUE AV SDD;A    D:GALT F S GLLTFL ALC S GLLTFL ALC V GSLTFL ALC 5 ;*    0:M5LT F D GALTFR B S GRLTFL ALC T GHRIE ALSC; S GRLTFL ALC P KUAC BINE AV;S  SVTGFL LLCA $: 1X BELTFC IN  RSTGFL LLCA  1$ LOB ? OMRO;4 3146#1),R3(P CM  /4*5;   : 54TMFL N URETR 0 RING LA FET;S  R03,RV MO  NKLA-BON NTHWIN URET;R   NBETS: 1$ SEAL FASG LA;F  R3 LRC N IMECAE WRE-; 07.31.72 MOV (SP)+,R5 ;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 . .WORD NOV00 ONEVAL=.-JT+TRAP .WORD ONEV00 ERCODE=.-JT+TRAP .WORD ERCO00 READER=.-JT+TRAP .WORD READ00 ERR22=.-JT+TRAP .WORD ER2200 ERR23=.-JT+TRAP .WORD ER2300 .IFNDF NOSEG CONTRL=.-JT+TRAP  ;RUN TIME OVERLAY CONTROLLER. .WORD SUBR46 .ENDC ; ; TEST FOR NO VALUE ; NOV00: CMP (R1),#1 BR VALUE ; ; TEST FOR ONE VALUE ; ONEV00: CMP (R1),#2 VALUE: BEQ .+4 ERR19 RTS PC ; ; READ ERROR CHECK ; READ00: MOVB -IS DALOBGL- -#4D CM  ;; -202LDPR BR  ))+2(.- X (RMFO;4 ,R)+R1(D AD  R4 EGN . CELA PNTREUR CATC PET;G   PCETG: D3CM ;C LORED CELASPDIL NAERNT I--3 #MDC; ; 0 D0RLPR B ) R0,(#6 UBS: 04LDPR UTTPTX  ORRR;E  09RRE E AM NALOBGLR FOH RCEA;S   OBGLSR  )+R1,()+R1(P CM  MENAF ODR AET;S  R41,RV MO 2:MD C; C LOREL BALO G--2 #MDC; ;P -UANLE CONMMCOE OM SDOO G ; 2 D0RL P R B ENTH, ESDOS HI TEREVATWHO D ;T PUXT T HE WTOT SERE, NENO;T PNHR,CR0 OVM D SEESOCPRS ITIG DNY AIF) ODGO (ROZE; $ 1Q BE  ERNTOI PARCHL NAIOIGOR;0 ,R)+SP(V MO  UEAL VINY GUT RSFIE ACPL;E LUVA),R3(V MO  NTOU CARLE;C  DCTWFL LRC E UTOLBS AKEMA; E ODMR CL X:GELT FY ANF IN,IG SET;S 3)(RN,SGLTFD AD $: 7T ORRRE: 6$ VETISIPOF IOK; $ 7L BP  ONTISIPON IG SSTTE; ) R3(T TS  5$ GEB 2 RC DE  R2 ECD ) R2F(BULTFC AD $: 5C SE  2)(RUFTBFL7,7777#0 ISB S TEBYO TRTVEON;C  R2 SLA: 8$ RDWOE GLIN;S  1 08.03.72 ; 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) 21(R0),-(SP) BIC #-3-1,(SP)+ BEQ .+4 ERR15 BITB #EOF,-1(R0) ;ERROR? BEQ .+4 ERR15   ;YES - RTS PC  ;NO - ; ; IO EXEC FOR OBJ MODULE AND LOAD MODULE ; ; ; INPUT INIT ; INBLN=INB-INA IOII00: MOV #INA,IN  ;SET INPUT BUFFER POINTER ; ; INITIALIZE OBJECT MODULE DATA SET ; MOV #OBJDEV,-(SP) EMT INIT ; ; OPEN OBJECT MODULE FILE ; TSTB ODTF BEQ LNK147 MOV #ERRET2,OBJADR-4 TST OBJADR BNE LNK147 MOV #57164,OBJADR LNK147: TST L CASIHY P ; 4 ,R)+R1 ( DD A D KEAC P ; 4 R OR R TO ; LC C RTVEON C ; 4 R OR R LC C E LUBAE AS BLEABATOCEL RET G ; R4),R5E(AS B OV M . = 15MD C* ; UEAL VLEDUMOT ECBJ OHE TTOE LUVAS HI TDSADN HE T * ; ALICYSPHD KEAC PTOC PNTREUR CHE TTSERNVCON IOCTSES HI T * ;* ;0 D0RLPR B ) R0,(#4 UBS: 02LDPR UTTPTX  ITE ATOCEL;R R4),R5E(ASBD AD  UER2 NCI E YP TETESPR; $ 8E BN  LEUBDO; 2 RL AS  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 ;R  1)(R-T TS  R12,RV MO  TSBIT GHEIT IFSHO TET;S  R24,RV MO $:5;MOVE IN NEXT NUMBER STCODE   ;PLACE ON CODE ROLL SOB R2,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 6OBJADR+4 BNE .+10 MOV #0,OBJADR+4 ;SET DEFAULT EXTENSION .=.-4 .RAD50 /OBJ/ .=.+2 MOV #OPENI,OBJADR-2 LNK146: MOV #OBJADR,-(SP) MOV #OBJDEV,-(SP) EMT OPEN CLR OBJADR-4 CLRB ODTF MOV #INA,-(SP) ;START FIRST READ MOV #OBJDEV,-(SP) EMT READ BR IOIG00 ERRET2: CMP #401,OBJADR+6 BNE .+14 CLR OBJADR-4 CLR OBJADR+6 BR LNK146 MOV #401,OBJADR+6 BR LNK146 ; ; INPUT GET ; IOIG00: MOV R2,-(SP) ;SAVE R2 MOV IN,R2  ;GEAL VEL RET;G R4+,1)(R OVM: D1CM ;C LOREL NAERNT I--1 #MDC; ;5 D1CM + 6 MD,CD5CM4,MD,C06LDPR2,MD,CD9CM8,MD,CD7CM+ 6 MD,CD5CM4,MD,CD3CM2,MD,CD1CM6,D0RL+P T:MDRC ERDLAN HEROPPRE UTECEXO ;G 2)(RDTCM@R MPJ 2 RL AS  14RRE: 06LDPR +4.E BL  AXDMCM,#R2 MPC 5 ,RCTSEPT OVM S IT B 7OW LVESA;2 ,R007617#C BI  MD CCKTA;S P)(S,-R2 OVM S ESDRADL UACT ARMFO; 3 ,R-4#D AD  TOR TEINPOT TXD HEUS PDD;A R3),SP2( DDA T SEFF,O#2 UBS T IVESA;T SEFF,OR3 OVM T TXO NT IET 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: G5LTF 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 LLCA  HTIG RHE TTOE OR MCEON; S GRLTFL ALC: 3$ 4S GRLTFL ALC T GH9  ;SAVE REGISTERS MOV CHRPNT,-(SP) ;STACK CURRENT CHARACTER POINTER MOV #FLTBUF,R3 ;CONVENIENT COPY OF POINTERS MOV #FLTSAV,R4 ; TO BUFFER AND SAVE AREA MOV R4,R1 1$: CLR -(R1)  ;INIT VARIABLES CMP R1,#FLTBEG BHI 1$  ;LOOP UNTIL DONE MOV #65.,FLTBEX ;INIT BINARY EXPONENT CMP #CH.ADD,R5 ; "+"? BEQ 10$  ; YES, BYPASS AND IGNORE CMP #CH.SUB,R5 ; "-"? BNE 11$  ; NO MOV #100000,FLTSGN ;YES, SET SIGN AND BYPASS CHAR 10$: GETCHR   ;GET:T BUFFER POINTER MOV R2,R0 CMP (R0)+,(R0)+ ;SET R0 = IN+4 MOV R0,R1 TST (R1)+  ;SET R1=IN+6 ADD #INBLN,R2 ;ADVANCE POINTER TO NEXT BUFFER. CMP R2,#INB  ;TOO FAR? BLOS IOIG01  ;NO MOV #INA,R2  ;READ INTO INA IOIG01: MOV R2,IN  ;READ INTO INB MOV R2,-(SP) MOV #OBJDEV,-(SP) EMT READ MOVB -1(R0),R2 ;GET LAST STATUS BIC #-3-1,R2 ;SAVE LOW 2 BITS BEQ .+4 ERR15 MOV (SP)+,R2 ;RESTORE R2 RTS PC .EOT FSOFT GE;3 ,R)+R1(B OVM D CMT GE;2 ,R)+R1(B OVM: 01LDPR ;D ANMMCOT EX NSSCEROP; ;C PS RT X:DERL PC PNTREUR CTEDAUP, ES;Y PCUR,CP)(S@4 DDA - O ;N  01LDPR GTB ? LD RTHWIE ON;D  0)(R STT: 00LDPR ;. Y)ANF (IK OCBLT TXS OUVIRE PTOT INPO1 RND AR0D KEACST   ;D OR WLK BLD RNGWILOOL FTEBYO TTS PR1   ;C BLD RTOS PT0 R ; --T PUIN  ;; LD RSSCERO PTOE INUTROUBS; ; DCEN. 7 RTTASP JM  EGOSNF FD.I  DCEN. 1 RYNTEP JM  7D OR.W  RIS 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 BLYIPLTMU; 4 M5LTFL ALC: 2$ 3 $ 33 BR  WO TBYD AN ; X BELTFC IN  5BY= THE NEXT CHARACTER 11$: BITB #CT.NUM,CTTBL(R5) ;NUMERIC? BEQ 20$  ; NO BIT #174000,(R3) ;NUMERIC, ROOM FOR MULTIPLICATION? BEQ 12$  ; YES INC FLTEXP  ;NO, COMPENSATE FOR THE SNUB BR 13$ 12$: CALL FLTM50  ;MULTIPLY BY 5 CALL FLTGLS  ;CORRECTION, MAKE THAT *10 SUB #DIG.0,R5 ;MAKE ABSOLUTE MOV R4,R2  ;POINT TO END OF BUFFER ADD R5,-(R2) ;ADD IN ADC -(R2)  ;RIPPLE CARRY ADC -(R2) ADC -(R2) 13$: ADD FLTDOT,FLTEXP ;DECREMENT IF PRO> ;TAPE 5 ; ; SUBROUTINE IOIC ; ; CLOSE INPUT FILE AND RELEASE INPUT DEVICE ; ; CLOSE INPUT FILE IOIC00: MOV #OBJDEV,-(SP) MOV (SP),-(SP) EMT CLOSE ; ; RELEASE INPUT DEVICE ; EMT RELEAS RTS PC ; ; OUTPUT INIT ; OUTBL=OUTB-OUTA IOOI00: CLRB OUTB+3 IOOI02: MOV #OUTA,R0 ;SET OUTPUT POINTER MOV R0,OUT IOOI01: CMP (R0)+,(R0)+ ;R0=OUT+4 CLR (R0)  ;INITIALIZE BC MOV R0,R1 TST (R1)+  ;R1=OUT+6 RTS PC ; ; OUTPUT PURLNTCO  EGOSNF NDIF.: 00APPM AP MADLOT INPRT ENIDESR; ; DCEN. 5 RTTASP JM  EGOSNF FD.I  DCEN. 1 RYNTEP JM  #5Y LAEROV; 5 RDWO. L TRONC G SENO DFFN.I 0:D0GS GD GSD EA RNTDESIRE ;; T.XI E -SEEL; C PS RT  RENOIG- S YE; 0 S0NGGQ BE  K?OCBLD GS;) R1,(LKDBGS#B MPC G OII: 00GSGN ;K OCBLD GSN NOT GE--SDNGG; ; S YE; 2 I0OOIR B O ;N  01OIIO OSBL  AR FOO;T TBOU,#R0 MPC T OU0,RV MO  ERFFBUT EX NTOE NCVAAD;0 ,RBLUTY 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 E ALSCO TMETI; P EXLTFT TS $:31 SOF IITEX; X GELTFQ BE  R0+,1)(R ISB 0 ,R)+R1(S BI  R0+,1)(R ISB O ER ZOR FSTTE;0 ,R)+R1(V MO  R13,RV MO 3:TGFL H UGROTHL AL;F  G3LTFR B; NTNEPOEXE ATPD;U XPTEFL0,RD AD  TELUSOABS ITE UR SKEMA;  T TSBSA X DIRAE ORSTRE;X DIRA,C)+SP(V MO $:22 CESSING FRACTION CLR (SP)  ;CLEAR INITIAL CHAR POINTER (WE'RE GOOD) BR 10$  ;TRY FOR MORE 20$: CMP #CH.DOT,R5 ;DECIMAL POINT? BNE 21$  ; NO COM FLTDOT  ;YES, MARK IT BMI 10$  ;LOOP IF FIRST TIME AROUND 21$: CMP #LET.E,R5 ;EXPONENT? BNE FLTG3  ; NO GETNB   ;YES, BYPASS "E" AND BLANKS MOV CRADIX,-(SP) ;STACK CURRENT RADIX MOV #10.,CRADIX ;SET TO DECIMAL TERM   ;EVALUATE TERM BNE 22$  ;BRANCH IF NON-NULL ERROR A  ; ERROR, NULLT ; IOOP00: MOV OUT,R0  ;GET PTR TO CURRENT BUFFER CLRB IOOPER CMP R0,#OUTA ;BUFFER A? BEQ IOOP01 TST LODDEV+6 ;ANY OUTPUT? BEQ IOOP02  ;NO-- MOV #OUTB,-(SP) ;OUTPUT BUFFER B MOV #LODDEV,-(SP) EMT WRITE MOVB OUTA+3,IOOPER BR IOOP02 IOOP01: TST LODDEV+6 ;ANY OUTPUT? BEQ IOOP02  ;NO-- MOV #OUTA,-(SP) ;OUTPUT BUFFER A MOV #LODDEV,-(SP) EMT WRITE MOVB OUTB+3,IOOPER IOOP02: BICB #-EOF-1,IOOPER ;CLEAR ALL BITS EXCEPT EOF ADD #O