File: SI43SY.PA of Tape: Sources/Other/si43
(Source file text) 

/SYS. IND. M43 SYS HNDLR
/
/
/
/
/COPYRIGHT  (C)  1980   BY WVDMARK, ZURICH
/
/
/
/
/
/WVDM, ZUERICH, 1-SEP-80

/SI MOD43 SYS HNDLR OS/8 V3

/ORIGIN:/SYSTEM INDUSTRIES, INC.
	/535 DEL REY AVENUE
	/SUNNYVALE, CALIFORNIA  94086

/THIS SYSTEM HANDLER IS CONFIGURED
/FOR OS/8 VERSION 3, ALLOWING IT TO BE USED WITH
/SYSTEM INDUSTRIES MODEL 3400/3500 STORAGE SYSTEMS.

		VERSION="N&77
/DEFINITIONS:

DOFF0=146			/QUARTER SIZE MOVING-HEAD DISK
DCODE=50			/DEVICE CODE OF CONTROLLER
BSW=7002
DSDD=10^DCODE+6001
DLCR=10^DCODE+6002
DCSR=10^DCODE+6004
DRSR=10^DCODE+6005
DSDE=10^DCODE+6011
DLSR=10^DCODE+6012
DSRR=10^DCODE+6013
DLTR=10^DCODE+6014
DWCA=10^DCODE+6017
	*0		/DESCRIPTOR TABLE
	-3		/TWO HANDLERS + SYS
	DEVICE SISY;DEVICE SYS;4400;2007;0;6200
	DEVICE SISY;DEVICE RKA0;4400;1007;0;6200
	DEVICE SISY;DEVICE RKB0;4400;DSKDRV&177+1000;0;6200
	BOOTA-BOOTB	/# OF WORDS IN BOOT
/BOOTSTRAP PROCEDURE:

/TOGGLE IN FOLLOWING INSTRUCTIONS

	NOPUNC

	DLCR		/ASSURE DATA FIELD 0 (ALSO WORD COUNT)
	0000			/START CORE ADDRESS
	DWCA		/SET WC, CA FROM 0 AND 1
	DLSR		/SECTOR 0
	DLTR		/READ FROM TRACK ZERO
	JMP .		/WAIT FOR RESULT

	ENPUNC

/START THE BOOT AT ADDRESS ZERO
/NOTE:
/	THE -AC- MUST BE ZERO.
	/SECONDARY BOOTSTRAP

	RELOC 0

BOOTA,	NOP			/PAD TO GET TO TOGGLE IN BOOT
RESTRT,	7605
BOOTB,	RELOC
	PAGE
	*200

	RELOC 7600

	ZBLOCK 7

/INITIALIZATION CODE

SHNDLR,	VERSION		/ENTRY/EXIT POINT
	CLL CLA		/NEVER TRUST THE USER TO PASS A CLEAR AC
	DCA SYSDSK	/CLEAR TRACK OFFSET
	TAD I SHNDLR
	DCA WRD1	/GET FUNCTION CONTROL WORD TO LOCAL STORAGE
	ISZ SHNDLR
	TAD I SHNDLR
	DCA CORADR	/GET DATA BUFFER ADDRESS
	ISZ SHNDLR
	TAD I SHNDLR
	DCA DADR	/GET DISK BLOCK-ADDRESS
	ISZ SHNDLR	/PARTIALLY FIX EXIT
	RDF
	TAD KCDIF
	DCA SHNXIT+1	/SET UP FIELD CHANGER FOR EXITING


	TAD WRD1	/CONVERT PAGE COUNT TO WORD COUNT
	AND M3700	/CLEAN OUT JUNK BITS
	SNA
	JMP SHNXIT-1	/TAKE NORMAL EXIT ON ZERO WORD COUNT
	CLL RAL
	DCA WDCNT
	TAD KM20
	DCA ERRCNT	/INITIALIZE RETRY COUNTER
	TAD DADR
	TAD LGLBLK	/CHECK FOR LAST LEGAL BLK.
	SZL CLA
	JMP SHNXIT	/FATAL:LINK ON
/ALL INITIALIZATION CODE IS NOW DONE, PROCEED WITH REAL WORK

SHNDLP,	DLCR		/INSURE INTERFACE DATA FIELD=0
	DCSR		/CLEAR STATUS REGISTER
	TAD WCCALC
	DWCA		/TELL INTERFACE WHERE TO FIND CONTROL WORDS
	TAD KIONS
	DCA SHNIOU	/SET UP ACTUAL I/O READ
	TAD WRD1
	SPA
	ISZ SHNIOU	/SET UP FOR WRITE
	BSW
	AND M7000
	DLCR		/LOAD DATA BUFFER FIELD
	TAD DADR
	AND M17		/FOR 256 WD/SECTOR DISKS
	DLSR		/LOAD SECTOR ADDRESS REGISTER
	CLL CLA
	TAD DADR
	RTR ; RTR
	AND M377	/DEVELOP TRACK ADDRESS
	TAD SYSDSK
SHNIOU,	HLT		/A REAL TRACK LOAD AND GO IS PLACED HERE
	JMP DWAIT	
/-DSK- DRIVER FOR SI DISK

	IFNZRO 7671-. <NZERR>	/RK ENTRY POINTS 70-77

DSKDRV,	VERSION		/ENTRY-EXIT POINT
	CLL CLA
	TAD DSKDRV
	DCA SHNDLR	/FOOL -SHNDLR- INTO THINKING IT WAS CALLED
	TAD KOFSET	/SET -DSK- OFFSET ON UNIT 0
	JMP SHNDLR+2	/GO ENTER NORMAL SHNDLR

DADR,	0
ERRCNT,	0
	IFNZRO 7701-. <NZERR>
	HLT		/CATCH USER LOOKING FOR-USR-IN WRONG FIELD
WRD1,	0
M7000,	7000
LGLBLK,	-6200		/100 CYLS.+2 CYLS.PROTECTION
KCDIF,	CIF CDF 0
KIONS,	DLTR-WDCNT
KOFSET,	DOFF0^2
M17,	17
M377,	377
M3700,	3700
SYSDSK,	0
WCCALC,	.+1
WDCNT,	0
CORADR,	0
KM20,	-20


DWAIT,	CLL CLA
	DSDD
	JMP .-1		/WAIT FOR OPERATION TO FINISH
	DSDE		/WAS THERE AN ERROR?
	JMP SHNXIT-1	/NO, GO EXIT
	ISZ ERRCNT	/BUMP ERROR COUNTER
	JMP SHNDLP	/RETRY UNTIL COUNT EXPIRES
	CLL CML
	SKP
	ISZ SHNDLR	/BUMP EXIT ADDRESS TO TAKE NORMAL EXIT
SHNXIT,	CLA RAR
	HLT		/RESET FIELDS TO THOSE OF CALLER
	JMP I SHNDLR	/EXIT
	RELOC
	$$$$$