File: RX01NS.PA of Tape: OS8/OS8-Latest/new-12
(Source file text) 

/ FAST RX01 (RX02) WORD-MODE HANDLER
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1980   BY DATAPLAN GMBH, LAUDA, BRD
/
/
/
/
/
/
/
/
/
/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, ZUERICH, 1-JAN-80
/ FAST RX01 (RX02) WORD-MODE HANDLER		-JVZ-

/  THIS IS AN ATTEMPT TO SPEED UP THE TRACK AND SECTOR
/CALCULATION, SO THAT IT WILL PERFORM BETTER ON A DEC-
/STATION.  THIS VERSION DOESN'T MISS A SINGLE ROTATION
/AND ALSO WORKS ON AN RX02 - ALL THE KLUDGES ARE GONE!

	PAGE 0		/ORIGIN FOR BUILD
	-2		/TWO ENTRY POINTS

DEVICE	RX01		/GROUP NAME
DEVICE	RXA0		/DEVICE NAME
	4250		/TYPE 25, FIXED LENGTH
	RXA0&177	/ENTRY POINT
ZBLOCK	0002

DEVICE	RX01
DEVICE	RXA1		/SECOND DEVICE
	4250
	RXA1&177
ZBLOCK	0002


RX8=	6750		/75 DEVICE IS STANDARD
LCD=	   1		/LOAD COMMAND
XDR=	   2		/TRANSFER DATA
STR=	   3		/SKIP ON DATA READY
SER=	   4		/SKIP ON ERROR
SDN=	   5		/SKIP ON DONE

VERS=  "M&77

	PAGE 1
/ HERE IS THE HANDLER - ALL IN 1 PAGE!

	DECIMAL
CADR,	0
WCNT,	0
SECT,	0
M101,	-64-1		/SILO COUNT - DIDDLE
DVSR,	-26^64^2	/INITIAL DIVISOR
	OCTAL

CSUB,	0		/COMMAND SUB
CDF0,	CDF 0		/RESET FOR EXIT
	RX8 SDN		/READY FOR COMMAND?
	JMP KBCK	/NO, TRY KEYBOARD
	TAD I CSUB	/GET ARG, DF 0
	RX8 LCD
CDFX,	HLT		/BUFFER FIELD FOR NEXT STUFF
	RX8 SER		/ERRORS?
	JMP I CSUB
	STL RAR		/YOU LOSE
	JMP CDIX

KBCK,	TAD M200	/CHECK KEYBOARD
	KRS		/IGNORE PARITY
	TAD (200-3
	SNA CLA		/WAS IT ^C?
	KSF		/AND FLAG?
	JMP CSUB+2
CDI0,	CDF CIF 0	/YES, BACK TO OLD MON
	JMP I M200

RXA0,	VERS		/FIRST ENTRY-POINT
	CLA IAC		/FOR READ SECTOR
	JMP DRV0
P5,	24%4

RXA1,	VERS		/SECOND ENTRY-POINT
	CLA
	TAD RXA1
	DCA RXA0	/MAKE RXA0 COMMON POINTER
	TAD P5		/UNIT 1 AND READ SECTOR
DRV0,	CLL RTL
	DCA FNCD	/4 OR 24
	RDF
	TAD CDI0
	DCA CDIX	/PREPARE EXIT TO CALLER

	TAD I RXA0
	AND P70
	TAD CDF0
	DCA CDFX	/MAKE CDF BUFFER
	TAD I RXA0
	RAL
	AND M200
	DCA WCNT	/SETUP WORD-COUNT
	CML RTL		/GET R/W BIT
	DCA RDWR	/TO MAKE FILL/EMPTY SILO
	TAD RDWR
	TAD FNCD
	DCA FNCD	/AND MAKE READ/WRITE SECTOR

	ISZ RXA0
	TAD I RXA0
	DCA CADR	/SET BUFFER ADDRESS
	ISZ RXA0
	TAD I RXA0
	CLL RTL		/4 SECTORS PER BLOCK
	DCA SECT	/SECTOR BEFORE INTERLEAVE
	ISZ RXA0
	JMS DSUB	/PREPARE FIRST TRACK/SECTOR
	TAD RDWR
P7760,	SNL SMA SZA CLA	/ONLY 'SZA' ACTIVE
	JMP READ

WRIT,	JMS CSUB	/.
RDWR,	0		/FILL OR EMPTY SILO
	TAD M100
	DCA CSUB	/SILO COUNT FOR 64 SILO-SIZE

RWLP,	TAD I CADR	/LOAD...
	RX8 STR
	JMP .-1
	RX8 XDR
	DCA I CADR	/UNLOAD SILO
	ISZ CADR
P70,	70
	ISZ CSUB	/SILO FULL?
	JMP RWLP

	TAD WCNT	/YES
	TAD M101	/IS IT READ LOOP?
	SNA		/AND ALL READ?
	JMP CDIX-1	/YES, READ EXIT
	DCA WCNT	/NO, AND CORRECT FOR 1 ISZ

READ,	JMS CSUB	/READ LOOP ENTRY..
FNCD,	0		/READ/WRITE SECTOR
	TAD XSUB	/GET PRE-PARED SECTOR
	JMS XSUB
	TAD RXA1	/GET PRE-PARED TRACK
	JMS XSUB	/XSUB WILL ADD 1
	ISZ SECT	/NEXT SECTOR (IN TRACK)
	JMS DSUB	/CALCULATE NEXT PAIR
	JMS CSUB	/.
	16		/READ ERROR COMMAND (GOOD FOR RX02)
	ISZ WCNT	/END OF WRITE?
	JMP WRIT	/NO, DO MORE WITH WCNT INC
	ISZ RXA0	/YES, WRITE EXIT
CDIX,	HLT		/ERROR EXIT
	JMP I RXA0	/RETURN TO USER
/	SUPER-FAST DIVIDE ROUTINE

DSUB,	0		/GET TRACK, SECTOR
	TAD DVSR
	DCA CSUB
	TAD SECT
	DCA XSUB
	TAD P7760	/INIT LOOP COUNTER

DLUP,	RAL		/SHIFT IN QUOTIENT
	DCA RXA1
	TAD CSUB
	STL RAR		/REDUCE DIVISOR
DENT,	DCA CSUB

	TAD CSUB
	TAD XSUB
	SZL
	DCA XSUB	/SAVE REMAINDER
M200,	7600
	TAD RXA1
	SPA		/CHECK LOOP COUNT
	JMP DLUP

M100,	SMA CLA
	TAD XSUB	/GET SECTOR
	RAL
	DCA XSUB	/SAVE
	JMP I DSUB

XSUB,	0
	CLL IAC		/ADD OFFSET
	RX8 STR
	JMP .-1
	RX8 XDR
	CLA CLL
	JMP I XSUB

	PAGE
	$