1
0
mirror of https://github.com/livingcomputermuseum/cpus-pdp8.git synced 2026-01-12 00:12:44 +00:00

Fixed issue with track # translation to RK8E disk address for one of the two swap paths; this was causing

the bizarre behavior when TSS/8 ran out of core.  Some minor cleanup.
This commit is contained in:
Frank 2019-11-17 00:54:33 -08:00
parent ea7b705dc0
commit 90c4ec6687

View File

@ -4029,7 +4029,7 @@ TRAC, 0
IFZERO RF08-40< CLL RTL;RTL;RTL >/TRACK # IN POSITION 0X00 FOR DF32
>
IFNZRO RKSYS <
CLL RTL; RAL /TRACK # IN POSITION 000|XXX|XX0|000
CLL RTL; RTL /TRACK # IN POSITION 000|XXX|XX0|000
/FOR RK8E (HEAD + 4 BITS OF CYL)
>
JMP I TRAC /RETURN
@ -7000,14 +7000,11 @@ RKGO0, 0
DCA I DSPARF
CDF 10
TAD RKOFF
CLL RAR / TODO: GOTTA BE A BETTER WAY
CLL RAR
CLL RAR
CLL RAR
CLL RAR
CLL RAR
CLL RAR
CLL RAR / DIVIDE BY 256, YIELDING SECTOR # TO START THE
AND K7400 / MASK TOP 4 BITS SO WE DON'T TOGGLE THE LINK
CLL RTR
RTR
RTR
RTR / DIVIDE BY 256, YIELDING SECTOR # TO START THE
/ TRANSFER
TAD RKDSKA
DCA RKDSKA / ADD TO DISK ADDRESS
@ -7063,8 +7060,7 @@ RKRET, 0
/ BLT: CALCULATE THE NUMBER OF WORDS TO TRANSFER; THIS IS AT MOST
/ 256 WORDS (ONE RK05 SECTOR), AT MINIMUM 1 WORD.
DSRET0, CLL CLA
TAD RKOFF
DSRET0, TAD RKOFF
CMA IAC
TAD K0400 / SUBTRACT SECTOR OFFSET FROM 256 TO DETERMINE
DCA RKXWC / MAX TRANSFER COUNT.
@ -7080,7 +7076,6 @@ DSRET0, CLL CLA
DSRET1, CLL CLA
TAD RKWD / FEWER THAN MAX WORDS, COPY THE REMAINDER
DSRET2, DCA RKXWC
TAD RKEMA / USER FIELD
DCA UDF1+1
CMA CLA
@ -7090,14 +7085,12 @@ DSRET2, DCA RKXWC
TAD RKOFF
TAD RKBLKA / DATFLD POINTER - 1
DCA A17
TAD RKWRI / IS THIS A WRITE?
SNA
JMP DSRET3 / NO
STL CLA / YES: SET LINK (FROM USER TO DATFLD FOR BLTF1)
JMP DSBL
DSRET3, CLL CLA
DSRET3, CLL CLA / NO: CLEAR LINK (FROM DATFLD TO USER)
DSBL, TAD RKXWC / -WC TO AC
/ DO THE TRANSFER
JMS BLTF1
@ -7117,6 +7110,8 @@ DSBL, TAD RKXWC / -WC TO AC
JMP DSNDON / DONE FOR NOW.
DSRNXT, / PROCESS NEXT SECTOR IF NECESSARY
/ TODO: THIS NEEDS TO BE REFACTORED TO ALLOW RETRYING OPERATIONS
/ AFTER DISC ERRORS.
CLA
TAD RKXWC
CMA IAC