DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦89fd153f0⟧ TextFile

    Length: 4608 (0x1200)
    Types: TextFile
    Names: »kksystrm«

Derivation

└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦this⟧ »kksystrm« 

TextFile

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