1 /8 COMMAND DECODER FOR OS/8 MONITOR
11 /COPYRIGHT (C) 1974, 1975, 1977 BY DIGITAL EQUIPMENT CORPORATION
22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
45 \f/APRIL 1977 RL/EF/HJ/SR
48 /COMMAND DECODER (CD) ACCEPTS TTY INPUT AND INTERPRETS
49 /THAT INPUT AS A LIST OF OPTIONS AND FILE SPECIFICATIONS
50 /FOR OS/8 CUSPS. TABLES ARE SETUP INDICATING THE SPECIFIED
52 /THIS VERSION OF CD IS CAPABLE OF RUNNING OS/8 BATCH.
53 /MODIFICATIONS TO INITIALIZATION CODE HAVE BEEN MADE TO
59 USERFG=40 /LOCATION IN MAIN OS/8 ASSEMBLY - VOLATILE
61 MCDREC=51 /ALSO PRETTY VOLATILE
71 /1. FIXED LOTS OF BUGS
73 / 15-BIT = OPTION DOESN'T DESTROY ALTMODE BIT
74 /2. ADDED ? SUPPORT IN SPECIAL MODE
75 /3. ALLOWED SPECIAL MODE UNDER BATCH
77 /5. ^U, RO TO BOL, AND LF ALL REPRINT *
78 /6. VERSION # AT LOC ZERO
79 /7. DON'T LOAD HANDLERS FOR OUTPUT DEVICE
80 /8. CHANGED _ TO < STANDARD
85 /2. FIXED CORE SIZE ROUTINE
86 /3. ALLOWED SOFTWARE CORE SIZE
87 /4. MODIFIED 'GO' COMMAND SO THAT IT DOESN'T RESTORE TRAP
88 / LOCATION TO UNMODIFIED VALUE
89 /5. FIXED BUG RE: JMS'S OUT OF FIELD WITH MAGIC LOCATION SET
90 /6. TURN OFF INTERRUPTS ON BREAKPOINT
92 /CHANGES AFTER FIELD TEST RELEASE:
94 /1. FIXED BUG RE FILE LENGTHS GT 2047 BLOCKS
102 /CHANGED FORMAT OF VERSION NUMBERS
104 CD, JMP I NUMBER /EXECUTED IN SYSGEN
120 TAD BEGDIF /DIFF BETWEEN INPUT & OUTPUT AREAS
128 TAD ["A-": /AC CONTAINED DELIM - "A
134 TAD LIMDIF /DIFF BETWWEN END OF OUTPUT & INPUT AREAS
135 TAD OUTLIM /END OF OUTPUT AREA
141 LKUPSW, JMP INFILE /ZEROED IF IN "SPECIAL DECODE" MODE
153 INFILE, JMS I [LOOKUP
177 AND I [MPARAM-1 /PRESERVE ALTMODE
187 JMP I [CDER2 /CATCHES A:B:
191 JMP .-1 /LET PRINTER QUIET DOWN
195 DCA I [200 /RESTORE "MONITO"
197 DCA I [USERFG /RESTORE "USER FLAG"
198 TAD TFPUTX /LOAD "USER CALLING FIELD" INTO AC
199 JMP I CD /RETURN - MONITOR RESTORES CORE IF NECESSARY
200 NUMBER, 4000 /USED BY SYSGEN
202 DCA NUMADD /SET NUMADD TO EITHER "SKP" OR "TAD NUM"
205 JMS NUMTST /INTO PAGE 0 FOR RANGE TEST
222 NUMADD, TAD NUM /SKP IF OCTAL
231 \fCDER1, JMS I [PRMESG
232 TEXT /TOO MANY FILES/
233 \f IFZERO .&400 <*400>
238 SMA SZA CLA /CHECK FOR OUTPUT OR FIRST INPUT
239 JMP ASNORM /IF DEVICE WAS SPECIFIC, OR IF WE ARE ON THE INPUT SIDE,
253 SNA CLA /DON'T LOAD HANDLER IF WE ARE ON OUTPUT SIDE OF "_"
255 SPKLG1, SNA CLA /OR IF THERE IS NO FILE NAME TO LOOK UP
256 TAD GETHND /GETHND=11 NORMALLY, 0 IF IN "SPECIAL DECODE" MODE
259 TAD [1401 /ALLOW TWO PAGE HANDLERS
288 STARSW, JMP I [CDER2 /"JMP STARNM" IF "SPECIAL DECODE" MODE
294 \fSTARNM, CLA /THIS CODE HANDLES *'S AND ?'S CORRECTLY
351 SNA CLA /WAS THERE AN EXPLICIT EXTENSION?
352 TAD DEFALT /NO - WAS THERE A DEFAULT EXTENSION?
354 JMP I [CDER3 /YES OR NO - FILE NOT FOUND
355 ISZ NAMECT /NO AND YES - SET FLAG TO FAIL NEXT TIME
356 JMP EXT2 /ZERO OUT THE EXTENSION AND TRY AGAIN
360 \f IFZERO .+200&1000 <*600>
372 CMA STL /THE FOLLOWING TURNS ON THE CORRECT OPTION BIT
407 TEXT / DOES NOT EXIST/
415 DCA I XR /ZERO OUT THE COMMAND DECODER OUTPUT AREA
444 AND NAME1 /[N] IS ONLY LEGAL ON THE OUTPUT SIDE OF THE "_"
445 SNA CLA /AND ONLY AFTER A FILE NAME
451 DCA NUMFUJ /SET "NUMBER" TO ACCEPT DIGITS 8 AND 9
452 TAD OLFUDJ /LOAD FUDGE SO THAT "NUMBER" WILL BE DECIMAL
461 TAD [-"] /IS THERE A CLOSING BRACKET?
462 SNA /IF NOT, "DLOOK" ROUTINE WILL DETECT IT
470 TEXT /ILLEGAL SYNTAX/
471 \f IFZERO .&1000 <*1000>
472 /TELETYPE INPUT ROUTINE FOR COMMAND DECODER
473 GLINE, TAD (252 /SETS 1177=252 FOR * IN MESSAGE
492 SPADR, -225;JMP CTRLU
495 -375;JMP ALTMOD /V3D MODIFIED BY SET
496 -376;JMP ALTMOD /V3D MODIFIED BY SET
502 -203;JMP CTRLC /MUST BE LAST - SEE CLRLIN CODE
534 JMP I [7605 /7605=CDF CIF 10
550 \f/*** LOCATIONS ON THIS PAGE ARE MODIFIED BY SET
551 /SEE SET FOR DETAILS. DO NOT CHANGE.
592 IFNZRO RUBOUT-1131 <_ERROR_>
593 \f *1200 /INITIALIZATION - STORED OVER BY LINE BUFFER
599 DCA TMONIT /SAVE AWAY MONITOR CALL ADDRESS SINCE WE CALL
600 TAD I [USERFG /THE MONITOR RECURSIVELY, LIKEWISE SAVE
601 DCA TUSRFG /THE "USER FLAG" AND THE FIELD WE WERE CALLED FROM
602 TAD I [T1 /FETCH THE USERS ARGUMENT
603 DCA DEFALT /STORE IN THE DEFAULT EXTENSION WORD
604 DCA I [7 /ZERO "DIRECTORY SEGMENT IN CORE" KEY
608 13 /RESET ALL HANDLERS
609 0 /BUT NOT OUTPUT FILES
612 SZA CLA /IS THIS A REQUEST FOR A "SPECIAL DECODE"?
615 DCA OUTLIM /YES - SET UP ALL THE PROPER LOCATIONS
617 DCA LIMDIF /TO YIELD 1 OUTPUT FILE AND 5 INPUT FILES
619 DCA BEGDIF /ALL OF WHICH ARE 5-WORD <DEVICE,NAME> ENTRIES
622 DCA I PSTARS /AND ALLOW * AS A FILE OR EXTENSION NAME
623 DCA DEFALT /NO DEFAULT EXTENSION IN "SPECIAL" MODE
624 TAD CCLA /STOPS FETCHES IN SPECIAL MODE
625 DCA I PSPKG1 /NO HANDLER FETCHES NECESSARY EITHER SINCE NO LOOKUPS
626 CDCONT, TAD I PRWD /SEE IF BATCH FLAG IS UP
628 SPA CLA /IF YES, GO TO PAGE0 CODE
629 JMP TT /TT ETC. IS ONCE-ONLY CODE
632 /CONSTANTS NECESSARY TO SUPPORT "SPECIAL DECODE" MODE
635 ALTDF1, MOFILE+5-MPARAM+5
638 STARJM, STARNM&177+5200 /"JMP STARNM"
666 JMP I PCHAR /IGNORE NULLS
674 / SNA /WOULD LIKE TO FIND ROOM FOR THESE 2 LOCS
698 IFNZRO TYPRET-1377 <BATCHX,ZQWE>
699 \f *4001 /PROG TO WRITE CD AND ODT ONTO NEW SYSTEM DEVICE
700 /4000=JMS SYSSWP TO SWAP PGS 6600 AND 7600
701 TAD I (7777 /SET TO PROPER RECORD FOR FIELD 1 STUFF
714 0110 /READ IN UPPER PG 7600
722 JMP 4000 /RESWAP AND HALT
728 HLT /POWER FAIL RESTART PROTECTION
733 TAD ["8 /TEST INPUT CHARACTER FOR RANGE
734 CLL CMA /0-7 IF NUMFUJ=0
735 TAD [10 /0-9 IF NUMFUJ=2
743 TT, CDF 0 /***GETS SET TO CDF BATCH
744 HIORD, TAD I DVICE /CHECK TO SEE IF BOS IS REALLY THERE
745 NUMX, TAD OUTSW /IF NOT, SIGNAL ERROR
747 NAME1, JMP NAMECT /IT'S O.K.....PROBABLY!
748 NAME2, CDF 0 /BAD. SIGNAL ERROR TO MONITOR
750 NAME4, JMP I [7605 /AND RESTART BATCH MONITOR
751 NAMECT, CIF CDF 0 /*****GETS ALTERED******
752 NMBASE, JMP I .+1 /START UP IN CD AREA OF BATCH
753 DEV1, RESTRT+1 /***GETS ADDRESS OF CD AREA
762 DFLTNM, 0423;1300 /DSK
763 BEGDIF, MIFILE-MOFILE
764 LIMDIF, MIFILE-MPARAM+2
771 DCA NAMECT /REMEMBER TYPED EXTENSION
774 TAD DEFALT /SUBSTITUTE DEFAULT IF ZERO
782 /INVISIBLE ODT FOR OS/8 MONITOR
783 /LOADS INTO FIELD 1 NOW, BUT LOADS & EXECUTES IN FIELD 0
784 /DEFINITIONS OF MONITOR SYMBOLS - VOLATILE!
823 JMP FLDTST /SEE IF FIELD SETTING IS LEGAL
846 -270 /USED - SEE "SEX"
920 /NOTE THAT LOCATIONS BURP,BURP+1 GET ALTERED AFTER BRKTST
921 /IS EXECUTED. THEY BECOME: CDF 10; TAD I [MARG1
922 BURP, JMP I .+1 /GO REDETERMINE CORE SIZE
923 BRKTST /TO MAKE ILLEGAL FIELD GIVE ?
948 DCA I [MGET+2 /REMOVE LOW-ORDER BIT FROM CONTROL WORD
972 JMPLIP, JMS I [CTCTST
1022 DCA I [J7600 /CHANGE JMP 7600 TO JMP 7605 IF ODT AREA NOT USED
1025 DCA JSTEMP /SAVE JSBITS BEFORE SETTING BRKPT
1038 DCA I [JSBITS /RESTORE JSBITS
1041 ADD, TAD WORD+1 /MODIFY CURRENT LOCATION POINTER
1043 IAC /1 IS DEFAULT VALUE
1048 JMP I [UPAR2 /AND DISPLAY LOC AND CONTENTS
1049 \f *600 /MONITOR ENTERS ODT HERE
1050 LIP, HLT /ERROR. AT INIT, THE CODE AT 600
1051 JMP I .+1 /IS CHANGED TO: ISZ PUNN;
1052 TTYTST, INIT /JMP XCONT; TSF
1066 JUMP, JMS TOTTST /TEST FOR 'G' WITH NO ADDRESS
1084 DCA I [7607 /IN CASE THERE WAS NO BREAKPOINT
1102 JMS I [SIM /SIMULATE THE BRKPOINTED INST HERE
1155 P7770, 7770 /SPA SNA SZL CLA - NEVER SKIPS - USED TO PROTECT ISZ
1165 TTYOFF, AND I 0 /WASTE SOME TIME
1170 JMP LIPTYP /IF THE TTY FLAG ISN'T UP NOW, IT'LL NEVER GO UP
1192 \f IFZERO 1000&. <*1000>
1236 \fWSER, JMS I [OCRLF
1267 LINKX, TAD [LINK-MASK
1268 MASKX, TAD [MASK-DATFLD
1269 DATF, TAD [DATFLD-INDFLD
1289 ISZ MGET+2 /DON'T REVERSE TAPE MOTION TO PICK UP ODT
1300 *BRKCOD+MPUNN-UDNAME+1
1320 \f IFNZRO .-1200&4000 <*1200>
1381 CML RAL /PUT -LINK IN AC (0 IF JMP, 1 IF JMS)
1397 ISZ STOFLG /INDICATE THAT WE'RE CHANGING THIS RECORD
1426 DCA I [JSBITS /MODIFY THE JSW TO INDICATE ODT AREA VIOLATION
1453 /INITIALIZATION CODE TO SET UP THE "MREAD" AREA IN FIELD 0
1454 /WITH THE ODT CODE TO START UP A PROGRAM
1456 INIT, TAD [MREAD-MSTADR-2
1466 JMS CORE /DETERMINE CORE FIELD SIZE
1471 BRKTST, JMS CORE /GET CORE SIZE NOW THAT WE WERE
1473 DCA I PLIP /SETUP LOCATIONS AT 600
1478 TAD KCDF10 /JUST BREAKPOINTED IN. THEN RESTORE
1479 DCA I BURPO /LOCS AT BURP SO WE NEVER COME BACK
1480 TAD KCDF10+1 /HERE AGAIN UNTIL WE'RE SWAPPED
1484 TAD I [MARG1 /SIMULATE LOCS AT BURP
1510 *RSTCOD+MSTADR-MREAD+2
1548 DCA ZERO /STORE AWAY NEG OF FIRST NON-EXISTENT FIELD
1549 /AT ODT'S LOCATION 0
1560 KLIP, ISZ PUNN /THESE INSTRUCTIONS GO INTO 600
1561 XCONT&177+5200 /JMP XCONT
1568 HLT /IN CASE BKPT WITH INTER ON
1571 *4 /PAGE 0 LITERALS AND CELLS
1572 CIF 10 /PROTOTYPE BREAKPOINT
1573 JMP I 6 /USED BY PROGRAMS WITH JSBITS(10)=1
1574 UDNAME /WHEN ODT IS RELOADED ON A BREAKPOINT
1597 FLDTST, TAD ZERO /LOC. 0 HAS FIRST IMAGINARY CORE FIELD
1598 TAD WORD /IF USER TRIES TO ADDRESS NON-
1599 SNL CLA /EXISTENT CORE, A ? RETURNS
1600 JMP I TEMP /HE'S OK.