*************************************
* Assembler: ATMAS-II
* BEISPIEL:  Erzeugen einer boot-
*            faehigen Diskette
*
* P. Finzel                   1986
*************************************

BOOTADR	EQU $700	Anfang Bootpgm.
ABLAGE	EQU $A900	Ablage des Bootpgm.
DRIVE	EQU 1		Aktuelles Laufwerk
RTCLK	EQU $14		VBI-Uhr
DOSVEC	EQU $0A		Reset-Vektor
COLPF2	EQU $D018	Farbregister
WSYNC	EQU $D40A	Synchron.
VCOUNT	EQU $D40B	Rasterzeile
DSKINV	EQU $E453	Disk-Handler-Einsprung
*
* DBC-Kontrollblock
*
DUNIT	EQU $301	Drive-Nummer
DCOMND	EQU $302	Disk-Befehl
DBUFLO	EQU $304	Bufferadresse lo
DBUFHI	EQU $305	;  -"-        hi
DAUX1	EQU $30A	Sektornummer lo
DAUX2	EQU $30B	;  -"-        hi

*------------------------------------------
* BOOTGENERATOR
*------------------------------------------

	ORG $A800

	LDA #1		Sektor 1
	LDX #ABLAGE:L 	Bufferadresse
	LDY #ABLAGE:H
	JSR PUTSEC 	Sektor schreiben
	RTS

*------------------------------------------
* Sektor schreiben:
*        <A>: Sektornummer
*        <X>: Buffer LSB
*        <Y>: Buffer MSB
*------------------------------------------

PUTSEC	STA DAUX1	Sektornummer
	LDA #0
	STA DAUX2
	STX DBUFLO
	STY DBUFHI
	LDA #DRIVE	Drive 1
	STA DUNIT
	LDA #'W		Sektor lesen
	STA DCOMND
	JSR DSKINV
	RTS

*------------------------------------------
* Bootprogramm
*
* Dieses Programm wird in den Boot-
* sektor geschrieben
*------------------------------------------

	ORG BOOTADR,ABLAGE

BOOTPGM	DFB 0
	DFB 1
	DFW BOOTADR
	DFW BOOTINI
*
* Einsprung 'Bootfortsetzung'
*
	LDA #SCRCOL:L	Einsprungadresse
	STA DOSVEC	nach DOSVEC
	LDA #SCRCOL:H
	STA DOSVEC+1
	CLC 		kein Fehler
	RTS
*
* Einsprung durch DOSVEC
*
SCRCOL	CLC
	LDA VCOUNT	Bild-Zaehler
	ADC RTCLK	plus Raster-Zeile
	STA WSYNC	Warte auf HSYNC
	STA COLPF2	Farbregister
	JMP SCRCOL
*
* Einsprung durch DOSINI
*
BOOTINI	RTS	keine Init.
