mirror of
https://github.com/livingcomputermuseum/cpus-pdp8.git
synced 2026-01-12 00:12:44 +00:00
Bugfixes, getting closer.
This commit is contained in:
parent
f963522e53
commit
8d867d46be
@ -41,7 +41,7 @@ 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=2200+DCSIZE
|
||||
DATA1=3000+DCSIZE
|
||||
DEVTBL=DATA1+140
|
||||
DEVTBE=DEVTBL+NULINE+NULINE+2
|
||||
JOBTBL=DEVTBE+22
|
||||
|
||||
@ -5362,7 +5362,6 @@ DSTRYA, 0
|
||||
DCA I DSWATA
|
||||
CLA CMA
|
||||
TAD DSPARM
|
||||
DCA DSPAR
|
||||
CDI 10 /CHANGE TO DF/IF 1
|
||||
JMS RKGO0 /GO OFF TO FIELD 1 WHERE WE HAVE SPACE, SO MUCH SPACE.
|
||||
JMP I DSTRYA
|
||||
@ -5377,16 +5376,23 @@ DSERRX, TAD DSGO0 /POSSIBLY AN EAE JOB TO GO TO SLEEP
|
||||
DISMIS
|
||||
|
||||
/ RETURN HERE AFTER INTERRUPT SERVICING.
|
||||
/ TODO: HANDLE THIS AS W/SWAP CODE: MOVE TO NEXT SECTOR, REPEAT, ETC.
|
||||
DSRET, JMP DSERR1 /ERROR
|
||||
IFNZRO RKSYS <
|
||||
/ SUCCESS: JUMP TO ROUTINE IN FIELD 1 TO TRANSFER DATA.
|
||||
/ TODO: NEED TO STOW AC HERE
|
||||
CDI 10 /CHANGE TO DF/IF 1
|
||||
JMS RKRET
|
||||
/ RESTORE AC HERE
|
||||
CDI 10 / CHANGE TO DF/IF 1
|
||||
JMS RKRET / RETURNS TO NEXT INSTRUCTION
|
||||
/ WHEN TRANSFER IS COMPLETE,
|
||||
/ INSTRUCTION AFTER IF MORE SECTORS
|
||||
/ ARE PENDING
|
||||
JMP FOK
|
||||
JMP OK / STILL MORE TO DO, DO NOT
|
||||
/ WRITE DSPAR
|
||||
FOK, IAC
|
||||
JMP DSGBAD / FINISH THINGS UP.
|
||||
>
|
||||
IFZERO RKSYS <
|
||||
IAC
|
||||
>
|
||||
DSGBAD, DATFLD
|
||||
TAD I DSPAR
|
||||
IFZERO RKSYS <
|
||||
@ -5404,9 +5410,11 @@ C0500, 500
|
||||
C0017, 17 /MASK FOR SECTOR BITS
|
||||
C4400, 4400
|
||||
|
||||
IFZERO RKSYS <
|
||||
*7750
|
||||
DSWC, DSMA /FOR LOADING INTO FIELD 0 ON INITIALIZATION
|
||||
DSMA, DSMA /(SINCE THE 4K TRANSFER OVERWRITES THE DATA BREAK LOCATIONS)
|
||||
>
|
||||
SLEEPA, SLEEP
|
||||
DSERRI, 0
|
||||
0 /FOR DECTAPE SERVICE
|
||||
@ -6934,37 +6942,7 @@ DISPL1, LAS /WHAT WAS THAT FIELD AGAIN?
|
||||
JMP DISFLD-1 /NOW GO LOOK
|
||||
|
||||
|
||||
DEVDMB= JOBTBL-2
|
||||
*DEVTBL-1
|
||||
DEVDMB /DUMMY USED BY FIP RELEASE
|
||||
ZBLOCK DEVTBE-DEVTBL
|
||||
0 /WE ALLOW THE READER EVEN IF NOT CONFIGURED FOR ONE
|
||||
/THIS ALLOWS FIELD SERVICE TO USE THEIR PMK01
|
||||
IFZERO PUNCH <DEVDMB>
|
||||
IFNZRO PUNCH <0>
|
||||
DEVDMB
|
||||
IFZERO LPT <DEVDMB>
|
||||
IFNZRO LPT <0>
|
||||
IFZERO CDR <DEVDMB>
|
||||
IFNZRO CDR <0>
|
||||
IFZERO TC01 <DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB>
|
||||
IFNZRO TC01 <ZBLOCK 10>
|
||||
IFNZRO RK05 <ZBLOCK RK05>
|
||||
IFNZRO .-JOBTBL+1 <DEVDMB>
|
||||
IFNZRO .-JOBTBL+1 <DEVDMB>
|
||||
IFNZRO .-JOBTBL+1 <DEVDMB>
|
||||
IFNZRO .-JOBTBL+1 <DEVDMB>
|
||||
-1 /TERMINATES ASSIGNABLE DEVICE TABLE
|
||||
|
||||
/JOBTBL, CLKTBL, TTYTBL, PRGTBL, & DSUTBL ARE SET UP BY INIT
|
||||
*6500
|
||||
*2400
|
||||
IFNZRO RKSYS <
|
||||
|
||||
RKGO0, 0
|
||||
@ -6979,32 +6957,44 @@ RKGO0, 0
|
||||
/ WHEN DONE, SET STATUS, CLEAR DISK REGS, ETC.
|
||||
/ WHEW.
|
||||
|
||||
/AC HAS PTR TO DSPAR.
|
||||
/GRAB PARAMETERS AND TRANSLATE, STORE LOCALLY FOR REUSE DURING INTERRUPT
|
||||
/SERVICING.
|
||||
TAD I DSPAR / FUNCTION
|
||||
AND C0004 / MASK BIT 9 (DIFFERENTIATES DMAR FROM DMAW)
|
||||
DCA A16 / STOW DSPAR IN A16 (USED BY BLTF1, WE SHOULD
|
||||
/ NOT CONFLICT, FINGERS CROSSED.)
|
||||
TAD I A16 / FUNCTION
|
||||
AND K0004 / MASK BIT 9 (DIFFERENTIATES DMAR FROM DMAW)
|
||||
DCA RKWRI / STOW COMMAND FOR NOW
|
||||
TAD I DSPAR / DF32 DISC EXTENSION TRANSLATES DIRECTLY TO
|
||||
TAD I A16 / DF32 DISC EXTENSION TRANSLATES DIRECTLY TO
|
||||
/ TRACK # BUT IS FOR SOME REASON SHIFTED LEFT
|
||||
/ TWO BITS IN THE PARAMETER WORD
|
||||
CLL RTL / ALIGN WITH RK8E CYLINDER ADDRESS + SURFACE BIT
|
||||
/ (BITS 0-7)
|
||||
DCA RKDSKA / STOW FOR NOW
|
||||
TAD I DSPAR / MEMORY FIELD (IN BITS 7-9).
|
||||
TAD C6201 / MAKE INTO CDF
|
||||
TAD I A16 / MEMORY FIELD (IN BITS 7-9).
|
||||
CLL RAL / MOVE TO 6-8.
|
||||
AND K0070
|
||||
TAD K6201 / MAKE INTO CDF
|
||||
DCA RKEMA
|
||||
TAD I DSPAR / -WORD COUNT. STORE FOR FUTURE REFERENCE.
|
||||
TAD I A16 / -WORD COUNT. STORE FOR FUTURE REFERENCE.
|
||||
/ THIS WILL ALWAYS BE AT LEAST ONE WORD.
|
||||
DCA RKWD
|
||||
TAD I DSPAR / CORE ADDRESS
|
||||
TAD I A16 / CORE ADDRESS - 1
|
||||
IAC
|
||||
DCA RKADDR / STORE; WE WILL BE MANUALLY TRANSFERRING
|
||||
/ DATA TO/FROM THIS ADDRESS USING BLT.
|
||||
|
||||
TAD I DSPAR / DISK ADDRESS:
|
||||
TAD I A16 / DISK ADDRESS:
|
||||
/ THE ADDRESS (12 BITS) IN THE TRACK TO START
|
||||
/ THE TRANSFER TO/FROM
|
||||
|
||||
DCA RKOFF / STORE OFFSET
|
||||
|
||||
TAD A16 / COPY OUR INDEX BACK TO FIELD 0 (DSPAR)
|
||||
/ SO THAT THE TWO ARE IN SYNC
|
||||
CDF 00
|
||||
DCA I DSPARF
|
||||
CDF 10
|
||||
TAD RKOFF
|
||||
CLL RTR
|
||||
RTR
|
||||
@ -7014,7 +7004,7 @@ RKGO0, 0
|
||||
TAD RKDSKA
|
||||
DCA RKDSKA / ADD TO DISK ADDRESS
|
||||
TAD RKOFF
|
||||
AND C0377 / MASK OFF OFFSET WITHIN SECTOR
|
||||
AND K0377 / MASK OFF OFFSET WITHIN SECTOR
|
||||
DCA RKOFF /
|
||||
|
||||
/ OK - REGARDLESS OF WHETHER THIS IS ULTIMATELY
|
||||
@ -7028,9 +7018,11 @@ RKGO0, 0
|
||||
0410 / READ W/INTERRUPT INTO FIELD 1
|
||||
/ TODO: NEED TO INTEGRATE DISK ADDRESS BIT 11
|
||||
/ IF WE EVER HACK LARGER FILESYSTEMS
|
||||
CDF / BACK TO DATA FIELD 0
|
||||
CDI / BACK TO FIELD 0
|
||||
JMP I RKGO0 / DONE FOR NOW
|
||||
|
||||
DSPARF, DSPAR / LOCATION OF DSPAR IN FIELD 0
|
||||
|
||||
/ DO RK READ/WRITE TO/FROM BUFFER, DISK ADDRESS IN RKDSKA
|
||||
/ CALL DORKR
|
||||
/ RK8E COMMAND WORD
|
||||
@ -7042,10 +7034,9 @@ DORKO, TAD I DORKR / READ COMMAND WORD
|
||||
DLDC
|
||||
TAD RKDSKA / SECTOR / TRACK ADDRESS
|
||||
DLAG / AND GO! DO IT!
|
||||
ISZ DORKR
|
||||
JMS I DORKR
|
||||
|
||||
*7000
|
||||
*2600
|
||||
/ INVOKED FROM FIELD 0 AFTER INTERRUPT SERVICING.
|
||||
RKRET, 0
|
||||
/ SUCCESS:
|
||||
@ -7054,7 +7045,7 @@ RKRET, 0
|
||||
/ OTHERWISE, USE BLT TO TRANSFER DATA FROM THE READ OPERATION FIRST
|
||||
CLL CLA
|
||||
TAD RKWCPL
|
||||
SZA
|
||||
SNA
|
||||
JMP DSRET0
|
||||
CLA
|
||||
DCA RKWCPL
|
||||
@ -7063,17 +7054,23 @@ 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
|
||||
CMA IAC
|
||||
TAD K0400 / SUBTRACT SECTOR OFFSET FROM 256 TO DETERMINE
|
||||
DCA RKXWC / MAX TRANSFER COUNT.
|
||||
CLL / CLEAR LINK, MAY BE SET ABOVE
|
||||
TAD RKWD
|
||||
TAD C0400 / ADD 256, DID WE OVERFLOW?
|
||||
TAD RKXWC / ADD MAX, DID WE OVERFLOW?
|
||||
SZL
|
||||
JMP DSRET1
|
||||
CLL CLA / NO: MORE THAN 256 WORDS LEFT, COPY ONLY 256
|
||||
TAD C7400
|
||||
CLL CLA / NO: MORE THAN MAX WORDS LEFT, COPY ONLY MAX
|
||||
TAD RKXWC
|
||||
CMA IAC
|
||||
JMP DSRET2
|
||||
DSRET1, CLL CLA
|
||||
TAD RKWD / FEWER THAN 256 WORDS, COPY THE REMAINDER
|
||||
TAD RKWD / FEWER THAN MAX WORDS, COPY THE REMAINDER
|
||||
DSRET2, DCA RKBLWC
|
||||
TAD RKBLWC
|
||||
TAD RKBLWC
|
||||
DCA RKXWC / MAKE A COPY (BLT WILL STOMP ON IT)
|
||||
TAD RKBLWC
|
||||
CMA IAC
|
||||
@ -7089,7 +7086,7 @@ DSRET2, DCA RKBLWC
|
||||
DCA RKBLSF / SOURCE FIELD
|
||||
TAD RKADDR
|
||||
DCA RKBLSA / SOURCE ADDR
|
||||
TAD C6211
|
||||
TAD K6211
|
||||
DCA RKBLDF / DEST FIELD
|
||||
TAD RKOFF
|
||||
TAD RKBLKA
|
||||
@ -7102,13 +7099,14 @@ DSRET3, CLL CLA
|
||||
DCA RKBLDF / DEST FIELD
|
||||
TAD RKADDR
|
||||
DCA RKBLDA / DEST ADDR
|
||||
TAD C6211
|
||||
TAD K6211
|
||||
DCA RKBLSF / SOURCE FIELD
|
||||
TAD RKOFF
|
||||
TAD RKBLKA
|
||||
DCA RKBLSA / SOURCE ADDR
|
||||
|
||||
/ DO THE TRANSFER
|
||||
/ TODO: BLT IS IN FIELD 0... USE BLTF?
|
||||
DSBL, BLT
|
||||
RKBLSF, .-. / TRANSFER SOURCE FIELD
|
||||
RKBLSA, .-. / SOURCE ADDRESS
|
||||
@ -7138,7 +7136,7 @@ DSRNXT, / PROCESS NEXT SECTOR IF NECESSARY
|
||||
CLA
|
||||
TAD RKWD
|
||||
SNA
|
||||
JMP DSDONE / NO: JUST RETURN.
|
||||
JMP DSFIN / 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.
|
||||
@ -7158,6 +7156,10 @@ DSRNXT, / PROCESS NEXT SECTOR IF NECESSARY
|
||||
0410 / READ W/INTERRUPT INTO FIELD 1
|
||||
/ TODO: NEED TO INTEGRATE DISK ADDRESS BIT 11
|
||||
/ 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
|
||||
@ -7173,8 +7175,39 @@ RKBLKA, RKBLK / POINTER TO THE MONITOR'S RK05 SECTOR BUFFER (256 WORDS)
|
||||
RKWCPL, 0 / WRITE COMPLETE BIT: SET WHEN A READ-MODIFY-WRITE CYCLE
|
||||
/ IS COMPLETING THE WRITE PORTION OF THE CYCLE.
|
||||
RKXWC, 0 / WORDS TRANSFERRED THIS GO-AROUND
|
||||
C0410, 0410
|
||||
C6211, 6211
|
||||
K0410, 0410
|
||||
K6211, 6211
|
||||
|
||||
DEVDMB= JOBTBL-2
|
||||
*DEVTBL-1
|
||||
DEVDMB /DUMMY USED BY FIP RELEASE
|
||||
ZBLOCK DEVTBE-DEVTBL
|
||||
0 /WE ALLOW THE READER EVEN IF NOT CONFIGURED FOR ONE
|
||||
/THIS ALLOWS FIELD SERVICE TO USE THEIR PMK01
|
||||
IFZERO PUNCH <DEVDMB>
|
||||
IFNZRO PUNCH <0>
|
||||
DEVDMB
|
||||
IFZERO LPT <DEVDMB>
|
||||
IFNZRO LPT <0>
|
||||
IFZERO CDR <DEVDMB>
|
||||
IFNZRO CDR <0>
|
||||
IFZERO TC01 <DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB
|
||||
DEVDMB>
|
||||
IFNZRO TC01 <ZBLOCK 10>
|
||||
IFNZRO RK05 <ZBLOCK RK05>
|
||||
IFNZRO .-JOBTBL+1 <DEVDMB>
|
||||
IFNZRO .-JOBTBL+1 <DEVDMB>
|
||||
IFNZRO .-JOBTBL+1 <DEVDMB>
|
||||
IFNZRO .-JOBTBL+1 <DEVDMB>
|
||||
-1 /TERMINATES ASSIGNABLE DEVICE TABLE
|
||||
|
||||
/JOBTBL, CLKTBL, TTYTBL, PRGTBL, & DSUTBL ARE SET UP BY INIT
|
||||
|
||||
*RKBLK
|
||||
ZBLOCK 400 /MONITOR'S FIXED BLOCK FOR RK05 FILESYSTEM TRANSFERS
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user