;Eks. 1
;
;	Dette program virker som DOS-kommandoen FILENOTE,	
;	der gør det muligt at skrive en kommentar til
;	filer og directories.
;	Det illustrerer hvordan man overfører argumenter
;	til sine programmer og hvordan man skriver til CLI'en
;	For dem der vil eksperimentere lidt videre er der også
;	en subrutine til at læse fra cli'en. Dette rækker selv-
;	følgelig ikke i længden, så køb (eller lån) en bog hvor
;	man kan læse om library rutinerne!
;	Library rutinen der bruges til at knytte kommentaren til
;	filen hedder: "SetComment" og den skal have en pointer
;	på filnavnet i D1 og en pointer på kommentaren i D2.
;	
execbase=4
OldOpenLibrary=-408
CloseLibrary=-414
Open=-30
Close=-36
Output=-60
Setcomment=-180
Write=-48
IoErr=-132
;	A0 indeholder en pointer til argumentet
;	D0 indeholder antallet af tegn (incl. [Return])

main:
	bsr	Getarg		;Find argumenter
	bsr	OpenLib		;Open library
	tst.l	d0		;Fejl?
	beq	Liberror	;Ja!
	bsr	Gethandle	;Find window handle
	tst.l	d0		;Fejl?
	beq	error		;Ja!
	tst.b	OK		;To argumenter?
	beq	WrongArg	;Nej
	cmp.b	#1,err		;Intet argument?
	beq	WrongArg	;Slet intet..!
	bsr	SetCom		;Fino! knyt kommentar til fil
	tst.l	d0		;Fejl?
	beq	error		;Ja
	Clr.l	d0		;Ingen fejlkode
quit:
	bsr	CloseLib	;Luk library
	rts			;Hop tilbage til dos
Liberror:
	move.l	#122,d0		;Library called is invalid
	rts
error:	
	move.l	dosbase,a6
	jsr	IoErr(a6)	;Find fejlkode og
	bra	quit		;retuner

WrongArg:
	move.l	dosbase,a6
	move.l	Handle,d1
	move.l	#Tekst,d2
	move.l	#Tekstend-Tekst,d3
	jsr	Write(a6)
	bra	quit
Getarg:
	subq	#1,d0		;Kompenser for return
	bne	j1
	move.b	#1,err
	rts
j1:	move.l	#Namebuffer,a1	;Namebuffer pointer i a1
Skipspace:
	move.b	(a0)+,d1	;Tegn til d1 og a0=a0+1
	cmp.b	#" ",d1		;Mellemrum ?
	bne	Found2		;Nej..Hop til Found2
	dbra	d0,Skipspace	;Ja..d0=d0-1 og hop til Skipspace
	move.b	#1,err		;Intet argument, set error flag
	rts			;og hop tilbage

Found:				;Kopier argument til buffer
	move.b	(a0)+,d1	;Hent næste tegn og a0=a0+1
Found2:
	cmp.b	#",",d1		;Er tegnet et komma?
	bne	ikomma		;Nej
	move.l	#Commentbuffer,a1	;Ja..Skriv til com.buffer
	move.b	#1,OK		;Husk at der var to argumenter
	bra	komma		;og spring kommaet over
ikomma:	move.b	d1,(a1)+	;Flyt tegn til buffer og a1=a1+1
komma:	dbra	d0,Found	;d0=d0-1 hvis positiv hop til Found
	rts			;D0 negativ, ikke flere tegn.

Gethandle:
	move.l	dosbase,a6
	jsr	Output(a6)
	move.l	d0,Handle
	rts

SetCom:
	move.l	dosbase,a6		;Dosbaseadresse i a6
	move.l	#Namebuffer,d1		;Pointer på navnet i d1
	move.l	#Commentbuffer,d2	;Pointer på komentar i d2
	jsr	Setcomment(a6)		;Hop til lib. rutine
	rts	

OpenLib:
	move.l	execbase,a6	  	;Execbasisadresse i A6
	move.l	#dosnavn,a1   		;pointer på biblioteksnavn
	moveq	#0,d0        		;versionnummer
	jsr	OldOpenLibrary(a6)	;Kald funktionen
	move.l	d0,dosbase		;gem Dosbasisadr.
	rts

CloseLib:
	move.l	execbase,a6		;Execbasisadr. i a6
	move.l	dosbase,a1		;Dosbasisadr. i a1
	jsr	CloseLibrary(a6)	;Bibliotek lukkes
	rts

dosnavn:	dc.b	'dos.library',0	;navn paa bibliotek
Tekst:		dc.b	'SetComment [filename],[comment]',$d,$a,0
Tekstend:
	even
dosbase:	dc.l	0		;plads til DOS-basis adr.
Handle:		dc.l	0		;Window handle
err:		dc.b	0		;Error Flag
Namebuffer:	ds.b	256		;Buffer til Navn
Commentbuffer:	ds.b	256		;Buffer til kommentar
OK:		dc.b	0		;Sættes hvis der er komma
Info:		ds.b	512		;Plads til info strukturen
