/QBOL PATCH FILE / / /QBOLP1.PA V1.023 1:56 A.M. 3/3/78 / /ABSTRACT: THIS PATCH FILE WHEN OVERLAYED ONTO QBOL.SV /(FORMERLY MSI1.SV) CONVERTS MINBOL TO QBOL. IT ALSO /FIXES VARIOUS BUGS AND ALLOWS QBOL TO RUN UNDER ETOS /OR STAND-ALONE WITHOUT MODIFICATION. / /FIRST SOME ETOS DEFINITIONS / LLS=6666 SKETOS=6107 SETSTAT=6047 / /NOW DEFINE LOCATIONS IN QBOL.SV / CURBLK=110 MAXBLK=115 CURBPT=111 BSEFLD=0 CURCTL=106 AREG=22 TEMP1=101 XMITIT=3000 SCRBLK=40 LDDRV=5010 LOADER=5400 RNI=203 FNT=6631 CHNFLG=4532 FINI=4435 / /NOW DEFINE POINTERS TO QBOL LOCATIONS / K232=6374 KTOUTT=135 KIOWRAP=142 K7777=145 KRN1=167 KCHNCD=4575 KSYDRV=133 KUSR=174 KSETPC=140 KXICHR=7174 / / FIELD 1 / /MAKE QBOL.SV LOOK FOR QBOLCM.CB INSTEAD OF MINBOL. / *16731 MINNAM, FILENAME QBOLCM.CB /FORMERLY TEXT "MINBOL" / /ALLOW QBOL TO DETERMINE IF ITS RUNNING UNDER ETOS. / *16601 SKETOS /FORMERLY CAF JMP STNDAL /FORMERLY TAD (377 JMS I CORLPO /FORMERLY LLS JMP STRTA /FORMERLY CLL CLA STNDAL, CAF /FORMERLY TAD I (7666 TAD 6777 /FORMERLY SNA CLA JMP NTEST /FORMERLY JMP NDT STRTA, JMS I 6775 /NO CHANGE *16722 NDT, JMS I 6775 /NO CHANGE *16735 NTEST, LLS CLA CLL TAD I 6776 /TAD I (7666 SZA CLA /DATE WORD ZERO? JMP STRTA /NO, CONTINUE JMP NDT /YES, PRINT ERROR / CORLPO, CORLOO /POINTER TO CORE CHECK ROUTINE / /CHANGE DEVICE TABLE FOR VT78 AND ETOS / *7106 INITTB, DEVICE SYS /NO CHANGE DEVICE DSK /NO CHANGE DEVICE CHN0 /FORMERLY DEVICE DSK0 DEVICE CHN1 /FORMERLY DEVICE DSK1 DEVICE CHN2 /FORMERLY DEVICE DSK2 DEVICE CHN3 /FORMERLY DEVICE DSK3 DEVICE RXA0 /FORMERLY DEVICE DSK4 DEVICE RXA1 /FORMERLY DEVICE DSK5 DEVICE RXA2 /FORMERLY DEVICE DSK6 DEVICE RXA3 /FORMERLY DEVICE DSK7 DEVICE LPT /NO CHANGE DEVICE TTY /NO CHANGE DEVICE SLU2 /FORMERLY DEVICE DTA0 DEVICE SLU3 /FORMERLY DEVICE DTA1 DEVICE LQP /FORMERLY DEVICE PTR DEVICE QLP /FORMERLY DEVICE PTP DEVICE CDR /NO CHANGE 0 /NO CHANGE / /CHANGE DEVICE DESCRIPTION TABLE TO REFLECT NEW /CONTENTS OF DEVICE TABLE. / *7557 MU200, 100 /NO CHANGE 100 /NO CHANGE 100 /CHN0 /FORMERLY DSK0 100 /CHN1 /FORMERLY DSK1 100 /CHN2 /FORMERLY DSK2 100 /CHN3 /FORMERLY DSK3 100 /RXA0 /FORMERLY DSK4 100 /RXA1 /FORMERLY DSK7 100 /RXA2 /FORMERLY DSK6 100 /RXA3 /FORMERLY DSK7 020 /NO CHANGE 040 /NO CHANGE 060 /SLU2 /FORMERLY DTA0 060 /SLU3 /FORMERLY DTA1 020 /LQP /FORMERLY PTR 020 /QLP /FORMERLY PTP 000 /CDR /FORMERLY VT8E / /CHANGE DEFAULT COMPILED FILE EXTENSION FROM MB TO QB / *6727 TXTMB, TEXT "QB" /FORMERLY TEXT "MB" / / /MAKE SURE THAT YOU HAVE 16K ALLOCATED UNDER ETOS. / *7151 CORLOO, 0 CDF 0 TAD I CORWRD /GET CONTENTS OF 07777 CDF 10 AND CORMAS /LOOK ONLY AT BITS 6-7 SZA CLA /AT LEAST 12K? JMP I CORLOO /YES, CONTINUE HLT /NO, HALT / CORWRD, 7777 CORMAS, 0060 / / /ALLOW PROGRAMS TO RUN FROM DSK AND CHAIN TO DSK. MAKE /SURE COMPILER STILL CHAINS TO QBOLCM.CB. / *6642 JMP STRT3 /FORMERLY JMP STRT2 *6645 STRT2, CLA IAC RAL /NO CHANGE *6670 NOP /FORMERLY CDF IOFLD NOP /FORMERLY NOC, CLA CLL CMA RAL NOP /FORMERLY TAD TSYSOF NOP /CLL RAR NOP /TAD (7600 NOP /DCA MCHAIN NOP /CLA IAC NOP /DCA I MCHAIN *6744 STRT3, CLA IAC /DEVICE # 1 DCA I 6773 /FORCE INTO SYS JMP STRT2 /CONTINUE / / /SET LOCATION 07600 TO JUMP TO FINI LOOP. THIS /FORCES ALL FILES CLOSED UPON EXECUTION OF A STOP OR END. / *7101 JMP I .+1 /FORMERLY CDF CIF BSEFLD EXISET /FORMERLY JMP I (RN1 *7400 EXISET, TAD KFIN /JMP I .+1 CDF BSEFLD DCA I K7600A /FORCE JMP INTO 07600 TAD KFIN1 /POINTER TO FINEXI DCA I K7601A /INTO 07601 CIF BSEFLD JMP I KRNI1 /RUN LOADER KFIN, 5601 KFIN1, FINEXI KRNI1, RNI K7600A, 7600 K7601A, 7601 / / FIELD 0 /FIRST SET UP VERSION NUMBER / *7 27 /THIS CHANGES EACH EDIT / / /SAVE LINE COUNT INSTAED OF TOP OF FORM FLAG FOR /PSEUDO LINE PRINTER HANDLER / *3760 TOF, 7704 /FORMERLY 1 *3761 SKIP, SKETOS /ETOS RUNNING? TAD CURCTL /NO, GET CTRL JMP I .+1 /AC CLEAR IF ETOS LD1 *3773 5756 /FORMERLY 5777 *5053 JMP I KSKIP /FORMERLY TAD CURCTL LD1, AND 5174 /NO CHANGE *5164 KSKIP, SKIP *5171 5756 /FORMERLY 5777 / / /MAKE ACCEPT BREAK ON EVERY CHARACTER UNDER ETOS. /ELIMINATE DOUBLE ECHO UNDER ETOS. /ALLOW ACCEPT FROM TTY-LIKE DEVICE. / *7006 SKETOS /FORMERLY ACPTLP, TAD CURCTL JMP ACPTLP /FORMERLY AND (60 TAD KKSTAT /FORMERLY SNA SETSTAT /FORMERLY JMP ANTTY ACPTLP, TAD CURCTL /FORMERLY TAD (-60 AND K40 /FORMERLY SNA CLA SNA CLA /FORMERLY JMP VT8ACP JMP ANTTY /FORMERLY KSF KSF /FORMERLY JMP .-1 JMP .-1 /FORMERLY KRB KRB /FORMERLY JMS ACCTST JMS ACCTST /FORMERLY MQA MQA /FORMERLY JMS I [TOUTT JMS I KTOUTT /FORMERLY JMP ANTTY1 JMP ANTTY1 /FORMERLY VT8ACP, DSKF ENDACC, TAD KRSTAT /FORMERLY JMP .-1 SETSTAT /FORMERLY DKRB JMP I KIOWRAP /FORMERLY JMS ACCTST KKSTAT, KSTAT /FORMERLY MQA KSTAT, 0044 /FORMERLY DCA VT8BF 4000 /FORMERLY JMS I (CALDRV KRSTAT, RSTAT /FORMERLY 4100 K40, 40 /FORMERLY VT8BF NOP /FORMERLY VT8BF, 0 NOP /FORMERLY 232 NOP /FORMERLY JMP ANTTY1 ANTTY, JMS I KXICHR /NO CHANGE *7043 ANTTY1, MQA /NO CHANGE *7050 JMP ACPTLP /NO CHANGE *7064 JMP ENDACC /FORMERLY JMP I [IOWRAP ACCTST, 0 /NO CHANGE *7155 RSTAT, 4374 0207 FINEXI+1 / / /FIX DISPLAY TO POSITION ONLY IF CONSOLE TERMINAL AND /PRINT BEFORE DISPLAY. / *7410 AND K60 /FORMERLY AND (40 SNA CLA /NO CHANGE JMP DSPNPS /NO CHANGE AND K20 /FORMERLY TAD AREG+4 SZA CLA /FORMERLY SNA CLA JMP DSPNPS /NO CHANGE JMP DCLEAR /FORMERLY TAD (33 DISPL1, JMS I KTOUTT /NO CHANGE *7430 DSPNPS, CLL CLA IAC /NO CHANGE *7471 DCLEAR, TAD AREG+4 SNA CLA /POSITION? JMP DSPNPS /NO TAD K215 DCA TEMP1 /SET UP CR JMS I KXOCHR /OUTPUT CR JMS I KOUCTZ /SEE IF BUFFER NEEDS TO BE FORCED TAD K33 /GET ESCAPE JMP DISPL1 /RESUME K215, 215 K20, 20 K60, 60 K33, 33 KXOCHR, 3044 KOUCTZ, 6710 / / /FIX DATE FORMAT FOR OS/8 V3D / *126 K106, 106 K0600, 0600 *4354 TAD K106 /FORMERLY TAD (106 *4356 JMP EXTDAT /FORMERLY JMP I [RN1 *4362 EXTDAT, TAD I K7777 /GET EXTENDED DATE WORD AND K0600 /LOOK AT BITS 3-4 BSW /INTO BITS 9-10 RTL /BRING INTO BITS 7-8 TAD AREG+2 /GET LOW ORDER YEAR DCA AREG+2 /RESTORE JMP I KRN1 /CONTINUE / / /CHANGE XMIT TO CONVERT LOWER CASE TO UPPER CASE / *3212 XMTILP, CLL CLA /NO CHANGE *3217 JMP I KLCCHK /FORMERLY JMP XMTILP *3223 XMTIOK, TAD 3371 /NO CHANGE *3361 KLCCHK, LCCHEK *4534 LCCHEK, TAD K37M41 SPA /337 OR 340? JMP I KXMTLP /YES, IGNORE TAD K41M73 SMA /MORE THAN 372? JMP I KXMTLP /YES, IGNORE TAD KLCUC /CONVERT FROM LOWER TO UPPER CASE JMP I KXMIOK /ALL DONE, RESUME KXMTLP, XMTILP KXMIOK, XMTIOK K37M41, -341+337 K41M73, -373+341 KLCUC, -334+373-40 / / /ALLOW PROGRAMS TO BE EXECUTED FROM NON-RESIDENT DEVICES. / *4420 JMP NONCLR /FORMERLY JMP I (CHNCD *4551 NONCLR, DCA NONSWI /CLEAR NON-RESIDENT SWITCH JMP I KCHNCD /GO RUN LOADER-OVERLAY *5024 JMP I KDECID /FORMERLY JMP .+3 *5027 LOANON, CIF 10 /NO CHANGE *5150 KDECID, DECIDE *3155 DECIDE, CLL CLA TAD NONSWI /ALREADY DONE SWITCH? SNA CLA JMS I KWRIXM /PERFORM SWITCH JMP I KLOAN /RESUME KLOAN, LOANON *5644 JMP I KREXMI /FORMERLY JMP I [SETPCT *5652 JMP I KREXMI /FORMERLY JMP I [SETPCT *5756 KREXMI, REXMIT *5400 LOADER, JMS I KLOFIX /FORMERLY JMS I (LDDRV *5577 KLOFIX, LOAFIX /FORMERLY LDDRV *5151 WRIXMT, 0 JMS I KSYDRV /WRITE OUT XMIT CODE 4200 /ONE BLOCK XMITIT /LOCATION 3000 SCRBLK+5 /BLOCK 45 HLT TAD KXMIT DCA I KDEV1 /CHANGE NON-RESIDENT LOAD JMP I WRIXMT /EXIT KXMIT, XMITIT+1 KDEV1, 5175 *4160 LOAFIX, 0 JMS I KLDDR STA DCA NONSWI /SET SWITCH JMP I LOAFIX /CONTINUE KLDDR, LDDRV *7510 REXMIT, TAD I KWRIXM /HAVE WE SWITCHED? SNA CLA JMP I KSETPC /NO, RESUME TAD KDRIVE /YES, SWITCH BACK DCA I KDEV /RESTORE DEVICE CALL JMS I KSYDRV /CALL SYSTEM DEVICE DRIVER 0200 /READ ONE BLOCK XMITIT /INTO LOCS 3000-3377 SCRBLK+5 /RESTORE XMIT PROCESSOR (45) HLT CIF 10 JMS I KUSR 13 /PERFORM RESET 0 /SAVE TEMPORARY FILES JMP I KSETPC /GO START USER JUNQUE KDRIVE, LOADER+1 KDEV, 5175 *124 NONSWI, 0 KWRIXM, WRIXMT / / / / /MAKE STOP, END, RUN AND OLD STYLE CHANGE FINI ALL FILES. / / *4403 JMP CRFINI /FORMERLY DCA CHNFLG RUN1, JMS I KSYDRV /NO CHANGE *4553 CRFINI, DCA CHNFLG JMS I KFINAL /FINI ALL FILES FOR RUN & CHAIN JMP RUN1 /RESUME KFINAL, FINALL *4602 NOP /FORMERLY JMS I [TURNIO *6750 FINEXI, JMS I KFINL1 /FINI ALL FILES TAD K4207 DCA I K7600 /RESTORE 07600 TAD K5000 DCA I K7601 JMP I K7600 /EXIT TO OS/8 K7600, 7600 K7601, 7601 K4207, 4207 K5000, 5000 KFINL1, FINALL *7531 FINALL, 0 TAD KFINLP DCA KRN1 /COME TO PAPA INSTEAD OF LOADER TAD M17 DCA FINCNT /17(8) POSSIBLES IN THEORY DCA FINDEX FINLP, TAD FINDEX /I.F.N. TAD KFNT DCA FINPNT /POINTER TO STATUS TAD I FINPNT SNA CLA /OPEN? JMP FINLP1 /NO, NEXT I.F.N. TAD FINDEX DCA AREG+7 /SET UP FINI FORMAT JMP I KFINI /GO PERFORM FINI FINLP1, ISZ FINDEX ISZ FINCNT /ALL DONE? JMP FINLP /NO, GET NEXT I.F.N. TAD KRUN DCA KRN1 JMP I FINALL KFINLP, FINLP M17, -17 FINCNT, 0 FINDEX, 0 KRUN, RNI KFNT, FNT KFINI, FINI FINPNT, 0 / / /DON'T FORCE OUTPUT TO THE LINE PRINTER AFTER EACH LINE. / / *6036 JMP SETBLK /FORMERLY DCA CURBLK OPEN1A, DCA MAXBLK /NO CHANGE *6153 SETBLK, CLA IAC DCA CURBLK /SET CURRENT BLOCK TO 1 JMP OPEN1A /FOR LPT FORM SKIP *6212 STA /FORMERLY TAD (214 TAD CURBLK /FORMERLY DCA TEMP1 SNA CLA /FORMERLY JMS I (XOCHR JMP LPTEST /FORMERLY TAD (232 FIN1, DCA TEMP1 /NO CHANGE *6233 TSTCLO, TAD CURCTL /NO CHANGE *6346 LPTEST, TAD CURBPT /CURRENT BUFFER POINTER SPA CLA /CHARACTERS IN BUFFER? JMP TSTCLO /NO, EXIT TAD K232 JMP FIN1 /YES, RESUME *6377 4040 /FORMERLY 4060 *6773 0040 /FORMERLY 0060 / / /ON CTRL/C, RESTORE CONTENTS OF 7600 BEFORE EXITING. /ALTERNATIVE IS REVOLVING DOOR EFFECT DUE TO FINI /PATCH. THAT'S LIFE / / *374 FINEXI+1 /FORMERLY 7600 *3165 FINEXI+1 /FORMERLY 7600 *7171 FINEXI+1 /FORMERLY 7600 / /