|
|
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◀