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

⟦70368c604⟧ TextFile

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

Derivation

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

TextFile

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