File: COMPIP.PA of Tape: OS8/OS8-V40/v40-2
(Source file text) 

/COMMUNICATIONS WITH ETH-VENUS
	/W.V.D.MARK        ETH-HPF-B22


	/PARAMETERS NEEDED:

	XR=10
	TEMP=20
	CHAR=21
	INFPTR=22
	INEOF=23
	INBUF=3000	/ADDRESS OF INPUT BUFFER
	INCTL=1420	/INPUT BUFFER CONTROL WORD
	OUBUF=0000	/ADDRESS OF OUTPUT BUFFER
	OUCTL=5420	/OUTPUT BUFFER CONTROL WORD (MUST BE NEGATIVE)
	INRECS=6	/[INCTL/256]
	INDEVH=6600	/ADDRESS OF PAGE FOR INPUT HANDLER
	OUDEVH=7200	/ADDRESS OF PAGE FOR OUTPUT HANDLER
	ORIGIN=2000
	DCB=7760

	/ASSUMES I/O MONITOR IS RESIDENT IN CORE.
	/CAN BE CALLED FROM ANY FIELD WITH BUFFERS IN ANY FIELD.

	DEV=	36^10

	KCF2=6000+DEV
	KSF2=6001+DEV
	KCC2=6002+DEV
	KRS2=6004+DEV
	KIE2=6005+DEV
	KRB2=6006+DEV
	TFL2=6010+DEV
	TSF2=6011+DEV
	TCF2=6012+DEV
	TPC2=6014+DEV
	TSK2=6015+DEV
	TLS2=6016+DEV
	INFLD=INCTL&70	/GET FIELD OF INPUT BUFFER
	OUFLD=OUCTL&70	/DITTO OUTPUT BUFFER

	FIELD 1
	*ORIGIN

IN7400,	7400
INPTR,	0
IOPEN,	0
	CDF 10
	CLA CMA
	DCA INCHCT	/SET INCHCT TO FORCE A READ
	ISZ INEOF	/SET END-OF-FILE FLAG TO FORCE A NEW FILE
	TAD (7617
	DCA INFPTR	/RESET FILE POINTER
	TAD I INFPTR	/ANY FILE?
	SNA CLA
	ISZ I	(VENUSI	/NO, ASSUME LINE INPUT
	JMP I IOPEN

ICHAR,	0
IN7600,	7600
	RDF
	TAD INCDIF
	DCA INRTRN	/SAVE CALLING FIELDS
INCHAR,	CDF INFLD
	ISZ INJMP	/BUMP THREE-WAY UNPACK SWITCH
	ISZ INCHCT
INJMPP,	JMP INJMP
	TAD INEOF
	SNA CLA		/DID LAST READ YIELD END-OF-FILE?
	JMP INGBUF	/NO - DO ANOTHER
GETNEW,	JMS INNEWF	/OPEN A NEW INPUT FILE
	JMP EOFERR	/NO FILE TO OPEN
INGBUF,	TAD INCTR
	CLL
	TAD (INRECS
	SNL
	DCA INCTR	/RESTORE INCTR IF IT HASN'T OVERFLOWED
	SZL		/IS THIS THE LAST READ?
	ISZ INEOF	/YES - SET END-OF-FILE FLAG
			/NOT END-OF-FILE IF INPUT DEVICE
			/IS NON-FILE STRUCTURED!
	CLL CML CMA RTR	/CONSTRUCT A CONTROL WORD FOR THE READ
	RTR		/FROM THE AMOUNT OF THE OVERFLOW
	RTR		/(IF ANY) AND THE STANDARD CONTROL WORD
	TAD (INCTL+1
	DCA INCTLW
INCDIF,	CDF CIF 0
	CDF 10
	JMS I INHNDL	/CALL THE DEVICE HANDLER
INCTLW,	0
INBUFP,	INBUF
INREC,	0
	JMP INERRX
INBREC,	TAD INREC
	TAD (INRECS
	DCA INREC	/UPDATE THE RECORD NUMBER
	TAD INCTLW
	AND IN7600
	CLL RAL
	TAD INCTLW
	AND IN7600
	CMA
	DCA INCHCT	/COMPUTE THE NEW CHARACTER COUNT
	TAD INJMPP
	DCA INJMP	/RESET THE CHARACTER SWITCH
	TAD INBUFP
	DCA INPTR	/AND THE WORD POINTER
	JMP INCHAR	/GO BACK AND MAKE BELIEVE THIS NEVER HAPPENED
INERRX,	ISZ INEOF	/EITHER AN END-OF-FILE OR A BADDIE
	SMA CLA		/WHICH TYPE WAS IT?
	JMP INBREC	/END OF FILE - RESUME THY PROCESSING
INERR,	CLA CLL CML RAR	/BADDIE - GIVE ERROR RETURN WITH NEGATIVE AC
EOFERR,	JMP INRTRN
INJMP,	HLT		/THIS IS THE THREE - WAY CHARACTER SWITCH
	JMP ICHAR1
	JMP ICHAR2
ICHAR3,	TAD INJMPP
	DCA INJMP
	TAD I INPTR
IN200,	AND IN7400
	CLL RTR
	RTR		/COMBINE THE HIGH-ORDER FOUR BITS OF
	TAD INCTLW
	RTR		/THE TWO WORD TO FORM THE THIRD CHARACTER
	RTR
	ISZ INPTR
	JMP INCOMN
ICHAR2,	TAD I INPTR
	AND IN7400
	DCA INCTLW	/SAVE THE HIGH-ORDER BITS FOR THE THIRD CHAR
	ISZ INPTR	/BUMP THE WORD POINTER
ICHAR1,	TAD I INPTR
INCOMN,	AND (377
	TAD (-232
INCTZF,	SNA		/IS THE CHARACTER A ^Z?
	JMP GETNEW	/YES - GET A NEW FILE
	TAD (232	/RESTORE THE CHARACTER
	ISZ ICHAR	/BUMP RETURN TO NORMAL RETURN
INRTRN,	0		/RESTORE CALLING FIELDS
	JMP I ICHAR	/AND RETURN
			/IOPEN IS UNNECESSARY.
INNEWF,	-1		/ROUTINE TO OPEN NEW INPUT FILE
	INCHCT=INNEWF
	CDF 10
	TAD (INDEVH+1
	DCA INHNDL	/INITIALIZE HANDLER ADDRESS
	TAD I INFPTR	/GET NEXT CD INPUT FILE ENTRY
	SNA		/ANY MORE?
	JMP I INNEWF	/NO - OUT OF INPUT
	JMS I IN200
	1		/ASSIGN, FETCH HANDLER
INHNDL,	0
	HLT		/HUH?
	TAD I INFPTR
	AND (7760	/GET LENGTH PART OF WORD
	SZA		/LENGTH OF 0 MEANS LENGTH >=256
	TAD (17		/ADD HIGH-ORDER BITS
	CLL CML RTR
	RTR
	DCA INCTR	/STORE LENGTH OF FILE
	ISZ INFPTR
	TAD I INFPTR
	DCA INREC	/STORE STARTING RECORD NUMBER OF FILE
	ISZ INFPTR
	DCA INEOF	/ZERO END-OF-FILE FLAG
	ISZ INNEWF
	JMP I INNEWF
	INCTR=IOPEN
	PAGE
OOPEN,	0		/OPEN OUTPUT FILE
OU7600,	7600
	RDF
	TAD OUCDIF
	DCA OORETN
	TAD OU7601
	DCA OUBLK
	TAD (OUDEVH+1
	DCA OUHNDL
	CDF 10
	TAD I OU7600	/GET DEVICE NUMBER WORD OF OUTPUT FILE ENTRY
	AND (17		/STRIP OFF ANY LENGTH INFO
	SNA		/IS THERE AN OUTPUT DEVICE?
	JMP I (VENOOP	/NO - INHIBIT OUTPUT
	JMS I (200
	1		/ASSIGN, FETCH HANDLER
OUHNDL,	0		/OUTPUT DEVICE HANDLER ENTRY
	HLT		/HUH?
OUENTR,	TAD I OU7600
	JMS I (200
	3		/ENTER OUTPUT FILE
OUBLK,	7601		/REPLACED WITH STARTING BLOCK
OUELEN,	0		/REPLACED WITH LENGTH OF HOLE
	JMP OEFAIL	/FAILED - MAYBE WE ASKED TOO MUCH
	DCA OUCCNT
	DCA I (OUTINH	/ZERO OUTPUT INHIBIT FLAG
	JMS I (OUSETP
	ISZ OOPEN
OORETN,	CDF CIF 10	/RESTORE CALLING FIELDS
	JMP I OOPEN
OEFAIL,	TAD I OU7600
	AND (7760	/GET REQUESTED LENGTH
	SNA CLA		/WAS IT AN INDEFINITE REQUEST
	JMP ONTERR	/YES - CANNOT ENTER THE FILE
	TAD I OU7600
	AND (17		/MAKE THE REQUESTED LENGTH ZERO
	DCA I OU7600
	JMP OUENTR	/TRY, TRY AGAIN
ONTERR,	CLA CLL CML RAR
	JMP OORETN	/TAKE THE ERROR RETURN WITH AC<0
ONOFIL,	ISZ I (OUTINH
	JMP OORETN	/TAKE THE ERROR RETURN WITH AC=0
OUTDMP,	0
	DCA OUCTLW	/STORE THE CONTROL WORD
	CDF 10
	TAD I (OUTINH
	SZA CLA
	JMP OUNOWR
	TAD OUCCNT
	SNA
	ISZ OUCTLW
	TAD OUBLK
	DCA OUREC	/COMPUTE THE STARTING BLOCK NUMBER OF THIS TRANSFER
	TAD OUCTLW
	CLL RTL
	RTL
	RTL
	AND (17		/COMPUTE THE NUMBER OF RECORDS
	TAD OUCCNT	/UPDATE THE NUMBER OF BLOCKS IN THE FILE
	DCA OUCCNT
	TAD OUCCNT
	CLL CML
	TAD OUELEN
	SNL SZA CLA	/DOES THE LENGTH EXCEED THE GIVEN LENGTH?
	JMP I OUTDMP	/YES - SIGNAL OUTPUT ERROR
OUCDIF,	CDF CIF 0
	CDF 10
	JMS I OUHNDL
OUCTLW,	0
	OUBUF
OUREC,	0
	SKP
OUNOWR,	ISZ OUTDMP	/BUMP OUTDMP TO NORMAL RETURN
	JMP I OUTDMP
OCLOSE,	0
	CDF 10
	TAD I	(VENUSO	/WAS OUTPUT TO LINE?
	SZA CLA
	JMP	OCVEN	/YES, IGNORE CLOSE. WELL...
	TAD I (OUTINH
	SZA CLA		/IS OUTPUT INHIBITED?
	JMP OCISZ	/YES - CLOSE IS A NOP
	TAD (232	/OUTPUT A ^Z
	JMS I (OCHAR
	JMP OCRET
	JMS I (OCHAR
	JMP OCRET
FILLLP,	JMS I (OCHAR
	JMP OCRET
	TAD (177	/WHOLE RECORD
	AND I (OUDWCT
	SZA CLA		/UP TO THE BOUNDARY YET?
	JMP FILLLP	/NO - FILL WITH ZEROS
	TAD I (OUDWCT	/GET DOUBLEWORD COUNT LEFT
	TAD (OUCTL&3700
	SNA		/A FULL WRITE LEFT?
	JMP NODUMP	/YES - DON'T DO IT - THE ^Z IS ALREADY OUT
	TAD (4000+OUFLD	/PUT IN THE FIELD BITS AND THE WRITE BIT
	JMS OUTDMP
	JMP OCRET	/AN ERROR OCCURRED WHILE DUMPING THE BUFFER
NODUMP,	TAD I OU7600	/GET THE DEVICE NUMBER
	JMS I (200
	4		/CLOSE THE OUTPUT FILE
OU7601,	7601		/POINTER TO THE OUTPUT FILE NAME
OUCCNT,	0
	SKP		/ERROR WHILE CLOSING THE FILE - BAD!
OCISZ,	ISZ OCLOSE
OCRET,	CDF CIF 10	/RESTORE CALLING FIELDS
	JMP I OCLOSE
OCVEN,	TAD	(232	/SEND AN EOF TO LINE
	JMS I	(OCHARX
	JMP	OCRET	/ERROR
	JMP	OCISZ	/AND RETURN FROM 'OCLOSE'
	PAGE
OUSETP,	0		/ROUTINE TO INITIALIZE CHARACTER POINTERS
	TAD (OUCTL&3700	/GET SIZE OF BUFFER IN DOUBLEWORDS
	CIA		/PAL10 IS DEFINITELY NOT NICE
	DCA OUDWCT
/	TAD (OUBUF
	IFNZRO OUBUF <ERROR!>	/V3
	DCA OUPTR	/INITIALIZE WORD POINTER
	TAD OUJMPE
	DCA OUJMP	/INITIALIZE THREE-WAY CHARACTER SWITCH
	JMP I OUSETP

OCHAR,	0
	AND (377
	DCA OUTEMP
	RDF
	TAD (CDF CIF 0
	DCA OUCRET
	TAD OUTINH
	SZA CLA		/IS THERE AN OUTPUT FILE?
	JMP OUCOMN	/NO - EXIT
OUCHAR,	CDF OUFLD	/SET DATA FIELD TO BUFFER'S FIELD
	ISZ OUJMP	/BUMP THE CHARACTER SWITCH
OUJMP,	HLT		/THREE WAY CHARACTER SWITCH
	JMP OCHAR1
	JMP OCHAR2
OCHAR3,	TAD OUTEMP
	CLL RTL
	RTL
	AND (7400
	TAD I OUPOLD
	DCA I OUPOLD	/UPDATE FIRST WORD OF TWO WITH HIGH
			/ORDER 4 BITS OF THIRD CHAR
	TAD OUTEMP
	CLL RTR
	RTR
	RAR
	AND (7400
	TAD I OUPTR
	DCA I OUPTR	/UPDATE SECOND WORD FROM LOW ORDER 4 BITS
	TAD OUJMPE
	DCA OUJMP	/RESET SWITCH
	ISZ OUPTR
	ISZ OUDWCT	/BUMP DOUBLEWORD COUNTER EVERY 3 CHARS
	JMP OUCOMN
	TAD (OUCTL	/LOAD CONTROL WORD FOR A FULL WRITE
	JMS I (OUTDMP	/DUMP THE BUFFER
	JMP OUCRET	/OUTPUT ERROR - GIVE ERROR RETURN
	JMS OUSETP	/RE-INITIALIZE THE POINTERS
	JMP OUCOMN
OCHAR2,	TAD OUPTR
	DCA OUPOLD	/SAVE POINTER TO FIRST WORD OF TWO
	ISZ OUPTR	/BUMP WORD POINTER TO SECOND WORD
OCHAR1,	TAD OUTEMP
	DCA I OUPTR
OUCOMN,	ISZ OCHAR
OUCRET,	HLT		/RESTORE CALLING FIELDS
	JMP I OCHAR
OUTEMP,	0
OUPOLD,	0
OUPTR,	0
OUJMPE,	JMP OUJMP
OUDWCT,	0
OUTINH,	0
OTYPE,	0
	RDF
	TAD (CDF CIF 0
	DCA OTRTN
	CDF 10
	TAD I (7600
	AND (17
	TAD (DCB-1
	DCA OUTEMP
	TAD I OUTEMP
OTRTN,	HLT
	JMP I OTYPE

OCHARX,	0
	DCA OTEM
	TAD VENUSO
	SNA CLA
	JMP PDPOUT
	TAD OTEM
	JMS I (VENOUT
	JMP ORET
PDPOUT,	TAD OTEM
	JMS I (OCHAR
	SKP
ORET,	ISZ OCHARX
	JMP I OCHARX
OTEM,	0

ICHARX,	0
	TAD VENUSI
	SNA CLA
	JMP PDPIN
	JMS I (VENIN
	JMP IRET
PDPIN,	JMS I (ICHAR
	SKP
IRET,	ISZ ICHARX
	JMP I ICHARX

VENUSO,	0
VENUSI,	0

	PAGE
/ASCII PROCESSOR

LFEED,	/TAD CHAR
	/JMS LINSTR	/PUT THE LINE FEED IN THE LINE BUFFER
EOL,	JMS LINSTR	/MARK THE END OF USEFUL INFO
	TAD (ABUF-1
	DCA XR		/RESET BUFFER POINTER
EOLLP,	CDF 20
	TAD I XR	/GET A CHARACTER FROM THE LINE BUFFER
	CDF 10
PIPSNA,	SNA		/ZERO MEANS NO MORE CHARS
	JMP EOFTST
	JMS I (OCHARX	/OUTPUT THE CHARACTER
	JMP I (AOUERR
	JMP EOLLP
EOFTST,	TAD AEOFFG
	SNA CLA		/END OF INPUT ENCOUNTERED?
	JMP I (ASCIGO	/NO - GET NEXT LINE
ACLOSE,	JMS I (OCLOSE	/YES - CLOSE THE OUTPUT FILE
	SKP
	JMP I (VENANN
AOUERR,	SMA CLA
	JMP BOUERR
PER2,	JMS I (PIPERR
	ERR2
BOUERR,	JMS I (PIPERR
	ERR0

VENCD,	KCC
	TAD ("#
	JMS I (TTYOUT
	TSF
	JMP .-1
	JMS I (200
	5
	2605	/"VE"
	TFL
ASCII,	CLA		/JMS I (ASCI2
	JMS I (OOPEN
	SMA CLA
	JMP .+3
	JMS I (PIPERR
	ERR5
	JMS I (IOPEN	/OPEN THE INPUT FILES
	DCA AEOFFG	/ZERO THE END-OF-FILE FLAG
	JMP I (ASCIGO

	/ENTRY ON END OF INPUT
ASCEOF,	SMA CLA		/WAS IT EOF OR AN INPUT ERROR?
	JMP .+3
PER4,	JMS I (PIPERR
	ERR4
	ISZ AEOFFG	/SET END-OF-INPUT FLAG
	JMP EOL		/PROCESS LAST LINE (IF ANY)
AEOFFG,	0
	PAGE
/ASCII PROCESSOR CONTINUED

ASCIGO,	TAD (ABUF-1
	DCA XR
	DCA COLCT	/ZERO COLUMN COUNTER
ACHLP,	JMS I (ICHARX	/GET A CHARACTER
	JMP I (ASCEOF	/END OF INPUT OR WORSE
	AND (177	/MASK OUT PARITY BIT
	SZA		/IGNORE BLANK TAPE AND LEADER/TRAILER
	TAD (-177
	SNA
	JMP ACHLP	/DITTO RUBOUTS
	TAD (377	/FORCE COLUMN 8 ON
	DCA CHAR
	TAD CHAR
	TAD (-216
	CLL
	TAD ASCI5
	SNL		/IS THE CHARACTER A FORM CONTROL CHARACTER?
	JMP CINSRT	/NO
	TAD ASCJMP	/YES - GO TO APPROPRIATE ROUTINE
	DCA .+1
	HLT
ASCJMP,	JMP I .+1
	TABLP
	LFEED
	CARRET		/LEAVE IT FOR DIABLO
	FFEED
	CARRET
CINSRT,	7600		/GRP 2 CLA
	TAD CHAR
ADCAXR,	JMS LINSTR/STORE THE CHARACTER IN THE LINE BUFFER
	ISZ COLCT	/ALWAYS BUMP THE COLUMN POINTER
TESTXR,	TAD XR
	TAD (-ABUF-300
	SPA CLA		/HAS THE BUFFER OVERFLOWED?
	JMP ACHLP	/NO - GET NEXT CHARACTER
	JMS I (PIPERR
	ERR1
TABLP,	TAD (240
	JMS LINSTR	/OUTPUT A SPACE
	ISZ COLCT
	TAD COLCT
	AND (7
	SZA CLA	/IS THE COLUMN COUNTER A MULTIPLE OF 8?
	JMP TABLP	/NOT YET
	JMP TESTXR	/YES - CHECK BUFFER OVERFLOW
VTLF,	TAD (-5	/FIVE LINE FEEDS SIMULATE A VERTICAL TAB
	DCA TEMP
	TAD (212
	JMS LINSTR
	ISZ TEMP
	JMP .-3
	JMP I (EOL	/FORM FEED AND VERTICAL TAB ARE LINE ENDERS
FFEED,	TAD (214
	JMS LINSTR
	JMP I (EOL

CARRET,	TAD CHAR
	JMS LINSTR	/STORE CARRIAGE RETURN IN THE BUFFER
	JMP TESTXR	/CARRIAGE RETURN IS NO LINE TERMINATOR
COLCT,	0
ASCI5,	5

LINSTR,	0
	CDF 20
	DCA I XR
	CDF 10
	JMP I LINSTR

	PAGE
PIPERR,	0
	SMA SZA
	DCA ERRSWI
	SMA CLA
	JMS CRLF
	TAD I PIPERR	/GET ARG
	DCA TEMP
ERLP,	CDF 20
	TAD I TEMP
	BSW
	JMS ERPCH	/PRINT HIGH-ORDER CHARACTER
	TAD I TEMP
	JMS ERPCH	/PRINT LOW-ORDER CHARACTER
	ISZ TEMP
	JMP ERLP

ERPCH,	0
	AND (77
	SNA
	JMP ERREXI	/0 CHARACTER TERMINATES
	JMS CHPRNT
	JMP I ERPCH
FILENR,	TAD ("#
	JMS TTYOUT
	TAD INFPTR	/GET PTR TO CURRENT INPUT FILE
	TAD (321	/MAGIC NUMBER
	CLL RAR
	JMP FILENR-2

ERREXI,	CDF 10
	TAD ERRSWI
	DCA ERPCH
	DCA ERRSWI
	ISZ PIPERR
	JMP I PIPERR

ERRSWI,	0

CHPRNT,	0
	TAD (-37	/IS IT A _?
	SNA
	JMP FILENR	/YES..PRINT FILE NUMBER
	SPA
	TAD (100
	TAD (237
	JMS TTYOUT
	JMP I CHPRNT

CRLF,	0
	CDF 10
	TAD (215
	JMS TTYOUT
	TAD (212
	JMS TTYOUT
	JMP I CRLF

TTYOUT,	0
	TSF
	JMP .-1
	TLS
	CLA
	JMP I TTYOUT
PCRLF,	0
	TAD (215
	JMS I (OCHARX
	JMP I (AOUERR
	TAD (212
	JMS I (OCHARX
	JMP I (AOUERR
	JMP I PCRLF

PRWD,	0
	CDF 10
	TAD I PRWD
	DCA TEMP
	ISZ PRWD
PRWDLP,	CDF 20
	TAD I TEMP
	BSW
	JMS PR6BIT
	CDF 20
	TAD I TEMP
	JMS PR6BIT
	ISZ TEMP
	JMP PRWDLP

PR6BIT,	0
	CDF 10
	AND (77
	SNA
	JMP I PRWD
	TAD (240
	AND (77
	TAD (240
	JMS I (OCHARX
	JMP I (AOUERR
	JMP I PR6BIT

	PAGE
VENOOP,	ISZ I (VENUSO
	JMP I (OORETN-3


	PAGE
VENIN,	0
	JMS INTERM
	KSF2
	JMP .-2
	KRB2
	AND (177
	TAD (200
	DCA VENIBU
	TAD VENIBU
	JMP I VENIN

VENIBU,	0

INTERM,	0
	KSF
	JMP I INTERM
	KRB
	AND (177
	TAD (200
	DCA TERIBU
	TAD TERIBU
	TAD (-230	/IS IT ^X FOR EXIT?
	SNA CLA
	JMP VENEXT
	JMP I INTERM
VENANN,	CDF 10
	CLA
	DCA I (VENUSI
	DCA I (VENUSO
	TAD ("#
	JMS TTYOUT
VENUSL,	DCA TERIBU
	KSF2
	JMP NOVENI
	JMS VENIN
	JMS TTYOUT
NOVENI,	JMS INTERM
	TAD TERIBU
	SNA
	JMP VENUSL
	TAD (-204	/^D=DECODE
	SNA CLA
	JMP I (VENCD
	TAD	TERIBU
	JMS VENOUT
	JMP VENUSL

TERIBU,	0

	PAGE
VENPIP,	CAF
	ISZ TIME
	JMP .-1
	KRB
	KRB2
	CLA CLL CML RTL
	KIE2		/ENABLE ERR,NOT INT.
	CLA
	TLS2
	TLS
	CLA
	ISZ VENUSO
	JMS I (PRWD
	LOGIN
	JMS I (PCRLF
	JMS I (PRWD
	WHOAMI
	JMS I (PCRLF
	DCA VENUSO
	JMP VENANN

TIME,	0

VENEXT,	DCA VENUSI
	ISZ VENUSO
	JMS PRWD
	BYE
	JMS PCRLF
	JMS PRWD
	YES
	DCA VENUSO
	TSF
	JMP .-1
	CIF CDF 0
	JMP I (7600

VENOUT,	0
	DCA VENOBU
	JMS INTERM
	KSF2
	JMP .+3
	JMS VENIN
	CLA
	TSF2
	JMP .-6
	TAD	VENOBU
	TLS2
	CLA
	JMP I VENOUT

VENOBU,	0
TRAPNT,	0

	PAGE
	FIELD 2
	*6000

ABUF,	ZBLOCK 300
LOGIN,	TEXT /PLEASE/
WHOAMI,	TEXT /VERSION/
BYE,	TEXT /BYE/
YES,	TEXT /Y/
/ERROR MESSAGE TEXT GOES HERE


ERR0,	TEXT	/NO ROOM FOR OUTPUT FILE/
ERR1,	TEXT	/LINE TOO LONG IN FILE_/
ERR2,	TEXT	/OUTPUT ERROR/
ERR3,	TEXT	/ERROR DELETING FILE/
ERR4,	TEXT	/INPUT ERROR, FILE_/
ERR5,	TEXT	/CAN'T OPEN OUTPUT FILE/
ERR6,	TEXT	/ = RECEIVE ERROR;1=OVER;2=FRAME;4=PARITY/
ERR7,	TEXT	/PREMATURE END OF FILE, FILE_/
ERR8,	TEXT	/ILLEGAL BINARY INPUT, FILE_/
ERR9,	TEXT	/XXXXX/
ERR10,	TEXT	/DIRECTORY ERROR/

	FIELD 1
	*4000
	$$