File: HEXA2.BR of Tape: Sources/Focal/s7
(Source file text) 

/	* H E X A 2 . B R *

/	VERSION 51 VOM 2. 8. 76

/	LPT OUTPUT FOR INSPECTION

LIPTOU,	IOF
	PHOM
OUL2,	TAD	(215
	JMS	LPPRIN
	TAD	DOSAP
	DCA	DOSAL
	TAD	DOSAL
	DCA	DOSAF
	TAD	(214
	SKP
OUL3,	TAD	(215		/FIRST TIME NEW PAGE, SECOND LF
	JMS	LPPRIN
	TAD	(-14
	DCA	INSPCN
INSP1,	JMS	BLANC
	1
	JMS	PRINT
DOSAL,	0
	P1
	TAD	DOSAL
	DCA	DOSAL
	TAD	DOSAL
	CIA
	TAD	(DOSAMA
	SMA	CLA
	JMP	INSP2
	TAD	(DOSAMI
	DCA	DOSAL
INSP2,	TAD	DOSAF
	CIA
	TAD	DOSAL
	SNA	CLA
	JMP	EOOUT		/END OF OUPUT
	ISZ	INSPCN
	JMP	INSP1
	JMP	OUL3

INSPCN,	0
DOSAF,	0

EOOUT,	TAD	(215
	JMS	LPPRIN
	JMP	DRIINF		/PRINT DRIVER INFO
EOUT2,	TAD	(215
	JMS	LPPRIN
	TAD	(214
	JMS	LPPRIN
	JMP	ININF
LPPRIN,	0
	6666
	CLA	CLL
	6661
	JMP	.-1
	JMP I	LPPRIN

DRIINF,	TAD	(214
	JMS	LPPRIN
	CDF	20
	TAD I	(LIPP0
	CDF	0
	DCA	DOSAL		/SAVE POINTER
	TAD	DOSAL
	DCA	DOSAF
OUL22,	TAD	(215
	JMS	LPPRINT
	TAD	(-14
	DCA	INSPCN
INSP12,	JMS	BLANC
	1
	CDF	30
	TAD I	DOSAL
	CDF	0
	DCA	LIPTOU		/ROOM IS RARE
	JMS	PRINT
	LIPTOU
	ISZ	DOSAL
	TAD	DOSAL
	CIA
	TAD	(LIPPMA
	SMA	CLA
	JMP	INSP22
	TAD	(LIPPMI
	DCA	DOSAL
INSP22,	TAD	DOSAF
	CIA
	TAD	DOSAL
	SNA	CLA
	JMP	EOUT2
	ISZ	INSPCN
	JMP	INSP12
	JMP	OUL22
BLANC,	0
	TAD I	BLANC
	ISZ	BLANC
	CIA
	DCA	BLANC1
	TAD	(240
	JMS	LPPRIN
	ISZ	BLANC1
	JMP	.-3
	JMP I	BLANC
BLANC1,	0
WOHER,	0
	TAD	NEGQSL
	JMS	DOSA2
	JMP I	WOHER
WOHER2,	0
	TAD	(7000
	TAD	EXPNO
	JMS	DOSA2
	JMP I	WOHER2
	PAGE
PRINT,	0
	TAD I	PRINT
	DCA	PRINT1
PRIN4,	CDF	0
	TAD I	PRINT1		/ARGUMENT FETCH
	CDF	0
	RAL
	DCA	PRINT1
	RAR
	DCA	LINKP
	JMS	BLANC
	1
	TAD	(-4
	DCA	PRINT2
PRINT3,	CLL	CLA
	TAD	LINKP
	RAL
	CLA
	TAD	PRINT1
	RAL; RTL
	DCA	PRINT1
	RAR
	DCA	LINKP
	TAD	PRINT1
	AND	(7
	TAD	(260
	JMS	LPPRIN
	ISZ	PRINT2
	JMP	PRINT3
	JMS	BLANC
	1
	ISZ	PRINT
	JMP I	PRINT
PRINT1,	0
PRINT2,	0
LINKP,	0
SEBLO,	0
	TAD	(ETBFOB-1
	DCA	X0
	TAD	(1000
	DCA	DOSA3
	TAD	(-6
	DCA	DOSA5
	JMS	DOSA
	JMP I	SEBLO

REBLO,	0
	TAD	(ETBFIB-1
	DCA	X0
	DCA	DOSA3
	TAD	(-5
	DCA	DOSA5
	JMS	DOSA
	JMP I	REBLO
DOSA5,	0

DOSA,	0
	TAD	DOSA5
	DCA	X1
DOSA1,	CDF	10
	TAD I	X0
	TAD	DOSA3
	CDF	0
	JMS	DOSA2
	ISZ	X1
	JMP	DOSA1
	JMP I	DOSA

DOSA2,	0
	DCA I	DOSAP
	P1
	TAD	DOSAP
	DCA	DOSAP
	TAD	(DOSAMA
	CIA
	TAD	DOSAP
	SPA SNA CLA
	JMP I	DOSA2
	TAD	(DOSAMI
	DCA	DOSAP
	JMP I	DOSA2
DOSA3,	0
DOSAP,	DOSAMI

ININF,	TAD	(ETBFIA
	DCA	POINT1
	TAD	(CDF 20
	DCA	PRIN4
INI1,	JMS	PRINT
POINT1,	HLT
	ISZ	POINT1
	SKP
	JMP	INI2
	ISZ	INI3
	JMP	INI1
	TAD	(-20
	DCA	INI3
	TAD	(215
	JMS	LPPRIN
	JMP	INI1
INI3,	-20
INI2,	TAD	(215
	JMS	LPPRIN
	TAD	(214
	JMS	LPPRIN
	JMP	SHUTD
	PAGE
DOSAMI,	ZBLOCK 50^6-1
DOSAMA,	0
	FIELD 1
	*0
	ZBLOCK 7600-.
/	CODE FOR LIPI TEST
/
/	CODE:	0=OK
/		1=PARITY ERROR
/		2=LIN OFF ERRO
/		3=CHECKSUM ERROR
/		4=HEADER ERROR
/		5=WAIT FOR BETTER LINE
/		6=SYNC MISSED



	FIELD 2
	*10
/
/	AUTOINDEX
/
Y0,	0
Y1,	0
Y2,	0
Y3,	0
Y4,	0
Y5,	0
Y6,	0
Y7,	3777
/
/	SWAP AEREA FROM PAGE00
/
	*20
	ZBLOCK 30
/
/	FIELD 2 BUFFERS
/
BFOA,	ETBFOA
WCBFOA,	ETHLE
BFIA,	ETBFIA
WCBFIA,	ETHLE
LO1F2G,	0
INP,	0
OUTP,	0
/
/
/	HANDLER FLAGS
/
/
/	LIPI FLAGS
/
RFLG,	1
/
/	LIP STATUS INFO
/
LSEND,	0
STATE,	0
CHARO,	0			/RECEIVED CHAR
RBIT,	0			/BIT INFO FROM MODEM
REJECT,	0
SUM,	0			/CHECKSUMM FOR RECEIVED CHARS
SFLG,	0
HEATAX,	0
ETHCN,	0
CACN,	0			/CHARACTER COUNTER FOR DECODE
FLDX,	CDF	0

/	HEADTER TABLE
HEATA,	1
	160
STATIO,	141
SYYNC,	0
SYNCN,	0
	PAGE
/		* I N T H A N . B R *
/
/
/	INTERUPT SKIPLINE AND INTERUPT DRIVEN HANDLERS
/
/
INTHA,	CON
	SKP
LINON,	JMP	WAITR		/AT BEGINING
	SKMR		/SKIP ON MODEM RECEIVE FLAG
	SKP
LIPIF,	JMP	RECCL		/CLEAR FLAG IF NOT REQUIRED
	SKMS			/SKIP ON MODEM SEND FLAG
	SKP
LIPOF,	JMP	DISMIS
	PSKF			/SKIP ON LPTFLAG
	SKP
	JMP	LPTHA
	SKSER			/SKIP ON SEND READ AND CLEAR
	SKP
SENDR,	JMP	DISMIS
	6136
	SKP
	JMP	CLOSKP
	TSF			/TTY SEND FLAG
	SKP
	JMP	TTYSF
	KSF
	SKP
	JMP	TTYRF		/TTY RECEIVE
	COFF
	SKP
LINREA,	JMP	DISMIS 	/STATT LIOFF
CLOSKP,	6135
	6137
	JMS	CODE
	6
	ISZ	SYYNC
	JMP	FINS3
				/ FOR RECEIVE READY
NOFLG,	CIF	CDF 0
	JMP I	(INTER1		/INRECOGNISED INTERUPT
WAITR2,	JMP	DISMIS
SENDR2,	JMP	WAITS
LIPOJ,	JMP	LIPO
LIPIJ,	JMP	LIPI
LOFF,	JMP	SENOK
NOREC,	JMP	RECCL

RECCL,	RMOD
	JMP	DISMIS
/
/
/	SIMPLE INTERUPTDRIVEN LPTHANDLER
/
/
LPTHA,	PCLF
	JMS	LPTCA
	JMP	LPTHA1
	CDF	0
	DCA I	(LPTPFL
	JMP	DISMIS
	TAD	[-2		/8 CHARS AT A TIME
	DCA	LPCNT		/SET UP CHAR COUNTER
LPT1,	JMS	LPTCA		/TEST FOR MORE CHARS
	JMP	LPTHA1		/WE HAVE A CHAR
	JMP	DISMIS
LPTHA1,	DCA	LPTCA		/SAVE CHAR
	CDF	10
	DCA I	LPBUF		/FILL FETCHED LOC WITH 0
	CDF	0
	TAD I	(LPGET		/INCREMENT GETPOINTER
	IAC
	AND	(-LI1BUL
	DCA I	(LPGET
	CDF	20
	TAD	LPTCA		/GET CHAR
LPOUT,	6666			/PRINT CHAR
	CLA CLL
	PSKF
	JMP	DISMIS		/NOT A FAST CHAR
	ISZ	LPCNT
	JMP	LPT1
	JMP	DISMIS
LPBUF,	0
LPCNT,	0
LPTCA,	0
	TAD	(LI1BU		/SET UP POINTER
	CDF	0
	TAD I	(LPGET
	DCA	LPBUF
	CDF	10
	TAD I	LPBUF
	SNA
	JMP	LPTCA2		/NO CHAR
LPTCAR,	CDF	20
	JMP I	LPTCA
LPTCA2,	ISZ	LPTCA		/INCREMNENT RETURN
	JMP	LPTCAR
/
/
/	LINE INPUT DRIVER
/
/
SEND1,	JMS	CLBUFI		/CASE OF CHECKSUMERROR
SEND,	TAD	LOFF		/WAIT FOR LINE READY
	DCA	LINREA
	JMP	DISMIS
SENOK,	TAD	WAITR2		/DISABLE LINE READY
	DCA	LINREA
	SKSER
	NOP
	SMS 
	TAD	SENDR2		/ENABLE SEND
	DCA	SENDR
	JMP	DISMIS
	PAGE
WAITS,	M2 
	DCA	SYNCN
	TAD	WAITR2		/DISABLE READY FOR SEND FLAG
	DCA	SENDR
	TAD	LIPOJ		/ENALBLE LIPO JUMP
	DCA	LIPOF
	DCA	SUM
	TAD	(SYNC		/SEND FIRST SYNC
	JMS	SENDCA
	SKMS		/SEND IMEDIATELY NEXT SYNC
	JMP	.-1
	TAD	(SYNC
	JMS	SENDCA
	P1
	DCA	SFLG		/SET HEADER FLAG
	JMS	LIPIT1		/INIT LIPI TEST FR SEND
	JMP	DISMIS
/
/
/
SENDCA,	0
	AND	[RUBOUT
	DCA	CHARO
	TAD	(SKMS
	DCA	DISTE
	TAD	CHARO
	SMOD
	TAD	(-SYNC
	TAD	CHARO
	SNA	CLA
	JMP I	SENDCA
	JMS	LIPIT2		/LIPI CHAR SAVE FOR TEST
	JMS	CHSUM		/IGNORE SYNC FOR CHECKSUM
	JMP I	SENDCA
/
/
/
CHSUM,	0
	TAD	SUM		/SUM=SUM .EXOR. CHARO
	CMA
	AND	CHARO
	MQL
	TAD	CHARO
	CMA
	AND	SUM
	MQA
	AND	[RUBOUT
	DCA	SUM
	JMP I	CHSUM
/
/
/	* L I P O *     *****
/
/	************************** START OF SEND PROGRAM
/	**************************
/
	IFDEF METH <
LIPO,	TAD	SFLG >		/COMING FROM SEND CHAR INTERUPT
	IFNDEF METH < LIPO,	HLT >
	TAD	(JMP	.+2
	DCA	.+1
	HLT			/CONTAINS JMP TO CORRECT ROUTINE
	JMP	SYNCS		/SFLG=1
	JMP	HEADS		/2
	JMP	MSGS		/3
	JMP	INFOS		/4
	JMP	EOMS		/5
	JMP	SUMS		/6
	JMP	FINS		/7
	JMP	FINS2		/8
	HLT			/9 HOPE NEVER WILL BE HERE
/
/
/
SYNCS,	TAD	(SYNC
	JMS	SENDCA
	ISZ	SYNCN
	JMP	DISMIS
	P2			/NEXT IS HEADER
	DCA	SFLG
	TAD	(HEATA
	DCA	HEATAX
	M3
	DCA	HEADCN
	JMP	DISMIS
/
/
/
HEADS,	TAD I	HEATAX
	JMS	SENDCA
	ISZ	HEATAX
	ISZ	HEADCN
	JMP	DISMIS
	P3
	DCA	SFLG		/NEXT IS MSG
	JMP	DISMIS
HEADCN,	0
WASYN,	SKMR			/FOR OD TEST
	JMP	.-1
	HLT
	JMP	.-2



TEST1X,	CLL	CLA
	DCA	SUM
	TAD	(ETBFIA-1
	DCA	Y0
SUMTES,	TAD I	Y0
	SNA
	JMP	SUMT1
	DCA	CHARO
	JMS	CHSUM
	JMP	SUMTES
SUMT1,	TAD	(162
	DCA	CHARO
	JMS	CHSUM
	TAD	SUM
	DCA I	(7777
	CIF	CDF	0
	JMP	LIPTOU
	PAGE
MSGS,	JMS	EQUAL
	STATE			/FIRST IS ADRESS
	2			/VALUE
	JMP	NOEQ2		/IS NOT EQUAL 2
	M1
	TAD	WCBFOA		/IT IS, DO WE HAVE INFO TO SEND
	SMA	CLA
	JMP	.+5		/NO
	JMS	CLBUFO		/YES CLEAR POINTERS (MAY BE A REPEAT
	P1
	DCA	LSEND		/LSEND=1=SENT
	JMP	ANSWER
	P1
	DCA	STATE		/STATE = 1 IF NO INFO
NOEQ2,	ISZ	SFLG		/STATE IS NOT 2 , NEXT IS EOM
	DCA	LSEND		/LSEND=0=IDLE
ANSWER,	TAD	(MSGSTA
	TAD	STATE
	DCA	MSGSTX		/ANSWER(STATE)
	TAD I	MSGSTX
	JMS	SENDCA
	ISZ	SFLG		/NEXT IS INFO OR EOM
	JMP	DISMIS
MSGSTX,	0
MSGSTA,
REJ,	30
ACK,	6		/ACK
READ,	23
/
/
CLBUFO,	0
	TAD	(ETBFOA
	DCA	BFOA
	TAD	(ETHLE
	DCA	WCBFOA
	JMP I	CLBUFO
/
/
/
EQUAL,	0
	TAD I	EQUAL
	DCA	EQUAL1		/FIRST ARG IS ADRESS
	ISZ	EQUAL
	TAD I	EQUAL		/SECOND IS VALUE
	ISZ	EQUAL
	CIA
	TAD I	EQUAL1
	SNA	CLA
	ISZ	EQUAL		/INCREMENT RETURN IF EQUAL
	JMP I	EQUAL
EQUAL1,	0
/
/
/
INFOS,	JMS	GETCA
	JMP	EOMS		/NO MOORE CHARS
	JMS	SENDCA
	JMP	DISMIS
/
/
/


	IFDEF CLOCK <
CLOC,	6137
	6135			/CHLT
	DCA	SUM		/FORCE CHECKSUMERROR
	JMP	REJTRU >
EOMS,	P6
	DCA	SFLG		/NEXT IS SUM
	P3			/3 IS EOM
	JMS	SENDCA
	JMP	DISMIS
GETCA,	0
	TAD	WCBFOA
	SMA	CLA
	JMP I	GETCA		/NO CHARS
	TAD I	BFOA
	SNA
	JMP	EOBU
	ISZ	BFOA
	ISZ	WCBFOA
	ISZ	GETCA
	JMP I	GETCA
EOBU,	DCA	WCBFOA
	JMP I	GETCA
/
/
SUMS,	TAD	SUM
	CIA
	TAD	[RUBOUT
	JMS	SENDCA
	P6;	IAC
	DCA	SFLG		/NEXT IS FINS
	JMP	DISMIS
/
/
/
FINS,	SMOD			/0 FOR SEND
	ISZ	SFLG		/SFLG=8, SUM IS IN SHUFT REGISTER!!!
	JMP	DISMIS
FINS2,	TAD	WAITR2		/DISABLE LIPO
	DCA	LIPOF
	TAD	(-7
	DCA	SYYNC
	JMS	LIPIT4
	JMS	LIPIT5
FINS3,	SMR
	6137			/CLOCK CLEAR FLAG
	6134			/CLOCK GO
	JMP	WAITR
	PAGE
/
/
/	START OF RECEIVER PROGRAMM
/	**************************
/
/
WAITR,	CLL	CLA
	IFNDEF METH < HLT >
	TAD	WAITR2		/RESTORE SKIPFLINE
	DCA	LINON
	DCA	SUM
	P1
	DCA	RFLG		/HEADERFLG
	TAD	[HEATA
	DCA	HEATAX
	M3
	DCA	HEADCN
	DCA	REJECT		/REJECT=FALSE
	RMOD			/CLEAR FLAG
	CLL	CLA
	WSYN			/WAIT ON 2X SYNC
	TAD	LIPIJ		/ENABLE LIPIJMP
	DCA	LIPIF
	JMS	LIPIT3		/INIT RECEIVE SAVE FOR TEST
	JMP	DISMIS
/
/
/
/
/

LIPI,	JMS	LCHAR		/GET CHAR AND BIT
	IFNDEF METH <HLT>
	TAD	RFLG
	TAD	[JMP	.+2
	DCA	.+1
	HLT
	JMP	HEADR		/RFGL=1
	JMP	MSGR		/2
	JMP	INFOR		/3
	JMP	EOMWA		/4 WAIT FOR EOM
	JMP	SUMR		/5
/
/
/
	HLT
	HLT
LCHAR,	0
	6135			/STOP CLOCK
	RMOD
	SNA
	JMP	DISMIS
	DCA	CHARO
	TAD	(SKMR
	DCA	DISTE
	TAD	CHARO
	AND	[7600
	DCA	RBIT		/SAVE INFO BITS
	TAD	CHARO
	AND	[RUBOUT
	DCA	CHARO
	TAD	[-5
	TAD	RFLG
	SNA	CLA
	JMP	.+5		/SUM MAY BE EAUL SYNC
	TAD	[-SYNC
	TAD	CHARO
	SNA	CLA
	JMP	DISMIS		/ELIMINATE SYNCS
	JMS	LIPIT2		/STORE CHARS FOR TEST
	JMS	LINER
	JMS	CHSUM
	JMP I	LCHAR
/
/
/
LINER,	0
	TAD	RBIT
	AND	[1000		/TEST CARIER OFF BIT
	SZA	CLA
LINER2,	JMP	LINER1
	TAD	RBIT		/TEST PARITY
	AND	[4000
	SNA	CLA
	JMP	.+4
	DCA	SUM		/SIMULATE CHAECKSUM ERROR
	JMS	CODE
	1
	TAD	RFLG
	TAD	[-5
	SNA	CLA
	JMP I	LINER		/SUM IS EQUAL EOM
	M3
	TAD	CHARO		/TEST EOM
	SZA	CLA
	JMP I	LINER		/NOT EOM
	JMS	CHSUM
	JMP	EOMR		/EOMDETECTED
LINER3,	JMP	LINER1
LINER1,	TAD	NOREC		/DISABLE LIPI
	DCA	LIPIF
	JMS	CODE
	2
	JMP	WAITR		/ENABLE RECEIVE
HEADR,	TAD I	HEATAX
	DCA	.+3
	JMS	EQUAL
	CHARO
	HLT
	JMP	HEADR1		/NOT OK
	ISZ	HEATAX
	ISZ	HEADCN
	JMP	DISMIS
	ISZ	RFLG		/SET MSG FLG
	JMP	DISMIS
HEADR1,	P4
	DCA	RFLG		/WRONG HEADER DETECTED, WAIT EOM
	JMS	CODE
	4
	JMP	DISMIS
EOMWA,	M1
	DCA	SUM		/FORCE CHECKSUMM ERROR
	JMP	DISMIS
	PAGE
MSGR,	ISZ	RFLG		/SET RFLG=3
	JMS	WHATMS
	JMP	ISREJ
	JMP	ISWRIT
	JMP	ISOPMS
	JMP	ISACK
	JMP	ISSTOP
ISREJ,	P4			/RETURNS HERE IF NOT POSSIBLE MSG
	DCA	RFLG		/WAIT EOM
	JMP	DISMIS
/
/
ISWRIT,	JMS	STATUS
	JMS	BUFI
	JMP	DISMIS
/
/
ISOPMS,	JMS	STATUS
	JMS	BUFI
	TAD	(36
	DCA I	BFIA
	ISZ	BFIA
	NOP			/BFIA MAY HAVE OVERFLOW
	ISZ	WCBFIA
	ISZ	ETHCN
	JMP	DISMIS
/
/
ISACK,	JMS	STATUS
	JMP	DISMIS
/
/
ISSTOP,	P1
	DCA	STOP
	JMS	STATUS
	JMP	DISMIS		/WAITEOM
/
/
/
STATUS,	0
	TAD	LSEND
	SNA	CLA
	JMP	.+3
	M1
	DCA	LSEND		/LSEND=-1
	P1
	DCA	STATE		/STATE=1
	JMP I	STATUS
/
/
/
/
BUFI,	0
	M1
	TAD	WCBFIA
	SMA	CLA
	JMP	NOBUF
	JMS	CLBUFI
	JMP I	BUFI
NOBUF,	P1
	DCA	REJECT		/REJECT CONDITION
	JMP	DISMIS
/
/
/
CLBUFI,	0
	TAD	(ETBFIA
	DCA	BFIA
	TAD	(ETHLE
	DCA	WCBFIA
	TAD	(ETHLE+1
	DCA	ETHCN
	JMP I	CLBUFI
/
/
/
WHATMS,	0
	TAD	(MSRTA
	DCA	MSRTAX
	TAD	(-5
	DCA	MSRCN
	TAD	CHARO
	DCA	RMSG
WHAT1,	TAD I	MSRTAX
	DCA	.+3
	JMS	EQUAL
	RMSG
	HLT
	SKP
	JMP I	WHATMS
	ISZ	WHATMS
	ISZ	MSRTAX
	ISZ	MSRCN
	JMP	WHAT1
	JMP I	WHATMS
MSRTA,	30		/REJ
WRITE,	21
OPMSG,	22
	6
STOP,	24
MSRTAX,	0
MSRCN,	0
RMSG,	0
/
/
/
/
INFOR,	TAD	REJECT
	SZA	CLA
	JMP	DISMIS
	TAD	CHARO
	DCA I	BFIA
	ISZ	BFIA
	NOP
	ISZ	WCBFIA
	NOP
	ISZ	ETHCN
	JMP	DISMIS
	JMS	CLBUFI		/CLEAR BUFFER BUT SET REJECT
	P1
	DCA	REJECT		/BUFFER OVERFLOW
	JMP	DISMIS
/
/
/
EOMR,	TAD	(5
	DCA	RFLG		/EOM DETECTED
	TAD	(NOP		/DISABLE LINOFF CHECING FOR LAST CHAR
	DCA	LINER2
	JMP	DISMIS		/WAIT FOR SUM
/
/
/
WAITFL,	M1		/WAIT FOR BETTER LINE
	DCA	CHERCN
	JMS	CODE
	5
	JMP	WAITR
	PAGE
SUMR,	TAD	(NOP
	DCA	DISTE		/DO NOT CARE FOR MORE FLAGS
	JMS	LIPIT4
	TAD	CHARO
	DCA	.+2
	JMS	CODE
	HLT
	TAD	LINER3
	DCA	LINER2		/RESTORE LINOFF CHECKING
	TAD	NOREC		/DISABLE LIPI
	DCA	LIPIF
	IFDEF CLOCK <6135 >	/STOP CLOCK
	TAD	SUM
	CIA
	TAD	[RUBOUT
	SZA	CLA
	JMP	CHER		/CHECKSUM ERROR
NOCHER,	TAD	(-4
	DCA	CHERCN
	JMS	CODE
	0
	JMS	EQUAL
	LSEND
	-1
	JMP	OUNOK		/NO
	DCA	LSEND		/YES, LSEND=0
	P1
	DCA	WCBFOA		/OUTPUT ACEPTED
OUNOK,	TAD	RMSG
	DCA	CHARO
	IFDEF DRIVS <
	TAD	("R
	JMS	EOLINE >
	JMS	WHATMS
	JMP	EQREJ
	JMP	MINFO
	JMP	MINFO
	JMP	EQACK
	JMP	EQSTOP
	JMP	EQREJ		/IS INPOSSIBLE
/
/
CHER,	ISZ	CHERCN
	SKP
	JMP	WAITFL		/BETTER TIMES
	JMS	CODE
	3
	M1
	TAD	WCBFIA		/IS BUFFER FULL
	SNA	CLA
	JMP	SEND		/YES, DO NOT CLEAR
	JMP	SEND1
EQREJ,	JMS	EQUAL
	STATE
	2
	JMP	SUMR2		/NO
	P4			/YES
	DCA	STATE
	JMP	SUMR2
CHERCN,	0
/
/
EQSTOP,	TAD	STATE
	SNA	CLA
	JMP	SUMR2
	P4
	DCA	STATE
	JMP	SUMR2
/
/
EQACK,	TAD	(5
	DCA	STATE
	JMP	SUMR2
/
/
MINFO,	TAD	STATE
	SNA	CLA
	JMP	SUMR2
	TAD	REJECT
	SZA	CLA
	JMP	REJTRU		/REJECT IS TRUE
	TAD	(5		/INFO IS WALIS
	DCA	STATE
	JMS	AFIL0		/FILL REST OF BUFA WITH 0
	P1
	DCA	WCBFIA		/BUFFER FULL
	IFDEF DRIVS <
	TAD	("+
	JMS	PUONLP >
	JMP	SUMR2
REJTRU,	P3
	DCA	STATE
SUMR2,	M3
	TAD	STATE
	SPA
	JMP	WAITR
	DCA	STATE		/STATE=STATE-3
	TAD	STATIO		/SWICH STATION
	CIA
	TAD	(322
	AND	[RUBOUT
	DCA	STATIO
	JMP	SEND
/
/
AFIL0,	0
AFIL1,	TAD	WCBFIA
	SMA	CLA
	JMP I	AFIL0
	DCA I	BFIA
	ISZ	BFIA
	NOP
	ISZ	WCBFIA
	NOP
	JMP	AFIL1
/
/
/
DISMIS,	CLL	CLA
DISTE,	NOP
	SKP
	HLT
	TAD	(NOP
	DCA	DISTE
	CIF	CDF 0
	JMP I	(DISMS


	PAGE
/	* T T Y H A N D L E R *
/
/
/	RUNING ON INTERUPT
/
TTYIN1,	0		/ENTER WITH AC=0 IS FOR COMMAND DECODER
	SZA	CLA	/ENTER WITH AC=1 IS FOR LO1 BUFFER
	P3
	IAC		/1 OR 4 IN AC
	TAD	RF
	TAD	[JMP	TIN2
	DCA	TIN2
	IFNDEF MTTY <
	JMP	TINRE1 >
	TAD	WF
	SZA	CLA
	JMP	TINRET
TIN2,	HLT
	JMP	TIN3	/CD CALL IS ALLOWED
	JMP	TINRET	/CD IS ALLREADY CALLED
	JMP	TINRET	/LO1 IS CALLED, CD MUST WAIT
	JMP	TIN4	/LO1 CALL ALLOWED
	JMP	TIN4	/LO1 CALL DIABLES CD WHICH IS CALLED
	JMP	TINRET	/LO1 ALREDY CALLED
/
/
TIN3,	P1
	DCA	RF
	TAD	[CDBU
	DCA	INP
	TAD	[CDBUL
	DCA	INWC
	IFNDEF ODTEST <KIE>
	JMS	SETCR
	TAD	[215		/SET UP FINITO CHAR
	DCA	FINCA
	JMS	CDINIT		/PRINT *
	JMP	TINRET
/
/
TIN4R,	0
	P2
	DCA	RF
	TAD	[LO1BU
	DCA	INP
	TAD	[LO1BUL
	DCA	INWC
	IFNDEF ODTEST <KIE>
	JMS	SETCR
	TAD	[232
	DCA	FINCA
	JMS	LOINIT		/PRINT #
	JMP I	TIN4R
TIN4,	JMS	TIN4R
TINRET,	P1
	KIE
	CLA
	IFDEF ODTEST <
	TAD	RF
	SZA	CLA
	JMP	.-2
	IOF >
TINRE1,	CIF	CDF	0
	JMP I	TTYIN1
/
/
/
/
TTYRF,	KRB		/COMING FROM INTERUP
	DCA	INCA
	IFDEF DRIVS <
	TAD	INCA
	CIF	CDF	0
	JMS I	[LPON6 >
	JMS	INTES
	203		/^C TEST
	JMP	SHUTD2
	JMS	INTES		/^X TEST
	230
	JMP	ISX
	JMS	INTES
	217		/^O TEST
	JMP	ISCO
	TAD	RF
	SNA	CLA
	JMP	DISMIS	/NO INPUT ACTIV IGNORE
	JMS	INTES
	377		/RUBOUT TEST
	JMP	ISRUB
	JMS	INTES
	225		/^U TEST
	JMP	ISCU
	M1
	TAD	RF		/TEST IF WE ARE IN LO1 MODE
	SNA	CLA
	JMP	FINCA1		/NOT LO1
	JMS	INTES
	223			/^S TEST
	JMP	ISCS		/IT IS
FINCA1,	JMS	INTES
FINCA,	0		/CONTAINS 215 OR 232
	JMP	FININ
	JMS	INTES
	215		/CR TEST
	JMP	ISCR
	JMS	INTES
	211		/TAB TEST
	JMP	ISTAB
	JMS	INTES
	212		/LFS ARE IGNORED ON INPUT
	JMP	DISMIS
	JMP	FULTE
/
/
/
/
/
ISRUB,	M1
	TAD	INP
	DCA	INP
	M1
	TAD	INWC
	DCA	INWC
	TAD	["/
	JMS	ECHO
	TAD	CRCN	/LOOK IF INP >=CRCN
	CIA
	TAD	INP
	SPA	CLA
	JMP	ISRUB2
	JMP	KICK


ISX,	IOF
	JMP	TEST1X
	PAGE
ISCS,	JMS	TIN4R
	JMP	DISMIS
ISCO,	TAD	["^
	JMS	ECHO
	TAD	["O
	JMS	ECHO
	JMS	CRLFIN
	DCA	OUTWC	/SET LI0 BUFFER EMPTY
	JMP	KICK
SHUTD2,	CIF	CDF	0
	JMP I	[SHUTD
/
ISRUB2,	TAD	CRCN
	DCA	INP
	TAD	CRWC
	DCA	INWC
	JMP	KICK
/
/
INTES,	0
	TAD I	INTES
	ISZ	INTES
	CIA
	TAD	INCA
	SZA	CLA
	ISZ	INTES
	JMP I	INTES
/
/
ISCU,	TAD	["^
	JMS	ECHO
	TAD	["U
	JMS	ECHO
	JMS	CRLFIN
	TAD	[-7
	DCA	TABCN
	JMP	ISRUB2
/
/
FININ,	TAD	INCA
	JMS	PUTTE
	JMS	CRLFIN
	JMS	INTES
	215
	JMP	INFULL
	TAD	["^
	JMS	ECHO
	TAD	["Z
	JMS	ECHO
	CDF	0
	P1
	DCA I	(TTYZF
	CDF	20
	JMP	INFULL		/^Z ONLY FOR LO1
/
/
ISCR,	TAD	[-7
	DCA	TABCN
	P1
	TAD	INP
	DCA	CRCN
	P1
	TAD	INWC
	DCA	CRWC
	JMS	CRLFIN
	TAD	INCA
	JMS	PUTTE
	JMP	FULTE1
/
/
ISTAB,	TAD	INCA
	DCA I	INP
	TAD	[240
	DCA	INCA
	JMS	PUTTE
	ISZ	TABCN
	JMP	.-2
	TAD	[-7
	DCA	TABCN
	JMP	FULTE1
/
/
FULTE,	TAD	INCA
	JMS	PUTTE
	JMS	ECHO
	ISZ	TABCN
	JMP	.+3
	TAD	[-7
	DCA	TABCN
FULTE1,	JMS	KICKON
	ISZ	INP
	ISZ	INWC
	JMP	DISMIS		/NOT YET FULL
INFULL,	JMS	KICKON
	JMS	SETFEL		/POINTER MAY BE IN F20
	M1
	TAD	RF
	SZA	CLA
	JMP	INFUL1		/POINTERS ARE SET BY GETLO1!!!
	TAD	[CDBU
	DCA I	[CD
	TAD	[CDBUL
	DCA I	[WCCD
INFUL1,	CDF	20
	DCA	RF
	JMP	DISMIS
/
/
KICK,	JMS	KICKON		/KICK ON OUTPUT IF NECESSARY
	JMP	DISMIS
/
/
KICKON,	0
	TAD	TTYAC
	SZA	CLA
	JMP I	KICKON		/TTY IS ACTIV
	TCF			/CLEAR TTY FLAG
	JMS	ECHOG
	JMP I	KICKON		/NO MOORE CHARS
	TLS
	CLL	CLA
	P1
	DCA	TTYAC
	JMP I	KICKON
/
/
RF,	0			/READ FLG IS 0 1 FOR CD AND 2 FOR LO1
TABCN,	0
INWC,	0
INCA,	0
CRCN,	0
CRWC,	0
TTYAC,	0
	PAGE
/
/
/
/
/
TTYOU1,	0
	JMS	FLD2
	DCA	OURET1
	IFNDEF MTTY <
	CIF	0
	JMS	CLLI0
	JMP	OURET1 >
	IFNDEF ODTEST <KIE>
	TAD	WF
	SZA	CLA
	JMP	OURET
	P1
	DCA	WF		/SET WRITE FLAG
	TAD	(LI0BU
	DCA	OUTP
	TAD	(LI0BUL
	DCA	OUTWC
	JMS	FILEC
OURET,	P1
	KIE
	CLA
	IFDEF ODTEST <
	TAD	WF
	SZA	CLA
	JMP	.-2
	IOF	>
OURET1,	HLT
	JMP I	TTYOU1
/
/
TTYSF,	TCF			/SEND INTERUPT COMES TO HERE
	JMS	ECHOG
	JMP	TTYSF1		/NO MORORE CHARS IN ECHO BUF
	TLS
	CLL	CLA
	JMP	DISMIS
/
TTYSF1,	DCA	TTYAC		/CLEAR ACTIV FLAG
	TAD	WF
	SNA	CLA
	JMP	DISMIS		/NO OUTPUT
	JMS	FILEC
	JMP	DISMIS
/
/
WF,	0			/WRITE FLAG
OUTWC,	0
/
/
/
/
ECHO,	0
	SNA			/ENTER WITH OR WTHOUT CHA
	TAD	INCA
	DCA I	ECHOPU
	ISZ	ECHOPU
	TAD	ECHOPU
	CIA
	TAD	(EBUMA
	SMA	CLA
	JMP I	ECHO
	TAD	(EBUMI
	DCA	ECHOPU
	JMP I	ECHO
/
/
ECHOG,	0
	TAD I	ECHOGE
	SNA
	JMP I	ECHOG		/NO CHAR IN BUF
	DCA	ECHOG1		/SAVE CHAR
	ISZ	ECHOG		/INCR RETURN
	DCA I	ECHOGE		/CLEAR CHAR
	ISZ	ECHOGE
	TAD	ECHOGE
	CIA
	TAD	(EBUMA
	SMA	CLA
	JMP	.+3
	TAD	(EBUMI
	DCA	ECHOGE
	TAD	ECHOG1
	JMP I	ECHOG
ECHOG1,	0
/
/
OUTCA,	0
ECHOPU,	EBUMI
ECHOGE,	EBUMI
/
/
FILEC,	0
	TAD	(-5
	DCA	FILEC3		/ONLY 5 CHARS AT A TIME
FILEC1,	TAD	OUTWC
	SMA	CLA
	JMP	CLWF
	CDF	10
	TAD I	OUTP
	CDF	20
	DCA	OUTCA
	ISZ	OUTP
	ISZ	OUTWC
	NOP
	TAD	OUTCA
	SNA
	JMP	CLWF		/IGNORE NULLS
	JMS	ECHO
	TAD	OUTCA
	TAD	(-215
	SZA	CLA
	JMP	.+3
	TAD	(212
	JMS	ECHO		/CR IS FOLOWED BY LF
	ISZ	FILEC3
	JMP	FILEC1
FILEC2,	JMS	KICKON
	JMP I	FILEC
FILEC3,	0
/
/
	PAGE
/
/
CRLFIN,	0
	TAD	(215
	JMS	ECHO
	TAD	(212
	JMS	ECHO
	JMP I	CRLFIN
/
/
/
PUTTE,	0
	CDF	10
	DCA I	INP
	CDF	20
	JMP I	PUTTE
/
/
CDINIT,	0
	JMS	CRLFIN
	TAD	("*
	JMS	ECHO
	JMS	KICKON
	JMP I	CDINIT
/
/
LOINIT,	0
	JMS	CRLFIN
	TAD	("#
	JMS	ECHO
	JMS	CRLFIN
	JMS	KICKON
	JMP I	LOINIT
SETFEL,	0
	TAD	FLDX
	DCA	.+1
	HLT
	JMP I	SETFEL
EBUMI,	ZBLOCK 130
EBUMA,	0
	PAGE
LIPIT4,	0
	TAD	CHARO
	DCA	LIPI4X
	TAD	(-12
	DCA	LIPI4Y
	DCA	CHARO
	JMS	LIPIT2
	ISZ	LIPI4Y
	JMP	.-2
	TAD	LIPI4X
	DCA	CHARO
	JMP I	LIPIT4
LIPI4X,	0
LIPI4Y,	0


LIPIT5,	0
	TAD	STATE
	DCA	.+2
	JMS	CODE
	HLT
	TAD	LSEND
	DCA	.+2
	JMS	CODE
	HLT
	JMP I	LIPIT5
/	TEST ROUTINES FOR LINE DRIVER

CLWF,	DCA	WF
	JMS	SETFEL
	TAD	(LI0BU
	DCA I	(LI0
	TAD	(LI0BUL
	DCA I	(WCLI0
	CDF	20
	JMP	FILEC2
SETCR,	0
	TAD	[-7
	DCA	TABCN
	TAD	INP
	DCA	CRCN
	TAD	INWC
	DCA	CRWC
	JMP I	SETCR
LIPIT1,	0
	JMS	LIPTE1
	TAD	(1000
	DCA	XX1
	TAD	(4000
	DCA	XX2
	JMP I	LIPIT1


LIPIT3,	0
	JMS	LIPTE1
	TAD	(0
	DCA	XX1
	TAD	(2000
	DCA	XX2
	JMP I	LIPIT3


LIPTE1,	0
	TAD	(-12
	DCA	LIPCN
	TAD	(NOP		/ENABEL SAVE
	DCA	LIPIX2
	TAD	LIPP0
	TAD	(14
	JMS	LIPTE2
	DCA	LIPP0
	TAD	LIPP0
	DCA	LIPPX
	JMP I	LIPTE1


LIPTE2,	0
	DCA	LIPTX2
	TAD	LIPTX2
	CIA
	TAD	(LIPPMA		/TEST FOR BUFFER OVERFLOW
	SPA	CLA
	JMP	.+3
	TAD	LIPTX2
	JMP I	LIPTE2
	TAD	(LIPPMI
	JMP I	LIPTE2
LIPTX2,	0

LIPIT2,	0
LIPIX2,	NOP
	TAD	XX1
	TAD	CHARO
	JMS	LIPTE3
	ISZ	LIPCN
	JMP I	LIPIT2
	TAD	.-1
	DCA	LIPIX2	/ENOUGT PRINTED
	JMP I	LIPIT2

LIPTE3,	0
	CDF	30
	DCA I	LIPPX
	CDF	20
	P1
	TAD	LIPPX
	JMS	LIPTE2		/TEST OVERFLOW
	DCA	LIPPX
	JMP I	LIPTE3


CODE,	0
	TAD I	CODE
	ISZ	CODE
	TAD	XX2
	JMS	LIPTE3
	JMP I	CODE

LIPP0,	LIPPMI
LIPPX,	LIPPMI
XX1,	0
XX2,	0
LIPCN,	0
	PAGE