	.TITLE .DKSBT
/COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
/5-29-70	EDIT #1	MODIFIED FOR KM V5A
/M. SIFNAS 6-21-68
/PDP-9 ADVANCED SOFTWARE DISK BOOTSTRAP
/SPECIAL VERSION TO CONVERT DECTAPE
/UNITS 0-2 AND 4-6 TO TRACK AND SECTOR ADDRESSES
/DTA0 = TK0, SECT. 0 (SIDE 1)
/DTA1 = TK30, SECT. 0 (SIDE 1)
/DTA2 = TK60, SECT. 0 (SIDE 1)
/DTA3 IS MAPPED INTO DTA1
/DTA4 = TK0, SECT 0 (SIDE 2)
/DTA5 = TK30, SECT 0 (SIDE 2)
/DTA6 = TK60, SECT 0 (SIDE 2)
/DTA7 IS MAPPED INTO DTA5
/
/IF ENTERED VIA .DTBEG OR .DTOUT, 5 CELLS MUST BE SET:
	/.DTBLK = LOGICAL DISK BL# (0-1077) WHERE 1 BL. = 256 WDS
	/.DTCA = CORE ADDRESS -1
	/.DTWC = -WC (2'S COMP) TO BE TRANSFERED
	/.SCOM+5 = START ADDR. WHEN LOAD COMPLETE
	/.DTSRC = UNIT #(0-2)
/
.SCOM=100
DSLW=707124
DSLM=707142
DSLD=707104
DSCS=707141
DSLS=707144
DSSF=707121
DSRS=707132
EEM=707702
/
	.EJECT
	.FULL
	.LOC 17637
/
/NON RESIDENT CELLS
/
.DTBLK	0		/LOGICAL BL# (0-3777)
.DTCA	0		/CORE ADDR -1
.DTWC	0		/2'S COMP WC
OCTN	0		/TEMP.
HOD	0		/TEMP
.DTSRC	0		/VESTGIAL REG. (FROM DTA BOOTSTRAP)
.DTTR	0		/READ OR WRITE STATUS BITS
/
/RESIDENT DISK BOOTSTRAP
/FOR KM-9 LOAD, START AT .BOOT
/
.BOOT	LAC .L077	/START TRANSFER AT LOC 100
	DAC .DTCA
	LAW 1000		/WC = 17000
	DAC .DTWC
	DZM .DTBLK	/LOGICAL BL 0 = TRACK 0, SECOTR 0
	DZM .DTSRC	/UNIT 0
	JMP .DTBEG
.L3000	30000
.L002	2000
.L003	3000
.LM24	777754
.L24	24
.L1	1
/
/FOR NON-KM9 LOAD, START AT .DTBEG
.DTBEG	LAC .L002		/(2000 = READ, GO
	SKP!STL		/SET LINK FOR DISK SIDE INIT
/FOR OUTPUT, START AT .DTOUT
.DTOUT	LAC .L003		/(3000 = WRITE, GO
	DAC .DTTR
	STL
	EEM+10		/ENTER EXT. MEM. + CLEAR AC
	RTR		/AC = 0, L = 1
	DAC .DUNIT		/200000
	LAC .DTSRC		/UNIT 3 MAPPED INTO 1,7 INTO 5
	SMA!RTL		/UNIT 4-6
	DZM .DUNIT	/UNIT 0-2
	SNL!RAL		/UNIT 2 OR 6
	SZL!CLA!STL	/UNIT 0 OR 4
	LAC .L3000	/2,6
	SNL		/0,4
	TAD .L3000	/1,5
	JMP .+3
/
	.EJECT
.DSTOP	HLT		/ERR. HLT
	JMP .BOOT		/RESTART
	TAD .DUNIT
	DAC .DUNIT
	LAC .DTWC
	DSLW		/LOAD WC
	LAC .DTCA
	TAD .L1		/LOAD CA
	DSLM
/
/DAVE LENEY 2-17-67
/DISK TRACK AND SECTOR ENCODER
/CONVERTS LOGICAL BLOCK # (OCTAL)
/FROM 0-3777 TO BCD TRACK AND SECTOR ADDRESS
/WHERE 1 BLOCK = 256 WDS OR 4 DISK SECTORS
/
	LAC .DTBLK	/LOGICAL BL#
	DZM TRACK		/COMPUTE BCD TRACK AND SECTOR ADDR.
FINDT	TAD .LM24		/-20 (20 256 WD BLOCK PER TRACK)
	SPA!STL
	JMP FINDS		/TRACK FOUND
	ISZ TRACK
	JMP FINDT		/STILL LOOKING
FINDS	TAD .L24		/20 (GO BACK 1)
	RTL
	JMS .TOBCD	/CONVERT SECTOR TO BCD
	DAC SECTOR	/TEMP
	LAC TRACK
	JMS .TOBCD	/CONVERT TRACK TO BCD
	RTL
	RTL
	RTL
	RTL
	XOR SECTOR
	TAD .DUNIT
	DSLD		/LOAD SECTOR AND TRACK ADDR.
	LAC .DTTR		/LOAD STATUD (READ OR WRITE)
	DSCS!DSLS
	DSSF!DSRS		/SKIP ON FLAGS AND READ STATUS
	JMP .-1
	SPA
	JMP .DSTOP	/ERROR FLAG UP
	LAC* .L105	/DONE EXIT THROUGH BANK0, 105
	DAC .TOBCD
	CAF
	JMS* .TOBCD
/
	.EJECT
/DAVE LENEY 2-17-67
/ROUTINE TO CONVERT OCTAL NUMBER IN
/AC TO A BCD NUMBER IN AC
/OCTAL NUMBER MUST BE LESS THAN 144
/CALLING SEQUENCE
/	JMS .TOBCD
/	(RETURN)
/
.TOBCD	0
/STRAIGHTENED OUT BY C. PROTEAU
	DZM HOD		/HIGH ORDER DIGIT
	SKP
NXT	ISZ HOD
	DAC OCTN		/REMAINDER (+)
	TAD .LM12	/(-12
	SMA!CLL
	JMP NXT
	LAC HOD		/COMBINE DIGITS
	RTL		/4 TIMES
	RTL
	XOR OCTN
	JMP* .TOBCD		/EXIT
TRACK	0		/TEMP
SECTOR	0		/TEMP
.DUNIT	0		/LOGICAL BLK # (0-3777)
.L077	77		/KM-9 CA-1
.LM12	-12
	0
	0
.L105	105
	.END .BOOT
