File: SI43SY.PA of Disk: Disks/Build-2007/Make-11-03-07
(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;6260
	DEVICE SISY;DEVICE RKA0;4400;1007;0;6260
	DEVICE SISY;DEVICE RKB0;4400;DSKDRV&177+1000;0;6260
	BOOTA-BOOTB	/# OF WORDS IN BOOT
/BOOTSTRAP PROCEDURE:

/TOGGLE IN FOLLOWING INSTRUCTIONS

	NOPUNC

	*0000		/SET ADDRESS AND EXT. ADD. TO 00000

BOOTA,	DLCR		/ASSURE DATA FIELD 0 (ALSO WORD COUNT)
	0000		/START CORE ADDRESS
	DWCA		/SET WC, CA FROM 0 AND 1
	DLSR		/SECTOR 0
	CLA STL RTR	/UNIT BIT 2000
	AND	BOUNIT	/GET USER SPEC. UNIT AND NOTHING ELSE
	DLTR		/READ FROM TRACK ZERO, UNIT 0 OR 1
	JMP	.	/WAIT FOR DSDD;JMP .-1 OVERLAY
BOUNIT,	0000		/OR 2000 FOR RKA1 BOOT

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

/OLD BOOTSTRAP MAY ALSO BE USED FOR UNIT 0 (FIXED)

	*0000		/SET ADDRESS AND EXT.ADD. TO 00000

	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, UNIT 0
	JMP	.	/WAIT FOR DSDD;JMP .-1 OVERLAY

	ENPUNC
	/SECONDARY BOOTSTRAP

	RELOC BOOTA

BOSTO,	7600		/POINTER TO LOAD SYS PAGES
BOSTRT,	7605		/MONITOR LOAD ADDRESS
BTDATE,	-7666+1		/DATE AND SIUNIT SKIP LOC
DBUNIT,	SIUNIT		/SIUNIT LOCATION
	DSDD
	JMP	.-1	/IN CASE OLD BOOTSTRAP IS USED
	DSDD		/LOAD DSDD OVER DLTR
	JMP	.-1	/NOW REPLACE JMP . AND START SEC. BOOT
	DSDE		/ANY ERRORS ?
	JMP	BOOT	/NO
	DRSR		/CLEAR AC AND LOAD STATUS REGISTER
	HLT		/QUIT AND DISPLAY ERROR
	JMP	.	/CATCH SMART GUYS
BOXR5,	BOOTA+200-1	/PAGE FOR FIELD 0
BOXR6,	BOOTA+000-1	/PAGE FOR FIELD 1

BOOT,			/AC CONTAINS UNIT FROM PRIMARY BOOT
	DCA I	DBUNIT	/STORE IN SPECIAL LOC
BOLOOP,	TAD I	BOXR5	/LOAD FIELD 0
	DCA I	BOSTO	/NOT INCED YET
	TAD I	BOXR6	/LOAD FIELD 1
	CDF 10
	DCA I	BOSTO
	CDF 0		/MAIN FIELD 0
	TAD	BOSTO
	TAD	BTDATE	/ARE WE AT DATE AND SIUNIT LOC ?
	SZA CLA
	JMP	BOCONT	/NO, GO ON
	ISZ	BOXR5
	ISZ	BOXR6
	ISZ	BOSTO	/BUMP ALL 3 POINTERS OVER IT
BOCONT,	ISZ	BOSTO	/INC DEPOSIT POINTER
	JMP	BOLOOP	/IF NO SKIP, GO ON
	JMP I	BOSTRT	/THAT'S IT!

BOOTB,	RELOC		/END OF SECONDARY BOOTSTRAP
	PAGE
	*200

	RELOC 7600

	ZBLOCK 7

/INITIALIZATION CODE

SHNDLR,	VERSION		/ENTRY/EXIT POINT
	CLL CLA		/NEVER TRUST THE USER TO PASS A CLEAR AC
SIMERG,	TAD	SIUNIT	/SET UNIT
	DCA	SYSDSK	/AND 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
	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
	JMP	DGO	/GO TO DLTR START

M17,	17
M377,	377
M3700,	3700
M7000,	7000
KM20,	-20

	IFNZRO 7666-. <UNTERR,	_ /SPECIAL UNIT LOCATION >
SIUNIT,	0
WDCNT,	0
CORADR,	0
/-DSK- DRIVER FOR SI DISK

	IFNZRO 7671-. <ENTERR,	_ /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	SIMERG	/GO ENTER NORMAL SHNDLR

DADR,	0
ERRCNT,	0
	IFNZRO 7701-. <USRERR,	_ >
	HLT		/CATCH USER LOOKING FOR-USR-IN WRONG FIELD

WRD1,	0
SYSDSK,	0

LGLBLK,	-6260		/101.5 CYLINDERS
KCDIF,	CIF CDF 0
KIONS,	DLTR-WDCNT
KOFSET,	DOFF0^2
WCCALC,	WDCNT

DGO,	CLL CLA
	TAD	DADR
	RTR
	RTR
	AND	M377	/DEVELOP TRACK ADDRESS
	TAD	SYSDSK
SHNIOU,	HLT		/A REAL TRACK LOAD AND GO IS PLACED HERE
	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
	$$$$$