| 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 | $ |