/P?S/8 ALL CATALOGS MONITOR OVERLAY / LAST EDIT: 07-OCT-1985 08:00:00 CJL / MUST BE ASSEMBLED WITH '/J' SWITCH SET. / UTILITY PROGRAM FOR IMPROVED TRANSFER RATE ON 8K (OR MORE) SYSTEMS. // P?S/8 MONITOR DEFINITIONS. CATADR= 7000 /CATALOG ADDRESS CATCORE=0150 /CATALOG ADDRESS POINTER CHLOOP= 1221 /CHARACTER INPUT ROUTINE CMNDS= 2420 /COMMAND TABLE CTCPZAP=2363 /<^C> PRINT ZAP ADDRESS CTCZAP= 2365 /<^C> ZAP ADDRESS DIR= 0015 /DIRECTORY STARTS HERE FUDGE= 2156 /FUDGE ROUTINE GETHAF= 0104 /GET HALF WORD ROUTINE POINTER LODCAT= 0461 /LOAD CATALOG ROUTINE L7600= 0113 /CONSTANT 7600 L7757= 0034 /CONSTANT 7757 L7772= 0013 /CONSTANT 7772 NEWBUF= 0400 /SCRATCH ROUTINE PBEGIN= 0071 /POINTER TO BEGIN ROUTINE PMOVE= 0127 /POINTER TO MOVE ROUTINE PR6BIT= 0047 /POINTER TO SIX-BIT PRINT ROUTINE PSCRSIZ=0170 /POINTER TO SOFTWARE CORE SIZE WORD REWIND= 1335 /REWIND ROUTINE RST= 0073 /POINTER TO "EXTENDED COMMAND" STARTUP SAVCAT= 0661 /SAVE CATALOG ROUTINE SCMORE=1414 /EXTENDED COMMAND ADDRESS SCRIBE= 0171 /POINTER TO PRINT TEXT ROUTINE SWAL= 7604 /SWITCHES /A-/L SWAPIT= 0423 /SWAP IT ROUTINE UNIT= 0000 /MONITOR'S CURRENT UNIT NUMBER UNITIO= 0037 /UNIT-ORIENTED I/O ROUTINES WHAT= 0111 /POINTER TO WHAT ROUTINE WHATMOR=0057 /WHATMORE ROUTINE WRITE= 4000 /SYSIO WRITE BIT XGETHAF=0444 /GET HALF WORD ROUTINE // ADDITIONAL DEFINITIONS. FIELD1= 4000 /FIELD ONE CODE ADDRESS JMPIC= JMP I . /CURRENT PAGE INDIRECT JUMP NL0002= CLA CLL CML RTL /LOAD AC WITH 0002 NL7777= CLA CMA /LOAD AC WITH 7777 SRINST= JMP I PBEGIN/[BEGIN] /INSTRUCTION CONSTANT PAGE 14 /WHERE IT LOADS IFNZRO .&177 ALLCAT= . /ALLCAT SYSTEM STARTS HERE ALLCAT, 70/NOP /HERE IN CASE WE'RE CHAINED TO CTCTM1, TAD (XGETHAF&177+JMPIC) /MAKE IT CTCTM2, DCA I (SWAPIT+11) /COME BACK TO US TAD (NEXT) /SETUP OUR DCA I GETHAF/[XGETHAF] /NEXT ADDRESS JMP I (SWAPIT) /GO SWAP MONITOR BACK IN NEXT, TAD (SKP) /RESTORE THE DCA I (SWAPIT+11) /ZAPPED INSTRUCTION TAD I (CTCZAP) /GET CURRENT VALUE DCA CTCTM1 /SAVE IT TAD I (CTCPZAP) /GET CURRENT VALUE DCA CTCTM2 /SAVE IT TAD I (CTCZAP) /GET <^C> INSTRUCTION TAD (-SRINST) /COMPARE TO POSSIBLE VALUE SZA CLA /SKIP IF IT MATCHES JMP RTEST /JUMP IF IT DOESN'T TAD (JMP I L7600/[SBOOT]) /GET REPLACEMENT VALUE DCA I (CTCZAP) /ZAP IT IN NL0002 /SETUP "C" BIT MASK AND I PSCRSIZE/[SCRSIZE] /GET THE "C" BIT SZA CLA /SKIP IF OFF DCA I (CTCPZAP) /ELSE PREVENT EXTRA <^C> RTEST, TAD RST /GET EXECUTION WORD TAD (-SCMORE) /COMPARE TO NORMAL VALUE SNA CLA /SKIP IF OTHER JMP CTEST /JUMP IF IT MATCHES JMS I PR6BIT/[XPR6BIT] /DO A , JMS I SCRIBE/[XSCRIBE] /TELL THEM BCHMSG /THEY CAN'T DO THAT JMP I L7600/[SBOOT] /GOODBYE! CTEST, TAD I PSCRSIZE/[SCRSIZE] /GET SOFTWARE CORE SIZE WORD AND ALLCAT/(70) /JUST LCS BITS SZA CLA /4K? JMP COROK /NO, KEEP GOING TAD I (SWAL) /GET SWITCHES /A-/L AND (1000) /JUST /C BIT SNA CLA /SKIP IF SET JMP NOCORE /JUMP IF /C NOT SET TAD I PSCRSIZE/[SCRSIZE] /GET SOFTWARE CORE SIZE WORD AGAIN AND (700) /JUST MCS BITS SZA CLA /SKIP IF NO ADDITIONAL MEMORY AVAILABLE JMP COROK /ELSE OK TO USE 6K NL0002 /SETUP "C" BIT MASK AND I PSCRSIZE/[SCRSIZE] /GET THE "C" BIT SZA CLA /SKIP IF NO OVERLAY JMP NOCORE /JUMP IF OVERLAY INSTALLED TAD I PSCRSIZE/[SCRSIZE] /GET SOFTWARE CORE SIZE WORD AGAIN AND CATCORE/[7000] /JUST PCS BITS SZA CLA /SKIP IF ONLY 4K JMP COROK /JUMP IF MEMORY AVAILABLE NOCORE, JMS I PR6BIT/[XPR6BIT] /DO A , JMS I SCRIBE/[XSCRIBE] /\ NOXMSG / >COMPLAIN OF NO EXTRA MEMORY JMP I L7600/[SBOOT] // COROK, TAD L7757/[REWBEG-REWEND] /\ JMS I PMOVE/[MOVE] / \MOVE DOWN CODE OVER REWZAP / /THE REWIND ROUTINE REWBEG // TAD L7772/[LODCAT-LODEND] /\ JMS I PMOVE/[MOVE] / \MOVE DOWN THE MODIFIED LODZAP / /LOAD CATALOG ROUTINE LODCAT // TAD L7772/[SAVCAT-SAVEND] /\ JMS I PMOVE/[MOVE] / \MOVE DOWN THE MODIFIED SAVZAP / /SAVE CATALOG ROUTINE SAVCAT // TAD WHAT/[XWHAT] /PREVENT DCA I (CMNDS+45) /"RU" COMMAND TAD WHAT/[XWHAT] /PREVENT DCA I (CMNDS+47) /"R" COMMAND TAD WHAT/[XWHAT] /PREVENT DCA I (FUDGE) /EXTENDED COMMANDS TAD (JMP I PBEGIN/[BEGIN]) /RESET ALL ERRORS DCA I WHATMORE/[XWHATMORE] /AS HARMLESS TAD I ADDR1 /\ CDF 10 / \ DCA I ADDR2 / \ CDF 00 / \MOVE DOWN THE ISZ ADDR1 / /FIELD 1 ROUTINES ISZ ADDR2 / / ISZ ADRCNT / / JMP .-7 // CIF 10 /GOTO FIELD 1 JMP I (DOSAVE) /GO SAVE CURRENT CATALOG / COMES HERE AFTER SAVING CURRENT CATALOG. AHERE, TAD (SAVCAT+5) /GET ZAP INSTRUCTION CDF 10 /GOTO CORRECT DATA FIELD DCA I (RTRN) /ZAP IT IN FOR NORMAL OPERATION CDF 00 /BACK TO FIELD 0 JMS I PR6BIT/[XPR6BIT] /DO A , JMS I SCRIBE/[XSCRIBE] /TELL THEM INSMSG /WE ARE HERE JMS I PR6BIT/[XPR6BIT] /DO A , TAD CTCTM1 /GET SAVED VALUE DCA I (CTCZAP) /RESTORE IT TAD CTCTM2 /GET SAVED VALUE DCA I (CTCPZAP) /RESTORE IT JMP I (NEWBUF) /NOW START IT UP ADDR1, LOADST /WHERE CODE TO BE MOVED IS ADDR2, FIELD1 /THIS IS IN FIELD 1 ADRCNT, -200 /MOVE THE WHOLE PAGE PAGE REWZAP, RELOC REWIND-1 /WHERE IT GOES REWBEG, CLOSE /WHERE TO GO TO REWIND, CIF 10 /CLOSE OUT AN ENTRY JMP I .-2/(CLOSE) /IN THE SAVED CATALOG ASVCAT, .-. /\ JMS UNITIO / \ CATADR / \ 2^100+WRITE+.-. / >WRITE OUT CATALOG AND RETURN TO FIELD 1 DIR / / CIF 10 / / JMP I ASVCAT // ALDCAT, .-. /\ JMS UNITIO / \ CATADR / \ 2^100+.-. / >READ IN CATALOG AND RETURN TO FIELD 1 DIR / / CIF 10 / / JMP I ALDCAT // REWEND, RELOC /END OF REWIND ZAP IFNZRO REWEND-REWBEG+7757 SAVZAP, RELOC SAVCAT /WHERE IT GOES SAVCAT, .-. /\ CLA CLL / \ CIF 10 / \ZAP SAVCAT JMP I .+1/(DOSAVE) / /ROUTINE DOSAVE / / JMP I SAVCAT // SAVEND, RELOC /END OF SAVCAT ZAP IFNZRO SAVEND-SAVCAT+7772 LODZAP, RELOC LODCAT /WHERE THIS GOES LODCAT, .-. /\ CLA CLL / \ CIF 10 / \ZAP LODCAT JMP I .+1/(DOLOAD) / /ROUTINE DOLOAD / / JMP I LODCAT // LODEND, RELOC /END OF LODCAT ZAP IFNZRO LODEND-LODCAT+7772 BCHMSG, TEXT "ALL CATALOGS UTILITY NOT ALLOWED FROM BATCH UNLESS /E SWITCH SET!" INSMSG, TEXT "[ALL CATALOGS OVERLAY ENABLED]";0 NOXMSG, TEXT "ADDITIONAL MEMORY IS REQUIRED FOR ALL CATALOGS OVERLAY!" PAGE /GET TO NEXT PAGE LOADST, NOPUNCH /STOP BINARY OUTPUT FIELD 1 /WHERE IT GOES *LOADST /RESTORE ORIGIN ENPUNCH /RESTORE BINARY OUTPUT RELOC FIELD1 /WHERE IT GOES DOLOAD, JMS ACHECK /CHECK FOR EXISTENCE STL /IF RETURN IS TO HERE,MOVE THE OTHER WAY JMS AMVCAT /MOVE A CATALOG (MAYBE A NEW ONE) CIF 00 /BACK TO FIELD 0 JMP I (LODCAT+5) /RETURN TO THE MONITOR DOSAVE, JMS ACHECK /FORCE ON EXISTENCE A7000, NOP /DON'T CARE NL7777 /INDICATE SAVE CATALOG OPERATION JMS AMVCAT /MOVE CATALOG CIF 00 /\ JMP I .+1 / >RETURN TO EDITOR RTRN, AHERE // ACHECK, .-. /EXISTENCE CHECK ROUTINE TAD (ISZ AINTBL) /GET BASE INSTRUCTION TAD I (UNIT) /ADD ON UNIT OFFSET DCA .+1 /STORE IN-LINE .-. /WILL BE ISZ AINTBL+0-7 ISZ ACHECK /SKIP RETURN IF OLD CATALOG TAD I (UNIT) /GET UNIT CLL RTR;RTR;RAR /*400 DCA AF1 /STORE CATALOG STORAGE ADDRESS JMP I ACHECK /RETURN WITH CLEAR LINK CLOSE, CIF 00 /BACK TO FIELD 0 JMS I (ASVCAT) /SAVE THE CATALOG TAD (DCA AINTBL) /GET BASE STORING INSTRUCTION TAD I (UNIT) /ADD ON UNIT OFFSET DCA .+2 /STORE IN-LINE NL7777 /GET RESET VALUE .-. /WILL BE DCA AINTBL+0-7 CIF 00 /BACK TO FIELD 0 JMP I (CHLOOP) /GO GET MORE INPUT AMVCAT, .-. /CATALOG MOVING ROUTINE SZA CLA /SKIP IF LOADING JMP SAVIT /SAVE A CATALOG SNL /SKIP IF NOT IN BUFFER YET JMP ALOOP /OK TO MOVE IT CIF 00 /BACK TO FIELD 0 JMS I (ALDCAT) /LOAD NEW CATALOG INTO FIELD 0 SAVIT, STL /INDICATE MOVE TO FIELD 1 BUFFER ALOOP, SNL /SKIP IF NOT IN BUFFER YET JMP ABACK /JUMP IF WE HAVE IT TAD I AF0 /\ CDF 10 / \MOVE CATALOG FROM DCA I AF1 / /07000 TO 1XXXX JMP ACOM // ABACK, CDF 10 /\ TAD I AF1 / \MOVE CATALOG FROM CDF 00 / /1XXXX TO 07000 DCA I AF0 // ACOM, CDF 00 /MAKE SURE FIELD 0 ISZ AF0 /BUMP FIELD 0 POINTER ISZ AF1 /BUMP FIELD 1 POINTER ISZ AMVCNT /DONE YET? JMP ALOOP /NO TAD A7000/(CATADR) /YES, DCA AF0 /RESET POINTERS TAD (-400) /FOR DCA AMVCNT /NEXT TIME JMP I AMVCAT /RETURN AMVCNT, 7400 /PRESET TO 7400 AF0, CATADR /PRESET TO 7000 AF1, 0000 /0000-3400 ACCORDING TO UNIT AINTBL, -1 /\ -1 / \ -1 / \ -1 / \EMPTY -1 / /CATALOGS -1 / / -1 / / -1 // PAGE RELOC /RESTORE ORIGIN $ /THAT'S ALL FOLK!