File: GENIOX.SB of Tape: OS8/OS8-V3D/al-4760c-sa-os8-ext-2
(Source file text) 

/
/	COPYRIGHT 1971, DIGITAL EQUIPMENT CORPORATION,
/			MAYNARD, MASSACHUSETTS 01754
/	UTILITY SUBROUTINE PACKAGE
/		VERSION UTILTY.V7A (OCTOBER 26,1971)
/			(VERS. CHG. V07 TO V7A 4/25/77 MH)
/
	ENTRY	OPEN	     /INITIALIZING AND FLAG SETTING ROUTINE
	ENTRY	GENIO
	ENTRY	EXIT		/EXIT TO DISK MONITOR SYSTEM
	ENTRY	ERROR
	ENTRY	CKIO	/USELESS ROUTINE
	OPDEF	KRS	6034
	OPDEF	KCC	6032
	OPDEF	RIF	6224
	OPDEF TADI 1400
	OPDEF DCAI 3400
	OPDEF	JMSI	4400
	OPDEF JMPI 5400
/	CARD READER IOT'S
	OPDEF	RCSE	6672
	OPDEF	RCSP	6671
	OPDEF	RCSF	6631
	OPDEF	RCRA	6632
/LINE PRINTER IOT'S
	OPDEF	LLB	6666
	OPDEF	LSF	6661

	LAP

U17,	17		/*** MUST BE FIRST LOC IN PAGE ***

IOER,	1117
	0522		/"IOER" ERROR
GENIO,	BLOCK 2		/GENERAL INPUT/OUTPUT ROUTINE
	DCA	7	/SAVE ENTRY AC
GENLP,	TAD	7
	RTL
	RTL
	RAL
U200,	AND	U17
	TAD	JMPITB
	DCA	DSPACH	/INDEX JUMP TABLE BY DEVICE NUMBER
	TAD	U200
	KRS
	TAD	UM203
	SNA CLA
	KSF		/CHECK FOR ^C ON TELETYPE
DSPACH,	NOP		/NO ^C - DISPATCH TO I/O ROUTINE
	CALL	0,EXIT

JMPITB,	JMPI	DEVTAB
DEVTAB,	TTYOUT
	HSPOUT
	IOERR
	GENOUT
	TTYIN
	HSRIN
	IOERR
	GENIN
	IOERR
	IOERR
	IOERR
	IOERR
	IOERR
	IOERR
	IOERR
	IOERR

HSPOUT,	PSF
	JMP	GENLP
	TAD	7
	PLS
GENRTN,	CLA
	RETRN	GENIO

HSRIN,	ISZ	T1
	JMP	HSRSF
	TAD	U336	/TIME OUT-PRINT '^'
	TLS
HLP,	KSF
	JMP	HLP
	AND	U200	/GET 200 INTO AC 
	KRS		/READ THE CHAR.
	TAD	UM203
	SZA	CLA	/IS IT CONTROL C?
	KCC		/NO-CLEAR FLAG
	RFC		/USER TYPED-TICKLE RDR-FALL THRU RFC
HSRSF,	RSF
	JMP	GENLP
	DCA	T1
	RRB RFC
	JMP	GENRTN#
U336,	336
T1,	0

UM203,	-203


	PAGE
U377,	377		/MUST BE FIRST LOC IN THIS PAGE
GENIN,	6201
	TADI	IHNDLR
	SNA CLA		/OPEN INPUT FILE?
	JMP	IOERR	/NO
	6202
	JMS I	FICHAR	/GET A CHAR
	JMP	IOERR	/INPUT ERROR
UU200,	AND	U377
GRTN2,	RETRN	GENIO

GENOUT,	6201
	TADI	OHNDLR
	SNA CLA		/OPEN OUTPUT FILE?
	JMP	IOERR	/NO
	6202
	TAD	7	/GET CHAR TO BE OUTPUT
	AND	U377
	JMS I	FOCHAR	/PUT A CHARACTER
	JMP	IOERR	/OUTPUT ERROR
	JMP	GRTN2

IHNDLR,	122		/***ALL THESE LOCATIONS ARE VERY VOLATILE!! ***
FICHAR,	606		/*******
OHNDLR,	121		/*******
FOCHAR,	651		/******************
BATIN,	5400		/**************************
BATOUT,	7400		/**************************
BATVFY,	5600		/**************************
BATVAL,	-2214		/**************************

/
/	INITIALIZING SUBROUTINE CALLED BY FORTRAN
/	CLEARS FLOATING AC AND SETS FLAGS
/
OPEN,	BLOCK	2
	PLS
	RFC
	CALL	0,CLEAR
CDFX,	6201
	DCAI	IHNDLR
	DCAI	OHNDLR		/ZERO DEVICE-INDEPENDENT IO FLAGS
	DCA TTFLAG	/BEGINNING OF LINE
	TADI (7777	/GET BATCH FIELD
	AND (70
	TAD CDFX	/MAKE A CDF
	DCA CDFB
	TADI (7777	/GET BATCH RUNNING BIT
	RAL
	SMA CLA
	JMP IOERR	/BATCH NOT RUNNING
CDFB,	HLT
	TADI BATVFY	/CHECK CRUCIAL LOCATION
	TAD BATVAL	/FOR RL'S INITIALS
	SZA CLA
	JMP IOERR
	TAD CDFB
	IAC		/MAKE A CIF
	DCA CIFB1
	TAD CIFB1
	DCA CIFB2
	RIF		/MAKE A CDF TO HERE
	TAD CDFX
	DCA CDFH
	RETRN	OPEN


TTYIN,
CIFB1,	0		/CIF BATCH
	JMSI BATIN	/GET A CHAR
		JMP TTEOF1	/EOF
	DCA	7	/SAVE KEYBOARD CHAR
	TAD 	7
	TAD (-"$	/IS IT A "$"?
	SZA CLA
	JMP TTFUJ1	/NO
	ISZ TTFLAG	/WAS LAST CHAR <CR>?
	JMP TTYEOF	/YES - EOF
TTFUJ1,	CLA CMA
	DCA TTFLAG	/RESET FLAG FOR NON <CR>
	TAD	7
	TAD	(-215
	SNA CLA
	DCA TTFLAG	/CLEAR FLAG TO INDICATE <CR>
TYRTN,	TAD	7
	JMP	GRTN2	/RETURN WITH CHAR IN AC

TTFLAG,	0		/INITIALLY AT BEGINNING OF LINE

TTYEOF,	6201		/CDF
	TADI (7777	/GET WORD FROM FIELD 0
	RTR
	CLL CML RTL	/SET BIT 10
	DCAI (7777	/REPLACE IT
CDFH,	0		/CDF HERE
TTEOF1,	JMP IOERR	/WHAT TO DO?


TYPE,	0
	TAD	7
CIFB2,	0		/CIF BATCH
	JMSI BATOUT	/SEND A CHAR TO THE BATCH OUTPUT STREAM
	JMPI	TYPE

TTYOUT,	JMS	TYPE
	JMP	GRTN2

IOERR,	CALL	1,ERROR
	ARG	IOER


	PAGE

PMESG,	MESG
MESG,	7777
	7777
	4005
	2222
	1722
	4001
	2440
	1417
	0340
LIT7,	0007

ERROR,	BLOCK 2		/ERROR PROCESSOR
U7600,	7600
	TAD	ERROR
	DCA	TEM1
TEM1,	NOP		/SET DATA FIELD OF "CALL ERROR"
	TADI	ERROR#
	DCA	TEM3
	INC	ERROR#
E60,	CLA CMA CML	/CML IS WINDOW DRESSING
	TADI	ERROR#
	DCA	10
	INC	ERROR#
TEM3,	NOP		/DATA FIELD OF MESSAGE&ENTRY POINT
	DCA	CKIO	/ZERO "FATAL ERROR" FLAG
	TADI	10
	RAL
	SZL		/NON-FATAL BIT ON?
	ISZ	CKIO	/YES - SET "FATAL FLAG" TO NON-FATAL
	CLL RAR		/STRIP NON-FATAL BIT FROM MESSAGE
	DCA	MESG
	TADI	10	/SECOND WORD OF MESSAGE
	DCA	MESG#
	TADI	10
	DCA	TEM1
	TADI	10
	DCA	TEM3	/CALLING ADDRESS
	TAD	PMESG
	DCA	TEM2

ERLP,	TAD I	TEM2
	RTR
	RTR
	RTR
	JMS	PR6BIT
	TAD I	TEM2
	JMS	PR6BIT
	INC	TEM2
	JMP	ERLP

PRLOC,	TAD	TEM1
	RTR
	RTR
	JMS	ERTTY	/PRINT CALLING FIELD
	TAD	(-4
	DCA	TEM2
NUMLP,	TAD	TEM3
	RTL
	RAL
	DCA	TEM3
	TAD	TEM3
	JMS	ERTTY
	ISZ	TEM2
	JMP	NUMLP
	TAD	(215
	DCA	7
	JMS	TYPE
	CLA CLL CMA RTL
	JMS	TYPE
	TAD	CKIO	/GET THE FATAL ERROR FLAG
	SNA CLA		/WHADDOWEDO??
	JMP	EXITX
	RETRN	ERROR	/HE SAYS ITS NON-FATAL - LET HIM HANDLE IT

ERTTY,	0	/DIGIT PRINTING ROUTINE
	RAL
	AND	LIT7
	TAD	E60
	JMS	PR6BIT
	JMP I	ERTTY

PR6BIT,	0		/6BIT TO 8BIT CONVERTOR
	AND	(77
	SNA
	JMP	PRLOC	/MESSAGE OVER
	TAD	(7740
	SPA
	TAD	(100
	TAD	(240
	CALL	0,GENIO	/LOOK FOR ^C WHILE TYPING
	JMP I	PR6BIT

/
/EXIT TO DISK MONITOR SYSTEM
/
EXIT,	BLOCK	2
EXITX,	CALL	0,CKIO
	6203
	JMPI	U7600	/RETURN TO MONITOR

CKIO,	0
TEM2,	0	/DUMMY SUBROUTINE TO WAIT FOR I/O COMPLETE
	RETRN	CKIO


	END