File: M43SY3.PA of Tape: Various/System-Tapes/s5
(Source file text) 

/SI MOD43 SYS HNDLR OS/8 V3

	/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.
/HANDLER MODIFIED TO EXIT WITH NO ERRORS AND NO DATA XFER ON ZERO PAGE COUNT 8/73

/DEFINITIONS:

/PORT0:	FOR 128 WORD/SECTOR DISKS, PORT0=1; FOR 256 WORD/SECTOR
/	DISKS, PORT0=0.
/VERSION D: 23-OCT-78 (RK NAMES)

VERSION="D&77

PORT0=0
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

	EJECT

	/BOOTSTRAP
	-32	/# WORDS IN BOOT
NOPUNC
*0
ENPUNC

	NOP			/PAD TO GET TO TOGGLE IN BOOT
	NOP
	NOP
	NOP
	DSDD
	JMP	.-1
	DSDE			/CHECK FOR ERRORS
	JMP	BOOT
	DRSR			/QUIT NOW WITH STATUS IN AC
	HLT
	JMP	.-1

BOOTX1,	177
BOOTX2,	7577
BOOTX3,	46
BOOTX4,	7646

BOOT,	TAD I	BOOTX1
	DCA I	BOOTX2
	TAD I	BOOTX3
	CDF	10
	DCA I	BOOTX4
	CDF	0
	TAD	BOOTX2
	SZA	CLA
	JMP	BOOT
	JMP I	RESTRT
RESTRT,	7605

/BOOTSTRAP PROCEDURE:

/TOGGLE IN FOLLOWING INSTRUCTIONS

/LOC	OCTAL	INST
/0	6502	DLCR		/ASSURE DATA FIELD 0 (ALSO WORD COUNT)
/1	0000			/START CORE ADDRESS
/2	6517	DWCA		/SET WC, CA FROM 0 AND 1
/3	6512	DLSR		/SECTOR 0
/4	6514	DLTR		/READ FROM TRACK ZERO
/5	5005	JMP .		/WAIT FOR RESULT

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

	PAGE
	*200
	NOPUNC
	*7600
	ENPUNC
	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

IFNZRO PORT0	<CLL RAL>	/FOR 128 WD/SECTOR DISKS
IFZERO PORT0	<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>	/DK ENTRY POINTS 70-77

DSKDRV,	03		/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

	$$$$$