|
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: »kksysrec«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »kksysrec«
(sysrec=slang list.no xref.no sysrec) ; ; sysrec ; b. g2 w. s. a50,h20,i20 w. ; format of message buffer a50=-10 ; top of 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 ; - a49=a22-a50 ; buffer size ; ; ; format of message arrived in fifo(this computer) ; ; 1<23 +addr<3 +2.100 message buffer address ; 1<23 +aadr<3 +2.110 answer buffer address ; ; rs. w3 h10. ; own process al w0 6 ; jd 1<11+32; set own process desription address in monitor jd 1<11+28; set monitor mode di. w1 (h14.) ; w1:=own computer number rs. w1 h17. ; i0: al w2 0 ; rs. w2 h11. ; counter:=0; jd 1<11+24; wait event se w0 6 ; if not hmess then jl. i3. ; goto i3. ds. w2 h8. ; save(sender,hmess) sz w2 2.100 ; if not message or answer then am 2.010 ; set hresponse error else al w3 2.000 ; hresponse ok wa. w3 h4. ; set hresponse ls w1 3 ; wa. w1 h0. ; w1:= 1<23 +dev<3 +2.101 i1: do w3 x1 ; send message to other computer sx 2.111 ; if buserror then jl. i5. ; goto i5 else jl. i2. ; goto i2 i5: rl. w0 h11. ; w0:=counter ba. w0 1 ; counter:=counter+1; rs. w0 h11. ; sh w0 10 ; if counter<10 then jl. i1. ; repeat data out else jl. i0. ; goto wait i2: dl. w2 h8. ; load(sender,hmess) rs. w1 h8. ; h8:=sender ls w2 1 ; ls w2 -4 ; w2:=buffer address al w2 x2+a50 ; w2:=first of buff rs. w2 h7. ; al. w1 h15. ; mess addr al. w3 h16. ; name jd 1<11+16; catch buff al w1 x2+a50 ; first address al w2 x2+a22 ; last address ds. w2 h6. ; al. w1 h5. ; sendmessage(message, al. w3 h19. ; <:sysdma:>,buff) jd 1<11+16; jl. i0. ; goto wait i3: se w0 1 ; if not answer then jl. i4. ; goto i4 al. w3 h18. ; w3:=master proc jd 1<11+34; movebuff to master proc jl. i0. ; goto wait i4: se w0 0 ; if not message then goto wait jl. i0. ; rl w1 x2+a4 ; w1:=receiver sn. w1 (h10.) ; if receiver is not this proc then jl. i0. ; goto wait jd 1<11+26 ; get event (release buffer) jl. i0. ; goto wait h0: 1<23 + 0 <3 + 2.101; start dma trans h4: 1<23 ; h5: 3<12 ; mess: input 0 ; first address (this computer) h6: 0 ; last address (this computer) h7: 0 ; first address (other computer) h8: 0,r.3 ; computer number (other computer) h9: 1<23 + 0 <3 + 2.001; start dma input command h10: 0 ; own process descr addr h11: 0 ; counter for max data out repeat h14: 1<23 + 0 <3 + 2.111; h15: 0,r.8 ; pseudo message h16: 0,r.5 ; - name h17: 0 ; h18: <:masterproc:>,0,0 h19: <:sysdma:>,0,0,0 e. g2=k g1: g0: 1 0,r.4 ; s2 ; clock 0 ; file 0 ; block 3<12+0 ; contents g2 ; size d. p.<:fpnames:> p.<:insertproc:> ▶EOF◀