|
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: 4608 (0x1200) Types: TextFile Names: »kksystrm«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »kksystrm«
(systrm=slang list.no xref.no systrm) ; ; systrm ; b. g2 w. s. a50,h20,i20 w. ; format of message buffer a40=-10 ; message buffer address(other computer) or result a38= -8 ; receiver<12+sender (computer numbers) a36= -6 ; process description addr for receiver other computer a34= -4 ; - - - - sender - - a32= -2 ; w2 a0 = 0 ; next buffer a2 = 2 ; prev buffer a4 = 4 ; receiver a6 = 6 ; sender ; i-o (normal) i-o (other com) mon call a8 = 8 ; message op<12 +mode 3<12 1<22+m_p_n a10= 10 ; - first address first addr w0 a12= 12 ; - last address last addr w1 a14= 14 ; - 1. segment first addr(oc) w2 a16= 16 ; - comp no w3 a18= 18 ; - a20= 20 ; - a22= 22 ; - ; ; format of message to another computer: ; ; do w(i) addr ; ; w(i): 1<23 + 0<3 + 2.000 hresponse ok ; 1<23 + 0<3 + 2.010 hresponse not ok ; 1<23 + addr<3 + 2.100 message buffer address ; 1<23 + op<3 + 2.110 immediately operation without hresponce ; rs. w3 h7. ; own proc desr addr al w0 4 ; jd 1<11+32; set own process descr addr in monitor jd 1<11+28; set monitor mode al. w3 h10. ; jd 1<11+4 ; w0:=process descr addr(master) rs. w0 h6. ; i0: al w2 0 ; jd 1<11+24; wait event rl. w3 h2. ; se w3 0 ; if wait hresponce then jl. i0. ; goto wait else se w0 0 ; if not message then jl. i2. ; goto i2 rs. w2 h2. ; else save buf addr rl w3 x2+a4 ; w3:=receiver bz w1 x2+a38 ; w1:=receiver (other computer) sn. w3 (h6.) ; if receiver=masterproc then bz w2 x2+a8 ; w2:=operation else w2:=buffer address ls w1 3 ; wa. w1 h1. ; w1:=sender addr (as device addr) ls w2 3 ; sn. w3 (h6.) ; if receiver = masterprocess then am 2 ; immediately operation lo. w2 h3. ; hmess i1: do w2 x1 ; send hmess sx 2.111 ; if buserror then jl. i3. ; goto i3 else jl. i4. ; goto i4 i3: rl. w0 h8. ; w0:=counter ba. w0 1 ; counter:=counter+1; rs. w0 h8. ; save counter sh w0 10 ; if counter<=10 then jl. i1. ; repeat data out jl. i7. ; else goto result 2 i4: se. w3 (h6.) ; if receiver<>masterproc then jl. i0. ; goto wait jl. i9. ; return buffer i2: se w0 6 ; if not hresponse then jl. i0. ; goto i0. se. w2 (h5.) ; if hresponse not ok then jl. i7. ; goto result 2 rl. w2 h2. ; w2:=buf jl. i11. ; goto movebuf i7: rl. w2 h2. ; w2:=buf rl w1 x2+a4 ; w1:=receiver se. w1 (h7.) ; if receiver<>this proc then jl. i10. ; goto i10 jd 1<11+26; get event al w0 2 ; result=2 (rejected) al. w1 h9. ; mess addr jd 1<11+22; send message jl. i12. ; goto i12 i9: am 3 ; result=1 (command is sended) i10: am -1 ; set result 2 i11: al w0 -1 ; set result 1 rs w0 x2+a40 ; set result al. w3 h10. ; jd 1<11+34; move buf to master proc i12: al w0 0 ; rs. w0 h2. ; clear buffer addr rs. w0 h8. ; clear counter jl. i0. ; goto wait h1: 1<23 + 0<3 + 2.101; send hmess h2: 0 ; buffer addr h3: 1<23 + 0<3 + 2.100; hmess h4: 1<23 + 0<3 +2.110 ; immediately operation h5: 1<23 + 0<3 +2.010 ; h7: 0 ; own proc descr addr h8: 0 ; counter for max data out error h9: 0,r.8 ; message h6: 0,0 h10: <:masterproc:> e. g2=k g1: g0: 1 ; size 0,r.4 ; name s2 ; clock 0 ; file 0 ; block 3<12+0 ; contents g2 ; size d. p.<:fpnames:> p.<:insertproc:> ▶EOF◀