A large commit.
[pdp8.git] / sw / dumprest / original / dumprx01.pal.hld
1 / RX01 DUMP
2 / This program will send a RX01 image out the console port.
3 / The format of the data sent is 0xff (0377) if no errors, or 0xfd
4 / if error followed by 1 byte track, 1 byte sector, then 128 word
5 / of data for each sector. After the last sector a 0xfe (0376) is sent
6 / with a one byte -checksum of all bytes sent.
7 / The data is read in 8 bit mode so all data on the disk is dumped.
8 / To run start at 0200.
9 / SR 10-11 should be drive #
10 / Should halt at HLT at label GDHLT with number of recoverable errors
11 / At normal exit hitting cont will restart the program
12 /
13 / If unrecoverable errors occur the program will halt, hit continue to
14 / send bad sector and continue.
15 / The PC program will print out the bad location
16 /
17 / Program uses field 0 & 1. 1 is transmit buffer
18
19 LCD=6751 / Load the command reg with AC
20 XDR=6752 / Load or read the transfer register
21 STR=6753 / Skip on transfer request flag
22 SER=6754 / Skip on error flag
23 SDN=6755 / Skip on done flag
24 INTR=6756 / AC = 0 interrupt off, 1 = on
25 INIT=6757 / Initialize RX8/RX01
26
27 INAD=030 / Address of serial input, 30 for console
28 KCF2=6000 INAD
29 KSF2=6001 INAD
30 KCC2=6002 INAD
31 KRS2=6004 INAD
32 KIE2=6005 INAD
33 KRB2=6006 INAD
34
35 OUTAD=040 / Address of serial output, 40 for console
36 TFL2=6000 OUTAD
37 TSF2=6001 OUTAD
38 TCF2=6002 OUTAD
39 TPC2=6004 OUTAD
40 TSK2=6005 OUTAD
41 TLS2=6006 OUTAD
42
43 *10
44 BUFGET, 0
45 BUFPUT, 0
46 *20
47 ERRCNT, 7760 / Stop when err count = 0, init at startup
48 DRIVE, 0 / Drive # * 20
49 DRVMSK, 60 / Mask for drive bits
50 INTLV, 2 / Interleave factor for read, 13 (15 octal) wont work
51 ERRCN2, 0 / Total # of errors
52 RDCMD,106 / 8 bit read
53 EMPCMD, 102 / 8 bit empty buffer
54 RDERR, 116 / 8 bit read error
55 M32, -32
56 M115, -115
57 K0037, 37
58 TRACK, 0
59 SECT, 0
60 SCNT, 0
61 LTRACK, 0
62 LSECT, 0
63 CURBUF, 1000 / Address to read data into
64 LSTBUF, 1000 / Address to send data from
65 BUFORG, 1000 / First buffer address
66 BUFSZ, 400
67 LOC, 0
68 LOC2, 0
69 TEMP, 0
70 MASK1, 17
71 MASK2, 360
72 FF, 377
73 FE, 376
74 FD, 375
75 CHKSUM, 0
76 IDLEFG, 0
77 DECIMAL
78 BLKSZ, -128
79 OCTAL
80 ISRAC, 0
81 ISRFLG, 0
82 LEN, 0
83 READST, 377
84 PUNF, PUN
85 SENDF, SEND
86 READF, READ
87 FINCTRK,INCTRK
88 RISR, ISR
89
90 *1
91 JMP I RISR / Interrupt handler
92
93 *1000
94 1234
95 4321
96
97 *200
98 START, CAF
99 CLA CLL OSR / Init variables changed during run
100 RTL
101 RTL
102 AND DRVMSK
103 DCA DRIVE
104 DCA TRACK
105 DCA BUFGET
106 DCA BUFPUT
107 IAC
108 DCA SECT
109 IAC
110 DCA IDLEFG
111 DCA CHKSUM
112 TAD MASK1
113 CMA
114 DCA ERRCNT
115 DCA ERRCN2
116 TAD M32
117 DCA SCNT
118 ION / Turn on serial interrupt handler
119 CLA CLL IAC / Set bit 11 to enable interrupts
120 KIE2
121 / RPE / Testing, use PTP with emulator
122 JMS RECAL
123
124 DUMP, JMS I READF / Start read operation
125 DMPLP, JMS CHKRD / Wait until done and check for errors
126 CLA
127 TAD TRACK
128 DCA LTRACK
129 TAD SECT
130 DCA LSECT
131 JMS I FINCTRK / Set read loc to next sector
132 SZA
133 JMP LAST / Last, send checksum
134 CLA
135 TAD CURBUF
136 DCA LSTBUF / Save buffer data read into for dumping
137 TAD CURBUF / And setup to read into next buffer
138 TAD BUFSZ
139 AND BUFSZ
140 TAD BUFORG
141 DCA CURBUF
142 JMS I READF / Start the read
143 JMS I SENDF / Send the last buffer
144 JMP DMPLP / And check read started etc
145
146 RECAL, 0
147 INIT
148 SDN / Done?
149 JMP .-1
150 JMP I RECAL
151 /JMP DUMP
152 BADSTA, HLT
153
154 LAST, CLA / Send FE and -checksum of all words
155 TAD CURBUF
156 DCA LSTBUF
157 JMS I SENDF
158 CLA CLL
159 TAD FE
160 JMS I PUNF
161 CLA CLL
162 TAD CHKSUM
163 CIA
164 JMS I PUNF
165 WAITEM, CLA
166 TAD BUFGET
167 CIA
168 TAD BUFPUT
169 SZA / No character waiting to send
170 JMP WAITEM
171 TAD ERRCN2 / Leave AC with # of errors
172 GDHLT, HLT / Normal halt
173 JMP START
174
175 CHKRD, 0
176 CLA CLL
177 TAD FF / Set good read flag
178 DCA READST
179 SDN / Done?
180 JMP .-1
181 CLA
182 SER / Any errors
183 SKP
184 JMP ERROR
185 CLA CLL
186 TAD CURBUF
187 DCA LOC2
188 TAD EMPCMD
189 LCD
190 ELOOP, STR
191 SKP
192 JMP EMPTY
193 SDN
194 JMP ELOOP
195 SER
196 JMP GOOD
197 / JMP ERROR
198 HLT
199 GOOD, TAD MASK1 / Reset error counter on good read
200 CMA
201 DCA ERRCNT
202 JMP I CHKRD
203 EMPTY, XDR
204 DCA I LOC2
205 ISZ LOC2
206 JMP ELOOP
207
208 JMP I CHKRD / Not executed????
209
210 ERROR, ISZ ERRCN2 / Inc total # of errors
211 ISZ ERRCNT / To many errors?
212 JMP RETRY
213 XDR / Yes, leave error in AC and halt
214 HLT / ********* Remove halt to go past errors
215 CLA
216 TAD RDERR
217 LCD
218 SDN
219 JMP .-1
220 XDR
221 HLT / ****** to here
222 JMS RECAL
223 CLA CLL
224 TAD FD / Set bad read flag
225 DCA READST
226 TAD MASK1
227 CMA
228 DCA ERRCNT
229 JMP I CHKRD
230 RETRY,
231 JMS RECAL / No, recal drive and try again
232 JMP DUMP /
233
234
235 PAGE
236 INCTRK, 0 / Increment track and exbit value for next sector
237 CLA CLL / AC non zero on return if done
238 ISZ SCNT
239 SKP
240 JMP INC2
241 TAD SECT
242 TAD INTLV
243 DCA SECT
244 TAD SECT
245 TAD M32
246 SPA SNA
247 JMP RETINC
248 DCA SECT
249 CMA
250 TAD SECT
251 SNA
252 ISZ SECT
253 RETINC, CLA
254 JMP I INCTRK
255 INC2, CLA IAC
256 DCA SECT
257 TAD M32
258 DCA SCNT
259 ISZ TRACK
260 TAD TRACK
261 TAD M115
262 SZA
263 JMP RETINC
264 CLA IAC
265 JMP I INCTRK
266
267 READ, 0
268 CLA CLL / Standard read from manual
269 TAD RDCMD
270 TAD DRIVE
271 LCD
272 STR
273 JMP .-1
274 TAD SECT
275 XDR
276 STR
277 JMP .-1
278 CLA
279 TAD TRACK
280 XDR
281 JMP I READ
282
283 SEND, 0
284 CLA CLL
285 TAD LSTBUF
286 DCA LOC
287 TAD BLKSZ
288 DCA LEN
289 CLA CLL
290 TAD READST
291 JMS PUN
292 TAD LTRACK
293 JMS PUN
294 TAD LSECT
295 JMS PUN
296 OUT, CLA CLL
297 TAD I LOC
298 JMS PUN
299 ISZ LOC
300 ISZ LEN
301 JMP OUT
302 JMP I SEND
303
304 PUN, 0
305 DCA TEMP
306 PUNLP, TAD BUFPUT / Room for another character?
307 IAC
308 CIA
309 TAD BUFGET
310 SNA
311 JMP PUNLP / No, try again
312 CLA
313 TAD TEMP
314 CDF 10
315 DCA I BUFPUT
316 TAD TEMP
317 AND FF
318 TAD CHKSUM
319 DCA CHKSUM
320 IOF
321 TAD IDLEFG
322 SNA
323 JMP PUNOK
324 CLA
325 DCA IDLEFG
326 TAD I BUFGET
327 TLS2 / Send character
328 / PLS / PTP
329 PUNOK, ION
330 CLA
331 CDF 0
332 JMP I PUN
333
334 PAGE
335 ISR, DCA ISRAC / Save AC
336 GTF
337 DCA ISRFLG / And flags
338 CDF 10 / Buffer in field 1
339 TSF2 / Ready to send
340 / PSF / PTP
341 JMP IRET / No, not our interrupt
342 TAD BUFGET
343 CIA
344 TAD BUFPUT
345 SNA / No character waiting to send
346 JMP IEMPTY
347 CLA
348 TAD I BUFGET
349 TLS2 / Send character
350 / PLS / PTP
351 IRET, CLA
352 TAD ISRFLG
353 RTF
354 CLA
355 TAD ISRAC
356 JMP I 0
357 IEMPTY, CLA IAC
358 DCA IDLEFG
359 TCF2 / Clear interrupt
360 / PCF / PTP
361 JMP IRET
362 $