Add README.md
[pdp8.git] / sw / dumprest / hachti_std / console / console-READR0.PA
CommitLineData
81e70d48
PH
1/ RK05 DUMP Program
2/ This program will send a RK05 image out the console port.
3/ The format of the data sent is 0xff (0377) or 0xfd if read error
4/ followed by 256 word of data for each sector.
5/ After the last sector a 0xfe (0376) is sent
6/ with a two byte checksum, low 8 bits first then upper 4.
7/ The words in a sector are sent as three bytes for each 2 words.
8/ 1 = low 8 bits first word
9/ 2 = upper 4 bits first and lower 4 bits second
10/ 3 = upper 8 bits second word
11/
12/ The program (PC) receiving the data should be started before this program
13/
14/ To run start at 0200.
15/ The SR should have the drive # is 9-11
16/ Should halt at label finish with number of recoverable errors in AC
17/ At normal exit hitting cont will restart the program
18/ The current location being read will be displayed in the AC
19/ while running. It is (cylinder * 16 + sector) / 2
20
21/ If a unrecoverable error occurs the program will halt with the error in
22/ the AC. Hit continue to dump more or comment out hlt, search for *****.
23/ The PC program will print out the bad location if an error occurs
24
25 DSKP=6741
26 DCLR=6742
27 DLAG=6743
28 DLCA=6744
29 DRST=6745
30 DLDC=6746
31
32 INAD=30 / Address of serial input, 30 for console
33 KCF2=6000 INAD
34 KSF2=6001 INAD
35 KCC2=6002 INAD
36 KRS2=6004 INAD
37 KIE2=6005 INAD
38 KRB2=6006 INAD
39
40 OUTAD=40 / Address of serial output, 40 for console
41 TFL2=6000 OUTAD
42 TSF2=6001 OUTAD
43 TCF2=6002 OUTAD
44 TPC2=6004 OUTAD
45 TSK2=6005 OUTAD
46 TLS2=6006 OUTAD
47
48 *20
49ERRCNT, 7760 / Stop when err count = 0, init at startup
50DRIVE, 0 / Drive # * 2
51ERRCN2, 0 / Total # of errors
52RETCNT, 200 / Max retries
53K0200, 0200
54K4000, 4000
55FLD, 0
56TRACK, 0
57EXBIT, 0
58CURBUF, 1000 / Address to read data into
59LSTBUF, 1000 / Address to send data from
60BUFORG, 1000 / First buffer address
61BUFSZ, 400
62MAXTRK, 4537
63REDDAT, 0000
64LOC, 0
65TEMP, 0
66MASK1, 17
67MASK2, 360
68FF, 377
69FE, 376
70FD, 375
71K6, 6
72CHKSUM, 0
73 DECIMAL
74BLKSZ, -128
75 OCTAL
76LEN, 0
77READST, 377
78PUNF, PUN
79SENDF, SEND
80READF, READ
81
82 *1000
83 1234
84 4321
85
86 *200
87START, CAF
88 CLA CLL / OSR / Init variables changed during run
89/ RAL
90/ AND K6 / Clear out high bits such as 0200 start address
91/ DCA DRIVE
92 DCA TRACK
93 DCA EXBIT
94 DCA CHKSUM
95 TAD RETCNT
96 CMA
97 DCA ERRCNT
98 DCA ERRCN2
99 JMS RECAL
100
101DUMP, JMS I READF / Start read operation
102DMPLP, JMS CHKRD / Wait until done and check for errors
103 JMS INCTRK / Set read loc to next sector
104 SZA
105 JMP LAST / Last, send checksum
106 CLA
107 TAD CURBUF
108 DCA LSTBUF / Save buffer data read into for dumping
109 TAD CURBUF / And setup to read into next buffer
110 TAD BUFSZ
111 AND BUFSZ
112 TAD BUFORG
113 DCA CURBUF
114 JMS I READF / Start the read
115 JMS I SENDF / Send the last buffer
116 JMP DMPLP / And check read started etc
117
118RECAL, 0
119 CLA CLL IAC / Recal drive, clear errors and set to cyl 0
120 DCLR / From manual
121 TAD DRIVE
122 DLDC
123 CLA CLL CML RTL
124 DCLR
125 DSKP
126 JMP .-1
127 TAD K0200
128 TAD DRIVE
129 DLDC
130 DSKP
131 JMP .-1
132 DRST
133 CIA
134 TAD K4000
135 SZA CLA
136 JMP BADSTA
137 JMP I RECAL
138 /JMP DUMP
139BADSTA, HLT
140
141LAST, CLA / Send FE and -checksum of all words
142 TAD CURBUF
143 DCA LSTBUF
144 JMS I SENDF
145 CLA CLL
146 TAD FE
147 JMS I PUNF
148 CLA CLL
149 TAD CHKSUM
150 CIA
151 JMS I PUNF
152 CLA CLL
153 TAD CHKSUM
154 CIA
155 RTL
156 RTL
157 RAL
158 AND MASK1
159 JMS I PUNF
160 CLA
161 TAD ERRCN2 / Leave AC with # of errors
162FINISH,
163 JMP I XFINI
164XFINI, FINI
165
166/ HLT / Normal good halt
167/ JMP START / And restart if requested
168
169 / REBOOT FROM RK05
170BO1, 6743
171BO2, JMP 31
172
173CHKRD, 0
174 CLA CLL
175 TAD FF / Set good read flag
176 DCA READST
177 CLA CLL / Display address reading in AC
178 TAD EXBIT
179 RAR
180 TAD TRACK
181 RAR
182 DSKP / Done?
183 JMP .-1
184 DRST / Any errors
185 CIA
186 TAD K4000
187 SZA CLA
188 JMP ERROR
189 TAD RETCNT / Reset error counter for next read
190 CMA
191 DCA ERRCNT
192 JMP I CHKRD
193
194ERROR, ISZ ERRCN2 / Inc total # of errors
195 ISZ ERRCNT / To many errors?
196 JMP RETRY
197 DRST / Yes, leave error in AC and halt
198/ HLT / ********* Put in to halt on errors
199 JMS RECAL
200 CLA CLL
201 TAD FD / Set bad read flag
202 DCA READST
203 TAD RETCNT / Reset error counter for next read
204 CMA
205 DCA ERRCNT
206 JMP I CHKRD
207RETRY,
208 JMS RECAL / No, recal drive and try again
209 JMP DUMP /
210
211
212INCTRK, 0 / Increment track and exbit value for next sector
213 CLA CLL / AC non zero on return if done
214 TAD EXBIT
215 SZA
216 JMP CHKCYL
217INC2, ISZ TRACK
218 JMP I INCTRK
219 ISZ EXBIT
220 JMP I INCTRK
221 HLT
222CHKCYL, CLA
223 TAD TRACK
224 CIA
225 TAD MAXTRK
226 SNA
227 JMP FIN
228 CLA
229 JMP INC2
230FIN, CLA IAC
231 JMP I INCTRK
232
233 PAGE
234READ, 0
235 CLA CLL IAC / Standard read from manual
236 DCLR
237 TAD CURBUF
238 DLCA
239 TAD DRIVE
240 TAD REDDAT
241 TAD FLD
242 TAD EXBIT
243 DLDC
244 TAD TRACK / Display address reading in AC
245 DLAG
246 JMP I READ
247
248SEND, 0 / Send data, each sector starts with FF
249 CLA CLL / then 2 12 bit words in 3 bytes
250 TAD LSTBUF
251 DCA LOC
252 TAD BLKSZ
253 DCA LEN
254 CLA CLL
255 TAD READST
256 JMS PUN
257OUT, CLA CLL
258 TAD I LOC
259 TAD CHKSUM / Keep checksum of all words sent
260 DCA CHKSUM
261 TAD I LOC
262 JMS PUN
263 CLA CLL
264 TAD I LOC
265 RTL / Shift top 4 bits to low 4
266 RTL
267 RAL
268 AND MASK1
269 DCA TEMP
270 ISZ LOC
271 TAD I LOC
272 TAD CHKSUM
273 DCA CHKSUM
274 TAD I LOC
275 RTL
276 RTL
277 AND MASK2
278 TAD TEMP
279 JMS PUN
280 CLA CLL
281 TAD I LOC
282 RTR
283 RTR
284 JMS PUN
285 ISZ LOC
286 ISZ LEN
287 JMP OUT
288 JMP I SEND
289
290PUN, 0
291/ PLS / Punch for testing with emulator
292 TLS2 / Send out console
293 CLA CLL
294 TAD EXBIT
295 RAR
296 TAD TRACK
297 RAR
298/ PSF
299 TSF2 /Wait until character sent
300 JMP .-1
301 JMP I PUN
302
303/ OLD ROUTINE, COLD RK05 REBOOT
304/OFINI, CLA
305/ TAD BO1
306/ DCA 30
307/ TAD BO2
308/ DCA 31
309/ CAF
310/ JMP 30
311
312*7600
313FINI,
314 HLT
315 JMP I K200
316K200, 200
317
318 $