/COPYRIGHT DIGITAL EQUIPMENT CORPORATION    1969
/MAYNARD,MASS.
/CDB -- IOPS ASCII ONLY CARD READER HANDLER.
/TALKS TO CR01E, CR02B, AND CR03B CARD READERS.
/10-2-69
/IOPS4:
/	HOPPER EMPTY
/	STACKER FULL
/	NOT READY:	STOP BUTTON DEPRESSED
/			START BUTTON NOT DEPRESSED
/			VALIDITY CHECK WITH VALID. BUTTON ON
/	FEED CHECK
/	READ CHECK
/
/END-OF-MEDIUM:
/	EOF CARD (ALL 1'S IN COLUMN 1)
/	EOF BUTTON DEPRESSED WITH HOPPER EMPTY
	.ABS
.MED=3
	.LOC 3020
CD=.
	JMP CDNEXR
CDDMOD=2731
CDRLBH=2733
CDCALP=3015
CDARGP=3016
CDBWC=2734
CDBPRO=2704
CDBC=3017
LC2=3005
CDEOM=3014
CDIOSW=3001
CEXITP=2755
/
/--------------- CRO3B
/
	.IFUND	NOTGDI
CRSC=706722	/SELECT A CARD
CROR=706702	/IOR DATA AND STATUS INTO AC
CRCS=706704	/CLEAR STATUS REGISTER AND DATA BUFFER
CRSI=706721	/SKIP IF COR INTERRUPT IS SET
CRLA=706724	/IOR DATA BUFFER AND STATUS REGISTER INTO AC.
CROC=706716	/CLEAR AC,IOR DATA+STATUS,CLEAR STATUS
	.ENDC
/-----
/
	.IFDEF	NOTGDI
CRSI=706701		/SKIP ON COLUMN READY FLAG.
CRSD=706721		/SKIP ON CARD DONE FLAG.
CRCD=706724		/CLEAR CARD DONE FLAG.
CRSC=706744		/SELECT CARD, BINARY MODE.
CRRB=706752		/READ BUFFER, BINARY MODE.
CRSR=706741		/SKIP ON READER READY.
CREF=706761		/SKIP ON EOF BUTTON (CR02 ONLY)
	.ENDC
CDB.	DAC CDCALP	/SAVE POINTER TO CAL INSTRUCTION.
	DAC CDARGP	/POINTER TO ARGUMENT LIST ALSO.
	ISZ CDARGP	/BUMP TO FUNCTION CODE.
	LAC* CDARGP	/PICK UP FUNCTION CODE.
	ISZ CDARGP	/BUMP TO NEXT ARGUMENT OR TO RETURN.
	TAD CJLIT		/FORM DISPATCH ADDRESS.
	DAC .+1		/SET UP JMP INTO DISPATCH TABLE.
CDBDSP	XX		/DISPATCH ON FUNCTION.
	JMP CDINIT	/1 -- .INIT
CD7700	LAW 10000		/2 -- .OPER (IGNORED)
	JMP CDRBMP	/3 -- .SEEK (IGNORED)
	JMP CDERR6	/4 -- .ENTER (ILLEGAL)
	JMP CDERR6	/5 -- .CLEAR (ILLEGAL)
	JMP CDWAIT	/6 -- .CLOSE
LCDIGJ	JMP CDIGNR	/7 -- .MTAPE (IGNORED)
	JMP CDREAD	/10 -- .READ
	JMP CDERR6	/11 -- .WRITE (ILLEGAL)
	JMP CDWATR	/12 -- .WAIT,.WAITR
CDERR6	LAW 6		/13 -- .TRAN (ILLEGAL)
CDRSKP	SKP		/GO TO .MED
CDERR7	LAW 7		/ILLEGAL DATA MODE.
	JMP* LC4		/TO .MED.
CJLIT	JMP CDBDSP
/INITIALIZE CARD READER.
CDINIT	ISZ CDARGP	/BUMP TO BUFFER SIZE LOCATION.
	LAC LC44		/GET STANDARD SIZE (36(10)).
	DAC* CDARGP	/INSERT BUFFER SIZE IN ARGUMENT LIST.
CDRBMP	ISZ CDARGP	/BUMP TO RETURN.
CDSETP	CAL+55		/ENTER ONE-TIME SECTION TO SET UP
CDLPTR	16		/SKIP CHAIN AND API CHANNEL REGISTER.
CDCPTR	CRSI
CDTLEN	CDRINT+200000	/INTERRUPT HANDLER.
CDR7CT=CDTLEN
	.IFDEF	NOTGDI
CDRWD1	CAL+55		/SECOND CARD READER SKIP IOT.
CDRWD2	16		/CALL .SETUP AGAIN.
CDRWD3	CRSD		/FOR CARD DONE FLAG.
CDRAC	CDRINT+200000	/SAME PLACE.
	.ENDC
CDCOLC	LAC .+2		/GET JMP TO RETURN.
CDIPTR	DAC CDSETP	/SET TO IGNORE FURTHER CALLS.
CDWDCT	JMP CDIGNR	/RETURN TO CALLER.
/WAIT FOR CARD READER.
CDWATR	LAW 1000
	AND* CDCALP	/WAIT?
	SNA		/NO, WAITR
	JMP CDWAIT
	LAC L70S		/LINK, ETC
	AND CDCALP
	DAC CDCALP
	LAC* CDARGP	/WAITR ADDRESS
	AND LC57S
	XOR CDCALP
	ISZ CDARGP
	DAC CDCALP
CDWAIT	JMS CDIOTS	/GO SEE IF PREVIOUS INPUT IS COMPLETE.
CDIGNR	DBR		/ALL FINISHED, DEBREAK FROM LEVEL 4.
	XCT .+1
	JMP* CDARGP	/AND RETURN BELOW ARGUMENT LIST.
CDIOTS	0
	LAC CDIOSW
	SNA
	JMP* CDIOTS
CDRBSY	DBR		/NOT DONE YET, DEBREAK.
	XCT .+1
	JMP* CDCALP	/AND RETURN TO CAL.
/INITIATE READ TO CARD READER.
CDREAD	JMS CDIOTS	/ARE WE DONE YET WITH PREVIOUS READ?
	LAW 7000	/YES, PICK UP CAL -- DATA MODE IN 6-8.
	AND* CDCALP		/MASK OUT 6-8.
	XOR LC200		/ZERO IOPS ASCII INDICATOR.
	SZA		/WILL SKIP IF IOPS ASCII IS WANTED.
	JMP CDERR7	/NOT IOPS ASCII, COMPLAIN.
	LAC LCDIGJ	/SET RETURN ADDRESS (JMP CDIGNR, NOW)
	DAC CDOUTX	/FROM READ
CDNEXR	LAC CD7700
	DAC CDIFSW
	LAC* CDARGP	/PICK UP LINE BUFFER ADDRESS.
	DAC CDRLBH	/GIVE TO LINE BUFFER POINTER.
	ISZ CDARGP	/BUMP TO WORD COUNT.
	LAC* CDARGP	/GET THAT,
	DAC CDWDSV	/SAVE IN CASE OF IOPS4.
	ISZ CDARGP	/BUMP TO RETURN.
	.IFDEF	NOTGDI
CDRRTN	CREF		/EOF BUTTON OR HOPPER EMPTY?
	.ENDC
	JMP CDOK		/NO, GO ON
CDREOM	JMP CEXITP
LCDBUF	CDBUFF+200000
LCDBFE	CDBUFF+200120
/SET UP AND START I/O
CDOK	LAC LCDBUF	/GET ADDR. OF HANDLER BUFFER
	DAC CDIPTR	/SET DESTINATION OF FIRST COLUMN
	DZM* CDIPTR	/CLEAR FIRST COLUMN
	.IFDEF NOTGDI
	LAW -120		/COUNT 80 COLUMNS MAXIMUM
	DAC CDCOLC	/..
	CRSR	/ENSURE THAT READER IS READY
	JMP CDR4		/NOT READY, IOPS 4
	.ENDC
	DZM CDRVAL
	LAC CDRLBH	/GET POINTER TO HEADER
	TAD LC2		/AND RESET INPUT BUFFER
	DAC CDLPTR	/TO HEADER+2
	DAC CDBC
	LAC CDWDSV	/RESET WORD PAIR COUNTER
	DAC CDWDCT
	LAW -1
	DAC CDIOSW
	LAC LCRAIS
CDIFSW	XX		/NOP, IOF, OR ISA
	CRSC		/SELECT A CARD
CDOUTX	JMP CDIGNR	/JMP CDIGNR OR CDRTRY(FROM IOPS4 COND.)
/IOPS 4
CDR4	LAC LCDRRT	/SET RETURN IN .MED
	DAC* LC3
	LAC LC4
	JMP* LC4
	.IFUND NOTGDI
CDRRTN=CDOK
	.ENDC
	.EJECT
/A CARD IS PRESENT. REMAP IT.
CDTRAL	LAC LCDBUFF	/GET COLUMN-DATA BUFFER.
	DAC CDIPTR	/SET UP INPUT POINTER.
	LAC LC3
	DAC CDWPC
	LAC CDCOLC
	SNA
	JMP CDCLOS
CDRM5	LAW -5		/5-CHARACTER COUNTER.
	DAC CDR5CT	/..
CDRML2	LAC* CDIPTR	/ALT MODE(12,1,8 PUNCH)?
	SAD CDRALT
	JMP CDGALT	/YES
	LAC CDTABL	/GET TOP OF TABLE.
	DAC CDTPTR	/SET TOP OF CURRENT TABLE
	LAC CDTLN1	/SET INITIAL (FULL) TABLE LENGTH.
CDRML4	DAC CDTLEN	/CURRENT LENGTH/2.
	ADD CDTPTR	/CURRENT TABLE TOP + LENGTH/2
	DAC CDCPTR	/CURRENT ITEM IN TABLE
	LAC* CDCPTR	/GET CURRENT ITEM.
	AND LC7777		/THROW AWAY JUNK.
	SZA!CLL
	ADD CD7700	/REST OF 2'S COMPLEMENT WORD.
	TAD* CDIPTR	/CURRENT COLUMN
	SNA!CLA
	JMP CDCFND	/MATCH FOUND.
	SAD CDTLEN	/COLUMN .L. TABLE ENTRY AND CDTLEN .E. 0,
	JMP CDR4
	SNL		/L=0 JMP UP,L=1 JMP DOWN TABLE.
	JMP CDDPTR	/COLUMN .L. ENTRY.
	LAC CDCPTR	/SET TABLE TOP TO LOWER HALF.
	DAC CDTPTR	/NEW TABLE TOP.
CDDPTR	LAC CDTLEN	/UPDATE NEW TABLE LENGTH.
	CLL!RAR		/LENGTH = LENGTH/2
	JMP CDRML4	/GO GET NEW TABLE ENTRY.
CDGALT	LAW 4000		/ALT MODE
	JMP CDCPUT
/COME HERE ON MATCH FOUND.
CDCFND	LAC* CDCPTR	/FOUND, GET CURRENT ENTRY.
	CMA!CLL
	TAD CDTABL+1	/GENERATE LEFTMOST BIT.
	CMA
	XOR CDTABL+1	/RESTORE SIXTH BIT.
	RAR
CDCPUT	DAC CDRWD3
CDCLAW	LAW -7		/IN HEADER WORD.
	DAC CDR7CT	/SET UP FOR SHIFTING THE
CDCPL1	LAC CDRWD3
	RAL		/LEFTMOST 7-BITS OF
	DAC CDRWD3	/CDRWD3 INTO THE TWO
	LAC CDRWD2	/WORD BUILDER SET AT
	RAL		/CDRWD2+1.
	DAC CDRWD2
	LAC CDRWD1
	RAL
	DAC CDRWD1	/BUILD THE 5/7 ASCII
	ISZ CDR7CT
	JMP CDCPL1	/DOUBLE WORD
	ISZ CDIPTR
	ISZ CDR5CT
	JMP CDRML2
	LAC CDWDCT
	TAD LC2
	DAC CDWDCT
	SMA
	JMP CDVER2
	ISZ CDWPC
	LAC CDRWD2
	CLL!RAL
	DAC CDRWD2
	LAC CDRWD1
	RAL
	DAC* CDLPTR
	ISZ CDLPTR
	LAC CDRWD2
	DAC* CDLPTR
	ISZ CDLPTR
	ISZ CDCOLC
	JMP CDRM5
	.EJECT
/THE BUFFER HAS BEEN REMAPPED.
/STORE A CARRIAGE RETURN IN
/THE TRAILER WORD AND SET UP
/THE HEADER WORD.
/
CDCLOS	LAC LC6400
	DAC* CDLPTR
	LAC CDWPC
	CLL!RAL
	RTL
	RTL
	RTL
	RTL
	TAD CDRVAL
	TAD LC2
CDPLBH	DAC* CDRLBH
	LAC LCDRTJ
	DAC CDOUTX
	JMS CDBPRO
	IOF		/INHIBIT PIC TEMPORARILLY.
	DZM CDIOSW
LCDRTJ	JMP CDIRET
CDVER2	LAW -2
	TAD CDLPTR
	DAC CDLPTR
	LAC LC60
	DAC CDRVAL
	JMP CDCLOS
CDRERR	LAC LCDRTJ	/RETURN TO WHERE THE PROG
	DAC CDOUTX	/WAS INTERRUPTED, AFTER
	JMP CDR4		/INITIATING A REREAD.
LCDRRT	CDRRTN+200000
	.EJECT
/CARD READER INTERRUPT SECTION.
CDRINT	SKP		/CONTROL COMES HERE ON PIC INTERRUPT.
	JMP CDRAPI	/CONTROL COMES HERE ON API INTERRUPT.
	DAC CDRAC		/PIC INTERRUPT, SAVE AC.
	LAC LCION		/GET ION CODE.
	DAC CDRSW		/SET TO TURN PIC BACK ON AT EXIT.
	LAC LCIOFC
	DAC CDIFSW
	LAC* CDTABL+1	/GET LOCATION ZERO.
	JMP CDSVPC	/SAVE AS INTERRUPT PC.
CDRAPI	DAC CDRAC		/API ENTRY, SAVE AC.
	LAC CDRNOP	/GET NOP CODE.
	DAC CDRSW		/SET TO LEAVE PIC ALONE AT EXIT.
	LAC LCISA
	DAC CDIFSW
	LAC CDRINT	/GET ENTRY.
CDSVPC	DAC CDROUT	/SAVE AS RETURN.
	.IFDEF	NOTGDI
	CRSI		/SKIP ON COLUMN READY
	JMP CRDONE	/MAYBE DONE
	LAC CDCOLC	/COLUMN FLAG, GET CURRENT COUNT.
	RAL		/PUT OVERFLOW INDICATION IN LINK (0 IF SO).
	CRRB		/READ COLUMN, TURN OFF FLAG.
	SZL		/SKIP IF OVERFLOW HAS OCCURRED.
	.ENDC
/
/--------------------CRBB
/
	.IFUND	NOTGDI
	CROC		
	SPA		/IF ERROR FLAG ON
	SAD LCHEMP	/ERR,HE,AND CARD DONE FLAG
	SKP		/YES..NORMAL CONDITION
	JMP CDRERR
	RCR
	SML
	JMP CR3DUN
	RAR
	AND LC7777
	.ENDC
/
/-----
/
	DAC* CDIPTR	/OTHERWISE, INSERT THIS COLUMN IN BUFFER.
	ISZ CDIPTR	/BUMP BUFFER POINTER FOR NEXT TIME.
	.IFDEF NOTGDI
	ISZ CDCOLC	/COUNT 80 COLUMNS SERVICE.
	.ENDC
CDRNOP	NOP
CDIRET	LAC CDRSKP	/GET SKIP CODE.
	DAC CDRINT	/RESTORE ENTRY IN CASE OF API INTERRUPT.
	LAC CDRAC		/RESTORE AC.
CDRSW	XX		/ION (IF ENTERED VIA PIC) OR NOP (IF ENTERED VIA API).
	DBR
	XCT .+1
	JMP* CDROUT
	.IFDEF	NOTGDI
CRDONE	CRCD		/CLEAR CARD DONE FLAG
	.ENDC
CR3DUN	LAC CDBUFF	/EOF CARD(COLUMN 1=ALL 1'S)?
	ION		/ALLOW OTHER I/O TO GO ON.
	XOR LC7777
	SNA!CLA		/NO
	JMP CDREOM
/THE COMPLETE CARD HAS NOW BEEN READ. IT HAS ALSO
/BEEN DETERMINED THAT THE LAST CARD READ WAS NOT AN END-
/OF-FILE CARD.
/GO BACK AND REMOVE BLANKS BEFORE REMAPPING, REMEMBER THAT
/API AND PIC ARE OFF.
/
	LAW -20		/LOOP THROUGH 16(10)X(5) TIMES=80
	DAC CDCOLC
	LAC LCDBFE	/LAST LOCATION OF INTERNAL BUFFER.
	DAC CDIPTR	/END OF LOOP INITIALIZATION
CDBACK	LAW -5		/LOOK AT 5 WORD SETS FOR BLANKS
	DAC CDR5CT
	TAD CDIPTR	/MOVE POINTER BACK 5 WORDS
	DAC CDIPTR
	DAC CDTPTR
	LAC* CDTPTR
	SZA
	JMP CDTRAL	/NOT BLANK, GO TO TRANSLATE ROUTINE
	ISZ CDTPTR	/MOVE POINTER UP 1 WORD
	ISZ CDR5CT	/HAVE WE LOOKED AT 5 WORDS?
	JMP .-5		/NO...KEEP GOING
	ISZ CDCOLC	/HAVE WE LOOKED AT 16 SETS OF 5 WORDS?
	JMP CDBACK	/NO...GET ANOTHER SET
	JMP CDTRAL	/YES...CARD IS BLANK.
	.EJECT
/BEGINNING OF ABSOLUTE SECTION*******************************************
/TABLE OF CODES.
CDTABL	CDTABL+1+200000
CDABS=.
	400000		/BLANK
	710001\7777+1	/9	/THIS TABLE REPRESENTS A SIX-BIT CODE (LEFT-MOST)
	700002\7777+1	/8	/AND THE 2'S COMPLEMENT OF VALID ASCII
	670004\7777+1	/7	/CARD PUNCHES (RIGHTMOST 12 BITS). 7777+1 IS
	.IFUND DEC026
	420006\7777+1	/"	/ADDED TO THE 12 BIT CARD CODE TO GENERATE ITS
	.ENDC
	.IFDEF DEC026
	340006\7777+1	/(\) BACKSLASH 026 MODE
	.ENDC
	660010\7777+1	/6	/(12-BIT) RECIPROCAL BY THE ASSEMBLER.
	.IFUND DEC026
	750012\7777+1	/=	/
	.ENDC
	.IFDEF DEC026
	470012\7777+1	/(') APOSTROPHE 026 MODE
	.ENDC
	650020\7777+1	/5	/IF THE PUNCHES IN A CARD COLUMN WERE
	.IFUND DEC026
	470022\7777+1	/,	/12-1 (A OR BINARY 4400) THE PROGRAM
	.ENDC
	.IFDEF DEC026
	360022\7777+1	/(^) UP-ARROW 026 MODE
	.ENDC
	640040\7777+1	/4	/WOULD JUMP HALFWAY INTO THIS TABLE AND
	000042\7777+1	/@	/PULL OUT A WORD. THE LEFTMOST 6-BITS.
	630100\7777+1	/3	/WOULD BE STRIPPED OFF AND REPLACED BY 77
	.IFUND DEC026
	430102\7777+1	/#	/TO COMPLETE THE NEGATION STARTED AT THE
	.ENDC
	.IFDEF DEC026
	750102\7777+1	/(=) EQUAL SIGN 026 MODE
	.ENDC
	620200\7777+1	/2	/ASSEMBLER LEVEL. THIS (NOW 18-BIT) NEGATIVE
	.IFUND DEC026
	720202\7777+1	/:	/NUMBER IS ADDED TO THE COLUMN BINARY A 0
	.ENDC
	.IFDEF DEC026
	370202\7777+1	/(_) LEFT ARROW 026 MODE
	.ENDC
	610400\7777+1	/1	/RESULT INDICATES A MATCH. A NON ZERO
	601000\7777+1	/0	/RESULT CAUSES A DECISION WHETHER TO JMP
	321001\7777+1	/Z	/HALFWAY INTO THE UPPER OR LOWER HALF,
	311002\7777+1	/Y	/EFFECTIVELY SHRINKING THE TABLE, UNTIL A
	301004\7777+1	/X	/MATCH IS FOUND.
	.IFUND DEC026
	771006\7777+1	/?	/
	.ENDC
	.IFDEF DEC026
	451006\7777+1	/(%) PER CENT SIGN 026 MODE
	.ENDC
	271010\7777+1	/W	/WHEN A MATCH OCCURS THE TABLE WORD IS
	.IFUND DEC026
	761012\7777+1	/>	/REFERENCED AGAIN TO GET THE ASCII
	.ENDC
	.IFDEF DEC026
	431012\7777+1	/(#) NUMBER SIGN 026 MODE
	.ENDC
	261020\7777+1	/V	/EQUIVALENT. IN THE EXAMPLE ABOVE
	.IFUND DEC026
	371022\7777+1	/RIGHT ARROW	/THE WORD POINTED TO BY A IS (013400).
	.ENDC
	.IFDEF DEC026
	421022\7777+1	/(") DOUBLE QUOTE 026 MODE
	.ENDC
	251040\7777+1	/U	/COMPLEMENT THIS NUMBER, CLEAR THE LINK,
	.IFUND DEC026
	451042\7777+1	/%	/AND ADD 400000 TO IT. (013400=764377)
	.ENDC
	.IFDEF DEC026
	501042\7777+1	/(()LEFT PAREN 026 MODE
	.ENDC
	241100\7777+1	/T	/(764377+400000)=364377 WITH LINK=1.
	541102\7777+1	/,	/
	231200\7777+1	/S	/COMPLEMENT THE RESULT (364377=413400)
	.IFUND DEC026
	351202\7777+1	/]	/XOR THE LEFTMOST BIT (41300=013400)
	.ENDC
	.IFDEF DEC026
	731202\7777+1	/(;) SEMI COLON 026 MODE
	.ENDC
	571400\7777+1	//	/ROTATE THE LINK INTO THE WORD AND
	552000\7777+1	/-	/STRIP OFF LOW ORDER 11-BITS.
	222001\7777+1	/R	/RESULT: A=(40400).
	212002\7777+1	/Q	/THIS RESULT IS SAVED AND SHIFTED LEFT
	202004\7777+1	/P	/7 TIMES. (404000=000101).
	.IFUND DEC026
	342006\7777+1	/\
	.ENDC
	.IFDEF DEC026
	462006\7777+1	/(&) AMPERSAND 026 MODE
	.ENDC
	172010\7777+1	/O
	.IFUND DEC026
	732012\7777+1	/;
	.ENDC
	.IFDEF DEC026
	762012\7777+1	/(>) GREATER THAN  026 MODE
	.ENDC
	162020\7777+1	/N
	.IFUND DEC026
	512022\7777+1	/)
	.ENDC
	.IFDEF DEC026
	332022\7777+1	/([) LEFT BRACKET  026 MODE
	.ENDC
	152040\7777+1	/M
	522042\7777+1	/*
	142100\7777+1	/L
	442102\7777+1	/$
	132200\7777+1	/K
	.IFUND DEC026
	412202\7777+1	/!
	.ENDC
	.IFDEF DEC026
	722202\7777+1	/(:) COLON  026 MODE
	.ENDC
	122400\7777+1	/J
	.IFUND DEC026
	464000\7777+1	/&
	.ENDC
	.IFDEF DEC026
	534000\7777+1	/(+) PLUS SIGN  026 MODE
	.ENDC
	114001\7777+1	/I
	104002\7777+1	/H
	074004\7777+1	/G
	.IFUND DEC026
	364006\7777+1	/^
	.ENDC
	.IFDEF DEC026
	414006\7777+1	/(!) EXCLAMATION  026 MODE
	.ENDC
	064010\7777+1	/F
	.IFUND DEC026
	534012\7777+1	/+
	.ENDC
	.IFDEF DEC026
	744012\7777+1	/(<)  .LESS THAN.  026 MODE
	.ENDC
	054020\7777+1	/E
	.IFUND DEC026
	504022\7777+1	/(
	.ENDC
	.IFDEF DEC026
	354022\7777+1	/(]) RIGHT BRACKET  026 MODE
	.ENDC
	044040\7777+1	/D
	.IFUND DEC026
	744042\7777+1	/<
	.ENDC
	.IFDEF DEC026
	514042\7777+1	/()) RIGHT PAREN  026 MODE
	.ENDC
	034100\7777+1	/C
	564102\7777+1	/.
	024200\7777+1	/B
	.IFUND DEC026
	334202\7777+1	/[
	.ENDC
	.IFDEF DEC026
	774202\7777+1	/(?) QUESTION MARK  026 MODE
	.ENDC
	014400\7777+1	/A
CDTLN1	.-1-CDTABL/2
LC44	44
CDRALT	4402
LC200	2000
LC4	4
LC3	3
LC7777	7777
LC6400	64000
LC20	20
LC60	60
LCION	ION
LCIOFC	IOF
LCISA	ISA
LCRAIS	400040
L70S	700000
LC57S	77777
LCHEMP	600002
CDROUT
CDBUFF	.BLOCK 120
CDWPC
CDDTPT
CDTPTR
CDR5CT
CDRVAL
CDWDSV	
	.IFUND	NOTGDI
CDRWD1		/LOW ORDER 5/7 ASCII BUILDER
CDRWD2		/HIGH "     "    "      "
CDRWD3		/7-LEFT MOST BITS=1 CARD COLUMN
CDRAC
	.ENDC
CDEND=.
	.LOC 5304
	CD-1
	CDABS-CD\777777+1
	CDABS-1
	CDEND-CDABS\777777+1
	.END
