
; Listing11o1.s		Laden einer Datendatei mit der dos.library

	SECTION DOSLOAD,CODE

;	include	"DaWorkBench.s"		; entferne das; vor dem Speichern mit "wo"

Start:
	movem.l	d0-d7/a0-a6,-(sp)	; speichern der Register auf dem stack
	move.l	4.w,a6				; ExecBase in a6
	lea	DosName(pc),a1			; Dos.library
	jsr	-$198(a6)				; OldOpenlib
	move.l	d0,DosBase
	beq.s	Exit				; Wenn Null, raus! Fehler!

Mouse:
	btst.b	#6,$bfe001			; ciaapra - linke Maustaste
	bne.s	Mouse

	bsr.s	LoadFile			; Laden einer Datei mit der dos.library

	move.l	DosBase(pc),a1		; DosBase in a1 um die Bibliothek zu schließen
	move.l	4.w,a6				; ExecBase in a6
	jsr	-$19e(a6)				; CloseLibrary - dos.library schließen
Exit:
	movem.l	(sp)+,d0-d7/a0-a6	; wiederherstellen der Register vom stack
	rts							; zu ASMONE oder Dos/WorkBench zurückkehren


DosName:
	dc.b	"dos.library",0
	even

DosBase:						; Zeiger auf die Basis der Dos Library
	dc.l	0

*****************************************************************************
; Routine, die eine Datei einer bestimmten Länge mit einem angegeben
; Namen lädt. Sie müssen den gesamten Pfad angeben, falls er existiert!
*****************************************************************************

LoadFile:
	move.l	#FileName,d1		; Adresse mit String "Dateiname + Pfad"
	move.l	#$3ed,d2			; AccessMode: MODE_OLDFILE - Datei, die 
								; schon existiert, damit wir lesen können.
	move.l	DosBase(pc),a6
	jsr	-$1e(a6)				; LVOOpen - "Öffnen" der Datei
	move.l	d0,FileHandle		; Speichern des handle
	beq.s	ErrorOpen			; Wenn d0 = 0 ist, liegt ein Fehler vor!

	move.l	d0,d1				; FileHandle in d1 für das Lesen
	move.l	#Buffer,d2			; Ziel-Adresse in d2
	move.l	#42240,d3			; Dateilänge (GENAU!)
	move.l	DosBase(pc),a6
	jsr	-$2a(a6)				; LVORead - Lesen der Datei und kopieren in den Puffer

	move.l	FileHandle(pc),d1	; FileHandle in d1
	move.l	DosBase(pc),a6
	jsr	-$24(a6)				; LVOClose - schließe die Datei.
ErrorOpen:
	rts


FileHandle:
	dc.l	0

; Textzeichenfolge, endet mit einer 0, auf die d1 vorher zeigen muss
; zum ÖFFNEN der dos.lib. Es ist besser, den gesamten Pfad zu setzen.

FileName:
	dc.b	"/Sources/amiet.raw",0	; Pfad und Dateiname
	even

******************************************************************************
; Puffer, in dem das Image über doslib von der Diskette (oder Festplatte) 
; geladen wird
******************************************************************************

	SECTION	BITPLANE,BSS

Buffer:
Logo:
	ds.b	6*40*176			; 6 Bitplanes * 176 lines * 40 bytes (HAM)

	end


Anmerkung vom Übersetzer:
>a							; vor Ausführung 
>h.b Logo					; - alle Daten sind $00
>m Logo+$890				; - alle Daten sind $00	
	    
>j							; nach Ausführung
>h.b Logo					; - keine Daten eingelesen?	doch, teste: 
>m Logo+$890				; 
Ergebnis: 7C 99 BC 6C ...	; öffne Datei AMIET.raw mit einem Hex-Viewer