|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6912 (0x1b00) Types: TextFile Names: »tlookaux«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ. └─⟦b2ec5d50f⟧ └─⟦2cfec6318⟧ »incsys« └─⟦this⟧ └─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »tlookaux« └─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦70d387dbb⟧ »incsys« └─⟦this⟧
(lookupaux=set 1 (lookupaux=slang fpnames type.yes insertproc entry.no lookupaux ) if ok.no end ) ;hcø 19 6 72 ;b. ;fpnames dummy block b. g1, e20 w. ;block with names for tails and insertproc k=10000 s. g6,j46,f7,b15,i10,d3;start of slang segment for procedures h. g0=0 ;g0:=no of externals e20: g1: g2 , g2 ;head word: rel of last point, rel of last abs word j13: g0 + 13 , 0 ;RS entry 13, last used j30: g0 + 30 , 0 ;RS entry 30, saved stack ref, saved w3 j3: g0 + 3 , 0 ;RS entry 3, reserve j4: g0 + 4 , 0 ;RS entry 4, take expression j6: g0 + 6 , 0 ;RS entry 6, end register expression j12: g0 + 12 , 0 ;RS entry 12, UV j16: g0 + 16 , 0 ;RS entry 16, segment table base j29: g0 + 29 , 0 ;RS entry 29, param alarm g2 = k-2-g1 ;end of abs words:=end of points w. e0: g0 ;start external list 0 80 01 28,14 00 00 b0: rl w1 0 ; result:=result monitor proc jl. (j6.) ; end register expression b1: rs. w1 b2. ; save link dl w1 x3+2 ; move name to reserved locations ds w1 x2+2 ; dl w1 x3+6 ; ds w1 x2+6 ; jl. (b2.) ; return b2: 0 w. e1: ;entry lookup_aux rl. w2 (j13.) ;w2:=last used ds. w3 (j30.) ;saved stack ref, saved w3 dl w1 x2+16 ; take param tail ba w1 0 ; w1:=abs dope rl w3 x1 ; w3:=lower index - 2 wa w3 (x2+16) ; al w1 x3+2 ; w3:=addr first elem rs w1 x2+14 ; al w1 -8 ; reserve 8 bytes in stack jl. w3 (j3.) ; ds. w2 (j30.) ; save stack ref, save w3 dl w1 x2+12 ;take param docname al w2 x2-8 ; so w0 16 ;if expression then jl. w3 (j4.) ;take expression ds. w3 (j30.) ;save stack ref,save w3 al w2 x2+12 ; jl. w3 d1. ;take param name al w2 x2-18 ; jl. w1 b1. ; move docname dl w1 x2+16 ; take param 1 name so w0 16 ; if expression then jl. w3 (j4.) ; take expression ds. w3 (j30.) ; save stack ref, save w3 al w2 x2+8 ; jl. w3 d1. ; w3:=takestring al w2 x2-6 ; release reserved locations rs. w2 (j13.) ; rl w1 x2+14 ; w1:=tail al w2 x2-8 ; w2:=doc jd 1<11+86 ; lookup auxillary entry jl. b0. ;end register expression ; takestring ; Anders Lindgård ; 1978-10-27 ; procedure take string; ; registers at entry at return ; w0 not used destroyed ; w1 abs addr of string/elem destroyed ; w2 addr of first formal unchanged ; w3 link addr of start of name ; procedure take string1; ; registers at entry at return ; w0 not used destroyed ; w1 abs address of elem destroyed ; w2 last used last used+6 ; w3 link addr of start of name b. a8,c6,b24 ; begin w. c0: 0, c1: 0 ; first formal,link c2: 0,r.5 ; name c3: 0 ; work c4: 0 ; work d1: al w2 x2+6 ;entry take string1 d0: ;entry take string ds. w3 c1. ;save link , save w2 rl w0 x2+0 ;w0:=first formal al w3 2.11111 ; la w3 0 ;w3:=kind+() se w3 10 ;if integer expression sn w3 26 ;or integer then jl. a8. ;goto proc addr se w3 24 ;if -,string variable or sn w3 8 ;-,string expression jl. a1. ;begin comment array; sh w3 22 ;if variable or sh w3 15 ;procedure or expression then jl. w3 (j29.) ;param alarm ba w1 0 ;w1:=abs dope addr rl w3 x1 ; wa w3 (x2+2) ;w3:=first addr-2 bz w0 x2+1 ;w0 :=kind al w3 x3+0 ; sh w0 17 ;if kind = l7 then boolean array jl. (c1.) ; al w3 x3 +1 ; sh w0 18 ;if kind = 18 then integer array jl. (c1.) ; al w3 x3+0 ; sh w0 20 ;if kind = 20 then real array jl. (c1.) ; al w3 x3+4 ; jl. (c1.) ; a8: ;proc addr: al. w3 c2. ;w3:=name addr rl w2 x1 ;w2:=name address dl w1 x2+4 ;w1w0:=first part name ds w1 x3+2 ; dl w1 x2+8 ;w1w0:=last part name ds w1 x3+6 ; rs w2 x3+8 ;store name addr as name table entry rl. w2 c0. ;w2:=stack ref jl. (c1.) ;end; a1: dl w1 x1 ;w1w0:=string value sh w0 0 ;if layout then jl. w3 (j29.) ;param alarm sh w1 -1 ;if long string then jl. a3. ;goto long string al. w3 c2. ;w3:=name addr ds w1 x3+2 ;store string value ld w1 -65 ;w1w0:=0; ds w1 x3+6 ;last part name:=0; jl. (c1.) ;end get string a3: ;long string: ds. w1 c4. ;store item ld w1 -65 ;w1w0:=0 ds. w1 c2.+6 ;name(3):=name(4):=0; rl. w0 c1. ;w0:=return addr al. w3 a7. ;w3:=exit addr ws w0 6 ;w0:=rel return adr rs. w0 (j12.) ;save rel return in UV dl. w1 c4. ;w1w0:=item a4: ;find first part: bz w3 0 ;w3:=rel segm no ls w3 1 ;w3:=w3*2 wa. w3 (j16.) ;w3:=segment addr rl w3 x3 ;w3:=first addr(segment); bz w0 1 ;w0:=rel wa w3 0 ;w3:=segment+rel dl w1 x3 ;w1:=item (ref out of this segment) sh w1 -1 ;if long string then goto long string jl. a4. ;goto long string ds w1 x2+2 ;save first part al w3 x3-4 ;x3:=addr next a5: dl w1 x3 ;take next: (ref out of this segment?) sh w1 -1 ;if long string then jl. a6. ;goto next long al. w3 c2. ;w3:=name addr ds w1 x3+6 ;name 3,4:=second part dl w1 x2+2 ;w1w0:=first part ds w1 x3+2 ;name 1,2:=first part rl. w1 (j12.) ;w1:=rel return addr a7: jl. x1+0 ;return a6: ;long string second item bz w3 0 ;w3:=rel segm no ls w3 1 ;w3:=w3*2 wa. w3 (j16.) ;w3:=segment rl w3 x3 ;w3:=first addr(segment); bz w0 1 ;w0:=rel wa w3 0 ;w3:=addr second item jl. a5. ;goto take second e. m. end code of this segment h. 0,r.(:10504-k:) w. <:lookupaux <0>:> e. ;end slang segment ; lookup_aux g1: g0: 1 ;first tail: area with 1 segment 0,0,0,0 ;fill 1<23+e1-e20 ;entry point read_dev 3<18+25<12+41<6+41,0;integer procedure(undef,undef,integer array); 4<12+e0-e20 ;code proc start of external 1<12 ;1 code segment n. ▶EOF◀