File: CCL.PA of Tape: OS8/OS8-V3/dec-s8-osysb-a-uc2
(Source file text) 

/38	CCL  FOR  OS/8
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1974 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.
/
/
/
/
/
/
/
/
/
/


	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	/MS HERE TO PERFORM SPOOLING WITH DEFAULT EXT IN AC

	BEGLN=1000

/CCL STARTING ADDRESS:	12000
/STARTING ADDRESS:	12001
/CHAIN STARTING ADDRESS:12002

/	JOB STATUS WORD = 2003

	CCLSW=435
	DEASADR=427
	PRQMRK=1357
	GETCCL=1362

	CCLBLK=67	/BLOCK ON SYS: USED BY CCL
	CCLTAB="E	/MUST BE UPDATED IF TABLES CHANGE
	CCLVER="B	/CCL VERSION #

	HNDLR=4400
	BFR=5000
/	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 FROMT ABLE 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:
/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
/	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
	/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
	FIELD 1

	*2000

START,	JMP .+3		/START FROM MONITOR
	JMP I (MONFIX	/START FROM .RUN COMMAND
	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 (VNO
	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 (ENTRY	/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 (GO
MONCHN,	TAD (-44
	JMS I (MOVE	/ASSUME COMMAND LINE IS IN
	CDF 10		/17600-17643
	7600
	CDF 0
	1000		/MOVE TO OS/8 LINE BUFFER
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
ERR2,	CIF CDF 0
	JMP I (NOCCL

BADVNO,	JMS I (PRINT
	BADVMS
	JMS I (VERTN
	JMP I (LEAVE	/GO AWAY
/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
TWAIT,	0
	JMS BATCH
	JMP TW		/BATCH NOT RUNNING
	CLA		/WE'RE RUNNING UNDER BATCH
	JMP I TWAIT
TW,	TSF
	JMP .-1		/WAIT FOR THINGS TO QUIET DOWN
	JMP I TWAIT

/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

BWORD,	0
KCIF,	CIF 0
FILDMY,	FILENAME DUMMY.SV
	PAGE
MONFIX,	JMS I (RDMON
	CDF 0
OLOC,	TAD I ZERO	/7600 OR 7605
	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
L200,
WRMON,	200
	CDF 10
	CIF 0
	JMS I L7607
	4200
L2400,	2400
	10
	JMP I (IOERR
	JMP I WRMON

L7600,	7600
L5,
MONRES,	5
	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
	JMS SETDEV
	LPTDEV
	JMP I SETLPT

L7607,
SETTV,	7607
	JMS SETDEV
	TVDEV
	JMP I SETTV

M7607,
SETTTY,	-7607
	JMS SETDEV
	TTYDEV
	JMP I SETTTY

PCCER3,
SETPTP,	CCER3
	JMS SETDEV
	PTPDEV
	JMP I SETPTP

SETDEV,	0
	TAD I SETDEV
	ISZ SETDEV
	DCA DEVPTR
	CLL STA RAL	/-2
	JMS I (MOVE
	CDF 0
DEVPTR,	0
	CDF 10
	DVNM1
	JMS SETOUT
	JMP I SETDEV
SETOUT,	0
	TAD I (FLAG
	RTR
	SZL CLA
	TAD L5
	TAD L7600
	DCA OLOC
	TAD I OLOC
	SZA CLA
	JMP I SETOUT	/HE'S SPECIFIED SOMTHING
	JMS I L200
	12		/INQUIRE
DVNM1,	0
DVNM2,	0
ZERO,	0
	JMP I (CCER2	/NO SUCH DEVICE
	TAD DVNM2
	DCA I OLOC
	JMP I SETOUT
	PAGE
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
NORM,	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
	CDF 0
	TAD I (AMFLAG	/COMBINE ALTMODE BITS
	CDF 10
	RAR		/IN POSITION 11
	CLA RAR		/PUT NEW ALTMODE BIT ALONE IN BIT 0
	DCA I XR	/STORE AWAY IN C.D. OPTION TABLE
	ISZ PTR		/POINT TO SWITCH WORD 1
	TAD I PTR	/GET TO 1ST OPTION WORD
	DCA I XR	/STORE AWAY IN C.D. OPTION TABLE
	ISZ PTR		/POINT TO SWITCH WORD 2
	TAD I PTR	/GET 2ND OPTION WORD
	DCA I XR	/STORE AWAY IN OPTION TABLE
	ISZ PTR		/POINT TO SWITCH WORD 3
	TAD I PTR	/GET 3RD WORD
	DCA I XR	/STORE AWAY LIKEWISE
	DCA I XR	/ZERO L.O. =
	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
/	-----
/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
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
FLAG,	0
DEV,	0		/DEVICE NUMBER

FLD1,	TAD HISFIL
	JMP SETN
	PAGE
XEXE,	5033;	EXTEXE;	40;0;0;		EXSUB;	YPAL8	/EXECUTE MUST BE FIRST FOR TECO EG

XBAC,	0;				0;	YCAMP	/BACKSPACE
XBOO,	0;				0;	YBOOT	/BOOT
XCCL,	0;				MONRES;	0	/CCL
XCOMPA,	4001;	EXTNUL;	0;0;0;		SETTTY;	YSRCCOM	/COMPARE
XCOMPI,	5033;	EXTCOM;	0;0;0;		EXSUB;	YPAL8	/COM
XCOP,	4001;	STAR;	1;0;0;		MOVRT;	YFOTP	/COPY
XCOR,	0;				DETCOR;	0	/CORE
XCREA,	4400;	EXTNUL;	0;0;0;		CRSUB;	YEDIT	/CREATE
XCREF,	4002;	EXTCF;	1000;0;0;	CREFSB;	YPAL8	/CREF
XDAT,	0;				DATE;	0	/DATE
XDEL,	4001;	STAR;	401;0;0;	KILRT;	YFOTP	/DELETE
XDEA,	0;				DEASSIG;0	/DEASSIGN
XDIR,	4001;	STAR;	0;0;0;		SETTTY;	YDIRECT	/DIRECT
XEDI,	5220;	EXTNUL;	0;0;0;		EDSUB;	YEDIT	/EDIT
XEOF,	0;				0;	YCAMP	/EOF
XHEL,	4001;	EXTHL;	0;20;0;		HLPSUB;	YPIP	/HELP
XLIS,	4001;	STAR;	0;10;0;		SETLPT;	YFOTP	/LIST
XLOA,	5031;	EXTLO;	0;0;0;		EXSUB;	YABSLDR	/LOAD
XMAK,	0;				MAKSUB;	YTECO	/MAKE
XMAP,	4001;	EXTBN;	0;0;0;		SETTTY;	YBITMAP	/MAP
XMUN,	0;				MNGSUB;	YTECO	/MUNG
XPAL,	5033;	EXTPA;	0;0;0;		EXSUB;	YPAL8	/PAL
XPRI,	4000;	STAR;	0;0;0;		SETLPT;	YLPTSPL	/PRINT
XPUN,	4001;	EXTNUL;	0;0;0;		SETPTP;	YPIP	/PUNCH
XREN,	4001;	STAR;	1;100;0;	RENRT;	YFOTP	/RENAME
XRES,	4001;	EXTSY;	0;0;0;		SETTTY;	YRESORC	/RESOURCES
XREW,	0;				0;	YCAMP	/REWIND
XSET,	0;				0;	YCAMP	/SET
XSKI,	0;				0;	YCAMP	/SKIP
XSQU,	4001;	EXTNUL;	0;40;0;		SQSUB;	YPIP	/SQUISH
XSUB,	4000;	EXTBI;	0;0;0;		0;	YBATCH	/SUBMIT
XTEC,	10;				TECSUB;	YTECO	/TECO
XTYP,	4001;	STAR;	0;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;	0;0;2000;	0;	YPIP	/ZERO
	ZBLOCK 30
PTBL,	XEXE
	XBAC
	XBOO
	XCCL
	XCOMPA
	XCOMPI
	XCOP
	XCOR
	XCREA
	XCREF
	XDAT
	XDEL
	XDEA
	XDIR
	XEDI
	XEOF
	XHEL
	XLIS
	XLOA
	XMAK
	XMAP
	XMUN
	XPAL
	XPRI
	XPUN
	XREN
	XRES
	XREW
	XSET
	XSKI
	XSQU
	XSUB
	XTEC
	XTYP
	XUNL
	XUA
	XUB
	XUC
	XVER
	XZER
	ZBLOCK 4
STAR,	5200;	0
	0;	0


EXTSY,	2331;	0
	0;	0
EXTBI,	0211;	0
	0;	0
EXTCF,	2001;	COMPA
/EXTLS,	1423;	COMLS
	0;	COMPA
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
	0;	0
EXTCM,	0315;	0
	0;	0
EXTEXE,	2001;	COMPA	/PA
EXTFT,	0624;	COMFT	/FT
EXTBA,	0201;	COMBA	/BA
	0216;	COMBN	/BN
EXTRL,	2214;	COMRL	/RL
EXTRA,	2201;	COMRA	/RA
EXTSB,	2302;	COMSB	/SB
	0;	0
	ZBLOCK 4
EXTCOM,	2001;	COMPA	/PA
	0624;	COMFT	/FT
	0201;	COMBA	/BA
	2201;	COMRA	/RA
	2302;	COMSB	/SB
	0;	0
	ZBLOCK 4
	PAGE
/CAN PATCH AN EXTENSION TO -1 TO IGNORE IT IN ABOVE TABLE

FORTE,	YF4		/COULD BE CHANGED TO YFORT BY .R CCL
LOADE,	YLOAD		/MAY BECOME YLOADER

COMBN,	0
	TAD I (EXTBN
	DCA SETEXT
	TAD (YABSLDR
	DCA DEFILE
	JMP I COMBN

COMRL,	0
	TAD I (EXTRL
	DCA SETEXT
	TAD LOADE
	DCA DEFILE
	JMP I COMRL

COMPA,	0
	TAD I (EXTPA
	DCA SETEXT
	TAD (YPAL8
	DCA DEFILE
	JMP I COMPA

COMFT,	0
	TAD I (EXTFT
	DCA SETEXT
	TAD FORTE
	DCA DEFILE
	JMP I COMFT

COMBA,	0
	TAD I (EXTBA
	DCA SETEXT
	TAD (YBASIC
	DCA DEFILE
	JMP I COMBA

COMRA,	0
	TAD I (EXTRA
	DCA SETEXT
	TAD (YRALF
	DCA DEFILE
	JMP I COMRA

COMSB,	0
	TAD I (EXTSB
	DCA SETEXT
	TAD (YSABR
	DCA DEFILE
	JMP I COMSB
DEFILE,	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
UNKN,	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
	DCA I (JMSUB
	JMP I UNKN

DOLS,	0
	JMS I (NMOVE
	7605
	JMP I DOLS

DOMP,	0
	JMS I (NMOVE
	7612
	JMP I DOMP

SETEXT,	0		/EXT WHICH HAS BEEN SET BY A CCL SWITCH
HOLD,	0
WRITFT,	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 FILED 1
	3400		/LOCS 3400-3777
FBLK,	0
	JMP I (IOERR
	CIF CDF 0
	JMP I (7605
	PAGE
CD,	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
	JMS I (NMOVE	/MOVE NAME TO OUTPUT FILE NAMES
	7600
	JMP DLOOK
NBS,	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
	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
	JMP BEGGRP

PCLXR,	0
	ISZ CLXR
	DCA I CLXR
	JMP I PCLXR

DONB,	0		/ENTRY PT USED AS FLAG
	JMP I DONB
OUTSW,	-1		/-1 MEANS ON OUTPUT SIDE, 0 ON INPUT SIDE
	PAGE
NUMBER,	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
NUMX,	0
NUMFUJ,	0
NUMKNT,	0		/SET TO -N-1 TO FORCE N DIGITS
HIORD,	0
ASSIGN,	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
AS,	0
	0
	0
ASADR,	HNDLR+1
	JMP I (CDER0
	TAD AS+2
ASGNST,	DCA I (DVICE
	JMP I ASSIGN
DFLTNM,	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
	PAGE
/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 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

CDER6,	JMS I (PRMESG
	BADSTR
CCLSWT,	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
	SKP CLA		/2 CHAR CCL SWITCH
	JMP I (CDER44	/3 CHAR CCL-SWITCH
XLK,	TAD TN
	JMS I (EXTLUK
	CLA
	ISZ DEF
	TAD I DEF
	JMS I (JMSUB	/CALL SUBR
	JMP CCLSWT+1

XLK2,	CLA
	JMP XLK
GETL,	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
LOOKUP,	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 I (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 I (JMSUB	/CALL IT
	TAD LENGTH
	CLL
	TAD (400
	SNL
	CLA
	CLL RTL
	RTL
	AND (7760
LKUPST,	TAD DVICE
	JMP I LOOKUP
LFAILD,	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
IOERR,	JMS I (PRMESG
	SYSER

TS,
HLPSUB,	0
	JMS I (SETTTY
/IF NO INPUT FILE, WANT TO CHAIN TO DIRECT
/WITH *.HE/F AFTER TYPING "INFO ON:"
	JMP I HLPSUB

EXSUB,	0
	TAD PTR
	TAD (-5		/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
SPOOLIT,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
	PAGE
SLSHCH,	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
ZEROCD,	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
	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
OLENGT,	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 I (GCH
	DCA DELIM
	JMP I (DLOOK
	PAGE
PRMESG,	0
	CLA
	TAD I PRMESG
	DCA .+2
	JMS PRINT
	HLT
LEAVE,	JMS I (TWAIT
	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
TYPE,	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
PRINT,	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
CRLF,	0
	TAD (215
	JMS TYPE
	TAD TTY212
	JMS TYPE
	JMP I CRLF

CDER2,	JMS PRMESG
	BADSYN
	PAGE
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
KILRT,	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;	DOLS	/LS
	1602;	DONB	/NB
	1520;	DOMP	/MP
	1400;	SETLPT	/L
	2400;	SETTTY	/T
	2300;	SETTV	/S
	2000;	SETPTP	/P
	0000;	UNKN	/UNKNOWN
	ZBLOCK 4
SCAN,	0
	TAD (BEGLN-1
	DCA T
	CDF 0
NOBLUP,	CLA
	ISZ T
	TAD I T
	SNA
	JMP ENDOFB
	JMS I (DECODE
	SKP CLA
	JMP NOBLUP
	SKP
BLUP,	ISZ T
END2,	TAD I T
	TAD (-240
	SNA
	JMP BLUP
	TAD (240
ENDOFB,	DCA DELIM
	STA
	TAD T
	CDF 10
	DCA I (LBEGIN
	JMP I SCAN
/ALLOW DEASSIGN FOO ?

DEASSIGN,0
	TAD (7740
	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
	PAGE
	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 I (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
/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

TECSUB,	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
TECNORM,JMS TECPUT
	"E;"B;0
	JMS TECMOV
	JMS SETPA
	JMS TECPUT
	ALTMODE;"Y;0
TECLV,	JMS I (REMEM
	0
	JMP I TECSUB
SAVLXR,	0
	PAGE
TPUT,	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
	JMP CDER9

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,	JMS I (GCH
	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
/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

CDER9,	JMS I (PRMESG
	TOOLNG
CCERA,	JMS I (PRMESG
	CONTRA
CRSUB,	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
	CDF 0
	DCA I ARLOC	/REMOVE BACK-ARROW
	CDF 10
	JMS I (REMEM	/REMEMBER CREATE LINE WITHOUT BACKARROW
	1
	JMP I CRSUB

EDSUB,	0
	JMS I (REMEM	/REMEMBER NEW COMMAND LINE
	1
	JMP I EDSUB

ARLOC,	BEGLN		/LOCATION OF ADDED BACK-ARROW IN COMMAND LINE

CCER3,	CDF 10
	JMS I (PRMESG
	BADMON

CDER4,	CLA
	JMS I (PRMESG
	BADSW
CDER44,	CLA
	JMS I (PRMESG
	BADSW2
CDER7,	JMS I (PRMESG
	BADX
	PAGE
INSARR,	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
AT,	0
	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
	CLA
	TAD I (LNAME	/GET BLOCK NUMBER
	DCA BLN
	TAD I (ASADR	/GET HANDLER ADDRESS
	DCA T
	CIF 0
	JMS I T
	200		/READ 2 PAGES
NWB,	BFR+200		/INTO BUFFER
BLN,	0		/FROM THIS BLOCK
	JMP 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
ATERR,	CDF 10
	CLA
	JMS I (PRMESG
	ATIO

COUNT,	0
	PAGE
P,	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
CTZ,	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
	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
	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 (AT+1	/LOOK FOR MORE

ATOVER,	JMS I (PRMESG
	OVFLOW
ENDLEN,	0		/- NO. OF CHARS AT END INCLUDING 0
NEWLEN,	0		/- NO. OF CHARS BEING INSERTED
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
	PAGE
HISIZ,	0		/HIGHEST CORE BANK
NEWCOR,	0		/PROPOSED NEW CORE BANK

DETCOR,	0
	CIF 0
	JMS I (CORE
	TAD (-10
	SNA
	JMS I (K8
	TAD (-30
	SNA
	JMS K32
	TAD (40
	JMS OTOD
	CDF 0
	DCA I (CORMES
	CDF 10
	TAD I (LBEGIN
	DCA LXR
	CDF 0
	STA
	TAD I (CORSIZ
	DCA HISIZ
	JMS I (GLXR	/GET NEXT CHAR
	SNA
	JMP COREQ	/NOT SETTING CORE SIZE
	TAD (-260
	DCA NEWCOR
	TAD NEWCOR
	AND (7770
	SZA CLA
	JMP I (CMDERR	/TRIED TO SET CORE SIZE GT 7
	TAD NEWCOR
	CIA
	TAD HISIZ
	SPA CLA
	JMP BADCOR	/TRIED TO SET SOFTWARE CORE SIZE GT REAL CORE SIZE
	CDF 0
	TAD I (7777
	CDF 10
	RTL		/BATCH BIT TO LINK
	SZL CLA
	JMP WRSCOR	/CAN'T CHANGE CORE SIZE UNDER BATCH
	TAD NEWCOR
	CLL RTL
	RAL
	DCA NEWCOR
	CDF 0
	TAD I (7777
	AND (7707
	TAD NEWCOR
	DCA I (7777
COREQ,	CDF 0
	TAD I (7777
	CDF 10
	AND (70
	SNA
	JMP ABSCOR
	TAD (10
	CLL RAR
	JMS OTOD
	CDF 0
	DCA I (SCRMES
	TAD I (SCRMES
	CIA
	TAD I (CORMES
	CDF 10
	SNA CLA
	JMP ABSCOR	/DON'T PRINT SOFT IF = REAL
	JMS I (PRINT
	SCRMES
	JMP I DETCOR
BADCOR,	JMS I (PRINT
	NOCORE
	JMP COREQ

ABSCOR,	JMS I (PRINT
	CORMES
	JMP I DETCOR
WRSCOR,	JMS I (PRINT
	BATCOR
	JMP COREQ
OTOD,	0
	DCA TT
	DCA T
	TAD TT
	TAD (-12
	ISZ T
	SMA
	JMP .-3
	TAD (72
	DCA CORETM
	STA
	TAD T
	SNA
	TAD (40-60
	TAD (60
	JMS I (ROTL
	TAD CORETM
	JMP I OTOD
CORETM,
K32,	0
	TAD (4100
	CDF 0
	DCA I (CORMES+4
	CDF 10
	JMP I K32
	PAGE
DATE,	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
	AND (7
	DCA TM2
	TAD TM2
	TAD (6760
	DCA YEAR
	TAD DATEM
	CLL RTR
	RAR
	AND (37
	DCA DATEM
	TAD DATEM
	JMS I (OTOD
	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
NODATE,	JMS I (PRMESG
	NONE
DT,	0
TM1,	0
TM2,	0
DATEM,	0
DAY,	0
YEAR,	0

SQSUB,	0
	TAD I (7600
	SZA CLA
	JMP I SQSUB
	TAD I (7617
	DCA I (7600
	JMP I SQSUB

CREFSB,	0
	JMP I CREFSB
	PAGE
/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
	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
DEP,	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
RECALL,	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
LGET,	0
	CDF 0
	TAD I LPTR
	CDF 10
	ISZ LPTR
	JMP I LGET
	PAGE
PUTF,	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
MEMBIG,	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
K8,	0
	TAD (1716
	JMS I (PRWD
	TAD (1431
	JMS I (PRWD
	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
/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

CDERA,	JMS I (PRMESG
	BADEV
	PAGE
/	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
FRCDF,	HLT
	TAD I XR
TOCDF,	HLT
	DCA I XR2
	ISZ T
	JMP FRCDF
	CDF 10
	JMP I MOVE
CDINIT,	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
STARJM,	RELOC STARNM
	JMP STARNM
	RELOC
PSTARS,	STARSW
PSPKG1,	SPKLG1

BEGDIF,	MIFILE-MOFILE
LIMDIF,	MIFILE-MPARAM+2
OUTLIM,	1-MIFILE
LBEGIN,	0		/PTS TO 1 CHAR BEFORE COMMAND KEYWORD ARGUMENT
NMOVE,	0
	TAD I (FLAG
	RTL
	SMA CLA		/FEATURE ENABLED?
	JMP CCERB	/NO
	TAD I (OUTSW
	SZA CLA
	JMP CCERB	/ON OUTPUT SIDE
	TAD I NMOVE
	ISZ NMOVE
	DCA PT1
	TAD I PT1
	SNA
	IAC
	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
	SZA CLA
	STA		/COPY 4 WORDS IF BIT 4 WAS ON
	TAD (-3		/OTHERWISE ONLY COPY 3 WORDS
	JMS MOVE
	CDF 10
	NAME1
	CDF 10
TEM,
PT1,	0
	JMP I NMOVE

CCERB,	JMS I (PRMESG
	BADSW
VERTN,	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,	CLA		/"0" MEANS OLD
	TAD (60
	JMS I (ROTL
	TAD TEM
	CDF 0
	DCA I (VLOC
	CDF 10
	JMS  I (PRMESG
	VMES
	PAGE
	ZBLOCK 7600-.
/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.
VNO,	CCLTAB
KEYWRD,
0530	/EX ECUT
4543
6564
0002	/BA CKSP
0143
5363
6000
0217	/BO OT
5764
0003	/CCL
0314
0003	/COMPA R
1715
2001
6200
0317	/COM PIL
1560
5154
0003	/COP Y
1720
7100
0317	/COR E
2245
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	/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
00
	ZBLOCK 600-.
	IFDEF XYZMCR <

THIS IS THE TECO MACRO WHICH WAS USED TO CREATE THE ABOVE TABLE:


HKGYJ2SR0,.KHXAHKMA
TYPE COMMANDS, SPACE SEPARATES MANDATORY PART FROM
OPTIONAL PART, CR TERMINATES COMMANDS, ^Z TERMINATES ALL.
**  NO EDITING **
HKHXYHXN0UO0UB0UN
!CHLP!^TULQL-32"EOBLANK'QL-13"EOCR'QL-26"EOEND'
!CHLP0!QL&63+QBUT QT/8UXQX+48IQT-(8*QX)+48I
QL"NZJ.UZGNQLIQZJXNK%N'
%O&1"NOCHLP' QN-3"LZUH'I
OCHLP
!BLANK! 32UBZJ.UZGNQLIQZJXNK%NOCHLP
!CR! 
QHJ	/GNZJXN0UN0UB0ULOCHLP0
!END!I00



	>
	*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 CORE
	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
CCLSV,	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
/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
HALF,	-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
	*REST
CORE,	0
COR0,	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 COR0
COREX,	CDF 0
	TAD CORSIZ
	CLL RTL
	CIF CDF 10
	JMP I CORE
CORLOC,	CORX
CORV,	1400
CORSIZ,	1
ERRCMD,	TEXT	/#ERROR IN COMMAND/
BADVMS,	TEXT	/#CCL 3X OVERLAY AND MONITOR INCOMPATIBLE/
	AAAA=.
	*BADVMS+3
	CCLTAB&77^100+40
	*AAAA
LOVMES,	TEXT	/NOT WAR?/
KILMES,	TEXT	/FILES DELETED:/
RENMES,	TEXT	/FILES RENAMED:/
MOVMES,	TEXT	/FILES COPIED:/
SCRMES,	TEXT	\00K/\
	*.-1
CORMES,	TEXT	/00K CORE/
DAYDAY,	TEXT	/DAY /
NOCORE,	TEXT	/# NOT ENOUGH CORE/
BATCOR,	TEXT	/#CANNOT CHANGE CORE CAPACITY WHILE RUNNING BATCH/
JAN,	0
FEB,	3
	4;0;2;5;0;3;6;1;4;6
SUP,	TEXT	/%SUPERCEDING/
MEMWARN,TEXT	/%CAN'T REMEMBER/
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/
BADMON,	TEXT	/#BAD MONITOR/
ATIO,	TEXT	/#INPUT ERROR READING INDIRECT FILE/
OVFLOW,	TEXT	/#COMMAND LINE OVERFLOW/
BADNUM,	TEXT	/#BAD NUMBER/
BADSTR,	TEXT	/#ILLEGAL * OR ?/
BADX,	TEXT	/#BAD EXTENSION/
BADOPT,	TEXT	/#BAD SWITCH OPTION/
TOOLNG,	TEXT	/#COMMAND TOO LONG/
REMBAD,	TEXT	\#I/O ERROR TRYING TO RECALL\
BADSW,	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/
VMES,	TEXT	\OS/8 VERSION  3  (CCL VERSION A)\
	VLOC=VMES+7
	*.-2
	CCLVER&77^100+51	/  X)
	*.+1
YEDIT,	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
YBASIC,	FILENAME BCOMP.SV
	*.-1
YPAL8,	FILENAME PAL8.SV
	*.-1
YFOTP,	FILENAME FOTP.SV
	*.-1
/YCREF,	FILENAME CREF.SV
/	*.-1
YDIRECT,FILENAME DIRECT.SV
	*.-1
YPIP,	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
YRESORC,FILENAME RESORC.SV
	*.-1
YBATCH,	FILENAME BATCH.SV
	*.-1
YRALF,	FILENAME RALF.SV
	*.-1
YSABR,	FILENAME SABR.SV
	*.-1
YDATE,	FILENAME DATE.SV
	*.-1
YCCL,	FILENAME CCL.SV
	*.-1
MONLST,	MON1
	MON2
	MON3
	MON4
	MON5
	MON6
	MON7
	MON8
	MON9
	MON10
	MON11
	MON12
MON1,	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/
COM19,	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/
LPTDEV,	DEVICE LPT
TVDEV,	DEVICE TV
TTYDEV,	DEVICE TTY
PTPDEV,	DEVICE PTP
	FIELD 1
	*2001
	$