	opt	l-		;nicht linken!

* DIR_2 Directory mittels DOS-Funktionen anzeigen

_LVOLock	equ	-84
_LVOExamine	equ	-102
_LVOExNext	equ	-108
_LVOIoErr	equ	-132
ERROR_NO_MORE_ENTRIES	equ	232

	include	OpenDos.i		;siehe Kapitel 4

	jsr	_LVOOutput(a6)		;Output-Handle holen
	move.l	d0,d4			;und merken

	move.l	#pfad,d1		;Adresse Pfadname
	move.l	#-2,d2			;Zugriff Lesen
	jsr	_LVOLock(a6)		;Lock zum Dir holen
	tst.l	d0			;gibt es Dir?
	beq	fertig			;wenn nicht
	move.l	d0,d5			;sonst Lock merken

	move.l	d5,d1			;Lock
	move.l	#fib,d2			;Adresse FIB
	jsr	_LVOExamine(a6)		;1. Namen (hier Disk) holen
	tst.l	d0			;Gefunden?
	beq	fertig			;wenn nicht
	bsr	print			;sonst ausgeben

loop	move.l	d5,d1			;Lock
	move.l	#fib,d2			;FIB
	jsr	_LVOExNext(a6)		;Naechsten File suchen
	tst.l	d0			;gefunden?
	beq	fertig			;wenn nicht
	bsr	print			;sonst ausgeben
	bra	loop			;bis nichts mehr
	

fertig	jsr	_LVOIoErr(a6)		;Error-Code holen
	cmpi.l	#ERROR_NO_MORE_ENTRIES,d0     ;dieser Fehler?
	beq	f1			;wenn so

	move.l	d4,d1			;Output-Handle
	move.l	#err,d2			;Text
	move.l	#err_len,d3		;d3
	jsr	_LVOWrite(a6)		;Ausgabe

f1	move.l	a6,a1			;DOS-Lib schliessen
	move.l	_SysBase,a6
	jsr	_LVOCloseLibrary(a6)	
fini	rts

print	lea	fib+8,a0		;Name
        lea     buffer,a1		;in Puffer kopieren
	moveq   #1,d3			;Laengenzaehler
p1	addq.l	#1,d3			;inkrementieren
	move.b	(a0)+,(a1)+		;Null-Byte kopiert?
        bne	p1			;wenn nicht
	move.b	#10,(a1)		;LF hinzu
	move.l	d4,d1			;Output-Handle
	move.l	#buffer,d2  		;Adresse Name
	jsr	_LVOWrite(a6)		;Name ausgeben
	rts
	
* Datenbereich

dosname	dc.b	'dos.library',0
	cnop	0,2
buffer  ds.b    108
pfad	dc.b	'df0:',0
	cnop	0,2
fib	ds.b	$104			;siehe Anhang A4.2
err	dc.b	10,'Es ging was schief',10
err_len	equ	*-err	
