; **************************************************************************
; *                             Source-Code                                *
; *                                                                        *
; *  Program-Name : SetPrefs V1.0                                          *
; *                                                                        *
; *  Author       : Michael Wilkes                                         *
; *                                                                        *
; *  Use          : Preference-Management                                  *
; *                                                                        *
; *  Date         : 01.03.1992                                             *
; *                                                                        *
; *  Improvements : Technical support by André Willms                      *
; *                                                                        *
; *                                                                        *
; *                                                                        *
; *                                                                        *
; **************************************************************************

execbase		=  4
allocmem		= -198
freemem			= -210
openlibrary		= -408
closelibrary		= -414
setprefs		= -324
open			= -30
close			= -36
read			= -42
write			= -48
output			= -60

preferencelaenge	=  232

start:

	movem.l	d0/a0,-(a7)	; Register retten

	jsr	openlib		; Dos- und Intuitionlibrary öffnen
	jsr	getoutput	; Aktuelles Ausgabefenster holen
	jsr	writeinfo	; Infotext schreiben
	
	movem.l	(a7)+,d0/a0	; Register wiederholen

	subq.l	#1,d0		; CR-Zeichen abziehen
	beq	libend		; Wenn kein Text, dann Ende		
	move.l	d0,d3
	lea.l	prefname,a1
.l1	move.b	(a0)+,(a1)+	; Zeichen lesen und in Puffer schreiben
	subq.l	#1,d0
	bne	.l1
	
	jsr	allocprefmem	; Speicher anfordern
	move.l	dosbase,a6
	move.l	#prefname,d1
	move.l	#1005,d2
	jsr	open(a6)	; Preference öffnen
	move.l	d0,filehd
	bne	.w1
	
	jsr	writenotfound	; Preference nicht gefunden
	bra	memend		; Ende
	
.w1	move.l	filehd,d1
	move.l	prefmemhd,d2
	move.l	#preferencelaenge,d3
	jsr	read(a6)	; Preference lesen
	
	move.l	filehd,d1
	jsr	close(a6)	; Preference schliessen

	jsr	setpref		; Preference aktivieren
	
memend:
	jsr	freeprefmem	; Speicher freigeben
	
libend:
	jsr	closelib	; Dos- und Intuitionlibrary schliessen
	clr.l	d0		; Fehlerflag löschen
	rts			; Programmende
	
getoutput:
	move.l	dosbase,a6
	jsr	output(a6)
	move.l	d0,outputhd
	rts
	
openlib:
	move.l	execbase,a6
	lea.l	dosname,a1
	jsr	openlibrary(a6)
	move.l	d0,dosbase
	lea.l	intname,a1
	jsr	openlibrary(a6)
	move.l	d0,intbase
	rts

closelib:
	move.l	execbase,a6
	move.l	dosbase,a1
	jsr	closelibrary(a6)
	move.l	intbase,a1
	jsr	closelibrary(a6)
	rts

allocprefmem:
	move.l	execbase,a6
	move.l	#preferencelaenge,d0
	move.l	#2+65536,d1
	jsr	allocmem(a6)
	move.l	d0,prefmemhd
	rts
	
freeprefmem:
	move.l	execbase,a6
	move.l	prefmemhd,a1
	move.l	#preferencelaenge,d0
	jsr	freemem(a6)
	rts
	
writeinfo:
	move.l	dosbase,a6
	move.l	outputhd,d1
	move.l	#tx1,d2
	move.l	#tx1l,d3
	jsr	write(a6)
	rts
	
writenotfound:
	move.l	dosbase,a6
	move.l	outputhd,d1
	move.l	#tx2,d2
	move.l	#tx2l,d3
	jsr	write(a6)
	rts

setpref:
	move.l	prefmemhd,a0
	move.l	intbase,a6
	move.l	#preferencelaenge,d0
	move.l	#1,d1
	jsr	setprefs(a6)
	rts

intbase:	dc.l 0

dosbase:	dc.l 0

prefmemhd:	dc.l 0

outputhd:	dc.l 0

filehd:		dc.l 0

intname:	dc.b "intuition.library",0

dosname:	dc.b "dos.library",0

prefname:	dcb.b 80,0

tx1:		dc.b  $a,$9b,"0;33;40",$6d
		dc.b  "SetPrefs V1.0",$9b,"0;31;40",$6d
		dc.b  " (C)01.03.1992 by Michael Wilkes",$a
		dc.b  "Thanx to André Willms for technical support",$a
		dc.b  "USAGE: SetPrefs <prefname>",$a,$a
		
tx2:		dc.b  "Preference not found !",$a,$a

tx3:

tx1l = tx2-tx1

tx2l = tx3-tx2
	
