1
0
mirror of https://github.com/livingcomputermuseum/cpus-pdp8.git synced 2026-01-13 07:29:24 +00:00

Interim fix for disk address calculation in RKGO0, I forgot about that whole "link bit" thing and the "rotate"

thing with RTL.  Whoops.  BASIC runs a lot better now that it's not reading garbage into memory.

Things generally seem to be working.
This commit is contained in:
Josh Dersch 2019-11-15 18:53:57 -08:00
parent 9dce55ea3a
commit f25d0c95be
4 changed files with 21 additions and 14 deletions

View File

@ -1195,7 +1195,7 @@ CORIN4, TAD AXS2
JMP CORIN1
HLT /OOPS!!!
CORIN2, TAD I CORF1 /ANY EXTRA FREE CORE TO BE GENERATED?
CLA /SNA - TODO: FREE CORE MAP IS BOGUS, CLOBBERS PARTS OF FIELD 1! WHERE IS THIS DEFINED?
SNA /SNA - TODO: FREE CORE MAP IS BOGUS, CLOBBERS PARTS OF FIELD 1! WHERE IS THIS DEFINED?
JMP CORIN3
DCA AXS2
ISZ CORF1

View File

@ -41,8 +41,8 @@ F1BUF=177 /SI DDB EMPTY BLOCK POINTER
DTJOB=20 /JOB OWNING THE DECTAPE CONTROLLER
RKJOB=54 /JOB OWNING RK05 CONTROLLER
DTSI=1175 /SI TERMINATE A DECTAPE ON TIMER
DATA1=3000+DCSIZE
DEVTBL=DATA1+140
DATA1=2200+DCSIZE
DEVTBL=DATA1+140+460 /TODO: MOVE 460 TO CONSTANT FOR RKSYS
DEVTBE=DEVTBL+NULINE+NULINE+2
JOBTBL=DEVTBE+22
CLKTBL=JOBTBL+JOBMAX+1

View File

@ -26,7 +26,7 @@ RKSYS= 1 /1 IF SYSTEM USES RK05 DRIVE 0 AS SYSTEM / SWAP
PUNCH= 0 /1 IF SYSTEM INCLUDES PUNCH; 0 IF IT DOES NOT
TC01= 0 /1 IF SYSTEM INCLUDES DECTAPE(S); 0 IF IT DOES NOT
TC01= 1 /1 IF SYSTEM INCLUDES DECTAPE(S); 0 IF IT DOES NOT
RK05= 0 /NUMBER OF RK05 CARTRIDGE DISK DRIVES ON THE SYSTEM; 0 TO 4
@ -49,5 +49,5 @@ DC08LO= 0 /LOWEST HARDWARE LINE NUMBER UTILIZED ON DC08A; USUALLY 0
PT08= 0 /NUMBER OF TERMINALS INTERFACED VIA PT08 (PDP-8 & PDP-8/I ONLY)
KL8= 0 /NUMBER OF ADDITIONAL TERMINALS INTERFACED VIA KL8 (PDP-8/E ONLY, 19 MAX.)
KL8= 8 /NUMBER OF ADDITIONAL TERMINALS INTERFACED VIA KL8 (PDP-8/E ONLY, 19 MAX.)

View File

@ -2121,6 +2121,8 @@ REMJOA, REMJOB
SCHFAN, JMS I REMJOA /REMEMBER WHO'S RUNNING
SCHED /GO RUN THE PHANTOM
/TODO: UPDATE FOR RKSYS
/BOOTSTRAP FOR CRASH RECOVERY, USED TO BRING INIT INTO HIGHEST MEMORY FIELD
BOOT, CDF /IN THE (VERY RARE) EVEN THE SYSTEM
STA /SHOULD CRASH, THIS ROUTINE MAY
@ -2146,8 +2148,10 @@ BOOT, CDF /IN THE (VERY RARE) EVEN THE SYSTEM
B7751, 7751
B7750, 7750
DSKFLD,
IFZERO RKSYS <
IFZERO RF08 <CORMEM>
IFZERO RF08-40 <CORMEM+200>
IFZERO RF08-40 <CORMEM+200> >
IFNZRO RKSYS <CORMEM>
/SAVE JOB REGISTERS
/THIS ROUTINE IS USED TO SAVE THE LEVEL 2 REGISTERS
@ -7001,10 +7005,14 @@ RKGO0, 0
DCA I DSPARF
CDF 10
TAD RKOFF
CLL RTR
RTR
RTR
RTR / DIVIDE BY 256, YIELDING SECTOR # TO START THE
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
/ TRANSFER
TAD RKDSKA
DCA RKDSKA / ADD TO DISK ADDRESS
@ -7028,6 +7036,7 @@ RKGO0, 0
DSPARF, DSPAR / LOCATION OF DSPAR IN FIELD 0
*2600
/ DO RK READ/WRITE TO/FROM BUFFER, DISK ADDRESS IN RKDSKA
/ CALL DORKR
/ RK8E COMMAND WORD
@ -7042,7 +7051,6 @@ DORKO, TAD I DORKR / READ COMMAND WORD
ISZ DORKR
JMP I DORKR
*2600
/ INVOKED FROM FIELD 0 AFTER INTERRUPT SERVICING.
RKRET, 0
/ SUCCESS:
@ -7050,6 +7058,7 @@ RKRET, 0
/ THEN GO SELECT THE NEXT SECTOR.
/ OTHERWISE, USE BLT TO TRANSFER DATA FROM THE READ OPERATION FIRST
CLL CLA
DCLR
TAD RKWCPL
SNA
JMP DSRET0
@ -7123,7 +7132,7 @@ DSRNXT, / PROCESS NEXT SECTOR IF NECESSARY
/ ANY MORE DATA TO TRANSFER?
TAD RKWD
SNA
JMP DSFIN / NO: JUST RETURN.
JMP DSDONE / NO: JUST RETURN.
/ YES: MOVE TO THE NEXT SECTOR
/ TODO: IF WE WALK OFF THE END OF THE 10TH ADDRESS BIT
/ WE NEED TO OVERFLOW INTO THE 11TH BIT MANUALLY.
@ -7147,8 +7156,6 @@ DSRNXT, / PROCESS NEXT SECTOR IF NECESSARY
/ IF WE EVER HACK LARGER FILESYSTEMS
ISZ RKRET / RETURN +1, MORE TRANSFERS TO GO.
JMP DSDONE
DSFIN, CLA
DCLR / CLEAR RK8E ON COMPLETION.
DSDONE,
CDI 00 / RETURN TO FIELD 0
JMP I RKRET