software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape5 / CCL.PA
diff --git a/sw/os8/v3d/sources/system/dectapes/dectape5/CCL.PA b/sw/os8/v3d/sources/system/dectapes/dectape5/CCL.PA
new file mode 100644 (file)
index 0000000..2a4c392
--- /dev/null
@@ -0,0 +1,3584 @@
+/56    CCL  FOR  OS/8 V3D
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/COPYRIGHT  (C)  1974,1975,1976,1977 BY DIGITAL EQUIPMENT CORPORATION
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
+/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
+/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
+/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
+/
+/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
+/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
+/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
+/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
+/
+/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
+/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
+/DIGITAL.
+/
+/
+/
+/
+/
+/
+/
+/
+/
+/
+\f      MOFILE=7600
+       MIFILE=7617
+       MPARAM=7643
+
+       XR2=15
+       XR=16
+       TXR=17
+       AMFLAG=17
+       T=20
+       TT=21
+       DEF=22
+       NAME1=23
+       NAME2=24
+       NAME3=25
+       NAME4=26
+       NMBASE=27
+       DEV1=30
+       DEV2=31
+       DELIM=32
+       DEFALT=33       /POINTS TO DEFAULT EXTENSION LIST
+       LXR=34
+       CLXR=35
+       PTR=36
+       DATWD=7666
+       BATERR=7000     /JMP HERE TO ABORT BATCH
+       BATOUT=7400     /JMS HERE TO PRINT ON BATCH LOG
+       BATSPL=7200     /JMS HERE TO PERFORM SPOOLING WITH DEFAULT EXT IN AC
+       OS78BIT=7771
+
+       BEGLN=1000
+
+/CCL STARTING ADDRESS: 12000
+/STARTING ADDRESS:     12001
+/CHAIN STARTING ADDRESS:12002
+
+/      JOB STATUS WORD = 2003
+
+/**************************************************
+/
+/              SAVING CCL
+/
+/              .LOAD CCL
+/              .SAVE SYS CCL;12001=2103
+/              .R CCL
+/
+/**************************************************
+
+       CCLSW=435
+       DEASADR=427
+       PRQMRK=1357
+       GETCCL=1362
+       OV=1375
+       MSOVL2=55
+
+       CCLBLK=67       /BLOCK ON SYS: USED BY CCL
+       CCLTAB="G       /MUST BE UPDATED IF TABLES CHANGE
+       CCLNUM="1
+       CCLVER="F       /CCL VERSION #
+
+/*** NOTE: VERSION E OF CCL WAS FOR IN-HOUSE USE ONLY.
+/USE OF SEMICOLONS WITH CCL VERSION I OR LATER
+/REQUIRES BATCH VERSION 7 OR LATER.
+/USE OF BASIC COMMAND REQUIRES V3D BASIC OR LATER
+
+       HNDLR=4400
+       BFR=5000
+
+/MEMORY ALLOCATION:
+
+/0 4400-4777   INPUT HANDLER FOR CD
+/              ALSO, SEMICOLON BUFFER
+/0 5000-5177   PRE-EXTENSION @ BUFFER
+/0 5200-5577   @ BUFFER
+/0 1000-1777   /COMMAND LINE [EACH @ FILE RESTRICTED TO 1 BLOCK]
+/0 2000-2777   /LINE BUFFER EXTENSION
+\f/     CHANGES SINCE FIELD RELEASE VERSION:
+
+/1.    RECURSIVE 'U' BUG FIXED
+/2.    INTERNAL STRUCTURE OF CCL KEYWORD TABLE CHANGED
+/3.    BUG RE REWRITING BLOCK CONTAINING PTR TO CORRECT FORTRAN FIXED
+/4.    .SV PARTS OF FILENAMES REMOVED FROM TABLE TO SAVE SPACE
+/5.    COMPARE PASSES ALTMODE
+/6.    TTY BECAME DEFAULT FOR COMPAR, DIRECT, AND MAP
+/7.    BUG RE PASSING DEFAULT * FIXED
+/8.    .LS FORM OF .CREF COMMAND REMOVED
+/9.    BUG CONCERNING PROCESSOR SWITCHES FIXED
+/10.   CCL SWITCH ALLOWED AFTER =N OPTION
+/11.   BUG RE 'BAD SWITCH OPTION' MESSAGE FIXED
+/12.   EXTRA SPACES NOW ALLOWED BEFORE CCL ARGUMENT
+/13.   'DOES NOT EXIST' MESSAGE NOW SPELLED CORRECTLY
+/14.   'BAD CCL SWITCH' MESSAGE ADDED
+/15.   CCL EDIT # CHANGED TO CCL VERSION #
+/16.   .EX CHAINS TO BCOMP NOT BASIC FOR .BA FILES
+/17.   MUNG PTR: NOW WORKS
+/18.   FIXED BUG RE MUNG <CR>
+/19.   FIXED BUG RE CD FOR FILE > 2047 BLKS
+/20.   FIXED BUG RE MAKE PTR:
+
+/VERSION B FIXES:
+
+/21.   ALLOWED 'EDIT' TO COPY FILE EXTENSION
+/22.   FIXED BUG RE .CCL ON WRITE-LOCKED DEVICE
+/23.   FIXED DATE PROBLEM
+/24.   ALLOWED FF AND VT IN AN INDIRECT FILE TO BE IGNORED
+
+/VERSION C FIXES:
+
+/25.   FIXED BUG RE SPACES AND SLASHES IN MUNG TEXT ARGUMENT
+/26.   ALLOWED EDIT COMMAND TO USE SAME OUT DEVICE
+/       AS IN DEVICE (IF NONE SPECIFIED)
+/27.   ADDED MORE SYNTAX CHECKING TO ZERO COMMAND
+
+/VERSION D CHANGES:
+
+/28.   ALLOWED EDIT A<B COMMAND TO REMEMBER ONLY UP TO '<' .
+
+/VERSION E CHANGES: (IN-HOUSE ONLY VERSION)
+
+/29.   WARNING MSG IF SQUISH SYS: UNDER BATCH
+/30.   ADDED SOME NOTES ON HOW TO ALLOW = AS WELL AS <
+/31.   ADDED HOOKS FOR ; TO BE READY FOR V4
+/32.   FIX BUG RE CMD STARTING WITH SPACES
+
+/CHANGES FOR MAINTENANCE RELEASE (OS/8 V3C):
+
+/33.   FIXED BUG ABOUT @ NOT FOLLOWED BY FILESPEC
+/34.   INCORPORATED ALL PREVIOUS EDITS
+/35.   ALLOWED ' TO TERMINATE AN INDIRECT REQUEST (AND BE IGNORED)
+/36.   FIXED BUG ABOUT EDIT DEV1:_DEV2:FOO LOSING DEV1:
+/37.   CORRECTED SPELLING OF SUPERSEDING
+/38.   ADDED .LD EXTENSION TO EXECUTE TABLES [USES FRTS]
+
+/VERSION G CHANGES:
+
+/39.   FIXED BUG WITH HELP COMMAND
+/40.   FIXED BUG CONCERNING EDIT DEV:_FILE
+
+/VERSION H CHANGES:
+
+/41.   ADDED MAC AND LINK COMMANDS
+/42.   ADDED MACREL AND LINKER INTO COMPILE/LOAD/EXECUTE COMMANDS
+/43.   ALLOWED UX COMMANDS TO CONTAIN KBM COMMANDS
+/44.   ALLOWED PASSING A KBM COMMAND TO CCL ON CHAINING
+/45.   ALLOWED @ AT BEGINNING OF LINE
+/46.   MOVED MOST OF 'DETCOR' TO FIELD 0
+/47.   WAIT ROUTINE  NOW GIVES UP IF TTY FLAG ISN'T UP WITHIN 0.1 SEC
+/48.   ALLOWED EXEC .BI TO USE BATCH
+/49.   TENTATIVELY ADDED SEMICOLON STUFF
+/50.   PUT BACK WARNING MESSAGE IF TRY TO SQUISH UNDER BATCH
+
+/VERSION I CHANGES:
+
+/51.   FIRMED UP SEMICOLON STUFF
+
+/VERSION J CHANGES:
+
+/52.   DEFAULT DEVICE FOR COMPIL, PAL, ETC. IS NOW LOGICAL DSK: NOT SYS:
+/53.   -L, -S, AND -P SWITCHES NOW SET OUTPUT NAME TO CURRENT INPUT NAME
+
+/VERSION K CHANGES:
+
+/54.   DATE NOW HANDLES DATE/78 ALGORITHM
+/55.   TOOK OUT 'TCF' WHICH WAS CAUSING BATCH TO HANG
+
+/VERSION 1A CHANGES:
+
+/56.   FIXED BUG RE NULL INDIRECT CMD FILE
+/57.   FIXED BUG TO NOW ALLOW DATE WITH ARGS IN INIT.CM
+/58.   PRINT "OS78" FOR VERSION NAME IF APPLICABLE
+/59.   ADDED -N AND -D AND REWROTE LOGIC A BIT
+/60.   HELP COMMAND NOW USES HELP.SV
+/61.   SET COMMAND NOW USES SET.SV
+/62.   'CORE' BECOMES 'MEMORY' IN 3 MSGS AND 1 CMD
+/63.   ADDED BASIC COMMAND (CHAINS TO BASIC.SV WITH Q SWITCH)
+/64.   ALLOWED FOR TERMINATE COMMAND (OS78 REPLACES BACKSPACE)
+/65.   ADDED DUPLICATE COMMAND (USES RXCOPY)
+
+/V1B CHANGES:
+
+/66.   MODIFIED FORMAT OF MAIN TABLE
+/67.   GIVE ERROR MESSAGE IF NO FILENAME IS GIVEN WITH INDIRECT
+/      FILE (EVEN IF NON-FS)
+/68.   PRINT KBM VERSION #
+/69.   ADDED TERMINATE COMMAND
+
+/V1F CHANGE:
+
+/70.   DUPL CALLS RXCOPY IN SPECIAL MODE
+\f/     FORMAT OF CCL TABLE
+
+/ENTRY PURPOSE
+
+/      TABLE WIDTH=7 (BUT VARIES)
+
+/0     FLAG WORD
+
+       /BIT    MEANING IF ON
+
+       /0      PERFORM CD (IF 0, OMIT ENTRIES 1-6)
+       /1      DON'T PERMIT SPOOLING
+       /2      ALLOW .LS, .NB, .MP SWITCHES
+       /3      ADD _ TO END OF COMMAND STRING
+       /4      SET OUTPUT EXTENSION = INPUT EXTENSION (IF BIT 2 ON)
+       /6-8    SPECIFIES AUTOMATIC INPUT REMEMBERING (REM LINE MINUS 1)
+       /       0 MEANS NONE.  7 RESERVED FOR SPECIAL USE.
+       /10     CAUSE -L, ETC. TO GO TO 2ND OUTPUT FILE & COPIES NAME
+       /11     WANT DEFAULT ALTMODE (COMPL IF AMFLAG=1)
+
+/1     PTR TO DEFAULT EXTENSION LIST FOR INPUT FILES.
+/      IF PTS TO 0, NONE.   IF PTS TO 5200, USE SPECIAL MODE.
+
+/2-4   DEFAULT SWITCHES TO BE OR'ED INTO THOSE
+/      EXPLICITLY GIVEN.
+
+/5     ADDRESS OF SUBROUTINE TO BE CALLED
+/      AFTER C.D. HAS BEEN DONE.  0 IF NONE.
+
+/6     PTR TO FILENAME OF PROGRAM
+/      TO BE CHAINED TO.  0 IF NONE.
+
+/      FIELD 0
+
+/1000-1777     LINE BUFFER
+/2000-2777     LINE BUFFER EXTENSION
+/4000-4377     REM-LINES
+/4400-4777     HANDLER
+/5000-5577     BUFFER
+/6000-7577     MORE CCL (7 PAGES)
+
+       REST=6000
+\f      FIELD 1
+
+       *2000
+
+       FAKBM=404       /PLACE TO FAKE OUT KBM
+
+START, JMP .+3         /START FROM MONITOR
+       JMP (CCLBLC     /START FROM .RUN COMMAND
+                       /THIS LITERAL IS AT END OF PAGE
+       JMP MONCHN      /START WHEN CHAINED TO
+       CLA
+       CDF 0           /READ IN REST OF CCL
+       TAD I (CCLBLC   /GET BLOCK OF START
+       CDF 10
+       TAD CCLREM
+       DCA CCLREM      /GET BLOCK OF REST
+       CIF 0
+       JMS I (7607
+       700             /READ 7 MORE PAGES
+       REST
+CCLREM,        1+14+1          /SKIP CCB AND *400 STUFF
+       JMP ERR2
+       JMS TWAIT
+       CDF 0
+       TAD I LVNO
+       CDF 10
+       TAD (-CCLTAB    /DO VERSION #'S AGREE?
+       SZA CLA
+       JMP BADVNO
+PREGO, JMS I (AT
+       STA
+       DCA I (REMD     /ALLOW RECURSIVE U'S
+       CDF 0
+       TAD I KENTRY    /GET ENTRY #
+KCIDF, CIF CDF 10
+       TAD (PTBL       /GET ADDRESS OF PTR TO START OF ENTRY
+       DCA PTR
+       TAD I PTR       /GET PTR TO START OF ENTRY
+       DCA PTR
+       JMP I (GOO
+MONCHN,
+KCIF,  CIF 0
+       JMS I (7607     /READ IN KBM
+       1000            /4 BLOCKS
+       0               /0-1777
+       7               /BLOCK 7 ON SYS:
+       HLT             /NO WAY TO RECOVER (EVEN 7605 DOES THIS)
+       TAD (-44
+       JMS I (MOVE     /ASSUME COMMAND LINE IS IN
+       CDF 10          /17600-17643
+       7600
+       CDF 0
+       1000            /MOVE TO OS/8 LINE BUFFER
+       CIF CDF 0
+YAT,   JMP I KFAKBM    /@ DESTROYS THIS CODE (MUST BE ONE BEFORE 'REGO')
+       TAD I (ASSIGN   /'YAT' IS JMS'ED TO
+       SNA CLA         /BY INITIAL @ COMMAND
+       JMP I (LEAVE    /DO NOTHING IF NO @ GOT EXPANDED (NULL LINE)
+REGO,  CIF 0
+       JMS I (7607
+       200             /READ ONE BLOCK
+       400             /400-777
+       10              /RESTORE PART OF KBM WHICH WAS DESTROYED BY OVERLAY
+       HLT
+       JMP I (FAKE
+
+/REGO, TAD KCIDF
+/      CDF 0
+/      DCA I (RETCIF   /ALLOW 'FINDIT' TO RETURN TO FIELD 1
+/      CIF CDF 0
+/      STA
+/      DCA I (HALF
+/      DCA I (ENTRY
+/      TAD (KEYWRD
+/      DCA I (KPTR
+/      JMS I (FINDIT   /LOOK UP KEYWORD
+/      SMA CLA
+/      JMP PREGO       /FOUND IT
+/CMDERR,       JMS I (PRMESG   /NOT A LEGAL KEYWORD
+/      ERRCMD
+\fERR2, CIF CDF 0
+       JMP I (NOCCL
+
+BADVNO,        JMS I (PRINT
+       BADVMS
+       JMS I (VERTN
+       JMP I (LEAVE    /GO AWAY
+\f/TEST END OF TABLE
+
+USRSUB,        0
+       TAD I (REMD
+       SMA CLA
+       JMP REGO        /REMEMBERED A NEW LINE
+       TAD I (FLAG     /WANT TO
+       AND (70
+       CLL RTR
+       RAR
+       TAD (-1         /IN THIS REM-LINE
+       DCA UREM
+       JMS I (FOREVER  /NO DATE
+       JMS I (REMEM
+UREM,  0
+       JMP I USRSUB
+\fTWAIT,        0
+       DCA WFL
+       JMS BATCH
+       JMP TW          /BATCH NOT RUNNING
+       CLA             /WE'RE RUNNING UNDER BATCH
+       JMP I TWAIT
+TW,    TSF
+       SKP             /WAIT FOR THINGS TO QUIET DOWN
+       JMP I TWAIT
+LVNO,  AND I 0         /WASTE SOME TIME
+KFAKBM,        AND I 4
+KENTRY,        600
+       ISZ WFL
+       JMP TW
+       JMP I TWAIT     /CAN'T WAIT TOO LONG
+WFL,   0
+
+/SKIP IF BATCH IS RUNNING AND PUT CIF BATCH FIELD IN AC
+
+BATCH, 0
+       CDF 0
+       TAD I (7777
+       CDF 10
+       DCA BWORD
+       TAD BWORD
+       RTL
+       SNL CLA         /IS BATCH RUNNING?
+       JMP I BATCH     /NO
+       TAD BWORD       /YES
+       AND (70         /ISOLATE FIELD OF BATCH
+       TAD KCIF        /FORM CIF TO THE HIGHEST FIELD
+       ISZ BATCH       /AND TAKE SKIP RETURN WITH IT IN AC
+       JMP I BATCH
+\fBWORD,        0
+       PAGE
+\f/WE FALL INTO THIS FROM LITERAL ON PREVIOUS PAGE
+MONFIX,        JMS I (RDMON
+       CDF 0
+       TAD I ZERO
+       TAD (-7607
+       SNA CLA
+       JMP I PCCER3    /ALWAYS WRITE OUT CCL BLOCK
+       CDF 10
+       CIF 0
+       JMS I L7607
+       4200            /WRITE 1 RECORD FROM FIELD 0
+       400             /LOCATIONS 400-777
+       CCLBLK          /INTO THE SYSTEM'S CCL BLOCK
+       JMP I (IOERR
+       CDF 0
+       TAD I (2000+CCLSW
+       TAD (-PRQMRK
+       SNA
+       JMP MONOK
+       TAD (PRQMRK-GETCCL
+       SZA CLA
+       JMP I PCCER3
+/      CIF CDF 0
+/      JMP I L7605
+MONOK, TAD (GETCCL
+       DCA I (2000+CCLSW
+       STA
+       DCA I (2000+DEASADR     /DELETE DEASSIGN
+       JMS WRMON
+       JMS I (LOOK
+       YFORT           /LOOK FOR FORT.SV
+       TAD (YF4-YFORT  /NOT FOUND, USE F4
+       TAD (YFORT      /FOUND USE IT
+       DCA I (FORTE
+       TAD I (FORTE
+       TAD (-YFORT
+       SZA CLA
+       TAD (YLOAD-YLOADER      /F4
+       TAD (YLOADER
+       DCA I (LOADE
+       JMP I (WRITFT   /UNKLUTZ
+\fL200,
+WRMON, 200
+       CDF 10
+       CIF 0
+       JMS I L7607
+       4200
+L2400, 2400
+       10
+       JMP I (IOERR
+       JMP I WRMON
+\fMONRES,       0
+       JMS I (RDMON
+       CDF 0
+       TAD (PRQMRK
+       DCA I (2000+CCLSW
+       TAD (-405
+       DCA I (2000+DEASADR
+       JMS WRMON
+       JMP I MONRES
+
+L7605,
+SETLPT,        7605            /COULD BE ONCE ONLY
+       TAD KLPTDEV
+       JMS SETDEV
+       JMP I SETLPT
+
+L7607, 7607
+
+M7607,
+SETTTY,        -7607
+       TAD KTTYDEV
+       JMS SETDEV
+       JMP I SETTTY
+
+PCCER3,
+SETPTP,        CCER3
+       TAD (PTPDEV
+       JMS SETDEV
+       JMP I SETPTP
+
+ZERO,                  /STAYS 0 FOR A WHILE
+SETDEV,        0               /V1A ARG NOW IN AC
+       DCA DEVPTR
+       CLL STA RAL     /-2
+       JMS I (MOVE
+       CDF 0
+DEVPTR,        LOC78
+       CDF 10
+       DVNM1
+       JMS I (SETOUT
+       JMP I SETDEV
+
+P4,    SETDEV
+KLPTDEV,LPTDEV
+
+P5,    SETDEV
+KTTYDEV,TTYDEV
+\fFAKE, CIF CDF 0
+       TAD (MSOVL2
+       DCA I (OV       /RESTORE LOC SO DATE CMD W ARGS WILL WORK
+       JMP I (FAKBM
+
+PTCH,  CDF 0
+       DCA I (VLOC
+       TAD I (OS78BIT
+       AND (200        /       78
+       SZA CLA         /       OR
+       TAD (1000       /       /8
+       TAD (5770
+       DCA I DEVPTR
+       CDF 10
+       JMS I (PRMESG
+       VMES
+       PAGE
+\f      COLWRD          /NEEDED BY SET
+GO,    JMS I (SCAN     /ADVANCE SCAN UNTIL AFTER SPACES
+GO2,   TAD I PTR       /GET FLAG
+       DCA FLAG        /SAVE IT
+       TAD DELIM
+       SNA CLA         /IS TYPED LINE EMPTY AFTER KEYWORD?
+       TAD FLAG        /AND IS SPECIAL REMEMBERING BITS ON?
+       CLL RTR
+       RAR             /AND HAS GOD WILLED US TO REMEMBER?
+       AND (7          /AND ARE THE ZODIAK SIGNS FAVORABLE?
+       SNA
+       JMP NORM        /NO
+       TAD REMD        /YES, GET REM-LINE (SUBTRACT 1)
+       DCA REMD
+       CDF 0
+       TAD I (BEGLN
+       CDF 10
+       DCA NMPTR
+       JMS I (RECALL   /RECALL LINE
+REMD,  -1              /-1 MEANS DIDN'T RETRIEVE A REMEMBER LINE
+       DCA DEPN        /SAVE DEPENDENT INFO
+       TAD NMPTR
+       SZA CLA         /EG COMMAND?
+       JMP NORM        /NO
+       ISZ DELIM       /YES
+       TAD DEPN
+       DCA PTR         /RESET PTR FROM CMD DEPENDENT WORD
+       JMP GO2
+\fNORM, TAD FLAG
+L7700, SMA CLA
+       JMP CHAINN      /SKIP ENTRIES IF NO CD
+       ISZ PTR         /POINT TO DEFAULT INPUT EXTENSION
+       TAD I PTR       /GET DEFAULT INPUT EXTENSION PTR
+       DCA DEFALT      /SAVE IT
+       TAD (7641
+       DCA XR
+       TAD FLAG
+       JMS I (GAMFLG
+       DCA I XR        /STORE AWAY IN C.D. OPTION TABLE
+       DCA I XR        /V3D ZERO OPTION WORDS
+       DCA I XR
+       DCA I XR
+       DCA I XR        /ZERO L.O. =
+STOLUP,        ISZ PTR
+       TAD I PTR
+       SNA
+       JMP STODON
+       DCA NTEMP
+       ISZ PTR
+       TAD I PTR       /GET VALUE
+       DCA I NTEMP     /STORE IN SPECIFIED LOCATION
+       JMP STOLUP
+STODON,        TAD FLAG
+       AND (400
+       SZA CLA
+       JMS I (INSARR   /INSERT BACK ARROW IF FLAG BIT SET
+       JMS I (CD       /PERFORM COMMAND DECODE IF FLAG BIT
+                       /0 SET
+CHAI,  TAD FLAG
+       RAL
+       SMA CLA         /IS SPOOLING PROHIBITED?
+       JMS I (SPOOLIT  /NO
+CHAINN,        ISZ PTR         /POINT TO AFTER CD SUBR
+       TAD I PTR       /GET SUBR ADDRESS
+       JMS I (JMSUB
+       TAD I (DEFILE
+       SZA             /IS THERE A FILENAME SET TO CHAIN TO?
+       JMP ZOW         /YES
+       ISZ PTR         /NO, POINT TO FILENAME
+       TAD I PTR
+       SNA
+       JMP I (LEAVE    /NO FILE TO CHAIN TO
+ZOW,   DCA NMPTR
+       JMS LOOK        /LOOKUP FILE
+NMPTR, 0
+       JMP I (CCER1    /NOT FOUND
+CHAIN, JMS I (200      /CHAIN TO IT
+       6               /CHAIN
+DEPN,                  /REM LINE DEPENDENT INFO
+BLK,   0
+/      -----
+\f/LOOK, LOOKS UP FILE ON DEVICE .  POINTER IS IN ARG1
+/      ARG2 IS ERROR RETURN IF NOT FOUND
+/DEVICE NUMBER IS IN AC.  IF 0, USE SYS:
+
+LOOK,  0
+       SNA
+       IAC
+       DCA DEV
+       TAD I LOOK      /GET PTR TO FILE NAME IN FIELD 0
+       DCA HISFIL
+       TAD HISFIL
+       AND L7700
+       SNA CLA
+       JMP FLD1        /PTR LT 100 MEANS IN FIELD 1
+       TAD (-3
+       JMS I (MOVE     /MOVE IT UP
+       CDF 0
+HISFIL,        0
+       CDF 10
+PFILDMY,FILDMY
+       TAD PFILDMY
+SETN,  DCA NAMPTR      /STORE AWAY PTR TO FILENAME
+       ISZ LOOK        /POINT TO ERROR RETURN
+       TAD DEV         /GET DEVICE NUMBER
+       JMS I (200
+       2               /LOOKUP
+NTEMP,
+NAMPTR,        0
+       0
+       JMP I LOOK      /TAKE ERROR RETURN IF NOT FOUND
+       TAD NAMPTR      /STORE STARTING BLOCK # IN 'BLK'
+       DCA BLK
+       ISZ LOOK        /POINT TO NORMAL RETURN
+       JMP I LOOK      /RETURN
+\fFLAG, 0
+DEV,   0
+
+FLD1,  TAD HISFIL
+       JMP SETN
+       PAGE
+\fXEXE, 5033;   EXTEXE; 7643;40;0;      EXSUB;  YPAL8   /EXECUTE MUST BE FIRST FOR TECO EG
+XBAC,  0;                              TRMSUB; YCAMP   /BACKSPACE (OR TERMINATE)
+                                                       /MUST BE 2ND FOR OS78
+XBAS,  0;                              BASUB;  YBASIC  /BASIC
+XDUPL, 4001;   STAR;   0;              0;      YRXCOP  /DUPLIC
+XBOO,  0;                              0;      YBOOT   /BOOT
+XCCL,  0;                              MONRES; 0       /CCL
+XCOMPA,        4001;   EXTNUL; 0;              SETTTY; YSRCCOM /COMPARE
+XCOMPI,        5033;   EXTCOM; 0;              EXSUB;  YPAL8   /COM
+XCOP,  4001;   STAR;   7643;1;0;       MOVRT;  YFOTP   /COPY
+XCOR,  0;                              DETCOR; 0       /MEMORY
+XCREA, 4400;   EXTNUL; 0;              CRSUB;  YEDIT   /CREATE
+XCREF, 4002;   EXTCF;  7643;1000;0;    0;      YPAL8   /CREF
+XDAT,  0;                              DATE;   0       /DATE
+XDEL,  4001;   STAR;   7643;401;0;     KILRT;  YFOTP   /DELETE
+XDEA,  0;                              DEASSIG;0       /DEASSIGN
+XDIR,  4001;   STAR;   7646;COLWRD,0;0;SETTTY; YDIRECT /DIRECT
+XEDI,  5220;   EXTNUL; 0;              EDSUB;  YEDIT   /EDIT
+XEOF,  0;                              0;      YCAMP   /EOF
+XHEL,  4001;   STAR;   7644;20;0;      SETTTY; YHELP   /HELP
+XLINK, 5033;   EXTLI;  0;              EXSUB;  YLINK   /LINK
+XMAC,  5033;   EXTMA;  0;              EXSUB;  YMACREL /MAC
+XLIS,  4001;   STAR;   7644;10;0;      SETLPT; YFOTP   /LIST
+XLOA,  5031;   EXTLO;  0;              EXSUB;  YABSLDR /LOAD
+XMAK,  0;                              MAKSUB; YTECO   /MAKE
+XMAP,  4001;   EXTBN;  0;              SETTTY; YBITMAP /MAP
+XMUN,  0;                              MNGSUB; YTECO   /MUNG
+XPAL,  5033;   EXTPA;  0;              EXSUB;  YPAL8   /PAL
+XPRI,  4000;   STAR;   0;              SETLPT; YLPTSPL /PRINT
+XPUN,  4001;   EXTNUL; 0;              SETPTP; YPIP    /PUNCH
+XREN,  4001;   STAR;   7643;1;7644;100;0;RENRT;YFOTP   /RENAME
+XRES,  4001;   EXTSY;  0;              SETTTY; YRESORC /RESOURCES
+XREW,  0;                              0;      YCAMP   /REWIND
+XSET,  0;                              0;      YSET    /SET
+XSKI,  0;                              0;      YCAMP   /SKIP
+XSQU,  4001;   EXTNUL; 7644;40;0;      SQSUB;  YPIP    /SQUISH
+XSUB,  4000;   EXTBI;  0;              0;      YBATCH  /SUBMIT
+XTEC,  10;                             TECSUB; YTECO   /TECO
+XTYP,  4001;   STAR;   7644;10;0;      SETTTY; YFOTP   /TYPE
+XUNL,  0;                              0;      YCAMP   /UNLOAD
+XUA,   40;                             USRSUB; 0       /UA
+XUB,   50;                             USRSUB; 0       /UB
+XUC,   60;                             USRSUB; 0       /UC
+XVER,  0;                              VERTN;  0       /VERSION
+XZER,  4401;   EXTNUL; 7645;2000;0;    ZERSUB; YPIP    /ZERO
+XAT,   0;                              YAT;    0       /@
+       ZBLOCK 13
+
+GAMFLG,        0
+       CDF 0
+       TAD I PAMFLAG   /COMBINE ALTMODE BITS
+       CDF 10
+       RAR             /IN POSITION 11
+       CLA RAR         /PUT NEW ALTMODE BIT ALONE IN BIT 0
+       JMP I GAMFLG
+PAMFLAG,AMFLAG
+\fTRMSUB,       0
+       CDF 0
+       TAD I POS78
+       CDF 10
+       AND R200
+       SNA CLA
+       JMP I TRMSUB    /BACKSPACE, NOT TERMINATE
+       6073
+       6002
+       CLA             /JUST IN CASE WE'RE NOT ON A VT-78
+       JMS I PPRM
+       BADEV
+POS78, OS78BIT
+R200,  200
+PPRM,  PRMESG
+\fPTBL, XEXE
+       XBAC
+       XBAS
+       XDUPL
+       XBOO
+       XCCL
+       XCOMPA
+       XCOMPI
+       XCOP
+       XCOR
+       XCREA
+       XCREF
+       XDAT
+       XDEL
+       XDEA
+       XDIR
+       XEDI
+       XEOF
+       XHEL
+       XLINK
+       XMAC
+       XLIS
+       XLOA
+       XMAK
+       XMAP
+       XMUN
+       XPAL
+       XPRI
+       XPUN
+       XREN
+       XRES
+       XREW
+       XSET
+       XSKI
+       XSQU
+       XSUB
+       XTEC
+       XTYP
+       XUNL
+       XUA
+       XUB
+       XUC
+       XVER
+       XZER
+       XAT
+       ZBLOCK 4
+\fSTAR, 5200;   0
+       0;      0
+
+
+EXTSY, 2331;   0
+       0;      0
+EXTBI, 0211;   0
+       0;      0
+EXTCF, 2001;   COMPA
+/EXTLS,        1423;   COMLS
+       0;      COMPA
+EXTMA, 1501;   COMMA
+       0;      COMMA
+EXTPA, 2001;   COMPA
+       0;      COMPA
+EXTBN, 0216;   0
+       0;      COMBN
+/EXTHL,        1014;   0
+/      0;      0
+EXTNUL,        0;      0
+EXTLO, 0216;   COMBN   /BN
+       2214;   COMRL   /RL
+EXTLI, 2202;   COMRB   /RB
+       0;      0
+EXTCM, 0315;   0
+       0;      0
+\fEXTEXE,       2001;   COMPA   /PA
+       0624;   COMFT   /FT
+       0201;   COMBA   /BA
+       1501;   COMMA   /MA
+       0216;   COMBN   /BN
+       2214;   COMRL   /RL
+       2201;   COMRA   /RA
+       2302;   COMSB   /SB
+       2202;   COMRB   /RB
+       1404;   COMLD   /LD V3C
+       0211;   COMBI   /BI
+       0;      0
+       ZBLOCK 4
+EXTCOM,        2001;   COMPA   /PA
+       0624;   COMFT   /FT
+       1501;   COMMA   /MA
+       0201;   COMBA   /BA
+       2201;   COMRA   /RA
+       2302;   COMSB   /SB
+       0;      0
+       ZBLOCK 4
+       IFZERO .&7600-3200 <PAGE>
+\fCOMBN,        0
+       JMS USUAL
+       0216
+       YABSLDR
+       JMP I COMBN
+
+COMRL, 0
+       JMS USUAL
+       2214
+LOADE, YLOAD           /MAY BECOME YLOADER
+       JMP I COMRL
+
+COMPA, 0
+       JMS USUAL
+       2001
+       YPAL8
+       JMP I COMPA
+
+COMFT, 0
+       JMS USUAL
+       0624
+FORTE, YF4             /COULD BE CHANGED TO YFORT BY .R CCL
+       JMP I COMFT
+
+COMBA, 0
+       JMS USUAL
+       0201
+       YBCOMP
+       JMP I COMBA
+
+COMRA, 0
+       JMS USUAL
+       2201
+       YRALF
+       JMP I COMRA
+\fCOMSB,        0
+       JMS USUAL
+       2302
+       YSABR
+       JMP I COMSB
+
+COMRB, 0
+       JMS USUAL
+       2202
+       YLINK
+       JMP I COMRB
+
+COMMA, 0
+       JMS USUAL
+       1501
+       YMACREL
+       JMP I COMMA
+
+COMBI, 0
+       JMS USUAL
+       0211
+       YBATCH
+       JMP I COMBI
+
+COMLD, 0
+       JMS USUAL
+       1404
+       YFRTS
+       JMP I COMLD
+\fDEFILE,       0               /PTR TO FILENAME TO CHAIN TO
+
+/COMLS,        0
+/      TAD I (EXTLS
+/      DCA SETEXT
+/      TAD (YCREF
+/      DCA DEFILE
+/      ISZ I (DONB     /CREF FOO.LS MAKES NO BINARY
+/      JMP I COMLS
+
+RDMON, 0
+       CDF 10
+       CIF 0
+       CLA
+       JMS I (7607
+       0400            /READ 2 RECORD
+       2000            /LOCATION 2000 FIELD 0
+       7               /BLOCK 7,10
+       JMP I (IOERR
+       JMP I RDMON
+
+USUAL, 0
+       TAD I USUAL
+       DCA SETEXT
+       ISZ USUAL
+       TAD I USUAL
+       DCA DEFILE
+       ISZ USUAL
+       JMP I USUAL
+\fUNKN, 0
+       TAD SETEXT
+       SZA
+       TAD T           /NEG OF SWITCH REQUEST
+       SZA CLA
+       JMP I (CCERA    /CAN'T HAVE 2ND DEFAULT EXTENSION
+       TAD T
+       CIA
+       DCA SETEXT      /SET DEFAULT EXTENSION
+       TAD DEFALT      /SEE IF IT'S IN COMMAND'S SEARCH LIST
+       DCA DEF
+       TAD SETEXT
+       JMS I (EXTLUK
+       SNA CLA         /DID WE FIND IT?
+       JMP I (CDER4    /NO
+       ISZ DEF         /YES
+/      TAD I (JMSUB    /ALLOW RECURSIVE CALL
+/      DCA HOLD
+       TAD I DEF
+       JMS I (JMSUB    /CALL ITS SUBR
+/      TAD HOLD
+/V1A RECURSIVE CALL NO LONGER THREATENS
+/      DCA I (JMSUB
+       JMP I UNKN
+
+SETEXT,        0               /EXT WHICH HAS BEEN SET BY A CCL SWITCH
+
+SEMERR,        TAD (SEMSG-1
+       DCA UNKN
+       TAD I UNKN
+       DCA .+2
+       JMS I (PRMESG
+       SEMSG1
+\fWRITFT,       JMS I (LOOK
+       YCCL
+       JMP I (IOERR    /CCL.SV NOT FOUND
+       TAD I (BLK
+       TAD (4          /*3400 IS 4TH BLOCK OF CCL NOT COUNTING CCB
+       DCA FBLK
+       CDF 10
+       CIF 0
+       JMS I (7607
+       4210            /WRITE 1 RECORD FROM FIELD 1
+       3400            /LOCS 3400-3777
+FBLK,  0
+       JMP I (IOERR
+       CIF CDF 0
+       JMP I (7605
+       PAGE
+\fCD,   0
+       JMS I (200
+       13              /RESET ALL HANDLERS
+       JMS I (CDINIT
+BEGGRP,        TAD OUTSW
+       SNA CLA
+       TAD I (BEGDIF   /DIFF BETWEEN INPUT & OUTPUT AREAS
+       TAD (MOFILE-1
+       DCA CLXR
+       JMS I (GETSPC
+       JMS I (ASSIGN
+       TAD OUTSW
+       SNA CLA
+       TAD I (LIMDIF   /DIFF BETWWEN END OF OUTPUT & INPUT AREAS
+       TAD I (OUTLIM   /END OF OUTPUT AREA
+       TAD CLXR
+       SMA CLA
+       JMP I (CDER1
+       JMS I (CCLSWT
+       TAD OUTSW
+       SNA CLA
+LKUPSW,        JMP INFILE      /ZEROED IF IN "SPECIAL DECODE" MODE
+       TAD I (DVICE
+       JMS PCLXR
+       TAD NAME1
+       JMS PCLXR
+       TAD NAME2
+       JMS PCLXR
+       TAD NAME3
+       JMS PCLXR
+       TAD NAME4
+       JMP LSTPUT
+INFILE,        JMS I (LOOKUP
+       JMS PCLXR       /STORE LENGTH AND DEV NUMBER
+       TAD I (LNAME    /GET BLOCK
+LSTPUT,        JMS PCLXR
+       TAD OUTSW
+       SNA CLA
+       TAD I (FLAG
+       CLL RTL
+       SPA CLA         /FEATURE ENABLED?
+       TAD LKUPSW
+       SNA CLA
+       JMP DLOOK       /IN SPECIAL MODE OR ON OUTPUT SIDE
+       TAD DONB
+       SZA CLA
+       JMP NBS
+       TAD (7600       /V1A NOW TAKES ARG IN AC
+       JMS I (NMOVE    /MOVE NAME TO OUTPUT FILE NAMES
+       JMP DLOOK
+\fNBS,  DCA DONB        /ZERO 1ST OUTPUT FILE
+       TAD (7577
+       DCA XR2
+       DCA I XR2
+       DCA I XR2
+       DCA I XR2
+       DCA I XR2
+       DCA I XR2
+DLOOK, STA
+       DCA I (DVFLAG
+       TAD DELIM
+       SNA
+       JMP I CD
+       TAD (-"[
+       SNA
+       JMP I (OLENGT
+       TAD ("[-",
+       SNA
+       JMP I (FILLP    /**** JUMPING INTO ROUTINE (IS THIS A BUG?)
+       TAD (",-"<
+       SNA
+       JMP BKAROW
+       TAD ("<-"=
+       SZA CLA
+       JMP I (CDER2    /BAD CHAR
+/ THIS STUFF WOULD ALLOW = AS WELL AS < AND _
+/*** HAVE TO FIX 'BKA' ROUTINE
+/      JMS I (GLXR
+/      JMS I (DECODE
+/      STL
+/      STA             /LINK=0 MEANS LETTER
+/      TAD LXR         /NOW LINK=1 MEANS LETTER
+/      DCA LXR
+/      SZL
+/      JMP BKAROW
+       DCA I (NUMFUJ
+       JMS I (NUMBER
+       DCA I (MPARAM+3
+       CLA CLL CML RAR
+       AND I (MPARAM-1 /PRESERVE  ALTMODE
+       TAD I (HIORD
+       DCA I (MPARAM-1
+       JMS I (CCLSWT
+       JMP DLOOK
+BKAROW,        ISZ OUTSW
+       JMP I (CDER2    /TWO BACK-ARROWS
+       TAD LXR         /GET PTR TO ARROW
+       DCA I (ARLOC    /SAVE IT ('EDIT' MIGHT NEED IT)
+       JMP BEGGRP
+
+PCLXR, 0
+       ISZ CLXR
+       DCA I CLXR
+       JMP I PCLXR
+\fDONB, 0               /ENTRY PT USED AS FLAG
+       JMP I DONB
+
+OUTSW, -1              /-1 MEANS ON OUTPUT SIDE, 0 ON INPUT SIDE
+
+P6,    SETDEV
+       TVDEV
+       PAGE
+\fNUMBER,       0
+       SZA CLA
+       TAD (NUM&177+1200-SKP
+       TAD (SKP
+       DCA NUMADD/SET NUMADD TO EITHER "SKP" OR "TAD NUM"
+       DCA HIORD
+NUMLP, DCA NUM
+       JMS I (GCH
+       ISZ NUMKNT
+       SKP
+       JMP EONUM2
+       CMA
+       TAD NUMFUJ
+       TAD ("8         /TEST INPUT CHARACTER FOR RANGE
+       CLL CMA         /0-7 IF NUMFUJ=0
+       TAD (10         /0-9 IF NUMFUJ=2
+       TAD NUMFUJ
+       SNL
+       JMP EONUM
+       DCA T
+       CLA CLL CMA RTL
+       DCA DELIM
+       TAD NUM
+ROTLP, CLL RAL
+       DCA NUMX
+       TAD HIORD
+       RAL
+NUMSKP,        SPA             /MODIFIED BY #
+       JMP I (CDER5
+       DCA HIORD
+       TAD NUMX
+       ISZ DELIM
+       JMP ROTLP
+NUMADD,        TAD NUM         /SKP IF OCTAL
+       TAD NUM
+       TAD T
+       JMP NUMLP
+EONUM, TAD ("0
+EONUM2,        DCA DELIM
+       TAD NUMKNT
+       SPA CLA
+       JMP I (CDER5    /FEWER THAN CORRECT NUMBER OF DIGITS
+       TAD NUM
+       JMP I NUMBER
+
+NUM,   0
+NUMFUJ,        0
+NUMKNT,        0               /SET TO -N-1 TO FORCE N DIGITS
+HIORD, 0
+\fASSIGN,       0
+       TAD CLXR
+       AND I (DVFLAG
+       TAD I (OUTLIM
+       SMA SZA CLA     /CHECK FOR OUTPUT OR FIRST INPUT
+       JMP ASNORM      /IF DEVICE WAS SPECIFIC,
+                       /OR IF WE ARE ON THE INPUT SIDE,
+                       /PROCEED NORMALLY
+       TAD NAME1
+       SNA CLA
+       JMP ASGNST
+       TAD DFLTNM+1
+       DCA DEV2
+       TAD DFLTNM
+       DCA DEV1
+ASNORM,        TAD DEV1
+       DCA AS+1
+       TAD DEV2
+       DCA AS+2
+       TAD I (OUTSW
+       SNA CLA         /DON'T LOAD HANDLER
+                       /IF WE ARE ON OUTPUT SIDE OF "_"
+       TAD NAME1
+SPKLG1,        SNA CLA         /OR THERE IS NO FILE NAME TO LOOK UP
+       TAD GETHND      /GETHND=11 NORMALLY,
+                       /0 IF IN "SPECIAL DECODE" MODE
+       IAC
+       DCA AS
+       TAD (HNDLR+1    /ALLOW TWO PAGE HANDLERS
+       DCA ASADR
+       CIF 10
+       JMS I (200
+NUMX,
+AS,    0
+       0
+       0
+ASADR, HNDLR+1
+       JMP I (CDER0
+       TAD AS+2
+ASGNST,        DCA I (DVICE
+       JMP I ASSIGN
+\fDFLTNM,       DEVICE DSK
+GETHND,        11              /1+11=12 (1=FETCH, 12=INQUIRE)
+
+LOVE,  0
+       TAD NAME1
+       TAD (-1417
+       SZA CLA
+       JMP I LOVE
+       TAD NAME2
+       TAD (-2605
+       SZA CLA
+       JMP I LOVE
+       TAD NAME3
+       TAD NAME4
+       SZA CLA
+       JMP I LOVE
+       JMS I (PRINT
+       LOVMES
+       JMP I LOVE
+
+FILDMY,        FILENAME DUMMY.SV
+
+SEMSG, SEMSG1
+       SEMSG2
+       SEMSG3
+       SEMSG4
+       PAGE
+\f/GETS A NAME FROM FIELD ZERO BUFFER VIA LXR
+/RETURNS WITH DELIMETER IN AC
+/GIVES ERROR MESSAGE IF NAME IS BAD
+
+TN,                    /DON'T CALL CCLSWT FROM GNAME UNLESS THIS IS MOVED
+GNAME, 0
+       DCA NAME1
+       DCA NAME2
+       DCA NAME3
+       DCA NAME4
+       TAD (NAME1
+       DCA NMBASE
+       CLA CMA
+       DCA PERDSW
+       DCA NAMECT
+       JMS I (GCH
+       TAD (-"#
+       SNA
+       JMP NUMCON
+       TAD ("#
+       SKP
+GTNMLP,        JMS I (GCH
+       DCA DELIM
+       TAD DELIM
+       TAD (-"?
+       SZA
+       TAD ("?-"*
+       SNA
+STARSW,        JMP I (CDER6    /"JMP STARNM"
+                       /IF "SPECIAL DECODE" MODE
+       TAD ("*-".
+       SNA CLA
+       JMP PERIOD
+       TAD DELIM
+       JMS I (DECODE
+       JMP LV
+STARNM,        CLA             /THIS CODE HANDLES *'S AND ?'S CORRECTLY
+       TAD DELIM
+       AND (77
+       DCA DELIM
+       TAD NAMECT
+       TAD (-6
+       SMA CLA
+       JMP GTNMLP
+       TAD NAMECT
+       CLL RAR
+       TAD NMBASE
+       DCA TT
+       TAD DELIM
+       SNL
+       JMS I (ROTL
+       TAD I TT
+       DCA I TT
+       ISZ NAMECT
+       JMP GTNMLP
+PERIOD,        TAD NAME1
+       SZA CLA
+       ISZ PERDSW
+       JMP I (CDER7    /NULL NAME OR DOUBLE EXTENSION
+       ISZ NMBASE
+       TAD (4
+       DCA NAMECT
+       JMP GTNMLP
+\fCCLSWT,       0
+       TAD DELIM
+       TAD (-"-
+       SZA CLA
+       JMP I CCLSWT
+       TAD I (OUTSW
+       SZA CLA
+       JMP I (CDER4    /CCL EXT ON OUTPUT FILE
+       TAD (SWTCHS
+       DCA DEF
+       JMS GETL
+       JMP I (CDER44   /NON-ALPHANUMERIC CCL SWITCH
+       JMS I (ROTL
+       DCA TN
+       JMS GETL
+       JMP XLK2        /ONE CHAR CCL SWITCH
+       TAD TN
+       DCA TN
+       JMS GETL
+XLK2,  SKP CLA         /2 CHAR CCL SWITCH
+       JMP I (CDER44   /3 CHAR CCL-SWITCH
+       TAD TN
+       JMS I (EXTLUK
+       CLA
+       ISZ DEF
+       TAD I DEF
+       DCA GETL        /GET PTR TO ARGUMENT PAIR
+       TAD I GETL      /GET SUBROUTINE
+       DCA PERDSW
+       ISZ GETL
+       TAD I GETL      /GET ARGUMENT
+       JMS I PERDSW    /CALL SUBR, ARG IN AC
+       JMP CCLSWT+1
+\fGETL, 0
+       JMS I (GCH
+       DCA DELIM
+       TAD DELIM
+       JMS I (DECODE
+       JMP I GETL      /NON-ALPHANUM IN CCL SWITCH
+       CLA
+       TAD DELIM
+       AND (77
+       ISZ GETL
+       JMP I GETL
+
+NUMCON,        JMS I (NUMC
+LV,    CLA
+       TAD DELIM
+       JMP I GNAME
+
+PERDSW,        0
+NAMECT,        0
+       PAGE
+\fLOOKUP,       0
+       DCA LNAME
+       TAD NAME1
+       SNA CLA
+       JMP LKUPST
+       TAD I (PERDSW
+       TAD NAME4
+       SNA CLA
+       CLA IAC         /FORCE NAMERM NON-0 IF . AND NO EXT
+       TAD NAME4
+       DCA NAMERM      /REMEMBER TYPED EXTENSION
+       TAD DEFALT
+       DCA DEF
+       TAD I (SETEXT
+       SNA             /HAS AN EXTENSION BEEN SET?
+       TAD NAMERM      /NO
+       SNA             /DOES FILE HAVE EXTENSION?
+       JMP EXT2        /NO EXTENSION TYPED OR SET, DO SUCCESSIVE LOOK-UPS
+       JMS EXTLUK      /LOOK FOR EXTENSION
+       SNA CLA         /DID WE FIND IT?
+       JMP EXT3        /NO, FORCE NULL EXTENSION TO MATCH
+EXT2,  TAD I DEF
+       IAC
+       SNA CLA
+       JMP NEXTEXT     /IGNORE -1'S
+       TAD NAMERM
+       SZA CLA
+       JMP EXT3
+       TAD I DEF
+       DCA NAME4       /SET NEW EXTENSION
+EXT3,  TAD (NAME1
+       DCA LNAME
+       TAD I (AS+2
+       JMS I (200
+       2
+LNAME, 0               /NAME1
+LENGTH,        0
+       JMP LFAILD
+       ISZ DEF         /POINT TO FOLLOW-UP SUBROUTINE
+       TAD I DEF
+       JMS JMSUB       /CALL IT
+       TAD LENGTH
+       CLL
+       TAD (400
+       SNL
+CLACON,        7600            /CLA
+       CLL RTL
+       RTL
+       AND (7760
+LKUPST,        TAD DVICE
+       JMP I LOOKUP
+\fLFAILD,       TAD NAMERM
+       SNA CLA         /WAS THERE AN EXPLICIT EXTENSION?
+       TAD I DEF       /NO - WAS THERE A DEFAULT EXTENSION?
+       SNA CLA
+       JMP I (CDER3    /NO DEFALT EXTENSION OR YES EXPLICIT EXTENSION
+NEXTEXT,ISZ DEF                /NO EXPLICIT EXT AND YES DEFAULT EXT
+       ISZ DEF         /POINT TO NEXT POSSIBLE DEFAULT EXTENSION
+       JMP EXT2        /AND TRY FOR IT
+
+NAMERM,        0
+DVICE, 0
+
+EXTLUK,        0
+       CIA
+       DCA T
+XLUK,  TAD I DEF
+       SNA             /AT NULL?
+       JMP I EXTLUK    /YES
+       TAD T           /NO
+       SNA CLA         /MATCH?
+       JMP MAT         /YES
+       ISZ DEF         /NO
+       ISZ DEF         /POINT TO NEXT ENTRY
+       JMP XLUK        /TRY AGAIN
+MAT,   TAD I DEF       /RETURN WITH IT IN AC
+       JMP I EXTLUK
+
+TS,
+ZERSUB,        0
+       TAD I (7601
+       SNA CLA         /WAS FILENAME SPECIFIED ON ZERO CMD?
+       TAD I CLACON    /OR WAS NO OUT DEVICE SPECIFIED?
+       SNA CLA
+       JMP I (CDER2    /YES... ERROR
+       JMP I ZERSUB    /NO, OKAY.
+\fIOERR,        JMS I (PRMESG
+       SYSER
+
+EXSUB, 0
+       TAD BASPTR      /PUSH PTR BACK TO BEGIN OF ENTRIES
+       JMS I (REMEM    /REMEMBER THIS IN DEPENDENT WORD
+       2
+       JMP I EXSUB
+
+JMSUB, 0
+       SNA
+       JMP I JMSUB
+       DCA TS
+       JMS I TS
+       JMP I JMSUB
+\fSPOOLIT,0
+       JMS I (BATCH    /IS BATCH RUNNING?
+       JMP I SPOOLIT   /NO
+       DCA CB          /YES
+       TAD I DEFALT
+       TAD (-5200
+       SNA CLA
+       TAD I DEFALT    /LEAVE 5200 IN AC IF SPECIAL MODE
+CB,    HLT             /CIF TO FIELD OF BATCH
+       JMS I (BATSPL   /ALLOW BATCH TO SPOOL STUFF
+       JMP I SPOOLIT
+
+GOO,   TAD PTR
+BASPTR,        DCA BASPTR
+       JMP I (GO
+       PAGE
+\fSLSHCH,       0
+       DCA DELIM
+       TAD (MPARAM-1
+       DCA T
+       TAD DELIM
+       JMS DECODE
+       JMP CDER8
+       SZL
+       TAD (32
+       CMA STL         /THE FOLLOWING TURNS
+                       /ON THE CORRECT OPTION BIT
+       DCA TT
+SLSHLP,        SZL
+       ISZ T
+       RAR
+       SNL
+       ISZ TT
+       JMP SLSHLP
+       DCA TT
+       TAD TT
+       CMA
+       AND I T
+       TAD TT
+       DCA I T
+       JMP I SLSHCH
+
+/THIS ROUTINE DETERMINES IF THE CHARACTER IN THE AC IS A LETTER OR DIGIT
+/IF LETTER, RETURNS TO RET+1 WITH LETTER-"A IN AC AND LINK=0
+/IF DIGIT, RETURNS TO RET+1 WITH DIGIT-"0 IN AC AND LINK=1
+/IF NEITHER, RETURNS TO RET WITH CHAR-"A IN AC.
+DECODE,        0
+       TAD (-"9-1      /MIGHT BE CALLED WITH ANY DF
+       CLL
+       TAD ("9+1-"0
+       SZL
+       JMP DCDYES
+       TAD ("0-"Z-1
+       CLL CML
+       TAD ("Z-"A+1
+       SNL
+DCDYES,        ISZ DECODE
+       JMP I DECODE
+
+CDER8, CLA
+       JMS I (PRMESG
+       BADOPT
+\fZEROCD,       0
+       TAD (-42        /AC MAY BE NON-0
+       DCA T
+       TAD (MOFILE-1
+       DCA XR
+       DCA I XR        /ZERO THE COMMAND DECODER OUTPUT AREA
+       ISZ T
+       JMP .-2
+       JMP I ZEROCD
+
+GCH,   0
+       JMS GLXR
+       TAD (-240
+       SNA
+       JMP GCH+1
+       TAD (240-"/
+       SNA
+       JMP SLASH
+       TAD ("/-"(
+       SNA
+       JMP OPENP
+       TAD ("(
+       JMP I GCH
+SLASH, JMS GLXR
+       JMS SLSHCH
+/*** CAN'T PUT /A:VAL HERE BECAUSE GCH AINT RECURSIVE
+       JMP GCH+1
+OPENP, JMS GLXR
+       TAD (-")
+       SNA
+       JMP GCH+1
+       TAD (")
+       JMS SLSHCH
+       JMP OPENP
+
+GLXR,  0
+       CDF 0
+       ISZ LXR
+       TAD I LXR
+       CDF 10
+       JMP I GLXR
+\fOLENGT,       TAD I (OUTSW
+       AND NAME1       /[N] IS ONLY LEGAL
+                       /ON THE OUTPUT SIDE OF THE "_"
+       SNA CLA         /AND ONLY AFTER A FILE NAME
+       JMP I (CDER2
+       TAD (-4
+       TAD CLXR
+       DCA NMBASE
+       CLA CLL CML RTL
+       DCA I (NUMFUJ   /SET "NUMBER" TO ACCEPT
+                       /DIGITS 8 AND 9
+       STA             /ALLOW DECIMAL
+       JMS I (NUMBER
+       CLL RTL
+       RTL
+       AND (7760
+       TAD I NMBASE
+       DCA I NMBASE
+       CDF 0
+       TAD DELIM
+       TAD (-"]        /IS THERE A CLOSING BRACKET?
+       SNA             /IF NOT,
+                       /"DLOOK" ROUTINE WILL DETECT IT
+       JMS GCH
+       DCA DELIM
+       JMP I (DLOOK
+\fBASUB,        0
+       TAD (200        /SET /Q SWITCH
+       DCA I (MPARAM+1
+       JMP I BASUB
+       PAGE
+\fPRMESG,       0
+       CLA
+       TAD I PRMESG
+       DCA .+2
+       JMS PRINT
+       HLT
+LEAVE, JMS I (TWAIT
+/V3D   TCF
+       CIF CDF 0
+       TAD FATALFLG
+       SNA CLA
+       JMP I (7605
+FATALFLG,0             /CIF CDF BATCH FIELD IF WANT TO ABORT
+       JMP I (BATERR
+
+PRWD,  0
+       DCA T
+       TAD T
+TTY212,        RTR
+       RTR
+       RTR
+       JMS PCHAR
+       TAD T
+       JMS PCHAR
+       JMP I PRWD
+
+PCHAR, 0
+       AND (77
+       SNA
+       JMP I PCHAR     /IGNORE NULLS
+       TAD (240
+       AND (77
+       TAD (240        /CAN'T USE 'TTY240'
+       JMS TYPE
+       JMP I PCHAR
+
+PRNAME,        0
+       TAD NAME1
+       JMS PRWD
+       TAD NAME2
+       JMS PRWD
+       TAD NAME3
+       JMS PRWD
+       TAD NAME4
+       SNA CLA
+       JMP I PRNAME
+       TAD (256
+       JMS PCHAR
+       TAD NAME4
+       JMS PRWD
+       JMP I PRNAME
+\fTYPE, 0
+       DCA TE2
+       JMS I (BATCH
+       JMP TTYOUT
+       DCA CIFB
+CIFB,  HLT             /REPLACED BY CIF BATCH FIELD
+       TAD TE2
+       JMS I (BATOUT
+       TAD TE2
+       TAD (-"#
+TTY240,        SZA CLA
+       JMP I TYPE
+       TAD CIFB
+       IAC             /CONVERT CIF TO CIF CDF
+       DCA FATALFLG
+       JMP I TYPE
+
+TTYOUT,        TAD TE2
+       TAD (-"#        /DON'T TYPE #'S
+       SNA CLA
+       JMP I TYPE
+       TAD T7600
+       KRS
+       TAD (-7603
+       SNA
+       JMP LEAVE
+       TAD (203-217
+       SNA CLA
+       JMP I TYPE
+       TAD TE2
+TJUMP, JMP .+3
+       TSF
+       JMP .-1
+       TLS
+T7600, 7600
+       TAD (7000
+       DCA TJUMP
+       JMP I TYPE
+\fPRINT,        0
+       DCA CRLF        /AC NON-0 MEANS DON'T CRLF
+       TAD I PRINT
+       ISZ PRINT
+       DCA TE
+PRINTP,        CDF 0
+       TAD I TE
+       CDF 10
+       JMS PRWD
+       CDF 0
+       TAD I TE
+       CDF 10
+       ISZ TE
+       AND (77
+       SZA CLA
+       JMP PRINTP
+       TAD CRLF
+       SNA CLA
+       JMS CRLF
+       JMP I PRINT
+TE,    0
+TE2,   0
+\fCRLF, 0
+       TAD (215
+       JMS TYPE
+       TAD TTY212
+       JMS TYPE
+       JMP I CRLF
+
+CDER2, JMS PRMESG
+       BADSYN
+
+P1,    NMOVE
+       7605
+       PAGE
+\fCCERB,        JMS I (PRMESG
+       BADSW
+CDER1, JMS I (PRMESG
+       TOOMAN
+CDER5, JMS I (PRMESG
+       BADNUM
+CCER1, TAD I (NAMPTR
+       DCA NMX
+       TAD (-4
+       JMS I (MOVE
+       CDF 10
+NMX,   0
+       CDF 10
+       NAME1
+CDER3, TAD (4300
+       JMS I (PRWD     /#
+       JMS I (PRNAME
+       JMS I (PRMESG
+       NF
+
+CCER2, TAD I (DVNM1
+       DCA DEV1
+       TAD I (DVNM2
+       DCA DEV2
+CDER0, TAD DEV1
+       SNA CLA
+       JMP I (CDER2    /B DOES NOT EXIST
+       TAD (4300       /#
+       JMS I (PRWD
+       TAD DEV1
+       JMS I (PRWD
+       TAD DEV2
+       JMS I (PRWD
+       JMS I (PRMESG
+       DNE
+\fKILRT,        0
+       JMS I (PRINT
+       KILMES
+       JMP I KILRT
+
+RENRT, 0
+       JMS I (PRINT
+       RENMES
+       JMP I RENRT
+
+MOVRT, 0
+       JMS I (PRINT
+       MOVMES
+       JMP I MOVRT
+
+SWTCHS,        1423;   P1      /LS
+       1602;   P2      /NB
+       1520;   P3      /MP
+       1400;   P4      /L
+       2400;   P5      /T
+       2300;   P6      /S
+       2000;   P7      /P
+       0400;   P8      /D
+       1600;   P9      /N
+       0000;   P10     /UNKNOWN
+       ZBLOCK 2        /PATCH ROOM FOR USER
+
+P2,    DONB
+       0
+
+P3,    NMOVE
+       7612
+
+P7,    SETDEV
+       PTPDEV
+
+P9,    SETDEV
+       NULDEV
+
+P10,   UNKN
+       0
+\fSCAN, 0
+       TAD (BEGLN
+       DCA T
+       CDF 0
+       JMS BLSCAN      /IGNORE INITIAL SPACES
+       JMP CHK
+NOBLUP,        CLA
+       ISZ T
+       TAD I T
+CHK,   SNA
+       JMP ENDOFB
+       JMS I (DECODE
+       SKP CLA
+       JMP NOBLUP
+       JMS BLSCAN
+ENDOFB,        DCA DELIM
+       STA
+       TAD T
+       CDF 10
+       DCA I (LBEGIN
+       JMP I SCAN
+
+BLSCAN,        0
+       TAD I T
+       TAD (-240
+       SZA
+       JMP BL2
+       ISZ T
+       JMP BLSCAN+1
+BL2,   TAD (240
+       JMP I BLSCAN    /LEAVE CHAR IN AC
+       PAGE
+\f      ALTMODE=233
+
+SETPA, 0
+       JMS I (SETX
+       "P;"A           /KEEP HERE TO MAKE EASY TO PATCH
+       JMP I SETPA
+
+MAKSUB,        0
+       TAD DELIM
+       SNA CLA
+       JMP CMDERR      /DON'T ALLOW MAKE <CR>
+       JMS SETLXR
+       JMS I (GETSPC
+       JMS I (LOVE
+       JMS TECPUT
+       "E;"W;0
+       JMS TECMOV
+       JMS SETPA
+       JMS TECPUT
+       ALTMODE;0
+       JMS I (CHKSUP
+       JMS I (REMEM
+       0
+       JMP I MAKSUB
+
+SETLXR,        0
+       TAD I (LBEGIN
+       DCA LXR
+       TAD (MOFILE-1
+       DCA I (TYR
+       TAD (-5         /ZERO OPTION TABLE TOO
+       JMS I (ZEROCD
+       TAD LXR
+       DCA SAVLXR
+       JMP I SETLXR
+
+/PUT FOLLOWING CHARS INTO TECO BUFFER VIA TXR
+
+TECPUT,        0
+/      TAD NAME1
+/      SNA CLA
+/      JMP I (CDER2
+       TAD I TECPUT
+       ISZ TECPUT
+       SNA
+       JMP I TECPUT
+       JMS I (TPUT
+       JMP TECPUT+1
+\f/MOVE CHARS FROM FIELD 0 LINE BUFFER
+/FROM SAVLXR+1 TO LXR-1 INCLUSIVE
+/INTO TECO LINE BUFFER AT 17600
+
+TECMOV,        0
+       TAD SAVLXR
+       DCA XR2
+       TAD SAVLXR
+       CMA
+       TAD LXR
+       SNA CLA
+       JMP I (CDER2    /NO FILE SPEC
+TECL,  CDF 0
+       TAD I XR2
+       CDF 10
+       JMS I (TPUT
+       TAD XR2
+       CMA
+       TAD LXR
+       SNA CLA
+       JMP I TECMOV
+       JMP TECL
+\fTECSUB,       0
+       JMS SETLXR
+       JMS I (GETSPC
+       TAD DELIM
+       SNA
+       JMP TECNORM
+       TAD (-"<        /ALLOW "_" AS WELL AS "<"
+       SNA
+       JMP EXTEN
+       TAD ("<-"_
+       SZA CLA
+       JMP I (CDER2
+EXTEN, CDF 0
+       DCA I LXR       /CHANGE < TO 0
+       CDF 10
+       JMS TECPUT
+       "E;"W;0
+       JMS TECMOV
+       JMS SETPA
+       TAD LXR
+       DCA SAVLXR
+       JMS I (CHKSUP
+       JMS I (GETSPC
+       JMS TECPUT
+       ALTMODE;"E;"R;0
+       JMS TECMOV
+       JMS SETPA
+       JMS TECPUT
+       ALTMODE;"Y;0
+       JMP TECLV
+\fTECNORM,JMS TECPUT
+       "E;"B;0
+       JMS TECMOV
+       JMS SETPA
+       JMS TECPUT
+       ALTMODE;"Y;0
+TECLV, JMS I (REMEM
+       0
+       JMP I TECSUB
+SAVLXR,        0
+
+CMDERR,        JMS I (PRMESG   /NOT A LEGAL KEYWORD
+       ERRCMD
+       PAGE
+\fTPUT, 0
+       AND (177        /TECO LIKES 7-BIT
+       ISZ TYR
+       DCA I TYR
+       TAD TYR
+       TAD (-7646      /CHECK FOR OVERFLOW OF CD AREA
+       SZA CLA
+       JMP I TPUT
+CDER9, JMS I (PRMESG
+       TOOLNG
+
+MNGSUB,        0
+       JMS I (SETLXR
+       JMS I (GETSPC
+       JMS I (TECPUT
+       "E;"R;0
+       JMS I (TECMOV
+       JMS SETX
+       "T;"E
+EXTOK, JMS I (TECPUT
+       ALTMODE;"Y;"H;"X;"Y;"H;"K;"I;0
+       TAD DELIM
+       SNA
+       JMP IFIN
+       TAD (-",
+       SZA CLA
+       JMP I (CDER2
+G,     STL CLA RAR     /PREVENT 'GCH' FROM HANDLING SPACE AND /
+       JMS I (GCH
+       AND (177        /GET RID OF HIGH ORDER BIT
+       SNA
+       JMP IFIN
+       JMS TPUT
+       JMP G
+IFIN,  JMS I (TECPUT
+       ALTMODE;"M;"Y;0         /MACRO GETS CALLED WITH POINTER PAST CHARS
+       JMP I MNGSUB
+TYR,   0
+\f/SET DEFAULT EXTENSION
+
+SETX,  0
+       TAD I SETX
+       DCA C1
+       ISZ SETX
+       TAD I SETX
+       DCA C2          /FALL THRU 2ND EXT
+       TAD NAME4
+       SNA CLA
+       TAD NAME1
+       SNA CLA
+       JMP I SETX
+       TAD I TYR       /GET LAST CHAR (NO EXT)
+       TAD (-56        /WAS IT A DOT?
+       SNA CLA
+       JMP I SETX      /YES
+       JMS I (TECPUT   /NO, USE DEFAULT EXTENSION
+       ".
+C1,    0
+C2,    0
+       0
+       TAD C1
+       AND (77
+       JMS I (ROTL
+       DCA C1
+       TAD C2
+       AND (77
+       TAD C1
+       DCA NAME4
+       JMP I SETX
+
+CCERA, JMS I (PRMESG
+       CONTRA
+\fCRSUB,        0
+       TAD I (7617
+       SNA CLA         /BETTER BE NO INPUT
+       TAD I (7600     /ANYTHING THERE?
+       SNA CLA
+       JMP I (CDER2    /NO OUTPUT OR YES INPUT
+       JMS EDSUB       /REMOVE BACK-ARROW AND REMEMBER CREATE LINE
+       JMP I CRSUB
+
+EDSUB, 0
+       CDF 0
+       DCA I ARLOC     /REPLACE ARROW BY NULL
+       CDF 10
+       JMS I (REMEM    /REMEMBER NEW COMMAND LINE
+       1
+       JMP I EDSUB
+
+ARLOC, .               /LOCATION OF BACK-ARROW IN COMMAND LINE
+                       /'.' IS HARMLESS PTR IN CASE NO ARROW
+
+CCER3, CDF 10
+       JMS I (PRMESG
+       BADMON
+
+CDER4, CLA
+       JMS I (PRMESG
+       BADSW
+CDER44,        CLA
+       JMS I (PRMESG
+       BADSW2
+CDER7, JMS I (PRMESG
+       BADX
+CDER6, JMS I (PRMESG
+       BADSTR
+       PAGE
+\fINSARR,       0
+       TAD (BEGLN
+       DCA XR
+       CDF 0
+       TAD I XR
+       SZA CLA
+       JMP .-2
+       STA
+       TAD XR
+       DCA XR
+       TAD ("<
+       DCA I XR
+       DCA I XR
+       CDF 10
+       STA
+       TAD XR
+       DCA I (ARLOC    /REMEMBER WHERE WE INSERTED A "_"
+       JMP I INSARR
+
+BKA,   0
+       TAD I (LBEGIN
+       DCA CLXR
+GG,    CDF 0
+       ISZ CLXR
+       TAD I CLXR
+       CDF 10
+       SNA
+       JMP NOBKAR
+       TAD (-"<
+       SNA
+       JMP I BKA
+       TAD ("<-"_
+       SZA CLA
+       JMP GG
+       TAD ("<
+       CDF 0
+       DCA I CLXR
+       CDF 10
+       JMP I BKA
+NOBKAR,        ISZ BKA
+       JMP I BKA
+\fAT,   0
+       CIF CDF 0
+       JMS I (SEMI
+ATMORE,        TAD (BEGLN-1
+       DCA LXR
+ATLOOP,        JMS I (GLXR
+       SNA
+       JMP I AT
+       TAD (-300
+       SZA CLA
+       JMP ATLOOP
+       TAD LXR
+       DCA I (SAVL
+       JMS I (FUDG
+       JMS I (GETSPC
+       JMS I (ASSIGN
+       DCA I (SETEXT
+       TAD (EXTCM
+       DCA DEFALT
+       JMS I (LOOKUP
+       SZA CLA         /V3C
+       TAD I (ASADR
+       SNA
+       JMP I (ATERR    /IF NO FILESPEC AFTER @, ERROR
+       DCA T
+       TAD I (LNAME    /GET BLOCK NUMBER
+       DCA BLN
+       CIF 0
+       JMS I T
+       200             /READ 2 PAGES
+NWB,   BFR+200         /INTO BUFFER
+COUNT,
+BLN,   0               /FROM THIS BLOCK
+       JMP I (ATERR    / I/O ERROR
+       TAD (-200
+       DCA COUNT
+       TAD (BFR-1
+       DCA XR
+       TAD NWB
+       DCA T
+       CDF 0
+ALP,   TAD I T
+       JMS I (P
+       CLL RTR
+       RTR
+       DCA BKA
+       ISZ T
+       TAD I T
+       JMS I (P
+       CLL RTL
+       RTL
+       RAL
+       TAD BKA
+       JMS I (P
+       CLA
+       ISZ T
+       ISZ COUNT
+       JMP ALP
+       JMP I (ATOVER
+
+/ATFIN,        TAD LXR
+/      TAD (-BEGLN
+/      SZA CLA
+/      JMP I AT        /LEAVE
+/      JMP I (LEAVE    /LEAVE BECAUSE LINE NOW EMPTY
+       PAGE
+\fP,    0
+       AND (177
+       SNA
+       JMP CTZ         /END AT 0 OR ^Z
+       TAD (-32
+       SNA
+       JMP CTZ
+       TAD (32-16      /IGNORE CR,LF,FF,VT
+       CLL
+       TAD (16-12
+       SZL
+       JMP POGO
+       TAD (212        /FORCE 8-BIT
+       DCA I XR
+POGO,  CLA
+       TAD I T
+       AND (7400
+       JMP I P
+\fCTZ,  CDF 10
+       TAD LXR
+       DCA ATEND
+       STA
+       TAD LXR
+       DCA LXR         /INCASE @ GOES TO EOL
+       JMS I (GLXR     /SEARCH FOR EOL
+       SZA CLA
+       JMP .-2
+       TAD LXR
+       CMA
+       TAD ATEND
+       DCA ENDLEN
+       TAD XR
+       CMA
+       TAD (BFR        /GET LENGTH OF INSERTED STUFF
+       DCA NEWLEN
+       CDF 0
+       TAD I ATEND     /GET NEXT CHAR AFTER FILESPEC
+       CDF 10          /V3C
+       TAD (-"'
+       SZA CLA         /IS IT AN APOSTROPHE?
+       JMP .+3         /NO
+       ISZ ENDLEN      /YES
+       ISZ ATEND       /MAKE IT GO AWAY
+       TAD ENDLEN
+       JMS I (MOVE     /MOVE REST OF LINE UP
+       CDF 0
+ATEND, 0               /FIRST CHAR POSITION AFTER @ SPEC
+       CDF 0
+       BEGLN+1000
+       TAD NEWLEN      /IF 0, 'MOVE' WILL IGNORE IT
+       JMS I (MOVE     /MOVE IN NEW STUFF
+       CDF 0
+       BFR
+       CDF 0
+SAVL,  0               /POINTS TO @
+       TAD NEWLEN
+       CIA
+       TAD SAVL
+       DCA NEWEND
+       CLL
+       TAD NEWEND
+       TAD (-BEGLN-1000
+       SZL CLA
+       JMP ATOVER
+       TAD ENDLEN
+       JMS I (MOVE     /MOVE BACK END
+       CDF 0
+       BEGLN+1000
+       CDF 0
+NEWEND,        0               /FIRST POSITION AFTER NEW STUFF
+       JMP I (ATMORE   /LOOK FOR MORE
+\fATOVER,       JMS I (PRMESG
+       OVFLOW
+GETMP,
+ENDLEN,        0               /- NO. OF CHARS AT END INCLUDING 0
+
+NUMC,  0
+       TAD (SKP
+       DCA I (NUMSKP
+       TAD (-11
+       DCA I (NUMKNT
+       JMS I (NUMBER
+       DCA NAME2
+       TAD I (HIORD
+       DCA NAME1
+       STA
+       TAD LXR
+       DCA LXR
+       TAD (-11
+       DCA I (NUMKNT
+       JMS I (NUMBER
+       DCA NAME4
+       TAD I (HIORD
+       DCA NAME3
+       TAD (SPA
+       DCA I (NUMSKP
+       JMP I NUMC
+\fNEWLEN,                       /- NO. OF CHARS BEING INSERTED
+GETYR, 0
+       AND (7
+       DCA GETMP
+       CDF 0
+       TAD I (7777
+       CDF 10
+       CLL RTR
+       RTR
+       AND (30
+       TAD GETMP
+       JMP I GETYR
+       PAGE
+\f/     TAD (-# OF LOCS TO MOVE
+/      JMS MOVE
+/      FROM CDF
+/      FROM LOC
+/      TO CDF
+/      TO LOC
+
+MOVE,  0
+       DCA T
+       TAD I MOVE      /GET FROM CDF
+       DCA FRCDF
+       ISZ MOVE
+       STA
+       TAD I MOVE      /GET FROM LOC-1
+       DCA XR
+       ISZ MOVE
+       TAD I MOVE      /GET TO CDF
+       DCA TOCDF
+       ISZ MOVE
+       STA
+       TAD I MOVE      /GET TO LOC-1
+       DCA XR2
+       ISZ MOVE        /POINT TO RETURN
+       TAD T
+       SNA CLA
+       JMP I MOVE      /V1A IGNORE 0 MOVE
+FRCDF, HLT
+       TAD I XR
+TMP1,
+TOCDF, HLT
+       DCA I XR2
+       ISZ T
+       JMP FRCDF
+       CDF 10
+       JMP I MOVE
+\fDETCOR,       0
+       CIF 0
+       JMP I (CORE
+       JMP I DETCOR
+
+BADCOR,        JMS I (PRINT
+       NOCORE
+GOEQ,  CIF CDF 0
+       JMP I (COREQ
+
+ABSCOR,        JMS I (PRINT
+       CORMES
+       JMP I DETCOR
+
+WRSCOR,        JMS I (PRINT
+       BATCOR
+       JMP GOEQ
+
+SCRM,  JMS I (PRINT
+       SCRMES
+       JMP I DETCOR
+\fSQSUB,        0
+       TAD I K7600
+       SZA CLA
+       JMP I SQSUB
+       TAD I (7617
+       DCA I K7600
+       JMS I (BATCH    /IS BATCH RUNNING?
+       JMP I SQSUB     /NO
+K7600, 7600            /YES (CLEAR AC)
+       TAD I K7600
+       TAD (7647-1     /POINT INTO DEVICE HANDLER RESIDENCY TABLE
+       DCA TMP1
+       TAD I TMP1      /GET HANDLER STARTING ADDRESS
+       TAD (-7607
+       SZA CLA         /IS SQUISHED DEVICE SYS:?
+       JMP I SQSUB     /NO
+       JMS I (PRINT
+       SQWARN          /YES, WARN USER
+       JMP I SQSUB
+\fSETOUT,       0
+       TAD I (FLAG
+       RTR
+       SZL CLA
+       TAD (5
+       TAD K7600
+       DCA OLOC
+       TAD I OLOC
+       SZA CLA
+       JMP I SETOUT    /HE'S SPECIFIED SOMETHING
+       JMS I (200
+       12              /INQUIRE
+DVNM1, 0
+DVNM2, 0
+       0
+       JMP I (CCER2    /NO SUCH DEVICE
+       TAD DVNM2
+       DCA I OLOC
+       TAD OLOC
+       AND (5
+       SNA CLA         /USING 2ND OUT DEV?
+       JMP I SETOUT    /NO
+       ISZ OLOC        /YES
+       TAD (-4
+       JMS MOVE
+       CDF 10
+       NAME1
+       CDF 10
+OLOC,  7600            /INITIALLY 7600 OR 7605
+       JMP I SETOUT
+\fENGOA,        TAD (-5
+       JMS I (ZEROCD
+       CDF 0
+       TAD I (BLKNO
+       CDF 10
+       DCA I (7620
+       CLA IAC
+       DCA I (7617     /'CCBTCH' IS ON SYS:
+       TAD (20         /   /T OPTION
+       DCA I (7644
+       TAD (20         /  ALSO /H (HUSH) OPTION
+       DCA I (7643
+       TAD (YBATCH
+       JMP I (ZOW      /CHAIN TO BATCH
+       PAGE
+\fDATE, 0
+       TAD I (DATWD
+       SNA
+       JMP NODATE
+       DCA DATEM
+       TAD DATEM
+       CLL RTL
+       RTL
+       RAL
+       AND (17
+       DCA TM1
+       TAD TM1
+       TAD (MONLST-1
+       DCA TM2
+       CDF 0
+       TAD I TM2
+       CDF 10
+       DCA MONP
+       TAD DATEM
+       JMS I (GETYR    /V3D DATE/78 ALGORITHM
+       DCA TM2
+       TAD TM2
+       TAD (106        /70.
+       CIF CDF 0
+       JMS I (OTODY
+       DCA YEAR
+       TAD DATEM
+       CLL RTR
+       RAR
+       AND (37
+       DCA DATEM
+       TAD DATEM
+       CIF CDF 0
+       JMS I (OTODY
+       DCA DAY
+       CDF 0
+       STL CLA RTL     /2
+       TAD TM2
+       CLL RTR
+       SNL SMA
+       JMP LEAP
+       ISZ I (JAN
+       ISZ I (FEB
+LEAP,  AND (37
+       TAD TM2
+       TAD (3
+       TAD DATEM
+       DCA DATEM
+       TAD TM1
+       TAD (JAN-1
+       DCA TM1
+       TAD I TM1
+       CDF 10
+       TAD DATEM
+DIV7,  CLL
+       TAD (-7
+       SZL
+       JMP DIV7
+       TAD (7
+       TAD (WEEKLST
+       DCA TM2
+       CDF 0
+       TAD I TM2
+       CDF 10
+       DCA WKP
+       STA             /DON'T CRLF
+       JMS I (PRINT
+WKP,   0
+       STA
+       JMS I (PRINT
+       DAYDAY
+       STA
+       JMS I (PRINT
+MONP,  0
+       STL CLA RAR
+       JMS I (PRWD     /SPACE
+       TAD DAY
+       JMS I (PRWD
+       STA
+       JMS I (PRINT
+       COM19
+       TAD YEAR
+       JMS I (PRWD
+       JMS I (CRLF
+       JMS I (LOOK     /LOOKUP SYS:DATE.SV
+       YDATE
+       JMP I DATE      /DO NOTHING IF IT'S NOT THERE
+       JMP I (CHAIN    /CHAIN TO IT, IF IT'S THERE
+\fNODATE,       JMS I (PRMESG
+       NONE
+DT,    0
+TM2,   0
+DATEM, 0
+DAY,   0
+YEAR,  0
+\fSETDSK,       0
+       TAD DSKDEV
+       SZA
+       JMP I SETDSK
+       JMS I (200
+       12              /INQUIRE
+       5723            /PACKED ENCODING FOR 'DSK:'
+DSKDEV,        0               /SET TO DEVICE NUMBER
+       0
+TM1,   HLT             /NO 'DSK' !
+       TAD DSKDEV
+       JMP I SETDSK
+       PAGE
+\f/CCL REMEMBERS UP TO 8 COMMAND LINES (EACH UP TO 55 DECIMAL
+/SIXBIT CHARACTERS LONG) IN BLOCK 65 ON THE SYSTEM DEVICE.
+/THIS BLOCK WHEN READ INTO 04000-04377 HAS THE FOLLOWING FORMAT:
+
+/4000-4037     REM-LINE 0
+/4040-4177     REM-LINE 1
+/4100-4137     REM-LINE 2
+/4140-4177     REM-LINE 3
+/4200-4237     REM-LINE 4
+/4240-4277     REM-LINE 5
+/4300-4337     REM-LINE 6
+/4340-4377     REM-LINE 7
+
+/EACH REM-LINE HAS THE FOLLOWING FORMAT:
+
+/WORD 0:       IN-USE FLAG, MUST BE '1234' TO INDICATE LINE WAS REMEMBERED HERE
+/WORD 1:       DATE LINE WAS REMEMBERED
+/WORD 2:       COMMAND DEPENDENT INFORMATION
+/WORD 3:       RESERVED FOR FUTURE EXPANSION
+/WORDS 4-37    COMMAND LINE NOT INCLUDING KEYWORD OR FOLLOWING SPACES
+/              PACKED IN 6-BIT AND TERMINATED BY A 6-BIT 0.
+
+/ROUTINES:
+
+/      TAD (DEP
+/      JMS REMEM
+/      N
+
+/REMEMBERS CURRENT LINE IN REM-LINE N.  AC IS LINE DEPENDENT INFORMATION.
+/IF LINE IS TOO BIG, THIS PRINTS A WARNING MESSAGE AND RETURNS AS IF OK.
+
+/      JMS RECALL
+/      N
+
+/RECALLS REM-LINE N INTO BUFFER
+/IF NOTHING THERE, PRINTS A BAD SYNTAX MESSAGE AND RETURNS TO OS/8.
+/UPON RETURN, LINE-DEPENDENT INFO IS IN AC.
+/IF DATES DON'T MATCH, IT'S NOT THERE UNLESS DATE = -1
+
+/0     USED BY TECO, MAKE COMMANDS
+/1     USED BY EDIT, CREATE COMMANDS
+/2     USED BY COMPILE, EXECUTE COMMANDS & PAL.
+/      DEPENDENT WORD IS PTR TO FIRST ENTRY IN MAIN TABLE
+
+/3     USED BY 'UA' COMMAND
+/4     USED BY UB
+/5     USED BY UC
+
+/      JMS FOREVER
+
+/CAUSES NEXT CALL TO REMEM TO INSERT -1 AS DATE
+\f      REMSPACE=4000
+       REMBLOCK=65
+
+REMEM, 0
+       DCA DEP
+       TAD I (REMD
+       SMA CLA
+       JMP I REMEM     /DON'T REMEMBER IF JUST RECALLED
+       JMS I (RDREM
+       JMP I (MEMBIG
+       TAD I REMEM
+       ISZ REMEM
+       CLL RTL
+       RTL
+       RAL             /MULTIPLY BY 40
+       TAD (REMSPACE
+       DCA LPTR
+       TAD (1234
+       CDF 0
+       DCA I LPTR
+       CDF 10
+       ISZ LPTR
+FORVR, TAD I (DATWD    /REPLACED BY CMA IF WANT NO DATE
+       JMS LPUT        /STORE DATE
+       TAD DEP
+       JMS LPUT        /STORE DEPENDENT INFO
+       JMS LPUT        /RESERVED
+       JMS I (SCAN     /GO PAST KEYWORD AND BLANKS
+       TAD I (LBEGIN
+       DCA XR
+RELUP, JMS I (GETF
+       JMP LZER
+       JMS I (ROTL
+       DCA TML
+       JMS I (GETF
+       JMP RZER
+       TAD TML
+       JMS LPUT
+       JMP RELUP
+RZER,  TAD TML
+LZER,  JMS LPUT
+       JMS I (WRREM
+       JMP I (MEMBIG
+REMGO, JMP I REMEM
+\fDEP,  0
+LPTR,  0               /PTS TO REM-LINE
+TML,   0               /TEMP
+
+/PUT INTO REM-LINE
+
+LPUT,  0
+       DCA TML
+       TAD LPTR
+       AND (37
+       SNA CLA
+       JMP I (MEMBIG
+       TAD TML
+       CDF 0
+       DCA I LPTR
+       CDF 10
+       ISZ LPTR
+       JMP I LPUT
+
+FOREVER,0
+       TAD LCMA
+       DCA FORVR
+       JMP I FOREVER   /NON-ZERO MEANS SET DATE TO -1
+\fRECALL,       0
+       JMS I (RDREM
+       JMP I (REMERR
+       TAD I RECALL
+       ISZ RECALL
+       JMS I (ROTL
+       RAR
+       TAD (REMSPACE
+       DCA LPTR
+       JMS LGET
+       TAD (-1234
+       SZA CLA
+       JMP I (REMER2
+       JMS LGET
+       SNA
+       JMP I (REMER2
+LCMA,  CMA
+       SNA
+       JMP FOREV
+       IAC
+       TAD I (DATWD    /SAME DAY?
+       SZA CLA
+       JMP I (REMER2
+FOREV, JMS LGET
+       DCA DEP
+       JMS LGET        /IGNORE RESERVED WORD
+       CLA
+       TAD (BEGLN-1
+       DCA XR
+       TAD (BEGLN-1
+       DCA I (LBEGIN
+RECLUP,        JMS LGET
+       DCA TML
+       TAD TML
+       JMS I (ROTL
+       RAL
+       JMS I (PUTF
+       JMP RECLV
+       TAD TML
+       JMS I (PUTF
+       JMP RECLV
+       JMP RECLUP
+
+RECLV, TAD DEP
+       JMP I RECALL
+\fLGET, 0
+       CDF 0
+       TAD I LPTR
+       CDF 10
+       ISZ LPTR
+       JMP I LGET
+       PAGE
+\fPUTF, 0
+       AND (77
+       SNA
+       JMP PUTZ
+       ISZ PUTF
+       TAD (240
+       AND (77
+       TAD (240
+PUTZ,  CDF 0
+       DCA I XR
+       CDF 10
+       JMP I PUTF
+
+CHKSUP,        0
+       JMS FUDG
+       JMS I (ASSIGN
+       TAD NAME1
+       SNA CLA
+       JMP I CHKSUP    /CAN'T SUP IF NO FILENAME
+       TAD I (DVICE
+       JMS I (LOOK     /LOOK UP FILE
+       NAME1
+       JMP I CHKSUP    /NOT FOUND (GOOD)
+       JMS I (PRINT
+       SUP
+       JMP I CHKSUP
+
+REMERR,        JMS I (PRMESG
+       REMBAD
+REMER2,        JMS I (PRMESG
+       BADREM
+\fMEMBIG,       CLA
+       JMS I (PRINT
+       MEMWARN
+       JMP I (REMGO
+
+RDREM, 0
+       CIF 0
+       JMS I (7607
+       200             /READ 2 PAGES INTO FIELD 0
+       4000            /LOCATION 4000
+       REMBLOCK
+       SKP CLA
+       ISZ RDREM
+       JMP I RDREM
+
+WRREM, 0
+       CIF 0
+       JMS I (7607
+       4200            /WRITE 2 PAGES FROM FIELD 0
+       4000            /LOCATION 4000
+       REMBLOCK
+       SKP CLA
+       ISZ WRREM
+       JMP I WRREM
+
+FUDG,  0
+       DCA I (OUTSW    /LOAD HANDLER
+       TAD I (OUTLIM
+       CIA
+       DCA CLXR
+       JMP I FUDG
+\fK8,   0
+       TAD (1716
+       JMS I (PRWD
+       TAD (1431
+       JMS I (PRWD
+       CIF CDF 0
+       JMP I K8
+
+ROTL,  0
+       CLL RTL
+       RTL
+       RTL
+       JMP I ROTL
+
+/GET FROM INPUT LINE VIA XR
+
+GETF,  0
+       CDF 0
+       TAD I XR
+       CDF 10
+       SZA
+       ISZ GETF
+       AND (77
+       JMP I GETF
+\f/THIS GETS A DEV:NAME.EXT SPECIFICATION (USING LXR)
+/PUTTING RESULT IN DEV1,DEV2, NAME1-4.
+/IT GIVES A FATAL ERRORR MESSAGE IF BAD.
+GETSPC,        0
+       STA
+       DCA DVFLAG
+       DCA DEV1
+FILLP1,        DCA DEV2
+FILLP, JMS I (GNAME
+       TAD (-":        /AC CONTAINED DELIM
+       SNA CLA
+       JMP DEVNAM
+       DCA I (NUMC
+       JMP I GETSPC
+DEVNAM,        CLA IAC
+       TAD I (PERDSW
+       TAD I (NUMC
+       SZA CLA
+       JMP CDERA       /. OR # IN DEVICE NAME
+       TAD NAME1
+       DCA DEV1
+       ISZ DVFLAG
+       JMP CDERA       /CATCHES A:B:
+       TAD NAME2
+       JMP FILLP1
+
+DVFLAG,        0
+\fCDERA,        JMS I (PRMESG
+       BADEV
+
+ATERR, CDF 10
+       CLA
+       JMS I (PRMESG
+       ATIO
+       PAGE
+\fCDINIT,       0
+       TAD I DEFALT
+       TAD (-5200
+       SZA CLA         /IS THIS A REQUEST FOR A
+                       /"SPECIAL DECODE"?
+       JMP CDCONT      /NO
+       TAD ALTLIM
+       DCA OUTLIM      /YES, SET UP THE PROPER LOCATIONS
+       TAD ALTDF1
+       DCA LIMDIF      /TO GET 1 OUTPUT AND 5 INPUT FILES
+       TAD ALTDF2
+       DCA BEGDIF      /ALL OF WHICH ARE
+                       /5-WORD <DEVICE,NAME> ENTRIES
+       DCA I PLKUPS
+       TAD STARJM
+       DCA I PSTARS    /AND ALLOW *
+                       /AS A FILE OR EXTENSION NAME
+       TAD CCLA        /STOPS FETCHES IN SPECIAL MODE
+       DCA I PSPKG1    /NO HANDLER FETCHES NECESSARY EITHER
+                       /SINCE NO LOOKUPS
+CDCONT,        JMS I (BKA
+       STA
+       DCA I (OUTSW
+       JMS I (ZEROCD
+       TAD LBEGIN
+       DCA LXR
+       JMP I CDINIT
+/CONSTANTS NECESSARY TO SUPPORT "SPECIAL DECODE" MODE
+ALTLIM,        1-MOFILE-5
+ALTDF1,        MOFILE+5-MPARAM+5
+ALTDF2,        5
+PLKUPS,        LKUPSW
+PSTARS,        STARSW
+PSPKG1,        SPKLG1
+
+BEGDIF,        MIFILE-MOFILE
+LIMDIF,        MIFILE-MPARAM+2
+OUTLIM,        1-MIFILE
+LBEGIN,        0               /PTS TO 1 CHAR BEFORE COMMAND KEYWORD ARGUMENT
+\fNMOVE,        0
+       DCA PT1         /V1A ARG IN AC
+       TAD I (FLAG
+       RTL
+       SMA CLA         /FEATURE ENABLED?
+       JMP I (CCERB    /NO
+       TAD I (OUTSW
+       SZA CLA
+       JMP I (CCERB    /ON OUTPUT SIDE
+       TAD I CCLA      /V3C
+       SNA CLA         /DON'T CHANGE OUT DEV IF SPECIFIED
+       TAD I (FLAG     /LOOK AT 'COPY EXT' BIT
+       AND (200
+       SNA CLA
+       JMP NMXXX               /IT WASN'T SET
+       TAD I (7617     /GET FIRST INPUT DEVICE
+       AND (17         /ISOLATE DEVICE BITS
+       DCA I CCLA      /FORCE THIS TO BE FIRST OUTPUT DEVICE
+NMXXX, TAD I PT1
+       SNA
+       JMS I (SETDSK   /CHANGE TO 'IAC' TO ALWAYS USE SYS:
+       DCA I PT1       /SET DEVICE TO SYS IF NONE
+       ISZ PT1
+       TAD I PT1       /WAS THERE A SPECIFICATION THERE?
+       SZA CLA
+       JMP I NMOVE     /YES, DO NOTHING
+       TAD I (FLAG
+       AND (200        /GET 'COPY EXTENSION' BIT
+L7740, SMA SZA CLA     /'SMA' IS UNNECESSARY
+       STA             /COPY 4 WORDS IF BIT 4 WAS ON
+       TAD (-3         /OTHERWISE ONLY COPY 3 WORDS
+       JMS I (MOVE
+       CDF 10
+       NAME1
+       CDF 10
+TEM,
+PT1,   0
+       JMP I NMOVE
+
+P8,    SETDEV
+       DMPDEV
+\fVERTN,        0
+       JMS I (RDMON    /READ MONITOR
+       CDF 0
+       TAD I (2031     /GET PATCH LEVEL
+       SNA
+       TAD ("!
+       AND (77
+       DCA TEM
+       TAD I (2000     /GET VERSION #
+       CDF 10
+       SPA
+CCLA,  7600            /"0" MEANS OLD
+       TAD (60
+       JMS I (ROTL
+       TAD TEM
+       JMP I (PTCH
+\f/ALLOW DEASSIGN FOO ?
+
+DEASSIGN,0
+       TAD L7740
+       DCA XR
+       TAD (-17
+       DCA T
+       DCA I XR
+       ISZ T
+       JMP .-2
+       CDF 0
+       TAD I (7746
+       AND (6777
+       TAD (1000
+       DCA I (7746
+       CDF 10
+       JMP I DEASSIGN
+\fSTARJM,       RELOC STARNM    /DUMP LITERALS AT LAST POSSIBLE MOMENT
+       JMP STARNM
+       RELOC
+       PAGE
+       ZBLOCK 7600-.
+\f/CCL.SV (THE IMPORTANT PART) MUST BE A SINGLE CORE-LOAD
+/CONTIGUOUS LOAD, BECAUSE OF THE WAY THE MONITOR LOADS IT.
+/FORTUNATELY, FIELD 0 STUFF OCCURS AFTER FIELD 1 STUFF IN THE
+/OS/8 CORE-IMAGE FORMAT.
+/FOR VERSION OF THE MONITOR BEFORE LEVEL A,
+/THE TOTAL LENGTH OF CCL.SV MUST BE LESS THAN14 BLOCKS
+/OR IT READS OVER 7600.
+/BUT NOW CCL COMES IN AND READS THE REMAINDER OF ITSELF
+/INTO FIELD 0.  400-777 IS IGNORED BY SKIPPING A BLOCK,
+/THEN THER REST OF CCL (7 PAGES) IS READ IN.
+
+       FIELD 0
+
+       *400
+
+/IT LOADS OVER THE SAVE, DATE OVERLAY
+/AND STARTS AT LOCATION 600
+
+/KEYWORD TABLE IN 400-
+
+/CONSISTS OF COMMANDS 2 CHARS PER LOCATION
+/IN 5-BIT ASCII (ONLY LETTERS ARE LEGAL)
+/SEPARATED FROM EACH OTHER BY 6-BIT 00'S.
+/EACH ENTRY STARTS ON A WORD BOUNDARY, BUT IF YOU
+/NEED THE ROOM, THEY NEED NOT WITH A SIMPLE FIX
+/BIT 40 ON MEANS THAT THE CHARACTER ISN'T REQUIRED
+/BUT IF THE USER DOES TYPE A LETTER, IT MUST MATCH.
+\fVNO,  CCLTAB
+KEYWRD,
+0530   /EX ECUT
+4543
+6564
+0002   /BA CKSP OR TER MIN
+0143
+5363
+6000
+0201   /BAS IC
+2351
+4300
+0425   /DU PLICATE
+6054
+5143
+4164
+4500
+0217   /BO OT
+5764
+0003   /CCL
+0314
+0003   /COMPA R
+1715
+2001
+6200
+0317   /COM PIL
+1560
+5154
+0003   /COP Y
+1720
+7100
+1505   /MEM ORY
+1557
+6271
+0003   /CREA TE
+2205
+0164
+4500
+0322   /CREF
+0506
+0004   /DA TE
+0164
+4500
+0405   /DEL ETE
+1445
+6445
+0004   /DE A
+0541
+0004   /DIR ECT
+1122
+4543
+6400
+0504   /ED IT
+5164
+0005   /EO F
+1746
+0010   /HE LP
+0554
+6000
+1411   /LIN K
+1653
+0015   /MAC R
+0103
+6200
+1411   /LI ST
+6364
+0014   /LO AD
+1741
+4400
+1501   /MAK E
+1345
+0015   /MAP
+0120
+0015   /MUNG
+2516
+0700
+2001   /PAL
+1400
+2022   /PRI NT
+1156
+6400
+2025   /PU NCH
+5643
+5000
+2205   /REN AME
+1641
+5545
+0022   /RES
+0523
+0022   /REW IND
+0527
+5156
+4400
+2305   /SET
+2400
+2313   /SK IP
+5160
+0023   /SQ UISH
+2165
+5163
+5000
+2325   /SU BMIT
+4255
+5164
+0024   /TE CO
+0543
+5700
+2431   /TY PE
+6045
+0025   /UN LOAD
+1654
+5741
+4400
+2501   /UA
+0025   /UB
+0200
+2503   /UC
+0026   /VE R
+0562
+0032   /ZERO
+0522
+1700
+4000   /@
+       ZBLOCK 600-.
+\f      IFDEF XYZMCR <
+
+THIS IS THE TECO MACRO WHICH WAS USED TO CREATE THE ABOVE TABLE:
+
+
+HKGYJ2S\ 1\eR0,.KHXAHKMA
+\ 1TYPE COMMANDS, SPACE SEPARATES MANDATORY PART FROM
+OPTIONAL PART, CR TERMINATES COMMANDS, ^Z TERMINATES ALL.
+**  NO EDITING **
+\ 1HKHXYHXN0UO0UB0UN
+!CHLP!^TUL\eQL-32"EOBLANK\e'QL-13"EOCR\e'QL-26"EOEND\e'
+!CHLP0!QL&63+QBUT\e QT/8UX\eQX+48I\eQT-(8*QX)+48I\e
+QL"NZJ.UZGNQLI\eQZJXNK%N\e'
+%O&1"NOCHLP\e' QN-3"LZUH'I
+\eOCHLP\e
+!BLANK! 32UBZJ.UZGNQLI\eQZJXNK%N\eOCHLP\e
+!CR! \ 1
+\ 1QHJ   /\eGNZJXN0UN0UB0ULOCHLP0\e
+!END!I00
+\e
+
+
+       >
+\f      *600
+
+       JSBITS=7746
+       SYSTEM=22
+       PRMES=330
+       ERRET=33        /THESE ARE LOCATIONS FROM OS/8 MONITOR
+
+/RUNS IN FIELD 0 ONLY.
+
+ENTRY, 0               /INITIALLY 0 MEANS 'EX' COMMAND
+LINPTR,        JMP ENTREE      /OS/8 JUMPS HERE (ACTUALLY TO 600)
+TEMM,
+TEKLDG,        ISZ CCLNHR      /TECO 'EG' JUMPS HERE
+       DCA I (BEGLN    /ZERO COMMAND LINE
+       JMP TEGO        /FIRST WE DISABLE CALLS TO MONITOR
+ENTREE,        TAD (7605
+       DCA ERRET
+       TAD SYSTEM
+       DCA MYSYS
+       JMS FINDIT      
+       SPA CLA         /WAS IT A LEGAL COMMAND?
+       JMP I (PRQMRK   /NO
+TEGO,  TAD (6003       /YES
+       DCA I (JSBITS
+       CIF 10
+       JMS I MYSYS     /CALL USR AND LOCK IN CORE
+       10
+       CLA IAC
+       CIF 10
+       JMS I (200
+       2
+CCLBLC,        CCLSV
+CCLEN, 0
+CCLNHR,        JMP NOCCL       /ISZ'ED IF KBM NOT IN MEMORY
+       CLA IAC
+       TAD CCLBLC
+       DCA CCLRDB
+       JMS I (7607
+CCLCCW,        2711            /READ 27 PAGES OF CCL.SV
+CCLSTR,        2000
+MYSYS,
+CCLRDB,        7700            /INITIALLY POINTS TO USR
+       JMP NOCCL
+       CIF CDF 10
+       JMP I CCLSTR
+\fCCLSV,        FILENAME CCL.SV
+
+NOCCL, CLA SKP
+       JMP I (7605     /GO BACK TO MON IF CCL NOT FOUND ON TECO EG COMMAND
+       JMS I (PRMES    /PRINT ERROR MESSAGE OTHERWISE
+       TEXT    /NO CCL!/
+       0
+\f/FINDS IF INPUT LINE STARTS WITH A COMMAND
+/LEAVES ENTRY # IN AC, -1 IF NOT FOUND
+/ENTRIES START AT ENTRY 0.
+/CALLABLE FROM ANY FIELD
+
+FINDIT,        0
+MORE,  TAD (BEGLN-1
+       DCA LINPTR
+       ISZ LINPTR
+       TAD I LINPTR
+       TAD (-240
+       SNA CLA
+       JMP .-4
+       JMS GETKAR
+       JMP ENDOFT      /NO MATCH
+       JMP INTO
+FNLUP, TAD I LINPTR
+       TAD (-301
+       STL
+       TAD (-32
+       SNL CLA
+       JMP NOLET       /NOT A LETTER
+       JMS GETKAR
+       JMP MATCH
+INTO,  CIA
+       TAD I LINPTR
+       AND (37         /5-BIT ASCII
+       ISZ LINPTR
+       SNA CLA         /DO THEY MATCH?
+       JMP FNLUP       /YES
+NOMT,  JMS GETKAR
+       SKP
+       JMP .-2         /SCAN TO NEXT ENTRY
+       ISZ ENTRY
+       JMP MORE
+
+NOLET, JMS GETKAR
+       JMP MATCH
+       CLA
+       ISZ SIGNIF
+       JMP NOMT
+MATCH, TAD ENTRY
+       SKP
+ENDOFT,        STA
+RETCIF,        CDF 0           /RETURN TO CALLING FIELD (MAY BE OVERLAID)
+       JMP I FINDIT
+KPTR,  KEYWRD
+\fHALF, -1              /0 MEANS LEFT HALF
+SIGNIF,        0               /1 MEANS 40 BIT ON WHICH MEANS CHAR IS SIGNIF ONLY IF PRESENT
+
+/GETKAR GETS NEXT 5-BIT CHAR, LEAVES IT IN AC
+/SETS SIGNIF TO -1 IF 40 BIT WAS PRESENT
+/TAKES RETURN 1 IF CHAR IS 0
+/TAKES RETURN 2 OTHERWISE
+
+GETKAR,        0
+       ISZ HALF
+       JMP RTHALF
+       TAD I KPTR
+       RTR
+       RTR
+       RTR
+       JMP INSIDE
+RTHALF,        STA
+       DCA HALF
+       TAD I KPTR
+       ISZ KPTR
+INSIDE,        AND (77
+       DCA TEMM
+       TAD TEMM
+       AND X40
+X40,   SZA CLA
+       STA
+       DCA SIGNIF
+       TAD TEMM
+       SZA
+       ISZ GETKAR
+       AND (37
+       JMP I GETKAR
+       PAGE
+\f      *REST
+CORLOC,        CORX
+CORV,  1400
+CORSIZ,        1
+
+CORE,  CDF 0
+       TAD CORSIZ
+       CLL RTL
+       RAL
+       AND COR70
+       TAD COREX
+       DCA .+1
+COR1,  CDF
+       TAD I CORLOC
+COR2,  NOP
+       DCA COR1
+       TAD COR2
+       DCA I CORLOC
+COR70, 70
+       TAD I CORLOC
+CORX,  7400
+       TAD CORX
+       TAD CORV
+       SZA CLA
+       JMP COREX
+       TAD COR1
+       DCA I CORLOC
+       ISZ CORSIZ
+       JMP CORE
+COREX, CDF 0
+       TAD CORSIZ
+       CLL RTL
+       TAD (-10
+       JMP I (DETC2    /GO TO NEXT PAGE
+\fMONLST,       MON1
+       MON2
+       MON3
+       MON4
+       MON5
+       MON6
+       MON7
+       MON8
+       MON9
+       MON10
+       MON11
+       MON12
+\fMON1, TEXT    /JANUARY/
+MON2,  TEXT    /FEBRUARY/
+MON3,  TEXT    /MARCH/
+MON4,  TEXT    /APRIL/
+MON5,  TEXT    /MAY/
+MON6,  TEXT    /JUNE/
+MON7,  TEXT    /JULY/
+MON8,  TEXT    /AUGUST/
+MON9,  TEXT    /SEPTEMBER/
+MON10, TEXT    /OCTOBER/
+MON11, TEXT    /NOVEMBER/
+MON12, TEXT    /DECEMBER/
+\fCOM19,        TEXT    /, 19/
+
+WEEKLST,DAY1
+       DAY2
+       DAY3
+       DAY4
+       DAY5
+       DAY6
+       DAY7
+
+DAY1,  TEXT    /SATUR/
+DAY2,  TEXT    /SUN/
+DAY3,  TEXT    /MON/
+DAY4,  TEXT    /TUES/
+DAY5,  TEXT    /WEDNES/
+DAY6,  TEXT    /THURS/
+DAY7,  TEXT    /FRI/
+BADMON,        TEXT    /#BAD MONITOR/
+       PAGE
+\fHISIZ,        0               /HIGHEST MEMORY BANK
+NEWCOR,        0               /PROPOSED NEW MEMORY BANK
+
+DETC2, SNA
+       JMS KEIGHT
+       TAD (-30
+       SNA
+       JMS K32
+       TAD (40
+       JMS OTOD
+       DCA I (CORMES
+       CDF 10
+       TAD I (LBEGIN
+       DCA XRL
+       CDF 0
+       STA
+       TAD I (CORSIZ
+       DCA HISIZ
+       ISZ XRL
+       TAD I XRL       /GET NEXT CHAR
+       SNA
+       JMP COREQ       /NOT SETTING CORE SIZE
+       TAD (-260
+       DCA NEWCOR
+       TAD NEWCOR
+       AND (7770
+       SZA CLA
+       JMP DETER       /TRIED TO SET CORE SIZE GT 7
+       TAD NEWCOR
+       CIA
+       TAD HISIZ
+       SPA CLA
+       JMP BADKOR      /TRIED TO SET SOFTWARE CORE SIZE GT REAL CORE SIZE
+       TAD I (7777
+       RTL             /BATCH BIT TO LINK
+       SZL CLA
+       JMP WRSKOR      /CAN'T CHANGE CORE SIZE UNDER BATCH
+       TAD NEWCOR
+       CLL RTL
+       RAL
+       DCA NEWCOR
+       TAD I (7777
+       AND (7707
+       TAD NEWCOR
+       DCA I (7777
+COREQ, TAD I (7777
+       AND (70
+       SNA
+       JMP ABSKOR
+       TAD (10
+       CLL RAR
+       JMS OTOD
+       DCA I (SCRMES
+       TAD I (SCRMES
+       CIA
+       TAD I (CORMES
+ABSKOR,        CIF CDF 10
+       SNA CLA
+       JMP I (ABSCOR   /DON'T PRINT SOFT IF = REAL
+       JMP I (SCRM
+
+BADKOR,        CIF CDF 10
+       JMP I (BADCOR
+WRSKOR,        CIF CDF 10
+       JMP I (WRSCOR
+
+DETER, CIF CDF 10
+       JMP I (CMDERR
+
+KEIGHT,        0
+       CIF CDF 10
+       JMS I (K8
+       JMP I KEIGHT
+
+XRL,   0
+\fOTOD, 0
+       DCA TTX
+       DCA TX
+       TAD TTX
+       TAD (-12
+       ISZ TX
+       SMA
+       JMP .-3
+       TAD (72
+       DCA CORETM
+       STA
+       TAD TX
+       SNA
+       TAD (40-60
+       TAD (60
+       CLL RTL
+       RTL
+       RTL
+       TAD CORETM
+       JMP I OTOD
+
+TX,    0
+TTX,   0
+CORETM,
+K32,   0
+       TAD (4100
+       DCA I (CORMES+5
+       JMP I K32
+\fOTODY,        0
+       JMS OTOD
+       CIF CDF 10
+       JMP I OTODY
+       PAGE
+\fERRCMD,       TEXT    /#ERROR IN COMMAND/
+BADVMS,        TEXT    /#CCL 3X OVERLAY AND MONITOR INCOMPATIBLE/
+       AAAA=.
+       *BADVMS+3
+       CCLTAB&77^100+40
+       *AAAA
+\fLOVMES,       TEXT    /NOT WAR?/
+KILMES,        TEXT    /FILES DELETED:/
+RENMES,        TEXT    /FILES RENAMED:/
+MOVMES,        TEXT    /FILES COPIED:/
+SCRMES,        TEXT    \00K/\
+       *.-1
+CORMES,        TEXT    /00K MEMORY/
+DAYDAY,        TEXT    /DAY /
+\fNOCORE,       TEXT    /# NOT ENOUGH MEMORY/
+BATCOR,        TEXT    /#CANNOT CHANGE MEMORY LIMIT WHILE RUNNING BATCH/
+JAN,   0
+FEB,   3
+       4;0;2;5;0;3;6;1;4;6
+\fSUP,  TEXT    /%SUPERSEDING/
+MEMWARN,TEXT   /%CAN'T REMEMBER/
+SQWARN,        TEXT    /%BATCH SQUISHING SYS:!/
+SYSER, TEXT    \#I/O ERROR ON SYS:\
+BADSYN,        TEXT    /#ILLEGAL SYNTAX/
+TOOMAN,        TEXT    /#TOO MANY FILES/
+NF,    TEXT    / NOT FOUND/
+DNE,   TEXT    / DOES NOT EXIST/
+SEMSG1,        TEXT    /? ENTER ERROR/
+SEMSG2,        TEXT    \?I/O ERROR\
+SEMSG3,        TEXT    /?DEVICE FULL/
+SEMSG4,        TEXT    /?CLOSE ERROR/
+\fATIO, TEXT    /#BAD FILENAME OR ERROR READING INDIRECT FILE/
+OVFLOW,        TEXT    /#COMMAND LINE OVERFLOW/
+BADNUM,        TEXT    /#BAD NUMBER/
+BADSTR,        TEXT    /#ILLEGAL * OR ?/
+\fBADX, TEXT    /#BAD EXTENSION/
+BADOPT,        TEXT    /#BAD SWITCH OPTION/
+TOOLNG,        TEXT    /#COMMAND TOO LONG/
+REMBAD,        TEXT    \#I/O ERROR TRYING TO RECALL\
+\fBADSW,        TEXT    /#SWITCH NOT ALLOWED HERE/
+BADSW2,        TEXT    /#BAD CCL SWITCH/
+NONE,  TEXT    /NONE/
+BADREM,        TEXT    /#BAD RECOLLECTION/
+BADEV, TEXT    /#BAD DEVICE/
+CONTRA,        TEXT    /#CONTRADICTORY SWITCHES/
+\fVMES, TEXT    \OS/8 - KBM V3A - CCL V1A\
+       LOC78=VMES+1
+       VLOC=VMES+6
+       *.-2
+       CV=CCLVER&77
+       CCLNUM&77^100+CV
+       *.+1
+\fYEDIT,        FILENAME EDIT.SV
+       *.-1
+YBOOT, FILENAME BOOT.SV
+       *.-1
+YFORT, FILENAME FORT.SV
+       *.-1
+YF4,   FILENAME F4.SV
+       *.-1
+YBITMAP,FILENAME BITMAP.SV
+       *.-1
+YSRCCOM,FILENAME SRCCOM.SV
+       *.-1
+YBCOMP,        FILENAME BCOMP.SV
+       *.-1
+YPAL8, FILENAME PAL8.SV
+       *.-1
+YFOTP, FILENAME FOTP.SV
+       *.-1
+/YCREF,        FILENAME CREF.SV
+/      *.-1
+YDIRECT,FILENAME DIRECT.SV
+       *.-1
+\fYPIP, FILENAME PIP.SV
+       *.-1
+YABSLDR,FILENAME ABSLDR.SV
+       *.-1
+YLOADER,FILENAME LOADER.SV
+       *.-1
+YLOAD, FILENAME LOAD.SV
+       *.-1
+YTECO, FILENAME TECO.SV
+       *.-1
+YLPTSPL,FILENAME LPTSPL.SV
+       *.-1
+YCAMP, FILENAME CAMP.SV
+       *.-1
+YSET,  FILENAME SET.SV
+       *.-1
+YBASIC,        FILENAME BASIC.SV
+       *.-1
+YRXCOP,        FILENAME RXCOPY.SV
+       *.-1
+YRESORC,FILENAME RESORC.SV
+       *.-1
+YBATCH,        FILENAME BATCH.SV
+       *.-1
+YRALF, FILENAME RALF.SV
+       *.-1
+YSABR, FILENAME SABR.SV
+       *.-1
+YFRTS, FILENAME FRTS.SV
+       *.-1
+YDATE, FILENAME DATE.SV
+       *.-1
+YCCL,  FILENAME CCL.SV
+       *.-1
+YHELP, FILENAME HELP.SV
+       *.-1
+YMACREL,FILENAME MACREL.SV
+       *.-1
+YLINK, FILENAME LINK.SV
+       *.-1
+\fBATHED,       "$;"J;"O;"B;215;212;".;0
+BATAIL,        ".;"R;240;"F;"O;"T;"P;215;212
+       "*;"S;"Y;"S;":;"C;"C;"B;"T;"C;"H;".;"T;"M;"/;"D;"$;215;212
+       "$;"E;"N;"D;215;212;32;0
+TEMNAM,        FILENAME CCBTCH.TM
+\fLPTDEV,       DEVICE LPT
+TVDEV, DEVICE TV
+TTYDEV,        DEVICE TTY
+PTPDEV,        DEVICE PTP
+DMPDEV,        DEVICE DUMP
+NULDEV,        DEVICE NULL
+\f      BATBUF=4400     /LOCATION OF ONE BLOCK BATCH TEMP BUFFER
+       USR=200
+       GLINE=1200      /LOCATION FROM KBM
+       CTRLCK=1241     /LOC FROM KBM, PTS TO PLACE TO BRANCH ON ^C
+BATPTR,        BATBUF-1
+LCHAR, 0
+
+SEMGO, CIF CDF 10
+       JMP I SEMI
+
+SEMI,  0
+       TAD (BEGLN-1
+       DCA XR
+SEMLUP,        TAD I XR
+       SNA
+       JMP SEMGO       /NO SEMICOLONS
+       TAD (-";
+       SZA CLA
+       JMP SEMLUP
+       CIF 10
+       CLA IAC         /SYS
+       JMS I (USR
+       3               /ENTER
+BLKNO, TEMNAM
+BLKLEN,        0               /NEG OF LENGTH
+       JMP SEMER1      /ENTER ERROR
+       TAD BLKNO
+       DCA BATBLK
+       TAD (BEGLN-1
+       DCA XR
+       TAD (7600
+       DCA I (CTRLCK   /FORCE ^C TO GLINE TO GO TO 7600
+       JMS BATLST
+       BATHED
+S2,    TAD I XR
+       SNA
+       JMP LINEND
+       DCA LCHAR       /SAVE CHAR
+       TAD LCHAR
+       TAD (-";
+       SNA CLA
+       JMP GOTSEM
+       TAD LCHAR
+S3,    JMS BATPUT
+       JMP S2
+\fLINEND,       TAD LCHAR
+       TAD (-";        /LOOK AT LAST CHAR
+       SZA CLA         /WAS IT SEMICOLON?
+       JMP BATEND      /NO, END OF TEMP BATCH STREAM
+       JMS I (GLINE    /YES, READ NEW LINE FROM KEYBOARD
+/**** WHAT IF WE'RE RUNNING UNDER BATCH ****
+       TAD (BEGLN-1
+       DCA XR
+       JMP S2
+
+GOTSEM,        JMS KRLF
+       TAD (".
+       JMP S3
+
+KRLF,  0
+       TAD (215
+       JMS BATPUT
+       TAD (212
+       JMS BATPUT
+       JMP I KRLF
+
+BATPUT,        0
+       ISZ BATPTR
+       DCA I BATPTR
+       TAD BATPTR
+       TAD (-BATBUF-377
+       SNA CLA
+       JMS BATWRIT     /WRITE OUT BUFFER IF FULL
+       JMP I BATPUT
+\fBATWRIT,0
+       JMS I (7607
+       4200            /WRITE 1 BLOCK
+       BATBUF
+BATBLK,        0
+       JMP SEMER2      /  I/O ERROR
+       ISZ BATBLK      /POINT TO NEXT BLOCK
+       ISZ BATLEN      /BUMP LENGTH
+       ISZ BLKLEN
+       SKP
+       JMP SEMER3      /DEVICE FULL
+       TAD (BATBUF-1
+       DCA BATPTR
+       JMP I BATWRIT
+
+BATEND,        JMS KRLF
+       JMS BATLST
+       BATAIL
+       JMS BATWRIT
+       CIF 10
+       CLA IAC         /SYS
+       JMS I (USR
+       4               /CLOSE
+       TEMNAM
+BATLEN,        0               /LENGTH OF TEMPORARY FILE
+       JMP SEMER4      /CLOSE ERROR
+       CIF CDF 10
+       JMP I (ENGOA
+\fBATLST,       0
+       TAD I BATLST
+       DCA BTPT
+       ISZ BATLST
+BTLP,  TAD I BTPT
+       SNA
+       JMP I BATLST
+       JMS BATPUT
+       ISZ BTPT
+       JMP BTLP
+
+BTPT,  0
+
+SEMER4,        IAC     /CLOSE ERROR
+SEMER3,        IAC     /DEVICE FULL
+SEMER2,        IAC     / I/O ERROR
+SEMER1,        IAC     /ENTER ERROR
+       CIF CDF 10
+       JMP I (SEMERR
+       PAGE
+\f      FIELD 1
+       *2001
+       $
+\f