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