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