File: BAT50.PA of Disk: V50/Source/Source-Listing-PAL-1
(Source file text) 

/BAT HANDLER DP FOR KBM V50
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1980   BY DIGITAL EQUIPMENT
/
/
/
/
/
/
/
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DATAPLAN GMBH.
/DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR
/IN THIS DOCUMENT.
/
/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
/(WITH INCLUSION OF DATAPLAN'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DATAPLAN.
/
/DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
/OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DATAPLAN.
/
/
/
/
/
/
/
/
/
/
/
/WVDM, DP, ZUERICH, 1-JAN-80

/NEW BAT HANDLER FOR 0S/8 V50

/THIS BAT HANDLER SUPPORT THE OLD READ-ONLY
/FUNCTIONS, I.E. IT READS FROM THE BATCH
/INPUT FILE UNTIL A DOLLAR IS FOUND AS FIRST
/CHARACTER IN A LINE. THIS DOLLAR SIGNALS
/THE END OF INPUT AND RETURN A SOFT ERROR
/AND A 232 EOF CHAR TO THE CALLER.
/IT IS NOW ALSO PERMITTED TO WRITE TO BAT
/THIS WRITE FUNCTION WILL ALWAYS SUCCEED
/IF UNDER BATCH AND WILL SET THE ERROR STATUS
/OF THE BATCH MONITOR. THIS ERROR STATUS CAN
/THEN BE TESTED WITH THE $SKIP CARD.

		VERSION="X&77

	BIPCCL=7777	/BATCH MONITOR DEFINITIONS
	DOLFLG=7776
	BATIN=5400
	BATVFY=5600

	*0000
	-1;DEVICE BAT;DEVICE BAT;0220;BATDP-200;0;0

	*0200
BATDP,	VERSION
	CLA 
	RDF
	TAD	BATCDI
	DCA	BATEX
	TAD	BATISZ
	DCA	ISZRET	/RESET THE NORMAL RETURN 'ISZ'
	TAD I	BATDP
BT232,	AND	BT7700
	CMA
	DCA	BATCNT	/THIS REALLY ONLY HAS A MEANING FOR READ
	TAD I	BATDP
	AND	BAT070
	TAD	BATCDF
	DCA	BATDF	/SET BUFFER DF
BATISZ,	ISZ	BATDP
	TAD I	BATDP
	DCA	BATBUF	/SET BUFFER ADDRESS
	ISZ	BATDP	/GO TO BLOCK # (IGNORED)
BATCDI,	CDF CIF 0
	TAD I	BATCCL
	AND	BAT070
	TAD	BATCDF
	DCA	BATACC	/MAKE CDF TO BATCH MONITOR
	TAD I	BATCCL	/NOW TEST IF BATCH IS ACTIVE
	RAL 
BT7700,	SMA CLA 	/*MUST STAY HERE*
	JMP	BATERR	/NO, ALWAYS ERROR
BATACC,	HLT		/OK, CHANGE DF TO BATCH
	CLA IAC
	TAD	BATACC
	DCA	BATEXE	/MAKE CIF BATCH FIELD

	TAD I	BATTES	/CHECK IF RICHY WROTE THIS
	TAD	(-2214	/WELL, THE FIRST TIME THAT IS
	SZA CLA
	JMP	BATERR	/NO, WRONG BATCH MONITOR
	TAD	BATCNT
	SPA CLA		/WAS IT A WRITE FUNCTION?
	JMP	BAT070	/NO, GO IN READ LOOP
	CLA STL RAR
	DCA I	BATSLU	/YES, SET BAT SLEW TO ERROR
	JMP	ISZRET	/GO TO NORMAL EXIT

BATLUP,	JMS	BATGET	/READ LOOP
	DCA I	BATBUF	/WORD 1
	JMS	BATGET
	DCA	BATTMP	/WORD 2
	JMS	BATGET
	RTL 
	RTL 
	DCA	BATSHF	/WORD 3 * 16
	TAD	BATSHF
	AND	BT7400
	TAD I	BATBUF
	DCA I	BATBUF	/WORD 1 + 1/2 WORD 3
	ISZ	BATBUF
BT7400,	7400
	TAD	BATSHF
	RTL 
	RTL 
	AND	BT7400
	TAD	BATTMP
	DCA I	BATBUF	/WORD 2 + 1/2 WORD 3
	ISZ	BATBUF
BAT070,	0070		/PROTECT WRAP-AROUND
	ISZ	BATCNT	/MOR TO GO?
	JMP	BATLUP
ISZRET,	ISZ	BATDP	/NO, NORMAL EXIT OR SOFT ERROR IF WIPED
BATEX,	HLT 
	ISZ	BATDP	/AND ONE MORE
	JMP I	BATDP
BATERR,	CLA STL RAR 	/ERROR, SET AC=4000
	JMP	BATEX

BATCNT,	0000		/READ COUNT
BATBUF,	0000		/BUFFER ADDRESS
BATSHF,	0000		/TEMP READ CHAR
BATTMP,	0000
BATCCL,	BIPCCL		/BATCH MONITOR ADDRESSES
BATSLU,	DOLFLG
BATTES,	BATVFY

BATGET,	0000		/INPUT STREAM READER
BATALT,	0000		/GETS JMP SWITCH ON CR
BATEXE,	CIF 0		/GETS CIF BAT
BATCDF,	CDF 0		/CALLERS FIELD
	JMS I	BATHND	/CALL BATCH HANDLER
	JMP	BATEOF	/NO MORE INPUT
	DCA	BATSHF
	TAD	BATSHF
	TAD	(-244
	SNA 
	JMP	GOTDOL	/WAS DOLLAR
	TAD	(244-212
	SNA 
	JMP	BATEXE	/WAS LINEFEED
	TAD	(212-215
	SNA CLA 
	JMP	GOTCR	/WAS CARRIAGE RETURN
CLRSWI,	DCA	BATSWI	/NORMAL CHAR, CLEAR CR SWITCH
	TAD	BATSHF	/GIVE BACK THIS CHAR
BATDF,	HLT 		/WITH BUFFER FIELD SET
	JMP I	BATGET

BATJMP,	JMP	BATNXT

GOTCR,	TAD	BATJMP
	DCA	BATALT	/IF CR, GO TO BATNXT FOR NEXT CHAR
SETSWI,	CLA CMA 	/AND SET CR SWITH FOR DOLLAR RECOGNITION
	JMP	CLRSWI

BATNXT,	DCA	BATALT	/ONCE ONLY JUMP TO HERE
	TAD	(212	/MAKE LF FOR CR/LF
GETOUT,	JMP	BATDF	/ALSO LITERAL

GOTDOL,	TAD	BATSWI	/WAS LAST CHAR = CR ?
	SMA CLA 
	JMP	CLRSWI	/NO, NORMAL CHAR AND CLEAR CR SWITCH
	TAD I	BATCCL
	CLL RTR 
	STL RTL 
	DCA I	BATCCL	/YES, GIVE SIGNAL TO SHOW $ READ
BATEOF,	TAD	BT232	/REPLACE $ BY EOF
	DCA	BATSHF
	DCA	ISZRET	/WIPE OUT 'ISZ' FOR SOFT ERROR
	TAD	GETOUT
	DCA	BATEXE	/GIVE BACK NULLS FOR REST OF BUFFER
	JMP	SETSWI	/KEEP CR SWITCH ON FOR NEXT CALL

BATHND,	BATIN
BATSWI,	7777
	$$$$$$$$$$$$$$$$