|
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: »tsetentry«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦ef5fa0e68⟧ »jtas« └─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦ef5fa0e68⟧ »jtas« └─⟦this⟧
; code procedures for algol task creation b. g1, e30 w. ; block for tails and insertproc d. , p.<:fpnames:> , l. k=10000 s. b10, f10, j50, g5; start slang segment h. g0=2 ; no of externals e5: g1: g2 , g2 ; head word j3: g0+3 , 0 ; rs entry 3 : reserve space j8: g0+8 , 0 ; - - 8 : end addr expr j13: g0+13, 0 ; - - 13 : last used j15: g0+15, 0 ; - - 15 : first of program j16: g0+16, 0 ; - - 16 : segm tab base j30: g0+30, 0 ; - - 30 : saved w3, stack ref j43: 0, 1 ; own var seq count j44: 0, 3 ; own var eff call segm j45: 1, b0 ; ext no 1 , chain for rel j46: 2, b2 ; ext no 2 , chain for rel g2=k-2-g1 w. e0: g0 ; start external list 0 ; 0 hw to initialize in own core <:lock:>,0,0 ; external: name 3<18+40<12 , 0 ; int proc(gen addr) <:calltask:>,0 ; name 1<18+31<12+25<6+25 , 0 ; proc(int arr,int arr,proc) s3 , s4 ; date, clock ; variables f0: 0 , r.8 ; message area \f ; algol task create page 2 e2: rl. w2 (j13.) ; eff start ds. w3 (j30.) rl. w0 (j43.) se w0 0 ; if seq count<>0 then error jl. b1. al w0 1 rs. w0 (j43.) ; seq count:=1 rl w1 x2+2 rs. w1 (j44.) ; eff call segm:=return inf jl. (j8.) ; end addr expr ; procedure set entry(ctbl,exctbl) b. l10 , m10 w. b2=k+1-g1 ; dummy chain for rel m5: 0 , 0 ; double word m6: 0 , r.5 ; parent name + name tab addr e1: rl. w2 (j13.) ; set entry ds. w3 (j30.) rl. w0 (j43.) sn w0 1 ; if seq count<>1 then jl. l1. se w0 0 jl. (j8.) ; if seq count<>0 then end addr expr jl. b3. ; else error \f ; algol task create page 3 l1: al w0 2 rs. w0 (j43.) ; seq count:=2 al w1 -30 ; prepare call of lock jl. w3 (j3.) ; reserve space 30 hw rs w2 x1+0 ; set stack ref rl. w0 g1. rs w0 x1+2 ; set own segm tab addr al w3 l2 ld w0 -12 al w3 24 ld w0 12 rs w3 x1+4 ; set app., rel return al w3 26 al w0 x1+28 ds w0 x1+8 ; set 1. formal al w0 x1+26 ds w0 x1+12 ; set 2. formal al w0 x1+24 ds w0 x1+16 ; set 3. formal al w0 x1+22 ds w0 x1+20 ; set 4. formal al w0 0 al w3 10 ds w0 x1+28 ; set values 1.,2. param rl. w0 (j44.) ; w0:=eff call segm ws. w0 (j16.) ls w0 -1 ; w0:=segmno rl. w3 g1. ; w3:=own segm tab addr ws. w3 (j16.) ls w3 -1 al w3 x3-1 ; w3:=own segm no - 1 ds w0 x1+24 ; set values 3.,4. param rl. w3 (j45.) ; w3:=segm addr(lock) b0=k+1-g1 ; define link jl x3+0 ; call lock(4 params) l2=k-g1 ; define rel return addr \f ; algol task create page 4 ds. w3 (j30.) rl. w3 (j46.) ; transfer call task to core rl w0 x3 rl w3 66 ; w3:=proc descr addr dl w1 x3+36 ds. w1 m5.+2 ; save itr addr,ittr mask am (x3+22) al w3 1536 ; w3:=start algol area rs. w3 m6.+8 ; save start addr rl w3 x3+50 ; w3:=parent proc aadr dl w1 x3+4 ; save parent name ds. w1 m6.+2 dl w1 x3+8 ds. w1 m6.+6 rl. w3 m6.+8 ; get start algol area al w0 100 ; send ok mess to parent ls w0 12 rs. w0 f0. ; set opcode ws. w2 (j15.) al w2 x2-1024 rs. w2 f0.+2 ; free core:=last used-first of prog -1024 al. w0 l3. rs. w0 f0.+4 ; set entryaddr al. w1 f0. al. w3 m6. jd 1<11+16 ; send mess jd 1<11+18 jl. 0 \f ; algol task create page 5 l3: al w0 0 ; entry to task from exec rs w0 x1+1536+36 ; clear program docname rl. w0 m5. rl. w3 m5.+2 jd 1<11+0 ; set itr addr, itr mask rl w3 66 rl w0 x3+50 rs w0 x1+1536+50 ; set parent proc addr rs w0 x1+1536+54 ; set console proc addr rl. w2 (j13.) rs w1 6 dl w1 x2+8 rl w2 x3+54 ; set base word of ctbl to al w2 x2-1 rs w2 x1 ; execconst(54)-1 ea w1 0 rl w0 x3+26 rs w0 x1-2 ; ctbl.uixval:=execconst(26) al w0 0 rs w0 x1 ; ctbl.lixval:=0 rl. w2 (j13.) dl w1 x2+12 rl w2 x3+58 ; set base word of exctbl to al w2 x2-1 rs w2 x1 ; execconst(58)-1 ea w1 0 rl w0 x3+24 rs w0 x1-2 ; exctbl.uixval:=execconst(24) al w0 0 rs w0 x1 ; exctbl.lixval:=0 jl. (j8.) ; end addr expr, goto algol part e. \f ; algol task create page 6 ; error procedure b1: am -1 ; double call of eff start b3: al w0 2 ; eff start not called before set entry rs. w0 f0.+2 ; set value al w0 101 ls w0 12 rs. w0 f0. ; set opcode al. w1 f0. am (66) am (22) al w3 1536+36 ; w3:=addr parent name jd 1<11+16 ; send mess jd 1<11+18 ; wait answ jl. 0 g4: c. g4-g1-506 m. code too big z. c. 502-g4+g1, jl -1, r.252-(:g4-g1:)>1 z. ; fill with ill instr. <:set entry<0><0>:> ; alarm text i. e. ; end of segment \f ; algol task create page 7 ; tails g0: ; first tail 1 ; set entry 0,r.4 1<23 + e1 - e5 ; entry point 1<18+25<12+25<6,0 ; proc(int array,int array) 4<12 + e0 - e5 ; codeproc , start ext list 1<12 + 4 ; 1 segm , 4 hw own g1: ; last tail 1<23 + 4 ; eff start 0,r.4 1<23 + e2 - e5 ; entry point 1<18,0 ; proc 4<12 + e0 - e5 1<12 + 4 d. , p.<:insertproc:> ▶EOF◀