|
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: 10752 (0x2a00) Types: TextFile Names: »hclocalt«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦this⟧ »hclocalt«
;; ++++++++++++++++++++++++++++++ ;; load program for hc8000 local. ;; ++++++++++++++++++++++++++++++ ;; written by: carsten gyrn, sept 1982. ;; format of load through acia channal: ;; 1. the hclocal who request to be loaded send ;; an octet with the contents 255 through ;; the aciachannel with device no 64. ;; All load communication is expected to be ;; performed trough the acia channel 64 from ;; the hclocal. ;; 2. the loading computer can then send a block ;; as octets in the following format. ;; a: every data word ( 3 octet) in the block is send in the ;; following format most significant octet first ;; least significant octet last. ;; b: the first word transferred indicate the ;; address relative to the first word transferred ;; where the loaded computer will start program ;; execution after the block transfer. ;; c: after every word received ( 3 octets), a control ;; octet is received with the value: ;; 1. control octet: 170 = 2.10101010 ;; indicating word retransmitted ok, ;; start transmission of next word. ;; 2. control octet; 85 = 2.01010101 ;; last word retransmitted ok, ;; transmission ended, start transmitted ;; program. ;; 3. control octet; 60 = 2.00111100 ;; transmission of last word not ok. ;; retransmission of word. ;; 4. control octet; 240 = 2.11110000 ;; transmission error, restart complete ;; tranmission. ;; 5. control octet; anything else. ;; stop because of error. s. a0,g40,b10,f10,d6 w. ;; a names is assembler conditions. ;; b names is labels. ;; c names is local names. ;; d names is constants. ;; f names is global names. ;; g names is global labels. d0 = 85 ;X 88 ; control octet for end transmission. d1 = 170 ;C 65 ; control octet for transmission of word ok. d2 = 60 ;E 69 ; control octet for repeat transmission of ; last 3 octets. d3 = 240 ;A 65 ; control octet for repeat complete transmission. d4 = 255 ;S 83 ; control octet for transmission start. d5 = 70 ; logical device address of loading acia. d6 = 92 ; kind of acia communication line. 0,r.256 ; dymmy load segment. k= 8 10 ; start program address. b10: ;; restart address. gg w0 66 ; wait for manuel start. al w1 d6 ; load kind of acia communication line. al w2 d5 ; load device address. jl. w3 g20. ; call reset acia. rs. w2 f4. ; save complete device address. al w0 d4 ; load message send init program. jl. w3 g27. ; send init message. al. w2 f1. ; load address of first memory address. b1: jl. w3 b0. ; wait recieve message. ls w0 16 ; shift first octet. rl w1 0 ; save first octet of load length. jl. w3 b0. ; call wait ls w0 8 ; shift. lo w1 0 ; or into the rest. jl. w3 b0. ; wait next byte. lo w1 0 ; load first byte. rs w1 x2 ; save complete data word. gp w1 64 ; show data word jl. w3 b0. ; call wait and read first control octet. se w0 d1 ; if control octet <> d1 or sn w0 d0 ; control octet <> d0 then jl. b2. ; ( if not thengoto control and store octet) sn w0 d2 ; if control octet = d2 then jl. b1. ; goto retransmission of last 3 octetts. sn w0 d3 ; if control octet = d3 then jl. b10. ; goto restart load. ;; else error stop gp w0 64 ; show received octet and jl. -2 ; stop. b2: ;; update store address and control end transmission. al w2 x2+2 ; address of next memory location. gp w2 64 ; show storage address. se w0 d0 ; if control octet is not end transmission then jl. b1. ; then goto get next data word. jl. f2. ; start load program in 4. loaded word. b0: ;; wait until recieve is ready and read data octet. ;; call: w0 = not used. ;; w1 = not used. ;; w2 = not used. ;; w3 = return address. ;; return: w0 = data octet. ;; w1 = saved. ;; w2 = saved. ;; w3 = return address. b. c10,b2 w. ds. w2 c2. ; save w1 and w2. rs. w3 c3. ; save return address. rl. w2 f4. ; load complete device address. b0: jl. w3 g23. ; read device status. se w1 6 ; if not ready ( recieve buffer full, ; transmit empty) jl. b0. ; then repeat read status. b1: jl. w3 g25. ; call read device with check. se w1 0 ; if data not read then jl. b1. ; then repeat. rs. w0 c4. ; save octet read. jl. w3 g30. ; write octet back for control. rl. w0 c4. ; restore octet. dl. w2 c2. ; else reestablish w1 and w2. jl. ( c3. ; return from subroutine. c1: 0 ; saved w1. c2: 0 ; saved w2. c3: 0 ; saved return address. c4: 0 ; saved octet read. e. ;; end wait and read. a0 = -1 ; only primitive acia procedures. p. <:hcacia:> ; load acia procedures. f4: 0 ;complete device address. ;;**f5: 2.111111110000000000000000 ; mask for most significant octet. ;;**f6: 2.000000001111111100000000 ; mask for intermidiate octet. ;;**f7: 2.000000000000000011111111 ; mask for least significant octet. f1: 0 ; first in loaded program. 0 ; 0 ; f2: 0 ; program start . e. ▶EOF◀