X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fdumprest%2Foriginal%2Fdumprx01.pal.hld;fp=sw%2Fdumprest%2Foriginal%2Fdumprx01.pal.hld;h=14e190c124be1deb32bdaf715bcfa43ce2963a64;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git diff --git a/sw/dumprest/original/dumprx01.pal.hld b/sw/dumprest/original/dumprx01.pal.hld new file mode 100644 index 0000000..14e190c --- /dev/null +++ b/sw/dumprest/original/dumprx01.pal.hld @@ -0,0 +1,362 @@ +/ RX01 DUMP +/ This program will send a RX01 image out the console port. +/ The format of the data sent is 0xff (0377) if no errors, or 0xfd +/ if error followed by 1 byte track, 1 byte sector, then 128 word +/ of data for each sector. After the last sector a 0xfe (0376) is sent +/ with a one byte -checksum of all bytes sent. +/ The data is read in 8 bit mode so all data on the disk is dumped. +/ To run start at 0200. +/ SR 10-11 should be drive # +/ Should halt at HLT at label GDHLT with number of recoverable errors +/ At normal exit hitting cont will restart the program +/ +/ If unrecoverable errors occur the program will halt, hit continue to +/ send bad sector and continue. +/ The PC program will print out the bad location +/ +/ Program uses field 0 & 1. 1 is transmit buffer + + LCD=6751 / Load the command reg with AC + XDR=6752 / Load or read the transfer register + STR=6753 / Skip on transfer request flag + SER=6754 / Skip on error flag + SDN=6755 / Skip on done flag + INTR=6756 / AC = 0 interrupt off, 1 = on + INIT=6757 / Initialize RX8/RX01 + + INAD=030 / Address of serial input, 30 for console + KCF2=6000 INAD + KSF2=6001 INAD + KCC2=6002 INAD + KRS2=6004 INAD + KIE2=6005 INAD + KRB2=6006 INAD + + OUTAD=040 / Address of serial output, 40 for console + TFL2=6000 OUTAD + TSF2=6001 OUTAD + TCF2=6002 OUTAD + TPC2=6004 OUTAD + TSK2=6005 OUTAD + TLS2=6006 OUTAD + + *10 +BUFGET, 0 +BUFPUT, 0 + *20 +ERRCNT, 7760 / Stop when err count = 0, init at startup +DRIVE, 0 / Drive # * 20 +DRVMSK, 60 / Mask for drive bits +INTLV, 2 / Interleave factor for read, 13 (15 octal) wont work +ERRCN2, 0 / Total # of errors +RDCMD,106 / 8 bit read +EMPCMD, 102 / 8 bit empty buffer +RDERR, 116 / 8 bit read error +M32, -32 +M115, -115 +K0037, 37 +TRACK, 0 +SECT, 0 +SCNT, 0 +LTRACK, 0 +LSECT, 0 +CURBUF, 1000 / Address to read data into +LSTBUF, 1000 / Address to send data from +BUFORG, 1000 / First buffer address +BUFSZ, 400 +LOC, 0 +LOC2, 0 +TEMP, 0 +MASK1, 17 +MASK2, 360 +FF, 377 +FE, 376 +FD, 375 +CHKSUM, 0 +IDLEFG, 0 + DECIMAL +BLKSZ, -128 + OCTAL +ISRAC, 0 +ISRFLG, 0 +LEN, 0 +READST, 377 +PUNF, PUN +SENDF, SEND +READF, READ +FINCTRK,INCTRK +RISR, ISR + + *1 + JMP I RISR / Interrupt handler + + *1000 + 1234 + 4321 + + *200 +START, CAF + CLA CLL OSR / Init variables changed during run + RTL + RTL + AND DRVMSK + DCA DRIVE + DCA TRACK + DCA BUFGET + DCA BUFPUT + IAC + DCA SECT + IAC + DCA IDLEFG + DCA CHKSUM + TAD MASK1 + CMA + DCA ERRCNT + DCA ERRCN2 + TAD M32 + DCA SCNT + ION / Turn on serial interrupt handler + CLA CLL IAC / Set bit 11 to enable interrupts + KIE2 +/ RPE / Testing, use PTP with emulator + JMS RECAL + +DUMP, JMS I READF / Start read operation +DMPLP, JMS CHKRD / Wait until done and check for errors + CLA + TAD TRACK + DCA LTRACK + TAD SECT + DCA LSECT + JMS I FINCTRK / Set read loc to next sector + SZA + JMP LAST / Last, send checksum + CLA + TAD CURBUF + DCA LSTBUF / Save buffer data read into for dumping + TAD CURBUF / And setup to read into next buffer + TAD BUFSZ + AND BUFSZ + TAD BUFORG + DCA CURBUF + JMS I READF / Start the read + JMS I SENDF / Send the last buffer + JMP DMPLP / And check read started etc + +RECAL, 0 + INIT + SDN / Done? + JMP .-1 + JMP I RECAL + /JMP DUMP +BADSTA, HLT + +LAST, CLA / Send FE and -checksum of all words + TAD CURBUF + DCA LSTBUF + JMS I SENDF + CLA CLL + TAD FE + JMS I PUNF + CLA CLL + TAD CHKSUM + CIA + JMS I PUNF +WAITEM, CLA + TAD BUFGET + CIA + TAD BUFPUT + SZA / No character waiting to send + JMP WAITEM + TAD ERRCN2 / Leave AC with # of errors +GDHLT, HLT / Normal halt + JMP START + +CHKRD, 0 + CLA CLL + TAD FF / Set good read flag + DCA READST + SDN / Done? + JMP .-1 + CLA + SER / Any errors + SKP + JMP ERROR + CLA CLL + TAD CURBUF + DCA LOC2 + TAD EMPCMD + LCD +ELOOP, STR + SKP + JMP EMPTY + SDN + JMP ELOOP + SER + JMP GOOD +/ JMP ERROR + HLT +GOOD, TAD MASK1 / Reset error counter on good read + CMA + DCA ERRCNT + JMP I CHKRD +EMPTY, XDR + DCA I LOC2 + ISZ LOC2 + JMP ELOOP + + JMP I CHKRD / Not executed???? + +ERROR, ISZ ERRCN2 / Inc total # of errors + ISZ ERRCNT / To many errors? + JMP RETRY + XDR / Yes, leave error in AC and halt + HLT / ********* Remove halt to go past errors + CLA + TAD RDERR + LCD + SDN + JMP .-1 + XDR + HLT / ****** to here + JMS RECAL + CLA CLL + TAD FD / Set bad read flag + DCA READST + TAD MASK1 + CMA + DCA ERRCNT + JMP I CHKRD +RETRY, + JMS RECAL / No, recal drive and try again + JMP DUMP / + + + PAGE +INCTRK, 0 / Increment track and exbit value for next sector + CLA CLL / AC non zero on return if done + ISZ SCNT + SKP + JMP INC2 + TAD SECT + TAD INTLV + DCA SECT + TAD SECT + TAD M32 + SPA SNA + JMP RETINC + DCA SECT + CMA + TAD SECT + SNA + ISZ SECT +RETINC, CLA + JMP I INCTRK +INC2, CLA IAC + DCA SECT + TAD M32 + DCA SCNT + ISZ TRACK + TAD TRACK + TAD M115 + SZA + JMP RETINC + CLA IAC + JMP I INCTRK + +READ, 0 + CLA CLL / Standard read from manual + TAD RDCMD + TAD DRIVE + LCD + STR + JMP .-1 + TAD SECT + XDR + STR + JMP .-1 + CLA + TAD TRACK + XDR + JMP I READ + +SEND, 0 + CLA CLL + TAD LSTBUF + DCA LOC + TAD BLKSZ + DCA LEN + CLA CLL + TAD READST + JMS PUN + TAD LTRACK + JMS PUN + TAD LSECT + JMS PUN +OUT, CLA CLL + TAD I LOC + JMS PUN + ISZ LOC + ISZ LEN + JMP OUT + JMP I SEND + +PUN, 0 + DCA TEMP +PUNLP, TAD BUFPUT / Room for another character? + IAC + CIA + TAD BUFGET + SNA + JMP PUNLP / No, try again + CLA + TAD TEMP + CDF 10 + DCA I BUFPUT + TAD TEMP + AND FF + TAD CHKSUM + DCA CHKSUM + IOF + TAD IDLEFG + SNA + JMP PUNOK + CLA + DCA IDLEFG + TAD I BUFGET + TLS2 / Send character +/ PLS / PTP +PUNOK, ION + CLA + CDF 0 + JMP I PUN + + PAGE +ISR, DCA ISRAC / Save AC + GTF + DCA ISRFLG / And flags + CDF 10 / Buffer in field 1 + TSF2 / Ready to send +/ PSF / PTP + JMP IRET / No, not our interrupt + TAD BUFGET + CIA + TAD BUFPUT + SNA / No character waiting to send + JMP IEMPTY + CLA + TAD I BUFGET + TLS2 / Send character +/ PLS / PTP +IRET, CLA + TAD ISRFLG + RTF + CLA + TAD ISRAC + JMP I 0 +IEMPTY, CLA IAC + DCA IDLEFG + TCF2 / Clear interrupt +/ PCF / PTP + JMP IRET + $