From 38191a07c671e1bcccd309c7e709386e144e4783 Mon Sep 17 00:00:00 2001 From: Josh Dersch Date: Sun, 24 Nov 2019 17:03:43 -0800 Subject: [PATCH] Fixed free core map for RKSYS-related blocks. Hopefully. Cleaned up some naming, removed some TODOs. --- tss8_lcm2/init.pal | 11 +++++++-- tss8_lcm2/ts8.pal | 60 +++++++++++++++++++++++----------------------- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/tss8_lcm2/init.pal b/tss8_lcm2/init.pal index 057ca2b..04bb713 100644 --- a/tss8_lcm2/init.pal +++ b/tss8_lcm2/init.pal @@ -765,6 +765,8 @@ OCTIN2, CLL CLA TAD OCTINT JMP I OCTIN0 + +IFZERO RKSYS < /AFTER LOAD OR DUMP, BOOT BACK TO WHATEVER OPERATING SYSTEM IS ON THE RF08. /THIS WAY, INIT CAN BE USED TO LOAD/DUMP OS/8. RBOOT, 6641 /DCXA /CLEAR RF08 EXTENDED DISK ADDRESS @@ -773,7 +775,12 @@ RBOOT, 6641 /DCXA /CLEAR RF08 EXTENDED DISK ADDRESS DMAR DFSC 5352 /JMP . - 5752 /JMP I .-1 + 5752 /JMP I .-1 +> +IFNZRO RKSYS < +/AFTER LOAD OR DUMP, WE JUST RELOAD INIT. +RBOOT, JMP SUPERA +> CRLF= LOGM2+10 LOGM2, TEXT "END WITH ALTMODE_" @@ -1195,7 +1202,7 @@ CORIN4, TAD AXS2 JMP CORIN1 HLT /OOPS!!! CORIN2, TAD I CORF1 /ANY EXTRA FREE CORE TO BE GENERATED? - SNA /SNA - TODO: FREE CORE MAP IS BOGUS, CLOBBERS PARTS OF FIELD 1! WHERE IS THIS DEFINED? + SNA JMP CORIN3 DCA AXS2 ISZ CORF1 diff --git a/tss8_lcm2/ts8.pal b/tss8_lcm2/ts8.pal index 7b0b786..c2e53e2 100644 --- a/tss8_lcm2/ts8.pal +++ b/tss8_lcm2/ts8.pal @@ -2626,8 +2626,6 @@ URTF, CLA STL IAC RTR /AC=6000 UUOEXT > -/ TODO: COULD POSSIBLY FIT RK05 DISK BUFFER HERE - IFNZRO DC08A < DC08B= DC08A+4%5 @@ -5740,15 +5738,17 @@ IFZERO LPT /REFERENCED BY INIT AT START TIME / THE FOLLOWING AREAS WILL BECOME PART OF FREE CORE: -IFZERO TC01+RK05+CDR < +IFZERO TC01+RK05+CDR+RKSYS < ENDBUF;FCE4 > -IFNZRO TC01+RK05+CDR < +IFNZRO TC01+RK05+CDR+RKSYS < IFZERO TC01 < ENDBUF;FCE1 > IFZERO RK05 < FCB2;FCE2 FCB4;FCE4 > +IFZERO RKSYS < + FCB6;FCE6 > IFZERO CDR < FCB3;FCE3 > > IFNZRO DC08A < @@ -6992,6 +6992,7 @@ DISPL1, LAS /WHAT WAS THAT FIELD AGAIN? *2400 +FCB6= .+7&7770 IFNZRO RKSYS < RKGO0, 0 @@ -7113,14 +7114,14 @@ RKRET, 0 DCLR TAD RKWCPL SNA - JMP DSRET0 + JMP RKRET0 CLA DCA RKWCPL - JMP DSRNXT / WRITE: CLEAR WRITE COMPLETE FLAG, DO NEXT SECTOR. + JMP RKRNXT / WRITE: CLEAR WRITE COMPLETE FLAG, DO NEXT SECTOR. / BLT: CALCULATE THE NUMBER OF WORDS TO TRANSFER; THIS IS AT MOST / 256 WORDS (ONE RK05 SECTOR), AT MINIMUM 1 WORD. -DSRET0, TAD RKOFF +RKRET0, TAD RKOFF CMA IAC TAD K0400 / SUBTRACT SECTOR OFFSET FROM 256 TO DETERMINE DCA RKXWC / MAX TRANSFER COUNT. @@ -7128,14 +7129,14 @@ DSRET0, TAD RKOFF TAD RKWD TAD RKXWC / ADD MAX, DID WE OVERFLOW? SZL - JMP DSRET1 + JMP RKRET1 CLL CLA / NO: MORE THAN MAX WORDS LEFT, COPY ONLY MAX TAD RKXWC CMA IAC - JMP DSRET2 -DSRET1, CLL CLA + JMP RKRET2 +RKRET1, CLL CLA TAD RKWD / FEWER THAN MAX WORDS, COPY THE REMAINDER -DSRET2, DCA RKXWC +RKRET2, DCA RKXWC TAD RKEMA / USER FIELD DCA UDF1+1 CMA CLA @@ -7147,11 +7148,11 @@ DSRET2, DCA RKXWC DCA A17 TAD RKWRI / IS THIS A WRITE? SNA - JMP DSRET3 / NO + JMP RKRET3 / NO STL CLA / YES: SET LINK (FROM USER TO DATFLD FOR BLTF1) - JMP DSBL -DSRET3, CLL CLA / NO: CLEAR LINK (FROM DATFLD TO USER) -DSBL, TAD RKXWC / -WC TO AC + JMP RKBL +RKRET3, CLL CLA / NO: CLEAR LINK (FROM DATFLD TO USER) +RKBL, TAD RKXWC / -WC TO AC / DO THE TRANSFER JMS BLTF1 / IF THIS WAS A READ OPERATION WE ARE DONE. @@ -7160,17 +7161,15 @@ DSBL, TAD RKXWC / -WC TO AC CLL CLA TAD RKWRI SNA - JMP DSRNXT / THIS IS A READ, JUST GO TO NEXT SECTOR + JMP RKRNXT / THIS IS A READ, JUST GO TO NEXT SECTOR CLA TAD K4410 / WRITE W/INTERRUPT FROM FIELD 1 DCA RKRW JMS RKOP ISZ RKWCPL / SET WRITE COMPLETE FLAG - JMP DSNDON / DONE FOR NOW. + JMP RKNDON / DONE FOR NOW. -DSRNXT, / PROCESS NEXT SECTOR IF NECESSARY - / TODO: THIS NEEDS TO BE REFACTORED TO ALLOW RETRYING OPERATIONS - / AFTER DISC ERRORS. +RKRNXT, / PROCESS NEXT SECTOR IF NECESSARY CLA TAD RKXWC CMA IAC @@ -7179,45 +7178,46 @@ DSRNXT, / PROCESS NEXT SECTOR IF NECESSARY / ANY MORE DATA TO TRANSFER? TAD RKWD SNA - JMP DSDONE / NO: JUST RETURN. + JMP RKDON / NO: JUST RETURN. / YES: MOVE TO THE NEXT SECTOR / THIS SHOULD NOT OVERFLOW -- THE DF08 HAD AN 8-BIT EXTENDED (TRACK) ADDRESS / AND THE RK8E/RK05 HAS 9 BITS. FIP SHOULD PREVENT OVERFLOW FROM DF08 / ADDRESS SPACE. ISZ RKDSKA / THIS SHOULD NEVER OVERFLOW BUT I AM TESTING ANYWAY - JMP DSRNX0 / NO OVERFLOW - HLT / YIKES. -DSRNX0, CLA / SECTOR OFFSET GETS RESET TO ZERO WHEN CROSSING SECTOR BOUNDARIES + JMP RKRNX0 / NO OVERFLOW + HLT / YIKES. +RKRNX0, CLA / SECTOR OFFSET GETS RESET TO ZERO WHEN CROSSING SECTOR BOUNDARIES DCA RKOFF / INCREMENT CORE ADDRESS TAD RKXWC CMA IAC - TAD RKADDR / INCREMENT CORE ADDRESS (TODO: RENAME THIS, IT IS BAD) + TAD RKADDR / INCREMENT CORE ADDRESS DCA RKADDR / AND START THE NEXT READ TAD K0410 / READ W/INTERRUPT INTO FIELD 1 DCA RKRW JMS RKOP -DSNDON, ISZ RKRET / RETURN +1, MORE TRANSFERS TO GO. -DSDONE, +RKNDON, ISZ RKRET / RETURN +1, MORE TRANSFERS TO GO. +RKDON, CDI 00 / RETURN TO FIELD 0 JMP I RKRET -/ TODO: CLEAN UP THESE NAMES! RKWRI, 0 / 0 = READ, 1 = WRITE RKDSKA, 0 / RK05 DISK ADDRESS FOR THE TRANSFER (LOW 12 BITS) RKEMA, 0 / USER'S FIELD FOR THE TRANSFER RKWD, 0 / NEGATIVE WORD COUNT FOR THE TRANSFER RKADDR, 0 / POINTER TO THE USER'S CORE MEMORY FOR THE TRANSFER RKOFF, 0 / THE OFFSET IN THE SECTOR DATA TO COPY -RKBLKA, RKBLK / POINTER TO THE MONITOR'S RK05 SECTOR BUFFER (256 WORDS) +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. + / IS COMPLETING THE WRITE PORTION OF THE CYCLE. RKXWC, 0 / WORDS TRANSFERRED THIS GO-AROUND K0410, 0410 K4410, 4410 K6211, 6211 +FCE6= .&7770 + DEVDMB= JOBTBL-2 *DEVTBL-1 DEVDMB /DUMMY USED BY FIP RELEASE