Commit | Line | Data |
---|---|---|
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=400 / 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=410 / 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 | |
49 | ERRCNT, 7760 / Stop when err count = 0, init at startup | |
50 | DRIVE, 0 / Drive # * 2 | |
51 | ERRCN2, 0 / Total # of errors | |
52 | RETCNT, 200 / Max retries | |
53 | K0200, 0200 | |
54 | K4000, 4000 | |
55 | FLD, 0 | |
56 | TRACK, 0 | |
57 | EXBIT, 0 | |
58 | CURBUF, 1000 / Address to read data into | |
59 | LSTBUF, 1000 / Address to send data from | |
60 | BUFORG, 1000 / First buffer address | |
61 | BUFSZ, 400 | |
62 | MAXTRK, 4537 | |
63 | REDDAT, 0000 | |
64 | LOC, 0 | |
65 | TEMP, 0 | |
66 | MASK1, 17 | |
67 | MASK2, 360 | |
68 | FF, 377 | |
69 | FE, 376 | |
70 | FD, 375 | |
71 | K6, 6 | |
72 | CHKSUM, 0 | |
73 | DECIMAL | |
74 | BLKSZ, -128 | |
75 | OCTAL | |
76 | LEN, 0 | |
77 | READST, 377 | |
78 | PUNF, PUN | |
79 | SENDF, SEND | |
80 | READF, READ | |
81 | ||
82 | *1000 | |
83 | 1234 | |
84 | 4321 | |
85 | ||
86 | *200 | |
87 | START, 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 | ||
101 | DUMP, JMS I READF / Start read operation | |
102 | DMPLP, 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 | ||
118 | RECAL, 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 | |
139 | BADSTA, HLT | |
140 | ||
141 | LAST, 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 | |
162 | FINISH, | |
163 | JMP I XFINI | |
164 | XFINI, FINI | |
165 | ||
166 | / HLT / Normal good halt | |
167 | / JMP START / And restart if requested | |
168 | ||
169 | / REBOOT FROM RK05 | |
170 | BO1, 6743 | |
171 | BO2, JMP 31 | |
172 | ||
173 | CHKRD, 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 | ||
194 | ERROR, 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 | |
207 | RETRY, | |
208 | JMS RECAL / No, recal drive and try again | |
209 | JMP DUMP / | |
210 | ||
211 | ||
212 | INCTRK, 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 | |
217 | INC2, ISZ TRACK | |
218 | JMP I INCTRK | |
219 | ISZ EXBIT | |
220 | JMP I INCTRK | |
221 | HLT | |
222 | CHKCYL, CLA | |
223 | TAD TRACK | |
224 | CIA | |
225 | TAD MAXTRK | |
226 | SNA | |
227 | JMP FIN | |
228 | CLA | |
229 | JMP INC2 | |
230 | FIN, CLA IAC | |
231 | JMP I INCTRK | |
232 | ||
233 | PAGE | |
234 | READ, 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 | ||
248 | SEND, 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 | |
257 | OUT, 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 | ||
290 | PUN, 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 | |
313 | FINI, | |
314 | HLT | |
315 | JMP I K200 | |
316 | K200, 200 | |
317 | ||
318 | $ |