*
* Routine zum Lesen eines Bildes von Diskette.
* Format: DISKBILD,<file spec.>[,parameter]
* File ist ein mit DISKCOPY abgespeichertes Bild.
* parameter ist die max. Anzahl der Bildseiten,
* die eingelesen werden soll. 1 <= parameter <= 6.
* In TAB stehen die Bildseiten, die physisch
* vorhanden sind. In dieser Reihenfolge werden
* die Bilder von Diskette geladen.
*
* W. Schwotzer	10.10.84
*
* SYSTEM EQUATES:

WARMS	EQU	$CD03
PUTCHR EQU	$CD18
GETFIL EQU	$CD2D
SETEXT EQU	$CD33
INDEC	EQU	$CD48
FMS	EQU	$D406
INCHNE EQU	$D3E5	(FLEX special !)
PSTRNG EQU	$CD1E
CLSFMS EQU	$D403
RPTERR EQU	$CD3F
SWITCH EQU	$F036
SWTCHB EQU	$F038
EOT	EQU	$4
FF	EQU	12

	ORG	$C100

BEGIN	BRA	ANF

VERSIO FCB	1
TAB	FCB	$C,$D,$E
	FCB	$FF,$FF,$FF
	FCB	$FF

ANF	LEAX	FCB,PCR
	JSR	GETFIL
	BCS	ERROR
	TST	12,X	Extension schon da?
	BNE	OK1	ja, weiter
	LDA	#0
	JSR	SETEXT	def. ext.: .BIN
OK1	JSR	INDEC	parameter
	TSTB
	BEQ	ALLE
	LEAX	-1,X
	CMPX	#5		nur 1 - 6 moeglich
	BHI	ERR2
	TFR	X,D
	INCB	
= Anz. der auszug. Bilder
OK2	LEAU	<TAB,PCR
	LEAX	FCB,PCR
	LDA	#1		Open File for read
	STA	,X
	JSR	FMS
	BNE	ERROR
	LDA	#$FF
	STA	59,X	Space Comp. Mode aus
	LDA	#FF
	JSR	PUTCHR
LOOP1	TST	,U
	BMI	OK9
	BSR	GTBILD	1 Bildseite lesen
	BNE	ERROR
	LEAU	1,U	Zeiger auf naechste B.
	DECB	
nur weiter, falls
	BNE	LOOP1	alle Bilder ausgeg.?
OK9	LDA	#4
	STA	,X
	JSR	FMS	Close file
	BNE	ERROR
	JSR	[INCHNE]	Eingabe abwarten
	JMP	WARMS

ALLE	LDB	#6		falls ohne Parameter,
	BRA	OK2	max. 6 Bilder zulaessig

ERR2	LEAX	TZAHLA,PCR 'Falscher Bereich'
	JSR	PSTRNG
ERR22	JSR	CLSFMS
	JMP	WARMS
ERROR	JSR	RPTERR
	BRA	ERR22

GTBILD PSHS	B,X,U
	LDA	,U		Bildseite in A
	TFR	A,B
	TFR	D,X	in X
	TFR	D,Y	und Y
	LDB	#$E0	nach $0000
	JSR	[SWITCH]	einblenden
	LEAX	FCB,PCR
	LDY	#0		Zaehler auf 0
	CLRB
GT1	BSR	GTBYT	Byte holen
	BNE	GTERR
	STA	,Y+	abspeichern
	CMPY	#$4000	Bildseite voll?
	BLO	GT1	nein, weiter
	JSR	[SWTCHB]	Bildseite ausblenden
	CLRB	
kein Fehler
	PULS	B,X,U,PC
GTERR	JSR	[SWTCHB]
	PULS	B,X,U,PC

GTBYT	TSTB	
Code lesen?
	BNE	GTB1	nein, Byte lesen
	JSR	FMS	Code lesen
	BNE	GTBER
	CMPA	#0
	BEQ	GTBER2
	CMPA	#2		Code muss 2 sein
	BNE	GTBER1
	JSR	FMS	MSB Adresse
	BNE	GTBER
	JSR	FMS	LSB Adresse
	BNE	GTBER
	JSR	FMS	Byteanzahl
	BNE	GTBER
	TFR	A,B	in B
GTB1	DECB
	JSR	FMS	Byte in A
	RTS

GTBER2 LDA	#8		READ PAST END OF FILE
	STA	1,X
	RTS
GTBER1 CLR	1,X	Keine Systemfehlermeld.
	LEAX	TNOTB,PCR
	JSR	PSTRNG
	LDA	#$FF	NE-Cond.
GTBER	RTS

TZAHLF FCC	'FALSCHER PARAMETER',EOT
TZAHLA FCC	'PARAMETER AUSSERHALB DES BEREICHES (1-6)',EOT
TNOTB	FCC	'FILE NICHT BINAER',EOT

FCB	RMB	320
LBL	SET	*
	IF	LBL>$C6FF
	ERR	PROGRAM TOO LONG
	ENDIF

	END	BEGIN

                                                                                                                                                                                         