🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: mod.mac.sources
1 messages
1 total messages Started by macintosh Sun, 21 Dec 1986 19:46
AppliFont Desk Accessory (source)
#32
Author: macintosh
Date: Sun, 21 Dec 1986 19:46
393 lines
8271 bytes
[AppliFont Desk Accessory (source)]

#!/bin/sh
# shar:	Shell Archiver
#	Run the following text with /bin/sh to create:
#	applifont.asm
sed 's/^X//' << 'SHAR_EOF' > applifont.asm
X; AppliFont Desk Accessory
X; gives the ability to change the default application font
X
X	include	sysequ.d
X	include toolequ.d
X	include mactraps.d
X	
X	portrect	equ	$10	; from quickequ
X	
X	dsubid		equ	1
X
X	mymenu		equ	-11111
X	menuhoff	equ	0
X	name		equ	menuhoff+4
X	fnum		equ	name+256
X	errect		equ	fnum+2
X	rescid		equ	errect+8
X	resctype	equ	rescid+2
X	dialid		equ	resctype+4
X	itemhit		equ	dialid+2
X	gporttemp	equ	itemhit+2
X	
X	storage		equ	gporttemp+4
X	
X	aboutitem	equ	1
X	buttonitem	equ	1
X	
X	
XEntry
X	dc.w	$400		; Allow control
X	dc.w	0		; no periodic
X	dc.w	$0fff		; allow standard events
X	dc.w	mymenu		; Font menu
X	
X	dc.w	open-entry
X	dc.w	done-entry	; no prime routine
X	dc.w	control-entry
X	dc.w	done-entry	; no status
X	dc.w	close-entry
X	
X	string_format	3
XTitle
X	dc.w	'Select Application Font'
X	
X	.align	2
X
Xopen
X	movem.l	a2-a4,-(sp)
X	move.l	a1,a4
X	tst.l	dctlwindow(a4)	; been here yet?
X	bne	gotawindow
X	
X	; get storage
X	; function newhandle(size:d0):a0
X	move.l	#storage,d0
X	_newhandle
X	move.l	a0,dctlstorage(a4)
X	
X	_hlock
X	
X	move.l	dctlstorage(a4),a2
X	move.l	(a2),a2
X	
X	clr.w	rescid(a2)
X	clr.l	resctype(a2)
X	
X	; recover handle to DRVR
X	lea	entry,a0
X	_recoverhandle
X	
X	; get id
X	move.l	a0,-(sp)
X	pea	rescid(a2)
X	pea	resctype(a2)
X	pea	name(a2)
X	_getresinfo
X	
X	; calc
X	move.w	rescid(a2),d0
X	asl.w	#5,d0
X	add.w	#$c000,d0		; mark as owned resource
X	add.w	#dsubid,d0		; add subid of dialog
X	move.w	d0,dialid(a2)
X	
X	move.l	dctlstorage(a4),a0
X	_hunlock
X	
X	; alloc window
X	clr.l	-(sp)		; result
X	clr.l	-(sp)		; alloc storage on heap
X	pea	dabounds
X	pea	title
X	clr.w	-(sp)		; invisible
X	move.w	#rdocproc,-(sp)	; DA window proc
X	move.l	#-1,-(sp)	; front window
X	move.w	#$0100,-(sp)	; has goaway box
X	clr.l	-(sp)		; refcon is 0
X	_newwindow
X	move.l	(sp)+,a0
X	move.l	a0,dctlwindow(a4)
X	
X	move.l	dctlrefnum(a4),windowkind(a0)	; mark as system window
X	
X	; new menu
X	clr.l	-(sp)
X	move.w	#mymenu,-(sp)
X	pea	menutitle
X	_newmenu
X	move.l	(sp)+,a3	; menuhandle
X	move.l	dctlstorage(a4),a0
X	move.l	(a0),a0
X	move.l	a3,menuhoff(a0)
X	
X	move.l	a3,-(sp)
X	pea	menuitems
X	_appendmenu
X
X	;append fonts
X	move.l	a3,-(sp)
X	move.l	#'FONT',-(sp)
X	_addresmenu
X
Xgotawindow
X	movem.l	(sp)+,a2-a4
Xdone
X	clr.w	d0
X	rts
X
Xclose
X	move.l	a4,-(sp)
X	move.l	a1,a4
X	; dispose window
X	move.l	dctlwindow(a4),-(sp)
X	_disposwindow	; [sic]
X	clr.l	dctlwindow(a4)		; mark free
X	; deletemenu
X	move.w	#mymenu,-(sp)
X	_deletemenu
X	_drawmenubar
X	
X	; disposehandles
X	move.l	dctlstorage(a4),a0
X	move.l	(a0),a0
X	move.l	menuhoff(a0),a0
X	_disposhandle
X
X	move.l	dctlstorage(a4),a0
X	_disposhandle
X	
X	move.l	(sp)+,a4
X	bra.s	done
X	
Xcontrol
X	movem.l	a3/a4,-(sp)
X	move.l	a1,a4
X	move.l	a0,a3
X	
X	move.w	cscode(a3),d0	; get cntl code
X	sub.w	#64,d0		; adjust range
X	cmp.w	#0,d0		; event
X	beq.s	doevent
X	cmp.w	#3,d0		; menu
X	beq	domenu
X	
X	; allow only event and menu
X	
Xctldone
X	move.l	a4,a1
X	move.l	a3,a0
X	movem.l	(sp)+,a4/a3
X	bra	done
X
Xdoevent
X	move.l	a3,-(sp)
X	move.l	csparam(a3),a3
X	move.w	evtnum(a3),d0
X	add.w	d0,d0
X	move.w	eventtable(d0),d0
X	jmp	eventtable(d0)
X
Xeventtable
X	dc.w	ctlevtdone-eventtable		; null (x)
X	dc.w	ctlevtdone-eventtable		; mousedown (x)
X	dc.w	ctlevtdone-eventtable		; mouseup (x)
X	dc.w	ctlevtdone-eventtable		; keydown (x)
X	dc.w	ctlevtdone-eventtable		; keyup (x)
X	dc.w	ctlevtdone-eventtable		; autokey (x)
X	dc.w	doupdate-eventtable		; update
X	dc.w	ctlevtdone-eventtable		; disk (x)
X	dc.w	doactivate-eventtable		; activate 
X	dc.w	ctlevtdone-eventtable		; abort (x)
X	dc.w	ctlevtdone-eventtable		; network (x)
X	dc.w	ctlevtdone-eventtable		; iodriver (x)
X
Xctlevtdone
X	move.l	(sp)+,a3
X	bra	ctldone
X
Xdoupdate
X	; beginupdate(wptr)
X	move.l	dctlwindow(a4),-(sp)
X	_beginupdate
X	
X	bsr.s	drawcontents
X	
X	; endupdate(wptr)
X	move.l	dctlwindow(a4),-(sp)
X	_endupdate
X	
X	bra	ctlevtdone
X	
Xdrawcontents
X	move.l	dctlwindow(a4),-(sp)
X	_setport
X	
X	move.l	dctlwindow(a4),a0
X	pea	portrect(a0)
X	_eraserect
X	
X	move.w	#20,-(sp)
X	move.w	#20,-(sp)
X	_moveto
X	
X	pea	'Application Font Changer,  By Jim Hamilton'
X	_drawstring
X	
X	move.w	#20,-(sp)
X	move.w	#40,-(sp)
X	_moveto
X	
X	pea	'Use the AppliFont menu to select the desired font.'
X	_drawstring
X	
X	move.w	#20,-(sp)
X	move.w	#60,-(sp)
X	_moveto
X	
X	pea	'Change effective on next application launch'
X	_drawstring
X	
X	move.l	dctlwindow(a4),-(sp)
X	_setport
X	
X	move.w	#20,-(sp)
X	move.w	#95,-(sp)
X	_moveto
X	
X	pea	'Current Default Application Font:  '
X	_drawstring
X
X; get current ap font from system param area
X	lea	SPFont,a0
X	move.w	(a0),d0
X	addq.w	#1,d0		; stored value is font number minus 1
X	move.w	d0,-(sp)
X	move.l	dctlstorage(a4),a0
X	move.l	(a0),a0
X	pea	name(a0)
X	_getfname
X	
X	move.l	dctlstorage(a4),a0
X	move.l	(a0),a0
X	pea	name(a0)
X	_drawstring
X
X	rts
X
Xdoactivate
X	btst	#0,evtmeta+1(a3)
X	beq.s	dodeactivate
X	
X	; show menu
X	move.l	dctlstorage(a4),a0
X	move.l	(a0),a0
X	move.l	menuhoff(a0),-(sp)
X	clr.w	-(sp)
X	_insertmenu
X	
X	_drawmenubar
X	
X	bra	ctlevtdone
X
Xdodeactivate
X	move.w	#mymenu,-(sp)
X	_deletemenu
X	_drawmenubar
X	
X	bra	ctlevtdone
X
Xdomenu
X	move.l	dctlstorage(a4),a0
X	move.l	(a0),a0
X	move.w	csparam+2(a3),d0	; Menu item number
X	cmp.w	#aboutitem,d0
X	beq.s	doaboutdialog
X	
X	move.l	menuhoff(a0),-(sp)	; menu handle
X	move.w	d0,-(sp)		; Menu item number
X	pea	name(a0)		; space for font name
X	_getitem
X	
X	move.l	dctlstorage(a4),a0
X	move.l	(a0),a0
X	pea	name(a0)
X	pea	fnum(a0)
X	_getfnum
X
X; write new ap font in system param area
X	move.l	a3,-(sp)
X	move.l	dctlstorage(a4),a3
X	move.l	(a3),a3
X	move.w	fnum(a3),d0
X	subq.w	#1,d0		; stored value is font number minus 1
X	lea	SPFont,a1
X	move.w	d0,(a1)		; change font in parameter ram
X	
X	lea	SPValid,a0	; "Inside Macintosh" says to load A0 and D0
X	move.l	#-1,d0		; with these values "for historical reasons"
X	_writeparam
X	
X	move.l	dctlwindow(a4),a3
X	move.l	a3,-(sp)
X	_setport
X	
X	pea	portrect(a3)
X	_invalrect
X	
X	move.l	(sp)+,a3	; restore
X	
X	bra	ctldone
X
Xdoaboutdialog
X
X	move.l	a3,-(sp)
X	move.l	dctlstorage(a4),a3
X	move.l	(a3),a3
X	
X	; save current port
X	pea	gporttemp(a3)
X	_getport
X	
X	; function getnewdialog (dialogid:integer; dstor:ptr;
X	;	behind:windowptr) : dialogptr
X	clr.l	-(sp)
X	move.w	dialid(a3),-(sp)	; identify rsrc # for dialog
X	clr.l	-(sp)			; alloc storage on heap
X	move.l	#-1,-(sp)		; dialog goes on top
X	_getnewdialog
X	move.l	(sp),-(sp)		; copy handle for close
X	
X	; procedure setport (gp:grafport)
X	_setport
X	
Xwaitforok
X	; procedure modaldialog (filterproc: procptr; var itemhit:integer);
X	clr.l	-(sp)
X	pea	itemhit(a3)
X	_modaldialog
X	
X	move.w	itemhit(a3),d0
X	cmp.w	#buttonitem,d0		; was it ok button?
X	bne	waitforok
X	
X	; procedure clodedialog (thedialog: dialogptr);
X	_closedialog			; handle already on stack
X	
X	; reset the grafport
X	; procedure setport( gp: grafport);
X	move.l	gporttemp(a3),-(sp)
X	_setport
X	
X	move.l	(sp)+,a3
X	
X	bra	ctldone
X
X	
XDAbounds	dc.w	100,50,250,450
X
Xmenutitle	dc.w	'AppliFont'
X
Xmenuitems	dc.w	'About AppliFont...;(-'
X
X	End
X	
SHAR_EOF
exit
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads