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

Started work on DS routines for RK05.

This commit is contained in:
Frank 2019-11-10 21:30:05 -08:00
parent 5d99e1bfee
commit f2b2cdf6cf

View File

@ -5324,9 +5324,9 @@ DSTRYA, 0
DCA DSPAR
DATFLD /CHG TO MONITOR DATA FIELD (1)
TAD I DSPAR /FUNCTION
IFZERO RKSYS <
DCA DSRORW
TAD I DSPAR /DISC EXTENSION
IFZERO RKSYS <
IFZERO RF08-40 <
CLL RTL
CLL RAL
@ -5348,6 +5348,9 @@ IFZERO RF08 <
TAD I DSPAR /MEMORY ADDRESS
DCA DSMA
TAD I DSPAR /DISK ADDRESS
CDF /BACK TO DATA FIELD 0
DSRORW, 0 /DO THE RF OPERATION
JMP I DSTRYA
>
IFNZRO RKSYS <
/ DISK ACCESSES DO NOT NEED TO START AT A SEGMENT BOUNDARY, AND
@ -5360,11 +5363,68 @@ IFNZRO RKSYS <
/ NECESSARY AND START ANOTHER XFER.
/ WHEN DONE, SET STATUS, CLEAR DISK REGS, ETC.
/ WHEW.
/GRAB PARAMETERS AND TRANSLATE, STORE LOCALLY FOR USE.
DCA RKCMD /STOW COMMAND FOR NOW
TAD I DSPAR /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).
DCA RKEMA
TAD I DSPAR / -WORD COUNT. STORE FOR FUTURE REFERENCE.
/ THIS WILL ALWAYS BE AT LEAST ONE WORD.
DCA RKWD
TAD I DSPAR / CORE ADDRESS
DCA RKADDR / STORE; WE WILL BE MANUALLY TRANSFERRING
/ DATA TO/FROM THIS ADDRESS ONE WORD AT A TIME.
TAD I DSPAR / DISK ADDRESS:
/ THE ADDRESS (12 BITS) IN THE TRACK TO START
/ THE TRANSFER TO/FROM
DCA RKOFF / STORE OFFSET
TAD RKOFF
CLL RTR
RTR
RTR
RTR / DIVIDE BY 256, YIELDING SECTOR # TO START THE
/ TRANSFER
TAD RKDSKA
DCA RKDSKA / ADD TO DISK ADDRESS
TAD RKOFF
AND C377 / MASK OFF OFFSET WITHIN SECTOR
DCA RKOFF /
/ OK - DO THE ACTUAL TRANSFER: REGARDLESS OF WHETHER THIS IS ULTIMATELY
/ A READ OR A WRITE, WE ALWAYS DO A READ FIRST: ON A WRITE WE NEED TO
/ MERGE THE CHANGED BITS INTO THE SECTOR'S DATA.
/ DO A READ: READ 256 WORDS INTO OUR BUFFER IN FIELD 1.
/ THEN WAIT FOR AN INTERRUPT.
CLA
TAD RKBLKAi /ADDRESS OF BUFFER IN FIELD 1
DLCA
TAD C0410 / READ COMMAND, WITH INTERRUPT, INTO FIELD 1
/ TODO: SHOULD DEAL WITH EXT CYL ADDRESS BIT!
DLDC
TAD RKDKSA / SECTOR / TRACK ADDRESS
DLAG / AND GO! DO IT!
RKFIN, CDF /BACK TO DATA FIELD 0
JMP I DSTRYA
RKCMD, 0
RKDSKA, 0
RKEMA, 0
RKWD, 0
RKADDR, 0
RKOFF, 0
RKBLKA, RKBLK
>
CDF /BACK TO DATA FIELD 0
DSRORW, 0 /DO THE RF OPERATION
JMP I DSTRYA
DSERR1, JMS DSERR /DO COMMON ERROR ROUTINE
@ -6956,6 +7016,14 @@ DEVDMB= JOBTBL-2
/JOBTBL, CLKTBL, TTYTBL, PRGTBL, & DSUTBL ARE SET UP BY INIT
*7000
/ ROUTINES FOR DSGO-RELATED FUNCTIONALITY ON RK05
/ MOVED HERE TO ALLOW MORE SPACE AND EASIER ACCESS TO DATA IN FIELD 1
/
DSGO1, HLT
/ RETURN TO FIELD 1
*RKBLK
ZBLOCK 400 /MONITOR'S FIXED BLOCK FOR RK05 FILESYSTEM TRANSFERS