perm filename BOOT.PAL[KL,SYS]3 blob sn#259024 filedate 1977-01-21 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	.SBTTL DSKDMP BOOTSTRAP LOADING SERVICE, JBR 23-MAY-76 - LDBOOT
C00004 00003	$DS
C00006 ENDMK
CāŠ—;
.SBTTL DSKDMP BOOTSTRAP LOADING SERVICE, JBR 23-MAY-76 - LDBOOT

.IF DF BOOASB

;LOAD DSKDMP BOOTSTRAP
LDBOOT:	MOV #L10ADR+2,R3	;SETUP BLOCK START ADDRESS POINTER
	CLR (R3)
	MOVB LDCNT+1,(R3)	;HI-BYTE OF LDCNT IS ADR BITS 18 & 19
	MOV LDADR,-(R3)		;SETUP ADR BITS 20-35
	TST LDZBLK		;IS IT A Z LINE?
	BEQ LDBDAT		;NO, LOAD DATA
	MOV (R3)+,BOOTBG	;STARTING ZERO ADDRESS (LOW 16 BITS)
	MOV (R3),BOOTBG+2	; HIGH TWO BITS (18 AND 19)
	CLR R1
	MOV #LDATA,R2
	MOVB LDCNT,R3
1$:	ADD (R2)+,R1		;ACCUMULATE TOTAL # WORDS TO ZERO
	DEC R3
	BNE 1$
	MOV R1,R2
	SL R1,1
	ADD R2,R1		;TIMES 3 IS NUMBER OF PDP-11 WORDS
	CMP R1,#BOOTSZ
	BLE 2$			;BRANCH IF SMALL ENOUGH
	PMSG <?BOOT TOO LONG>
	JMP $CNTLC

2$:	MOV #BOOTBF,R1
	MOV #BOOTSZ,R2
3$:	CLR (R1)+
	DEC R2
	BNE 3$			;CLEAR OUT THE BOOT BUFFER
LDBLD2:	JMP LLD2		;DO NEXT LINE

LDBDAT:	MOVB LDCNT,R0		;WC
	BEQ LDBXFR		;WC=0 MEANS TRANSFER BLOCK
	MOV #LDATA,R1
	MOV LDADR,R2
	SUB BOOTBG,R2		;GET OFFSET FROM START OF BUFFER
	MOV R2,R3
	SL R2,2
	SL R3,1
	ADD R3,R2		;TIMES 6 GIVES BYTE OFFSET FROM BOOTBF
	ADD #BOOTBF,R2
5$:	MOV (R1)+,(R2)+		;COPY A WORD
	DEC R0
	BNE 5$
	BR LDBLD2

LDBXFR:	MOV (R3)+,BOOTSA
	MOV (R3),BOOTSA+2	;SAVE AWAY STARTING ADDRESS
	JMP LDDONE
;$DS

;COPY DSKDMP BOOT INTO PDP-10 AND START IT

$DS:	TTITRM
	TST BOOTSA
	BNE 2$
	TST BOOTSA+2
	BNE 2$
	PMSG <?DSKDMP BOOT NOT LOADED - USE LD>
	JMP $CNTLC

2$:	CMP PEBITS,#36
	BEQ 3$
	CMP PEBITS,#37
	BEQ 3$
	PMSG <BAD PARITY ENABLES, TYPE PE 36 FIRST>
	JMP $CNTLC

3$:	CMP CLKDFL+4,#17
	BEQ 4$
	PMSG <WARNING!  SOME CACHES DISABLED - TYPE CE 17 TO ENABLE ALL\>
4$:	MOV #L10ADR+2,R3
	MOV BOOTBG+2,(R3)
	MOV BOOTBG,-(R3)
	MOV #BOOTWD,R2		;NUMBER OF PDP-10 WORDS IN BUFFER
	MOV #BOOTBF,R4
	MRESET
	SM
1$:	MOV R3,R1
	MOV R4,R0
	DPOSVR
	BCS DSVER
	INC (R3)		;STAY IN SAME 64K SECTION
	ADD #6,R4		;NEXT PDP-10 WORDS WORTH
	DEC R2
	BNE 1$
	MOV #PGOADR,R4
	MOV BOOTSA,(R4)+
	MOV BOOTSA+2,(R4)
	MOV #2,PGOCTL
	JMP $$GO		;START IT UP

DSVER:	PMSG <DEPOSIT/EXAMINE ERROR IN DS>
	JMP $CNTLC

.ENDC ;IF DF BOOASB