; UPDATE 14 MAY 73 RASM.S21 ; UPDATE 26 APR 73 RASM.S20 - CONVERSION TO ROS 3.0 ; UPDATE 19 27 JUN 1972 ALL EXIT TYPES TO 2 AND ADD NO CHECKPOIN ; UPDATE 18 29 APR 1972 MINOR CLEANUP AND MAKE INTO AN OVERLAY TASK. ; UPDATE 17 26 APR 1972 CLEAN UO EXIT ON ERRORS. ; UPDATE 16 21 APR 1972 CLEAN UP, 'NONE' IN UNDEF SYM LISTING, ; EDIT OF SYMBOL LISTING ; UPDATE 15 10 APR 1972 ADD BFUPADD BFUP, GET RID OF INI.(xx(@(xxh(D(n.@2 ((D&(D   d.dv  vj.   -. .yx(byh.:L;(:L;h?Th.?Th4?T@hP?Tht?Thfh .PHEW-MADE IT-THIg&S IS TASK 46  4#4NOT BAD-GOT TO TASK 47  P.P THIRD TIME IS THE CHARM-TASK 48 ,'.vSUPERSYSTEM WILL NEVER MAKE IT HERE-.TASK 49 @THIS MESSAGE WILL NEVER BE) T, AND ; CLEAN UP ; UPDATE 14 23 MAR 1972 ERR #, SYMBOL LISTING, RLD BYTE COUNT ; UPDATE 13 22 MAR 1972 PACJING, FORMATS, SYMBOL LIST, BIANRY ; UPDATE 12 21 MAR 1972 RLDOUT,PHEAD,SPACE COM,.END,BINDEC ; UPDATE 11 19 MAR 1972 FIX BINDEC, PHEAD, AND BFWRIT ; UPDATE 10 16 MAR 1972 FIX SPACE COMPRESS, ERROUT, BFWRIT, & BFREAD ; UPDATE 9 15 MAR 1972 CLEAN UP AND CONTROL WRD IN CREADER ; UPDATE 8 14 MAR 1972 ADD +   ( TASK F<& . ) d +I d.F%I,*p X &p l pt.p ** PROTECTED F YILE MODIFIED *.;}5J` H#H:H& He .:L;@?T@:dHdHfH.f@yy@y@YH/('ysh ww •* :L;:L;:L;:L;?Tj  0& & &  f:L;K. PRINTED DUE TO ROS SCREW UPS-TASK 50 S WORD TO I/O LISTS, ETC. ; UPDATE 7 13 MAR 1972 CLEAN UP ; UPDATE 6 7 MAR 1972 FIX UP STACK AND STKSIZ ; UPDATE 5 7 MAR 1972 ADDITION OF PST(WITH /45) TO RASM ; UPDATE 4 24 FEB 1972 FROM V03 TO V04 INCLUDES V2A UPDATE ; TO FIX UP '.LINES' AND CHANGE THE LINE ; NUMBER TO 8 CHARACTERS. ; UPDATE 3 6 FEB 1972 FROM V02 TO V03 ; UPDATE 1 3 FEB 1972 FROM V01 TO V02 ;**********************************.;}6J` H#H:H& Hf.:L;@?T@@:dHdHfHg.f@YH0(ysh. .& & &  2& & X?T@ f:L;&&  w1 * ;* THE LISTING WILL BE PRINTED ON THE LINE PRINTER UNLESS * ;* IT DOESN'T EXIST IN WHICH CASE IT WILL BE LISTED ON THE * ;* SYSTEM TELETYPE. * ;* * ;* PROGRAMMER 54 * ;* DATE * ;* REVISI**************************************RAS ; R A S M *RAS ; *RAS ; PROGRAM IDENTIFICATION: ROS ASSEMBLER *RAS ; *RAS ; PROGRAM USAGE: THIS IS THE DEC-PAL11R ASSEMBLER WITH MODIFIED *RAS ; I/O TO PERMIT IS USE WITH ROS. OTHER THAN A *RAS ~raWΪ^֠Mp&Ȫ_MQ{ e wA <w>6 * 8. BYEAR = 9. BDAY = 10. BMNTH = 11. BSTRTS = 12. BLGTH = 14. ; .ENDC ; ; MISCELLANEOUS EQUATES ; PSR = 177776 ; PROCESSOR STATUS REGISTER PLOCK = 340 ; PRIORITY LOCKOUT MASK FLSSIZ = 50. ; FILE LIST TASK SIZE YES = 131 ; ASCII Y NO = 116 ; ASCII N .PAGE ; ; FLIST TASK HEADER ; FLSTHD =  14. ; .ENDC ; ; MISCELLANEOUS EQUATES ; PSR = 177776 ; PROCESSOR STATUS REGISTER PLOCK = 340 ; PRIORITY LOCKOUT MASK FLSSIZ = 50. ; FILE LIST TASK SIZE YES = 131 ; ASCII Y NO = 116 ; ASCII N .PAGE ; ; FLIST TASK HEADER ; FLSTHD = . .WORD 1 ; THREAD WORD .WORD FLIST ; ENTRY POINT  FROM THE CARD READER, STORE THE IMAGES IN THE *RAS ; BFUP FILE AS ELEMENT 'RASRC', PROCESS THE *RAS ; SOURCE STATEMENTS USING 2 PASSES, PRODUCE A *RAS ; OBJECT MODULE IN THE BFUP FILM, DELETE 'RASRC', *RAS ; AND EXIT. IT MUST BE REQUEUED TO ASSEMBLE A *RAS ; SECOND PROGRAM. DURING PASS 2, A LISTING WILL *RAS ; BE PRODUCED ON THE LINE,1 1 ~~b7pUn  mc5ZP~gmcBXc~   E $ʋ  wE U0 ӸӸӸӸ5~g 5f~Ɂw BXc  4w%e $" jUh 22 ~h_fz 4 mc4 1 Xc ̗ | Xנ׬ \ 8 w ~zh6 p . .WORD 1 ; THREAD WORD .WORD FLIST ; ENTRY POINT .WORD 0 ; INIT. ENTRY POINT .WORD 0 ; MAX. EXECUTION TIME .BYTE FLSSIZ ; STACK SIZE .BYTE PRIBKG-1 ; PRIORITY ONE HIGHER THAN BACKGROUND .WORD 0 ; CURRENT TIMER VALUE .IFZ ARG XXXXXXXX FLIST MUST HAVE PASSED ARGUMENT .ENDC FLTYPE: .WORD 0 .WORD 0 ; INIT. ENTRY POINT .WORD 0 ; MAX. EXECUTION TIME .BYTE FLSSIZ ; STACK SIZE .BYTE PRIBKG-1 ; PRIORITY ONE HIGHER THAN BACKGROUND .WORD 0 ; CURRENT TIMER VALUE .IFZ ARG XXXXXXXX FLIST MUST HAVE PASSED ARGUMENT .ENDC FLTYPE: .WORD 0 ; FILE TYPE FOR PASSED ARGUMENT .BYTE 5 ; CPU STATUS - FILE TYPE ! PRINTER FOLLOWED BY *RAS ; A SYMBOL TABLE LISTING. *RAS ; *RAS ; PROGRAMER: 53 *RAS ; VERSION: 1 *RAS ; DATE: 15-MAR-72 *RAS ; CATALOGUE NUMBER: *RAS ; "wZ --)XN 7 <>& & (*ʕ ~0~0~ $~h w W  ʕޖw Ζ  ʕ~  Xce3   `~ji wtʕ~6 l@e x n~XceD  .& . D8~i~2   ;~3~@e  ڕҕE!ʕw~ʕ D~w~## ; FILE TYPE FOR PASSED ARGUMENT .BYTE 5 ; CPU STATUS - FILE TYPE .BYTE $FLTNO ; TASK NO. .WORD 0 ; STACK POINTER .WORD 204 ; FILE ID . = .+FLSSIZ+FLSSIZ-2 ; TASK STACK ; .PAGE ; .IFNZ DRESDI!$BATCH ; ; DISC I/O PARAMETER LIST AND BUFFER ; DLIST = . .WORD 1 ; THREAD WORD DEVNO: .BYTE 0 ; DEVICE$ .BYTE $FLTNO ; TASK NO. .WORD 0 ; STACK POINTER .WORD 204 ; FILE ID . = .+FLSSIZ+FLSSIZ-2 ; TASK STACK ; .PAGE ; .IFNZ DRESDI!$BATCH ; ; DISC I/O PARAMETER LIST AND BUFFER ; DLIST = . .WORD 1 ; THREAD WORD DEVNO: .BYTE 0 ; DEVICE NO. .BYTE 2 ; EXIT TYPE 2 .WORD 0 ; NO I/O COMPLETE SU% *RAS ;***********************************************************************RAS .TITLE RASM - ROS PAL ASSEMBLER .ENABLE CDR ; 5/2/73 ; COMPUTER  PDP-11 ; CONFIGURATION ROS RAS ;   REQUIREMENTS ; EAE FOR '*' AND '/' RAS ; &~Zj mcw 0  w *&W h 6 LeD  84[ }~j e ewE4~ Xc &  nԔuCt  {~Jk 8~0~ʕ 1~ ct& twnʕre@  BlXc >: -Cʋ7~kC` . t~ ʋ x~p~ 1 2 ʕw ~p~p~c5f ' NO. .BYTE 2 ; EXIT TYPE 2 .WORD 0 ; NO I/O COMPLETE SUBROUTINE .BYTE 0 ; NO ERROR TASK .BYTE 3 ; DISC LEVEL 3 DERRWD: .WORD 0 ; DISC ERROR WORD .WORD 0 ; FOR SYSTEM .WORD .+2 ; ADDRESS OF DISC I/O BUFFER DODID: .WORD 0 ; DOD FILE ID-SET DYNAMICALLY .BYTE 0 ; USE RLSECT AND NWORD .BYTE (BROUTINE .BYTE 0 ; NO ERROR TASK .BYTE 3 ; DISC LEVEL 3 DERRWD: .WORD 0 ; DISC ERROR WORD .WORD 0 ; FOR SYSTEM .WORD .+2 ; ADDRESS OF DISC I/O BUFFER DODID: .WORD 0 ; DOD FILE ID-SET DYNAMICALLY .BYTE 0 ; USE RLSECT AND NWORD .BYTE 0 ; READ DISC I/O FCN .WORD 0,0,0 ; RESERVED FOR DISCIO RLSECT: .WOR) RAS ;DESCRIPTION  SPECIFICATION DOCUMENTS #130-390-008-01 ;      #130-390-011-00 AND -01 ;      #130-390-012-00 AND -01 ;      #130-390-014-00 ;      #130-390-023-00 ;   MULTI-PASS, RELOCATABLE, SYMBOLIC ASSEMBLER ; STANDARD PROCESSOR WIDE REGISTER ASSIGNMENTS R0  =  %0 R1  =  %1 R2  =  %2 R3  =  %3 R4  =  %4 R5  =  %5 R6  =  %6 SP = %6 ; * D Ɠw~:l B  cuf w`wn Ł{cCaS mc~l  mcɕ E C~5 ~ D~  lXc  Xc  rJ~*m$ EU0~E|UvEjUPdEbU\ EPU@JE~mHUBw 7 7М   D6m   5q6m W !5+0 ; READ DISC I/O FCN .WORD 0,0,0 ; RESERVED FOR DISCIO RLSECT: .WORD 0 ; RELATIVE SECTOR .WORD 64. ; ONE SECTORS LENGTH BUFFER = . . = .+128. ; RESERVE 64. WORDS FOR BUFFER ; .ENDC WORKWD: .WORD 0 WORKWA = WORKWD-5 PAGCTL: .WORD 0 ; USED FOR PAGE CONTROL .IFNZ $BATCH ASCII: .WORD 0,0,0 ; USED FOR ASCII CONVERSION ; BETPTB = ,D 0 ; RELATIVE SECTOR .WORD 64. ; ONE SECTORS LENGTH BUFFER = . . = .+128. ; RESERVE 64. WORDS FOR BUFFER ; .ENDC WORKWD: .WORD 0 WORKWA = WORKWD-5 PAGCTL: .WORD 0 ; USED FOR PAGE CONTROL .IFNZ $BATCH ASCII: .WORD 0,0,0 ; USED FOR ASCII CONVERSION ; BETPTB = . .ASCII /OBJECT / .ASCII /LOAD / .ASCII /SYMBOLIC/ .ASCII- PAL R7  =  %7 PC = %7 ; PAL ; PAL .PAGE PAL ; THE PST MUST BE PLACED BETWEEN THE STACK AND RASM. RAS RASMPR = PRIBKG ; RASM'S PRIORITY LEVEL = BACKGROUND RAS RASMNO = $RASNO ; RASM'S TASK NUMBER RAS BFILE = $BC.X8@@@U.@@@@@.@@@(XXh~(~~h.~7 B= H 0 ~U B " $ .8    f.8$,   !* "%,  $ * 8"8.6  " w V 7 7 w@ @ " _.8 B ?  &DCc  w " w %.^  w  % 7  .&w \w wlw  f^.w \ J w Z 7Y w~wrw v  b & . % E e w~    . =w    w   w t  .w   w w   7 w  7 w .B7 7    w7    .h ww (b  ww w .A B` D %Z V w.]  7L w|B wr@ E. 8wR78 wt  E 88a. t8P 8Iw -  81HID ; RASM(S BATCH FILE ID RAS BTYPE = $BCHTP ; TYPE OF BATCH FILE RAS STACK = 200. ; AREA FOR RASM STACK (BELOW SYM TAB). RAS SYMSIZ = $RASIZ ; # ENTRIES IN UST (4 WORDS/ENTRY) RAS ; RAS .DEF RASHED ; GLOBL FOR INITIALIZATION RAS ; RASM TASK HEADER  w %0 %7E=.| `  1  W І  $  .lm 7 y\lnh.\ "$l&n(hQ6~NG.6  ~Nt.0:7W.  0:X.D  77% .(w %=w w -.N w w ww  .tl ~7mttppw td.^\w lR%/w h\. 8 ..V  L ed Vr.H  !VB !V=L !HVV. 64H4 Z V!4Hl4 ZH ZVH$l(Z1.2 % w   @w t-.X@ % % w Z ww.~  pD  .&C@AEPA&fw Lw P/w .Vw   ` E. `    . ww 7UE.<w T76  .bpZw ׭U5 Z.w`@j5!.< , *e E Wp5 RAS RASHED: .WORD 1 ; THREAD WORD 4/26/73 .WORD RASMNO ; TASK NUMBER 4/26/73 .BYTE 1 ; BATCH TASK 4/26/73 .BYTE RASMPR ; PRIORITY 4/26/73 .IF Z $KT11C ; TASK ENTRY POINT 5/14/73 .WORD START ; 5/14/73 (H. w w4  e w.* ҕKҕSҕU~  we0].P  w we0  we0 ).v  we0~  .e!"&"u. T P -^rTwhwwx=. `0 E ~R (Rh. ׭) ׭N< Fs  .   e. D $   $$ .4  p   k  p & .Z "f&f  ". r4HlH H l&H. \ W  <lH !lH. %$ &e N @ ". e0w &  8F 8.  ,7 ;  .>      .d    އw . rn  7,8\V8-8&8;. T HwD 7< %,. !  %? ?M.   w v w %w ,  B." 77w V e0w ,w d.H w rXTN6E .IFF ; 5/14/73 .WORD START-STKTOP ; GET RID OF THE RELOCATION 5/14/73 .ENDC ; 5/14/73 .WORD 0,0 ; NO MAX TIME 4/26/73 .WORD STACK ; STACK SIZE 4/26/73 .WORD $OVTYP ; CPU LEVEL & OVERLAY FILE TYPE 4/26/73 .WORD 0,0 BE  ". *;/\ $G._<^,OWEBP@>SRC-FI!XADTS PMDTCFRB   R` R V V .<ADDB B C$DI ; STACK POINTER & PASSED ARG. 4/26/73 .IF NZ $KT11C ; 4/26/73 .WORD 077406 ; ALL PDRS FULL 4K R/W 5/14/73 .WORD 077406 ; ALL PDRS FULL 4K R/W 5/14/73 .WORD 077406 ; ALL PDRS FULL 4K R/W 5/14/73 .WORD 077406 ; ALL PDRS FULL 4K R/W 5/14/73 .WORD 077406 ; ALLJ2~"uv,,,, , ,,~uuROS DISC SYSTEM INITIALIZED   pbnpnvnluelupZj|6n %.N  ~vn l%0 oe B{#E w{ w7  o % %  ~vw :  ou |5w @KTBUF = . .WORD 70. .WORD 0 .ASCII /XXXX/ OB1: .ASCII /X XXXXX/ OB2: .ASCII /X XX/ OB3: .ASCII /X XX/ OB4: .ASCII /X XXXXX/ OB5: .ASCII /X XXXXX/ OB6: .ASCII /X / OB7: .ASCII /X / OB8: .ASCII /X XXX/ OB9: .ASCII /X/ .BYTE 15 ; CARRIAGE RETURN .EVEN IFDCLR = OB8+7 ; EJECT = . .WORD 2. .WORD 0 .BYTE 14 L15 ; CARRIAGE RETURN .EVEN ; HDR3 = . .WORD 73. .WORD 0 .ASCII /******************************************************/ .ASCII /******************/ .BYTE 15 ; CARRIAGE RETURN .EVEN BLNKLN = . .WORD 3,0 .ASCII / / .BYTE 15 .EVEN ; OUTBUF = . .WORD 70. .WORD 0 .ASCII /XXXX/ OB1: .ASCII /X XXM PDRS FULL 4K R/W 5/14/73 .WORD 077406 ; ALL PDRS FULL 4K R/W 5/14/73 .WORD 077406 ; ALL PDRS FULL 4K R/W 5/14/73 .WORD 077406 ; ALL PDRS FULL 4K R/W 5/14/73 .WORD STKTOP ; PAR 0 - RESOLVED BY ROSLOD 4/26/73 .WORD STKTOP+20000 ; PAR 1 - RESOLVED BY ROSLOD 4/27/73 .WORD 0,0,0,0,0,0 ; PAR 2 - 7 Nq~w@~zww  .Hw! %{~wvv %  vR  $V܅wwww J JVo~  ȋqȕ^~jxË svH 7VwHw$O ; FORM FEED .BYTE 15 ; CARRIAGE RETURN .EVEN ; .IFNZ $BATCH BTCH1 = . .WORD 62. .WORD 0 .ASCII / ELEMENT / .ASCII /CREATED START/ .BYTE 15 ; CARRIAGE RETURN .EVEN ; BTCH2 = . .WORD 73. .WORD 0 .ASCII / NAME TYPE STATUS DATE / .ASCII /TIME .((@ Deh((.  ((&(  .Ay Fh" Fh(@r 0@ F.F .! %8*8*.l %  8R "8.Q 4/26/73 .BLKW 6 ; BLOCK OUT TO 32 WORDS 4/26/73 .CSECT RASM$ ; GET LISTING MATCHED UP WITH CORE 4/26/73 .ENDC ; 4/26/73 STKTOP: .WORD 200 ; FILE ID & LAST WORD OF STACK 4/26/73 .BLKW STACK-1 ; RESERVE STACK AREA 4/26/73 .=.+SYMSIZ+SYMSIZ+SYMSIZ+SYMSIZ ; RESERVE USER SYMBOL TABLE R# *.  fȥȥp wm .4  .Z Q * B *.H 5$ 5$ 5 H. e  D  ZD$. \ w 7 N*=H  *.w7& 2%,V,.܅  wz w< " >%S SECTOR LENGTH/ .BYTE 15 ; CARRIAGE RETURN .EVEN ; BTCHBF = . .WORD 72. .WORD 0 .ASCII / / BENAME: .ASCII /.NAME. / BETYPE: .ASCII /OBJECT / BESTAT: .ASCII /FREE / DATE1: .ASCII /02/ .ASCII /-/ DATE2: .ASCII /JAN/ .ASCII /-/ DATE3: .ASCII /72 / TIM1: .ASCII /23/ .ASCII /:/ TIM2: .ASCII /17/ .ASCII /:/ TIM3: .ASCII /59 00546/ SS: .A. X@@@.@H(@hW (x8hdhdhW (d|.Pd2"&W   d.d      I .VZCZ FB (Bm.B2 .-(UAS .=.+SYMSIZ+SYMSIZ+SYMSIZ+SYMSIZ ; RAS ; RAS ;THE PST IS BOUNDED BY THE INTERNAL GLOBAL ;SYMBOLS SYMTBB AND SYMTBT, WHERE THE ;FORMER IS THE HIGHEST ADDRESS OF THE ;PST AND THE LATTER IS THE ADDRESS OF ;THE 1ST WORD BELOW THE PST. ;THE PST IS ORDERED (TO PERMIT BINARY ;SEARCHING) WITH THE SMALLEST SYMBOL (IN ;MOD40 PACKED NOTATION) HIGH IN CORE AND ;THE LARGEST SYM.p@Q(@p2hpxU(801pxU( 9. # (pxU&  pxU pxU r . q)~Tձ%Pѱ, TP".`wv w ?  (f . 7  7 n r 7X P   0 . _  :7a 8 ?. 7 7  7 ~(#7 #" &R  . 7 x  V"w7 7 2.D  6 |   w_.j 7 7 Õ 18 4 :& . 01wE  0     E0". N 7 7  \ 4 %f. W  &  $ 5  q.  7 7 7 % , *   .(   w7 p  .N  5  T Z 7 .t  7z  n .  2 w  D w|O. @ @x ( h 2.  Nw<@ z  Nq.  8 i E P d `b Ez.2 w      .X w  ]R ;ASSEMBLER DIRECTIVES IS AN EXTERNAL GLOBAL ;TO BE LINKED TO THE APPROPRIATE PROCESSOR IN ;PAL-11R) AND THE HIGHEST WORD CONTAINING ;THE FLAGS IN THE LOW BYTE AND THE CONTROL ;SECTION ID (WHICH IS ALWAYS 0 FOR PST ;ENTRIES) IN THE HIGH BYTE. ; ;FLAGS:  ASMDIR=10 ;BIT 3 BEING ON IN THE FLAG   ;BYTE INDICATES THAT THIS PST   ;ENTRY IS AN ASSEMBLER DIRECTIVE.  BYTFLG=1 ;BIT 0 BEING ON IN THE FLAG   ;BYTE INDICATES THAT THIS PST   ;ENTRY IS BYTE ENABLED.. ~  @AC.BE T׭ )  2  . S 4 y73 .  a7 jh x?!.F5 ?[ͭ [(.l e0-,0 ͭ .  b ~ "~.Hͭ  > (7}ͭ >. b wu \ w ;.11 LINES WITH ERRORS *UNDEFINED SYMBOLS:  >.> NONE   .d!& &08w %S : <. 7e l . |D! ]BP. f% [ wU&w5'. -, www.427 pf'e 2.Z@͵ R͵%͵ɕ=8.QC͵ * D.`  D! !e ͵.@Ge2e, jw .w 4fQ$K _. -  lq: ; $:.>   V R a THIS   ;ALLOWS ONE ENTRY TO SATISIFY   ;SEARCHES FOR WORD AND BYTE   ;INSTRUCTIONS. E.G. THE ENTRY   ;'MOV', BECAUSE BIT 0 IS ON,   ;WILL SATISFY SEARCHES FOR   ;'MOV' OR 'MOVB' ; ;INSTRUCTION CLASS: ;BITS 4-7 OF THE FLAG BYTE DESIGNATE THE ;TYPE OF INSTRUCTION TO PROVIDE DISPATCH ;INFORMATION TO PAL-11R. SCLAS0=0  ;OPERATE GROUP SCLAS1=20  ;UNARY GROUP SCLAS2=40  ;BINARY GROUP SCLAS3=60  ;RTS SCLAS4=100  ;BRANCH GROUP SCLAS5=120  ;JSR SCLAS6=140  i & * w $V$D.ex w.hO 1V4 ( (. & ." x  .HMG%   p.n   P? I. bwGßrנ0 .נ9å$ å.å  .נAנZ נaנz  $E. q  0E J 5 $En.,F|7 l-F C.R  f ^C.x .ε.^%-|.wrwɵE Q.FAI'D/2.  @ .6  @@J .\n$8 xxX\.$ 8x "$X&(.,  ̕>,. #,׭>X׭6TQ.Q  TL .  b u X . .n *c˕! j M 0 e;TRAP GROUP .PAGE ; ASSEMBLER DIRECTIVES ; ; .EVEN SYMTBT: .WORD 0  ;1ST REGISTER BELOW PST. ; .WORD 131247  ; .WORD .WORD 070440 .WORD WORD .WORD ASMDIR ; .WORD 131051  ; .TITLE .WORD 077345 .WORD TITLE .WORD ASMDIR ; .WORD 130725  ;.REF .WORD 022600 .WORD GLOBL .WORD ASMDIR ; .WORD 130721  ; .RAD50 .WORD 017226 .WORD RAD50 .WORD ASMDIR ; .WORD 130601  ;.PAGE .WORD 026210 .WORD PAGE .WORDo dl d   -,   8 -7 777[7c77a7I7I.@7V &R  & 7B.f7 w.7ĕ . Q$BB`@ K w~ʥ m+.222:   L. eVvwHP. w0&   L "Li.$֋w4M- 2.J5: ׭!1R.p   ׭ .ɵ ɵ.-weZ0.j  PZFwFm.4-- w(q..]  t wwww&".TwwwmH@ b.z$*Q$Q$Q$Q$Q$wQ$ww>wC.www7  7.wt5 7g . 4  E͟.ׯ` ?4-G 4&1.8   K pi ASMDIR ; .WORD 130474  ;.NLIST .WORD 035514 .WORD NLIST .WORD ASMDIR ; .RAD50 /.LI/ ; .LIST .RAD50 /ST / .WORD LIST .WORD ASMDIR ; .WORD 130351  ;.LINES .WORD 054133 .WORD LINES .WORD ASMDIR ; .WORD 130351  ; .LIMIT .WORD 051274 .WORD LIMIT .WORD ASMDIR ; .WORD 130156  ; .IFZ .WORD 121200 .WORD IFZ .WORD ASMDIR ; .WORD 130156  ; .IFNZ .Zf- ' 7 (! '.V'7    V'o.E  ɋ 8  VE T.D0D ɋ >< >xD D. wcL HUĝ< E. 79 nl   .>  å   wwM.d ׽@׽ 6HF  B` H F. E   eeW!K ? "Kj. &fv  . w & 09whw[.   77 *."!| 7 h7  .H!E - 1- 7@7 7.n!0!ׂ  "$  &$.!7 & ע  Wx .! m " R  w+.!w |  NA  @ ."w 0oLgWT.,"W µ E .R"%7 "  $R.x"     x." W"µ@6µwµf."wµn ͵'."$ 7B's   ̋ >'q.^'נ0נ9 å.Հ& Z.'EEEE  ` e `.' E&EUp̵w.'V1. b נ0 נ9 ).'J å$ å.נAנZ נa.(נz E 7.B( h&q .WORD ASMDIR ; .WORD 130044  ; .GLOBL .WORD 057034 .WORD GLOBL .WORD ASMDIR ; .RAD50 /.GE/ ; .GEES .RAD50 /ES / .WORD GEES .WORD ASMDIR ; .WORD 127736  ; .EVEN .WORD 020560 .WORD EVEN .WORD ASMDIR ; .WORD 127726  ; .ENDC .WORD 014570 .WORD ENDC .WORD ASMDIR ; .WORD 127726  ; .END .WORD 014400 .WORD END .WORD ASMDIR ; .WORD 127645  ;.DEF .WORD 02r)  . p ˕ .)eb˕ T ˕ 6D.) !RW ՋM u.) e ͕'   -v. * 677 " 7 v13'.0* e7Z ` ˥&.V*0ӕ  D7 >k#e B $.|* :B `e*bbb *&y.*   @* X$*.*ѝ ɝJJANFEBMARAPRMAYJUNJULAF.*UGSEPOCTNOVDEC 0 -4.+ 4 X+ ~!!7D+- X+~&D+c:+ D+zD+m X+f.X+j+ ** LP ERR-RASM  j+K~+ABORTED** +6.+ $ :杞 "&  .+p΋-΋'%""W R .+ `w% r% @ .+ O &e. ,f zŝawe(.F, U j H.l,  Հ ., 8 DeEDa$E w. BA .,`D u2600 .WORD GLOBL .WORD ASMDIR ; .WORD 127613  ; .CSECT .WORD 017714 .WORD CSECT .WORD ASMDIR ; .WORD 127551  ; .BYTE .WORD 076710 .WORD BYTE .WORD ASMDIR ; .WORD 127473  ; .ASECT .WORD 017714 .WORD ASECT .WORD ASMDIR ; .WORD 127473  ; .ASCII .WORD 012061 .WORD ASCII .WORD ASMDIR .PAGE ; MACHINE INSTRUCTIONS ; ; .WORD 107761  ;WAIT .WORD 076400 .WORD 000001 .WORD SCLAS0 ; .WORD 100014  ! -$--@P -... ( % TQ!.. Q  8ќ8/   $8/8/(8/..B : vf05wn/Q &/(. " 0 06a /(/*/@ */ $7B 7@ 7 7 < 7 .b   p( F&p $F.B .7`w w    B.   ] >`p . &    z  ".< 4 9@BE . ` < BECB m\ D &.F!  ! |^.;}VJ` H#H:H& Hh.:L;@?T@:dHdHfH.f@YH2(ysh4&  w w?T f:L;y;TST .WORD 0 .WORD 005700 .WORD SCLAS1+BYTFLG ; .WORD 077721  ;TRAP .WORD 062000 .WORD 104400 .WORD SCLAS6 ; .WORD 075131  ;SWAB .WORD 006200 .WORD 000300 .WORD SCLAS1 ; .WORD 075012  ;SUB .WORD 0 .WORD 160000 .WORD SCLAS2 ; .WORD 073642  ;SEZ .WORD 0 .WORD 000264 .WORD SCLAS0 ; .WORD 073636  ;SEV .WORD 0 .WORD 000262 .WORD SCLAS0 ; .WORD 073626  ;SEN .WORD 0 .WORD 000270 .;}6J` H#H:H& Hf.:L;@?T@@:dHdHfHg.f@YH0(ysh. .& & &  2& & X?T@ f:L;&&  w1.;}5J` H#H:H& He .:L;@?T@:dHdHfH.f@yy@y@YH/('ysh ww •* :L;:L;:L;:L;?Tj  0& & &  f:L;K.;}4J` H#H:H& Hd.:L;@?T@:dHdHfH.f@yy@YH.(yshy؁hS ww * /& & &  wk?T f:L;}.WORD SCLAS0 ; .WORD 073613  ;SEC .WORD 0 .WORD 000261 .WORD SCLAS0 ; .WORD 073473  ;SCC .WORD 0 .WORD 000277 .WORD SCLAS0 ; .WORD 073423  ;SBC .WORD 0 .WORD 005600 .WORD SCLAS1+BYTFLG ; .WORD 071663  ;RTS .WORD 0 .WORD 000200 .WORD SCLAS3 ; .WORD 071651  ;RTI .WORD 0 .WORD 000002 .WORD SCLAS0 ; .WORD 071352  ;ROR .WORD 0 .WORD 006000 .WORD SCLAS1+BYTFLG ; .WORD 071344  ;ROL .WORD . PRINTED DUE TO ROS SCREW UPS-TASK 50 S.yx(byh.2` @#H:@& @.:d@d@f@ys@Y@f.(@2hy(yyh,2,Y f ys #H:` d$ y:dy  & 0 .WORD 006100 .WORD SCLAS1+BYTFLG ; .WORD 070533  ;RESET .WORD 021140 .WORD 000005 .WORD SCLAS0 ; .WORD 054750  ;NOP .WORD 0 .WORD 000240 .WORD SCLAS0 ; .WORD 054117  ;NEG .WORD 0 .WORD 005400 .WORD SCLAS1+BYTFLG ; .WORD 051656  ;MOV .WORD 0 .WORD 010000 .WORD SCLAS2+BYTFLG ; .WORD 040612  ;JSR .WORD 0 .WORD 004000 .WORD SCLAS5 ; .WORD 040230  ;JMP .WORD 0 .WORD 000100 .WORD SCLAS.(xx(@(xxh(D(n.@ 2 (D  ((D&(D   d.dv  vj.   -. +   ( TASK F<& . ) d +I d.F%I,*p X &p l pt.p ** PROTECTED F YILE MODIFIED **.i'y\@(` @Ye@v.(@s'D~hi'y(Fi'yhs. 2!E (i'y&i'y r d(dv@vY.OBJECT LOAD SYMBOLIC.*ASM SYM FOR SYM DATA JANFEBMARAPRMA.PYJUNJU1 ; .WORD 035254  ;IOT .WORD 0 .WORD 000004 .WORD SCLAS0 ; .WORD 035163  ;INC .WORD 0 .WORD 005200 .WORD SCLAS1+BYTFLG ; .WORD 031064  ;HALT .WORD 076400 .WORD 0 .WORD SCLAS0 ; .WORD 020534  ;EMT .WORD 0 .WORD 104000 .WORD SCLAS6 ; .WORD 014713  ;DEC .WORD 0 .WORD 005300 .WORD SCLAS1+BYTFLG ; .WORD 012445  ;COM .WORD 0 .WORD 005100 .WORD SCLAS1+BYTFLG ; .WORD 012412  ;CNZ .WORD 0.i'y\@(` @Ye@v.(@s'D~hi'y(Fi'yhs. 2!E (i'y&i'y  d(dv@vY.OBJECT LOAD SYMBOLIC.*ASM SYM FOR SYM DATA JANFEBMARAPRMA.PYJUNJULAUGSEPOCTNOVDECFREE READ vWRITE DELETED k `.HFILE ID START .FILE LOGICAL FILE CKSAVE PROTEC.T CORE DIR. IFD > SECTOR .TYPE DEVICE LENGTH 0=NONE Y/N .  Y/N I**************************.F**************************************Jl********  vqv % ~i.~FXXXXX XXXXXX XXX XXX XXXh.XXX XXXXXX X X XXXX q. > ELEMENT . CREATED START I `. NAME TYPE STATUS DATE )< TIME SECTOR LENGTH  ^.^H .NAME. OBJECT FREE 0.2-JAN-72 23:17:59 005466 000100 G.-DISC ERROR-BATCH FILE ELEMENT DIRECTORY READ <  .DISC DIRECTORY READ ERROR 7.J.7 9 7 DBE"\.(8wD7 Jd% * $(Jd(.Nx` 3E -e  &.t .WORD 000254 .WORD SCLAS0 ; .WORD 012330  ;CMP .WORD 0 .WORD 020000 .WORD SCLAS2+BYTFLG ; .WORD 012272  ;CLZ .WORD 0 .WORD 000244 .WORD SCLAS0 ; .WORD 012266  ;CLV .WORD 0 .WORD 000242 .WORD SCLAS0 ; .WORD 012262  ;CLR .WORD 0 .WORD 005000 .WORD SCLAS1+BYTFLG ; .WORD 012256  ;CLN .WORD 0 .WORD 000250 .WORD SCLAS0 ; .WORD 012243  ;CLC .WORD 0 .WORD 000241 .WORD SCLAS0 ; .WORD 011 d0. E 8* &D.  ( v  (v!.8t xj n` d( ((.<V ZvL Pf ӝӝ i v @.b 7 d  d$.e   %    . f'E A`w w f (. w w A`wf (f.| wfv wfp wfj  . fff$.  C `w?Vыw?Oыw?H ?? ?.F   g(@.l   > 2^ D"^.w *3 ց e  ŜہE \ց&\ہqeց\ց .r\MH@2@49@.:<}@f@;}G@@ ` @).s'@(@\M2hr\M(s. dE (r\M&r\M 1 !..   n&j!n$j.."  p  s^473  ;CCC .WORD 0 .WORD 000257 .WORD SCLAS0 ; .WORD 010003  ;BVS .WORD 0 .WORD 102400 .WORD SCLAS4 ; .WORD 007763  ;BVC .WORD 0 .WORD 102000 .WORD SCLAS4 ; .WORD 007520  ;BR .WORD 0 .WORD 000400 .WORD SCLAS4 ; .RAD50 /BPT/ ; BPT FOR /45 .WORD 0 .WORD 000003 .WORD SCLAS0 ; .WORD 007414  ;BPL .WORD 0 .WORD 100000 .WORD SCLAS4 ; J  B w:  ~".   $  ".D  . Dd^  7L1-.jt   . D f  . te e  v7  t].<e 7!#"" .,eH# $.( H 7 j t7&t.N^ -R@7 J7e 7 H/.tW µ 0 0  en.E `7µ 0l.0@@  n@$n(.j a( j7 j jj&j!. 7 &  t7  -zK t.2@7 r7e 7 pN 'W .XP&'^  MP^.~ B &' %B(%.&'4 D; |B A w`F4;..  B f ^ P7  S B E.j^D 6: &' $e 7 ^.X  e E YXV.<  e7\ 7Z .WORD 007265  ;BNE .WORD 0 .WORD 001000 .WORD SCLAS4 ; .WORD 007221  ;BMI .WORD 0 .WORD 100400 .WORD SCLAS4 ; .WORD 007164  ;BLT .WORD 0 .WORD 002400 .WORD SCLAS4 ; .WORD 007157  ;BLOS .WORD 073300 .WORD 101400 .WORD SCLAS4 ; .WORD 007157  ;BLO .WORD 0 .WORD 103400 .WORD SCLAS4 ; .WORD 007145  ;BLE .WORD 0 .WORD 003400 .WORD SCLAS4 ; .WORD 006774  ;BIT .WORD 0 .WORD 030000 .W(lVl&8Xl=. & 8Xl.8Xlw  ee  8 X l.񆗢   7  Y. R7 6wJ . w ZDDm DQ$ >. tw  Dd ` @.>DQ$ |D @ @D dQ$Dd '.d, D JQ$DdD Y.DQ$ 37 7 W- . DDdm 7 7 ɥɥ.DD]F  e  . V N@|m v ." e= &<T7I j( &.H e@ r@L~! B,O.nW p;W 8 2 +f. 5  E#   .W!W! wEW!  . n7x*Ýt xL. % x)^w N R x\., 7W7ZJ nwL>= ^7 0.R Vww 11 & ` :<} H.x U11 _ _1.492;}G";}G&s'. >j!7 wwQ$ wORD SCLAS2+BYTFLG ; .WORD 006773  ;BIS .WORD 0 .WORD 050000 .WORD SCLAS2+BYTFLG ; .WORD 006753  ;BIC .WORD 0 .WORD 040000 .WORD SCLAS2+BYTFLG ; .WORD 006711  ;BHIS .WORD 073300 .WORD 103000 .WORD SCLAS4 ; .WORD 006711  ;BHI .WORD 0 .WORD 101000 .WORD SCLAS4 ; .WORD 006654  ;BGT .WORD 0 .WORD 003000 .WORD SCLAS4 ; .WORD 006635  ;BGE .WORD 0 .WORD 002000 .WORD SCLAS4 ; .WORD 006531  ;BE w  Jw a. e 7!  #2-7!n.@ e f&fve  e Pw.f e \!!!!!w h @` 7 <b. B w V & 7 . 77 e e   . O-   (>J .   7rK .$ ? 5|Ћ#BwJ.J ` 7<@5.0 @ .p e    .  D  D.  m#e#!.   E mns. 7y 7ex &*.. 0#0 E C  0.T w  r r$fz w rw=  00 DDX.X 0~L H 9@ .Q .WORD 0 .WORD 001400 .WORD SCLAS4 ; .WORD 006413  ;BCS .WORD 0 .WORD 103400 .WORD SCLAS4 ; .WORD 006373  ;BCC .WORD 0 .WORD 103000 .WORD SCLAS4 ; .WORD 004512  ;ASR .WORD 0 .WORD 006200 .WORD SCLAS1+BYTFLG ; .WORD 004504  ;ASL .WORD 0 .WORD 006300 .WORD SCLAS1+BYTFLG ; .WORD 003344  ;ADD .WORD 0 .WORD 060000 .WORD SCLAS2 ; .WORD 003343  ;ADC .WORD 0 .WORD 005500 .WORD SCLAS1+BY "**********g.l UNRESOLVED REFERENCES #. ` jljT R5 = BINARY NUMBER ; R4 = DESTINATION END ADDRESS ; R0 = ITERATION LENGTH IF B2ONTA ENTERED ; BIN2OC = . MOV #6,R0 ; SET UP ITERATION LENGTH B2ONTA: INC R4 B2LOOP: MOVB R5,-(R4) BICB #370,(R4) BISB #060,(R4) ; CHANGE TO ASCII CODE ASR R5 ; BEGIN SHIFTING FOR NEXT OCTAL DIGIT BIC #100000,R5 ; PREVENT SIGN PROPAGATION ASR R5 H .ENDC JSR PC,ROSHDR BR PRNT20 .IFNZ $BATCH PRNT10: JSR PC,BTCHDR .ENDC PRNT20 = . .ENDC .IFZ NLP JSR PC,TTYOUT ; USE TELETYPE .ENDC RTS PC ; IGNORE ERROR AND RETURN ; ; ; SUBROUTINE BINARY TO OCTAL ASCII CONVERSION. ; INPUT R5 = BINARY NUMBER ; R4 = DESTINATION END ADDRESS ; R0 =TFLG ; SYMTBB=.-2   ;HIGHEST ADDRESS OF PST. .PAGE RAS START: ; FIRST LET'S READ IN THE CARD DECK AND RAS ; PUT IT ON DISK. RAS MOV #1,PAGCNT ; INITIALIZE PAGE # TO 1. RAS JSR PC,PHEAD ; PRINT PAGE #1 HEADER NOW - FOR ERRORS RAS MOV #DFNLST,-(SP) ; DEFINE THE BATCH FILE IF DOESN'T ~AD V  1f& f& ~ % f6 weҚ6  12345678 &=':>@9 0/STUVWXY _,~(%\"Z -JKLMNOPQ $*];^R ! +ABCDEFGH .)[<#I ? b~ Q~ &p ASR R5 DEC R0 ; MORE TO GO? BGT B2LOOP ; BACK FOR MORE RTS PC ; ; PRINT ROS FILE LIST HEADER AND SET UP PAGE CONTROL ; ROSHDR = . .IFNZ NLP MOV #$NLINE,PAGCTL ; SET UP FOR PAGE CONTROL .ENDC MOV #EJECT,PRTBUF JSR PC,PRINT ; FORM FEED PRINT DEVICE MOV #HDR1,PRTBUF JSR PC,PRINT ; PRINT MOV #HDR2,PR ITERATION LENGTH IF B2ONTA ENTERED ; BIN2OC = . MOV #6,R0 ; SET UP ITERATION LENGTH B2ONTA: INC R4 B2LOOP: MOVB R5,-(R4) BICB #370,(R4) BISB #060,(R4) ; CHANGE TO ASCII CODE ASR R5 ; BEGIN SHIFTING FOR NEXT OCTAL DIGIT BIC #100000,R5 ; PREVENT SIGN PROPAGATION ASR R5 ASR R5 DEC R0 ; MORE TO GO? BGT B2LOOP ; BACK RAS EMT $NCHKPT ; 5/14/73 EMT $DEFIN ; ALREADY EXIST. RAS EMT $CHKPT ; 5/14/73 MOVB DFNERR,R0 ; GET ERROR CODE AND TEST IF ANY. RAS BEQ STA020 ; NONE. RAS CMPB R0,#7 ; ERROR. IS FILE ALREADY DEFINED? RAS BEQ STA020 rt CR 1 ERROR CR 1 SPUR INT f&f  6 @ B " 3~  1 {s ᴊ1 0 & ~   & >w* 3  * fd : 4~r : fM 5@p2Mp RMw5 55@53&2 E@pM3 $~TBUF JSR PC,PRINT ; FILE LIST MOV #HDR3,PRTBUF JSR PC,PRINT ; HEADER MOV #BLNKLN,PRTBUF JSR PC,PRINT ; SPACE ONE LINE RTS PC ; .IFNZ $BATCH ; ; PRINT BATCH ELEMENT HEADER AND SET UP PAGE CONTROL ; BTCHDR = . .IFNZ NLP MOV #$NLINE,PAGCTL ; SET UP FOR PAGE CPNTROL .ENDC MOV #EJECT,PRTBUF JSR PC,PRI FOR MORE RTS PC ; ; PRINT ROS FILE LIST HEADER AND SET UP PAGE CONTROL ; ROSHDR = . RTS PC ;****LPRNTR SCREW-UP FIX .IFNZ NLP MOV #$NLINE,PAGCTL ; SET UP FOR PAGE CONTROL .ENDC MOV #EJECT,PRTBUF JSR PC,PRINT ; FORM FEED PRINT DEVICE MOV #HDR1,PRTBUF JSR PC,PRINT ; PRINT MOV #HDR2,PRTBUF JSR PC,PRINT ; FI ; YES. RAS MOV R0,-(SP) ; NO. ALL OVER WITH. RAS MOV #ERR7,-(SP) ; RAS JMP ERROUT ; RAS STA020: MOV #SRCBFB,R0 ; GET ADDRESS OF SOURCE BFUP COM BLOCK RAS JSR PC,BFINIT ; INITIALIZE THE BFUP FILE IF NEEDED. RAS JSR PC,BFENTR ; THEN ENTER THE SOURCE SCRATCH ELE :3 M@  &f ~b && 4 & EAp3  F M@ 3 ~M0 M ,&!  ~ڞ"! !  (lel  M  %(W %B %%%:~R   `   C$U3* N; $fd CNT ; FORM FEED FRINT DEVICE MOV #BTCH1,PRTBUF JSR PC,PRINT ; PRINT MOV #BTCH2,PRTBUF JSR PC,PRINT ; HEADER TO LIST MOV #HDR3,PRTBUF JSR PC,PRINT ; BATCH ELEMENTS MOV #BLNKLN,PRTBUF JSR PC,PRINT ; SPACE ONE LINE RTS PC ; ; ; TWO DIGIT ASCII NO. TO BUFFER ; R1 = BINARY NUMBER ; R3 = TWO DIGIT ASCII ADDRESS ; LE LIST MOV #HDR3,PRTBUF JSR PC,PRINT ; HEADER MOV #BLNKLN,PRTBUF JSR PC,PRINT ; SPACE ONE LINE RTS PC ; .IFNZ $BATCH ; ; PRINT BATCH ELEMENT HEADER AND SET UP PAGE CONTROL ; BTCHDR = . RTS PC ;***LPRNTR SCREW-UP FIX .IFNZ NLP MOV #$NLINE,PAGCTL ; SET UP FOR PAGE CPNTROL .ENDC MOV #EJECT,PRTBUF JSR MENT.RAS MOV SRBSEC,DSWSEC ; SET START SECTOR FOR WRITE. RAS STA100: MOV #SIBUF1,R1 ; GET ADD. OF DOS BUFFER HEADER. RAS MOV #80.,(R1)+ ; SET MAX BYTE COUNT = 1 CARD. RAS CLR (R1) ; SIBUF1 NOW SET UP FOR ROS CREAD USE. RAS MOV #CRDLST,-(SP) ; PUT CARD READ LIST ON STACK RAS EMT $NCHKPT ; (NO CHECKPOINT DURING I/O) RAS EMT $CREAD EA$5~ʟ$  wwf 5 f  1 3 3 s J~B3 fd L A$"p & L   & 9~3w03  w *7 $w ڀ DE@!!  CaaŠw ڎe!^~2 ee  w Hڀ  ŋWe eTOBUFR = . MOV R1,-(SP) MOV #ASCII,-(SP) EMT BINASC MOVB ASCII+4,(R3)+ MOVB ASCII+5,(R3)+ RTS PC ; ; ; LIST BATCH FILE ELEMENTS ; FLBA00 = . JSR PC,BTCHDR ; PRINT BATCH FILE ELEMENT HEADER MOV #$BCHID,DODID ; ID TO USE FOR BATCH MOVB #1.,DEVNO ; SET DEVICE NO. FOR BATCH FILES CLR RLSECT ; START AT SECTOR ZERO FLBA10: MOV PC,PRINT ; FORM FEED FRINT DEVICE MOV #BTCH1,PRTBUF JSR PC,PRINT ; PRINT MOV #BTCH2,PRTBUF JSR PC,PRINT ; HEADER TO LIST MOV #HDR3,PRTBUF JSR PC,PRINT ; BATCH ELEMENTS MOV #BLNKLN,PRTBUF JSR PC,PRINT ; SPACE ONE LINE RTS PC ; ; ; TWO DIGIT ASCII NO. TO BUFFER ; R1 = BINARY NUMBER ; R3 = TWO DIGIT ASCII ADD ; CALL ON CREAD; EXIT TYPE 2. RAS EMT $CHKPT ; ( CAN BE CHECKPOINTABLE AGAIN) RAS TST CRDERR ; ANY ERRORS? RAS BNE STA110 ; YES. RAS MOV R1,R0 ; GET ADD. OF WORD 2 OF BUFFER=# WORDS RAS ADD (R1),R0 ; READ. GET ADDRESS OF LAST CHARACTER RAS CMPB (R0)+,(R0)+ ; ADD 2 TO ALLOW FOR STARTING OFF ONE Re e Q Š@(~EMw 4^&^ B^ D7!= {9EW31 q B* ' "[~" D  A1 ]^wZ B8 F< ] :76]&D   $"C PL~Cܴ77 7C7 \*]wVW]w ؎]w & Vw<\ ~4 [q5-[5j6  j #DLIST,-(SP) EMT DISCIO ; READ ONE SECTOR TST DERRWD ; DISC ERROR? BNE FLBA20 ; YES-REPORT MOV #BUFFER,R2 ; DATA BUFFER ADDRESS TST RLSECT ; FIRST SECTOR OF DIRECTORY BNE FLBA16 ; NO-DON'T IGNORE ENTRY 0 FLBA15: ADD #16.,R2 ; BUMP TO ELEMENT DIRECTORY FLBA16: CMP R2,#BUFFER+128. ; DONE WITH THIS BUFFER? BLT FLBB00 ; NO INC RESS ; TOBUFR = . MOV R1,-(SP) MOV #ASCII,-(SP) JSR PC,BINASC MOVB ASCII+4,(R3)+ MOVB ASCII+5,(R3)+ RTS PC ; ; ; LIST BATCH FILE ELEMENTS ; FLBA00 = . JSR PC,BTCHDR ; PRINT BATCH FILE ELEMENT HEADER MOV #$BCHID,DODID ; ID TO USE FOR BATCH MOVB #1.,DEVNO ; SET DEVICE NO. FOR BATCH FILES CLR RLSECT ; START AT SECTOR ZERO AS STA105: CMPB #040,-(R0) ; WORD. IS THIS CHARACTER A BLANK& RAS BEQ STA105 ; YES. GO LOOK AT NEXT CHARACTER. RAS CMPB (R0)+,(R0)+ ; NO. BUMP BACK TO LAST BLANK OR NEXT RAS BIC #1,R0 ; TO LAST. R0 WILL BE EVEN. RAS MOV (PC)+,(R0) ; PUT A CR,LF AT END OF COMPRESSED RAS .BYTE CR,LF ; STRING. WILL ALWAYS BE A WORD ADD. RAS SUB R1,R0 ; CALeZwv-[\-RR@>6:p[6l[ b[S X[~W& N & L\K B 0\ Ʒ&\1 W \ wxw Z~5ZZwZ| 458ZZ5ZZ7 rw l wv1f& f& lZ~zc~ RLSECT ; YES/BUMP RELATIVE SECTOR CMP #31.,RLSECT ; SEARCHED COMPLETE BFUP DIRECTORY BGE FLBA10 ; NO-KEEP GOING FLBA17: EMT EXIT ; YES-EXIT FROM FILE LIST FLBA20: MOV #BCHERR,PRTBUF JSR PC,PRINT ; PRINT ERROR MESSAGE EMT EXIT ; ; FLBB00 = . TST (R2) ; NAME VALID? BEQ FLBA17 ; NO-DONE WITH LIST ; ; SET UP PRINT BUFFER ; FLBA10: MOV #DLIST,-(SP) JSR PC,DISCIO ; READ ONE SECTOR TST DERRWD ; DISC ERROR? BNE FLBA20 ; YES-REPORT MOV #BUFFER,R2 ; DATA BUFFER ADDRESS TST RLSECT ; FIRST SECTOR OF DIRECTORY BNE FLBA16 ; NO-DON'T IGNORE ENTRY 0 FLBA15: ADD #16.,R2 ; BUMP TO ELEMENT DIRECTORY FLBA16: CMP R2,#BUFFER+128. ; DONE WITH THIS BUFFER? BLT FLBB00 ; NOCULATE NUMBER OF CHARACTERS IN STRIRAS MOV R0,(R1) ; NG. SET # OF CHAR. INTO CNTRL WORD. RAS CMP (R0)+,-(R1) ; BUMP R1 TO NEW WORD 3 OF DOS BUFF. RAS MOV R0,(R1) ; AND ADD 2 TO R0. PUT THIS IN # OF RAS CMP -(R1),-(R1) ; CHAR. FOR BFWRIT. BUMP R1 TO WORD RAS ; 1 OF DOS BUFFER RAS MOV R1,-(SP) ; FOR BFWRIT USE. RAS ªQ L/P 1 PARITY ERROR L/P 1 NOT READY~j L/P 1 ABORTED&f&f z 70 &     ~ +:2ش0 v! & w0 v~Zsx33 3 s3   $ w zx    M~Ҧ MOV #BENAME,-(SP) ; ASCII STRING ADDRESS MOV R2,-(SP) ; ADDRESS OF RAD50 NAME EMT 39. ; RAD 50 UNPACK MOVB BTYPE(R2),R1 ; GET ELEMNT TYPE BIC #177600,R1 ; ISOLATE ASL R1 ; TIMES TWO ASL R1 ; TIMES FOUR ADD R1,R1 ; TIMES EIGHT MOV BETPTB(R1),BETYPE TST (R1)+ MOV BETPTB(R1),BETYPE+2 ; PUT IN ELEMENT INC RLSECT ; YES/BUMP RELATIVE SECTOR CMP #31.,RLSECT ; SEARCHED COMPLETE BFUP DIRECTORY BGE FLBA10 ; NO-KEEP GOING FLBA17: JMP EXIT ; YES-EXIT FROM FILE LIST FLBA20: MOV #BCHERR,PRTBUF JSR PC,PRINT ; PRINT ERROR MESSAGE JMP EXIT ; ; FLBB00 = . TST (R2) ; NAME VALID? BEQ FLBA17 ; NO-DONE WITH LIST ; ; SET UP PRINT BUFFE JSR PC,BFWRIT ; PUT CARD IMAGE OUT TO DISK. RAS BR STA100 ; GET NEXT CARD. RAS STA110: CMP CRDERR,#7 ; HERE TO CHECK ERROR CODE. OK IFF EOF.RAS BEQ STA120 ; YES. RAS MOV CRDERR,-(SP) ; NO. PUT ERROR VALUE ON STACK RAS MOV #ERR11,-(SP) ; PUT ERROR # ON STACK RAS JMP ERROUT ; GO DO ERR2zez2& b & f  : z $zy~J  sx33 3 s3  *M 3 v* > M %   M8v~§ wP  3 *&d MCfxz   l ,d v A~:  w&ff& zAaes!B3  D! ! 3 z % !3 z  ^ĕ  TYHPE TST (R1)+ MOV BETPTB(R1),BETYPE+4 TST (R1)+ MOV BETPTB(R1),BETYPE+6 MOVB STATUS(R2),R1 ; GET STATUS BPL FLBB10 NEG R1 ; SET POSITIVE INC R1 ; BUMP TO MAKE VALID INDEX FLBB10: ASL R1 ASL R1 ADD R1,R1 ; TIME EIGHT MOV STTBL(R1),BESTAT TST (R1)+ MOV STTBL(R1),BESTAT+2 TST (R1)R ; MOV #BENAME,-(SP) ; ASCII STRING ADDRESS MOV R2,-(SP) ; ADDRESS OF RAD50 NAME EMT 39. ; RAD 50 UNPACK MOVB BTYPE(R2),R1 ; GET ELEMNT TYPE BIC #177600,R1 ; ISOLATE ASL R1 ; TIMES TWO ASL R1 ; TIMES FOUR ADD R1,R1 ; TIMES EIGHT MOV BETPTB(R1),BETYPE TST (R1)+ MOV BETPTB(R1),BETYPE+2 ; OR STUFF. DON'T COME BACK. RAS STA120: MOV #-1,(R1) ; PUT OUT EOF CONTROL WORD RAS MOV #2,-(R1) ; PUT OUT BYTE COUNT (1 WORD) RAS CMP -(R1),-(R1) ; BUMP R1 TO WORD 1 OF DOS BUFFER RAS MOV R1,-(SP) ; PUT ADDRESS ON STACK RAS JSR PC,BFWRIT ; WRITE OUT EOF CONTROL WORD RAS JSR PC,BFPAD ; PAD OUT BUFFER WITH ZEROS RAS R  s!5~Еsz  3 z  5  6 & `3 |  4W 1 .W +5~*(5%D eD   !!5  @& 5 5{~5 6 3    *&d fz  e~~<00& zwz@aAa ! @xw+ ; PUT IN ELEMENT STATUS MOV STTBL(R1),BESTAT+4 TST (R1)+ MOV STTBL(R1),BESTAT+6 MOVB BDAY(R2),R1 ; GET BINARY DAY MOV #DATE1,R3 JSR PC,TOBUFR MOVB BMNTH(R2),R1 ; GET BINARY MONTH MOV R1,R3 ASL R1 ADD R3,R1 ; TIMES THREE MOVB MNTHTB(R1),DATE2 TSTB (R1)+ MOVB MNTHTB(R1),DATE2+1 ; PUT IN MONTH TSTBPUT IN ELEMENT TYHPE TST (R1)+ MOV BETPTB(R1),BETYPE+4 TST (R1)+ MOV BETPTB(R1),BETYPE+6 MOVB STATUS(R2),R1 ; GET STATUS BPL FLBB10 NEG R1 ; SET POSITIVE INC R1 ; BUMP TO MAKE VALID INDEX FLBB10: ASL R1 ASL R1 ADD R1,R1 ; TIME EIGHT MOV STTBL(R1),BESTAT TST (R1)+ MOV STTBL(R1),BESTAT+2 MOV DSWSEC,SRBLNT ; COMPUTE THE LENGTH OF THE SRC. ELEMENTRAS SUB SRBSEC,SRBLNT ; RAS MOV #SRCBFB,R0 ; AND CLOSE IT. RAS JSR PC,BFCLOS ; RAS JSR PC,BFOPEN ; THEN OPEN IT FOR THE READ. RAS CLRB FRCABS ; DON'T FORCE '@#A' MODE RAS MOVB #1,PASS ; START ON PASS 1b f  `Baf~ 5 f t1 j7 d&  & & & P  ~ !"$'(+-.03569: z<4N& & b4e4Nf `D` C PAL ; RAS ; INITIALIZE DOT TO ZERO, DEFINED, RELOCATABLE,.UNAMED .CSECT. RAS STA200: CLR @USERPC ; SET DOT TO ZERO. RAS MOV #DEFFLG!RELFLG!400,@HUSERPC ; RAS CLR ABSPC ; RAS CLR RLDFLG ; D1߫~1@ 4   =xf@p J@ 3 11DtA5@ =lf2~ xfÝ Ax7w߫@@7  5@{q{ 5{j5~{f5 {U{=p=l{p w B e @ee :J  M ߫!߫߫~ E L N߫33 L}xf RAS ; RAS ; CLEAR ALL CURRENT PC WORDS IN THE CONTROL SECTON AREA OF THE SYM. TAB:RAS MOV PERTOP,R0 ; BOTTOM OF .CSECT AREA IN RO RAS MOV R0,R2 ; AND R2. RAS MOV R0,HIRPC ; POINTER TO MAX PC OF BLANK .CSECT RAS TST -(R2) ; AREA RAS MOV R2,RELPC  2 3 -| vʵ~z\E =l7L@^x難PLHLf& J\~^^f.........KKKx 7r w~jKw 7tw  7^w w >ĝ\7ZK70 , ZK"RKw.& dK^K@J D b~A  &DCc  w 2w  w  ' ; POINTER TO CURRENT PC OF BLANK .CSECT.RAS MOV CONTOP,R1 ; TOP OF .CSECT AREA RAS STA210: CMP R0,R1 ; DONE YET? RAS BEQ STA220 ; ALL DONE RAS CLR -2(R0) ; ZERO PC WORD (CURRENT) RAS SUB #8.,R0 ; BUMP TO NEXT ENTRY (4 WORDS/ENTRY). RAS BR STA210 ; GO DO NEXT ENTRY, IF ANY? 7  &w \w wXw w  fw |t ~Zw 7 wtwhw  %-E e䳂 wh6 ߾ =w F6 / w :( w 2! w * w "w *7~ҵ 7 w 7w 77Ҿ߾ Jw7  ww (b ww w A B` r%~J w| 7twrjwhg E 7pwhP E tP Iw -%~¶ w   RAS STA220: MOVB #1,SECMOD ; INITALLY IN UNAMED .CSECT RAS MOV #TITLEA,R0 ; GET ADDRESS OF FIRST WORD OF TITLE. RAS MOV (PC)+,(R0)+ ; DEFAULT TITLE IS .MAIN. IN RAD50. RAS .RAD50 /.MA/ ; RAS MOV (PC)+,(R0) ; WORD 2 OF TITLE. RAS .RAD50 /IN./ ; RAS MOV #-1,R0 ;=w 7 =w e0w ,w %@w ~ke=w ~:@w Xwww=w  w  dw *Ae0w v,w nHBFw 6- .27, ~( B:8w ?w 7 w 777     w %0 %7E `  1 W ֆ~* m7 yD|jNr¹ `޺$,VHʷPڴZ7U<D 2 7. R0=1 WILL CAUSE BIN. BUF SETUP & RAS MOVB R0,BINOUT ; INITIALIZATION. (FORCE BINBUF OUT) RAS JSR PC,BBINIT ; INITIALIZE BINARY BUFFER. RAS MOV #NORMLN,MAXLINES; SET DEFAULT LINES/PAGE RAS CLR PAGING ; RESET PAGING COUNTER RAS CLR ERRSUM ; CLEAR ERROR COUNTER. RAS CLR LINENO ; CLEAR LINE NUMBER COUNTER. RAS~7(%  w %=w w  w w ww   7m.~w w %/w \ z \pp.  L e  ! B ! =L 3~!644 $ .!464 $ % w   @w @ % % w  wwS~  D  &C@AEPA&fw w /w w :w  MOV SRBSEC,DSRSEC ; SET START SECTOR FOR THE READ. RAS CLR CONWRD ; RESET CURRENT CONTROL WORD FOR NXT PASRAS MOV BHADRS+2,R0 ; GET ADDRESS OF FIRST BUFFER FOR READ. RAS MOV R0,-(SP) ; PUT ADD ON STACK RAS MOV #SIMBC,(R0)+ ; PUT IN MAX BYTE COUNT RAS CLR (R0)+ ; CLEAR WORD #2. RAS CLR (R0)+ ; AND W ` EB~ ` H 8 wFLEw 7U4E(w T76  p$~Ew V׭DU7w @ŝŝwDt wt!~r w w Jw @eZ%ĕt72 $$w Bw .e` w ;w ĝw w~f&f 46ORD #3. RAS MOV R0,CURLIST ; SET ADDRESS OF FIRST BYTE IN CURLIST. RAS MOV #LOMBC-DFSILO,R0; SET #BYTES TO BLANK IN R0. RAS JSR PC,BLKBUF ; BLANK ALL OF INPUT BUFFER. RAS JSR PC,BFREAD ; GO GET FIRST CARD RAS ; MOV #SRCBFB,-(SP) ; PUT ADDRESS OF RAS ; JSR PC,BFWAIT ; WAIT FOR COMPLETION OF I/O REQUEST. RAS  0C.C7$C7$C Cw rC~b5CCgBbBV  <6 !%& &e N @ e0w &  h~ڼ B7~BrBnBE w   w ׭4B ^w Uw ~Rw nj  7,XR-P Dw@ 78 %(!  %??~ʽw N%w  JMP SETSRC ; GO START THE PROCESSING LOOP. RAS .PAGE RAS ;.CSECT ;THIS PART HANDLES THE ;.CSECT DIRECTIVE ; ;    ;CSECT HANDLER RCSECT: CLRB SIZE NEGB BINOUT ;REQUEST BINARY OUTPUT MOVB SAVTERM ,R0 ;TERMINATING CHARACTER: CMPB #-4,R0  ;CARRIAGE RETURN BEQ CSECT1  ;UNNAMED .CSECT CMPB #-5,R0  ;SEMI COLON BEQ CSECT1  ;UNNAMED .CSECT JSR PC,CBTABS  ;F77w Z e0w ,w w pn~B Cå å$ נA   e` ƾ  Ëנe ee e ѐ~  @(F@ ODT-11R V002ABEhh *;/\ $G _<^,OWEBP@>SRC-FI!XASPMCFRB~2\LUSH BLANKS OR DEC CURBYTE  ;TABS. JSR PC,ITEM  ;GET NEXT ITEM TSTB CNTCHAR ;ANY CHARACTERS FOUND? BLE CSECT1  ;NO. UNNAMED .CSECT TSTB ITYPE ;LEGAL SYMBOL? BGT CSECT5  ;YES INCB QERROR ;Q ERROR FLAG CSECT4: JMP MAIN1E ;UNNAMED .CSECT CSECT1: CLR TMPSYM+1 ;PACKED MOD40 SYMBOL CLR TMPSYM+3 MOVB #1,R3  ;ID NUMBER 1 MOV PERTOP ,HINDEX BR CSECT6 ;PREVIOUS SECTION .ASECT CSECT2: MOV @USERPC ,ABSPC :^ BISB #RELFLG,@HUSERPC ;SET RELOCATABLE ;FLAG BIT IN DOT SYMBOL ENTRY BR CSECT7 ;MORE THAN 376(8) .CSECT'S CSECTE: CLR -(R6)  ;ERROR MOV #ERR1,-(R6) ;ANNOUNCEMENT JMP ERROUT ;PACK THE CHARACTERS IN BYTES TMPSYM (0) TO TMPSYM (5) ;INTO PACKED MODULO 40 REPRESENTATION IN WORDS ;TMPSYM+1 AND TMPSYM+3 CSECT5: MOV #TMPSYM,R1 ;ADDRESS OF 1ST BYTE JSR PC,SERCHB  ;MODULO 40 PACKER INC R1  ;TMPSYM+1 TO R1 MOV #WORD3,R4 ;NO 3RD WORD CLR @R4  ;MATCH; JUST SYMBOL MOV PERTOP ,R2 ;PERFORM LINEAR MOV CONTOP ,R3 ;SEARCH OVER CONTROL JSR PC,LINSRCH  ;SECTION TABLE BNE CSECT3  ;MATCH FOUND ;THIS CONTROL SECTION NAME NOT IN TABLE ;ENTER A NEW CONTROL SECTION ENTRY. MOV R3,HINDEX ;BASE ADDRESS OF ENTRY    ;IS CURRENT TOP OF    ;THE CONTROL SECTION    ;TABLE. CLR RESULT ;0 TO CURRENT CLR TFLAGS ;AND MAXIMUM PC JSR PC,ENTER SUB #10,CONTOP ;ADJUST BOTTOM OF UST ;MATCH FOUND---COMPUTE CONTROL SECTION ID CSECT3: MOV PERTOP ,R3 ;ADDRESS OF 1ST ENTRY SUB HINDEX ,R3 ;ADDRESS OF THIS ENTRY ASR R3  ;DIVIDED BY 4 ASR R3  ASR R3  ;XTRA SHIFT FOR BYTE BIT INC R3  ;+1=CONTROL SECTION CMP #376,R3  ;ID NUMBER BLT CSECTE  ;TOO BIG IF >376(8) CSECT6: TSTB SECMOD BEQ CSECT2  ;PREVIOUS SECTION ABS ;PREVIOUS SECTION RELOCATABLE. MOV @USERPC ,R1 ;SAVE CURRENT PC FOR MOV R1,@RELPC ;PREVIOUS SECTION C.%f L;@K@i N@.@%le@R8x@p @\@.s@L @&@@&`;@'@.'s@'L @' @(` @2@.4!;@:<}@0Xs@YYq@Y!T@].ee;H/Ye@(@qh(^%fh`8. `K$A ` (c&1 q Q&@ 8.8#COMPRESSION COMP^LETE-FILE TYPE XXX t rv+rCOMPRS-FILE TYPE XXX NOT VALID  R-!COMPRS NOT ALLOWED-FILE TYPE XXX & ,.#COMPRS-DIRECTORY SEARCH DISC ERRORu   .%COMPRS-FILE XFER ERROR-FILE TYPE X}  XX ( .#COMPRS-DIRECTORY UPDATE DISC ERROR 4  8.8w .^.37 5 E  &(` 1.A ߕ d wYeYYqf.hwt0 (` R8x0 @. MP R1,@HIRPC BLOS CSECT7 BIT #1,R1  ;EVEN OFF MAX. PC BEQ CSECT8 INC R1 CSECT8: MOV R1,@HIRPC CSECT7: MOV HINDEX ,R0 ;BASE OF NEW CSECT ENTRY MOV R0,HIRPC ;ADDRESS OF MAX. PC TST -(R0) MOV R0,RELPC ;ADDRESS OF PC MOV @R0,TBBUF ;PC OF NEW .CSECT MOVB R3,SECMOD ;NEW .CSECT ID TO SECMOD MOV TMPSYM+1 ,R1 MOV TMPSYM+3 ,R2 CSECT9:   ;NEW PROGRAM SECTION ID TO DOT ID MOV HUSERPC ,R3 MOVB SECMOD ,1(R3)   .www> 0Z27 7".&/ nFqwj/ X; .Ld-`?l:7:G lh.r787 /  %2 F.   /Bw "i N.wxw p/ŕ&'  L; R8x(:<}.f@ P>:ff ezL 0. DEU@f 4 Bw 8J (8.07 7 ߕ `4!;"4!;Y.V v  ߕYYqW.| 4 ff YYqK.w <7 7 ߕ | <&'L . ߕ  * 'L Y!T'"Y!T( .& 5m NJ88 :<}mJ$8_. 8r" ( nr&g.:  XН $X3.`НН 0   "%le.& 7 &  .Er@lr @A(` (s.MOVB #RLD3.1,R0 ;LOCATION COUNTER DEFINITION MOV TBBUF ,R3 ;DISPLACEMENT FROM SECTION BASE MOV #10,R4  ;# OF BYTES TO RLD JSR PC,RLDFIL JMP EXIT .PAGE PAL ;.ASECT ;THIS PART HANDLES THE ;.ASECT DIRECTIVE ; RASECT:    ;ASECT HANDLER NEGB BINOUT ;REQUEST BINARY OUTPUT TSTB SECMOD BEQ ASECT1  ;ALREDY IN .ASECT ;PREVIOUS SECTION .CSECT MOV @USERPC ,R1 ;SAVE CURRENT PC FOR EU 6&t.7z( E-.U@6&fWtEAWte.( E`v( (#N c.;}VJ` H#H:H& Hh.:L;@?T@:dHdHfH.f@YH2( ysh(  w w ?T f:L;.;}7J` H#H:H& Hg.:L;@?T@:dHdHfH .f@YH1(`yshyPhFw@6 F"F  w?T f:L;H  MOV R1,@RELPC ;PREVIOUS SECTION CMP R1,@HIRPC BLOS ASECT1 BIT #1,R1  ;EVEN OFF NEW MAX. PC. BEQ ASECT2 INC R1 ASECT2: MOV R1,@HIRPC ASECT1: MOV ABSPC ,TBBUF BICB #RELFLG,@HUSERPC ;CLEAR RELOCATABLE    ;FLAG BIT IN DOT SYMBOL ENTRY CLRB SECMOD ;.ASECT ID MOV #ABS1,R1 ;'.(SPACE)A MOV #ABS2,R2 ;'BS. BR CSECT9 .PAGE PAL ;.GLOBL THIS SECTION HANDLES GL.;}5J` H#H:H& He .:L;@?T@dH@fHf@g.yy@y@YH/(2 :dh Eysh w Y   •* :L;:L;:L;:L;?Tj   0& & &  cf:L;K.;}4J` H#H:H& Hd.:L;@?T@:dHdHfH.f@yy@YH.((yshy؁hQwu * /& & &  wi?T f:L;.2` @#H:@& @.:d@d@f@ys@Y@f.(@2hy(yyh,2@Q,Y f ys #H:` d$ y:dy  &  OBAL STATEMENTS RGLOBL:  MOVB  #-1,SIZE CLRB  SAVTERM JSR PC, CBTABS GLOBL1:  DEC  CURBYTE GLOBL2:  MOVB  SAVTERM ,R0  CMPB  #-4,R0 ;CARRIAGE RETURN  BEQ  GLOBLX  CMPB  #-5,R0 ;SEMI COLON  BEQ  GLOBLX  JSR PC, ITEM  ;GETS THE NEXT SYMBOL  TSTB  CNTCHAR  ;;ANY CHARACTERS FOUND  BGT  GLOBLA  ;YES THEN BRANCH GLOBLX:  JMP  EXIT  ;ABORT GLOBLA:  TSTB  ITYPE  ;IF ITEM WAS LEGA.:L;(:L;h?Th.?Th8?T@hT?Thx?Thfh  .PHEW-MADE IT-THIc*S IS TASK 46  8#8NOT BAD-GOT TO TASK 47  T.T THIRD TIME IS THE CHARM-TASK 48 ,#.zSUPERSYSTEM WILL NEVER MAKE IT HERE-|.TASK 49 @THIS MESSAGE WILL NEVER BE%. PRINTED DUE TO ROS SCREW UPS-TASK 50 O.i'y\@(` @Ye@v.(@s'D~h(i'yh.. 2$F  (& r d(dv@vY.OBJECT LOAD SYMBOLICAS<.*M SYM FOR SYM DATA JANFEBMARAPRMAYJL  BGT  GLOBL4  ;THE BRANCH IF SYMBOL  INCB  QERROR  ;ELSE FLAG  CMPB  #-3,SAVTERM ;IF LAST TERMINATOR  BEQ  GLOBL2  ;WAS , THEN BRANCH  JMP  MAIN1E GLOBL7: BISB #REDEF,@HINDEX ;SET PERMANENT SYMBOL REDEFINED FLAG. GLOBL4: JSR PC,SEARCH  ;SEARCH SYMBOL TABLE BGT GLOBL7  ;IF PST THEN REPEAT BEQ GLOBL6  ;IN UST BISB #GLBFLG,TFLAGS ;SET GLOBAL FLAG JSR PC,ENTER  ;ENTER INTO UST BR GLOBL2 ;FOUND IN U XXX XXXl.XXX XXXXXX X X XXXX u. > ELEMENT . CREATED START I d. NAME TYPE STATUS DATE )8 TIME SECTOR LENGTH  Z.ZH .NAME. OBJECT FREE 0.2-JAN-72 23:17:59 005466 000100 K.-DISC ERROR-BATCH FILE ELEMENT DIRECTORY READ @ .DISC DIRECTORY READ ERROR 7 .J. 2 >BEHwT7 \.$Zd% : 4"x` :d.J-E 'e  w ?.pe W" Ew (` 7.  D 7wzNN 0 Ye.  (. !f&f&E. l Y:..E dYfE &.T H 8 ,z $z.zw ~ t ( \  _. d0 E 8D/.   $ )"$/ST GLOBL6: MOV HINDEX ,R1 ;ADDRESS OF ENTRY BITB #REGFLG,TFLAGS ;IS SYMBOL A REG. EXPR. BEQ GLOBL5  ;NO INCB RERROR BISB #MDFLAG,1(R1) ;SET MULTIPLY DEFINED CMPB #-3,SAVTERM ;WAS TERMINATOR, BEQ GLOBL2  ;YES MOV #ITYPE,R3 ;NO JMP MAIN1E GLOBL5: BISB #GLBFLG,@R1 ;SET GLOBAL FLAG IN UST BR GLOBL2 .PAGE PAL ;TITLE DIRECTIVE HANDLER RTITLE:  JSR PC, CBTABS  ;T wddd d(d.  . C `w=nыw=gr =&=.ыw=`   =Z.B    >(".h 2Z w *3 ց e  Z\ց$ ŜہEqeց\ہ\ցHIS PART  DEC  CURBYTE  ;GETS JSR PC,ITEM  TSTB  ITYPE  ;THE FIRST ITEM  BGT  TITLE3  ;AND CHECKS  INCB  QERROR  ;FOR SYMBOL  BR  TITLEX TITLE3:  MOV  #TMPSYM,R1  JSR PC, SERCHB  MOV  TMPSYM+1 ,TITLEA  MOV  TMPSYM+3 ,TITLEB TITLEX:  DECB  SIZE ;SPACE WAS FOUND ASSUME DEFAULT  JMP  EXIT .PAGE PAL ;LIMIT HANDLER ; ; RLIMIT:  MOV  #TBBUF,R5  ;RESERVE  CLR  (R5)+  ;TWO  CLR  (R5)+  ;WORDS  MOV  #2,R4  ;WORDS  MOV  #RLD3.3,RLDIR  ;AND TELL  JSR PC, RELREF  ;THE LOADER  JSR PC, RLDFIL  MOV  #4,SIZE  ;TO FILL SPACE  JMP  EXIT .PAGE PAL ;SUBROUTINE LINEAR SYMBOL TABLE SEARCH ;PERFORMS A LINEAR SEARCH OVER A 4 ;WORD PER ENTRY SYMBOL T!ABLE. ;INPUT 1) THE BASE ADDRESS OF THE 2 ;  WORD (MODULO 40) SYMBOL IN R1 ; IF THE 1ST TRIAD IS 0 ; THE TWO WORD SYMBOL IS ; NOT INCLUDED IN THE ; MATCHING PROCESS ; 2) THE ADDRESS OF THE 3RD WORD TO BE MATCHED ;  IN R4. THE RIGHT BYTE IS ;  THE FLAG BYTE. THE LEFT ;  BYTE IS THE CONTROL SECTION ;  ID BYTE. ; 0 VALUES SPECIFY THAT THE ; BYTE NOT BE INCLUDED IN THE ; MATCHING PROCESS. ONLY BITS IN ; THE FLAG BYTE THAT ARE ON W%ILL ; BE MATCHED IN THE SEARCH. ; 3) THE STARTING (HIGHER) ADDRESS OF ;  THE SYMBOL TABLE IN R2 ; 4) THE 1ST FREE ADDRESS BELOW THE ;  SYMBOL TABLE IN R3 ; ;OUTPUT ; IF MATCH FOUND ; 1) R0 AND CONDITION CODES NON 0 (POSITIVE) ; 2) ADDRESS OF ENTRY TO HINDEX (HIGHER ADDRESS) AND R2 ; IF NO MATCH ; 1) R0 AND CONDITION CODES 0 ; 2) R2 DESTROYED LINSRCH: SUBR41: LINSR3: CMP R2,R3  ;COMPARE TABLE LIMITS. BNE LINSR1  ;STILL MORE ENTRIE)S. CLR R0  ;NO MATCH. RTS R7  ;RETURN LINSR1: MOV @R1,R0  ;1ST TRIAD BEQ LINSR6  ;DON'T COMPARE IF 0 CMP R0,-6(R2) BNE LINSR4  ;NO MATCH; TRY NEXT ENTRY. CMP 2(R1),-4(R2) ;2ND TRIAD BNE LINSR4  ;NO MATCH; TRY NEXT ENTRY. LINSR6: MOVB @R4,R0  ;FLAG BYTE BICB (R2),R0  ;ALL BITS IN DST SHOULD BNE LINSR4  ;BE CLEARED IF MATCH MOVB 1(R4),R0 ;CONTROL SECTION ID BYTE BEQ LINSR8 CMPB R0,1(R2) BEQ LINSR8 LINSR4: SUB #10,R2  ;SUBTRAC-T 4 WORDS FROM POINTER BR LINSR3  ;TRY NEXT ENTRY. LINSR8: MOV R2,HINDEX ;MATCH--ADDRESS OF MOV #1,R0  ;ENTRY TO HINDEX; RTS R7  ;POSITIVE VALUE TO R0. .PAGE PAL ;GSDTAB THIS SUBR CONSTRUCTS THE GSD TABLE IMMEDIATELY ;AFTER THE .END STATEMENT PRECEDING THE BINARY PASS ; GSDTAB:  MOV  #GSDCMD,DIRCMD ; GSD DECLARATION.  JSR PC, RLDINT  MOV  TITLEA ,R0 ; OBJECT MODULE NAME.  MOV1  TITLEB ,R1  CLR  R2  ; 0 TO FLAGS.  CLR  R3  MOV  #10,R4  JSR PC, RLDFIL  MOV  #ABS1,R0  MOV  #ABS2,R1  MOV  #ASCFLG,R2  ;ENTER ASECT (PROG. SECTION, DEFINED)  JSR PC, RLDFIL ;SEARCH UST FOR ALL .GLOBL'S ASSOCIATED WITH ;THE ABSOLUTE SECTION. ; MOV CONTOP ,R2 ;THE STARTING ADDRESS OF UST MOV USRTOP ,R3 ;1ST FREE LOCATION BELOW UST MOV #WORD1,R1 ;ADDRESS CONTAINING .GLOBL NAME CLR @R1  ;ACCEPT ANY NAME. MOV #W5ORD3,R4 ;3RD WORD OF MATCH. MOV #GLBFLG,@R4 ;.GLOBL GSD05: JSR PC,LINSRCH BEQ GSD01  ;NO MATCH BITB #RELFLG,@R2 ;ADDRESS OF MATCH IN R2 & HINDEX BNE GSD04  ;RELOCATABLE .GLOBL JSR PC,ENTRGL  ;ENTER SYMBOL IN RLD BUFFER GSD04: SUB #10,R2  ;HINDEX-4 WORDS. BR GSD05  ;CONTINUE LINEAR SEARCH. ;ENTER ALL RELOCATABLE PROGRAM SECTIONS ;AND ASSOCIATED .GLOBL SYMBOLS. GSD01: MOV PERTOP ,R5 ;BOTTOM OF .CSECT AREA MOVB #1,WORD3+1 ;UNNAMED .CSECT ID GSD10:9 MOV CONTOP ,R3 ;TOP OF .CSECT AREA MOV #10,R4 CMP R5,R3 BEQ GSD11  ;DONE, NO MORE .CSECT'S MOV -6(R5),R0 ;1ST TRIAD MOV -4(R5),R1 ;2ND TRIAD MOV #CSCFLG,R2 ;RELOCATABLE, DEFINED PROG. SECTION MOV (R5),R3  ;MAXIMUM PC (SIZE) JSR PC,RLDFIL  ;ENTER INTO RLD BUFFER CMPB RLDCNT ,#51 BLT GSD07 JSR PC,OUTBIN  ;NO MORE ROOM; OUTPUT JSR PC,RLDINT  ;AND REFRESH RLD BUFFER. GSD07: MOV CONTOP ,R2 ;THE STARTING ADDRRSS OF UST MOV USRTOP= ,R3 ;1ST FREE LOCATION BELOW UST MOV #WORD1,R1 ;ADDRESS CONTAINING SYMBOLIC NAME CLR @R1  ;ACCEPT ANY NAME MOV #WORD3,R4 ;.CSECT ID ALREADY SETUP MOVB #GLBFLG!RELFLG,@R4 ;RELOCATABLE .GLOBL GSD08: JSR PC,LINSRCH BEQ GSD09  ;NO MATCH JSR PC,ENTRGL  ;ENTER SYMBOL IN RLD BUFFER SUB #10,R2 BR GSD08 GSD09: SUB #10,R5  ;LOOK FOR NEXT .CSECT INCB WORD3+1 ;INCREMENT .CSECT ID BR GSD10 ;ENTER THE TRANSFER ADDRESS GSD11: MOV #TRNCMD!DEFFLG,RA2 ;DEFINED, TRANSFER ADDRESS SPEC. MOV #ABS1,R0 ;NAME OF 6 BLANKS MOV #ABS2,R1 TSTB RSLMOD ;TYPE OF EXPRESSION BEQ GSD02  ;ABSOLUTE ;RELOCATABLE .END MOV GLBSY1 ,R0 ;.CSECT NAME OF MOV GLBSY2 ,R1 ;.END EXPRESSION BISB #RELFLG,R2 ;RELOCATABLE FLAG. GSD02: MOV JMPADR ,R3 ;TRANSFER ADDRESS.  BIC  #RSTFLG,R2  JSR PC, RLDFIL  JSR PC, OUTBIN  ;START NEW BUFFER  MOV  #GSDEND,DIRCMD ;GSD TERMINATION.  JSR PC, RLDINT  JSR EPC, OUTBIN  MOV  #RLDCMD,DIRCMD ;RLD BLOCK DECLARATION  JSR PC, RLDINT  CLR  R1  ;UNNAMED .CSECT  CLR  R2  MOVB  #RLD3.1,R0  ;ENTER INITIAL CLR R3   ;IMPLICIT RLD. (LOCATION COUNTER MOV #10,R4   ;DEFINITION) JSR PC,RLDFIL JSR PC,OUTBIN RTS R7 .PAGE PAL ;SUBROUTINE TO ENTER A GLOBAL SYMBOL ;POINTED TO BY R2 INTO THE RLD BUFFER. ; ENTRGL: SUBR42: JSR PC,SAVREG  ;SAVIE REGISTERS MOV R2,R5  ;ADDRESS OF ENTRY MOV -6(R5),R0 ;1ST TRIAD MOV -4(R5),R1 ;2ND TRIAD MOV -2(R5),R3 ;VALUE MOV #10,R4  ;BYTE COUNT MOV #SYMDIR,R2 ;SYMBOL DECLARATION BISB (R5),R2 ;SYMBOL'S FLAGS BIC #RSTFLG,R2 ;KEEP UNDEF/DEF, ABS/REL, JSR PC,RLDFIL  ;AND INTERNAL/GLOBAL. CMPB RLDCNT ,#51 BLT ENTRG0  ;STILL ROOM IN RLDBUFFER JSR PC,OUTBIN  ;OUTPUT RLD BUFFER JSR PC,RLDINT  ;INITIALIZE RLD BUFFER ENTRG0: JSR PC,POPREG  ;RESMTORE REGISTERS AND RETURN .PAGE PAL REND:   ; .END ASSEMBLY DIRECTIVE PROCESSOR JSR PC,EXPE1  ;EVALUATE EXPRESSION MOV RESULT ,JMPADR TSTB ICOUNT BLE END00 CMPB #-1,RSLMOD BNE END01 INCB AERROR ;.GLOBL IN .END EXPRESSION END00: MOV #1,JMPADR END01: MOV JMPADR ,TBBUF CLRB BINOUT ; MOV #MAXLINES,PAGING; INCLUDE FOR ERROR MES. ON NEW PAGE. PAL TQSTB CNSTLV ;STILL IN A NEST OF CONDITIONALS? BEQ END01A  ;NO - BRANCH INCB ZERROR ; SET Z ERROR FOR .END IN NEST RAS CLRB CNSTLV ; ALLOW THE .END TO PRINT RAS END01A: JSR PC,ENDLINE END11: ;SYMBOL TABLE IS FIXED SO ;ALL OF FREE CORE TO STACK. MOV USRTOP ,R6 MOV R6,STKBOT TSTB SECMOD  ;.ASECT BEQ END20 MOV @USERPC ,R4 ;CURRENT PC CMP R4,@HIRPC ;TO MAX. PC BLOS END20  U;IF THE BIT #1,R4  ;FORMER IS HIGHER BEQ END24  ;EVEN. INC R4  ;MAKE EVEN END24: MOV R4,@HIRPC END20: MOV ERRSUM,-(SP) ; PUT ERROR # ON STACK RAS MOV #ERRNUM,-(SP) ; AND ADD. OF 6 BYTES FOR ASCII RAS EMT $BINAS ; CHARACTERS AND GO CONVERT THEM. RAS MOV #PASS,R5 CMPB LOPASS ,@R5 ;IS THIS THE LISTING PASS? BNE END21A ; NO. BRANCH. RAS END21: Y MOV #ERRMSG,-(SP) ; PRINT ERROR MESS. ONLY ON LISTING PASSRAS JSR PC,LPRINT ; GO PRINT IT. RAS ADD #5,PAGING ; COUNT ERROR MESSAGE FOR PAGE HEADING RAS CMP PAGING,MAXLINES ; ROOM? RAS BLT END21A ; YES RAS JSR PC,PHEAD ; NO - NEW PAGE RAS END21A: CMPB BOPASS ,@R5 ;IS THIS THE BIN O]UT PASS? BNE END21B  ;NO - BRANCH MOV #OBJEND,DIRCMD JSR PC,RLDINT JSR PC,OUTBIN JSR PC,BFPAD ; FLUSH BUFFER ****RAS MOV DSWSEC,BNBLNT ; COMPUTE THE LENGTH OF THE BINARY RAS SUB BNBSEC,BNBLNT ; OUTPUT ELEMENT RAS MOV #BINBFB,R0 ; AND CLOSE IT. RAS JSR PC,BFCLOSE ; RAS MOV a#SRCBFB,R0 ; CLOSE THE SOURCE ELEMENT RAS JSR PC,BFCLOSE ; RAS END21B: MOVB #DEFFLG!GLBFLG,STMASK END13: CMPB USPASS ,@R5 ;IS THE UNDEF SYM PASS? BNE END12 ; NO. RAS JSR PC,STLIST ; YES. LIST UNDEFINED SYMBOLS ON LP. RAS TSTB USYMFL ; ANY UNDEFINED SYMBOLS FOUND? RAS BNE END12 ; YES. e RAS MOV #NOUSYM,-(SP) ; NO - SO TELL USER. RAS JSR PC,LPRINT ; RAS END12: CLRB STMASK CMPB STPASS ,@R5 ;IS THIS SYM LST PASS? BNE END22A ; NO. RAS JSR PC,PHEAD ; YES. FIRST SKIP TO A NEW PAGE, THEN RAS JSR PC,STLIST ; LIST ENTIRE SYMBOL TABLE. RAS END22A:i INCB @R5  ;INCREASE PASS NUMBER CMPB @R5,MAXPASS BLE END23 ; END FIRST PASS-BRANCH RAS EMT $EXIT ; OTHERWISE EXIT, ALL DONE. ***RAS END23: ; RAS MOV #BINBFB,R0 ; CREAT THE BINARY OUTPUT ELEMENT. RAS JSR PC,BFENTR ; RAS MOV BNBSEC,DSWSEC ; SET START SECTOR FOR WRmITE. RAS JSR PC,GSDTAB ; PUT OUT GLOBL SYMBOL TABLE RAS JMP STA200 ; THEN GO TO BEGINNING. RAS ; RAS ERRMSG: .WORD ERMSLN ; LENGTH OF ERROR MESS. PAL .WORD 0 ; NORMAL, FORMATED, ASCII PAL .WORD ERMSLN ; CHARACTER COUNT PAL .BYTE LF q ; SKIP A LINE FOR ERROR MESSAGE RAS .BYTE TAB,TAB,TAB ; AND MOVE OVER TO COL. 25 RAS ERRNUM: .BYTE 0,0,0,0,0,0 ; 6 BYTES FOR ERROR NUMBER RAS .ASCII / LINES WITH ERRORS/ ; MESSAGE RAS .BYTE LF,LF ; AND 2 BLANK LINES BEFORE UNDEF SYMBOL RAS .ASCII /UNDEFINED SYMBOLS:/ ; RAS .BYTE LF ; u RAS ERMSLN = .-ERRMSG-6 ; NUMBER OF CHARACTERS IN ERROR MESSAGE.PAL .EVEN RAS ; RAS ; PRINT BLOCK FOR NO UNDEFINED SYMBOLS RAS NOUSYM: .WORD 8.,0,8. ; LENGTH, UNUSED, CHARCTER COUNT RAS .BYTE TAB,TAB,TAB ; COLUMN 25 RAS .ASCII /NONE/ y ; RAS .BYTE LF ; RAS .EVEN ; RAS .PAGE PAL ; THIS SUBROUTINE IS USED FOR ALL BFUP COMMUNICATIONS RAS ; ON ENTRY R0 CONTAINS THE ADDRESS OF THE PROPER BFUP COM BLOCK TO USE. RAS ; } RAS BFINIT: MOVB #$BFINT,BFEMT ; SET EMT FOR BFINIT RAS BR BFCOM ; GO TO COMMON CODE RAS BFENTR: MOVB #$BFENT,BFEMT ; SET EMT FOR BFENTR RAS BR BFCOM ; GO TO COMMON CODE RAS BFOPEN: MOVB #$BFOPN,BFEMT ; SET EMT CODE FOR BFOPEN RAS BR BFCOM ; GO TO COMMON CODE RAS BFCLOS: MOVB #$BFCLS,BFEMT ; SET EMT CODE FOR BFCLOSE RAS BFCOM: MOV R0,-(SP) ; SET BFUP COM BLOCK'S ADDRESS ON STACK.RAS BFEMT: EMT 0 ; GO DO REQUESTED EMT RAS TST (R0) ; ANY ERRORS? RAS BNE BFC010 ; YES. GO HANDLE. RAS RTS PC ; RETURN TO CALLER. RAS BFC010: MOV (R0),-(SP) ; PUT ERROR CODE ON STACK FOR ERROUT. RAS MOV #ERR8,-(SP) ; PUT ERROR NUMBER ON STACK. RAS JMP ERROUT ; GO TO ERROR HANDLER. RAS ; RAS ; SOURCE BFUP COM BLOCK RAS SRCBFB: .WORD 0 ; ERROR CODE RAS .WORD BFILE ; BATCH FILE ID NUMBER RAS .RAD50 /.TE/ ; SCRATCH SOURCE ELEMENT NAME. RAS .RAD50 /MP./ ; SECOND WORD OF NAME. RAS .BYTE 0,3 ; RESERVED, ELEMENT TYPE RAS SRBSEC: .WORD 0 ; ELEMENT'S START SECTOR RAS SRBLNT: .WORD 0 ; ELEMENT'S LENGTH. RAS ; RAS ; BINARY OUTPUT BFUP COM BLOCK RAS BINBFB: .WORD 0 ; ERROR CODE RAS .WORD BFILE ; BATCH FILE ID RAS TITLEA: .RAD50 /.MA/ ; DEFAULT ELEMNT & MODULE TITLE RAS TITLEB: .RAD50 /IN./ ; WORD 2 OF NAME. RAS .BYTE 0,0 ; RESERVED, ELEMENT TYPE RAS BNBSEC: .WORD 0 ; ELEMENT'S START SECTOR RAS BNBLNT: .WORD 0 ; ELEMENT'S LENGTH RAS ; RAS ; FILE MANAGEMENT DEFINE BLOCK RAS .BOUND ; 4/26/73 DFNLST: .WORD 1 ; THREAD WORD RAS DFNERR: .WORD 0 ; BYTE 0=ERROR CODE, BYTE 1=ERROR TASK. RAS .WORD 0,BFILE,BTYPE ; RESERVED, BATCH FILE ID, FILE TYPE RAS  .WORD 0 ; WITH DISK DIRECTORY. GET MAX ROOM. RAS .PAGE RAS  ; SECTION SYMBOL TABLE LISTING   ; GENERATE AN ALPHABETIZED LISTING OF THE   ; USERS SYMBOL TABLE.   ; 1) ENTIRE SYMBOL TABLE IF STMASK CONTAINS 0.   ; THIS INCLUDES .CSECT TABLE.   ; 2) UNDEFINED ENTRIES ONLY IF STMASK CONTAINS DEFFLG!GLBFLG   ; LINEARLY SEARCH THE TABLE WHICH IS ORDERED. ;NOTE: ;ALL ENTRIES ARE ENCODED 16-BIT UNSIGNED, ;POSITIVE, INTEGERS. STLIST: SUBR12: JSR PC,SAVREG  ;SAVE REGISTERS MOV CONTOP ,R5 ;BOTTOM OF UST MOV USRTOP ,R4 ;TOP OF UST CLRB LCSECT  ;NOT CSECT'S STLST9: ADD #10,R5 ; NULLIFY SUBTRACT AT STLST1 RAS STLST0: JSR PC,ROTATE  ;CALL ROTATE I/O BUFFERS SUB #DFSILO-LINUSZ+2,R0 ; MOVE R0 TO BYTE 0 OF BUFFER RAS MOV R0,@R3  ;CURLIST=R0,SECOND DATA BYTE MOVB #-5,LISTSC ; SET FOR 6 SYMBOLS/LINE (ONLY ON LP) PAL MOVB STMASK,R0 ; GET SEARCH MASK AND SET COND CODES FORRAS BEQ STLST1 ; BRANCH IF NOT UNDEFINED SYMBOL LISTINGRAS MOVB #-15.,LISTSC ; IF UNDEF SYM SET FOR 16 SYMBOLS/LINE RAS STLST1: SUB #10,R5  ;MOVE FLAG WORD POINTER. CMP R5,R4 BEQ STLST2  ;END OF TABLE. TSTB LCSECT BNE STLST4  ;.CSECT TABLE MOV R5,R2  ;FOR DECODE BITB R0,(R5) ; IGNORE DEFINED SYMBOLS (IN UNDEF SYM) RAS BNE STLST1  ;IF STMASK CONTAINS DEFFLG!GLBFLG INCB USYMFL ; SYMBOL FOUND - ONLY USED IN UNDEF PASSRAS ; CMP HUSERPC ,R5 ; ;BEQ STLST1  ;IGNORE USER'S PC BR DECODE STLST2:  JSR PC, STLLST ; CALL SYMBOL TABLE LISTED OUTPUT ;OUTPUT .CSECT TABLE TSTB STMASK ; SKIP IF UNDEFINED SYMBOL LISTING RAS BNE STLST3  ;EITHER NO .CSECT OR ALREADY DONE COMB STMASK  ;REVERSE SWITCH MOV PERTOP ,R5 ;BOTTOM OF .CSECT TABLE MOV CONTOP ,R4 ;TOP OF .CSECT TABLE COMB LCSECT  ;CSECT PROCESSING MOV #12,WORD4 ; CSECT #=0 TO GET UNAMED .CSECT RAS ; LABEL FLAG AND THE DEFINED FLAG RAS BR STLST9 ; RAS STLST3: CMP LPLIST,#1 ; HERE TO WAIT FOR COMPLETION OF LAST RAS BNE STLST3 ; LIST REQUEST. (LAST OF STLIST ROUTINE)RAS STLSTE:  JSR PC,POPREG  ; RETURN AFTER POPPING REGISTERS. STLST4: INCB WORD4+1  ;START WITH 002 MOV -6(R5),WORD1 MOV -4(R5),WORD2 MOV @R5,WORD3 ;SIZE OF .CSECT MOV #WORD4,R2 CLRB LISTSC  ;1 SYMBOL PER LINE.   ; DECODE A 2-WORD MOD40 PACKED SYMBOL TO   ; STANDARD ASCII ENCODED CHARACTERS DECODE: JSR PC,SAVREG  ; CALL SAVE REGISTERS MOV R2,R5 MOV (R3),R1 ; GET ADD OF NXT SYM.-R3=ADD OF CURLIST RAS SUB #6,R2  ;ADDRESS OF 1ST TRIAD MOV R1,-(SP) ; PUT ADD. OF 6 CHAR. SLOT ON STACK. RAS MOV R2,-(SP) ; PUT ADD. OF WORD 1 IN RAD50 ON STACK. RAS EMT $RADUN ; CONVERT RAD50 TO ASCII (6 CHARACTERS).RAS ADD #7,R1 ; BUMP CHARACTER POINTER TO NEXT FIELD. RAS    ; FORMAT THE LISTED OUPTUT TSTB LCSECT ; SKIP IF CONTROL SECTION LISTING RAS BNE DECOD9 ; NEVER A REG OR AN EQUATE  RAS TSTB R0 ; IF THIS IS UNDEFINED SYMBOL LISTING RAS BNE DECODD ; ONLY HAVE SYMBOL ITSELF. RAS  BITB  #RELFLG,@R5  ;ENABLES A SUFIX OF R WITHTHE  BEQ  DECODF  ;OUTPUT OF SYMBOL TABLE FOR  MOVB  #'R,10(R1)  ;RELOCATABLE SYMBOLS  BR  DECOD8 DECODF:  BITB  #REGFLG,@R5  ; SYMBOL A REGISTER ?  BEQ  DECOD8  ; NOPE  MOVB  #'%,1(R1)  ; YES, REGISTER DECOD8: BITB  #LABFLG,@R5  ; IS THIS SYMBOL A LABEL ?  BNE  DECOD9  ; YES  MOVB  #'=,@R1  ; NO, DIRECT ASSIGNMENT DECOD9: CMPB (R1)+,(R1)+ ; ADD 2 TO R1 (ADD OF NEXT BYTE) ODD/EVNRAS MOV R1,R3  BITB  #DEFFLG,@R5  ; IS SYMBOL UNDEFINED ?  BNE  DECODA  ; NOPE MOVB #'*,-(SP) ; YUP. PUT '******' INTO ADDRESS RAS MOV #5,R2 ; AREA OF LISTING RAS DECODH: MOVB (SP),(R1)+ ;  RAS DEC R2 ; RAS BGT DECODH ; RAS MOVB (SP)+,(R1)+ ; LAST '*' RAS MOV R3,R1 ; RESET R1. RAS  BR  DECODJ  ; CHECK AVAILABLE SPACE DECODA:  MOV  -2(R5),R4  ; R4 = EFFECTIVE VALUE  MOV  #6,R2  ; R2 = 6, ITERATIONS  ADD  R2,R3  ; R3 = R3+6  JSR PC, BINASC ; CALL FOR BINARY TO ASCII CONVERSION DECODJ: CLR R4 BISB 1(R5),R4 ;CONTROL SECTION ID. CMP R4,#1  ;DON'T OUTPUT .ASECT OR BLE DECODI  ;UNNAMED .CSECT ID CMP R4,#MDFLAG ;DON'T OUTPUT BEQ DECODI  ;MULDEF FLAG MOV #3,R2  ;3 DIGIT NUMBER ADD #13,R3  ;COLUMN AFTER RIGHTMOST DIGIT JSR PC,BINASC  ;BINARY TO ASCII CONVERSION DECODI:  BITB  #GLBFLG,@R5  ;SUFFIX G  BEQ  DECODB  MOVB  #'G,7(R1) DECODB: ADD #14.,CURLIST ; 22 CHAR/SYMBOL IN FULL LISTING RAS DECODD: ADD #8.,CURLIST ; ONLY 8/SYM IN UNDEF LISTING RAS JSR PC,SETREG ; OF CURLIST. RESTORE REG. FROM DECODE RAS  INCB  LISTSC  ; INCREMENT SYMBOL COUNTER  BGT  DECODC  ; LO BUFFER FULL, OUTPUT  JMP  STLST1  ; PROCESS THE NEXT SYMBOL DECODC:  JSR PC, STLLST ; CALL SYMBOL TABLE LISTED OUTPUT  JMP  STLST0 .PAGE PAL  ; SUBROUTINE SYMBOL TABLE LISTED OUTPUT STLLST: MOVB #LF,@2(R3) ; TERMINATE CHARACTER STRING WITH A LF. RAS ; BACK UP 2 CHAR. FOR WORD OF BLANKS RAS MOV BHADRS+2,R1 ; GET ADDRESS OF BUFFER HEADER. RAS SUB #DFSILO,R1 ; GET ADD. OF OUTPUT BUFFER HEADER. PAL MOV R1,-(SP) ; PUT BUFFER HEAD. ADD. ON STACK FOR LP.RAS  CMP (R1)+,(R1)+ ; BUMP R1 TO ACTUAL BYTE COUNT AND THEN RAS SUB R1,(R3) ; COMPUTE THE # OF CHARS. IN THE BUFFER RAS SUB #3,(R3) ; ADJUST CHARACTER COUNT RAS MOV (R3),(R1) ; AND PLACE THE # IN THE ACTUAL BYTE CT.RAS BGE STLLS2 ; IF BYTE COUNT IS NEG., MAKE IT ZERO. RAS CLR (R1) ; RAS STLLS2: JSR PC,LPRINT ; PRINT THE SYMBPL TABLE LISTING LINE. RAS INC PAGING ; INCREMENT LINES ON THIS PAGE COUNTER. RAS CMP PAGING,MAXLINES ; IS THIS A FULL PAGE YET? RAS BLT STLLS1 ; NO. GO HOME. RAS JSR PC,PHEAD ; YES. PRINT HEADER ON NEW PAGE. RAS STLLS1: RTS PC ; GO BACK TO CALLER. RAS .PAGE PAL ;ARITHMETIC CONDITIONAL ASSEMBLY PROCESSORS ; ;FORM --- .IF??? EXPRESSION ;.IFZ IF EQ 0 ;.IFG IF GT 0 ;.IFGE IF GE 0 ;.IFL IF LT 0 ;.IFLE IF LE 0 ;.IFNZ IF NE 0 IFPRO: CLR R0 ;PRIME COND TO EVALUATE JSR PC,COND ;THE EXPRESSION TST RESULT ;TEST THE RESULT JMP IF000 (R1) IF000: BNE IF020     ;IFZ BR IF010 BGT IF020 ;THE CONDITIONAL BRANCH IS ;IFLE BR IF010 ;TAKEN WHEN THE REQUESTED BGE IF020 ;CONDITION IS NOT SATISFIED ;IFL BR IF010 BLT IF020     ;IFGE BR IF010 BLE IF020     ;IFG BR IF010 BNE IF010     ;IFNZ IF020: INCB DNTACT ;CONDITION NOT SATISFIED TST LISTON ;LISTING SUPPRESSES? BEQ IF010  ;BRANCH IF NO INC LISTKEY ;INCREMENT .IF NESTED COUNTER ;INCREMENT DON'T ASSEMBLE COUNTER. IF010: MOVB #-1,SIZE ;LISTING FORMAT CONTROL JMP EXIT ;EXIT IFPRO2: MOV #2,R0  ;PRIME COND JSR PC,COND  ;NOT TO EVALUATE THE EXPR. MOV R0,R4  ;SETUP R4 FOR "OR" CONDITION CLR R2  ;FINAL RESULT GOES IN R2 IFDF00: MOV #IFDF25 ,-(R6) ;STACK THE "OR" OPERATOR IFDF05: JSR PC,ITEM  ;GET NEXT ITEM TSTB ITYPE  ;IS THIS AN OK SYMBOL? IFDF12: JSR PC,SEARCH  ;YES--SEARCH SYMBOL TABLE BGT IFDF12  ;FOUND IN P.S.T--IGNORE BNE IFDF10  ;NOT FOUND IN U.S.T. IFDF15: BITB #DEFFLG,TFLAGS ;IS SYMBOL DEFINED? BNE IFDF20  ;YES--BRANCH IFDF10: ADD R4,@R6  ;NOT FOUND OR UNDEFINED IN U.S.