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

⟦75fbce765⟧ TextFile

    Length: 5376 (0x1500)
    Types: TextFile
    Names: »hcloadbl4«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »hcloadbl4« 

TextFile

b100:
     d0 = 85           ;X 88    ; control octet for end transmission.
     d1 = 170          ;C  67   ; control octet for transmission of word ok.             
     d2 =  60          ;E 69    ; control octet for repeat tranbsmission of
                       ; last 3 octets.
     d3 = 240          ; control octet for repeat complete transmission.
     d4 = 255          ;S  83   ; control octet for transmission start.
d10:
c1:  rl. w0     b118.  ; get char.
     sn  w0     d4     ; if charakter read = 255 ( load command)
     jl.        c3.    ; then goto c3
     gp  w0     64     ; else show load command
     jd 1<11+2         ; swop process.
     jl.        c1.    ; goto start.
c3:
     al. w1     f9.    ; address of end of program.
     rs. w1     f1.    ; store last address.
     al. w1     f10.   ; get address first of program.
     rs. w1     f5.    ; save in current address.
c4:  rl. w0  (  f5.    ; get current word.
     al w3   0         ; load word status.
     rs.w3   f7.       ; save word status ok.
     ls  w0     -16    ; get first octet.
     jl. w3     c5.    ; call send  wait and control octet.
     rl. w0  (  f5.    ; get current word.
     ls  w0     8      ; get middle octet.
     ls  w0     -16    ;
     jl. w3     c5.    ; call send wait and control octet.
     rl. w0  (  f5.    ; get current address.
     ls  w0     16     ; get last octet.
     ls  w0     -16    ;
     jl. w3     c5.    ; call send wait and control octet.
     al  w0      0     ; load control word for word control.
     sn. w0     (f7.   ; skip next if word control is ok.
     jl.         c7.   ; goto word transmitted ok.
     al  w0      d2    ; load control octet for retransmit octet.
     jl. w3     c5.    ; call send wait and control.
     jl.        c4.    ; goto send same word.
c7:  ;; next word.
     rl. w1     f5.    ; get last current.
     al  w1  x1+2      ; next current.
     rs. w1     f5.    ; save address of next current.
     sl. w1  (  f1.    ; if current word <= address of last of program
     jl.        c6.    ; then goto send control word last byte.
     al   w0    d1     ; load control octet for word transmitted ok.
     jl.  w3    c5.    ; call send control octet.
     jl.        c4.    ; goto send next word.

c6:  ;; send last control byte.
     al  w0     d0     ; load second control octet.
     jl. w3     c5.    ; call send wait and conmtrol.
     jd  1<11+2        ; swop process and wait for char to be recieved.
     jl.        c1.    ; goto start.
c5:  ;; procedure write octet and wait control.
b.   c10 w.
     rs. w3     c0.    ; save return address.
     rs. w0     c1.    ; save octet to be send.
     al  w3     -1     ; reset recive control.
     rs. w3     b118.  ;
     rl. w3     f0.    ; get device address.
     jd         1<11+14; call send octet.
                       ; return when octet is received.
     rl. w0     b118.  ; get octet received.
     sn. w0  (  c1.    ; skip if not equal with octet send.    
     jl.     (  c0.    ; return from subroutine.
     sn   w0    d4     ;   if octet received is start transmission then
     jl.        d10.   ;    got start transmission.
     ls  w0     8      ; shift octet received 8
     lo. w0     c1.    ; mask octet send in.
     gp  w0     64     ; show wrong octets.
     rs. w3     f7.    ; save wong word in word status.
     jl.     (  c0.    ; return fromn subroutine.
c0:  0                 ; return address.
c1:  0                 ; octet send.
e.   ;; end of procedure send octet wait and check.
b110:
b.   c20   w.
     ;; block second process.
     rl. w3     f0.    ; load device address.
     jd         1<11+20; call init of terminal driver.
      al  w1    32
c0:                    ; get loop counter.
     al  w1  x1+1
     al  w2  x1       ; get timer interupt counter.
   ls  w2  -4
   ls  w2  16
     gp  w2   64
     rl. w2     b118.
     ls  w2     8
     gp  w2     64
     rl. w2     b117.
   gp  w2     64
     jl.        c0.    ; goto repeat.
e.   ;; end block second process.

b112:0
b116:0
b117:0
b118:80                ; char to be output.
b119:0
f0:  64                ; device address.
f7:  0                 ; status of word send.
f4:  0                 ;
f5:  0                 ; current storage address.
f1:  0                 ; program length.
f2:  0                 ; start address relative to f1.
f10:p.<:hclocalprog:>
     ;;<:aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrr:>
f9:  <:@@@:>           ; last program address.

b101:
b111:jl.        0      ; end of 2. and first user program.
e.
                       ; end of 2. user program.
▶EOF◀