File: CCLTAB.MA of Disk: V50/Source/Source-Listing-2
(Source file text) 

/ CCL OVERLAY TABLE
/
/
/
/
/	CCL OVERLAY TABLE
	/VERSION=4B

	.GLOBAL NOCCL,RESNUM,RESHND,ENTRY

	.NOLIST
	.INCLUDE OUT:CCLDEF.MA
	.LIST

/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 THAN 14 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.

	IFDEF XYZMCR <

FOLLOWING IS THE TECO MACRO WE USE TO CREATE THE TABLE:
HKGYJ2SR0,.KHXAHKMA
TYPE COMMANDS, SPACE TERMINATES TABLE PART FROM
COMMENTARY PART, CR TERMINATES BOTH, ^Z TERMINATES ALL.
**  NO EDITING **
HKHXYHXN0UO0UN0UH
!CHLP!^TULQL-32"EOBLANK'QL-13"EOCR'QL-26"EOEND'
!CHLP0!QL&63UT QT/8UXQX+48IQT-(8*QX)+48I
QL"NZJ.UZGNQLIQZJXNK%N'
%O&1"NOCHLP' QN-3"LZUH'I
OCHLP
!BLANK! ZJ.UZGNQLI<UBQB-13"E 0;'QBI>
QZJXNK%N
!CR!
QHJ	/GNZJXN0UN0ULOCHLP0
!END!I00

	>
/TABL0 LOADS OVER THE SAVE, DATE OVERLAY
/AND STARTS AT LOCATION 600

/KEYWORD TABLE IN 400 - THE FOLLOWING 2-LETTER INITIAL
/GROUPS ARE NOT ALLOWED (THEY ARE DECODED BY KM)
/AS - SA - RU - GE - ST - OD

/CONSISTS OF COMMANDS 2 CHARS PER LOCATION
/IN 5-BIT ASCII (ONLY LETTERS ARE LEGAL)
/SEPARATED FROM EACH OTHER BY 6-BIT 00'S.
/@ IS IN TABLE AS _ . 2 _ MUST BE AT END
/OF TABLE FOR TERMINATION. NO LETTER 'K'
/ALLOWED: 'K' ON INPUT IS CONVERTED TO 'C'
/ALSO LOWER CASE INPUT CONVERTED TO UPPER CASE

	.ASECT TABLE0
	FIELD 0

	*400
VNO,	CCLTAB		/MUST BE AT 400!!!
KEYWRD,
0530	/EX ECUTE = EXEKUTIERE
0001	/AC ID = RTES ENGLISCH
0300
0201	/BA SIC
0002	/BO OT
1700
2424	/TT L = TECO.TEC LAUF
0003	/CL OSE
1400
0317	/COMPA RE
1520
0100
0317	/COM PILE = KOMPILIERE
1500
0317	/COP Y
2000
0322	/CREF = KREF
0506
0003	/CRE ATE = KREIERE
2205
0004	/DA TE = DATUM
0100
0405	/DEA SSIGN
0100
0405	/DEL ETE
1400
0411	/DI RECTORY
0004	/DR UCKE = LIST
2200
0425	/DU PLICATE = DUPLIZIERE
0005	/ED IT = EDITIERE
0400
0617	/FO CAL = DPF
0006	/FU TIL
2500	/G OTO = BATCH GOTO
0700	/H ELP = HILFE
1000	/I NHALTSVERZEICHNIS
1100
1401	/LAU F = SPEZ. SUBMIT
2500
1401	/LAD E = LOAD
0400
1411	/LIN KER
1600
1411	/LI ST
0014	/LOE SCHE = DELETE
1705
0014	/LOGI N
1707
1100
1417	/LOGO UT
0717
0014	/LO AD
1700
1501	/MACE = MAKE *KL*
0305
0015	/MACH E = MAKE
0103
1000
1501	/MAC REL
0300
1501	/MAP = MAPPIERE
2000
1505	/ME MORY
0015	/MU NG
2500
1601	/NA ME = RENAME
0017	/OC OMP
0300
1705	/OE FFNE = OPEN
0017	/OP EN
2000
2001	/PA L8
0020	/PIP
1120
0020	/PR INT
2200
2205	/REN AME
1600
2224	/RT ES = GERMAN ACID
0023	/SC HLIESSE = CLOSE
0300
2305	/SEN DE = TALK
1600
2305	/SET = SETZE
2400
2310	/SH SAVE
0023	/SP EICHER = MEMORY
2000
2321	/SQ UISH
0023	/SU BMIT
2500
2331	/SY STEM = RESOURCE
0024	/TA LK
0100
2405	/TE CO
0024	/TY PE
3100
2501	/UA
0025	/UB
0200
2503	/UC
0025	/UX = REMEMBER
3000
2523	/USA = USER PROG 1 !NICE NAME!
0100
2523	/USB = USER PROG 2
0200
2523	/USC = USER PROG 3
0300
2605	/VERD ICHTE = SQUISH
2204
0026	/VERG LEICHE = COMPARE
0522
0700
2605	/VE RSION
0032	/ZEI GE = TYPE
0511
0032	/ZERO
0522
1700	/_ = @
3700	/_ = @
3700
0000
	ZBLOCK 600-.
	*600

/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
RESNUM,	1		/DEVICE NUMBER OF RESIDENT HANDLER
RESHND,	SHNDLR		/ENTRY POINT OF RESIDENT HANDLER
ENTREE,	TAD	(MONLOD
	DCA	ERRET
	TAD	SYSTEM
	DCA	MYSYS
MORE,	TAD	(BEGLN-1
	DCA	LINPTR
	ISZ	LINPTR
	TAD I	LINPTR
	TAD	M240
	SNA CLA		/ELIMINATE LEADING SPACES
	JMP	.-4
FNLUP,	TAD I	LINPTR
	ISZ	LINPTR
	TAD	M340	/TEST FOR LC
M240,	SMA SZA
	TAD	M40	/YES: CHANGE TO UPPER CASE
	TAD	(40
	SNA		/TEST FOR @
	TAD	(37	/YES: CHANGE TO _
	SPA SNA		/LETTERS FROM 1-37,`
	JMP	NOLET	/NOT A LETTER
	TAD	(-<"K&77>
	SNA
	TAD	(<"C-"K>&77	/CONVERT 'K' TO 'C'
	TAD	("K&77
	JMS	GETKAR	/GETKAR WILL STORE IN TEMM
	JMP	MATCH
	CIA
	TAD	TEMM
	AND	(77	/6-BIT ASCII
	SNA CLA		/DO THEY MATCH?
	JMP	FNLUP	/YES
NOMT,	JMS	GETKAR
M40,	SZA SMA CLA	/SKIPS ON ZERO
	JMP	NOMT	/SCAN TO NEXT ENTRY
	ISZ	ENTRY	/COUNT TABLE POSITION
	JMP	MORE
NOLET,	JMS	GETKAR	/LOOK IF TABLE ENTRY OVER
	JMP	MATCH	/YESSS
	JMP	NOMT	/NO: SKIP TO NEXT

MATCH,	TAD	CCLINC	/IS CCL IN CORE?
	SZA CLA
	JMP	CCLGO	/YES: MAKE IT FAST
TEGO,	DCA	CCLINC	/IF FROM TECO: CCL NOT IN CORE
	TAD	(7603	/YES
	DCA I	(JSBITS
	CIF 10
	JMS I	MYSYS	/CALL USR AND LOCK IN CORE
	10
	TAD	RESNUM
	CIF 10
	JMS I	(USR
	2
CCLBLC,	CCLSV
CCLEN,	0
CCLNHR,	JMP	NOCCL	/ISZ'ED IF KBM NOT IN MEMORY
	CLA IAC
	TAD	CCLBLC
	DCA	CCLRDB
	JMS I	RESHND
CCLCCW,	1211		/READ 12 PAGES OF CCL.SV
CCLSTR,	2000		/REST IS READ BY OVERDRV
MYSYS,
CCLRDB,	7700		/INITIALLY POINTS TO USR
	JMP	NOCCL
	TAD	CCLBLC
	DCA I	(SOFSET	/CCL BLOCK TO SOFSET
	TAD	RESHND
	DCA I	(MREAD-1
	TAD	RESNUM
	DCA I	(SBLOCK
CCLGO,	CIF CDF 10
	JMP I	CCLSTR

CCLSV,	FILENAME CCL.SV
HALF,	-1		/0 MEANS LEFT HALF
KPTR,	KEYWRD

/GETKAR GETS NEXT 6-BIT CHAR, LEAVES IT IN AC
/TAKES RETURN 1 IF CHAR IS 0
/TAKES RETURN 2 OTHERWISE
/ABORTS BY IT SELF IF END OF TABLE (2 6-BITS)

GETKAR,	0
	DCA	TEMM
	ISZ	HALF
	JMP	RTHALF
	TAD I	KPTR
	BSW
	JMP	INSIDE
RTHALF,	STA
	DCA	HALF
	TAD I	KPTR
	ISZ	KPTR
INSIDE,	SNA		/IS IT END OF TABLE?
	JMP I	(PRQMRK	/YES: ABORT TO KBM
	AND	(77
M340,	SZA
	ISZ	GETKAR
	JMP I	GETKAR

NOCCL,	SPA CLA		/DON'T PRINT ON HANDLER ERROR
	JMP I	(MONLOD	/GO BACK TO MON IF CCL NOT FOUND ON TECO EG COMMAND
	JMS I	(PRMES	/PRINT ERROR MESSAGE OTHERWISE
.IF NDF GERMAN <	TEXT	/NO CCL! />
.IF DF  GERMAN <	TEXT	/KEIN CCL/>
	PAGE