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

/ RK8E SYSTEM HANDLER (NEW)
/
/
/
/
/
/
/
/
/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, DP, ZUERICH, 1-JAN-80
	VERSION="M&77

	*0		/BUILD HEADER
	-3		/3 ENTRYPOINTS

	DECIMAL;RKLEN=3248;OCTAL

	DEVICE RK8E;DEVICE SYS;4231;2007;0;RKLEN
	DEVICE RK8E;DEVICE RKA0;4231;1007;0;RKLEN
	DEVICE RK8E;DEVICE RKB0;4231;SHNDL1&177+1000;0;RKLEN

/ONE RK8E IS TREATED AS TWO LOGICAL DISKS
/EACH OF 3248 OS/8 BLOCKS.

/THIS HANDLER CONTAINS ENTRY POINTS FOR THE SYSTEM DEVICE
/AND RKB0.  THIS VERSION ALLOWS BOOTING UP ON EITHER UNIT.

	DSKP=6741
	DCLR=6742
	DLAG=6743
	DLCA=6744
	DRST=6745
	DLDC=6746
	DMAN=6747

	RKEBLK=7750	/12 BITS OF BLOCK NUMBER
	SERRCT=7751	/HOLDS RETRY COUNT
	PAGCNT=7752	/PAGE COUNT
	RKECMD=7753	/BASE OF DLDC COMMAND
	CHKHED=7754	/CHECK HEADER FLAG
/MAINTENANCE RELEASE CHANGES:

/1.	FIXED BUG RE INTERACTION WITH NON-SYSTEM HANDLER
/	[APRIL DSN]
/
/2.	MODIFIED BOOTSTRAP CODE TO NOT CHANGE DATE ON
/	BOOTSTRAP.
/	CODE BY R. MURPHY-PDP8 PRODUCT SUPPORT-D.E.C
/			  MAYNARD MASS PK3-2/S20
/
/3.	MADE PROVISION IN BOOTSTRAP FOR PUTTING PRIMARY
/	BOOT AT LOCATION 40 INSTEAD OF LOCATION 30.
/	[EASIER TO MANIPULATE SWITCHES ON AN 8/E...]
/	ADDED BY J. VAN ZEE-LAB DATA SYSTEMS, SEATTLE WA
	BOOT-BLAST	/LENGTH OF BOOTSTRAP (FOR BUILD)

	RELOC 0

BOOT,	TAD I BOOTX1	/RELOCATE 200 TO 7600
	DCA I BOOTX2
	STL RAL
	TAD BOOTX2
	SZA CLA		/COVER LOCN 07777!
	JMP BOOT
BOOT1,	TAD I BOOTX3	/RELOCATE 47 TO 17647
	CDF 10		/MOVE TO FLD 1
	DCA I BOOTX4
	JMP BOOT2	/SKIP INDEX REGISTERS

BOOTX1,	177		/MUST BE HERE TO BE AUTO-INDEX!!
BOOTX2,	7577
BOOTX3,	46
BOOTX4,	7646

BOOT2,	CDF 0
	TAD BOOTX4	/CHECK IF DONE
	SNA
	JMP I B7605	/BOOT TO OS/8
	TAD M7665
	SZA CLA		/SEE IF 17666
	JMP BOOT1
	ISZ BOOTX3	/IF SO, SKIP THIS LOCATION
	ISZ BOOTX4	/TO PRESERVE THE DATE WORD
	JMP BOOT1

	ZBLOCK	30-.	/DSKP GOES OVER 30
	DSKP		/LOADS OVER TOGGLE-IN.
	JMP .-1
BOOT3,	AND RK6
	DCA I RKUNIT
	JMP BOOT

RK6,	6
RKUNIT,	SYSUNT+400	/CHANGED BEFORE IT IS MOVED
B7605,	7605

	ZBLOCK 40-.	/ALTERNATE BOOT LOCATION
	DSKP		/EASIER TO ENTER ON 8/E:
	JMP .-1		/LOC 40: 6743
	JMP BOOT3	/LOC 41: 5041

M7665,	-7665
BLAST,	RELOC
	/THE BOOTSTRAP IS RK8E ONLY
	/30	6743
	/31	5031

	/LOAD ADDRESS 30 AND START

/BOOTSTRAP FOR OTHER UNITS:

/	26	1032
/	27	6746
/	30	6743
/	31	5031
/	32	6260

/LOAD ADDRESS 26 AND START

/FOR EASE IN SETTING THE SWITCH REGISTER
/THESE BOOTSTRAPS MAY BE RELOCATED BY 10
/I.E.

	/40	6743
	/41	5041

	/LOAD ADDRESS 40 AND START

/OR, FOR BOOTING UP RKB0:

/	36	1042
/	37	6746
/	40	6743
/	41	5041
/	42	6260

/LOAD ADDRESS 36 AND START
	*200

	RELOC 7600

	ZBLOCK 7
SHNDLR,	VERSION		/SYSTEM HANDLER ENTRY POINT
	CLA CLL		/GUARD AGAINST RANDOM AC
	TAD SHNDLR
	DCA SHNDL1	/SETUP COMMON EXIT AND PARM ADDR'S
	JMP SHNDC	/JUMP TO COMMON CODE

/VARIOUS CONSTANTS TO PAD E.P. FOR RKB0 TO 7621
S6260,	6260		/SIZE OF ONE LOGICAL DISK
S4070,	4070		/USED TO GET READ/WRITE AND DF BITS
S3700,	3700		/ " TO GET PAGE COUNT
SCIF,	CIF 0		/ " TO RESTORE USERS FIELD
S37,	37		/USED TO CHECK FOR CYLINDER CHANGE

	IFNZRO .-7621 <ERROR1,	BARF>

SHNDL1,	VERSION		/2ND E.P. FOR RKB0 AND TEMPORARY
	CLA		/GUARD AGAINST NON-ZERO AC
	TAD S6260	/RKB1 IS SECOND HALF OF PACK
SHNDC,	DCA SHNDLR	/SET BLOCK DISPLACEMENT ACCORDING TO SYS OR RKB0
	CLA CLL CMA RTL	/AC=-3
	DCA SERRCT	/RETRY COUNT
	RDF
	TAD SCIF
	DCA SFIELD	/RESET USER INST FIELD FOR EXIT
RETRY,	TAD SHNDL1	/AC=-2 IF ERROR ENTRY
	DCA SHNDL1
	TAD I SHNDL1	/GET ARG1
	AND S4070	/GET R/W AND DF BITS
	TAD SYSUNT
	DCA RKECMD	/BASE COMMAND TO RK8E(DLDC)
	TAD I SHNDL1	/GET ARG1 AGAIN
	ISZ SHNDL1	/POINT TO ARG2
	AND S3700
	SNA
	STL CLA RAR	/4000
	DCA PAGCNT	/SAVE PAGE COUNT
	TAD I SHNDL1	/GET ARG2
	ISZ SHNDL1	/POINT TO ARG3
	DLCA		/LOAD CURRENT ADDRESS REGISTER
	TAD I SHNDL1	/GET ARG3
	CLL	
	TAD SHNDLR	/SYS OR RKB0 DISPLACMENT
	DCA RKEBLK	/LOW PART OF RK8E BLOCK NUMBER
	SZL		/STILL OFF IF BELOW BLOCK 10000
OVRFLO,	ISZ RKECMD	/TURN ON EXTENDED BIT IF OVERFLOWED
RELOOP,	DCA CHKHED	/SET CHECK HEADER FLAG TO EITHER
			/0 OR 4000(WHICH GETS RTR'D BEFORE USED)
			/AND CAUSES EITHER A "DATA" OR "ALL"
			/TRANSFER
	TAD PAGCNT	/TEST TO SEE IF ONLY 1 PAGE WANTED
	AND S7600
	SNA CLA
	TAD S400	/100 WAS IN PAGCNT
	TAD CHKHED	/ADD IN CHECK HEADER FLAG
	CLL RTR		/SHIFT TO CORRECT BITS
	TAD RKECMD	/ADD IN BASE COMMAND
	DLDC		/LOAD COMMAND REGISTER
	TAD RKEBLK
	DLAG		/LOAD BLOCK REGISTER AND GO
	DSKP		/WAIT ON FLAG
	JMP .-1
	DRST		/READ COMPLETION REGISTER
	CLL RAL		/GET RID OF SUCCESS BIT
	SZA CLA		/AND SEE IF ANYTHING LEFT
	JMP SERROR	/AN ERROR
	IFNZRO .-7700 <ERROR2,	DOUBLE BARF>
	SKP		/PROTECTION AGAINST JMS I 7700 FIELD 0
	HLT		/HE'S HAD IT
	TAD PAGCNT
	TAD S7600
	SPA SNA
	JMP RKDONE
	DCA PAGCNT
	TAD RKEBLK
	CMA
	AND S37		/IF BLOCK IS AT A 37 MAKE
			/NEXT OPERATION DO A CHECK HEADER
	SZA CLA
	STL RAR		/SET AC TO "ALL" FLAG
	ISZ RKEBLK	/BUMP BLOCK NUMBER
	JMP RELOOP	/TRANSFER SOME MORE
	JMP OVRFLO	/PAST BLOCK 7777-SET EXTENDED BIT

                        /RECALIBRATE ON ALL ERRORS
SERROR, DCLR            /CLEAR STATUS REGISTER
        STL RTL         /AC=2
        DCLR            /RECALIBRATE DRIVE
        DSKP            /WAIT ON FLAG
        JMP .-1
        DCLR            /CLEAR STATUS REGISTER
        DRST            /WAIT FOR STATUS TO CLEAR
        SZA CLA
        JMP .-3         /V3C STILL DOING RECALIBRATE
        CLA CLL CMA RAL /AC=-2
        ISZ SERRCT      /SKIP IF WE TRIED 3 TIMES
        JMP RETRY       /TRY AGAIN
        JMP .+3         /ERROR EXIT
RKDONE, ISZ SHNDL1      /NORMAL RETURN
S7600,  7600            /GROUP 2 CLA
        ISZ SHNDL1      /IF JUMPED TO HERE- ERROR RETURN
SFIELD, HLT             /RESET USERS INST FIELD- WE NEVER TOUCHED DF
        JMP I SHNDL1    /EXIT
S400,   400             / " FOR 128 WORD TRANSFER MODE(RTR'D IN CODE)
SYSUNT, 0               /SYSTEM DEV UNIT # (SET BY BOOTSTRAP)
        RELOC
        $