|
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: »kksysdma«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »kksysdma«
(sysdma=slang list.no xref.no sysdma) ; sysdma ; b. g2 w. ; format of input message to other computers ; mess +0 3<12 ; +2 first address (this computer) ; +4 last address (this computer) ; +6 first address (other computer) ; +8 computer number (other computer) 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 ; - rs. w3 h10. ; own process al w0 8 ; jd 1<11+32; set own process description address in monitor jd 1<11+28; set monitor mode i0: al w2 0 ; jd 1<11+24; wait event rl. w3 h11. ; w3:=buffer addr sn w0 8 ; if dma-transfer completed then jl. i1. ; goto i1. sn w0 0 ; if not message se w3 0 ; or wait dma-transfer completed then jl. i0. ; goto i0 bz w0 x2+a8 ; w0:=message type se w0 3 ; if not input message then jl. i3. ; goto result 3 rs. w2 h11. ; save buffer address rl w0 x2+a16 ; w0:=other computer number rl w1 x2+a12 ; w1:=last addr ws w1 x2+a10 ; w1:=last addr-first addr al w1 x1+2 ; w1:=number of halfwords to transfer sh w1 0 ; if nothing to transfer then jl. i3. ; then goto result 3 ds. w1 h1. ; else set dma input message rl w1 x2+a10 ; w1:=first addr (this computer) rl w0 x2+a14 ; w0:=first addr (other computer) ds. w1 h3. ; al. w3 h1. ; input message address ls w3 3 ; wa. w3 h4. ; w3:=1<23+addr<3+2.010 do x3 ; start dma-transfer sx 2.111 ; if buserror then jl. i2. ; goto result 2 jl. i0. ; else goto wait i1: sn w3 0 ; if no waiting buffer then jl. i0. ; goto wait am -1 ; result 1 i2: am -1 ; result 2 i3: al w0 3 ; result 3 rl. w2 h11. ; buffer addr jd 1<11+26; get event se w0 1 ; if not result ok then jl. i7. ; goto to send answer rs. w0 h8. ; rl. w1 h1. ; w1:=number of halfwords rs. w1 h6. ; ls w1 -1 ; w1:=number of words transfered wm. w1 h9. ; w1:=number of chars rs. w1 h7. ; rl. w0 h8. ; w0:=result i7: al. w1 h5. ; w1:=message address jd 1<11+22; send answer al w2 0 ; rs. w2 h11. ; ready jl. i0. ; goto wait 0 ; used (cpu) h0: 0 ; number (other computer) h1: 0 ; number of halfwords to transfer h2: 0 ; first address (other computer) h3: 0 ; first address (this computer) h12: 20 ; interrupt level h4:1<23 + 0 <3 + 2.010 ; device address h5: 0 ; answer: status h6: 0 ; halfwords h7: 0 ; chars h8: 0 ; h9: 3 ; constant h10: 0 ; own process h11: 0 ; bufferaddress or zero for no waiting buffer 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◀