1
0
mirror of https://github.com/livingcomputermuseum/cpus-pdp8.git synced 2026-01-13 15:37:04 +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 JMP CORIN1
HLT /OOPS!!! HLT /OOPS!!!
CORIN2, TAD I CORF1 /ANY EXTRA FREE CORE TO BE GENERATED? 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 JMP CORIN3
DCA AXS2 DCA AXS2
ISZ CORF1 ISZ CORF1

View File

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