/019 SUBROUTINE READS A DECIMAL NUMBER FROM KEYBD
/RUBOUT REMOVES NUMBER COMPLETELY
/
/
/CALL	:JMS DECINP
/	RETURN WITH NUMBER BINARY IN AC
/
/
DECINP,0
	CLA
	DCA DECNUM	/CLEAR REGISTER
	JMS READ	/READ CHAR FROM KEYOARD
	TAD CHAR
	JMS PRINT	/PRINT THAT CHAR
	TAD CHAR	/GET CHARACTER
	TAD M377	/IS IT RUBOUT?
	SNA CLA
	JMP DECINP+1	/YES READ ALL OVER AGAIN
	TAD CHAR	/NO
	TAD M220
	SPA		/CHAR>=260?
	JMP DECOUT	/NO,CHARACTER IS DELIMETER
	TAD M12		/YES
	SMA CCA		/CHAR<272?
	JMP DECOUT	/NO,CHAR IS DELIMETER
	TAD DECNUM	/YES,CHAR IS FIGURE
	LL RAL
	DCA DECTMP	/NUMB.*2
	TAD DECTMP
	RTL		/NUMB*8
	TAD DECTMP	/NUMB*8+NUMB*22NUMB*10
	TAD CHAR	/ADD LAST FIGURE
	TAD M260
	DCA DECNUM	/DECIMAL NUMBER
	JMP DEINP+3
/
DECOUT,CLA
	TAD DECNUM
	JMP I DECINP	/EXIT
/
/VARIABLES
/
DECNUM,0
ECTMP,0
/
/GENERAL CONSTANTS
M12,	-12
M260,	-260
M377,	-377
/020 DECIMAL PRINT ROUTINE,
/PRINTS AC DECIMAL IN 4 DIGITS
/MAX NUMBER = 4095 DECIMAL
/SKIPS LEADING ZERO'S
/
DPRT,	0
	DCA DPRREG	/SAVE AC II PRINTREG.
	TAD DPRINS	/GET INSTRUCTION
	DCA DPRPTP	/PUT INSTR. ON POINTER
	TAD   4
	DCA DPRFAC	/4 DIGITS
	DCA DPRFL	/CLEAR PRINT 0 FLAG
	DCA DPRFIG	/CLEAR DIGIT
PRSUB,CLL
	TAD DPRREG	/PICK UP SAVED AC
DPRPTP,TAD DPRTEN	/SUBTRACT POWER OF TEN
SNL		/REMAINDER POSITIVE?
	JMP .+4		/NO, PRINT DIGIT
	DCA DPRREG	/YES, SAVE REMAINDDR
	ISZ DPRFIG	/DIGIT:=DIGIT+1
	JMP DPRSUB	/REPEAT SUBTRACTION
	CLA CLL
	TAD DPRFFG	/GET DIGIT
	SNA		/A ZERO?
	JMP DPRZRO	/YES
DPRIN, TAD C260		/NO, CONVERT TO ASCI
	JMS PRINT
	ISZ DPRFL	/MAKE NOT EQUAL 0
DPRIN1,ISZ DPRPTP	/MODIFY INSTR ON DPRPTP
	ISZ DPRFAC	/PRINTED 4 DIGITS?
	JMP DPRSUB-1	/NO, PRINT NEXT DIGIT
	JMP I DPRT	YES, RETURN
/
DPRZRO,TAD DPRFL
	SZA CLA
	JMP DPRIN
	JMP DPRIN1
/
DPRREG,0
DPBFL, 0
DPRINS,TAD DPRTEN
DPRFAC,0
DPRFIG,0
DPRTEN,6030	/-1000
	7634	/-100
	7766	/-10
	7777	/-1
/
/GENERAL CONSTANTS
M4,	-4
C260,	260
/021 SUBROUTINE TO PRINT DOUBLE LENGTH DECIMAL
/
/CALL: JMS DDECP
/	MOST SIGNIFICANT PART
/	LEAST SIGNIFICANT PART
/	NUMBER OF DIGITS TO BE PRINTEDD( <=8 )
/	RETURN
/
/
DDECPR,0
	TAD I DDECPR	/FETCH MOST SIGNIFICANT PART
	DCADDX		/SAVE
	DCA DDPD	/CLR NUMB. OF PRINTED DIGITS
	ISZ DDECPR
	TAD I DDECPR	/FETCHHLEAST SIGNIFICANT PART
	DCA DDX+1	/SAVE
	ISZ DDECPR
	TAD I DDECPR	/FETCH FORMAT

DCA DDNDIG
	ISZ DDECPR	/CORRECT RETURN
	TAD DDATPL	/ADDRESS 10-POWER LOW
	DCA DDPPPL	/POINTER 10-POWER LOW
	TAD DDATPH	/ADDRESS 10-POWER HIGH
	DCA DDPTPH	/POINTER 1-POWER HIGH
	TAD M10
	DCA DDNFAC	/FACTORISE 8 DIGITS
	DCA DDIGIT	/CLEAR DIGIT
DDSUB, CLL
	TAD DDX+1	/L SIGNIFIC PART OF NUMB.
	TAD I DDPTPL	/LOW PART FACTOR
	DCA DX+1	/STORE
	RAL		/OVERFLOW IN AC
	TAD DDX		/M SIGNIFIC PART OF NUMB.
	TAD I DDPTH	/HIGH FACTOR
	SNL		/RESULT NEGATIVE?
	JMP .+4		/YES
	DCA DDX		/STORE RESULT OF SUBTRACTION
	ISZ DDIGIT	/NO, STEP UP DIGIT
	JMP DDSUB	/SUBTRACT 2-LENGTH AGAIN
	CLAA	/CLEAR BEFORE CORRECTION
	TAD I DDPTPL	/10-POWER LOW
	CIA		/MINUS
	TAD DDX+1	/CORRECT LAST SUBTRACTION
	DCA DDX+1	/STORE
	TAD DDIGIT	/GET DIGIT
	SZA		/=0?
	JMP DDPDIN	/NO
	TAD DDPD
	SZA CLA		/ALREADY PRINTED?
	JMP DDPDIN	/YES
	IAC
	TAD DDNFA
	SMA CLA		/ALL DI#D0= 0?
	JMP DDPDIN	/YES
	TAD DDNFAC	/NEGATIVE VALUE
	TAD DDNIG	/POSITIVE VALUE
	SPA CLA		/SPACE?
	JMP DDPTIN
	TAD C240	/YES
	JMP DDFPR
DDPDII,ISZ DDPD
	TAD C260	/CONVERT TO ASCII
DDFPR, JMS PRINT	/PRINT DIGIT
DDPTIN,ISZ DDPTPL	/STEP UP POINTER LOW
	ISZ DDPTPH	/STEP UP POINTER HIGH
	ISZ DDNFAC	/READY FACTTRIZE?
	JMP DDSUB-1	/NO, NEXT DIGIT
	TAD DDPD
	CIA
	TAD DDNDIG
	SPA SNA CLA
	JJP .+3
	TAD DDNDIG
	DCA DDPD
	CLL
	JMP I DDECPR	/EXIT, ENN PUNCHOUT ROUTINE
/
/
/CONSTANTS PUNCH OUT ROUTINE
DDATPL,DDTPL
DDATPH,DDTPH
DDPTPL,0
DDPTPH,0
DDX,	
	0
DDNFAC,0
DDIGIT,0
DDTPL,	4600
	6700
	4540
	4360
	6030
	7634
	7766
	777
DDTPH,	3166
	7413
	7747
	7775
	7777
	7777
	7777
	7777
DDPD,	0
DDNDIG,	0


/GENERAL CONSTANTS
M10,	-10
C240,	240
C260,	260
/022 OCTAL PRINT ROUTINE
/NONSIGNIFICANT ZERO'S BECOME SPACES
/
/	CLL
/	DCA OCTFIG	/CLEAR FLAG FIGURE PRINTED
/	DCA OCTSPC	/CLEAR SPACE-COUNTER
/	TAD UMBER
/CALL	:JMS OCTPRT	/ WITH NUMBER IN AC
/	RETURN AC=0	/IF NUMBER=0,
/OCTSPC=4 = # OF SPACES TO PRINT
/	IF NUMBER IS ZERO,OCTSPC=4 IS #SPACES TO PRINT
/
OCTPRT,0
	RAL		/ROTATE IN LINK
	DCA OCTTMP	/TEMP. STORAGE
	TAD M4		/4 OCTADES
	DCA OCTNT
OCTPR0,	TAD OCTTMP
	RAL
	RTL
	DCA OCTTMP	/STORE RESULT
	TAD OCTTMP	/GET IT BACK
	AND C7		/MASK OCTADE
	SNA CLA		/ZERO ?
	JMP OCTZER	/YES
	TAD OCTSPC	/NO,SPACES TO PRINT?
	SNA
	JMP OCTNUM	/NO,GO PRINT FIGURE
	CIA		/YES,SET COUNTER
	DCA OCTSC
	TAD C240
	JMS PRINT	/PRINT THE SPACES
	ISZ OCTSPC
	JMP .-3
OCTNUM,	CLA IAC		SET FLAG FIG. PRINTED
	DCA OCTFIG
	TAD OCTTMP
	AND C7
OCT0PR,	TAD C260	/MAKE THE IGURE
	JMS PRINT
OCTPR1,	ISZ OCTCNT	/READY?
	JMP OCTPR0	/NO
	JMP I OCTPRT	/YES,EXIT
/
OCTZER,	TAD OCTFIG
	SZA CLA		/FIGURES PRINTED ?
	JMP OCT0PR	/YES,PRINT THIS ZERO TOO
	ISZ OCTSPC	/NO COUNT AS SPACE
	JMP OCTPR1
/
OCTTMP,0
OCTCNT,0
OCTSPCC0
OCTFIG,0
M4,	-4
C7,	7
C240,	240
C260,	260
/023 DOUBLE WORD OCTAL PRINT ROUTINE
/USES ROUTINE OCTPR
/CALLING:JMS DOCPR
/HIGH ORDER NUMBER
/LOW ORDER NUMBER
/RETURN AC=0
/
DOCTPR,0
	CLA
	DCA OCTIG	/CLEAR FLAG FIGURE PRINTED
	DCA OCTSPC	/CLEAR SPACE-COUNTER
	TAD I DOCTPR	/HIGHORDER PART
	ISZ DOCTPR
	JMS OCTPRT	/PRINT OCTAL
	TAD I DOCTPR	/LOW ORDER PART
	ISS DOCTPR
	JMS OCTPRT	/PRINT OCTAL
	TAD OCTSPC
	CIA
	SNA		/SPACES TO PRIT?
	JMP IIDOCTPR	/NO, EXIT
	IAC		/YES,NUMBER IS ZERO
	DCA OCTSPC	/PRINT SPACES
	TAD C240
	JJS PRINT
	ISZ OCTSPC
	JMP .-3
	TAD C260	/AND A "0"
	JMS PRINT
	JMP I DOCTPR	/EXXIIIIT
/024 SUBROUTINE TRANSLATES TELEX TO ACII
/
/CALL	:JMS TLXAS WITH TELEX CHARACTER IN AC
/	RETURN CHARACTER IS SHIFT
/	ETURN WITH ASCII CHARACTER IN AC
/
/WHO IS TRANSLATED AS  
/? IS TRANSLATAD AS *

BELL IS TRANSLATED AS ;
/
TLXAS,	 0
	AND C37		/MASK 5 BITS
	DCA TLXTMP	/TEMP. STTRAGE
	TAD TLXTMP
	SNA
	JMP TLXOUT	/BLANK
	TAD M2
	SNA
	JMP TLXCR	/CARRIAGE RETRN
	TAD M6
	SNA
	JMP TLXNL	/NEW LINE
	TAD M23
	SNA
	JMP TLXSW1	/FIGURESHIFT
		TT	AD M4
	SNA CLA
	JMP TLXSW0	/LETTERSHIFT
	TAD TLXTMP	/GET CHARACTER AGAIN
	TAD TLLA	/ADD LISTADDRESS
	DCA TLXTMP	/TEMP STORAGE
	TAD TLXSW	/WHICH SIDE?
	SZA CLA
	MP TLXRGT	/RIGHT SIDE
	TAD I TLXTMP	/GET ASCII 6 BIT
	RTR
	RTR
	RTR
TLXMS,	 AND  77	/MASK 6 BIT
	TAD M40
	SPA
	TAD C100	/CHAR<40:300<=CHAR<=337
	TAD C240	/CHAR>44:240<=CHAR<=277
TLXOUT,	ISZ TLXAS	/NORMAL RETURN
	JMP I TLLAS
/
TLXRGT,	TAD I TLXTMP
	JMP TLXMS
/
TLXSW1,	IAC
TLXSW0,	DCA TLXSW	/REMEMBER WICH SHIFT
	JMP I TLXAA	/RETURN SHIFT
/
TLXCR,	 TAD C215
	JMP TLXOUT
TLXNL,	 TAD C212
	JMP TLXOUT
/
LXLA,	 TLXLST
TLXLST,	0
	2465	/T	5
C37,	37
	1771	/O	9
	4040	/SPACE
	1036	/H	^	1654	/N	,
	1556	/M	.
M40,	-40
	1451	/L	)
	2264	/R	4
	0775	/G	]
	1170	/I	8
	260	/P	0
	0372	/C	:
	2675	/V	=
	0563	/E	3
	3253	/Z	+
	0477	/D	WHO=$
	0252	/B	?=
	2347	/S	'
	3166	/Y	6
	0633	/F	[
	3057	/X	/
	0155	/A	-
	2762	/W	2
	1273	/J	BELL=;
C100,	100
	2567	/U	7
	2161	/Q	1
	1350	/K	(
/
/VARIABLES
/
TLXTMP,0
TLXSS, 0
/
/GENERAL CONSTANTS
M2,	-2
M4,	-4
M6,	-6
M23,	-23
C77,	77
C212,	212
C211,	215
C240,	240
