Amiga - odczyt struktury plików z dysku

Under construction...

 


	lea	dosname(pc),a1
	moveq	#0,d0 
	move.l	Exec,a6
	jsr	OpenLibrary(a6) 
	move.l	d0,dosbase
	lea	intname(pc),a1
	moveq	#0,d0  
	jsr	OpenLibrary(a6) 
	move.l	d0,intbase
	lea	gfxname(pc),a1
	moveq	#0,d0  
	jsr	OpenLibrary(a6)
	move.l	d0,gfxbase

	lea	NewWindow(PC),a0 
	move.l	intbase(pc),a6 
	jsr	OpenWindow(a6) 
	move.l	d0,window
	beq	Exit

	lea	Font(PC),a0
	move.l	gfxbase(pc),a6 
	jsr	OpenFont(a6)
	move.l	window(pc),a1 
	move.l	$32(a1),a1
	move.l	d0,a0
	jsr	SetFont(a6)

	move.l	gfxbase(pc),a6
	move.l	window(pc),a4
	move.l	$32(a4),a4

	move.l	gfxbase(pc),a6 
	moveq	#1,d0
	move.l	a4,a1
	jsr	SetAPen(a6)

	move.l 	dosbase,a6
	move.l 	#Name,d1
	move.l 	#-2,d2
	jsr	Lock(a6)
	tst.l 	d0
	beq	Error

	move.l 	d0,locks
	move.l 	dosbase,a6
	move.l 	locks,d1
	move.l 	#fileinfo,d2
	jsr	Examine(a6)
	tst.l 	d0
	beq	Error

	moveq	#$32,d0 
	moveq	#$2e,d1 
	move.w	d1,Posit
	move.l	#fileinfo+8,a0
	moveq	#0,d2
	bsr	Lenght
	move.l	a4,a1
	bsr	Print

MainLoop:
	move.l 	dosbase,a6
	move.l 	locks,d1
	move.l 	#fileinfo,d2
	jsr	ExNext(a6)
	tst.l 	d0
	beq	Error

	moveq	#$32,d0 
	move.w	Posit,d1
	add.w	#10,d1
	move.w	d1,Posit
	move.l	#fileinfo+8,a0
	moveq	#0,d2
	bsr	Lenght
	move.l	a4,a1
	bsr	Print

	bra	MainLoop

Error:
	move.l 	dosbase,a6
	jsr	IoErr(a6)

	move.l	window(pc),a0
	move.l	$56(a0),a0
	move.l	Exec,a6
	jsr	WaitPort(a6)

	move.l	window(pc),a0
	move.l	$56(a0),a0
	move.l	Exec,a6
	jsr	GetMsg(a6)

	move.l	d0,a1
	move.l	Exec,a6
	jsr	ReplyMsg(a6)
	
	move.l  window(pc),a0
	move.l	intbase(pc),a6
	jsr	CloseWindow(a6)

Exit:
	moveq	#0,d0
	rts


Print:
	movem.l	d2/a0,-(sp)
	move.l	gfxbase(pc),a6
	move.l	a4,a1
	jsr	Move(a6)
	movem.l	(sp)+,d0/a0
	move.l	a4,a1
	jsr	Text(a6)
	rts
	
Lenght:
	movem.l d1/a0,-(sp)
count:
	move.b	(a0)+,d1
	add.w	#1,d2
	tst.b	d1
	bne	count
	
	movem.l (sp)+,d1/a0
	sub.w	#1,d2
	rts

window:		
	dc.l 0 
dosbase: 	
	dc.l 0 
gfxbase: 	
	dc.l 0 
intbase:	
	dc.l 0

NewWindow:
	dc.w 0
	dc.w 0 
	dc.w $1A1
	dc.w $250
	dc.w 1 
	dc.w 0 
	dc.w $200
	dc.w 0 
	dc.w $100E
	dc.l 0
	dc.l 0 
	dc.l Title
	dc.l 0 
	dc.l 0 
	dc.w 0 
	dc.w 0 
	dc.w 0 
	dc.w 0 
	dc.w 1


Name:	dc.b 'DH0:',0

Title:	dc.b 'DirList (Directory Lister) V1.0A',0

Posit:	dc.w 0

Font:	dc.l Topaz
	dc.l $80001
Topaz:	dc.b 'topaz.font',0

dosname: dc.b 'dos.library',0
gfxname: dc.b 'graphics.library',0
intname: dc.b 'intuition.library',0




	Section DirList,data_c

locks:		dcb.l 1,0
fileinfo:	dcb.l 260,0