DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦79c2d4bcf⟧ TextFile

    Length: 3498 (0xdaa)
    Types: TextFile
    Names: »WBOOTL.OLD«

Derivation

└─⟦519079be6⟧ Bits:30005500 8" CR80 Floppy CR80FD_0029 ( WBOOTL.SYS W.D bootload program 81 10 01 ??? )
└─⟦519079be6⟧ Intel_ISIS_II
    └─ ⟦this⟧ »WBOOTL.OLD« 

TextFile

	PAGESZ	40\r
;*********************************************************************\r
\r
	LIST	S\r
	NAME	WBOOTL\r
	TITLE	'WATCHDOG BOOTLOAD PROGRAM'\r
;	FILE	WBOOTL.SRC\r
;	DATE	81 10 07 11 00 LPO\r
;	DISK	WBOOTL.SYS\r
;	NOTES	PROM CHECKSUM=42H ADDR 7FFH\r
;		WD FIRMWARE CHECKSUM= 5DH PT\r
\r
;FUNCTION:\r
;	THIS MODULE IS LOCATED INTO THE SHADOW PROM ON THE WD-LTU\r
;	EXECUTE BOOT LOADING OF THE WD-LTU, IE LOAD PRGM FROM PROM\r
;	SITUATED ON WCA INTO SHARED RAM ON WD-LTU (CR8066D), THEN\r
;	AFTER CHECKSUM CTRL, THE WD FIRMWARE IS MOVED TO PROGRAM\r
;	MEMORY\r
\r
;*********************************************************************\r
	PUBLIC	WBOOTL\r
	LIST	B,I,O,S,T,R,D\r
\r
PROMS	EQU	0		;	PROM START ADDRESS\r
PROME	EQU	3FFFH		;	PROM END ADDRESS\r
RAMEND	EQU	3FFFH		;	Z80 RAM END\r
SRAMB	EQU	4000H		;	FIRST SHARED RAM ADDRESS\r
SRAME	EQU	7FFFH		;	LAST SHARED RAM ADDRESS\r
BYTCOU	EQU	SRAMB+2		;	(MAX) BYTE COUNT\r
STADR	EQU	SRAMB+4		;	FIRST DATA ADDRESS\r
ARYADR	EQU	SRAMB+6		;	PROGRAM START ADDRESS\r
CHECKS	EQU	5DH		;	WD FIRMWARE CHECKSUM\r
\r
	CSEG	;PAGE\r
WBOOTL	LD	SP,RAMEND+1	;	ADJUST SP\r
	DI\r
	LD	B,200/13*4\r
	DJNZ	$+0		;	DELAY 200 USEC\r
\r
WBL1	LD	HL,SRAME-ARYADR-1\r
	LD	(BYTCOU),HL	;	LOAD MAX BYTE COUNT\r
	LD	HL,ARYADR\r
	LD	(STADR),HL	;	LOAD BUFFER START ADDRESS\r
\r
	LD	BC,(BYTCOU)	;	GET BYTE COUNT\r
	DEC	BC		;	STRIP CHECKSUM\r
	DEC	BC\r
	LD	HL,ARYADR\r
	XOR	A		;	INIT CHECKSUM\r
	INC	B\r
	INC	C\r
	LD	DE,PROMS	;	LOAD PROM START ADDRESS\r
	DEC	DE\r
WBL2	INC	DE		;	INCREMENT PROM ADDRESS POINTER\r
	PUSH	AF\r
	PUSH	BC\r
\r
WB1	CALL	RCD		;	RESET COMMAND DECODER\r
	LD	C,22H		;	LATCH ROM UPPER ADDRESS BYTE\r
	LD	A,0F4H		;	VIA PORT C (OPC0 TO OPC3)\r
	OUT	(C),A		;	(COMMAND 4)\r
	LD	C,20H		;	SEND UPPER ADDR BYTE VIA PORT A\r
	OUT	(C),D\r
	LD	C,22H		;	LATCH ROM UPPER ADDR BYTE\r
	LD	A,0FCH		;	PLUS STROBE, (COMMAND 0CH)\r
	OUT	(C),A\r
\r
	CALL	RCD\r
	LD	C,22H		;	READ ROM (OUTPUT ENABLE)\r
	LD	A,0F3H		;	(COMMAND 3)\r
	OUT	(C),A\r
	LD	C,20H		;	SEND LOWER ADDR BYTE VIA PORT A\r
	OUT	(C),E\r
	LD	C,22H		;	READ ROM PLUS STROBE\r
	LD	A,0FBH		;	(COMMAND 0BH)\r
	OUT	(C),A\r
	LD	C,21H		;	RECEIVE DATA FROM SELECTED\r
				;	ROM ADDR VIA PORT B\r
	INI			;	LOAD DATA INTO SHARED RAM\r
\r
	POP	BC\r
	POP	AF\r
	ADD	A,(HL)		;	ADD DATA TO CHECKSUM\r
	EX	AF,AF'		;	SAVE CHECKSUM WHEN PROM DATA\r
				;	POINTER IS EXAMINED\r
	LD	A,0FFH		;	PROM END LOWER ADDR PART\r
	CP	E\r
	JR	NZ,WBL2		;	NEXT DATA\r
	LD	A,3FH		;	PROM END UPPER ADDR PART\r
	CP	D\r
	JR	NZ,WBL2\r
;	DEC	C\r
;	JP	NZ,WBL2		;	NEXT DATA\r
;	DEC	B\r
;	JP	NZ,WBL2\r
	EX	AF,AF'\r
	CP	CHECKS		;	IF CHECKSUM ERROR THEN\r
	JR	Z,WBL3\r
;#	LD	HL,SRAME-ARYADR-1\r
;	LD	(BYTCOU),HL	;	LOAD MAX BYTE COUNT\r
;	LD	HL,ARYADR\r
;	LD	(STADR),HL	;	LOAD BUFFER START ADDRESS\r
;	JP	WBL2		;	TRY AGAIN\r
\r
				;	PRGM DATA ARE ACCEPTED AND\r
				;	NOW LOADED FROM SHARED RAM\r
				;	TO PROGRAM MEMORY\r
WBL3	LD	BC,(BYTCOU)	;	GET BYTE COUNT\r
	DEC	BC\r
	DEC	BC\r
	LD	HL,ARYADR+2	;	GET FIRST DATA ADDRESS\r
	LD	DE,(ARYADR)\r
	LD	(STADR),HL	;	LOAD BUFFER START ADDRESS\r
	LDIR			;	MOVE ALL DATA TO PROGRAM MEMORY\r
\r
	CALL	RCD\r
	LD	C,22H		;	LOAD COMMAND REGISTER (COMMAND 7)\r
	LD	A,0F7H\r
	OUT	(C),A\r
	LD	C,20H\r
	LD	A,0F0H		;	RESET ONESHOT IN WCA\r
	OUT	(C),A\r
	LD	C,22H\r
	LD	A,0FFH		;	LOAD COMMAND REGISTER PLUS STROBE\r
	OUT	(C),A\r
\r
	CALL	RCD\r
	LD	C,22H\r
	LD	A,0F7H\r
	OUT	(C),A\r
	LD	C,20H\r
	LD	A,0F1H		;	GIVE EXTERNAL MASTER CLEAR (EMC)\r
	OUT	(C),A\r
	LD	C,22H\r
	LD	A,0FFH\r
	OUT	(C),A\r
	HALT\r
\r
\r
\r
;# RESET COMMAND DECODER\r
RCD	LD	C,22H		;	LOAD POINTER TO PORT C\r
	LD	A,0F0H		;	SET LOWER NIBLE LOW\r
	OUT	(C),A\r
	LD	A,0F8H		;	SET BIT 3\r
	OUT	(C),A\r
	RET\r
	END\r