Commit | Line | Data |
---|---|---|
81e70d48 PH |
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 | $ |