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

⟦d92b0a724⟧ TextFile

    Length: 2753 (0xac1)
    Types: TextFile
    Names: »BOOTL.SRC«

Derivation

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

TextFile

	PAGESZ	40\r
	NAME BOOTL\r
	PUBLIC	BOOTL\r
;************************************************************************\r
;\r
;\r
;   * * * * * * * * *\r
;   * *     *     * *		CHRISTIAN ROVSING A/S\r
;   *   *   *   *   *\r
;   *     * * *     *		PROGRAMMER: IMJ\r
;   * * * * * * * * *\r
;   *     * * *     *		DATE: 800905\r
;   *   *   *   *   *\r
;   * *     *     * *\r
;   * * * * * * * * *\r
;\r
;\r
;-----------------------------------------------------------------------\r
;\r
;	MODULE:\r
	TITLE	'BOOTLOAD'\r
;\r
;-----------------------------------------------------------------------\r
;\r
;	FUNCTION:\r
;		MOVE PROGRAM FROM SHARED RAM TO PROGRAM MEMORY\r
;\r
;\r
;***********************************************************************\r
\r
\r
\r
SRAMB	EQU	4000H		;FIRST SHARED RAM ADDRESS\r
SRAME	EQU	7FFFH		;LAST SHARED RAM ADDRESS\r
RAMEND	EQU	3FFFH		;LAST Z80 RAM ADDRESS\r
STATUS	EQU	SRAMB		;STATUS WORD ADDRESS TO/FROM CR80\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
STAWAIT	EQU	0AAAAH		;STATUS FROM CR80 WHEN READY TO START\r
COMREDY EQU	0		;STATUS TO CR80 WHEN Z80 READY/COMPLETED\r
COMCERR	EQU	2		;STATUS TO CR80 WHEN CHECKSUM ERROR\r
	CSEG\r
BOOTL	DI\r
B1LOOP	LD	B,200/13*4\r
	DJNZ	$+0		;DELAY 200 MICRO SEC.\r
	LD	HL,(STATUS)\r
	LD	A,H\r
	CP	STAWAIT.HIGH.\r
	JP	NZ,B1LOOP	;WAIT UNTILL CR80 READY\r
	LD	A,L\r
	CP	STAWAIT.LOW.\r
	JP	NZ,B1LOOP\r
B4LOOP	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
	LD	HL,COMREDY\r
	LD	(STATUS),HL	;LOAD STATUS = READY\r
B2LOOP	LD	B,200/13*4\r
	DJNZ	$+0		;DELAY 200 MICRO SECONDS\r
	LD	HL,STATUS+1\r
	BIT	7,(HL)\r
	JR	Z,B2LOOP	;WAIT UNTILL DATA FROM CR80\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
	DEC	HL\r
B3LOOP	INC	HL		;FOR DATA = ARRAY START TO LAST DATA\r
	ADD	A,(HL)		; ADD DATA TO CHECKSUM\r
	DEC	C\r
	JP	NZ,B3LOOP\r
	DEC	B\r
	JP	NZ,B3LOOP	;NEXT DATA\r
	INC	HL\r
	CP	(HL)		;IF CHECKSUM ERROR THEN\r
	JR	Z,B1ELSE\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
	LD	HL,COMCERR\r
	LD	(STATUS),HL	;  LOAD STATUS = CHECKSUM ERROR\r
	JP	B2LOOP		;  TRY AGAIN\r
				;ELSE\r
B1ELSE	LD	BC,(BYTCOU)	;  GET BYTE COUNT\r
	DEC	BC		;  STRIP START ADDRESS\r
	DEC	BC\r
	DEC	BC		;  STRIP CHECHSUM\r
	LD	HL,ARYADR+2	;  GET FIRST DATA ADDRESS\r
	LD	DE,(ARYADR)	;  GET PROGRAM START ADDRESS\r
	LDIR			;  MOVE DATA TO PROGRAM MEMORY\r
	LD	A,(STATUS+1)	;  SAVE STATUS FROM CR80\r
	BIT	6,A		;  IF NOT LAST PROGRAM THEN\r
	JP	Z,B4LOOP	;    GET NEXT PROGRAM\r
				;  ELSE\r
	LD	HL,COMREDY\r
	LD	(STATUS),HL	;    LOAD STATUS = COMPLETED\r
	HALT			;    HALT\r
				;  ENDIF\r
				;ENDIF\r
	END\r