[comp.sources.atari.st] v02i065: viruskil -- Virus killer

koreth%panarthea.ebay@sun.com (Steven Grimm) (07/24/89)

Submitted-by: usqb015@liverpool.ac.uk (Mark Powell)
Posting-number: Volume 2, Issue 65
Archive-name: viruskil

[Documentation is in the binaries posting. -sg]

* Virus killer
* Copyright 1989 by M.S.Powell (usqb015@uk.ac.liv)
* Permission granted to exmaine and modify this source for; personal use,
* no profit and as long as this header is left intact.
* Written on Devpac v1.22 by Hisoft

numrect	equ	6

	move.l	4(sp),a5
	move.l	#end+32000+4096,d0
	move.l	a5,d1
	add.l	d0,d1
	bclr	#0,d1
	move.l	d1,sp
	move.l	d0,-(sp)
	move.l	a5,-(sp)
	pea	$4a0000
	trap	#1
	lea	12(sp),sp
	tst	d0
	beq.s	okay

	pea	nomem(pc)
	move	#9,-(sp)
	trap	#1
	addq.l	#6,sp
	pea	$20002
	trap	#13
	addq.l	#4,sp
	bra	exit

okay	clr.l	-(sp)
	move	#32,-(sp)
	trap	#1
	addq.l	#6,sp
	move.l	d0,oldssp

	dc.w	$a00a

	move.l	#end,d0
	add.l	#255,d0
	clr.b	d0
	move.l	d0,screen

	move	#$19,-(sp)
	trap	#1
	addq.l	#2,sp
	cmp	#2,d0
	blt.s	drokay
	clr	d0
drokay	move	d0,drive

	move	#2,-(sp)
	trap	#14
	addq.l	#2,sp
	move.l	d0,physcrn
	move	#3,-(sp)
	trap	#14
	addq.l	#2,sp
	move.l	d0,logscrn

	movem.l	$8240.w,d0-d7
	movem.l	d0-d7,oldpal

	move	#4,-(sp)
	trap	#14
	addq.l	#2,sp
	move	d0,oldres
	cmp	#2,d0
	beq.s	hires
	clr	d0
hires	move	d0,res
	move	d0,-(sp)
	move.l	screen(pc),-(sp)
	move.l	(sp),-(sp)
	move	#5,-(sp)
	trap	#14
	lea	12(sp),sp

	lea	scrdata(pc),a0
	move.l	screen(pc),a1
	lea	8*160(a1),a1
	move	#2560/4-1,d0
movelp	move.l	(a0)+,(a1)+
	dbra	d0,movelp

	move	#$2700,sr
	move.l	$fa06.w,oldier
	clr.b	$fa07.w
	move.b	#$40,$fa09.w
	bclr	#0,$fa0b.w
	bclr	#6,$fa0d.w
	bclr	#0,$fa0f.w
	bclr	#6,$fa11.w
	bset	#0,$fa13.w
	bset	#6,$fa15.w
	move.l	$118.w,oldkeyb
	move.l	#keybrd,$118.w
	move.l	$120.w,oldtimb
	move.l	#timerb,$120.w
	clr.b	$fa1b.w
	move.b	#1,$fa21.w
	move.b	#8,$fa1b.w
	move.l	$456.w,a0
	move.l	(a0),oldvblq
	move.l	#vbl,(a0)
	move.l	#palette,$45a.w
	move	#1,$36.w
	move	#1,$38.w
	move	#$2300,sr
	
	lea	keydat(pc),a0
	moveq	#13-1,d0
	bsr	sendikbd

	bsr	wvbl
	lea	icondat(pc),a0
	move.l	screen(pc),a6
	lea	64+32*160(a6),a1
	bsr	drawicon
	lea	16+64*160(a6),a1
	bsr	drawicon
	lea	112+64*160(a6),a1
	bsr	drawicon
	lea	16+120*160(a6),a1
	bsr	drawicon
	lea	112+120*160(a6),a1
	bsr	drawicon

	lea	drivedata(pc),a0
	lea	48+40*160(a6),a1
	tst	drive
	bne.s	nota
	lea	96(a0),a0
nota	bsr	drawdrivenum
	lea	drivedata+96*2(pc),a0
	lea	104+40*160(a6),a1
	tst	drive
	beq.s	notb
	lea	96(a0),a0
notb	bsr	drawdrivenum

	bsr	mouseon
	move.l	a6,a5
	lea	mainmess(pc),a0
	bsr	printbl

* Main loop

main	bsr	wvbl

	tst	leftbutton
	beq.s	main

	lea	recflag(pc),a0
	lea	routlst(pc),a1
	moveq	#numrect-1,d0
chkrect	tst.b	(a0)+
	bne.s	inone
	addq.l	#4,a1
	dbra	d0,chkrect
	bra.s	main

inone	move.l	(a1),a1
	lea	buffer(pc),a6
	move.l	screen(pc),a5
	jsr	(a1)
	move.l	#mousedata,mousedatapnt
waitnb	tst	leftbutton
	bne.s	waitnb
	bra.s	main


drivea	clr	drive
	lea	drivedata+96(pc),a0
	lea	48+40*160(a5),a1
	bsr	mouseoff
	bsr	drawdrivenum
	lea	drivedata+96*2(pc),a0
	lea	104+40*160(a5),a1
	bsr	drawdrivenum
	bra	mouseon

driveb	cmp	#1,$4a6.w
	beq.s	dbout
	move	#1,drive
	lea	drivedata(pc),a0
	lea	48+40*160(a5),a1
	bsr	mouseoff
	bsr	drawdrivenum
	lea	drivedata+96*3(pc),a0
	lea	104+40*160(a5),a1
	bsr	drawdrivenum
	bra	mouseon
dbout	rts

examine	move.l	#busydata,mousedatapnt
	bsr	clrbl
	bsr	read

	lea	$1e(a6),a0
	lea	antivirus(pc),a1
	move	#endanti-antivirus-1,d0
chkavlp	move.b	(a0)+,d1
	cmp.b	(a1)+,d1
	bne.s	notant
	dbra	d0,chkavlp

	lea	antin(pc),a0
	bra	printbl
	
notant	move.l	a6,a0
	moveq	#0,d0
	move	#256-1,d1
chklp	add	(a0)+,d0
	dbra	d1,chklp
	cmp	#$1234,d0
	bne.s	notexec

	lea	exec(pc),a0
	bra	printbl

notexec	lea	noexec(pc),a0
	bra	printbl

install	move.l	#busydata,mousedatapnt
	bsr	clrbl
	bsr	read
	bsr	clrboot
	lea	antivirus(pc),a0
	lea	$1e(a6),a1
	move	#endanti-antivirus-1,d0
movealp	move.b	(a0)+,(a1)+
	dbra	d0,movealp
	move	#$601c,(a6)
	bsr	chksum
	move	d1,(a0)
	bsr	write
	lea	insmess(pc),a0
	bra	printbl

remove	move.l	#busydata,mousedatapnt
	bsr	clrbl
	bsr	read
	bsr	clrboot
	bsr	chksum
	subq	#1,d1
	move	d1,(a0)
	bsr	write
	lea	remmess(pc),a0
	bra	printbl


* Various routines

sendikbd
keylp	btst	#1,$fc00.w
	beq.s	keylp
	move.b	(a0)+,$fc02.w
	dbra	d0,keylp
	rts

clrboot	lea	$1e(a6),a0
	move	#482/2-1,d0
clrbslp	clr	(a0)+
	dbra	d0,clrbslp
	rts

chksum	lea	(a6),a0
	moveq	#0,d1
	move	#255-1,d0
chksmlp	add	(a0)+,d1
	dbra	d0,chksmlp
	sub	#$1234,d1
	neg	d1
	rts

read	pea	1.w
	pea	$10000
	move	drive(pc),-(sp)
	subq.l	#4,sp
	pea	(a6)
	move	#8,-(sp)
	trap	#14
	lea	20(sp),sp
	tst	d0
	bmi	error
	rts

write	pea	1.w
	pea	$10000
	move	drive(pc),-(sp)
	subq.l	#4,sp
	pea	(a6)
	move	#9,-(sp)
	trap	#14
	lea	20(sp),sp
	tst	d0
	bmi	error
	rts

printbl	bsr	mouseoff
	lea	1+188*160(a5),a1
	lea	152+188*160(a5),a5
	moveq	#0,d1
	move.b	(a0)+,d1
	subq	#1,d1
prspace	moveq	#32,d0
	bsr	print
	dbra	d1,prspace
prnxtc	move.b	(a0)+,d0
	beq.s	prout
	bsr	print
	bra.s	prnxtc
prout	cmp.l	a1,a5
	beq.s	prex
	move.l	a1,a4
	moveq	#8-1,d0
clrchlp	clr.b	(a4)
	clr.b	2(a4)
	lea	160(a4),a4
	dbra	d0,clrchlp
	move.l	a1,d0
	addq.l	#7,d0
	and	#$fff9,d0
	move.l	d0,a1
	bra.s	prout
prex	bra	mouseon
	
print	ext	d0
	cmp	#'A',d0
	blt.s	punct
	cmp	#'Z',d0
	bgt.s	lowerc
	sub	#64,d0
	bra.s	prit
punct	cmp	#',',d0
	bne.s	notcom
	moveq	#53,d0
	bra.s	prit
notcom	cmp	#'.',d0
	bne.s	notfs
	moveq	#54,d0
	bra.s	prit
notfs	cmp	#'!',d0
	bne.s	notex
	moveq	#55,d0
	bra.s	prit
notex	cmp	#'0',d0
	blt.s	notnum
	cmp	#'9',d0
	bgt.s	notnum
	addq	#8,d0
	bra.s	prit
notnum	moveq	#0,d0
	bra.s	prit
lowerc	cmp	#127,d0
	bne.s	notcpyr
	moveq	#66,d0
	bra.s	prit
notcpyr	sub	#70,d0
prit	add	d0,d0
	add	d0,d0
	add	d0,d0
	lea	chrset(pc),a3
	lea	0(a3,d0),a3
	move.l	a1,a4
	moveq	#8-1,d0
prntlp	move.b	(a3),(a4)
	move.b	(a3)+,2(a4)
	lea	160(a4),a4
	dbra	d0,prntlp
	move.l	a1,d0
	addq.l	#7,d0
	and	#$fff9,d0
	move.l	d0,a1
	rts

clrbl	bsr	mouseoff
	lea	8+188*160(a5),a0
	moveq	#0,d1
	moveq	#18-1,d0
clrbtlp	move.l	d1,(a0)
	move.l	d1,160(a0)
	move.l	d1,320(a0)
	move.l	d1,480(a0)
	move.l	d1,640(a0)
	move.l	d1,800(a0)
	move.l	d1,960(a0)
	move.l	d1,1120(a0)
	addq.l	#8,a0
	dbra	d0,clrbtlp
	bra	mouseon

error	neg	d0
	lea	errors(pc),a0
	move.b	0(a0,d0),d0
	lea	0(a0,d0),a0
	bra	printbl

wvbl	move.l	$466.w,d0
waitlp	cmp.l	$466.w,d0
	beq.s	waitlp
	rts

mouseon	movem.l	d0-d7/a0-a2,-(sp)
	bsr	drawm
	movem.l	(sp)+,d0-d7/a0-a2
	move	#1,mouse
	rts

mouseoff
	clr	mouse
	movem.l	d0-d7/a0-a2,-(sp)
	bsr	undraw
	movem.l	(sp)+,d0-d7/a0-a2
	rts

drawdrivenum
	moveq	#16-1,d0
drawdnlp
	move.l	a1,a2
	move.l	(a0)+,(a2)+
	move	(a0)+,(a2)+
	lea	160(a1),a1
	dbra	d0,drawdnlp
	rts

drawicon
	moveq	#32-1,d0
drawilp	move.l	a1,a2
	move.l	(a0)+,(a2)+
	move	(a0)+,(a2)+
	addq.l	#2,a2
	move.l	(a0)+,(a2)+
	move	(a0)+,(a2)+
	addq.l	#2,a2
	move.l	(a0)+,(a2)+
	move	(a0)+,(a2)+
	addq.l	#2,a2
	move.l	(a0)+,(a2)+
	move	(a0)+,(a2)+
	lea	160(a1),a1
	dbra	d0,drawilp
	rts	

* Vertical blank handler

vbl	clr	$30.w
	subq	#1,$38.w
	bne.s	notnewc
	move	#3,$38.w
	add	#$90,$36.w
	and	#$771,$36.w
notnewc	move	$36.w,$32.w
	move	$38.w,$34.w
	move.b	#1,$fa07.w

	tst	mouse
	beq.s	nomouse

	bsr	undraw
	bsr	drawm

	lea	rectdat(pc),a0
	lea	recflag(pc),a1
	move	mousex(pc),d1
	move	mousey(pc),d2
	moveq	#8-1,d0
rectlp	cmp	(a0),d1
	blt.s	notin
	cmp	2(a0),d2
	blt.s	notin
	cmp	4(a0),d1
	bge.s	notin
	cmp	6(a0),d2
	bge.s	notin
	move.b	#1,(a1)+
	bra.s	nxtrect
notin	clr.b	(a1)+
nxtrect	addq.l	#8,a0
	dbra	d0,rectlp

nomouse	rts

timerb	cmp	#31,$30.w
	beq.s	endtimb
	move	d0,-(sp)
	move.l	a0,-(sp)
	lea	$8248.w,a0
	move	$32.w,d0
	move	d0,(a0)+
	addq	#1,d0
	move	d0,(a0)+
	addq	#1,d0
	move	d0,(a0)+
	addq	#1,d0
	move	d0,(a0)+
	addq	#1,d0
	move	d0,(a0)+
	addq	#1,d0
	move	d0,(a0)+
	addq	#1,d0
	move	d0,(a0)+
	subq	#1,d0
	move	d0,(a0)+
	subq	#1,d0
	move	d0,(a0)+
	subq	#1,d0
	move	d0,(a0)+
	subq	#1,d0
	move	d0,(a0)+
	subq	#1,d0
	move	d0,(a0)+
	subq	#1,d0
	move	d0,$8248.w
	move.l	(sp)+,a0
	move	(sp)+,d0
	subq	#1,$34.w
	bne.s	noc
	move	#3,$34.w
	add	#$90,$32.w
	and	#$771,$32.w
noc	addq	#1,$30.w
	clr.b	$fa0f.w
	rte
endtimb	btst	#1,$fc00.w
	beq.s	notempt
	move.b	#$d,$fc02.w
notempt	movem.l	d0-d7,-(sp)
	movem.l	palette(pc),d0-d7
	movem.l	d0-d7,$8240.w
	movem.l	(sp)+,d0-d7
	clr.b	$fa07.w
	clr.b	$fa0f.w
	rte	
	
drawm	moveq	#0,d0
	move	mousey(pc),d0
	move	d0,d1
	add	d0,d0
	add	d0,d0
	add	d1,d0
	lsl	#5,d0
	move	mousex(pc),d1
	move	d1,d2
	lsr	#1,d1
	and	#$fff8,d1
	add	d1,d0
	move.l	screen(pc),a0
	add.l	d0,a0
	and	#$f,d2
	lea	trash(pc),a1
	move.l	mousedatapnt(pc),a2
	move.l	a0,(a1)+
	move	#200,d3
	sub	mousey(pc),d3
	cmp	#16,d3
	ble.s	fulsize
	moveq	#16,d3
fulsize	subq	#1,d3
	move	d3,(a1)+
	cmp	#152,d1
	beq.s	rightedge
drawlp	movem.l	(a0),d4-d7
	movem.l	d4-d7,(a1)
	lea	16(a1),a1
	moveq	#0,d0
	move	(a2)+,d0
	not	d0
	swap	d0
	lsr.l	d2,d0
	not.l	d0
	move.l	a0,a4
	swap	d0
	and	d0,(a4)+
	and	d0,(a4)+
	and	d0,(a4)+
	and	d0,(a4)+
	swap	d0
	and	d0,(a4)+
	and	d0,(a4)+
	and	d0,(a4)+
	and	d0,(a4)+
	moveq	#0,d0
	move	(a2)+,d0
	swap	d0
	lsr.l	d2,d0
	or	d0,8(a0)
	swap	d0
	or	d0,(a0)
	moveq	#0,d0
	move	(a2)+,d0
	swap	d0
	lsr.l	d2,d0
	or	d0,10(a0)
	swap	d0
	or	d0,2(a0)
	lea	160(a0),a0
	dbra	d3,drawlp
	rts
rightedge
	movem.l	(a0),d4-d7
	movem.l	d4-d7,(a1)
	lea	16(a1),a1
	move	(a2)+,d0
	not	d0
	lsr	d2,d0
	not	d0
	move.l	a0,a4
	and	d0,(a4)+
	and	d0,(a4)+
	and	d0,(a4)+
	and	d0,(a4)+
	move	(a2)+,d0
	lsr	d2,d0
	or	d0,(a0)
	move	(a2)+,d0
	lsr	d2,d0
	or	d0,2(a0)
	lea	160(a0),a0
	dbra	d3,rightedge
	rts

undraw	lea	trash(pc),a0
	move.l	(a0)+,a1
	move	(a0)+,d4
undrlp	movem.l	(a0)+,d0-d3
	movem.l	d0-d3,(a1)
	lea	160(a1),a1
	dbra	d4,undrlp
	rts


* Keyboard handler
	
keybrd	movem.l	d0-d1/a0,-(sp)

again	move.b	$fc00.w,d1
	btst	#7,d1
	beq	keyout
	btst	#0,d1
	beq	keyo

	moveq	#0,d0
	move.b	$fc02.w,d0
	tst	length
	beq.s	nopack

	move.l	bufpnt(pc),a0
	move.b	d0,(a0)+
	move.l	a0,bufpnt
	subq	#1,length
	bne	keyo

	lea	keybuf(pc),a0
	cmp.b	#$f7,(a0)+
	bne.s	keyo

	addq.l	#1,a0
	move	(a0)+,mousex
	move	(a0)+,mousey
	bra.s	keyo

nopack	cmp	#$f6,d0
	blt.s	akey

	lea	keybuf(pc),a0
	move.b	d0,(a0)+
	move.l	a0,bufpnt
	sub	#$f6,d0
	move.b	lengths(pc,d0),d0
	move	d0,length
	bra.s	keyo

lengths	dc.b	7,5,2,2,2,2,6,2,1,1

akey	move	d0,keys
	cmp	#$74,d0
	bne.s	notlon
	move	#1,leftbutton
	bra.s	keyo
notlon	cmp	#$f4,d0
	bne.s	keyo
	clr	leftbutton

keyo	btst	#5,d1
	beq.s	keyout

	move.b	$fc02.w,d0

keyout	btst	#4,$fa01.w
	beq	again

	movem.l	(sp)+,d0-d1/a0
	bclr	#6,$fa11.w
	rte

* Return to desktop

desktop	move	#$2700,sr
	move.l	oldier(pc),$fa06.w
	move.l	oldkeyb(pc),$118.w
	move.l	$456.w,a0
	move.l	oldvblq(pc),(a0)
	move	#$2300,sr

	lea	keydat1(pc),a0
	moveq	#3-1,d0
	bsr	sendikbd

	movem.l	oldpal(pc),d0-d7
	movem.l	d0-d7,$8240.w

	move	oldres(pc),-(sp)
	move.l	physcrn(pc),-(sp)
	move.l	logscrn(pc),-(sp)
	move	#5,-(sp)
	trap	#14
	lea	12(sp),sp
	move.l	oldssp(pc),-(sp)
	move	#32,-(sp)
	trap	#1
	addq.l	#6,sp
exit	clr	-(sp)
	trap	#1

* The anti-virus!

antivirus
	move.l	#$5000777,$8240.w

	move	#4,-(sp)
	trap	#14
	addq.l	#2,sp
	move	d0,d7
	beq.s	lores

	lea	starti(pc),a0
	lea	$140.w,a1
	move.l	a1,a2
	move	#endi-starti-1,d0
moveilp	move.b	(a0)+,(a1)+
	dbra	d0,moveilp
	move.l	$456.w,a0
	move.l	a2,28(a0)

lores	move.l	$44e.w,a0
	lea	92*160+2*8(a0),a0
	tst	d7
	beq.s	nhires
	subq.l	#8,a0
nhires	lea	mess(pc),a1
	lea	chars-8(pc),a2
prvflp	moveq	#0,d0
	move.b	(a1)+,d0
	beq.s	donevf
	add	d0,d0
	add	d0,d0
	add	d0,d0
	lea	0(a2,d0),a3
	move.l	a0,a4
	moveq	#8-1,d0
linelp	move.b	(a3)+,d1
	moveq	#8-1,d2
expndlp	lsl.b	#1,d1
	move	sr,d4
	tst	d7
	bne.s	hires0
	roxl	#1,d3
	move	d4,sr
	roxl	#1,d3
	bra.s	nxtshft
hires0	roxl.l	#1,d3
	move	d4,sr
	roxl.l	#1,d3
	move	d4,sr
	roxl.l	#1,d3
	move	d4,sr
	roxl.l	#1,d3
nxtshft	dbra	d2,expndlp
	tst	d7
	bne.s	hires1
	move	d3,(a4)
	move	d3,160(a4)
	bra.s	addisp
hires1	move.l	d3,(a4)
	move.l	d3,80(a4)
	move.l	d3,160(a4)
	move.l	d3,240(a4)
addisp	lea	320(a4),a4
	dbra	d0,linelp
	tst	d7
	bne.s	hires2
	addq.l	#8,a0
	bra.s	prvflp
hires2	addq.l	#4,a0
	bra.s	prvflp

donevf	rts

starti	move.l	$44e.w,a0
	tst.l	32000-4(a0)
	beq.s	stilclr
	move	#1,$8240.w
	move.l	$456.w,a0
	clr.l	28(a0)
stilclr	rts
endi

mess	dc.b	1,2,3,4,5,10,6,3,7,7,10,8,2,5,9,0

chars	dc.b	195,102,102,102,102,102,60,24
	dc.b	48,0,24,12,12,12,12,0
	dc.b	0,192,124,118,96,96,96,0
	dc.b	0,0,230,102,102,110,59,0
	dc.b	0,0,62,96,60,134,124,0
	dc.b	14,24,24,24,62,24,24,0
	dc.b	0,0,60,102,126,96,62,0
	dc.b	12,6,6,62,102,102,58,0
	dc.b	0,192,102,108,120,108,230,0
	dc.b	0,0,0,0,0,0,0,0
endanti

* Various data


name	dc.b	'virus.pic',0

nomem	dc.b	27,'EOut of memory',13,10,13,10
	dc.b	'Press any key',0

exec	dc.b	6,'Executable, possible virus!',0
noexec	dc.b	6,'Boot sector not executable',0
antin	dc.b	5,'Disk has anti-virus installed',0

insmess	dc.b	9,'Anti virus installed',0
remmess	dc.b	4,'Executable boot sector removed',0

mainmess
	dc.b	10,127,' 1988 M.S.Powell',0

e
errors	dc.b	e0-e,e0-e,e0-e,e0-e,e1-e,e0-e,e0-e,e0-e,e2-e,e0-e,e3-e
	dc.b	e4-e,e0-e,e5-e,e0-e,e0-e,e0-e,e0-e
e0	dc.b	12,'General error',0
e1	dc.b	14,'CRC error',0
e2	dc.b	11,'Sector not found',0
e3	dc.b	13,'Write error',0
e4	dc.b	14,'Read error',0
e5	dc.b	9,'Disk write protected',0	

	even

mousedatapnt
	dc.l	mousedata
mousedata
	dc.w	$7F,$FF80,0,$7F,$FF80,$7F00,$FF,$FF00
	dc.w	$7E00,$1FF,$FE00,$7C00,$3FF,$FC00,$7800,$1FF
	dc.w	$FE00,$7400,$8FF,$F700,$6200,$1C7F,$E380,$4100
	dc.w	$3E3F,$C1C0,$80,$FF1F,$E0,$40,$FF8F,$70
	dc.w	$20,$FFC7,$38,$10,$FFE3,$1C,8,$FFF1
	dc.w	14,4,$FFFB,4,0,$FFFF,0,0
busydata
	dc.w	$8003,$7FFC,$3FE0,1,$FE3E,$3FE0,0,$FE3F
	dc.w	$3FE0,0,$FE3F,$3FE0,0,$FE3F,$3FE0,0
	dc.w	$FFFF,$3FE0,0,$FFFF,0,0,$FFFF,0
	dc.w	0,$FFFF,0,0,$FFFF,0,0,$FFFF
	dc.w	0,0,$FFFF,0,0,$FFFF,0,0
	dc.w	$FFFF,0,0,$FFFF,0,$8001,$7FFE,0

mouse	dc.w	0
keys	dc.w	0
leftbutton	dc.w	0
mousex	dc.w	0
mousey	dc.w	0
length	dc.w	0
bufpnt	dc.l	0
keybuf	ds.b	8
keydat	dc.b	7,4,$e,0,0,0,0,0,9,1,$3f,0,$c7
keydat1	dc.b	7,0,8

chrset	dc.b	0,0,0,0,0,0,0,0
	dc.b	0,24,60,102,102,126,102,0
	dc.b	0,252,102,124,102,102,252,0
	dc.b	0,62,102,96,96,102,60,0
	dc.b	0,252,102,102,102,102,252,0
	dc.b	0,254,98,120,96,98,254,0
	dc.b	0,254,98,120,96,96,240,0
	dc.b	0,124,196,192,222,204,124,0
	dc.b	0,102,102,126,102,102,102,0
	dc.b	0,255,153,24,24,153,255,0
	dc.b	0,30,12,12,12,204,120,0
	dc.b	0,247,108,120,120,108,246,3
	dc.b	0,240,96,96,96,98,254,0
	dc.b	0,198,238,254,214,198,198,0
	dc.b	0,231,118,126,110,102,231,0
	dc.b	0,60,102,102,102,102,60,0
	dc.b	0,252,102,102,124,96,240,0
	dc.b	0,60,102,102,102,108,54,1
	dc.b	0,252,102,102,124,108,246,3
	dc.b	0,62,96,60,6,6,124,0
	dc.b	0,255,153,24,24,24,60,0
	dc.b	0,102,102,102,102,102,60,0
	dc.b	0,102,102,102,60,60,24,0
	dc.b	0,198,198,214,254,238,198,0
	dc.b	0,231,102,60,60,102,231,0
	dc.b	0,231,98,52,24,24,60,0
	dc.b	0,254,140,24,48,98,254,0
	dc.b	0,0,120,204,204,204,118,0
	dc.b	224,96,124,102,102,102,252,0
	dc.b	0,0,62,102,96,102,60,0
	dc.b	14,12,124,204,204,204,118,0
	dc.b	0,0,60,102,126,96,62,0
	dc.b	28,48,48,48,124,48,48,48
	dc.b	0,6,60,102,102,62,96,126
	dc.b	224,96,124,102,102,102,247,0
	dc.b	24,0,56,24,24,24,60,0
	dc.b	6,0,14,6,6,6,102,60
	dc.b	224,96,108,120,120,108,246,3
	dc.b	56,24,24,24,24,24,60,0
	dc.b	0,0,254,219,219,219,219,0
	dc.b	0,0,220,102,102,102,247,0
	dc.b	0,0,60,102,102,102,60,0
	dc.b	0,0,252,102,102,124,96,240
	dc.b	0,0,126,204,204,124,12,14
	dc.b	0,0,220,102,96,96,240,0
	dc.b	0,0,62,96,60,6,124,0
	dc.b	24,24,126,24,24,24,14,0
	dc.b	0,0,238,102,102,102,59,0
	dc.b	0,0,231,98,116,56,16,0
	dc.b	0,0,198,214,254,124,108,0
	dc.b	0,0,102,60,24,60,102,0
	dc.b	0,0,102,102,102,62,6,124
	dc.b	0,0,126,76,24,50,126,0
	dc.b	0,0,0,0,0,24,24,48
	dc.b	0,0,0,0,0,24,24,0
	dc.b	0,24,24,24,24,0,24,0
	dc.b	0,60,102,110,118,102,60,0
	dc.b	0,24,56,24,24,24,60,0
	dc.b	0,60,102,12,48,98,126,0
	dc.b	0,126,76,24,12,102,60,0
	dc.b	0,12,28,60,108,126,12,0
	dc.b	0,126,98,124,6,102,60,0
	dc.b	0,60,96,124,102,102,60,0
	dc.b	0,126,70,12,24,48,48,0
	dc.b	0,60,102,60,102,102,60,0
	dc.b	0,60,102,62,6,12,56,0
	dc.b	%00111100
	dc.b	%01000010
	dc.b	%10011001
	dc.b	%10100001
	dc.b	%10100001
	dc.b	%10011001
	dc.b	%01000010
	dc.b	%00111100

rectdat	dc.w	96,40,111,55
	dc.w	208,40,223,55

	dc.w	32,64,95,95
	dc.w	224,64,287,95
	dc.w	32,120,95,151
	dc.w	224,120,287,151

recflag	dc.b	0,0,0,0,0,0

palette	dc.w	$000,$105,$333,$555,$777,$040,$020,$600
	dc.w	$625,$500,$666,$000,$551,$200,$231,$666

routlst	dc.l	drivea,driveb,examine,install,remove,desktop
drive	dc.w	0

oldier	dc.l	0
oldkeyb	dc.l	0
oldtimb	dc.l	0
oldssp	dc.l	0
oldvblq	dc.l	0
physcrn	dc.l	0
logscrn	dc.l	0
oldres	dc.w	0
res	dc.w	0
screen	dc.l	0

drivedata
	dc.w	0,0,$FFFF,0,0,$8001,0,0
	dc.w	$8001,$180,0,$8181,$180,$240,$83C1,$3C0
	dc.w	0,$83C1,$3C0,$420,$87E1,$660,0,$8661
	dc.w	$7E0,$810,$8FF1,$C30,$240,$8E71,$C30,$1008
	dc.w	$9C39,$1818,$420,$9C39,$810,$1008,$9819,0
	dc.w	0,$8001,0,0,$8001,0,0,$FFFF
	dc.w	0,$FFFF,0,$7FFE,$FFFF,0,$4002,$C003
	dc.w	$3FFC,$5E7A,$DE7B,$3FFC,$5E7A,$DE7B,$3DBC,$5C3A
	dc.w	$DC3B,$3FFC,$5C3A,$DC3B,$3BDC,$599A,$D99B,$3FFC
	dc.w	$581A,$D81B,$37EC,$53CA,$D3CB,$3DBC,$53CA,$D3CB
	dc.w	$2FF4,$47E2,$C7E3,$3BDC,$57EA,$D7EB,$2FF4,$4002
	dc.w	$C003,$3FFC,$7FFE,$FFFF,0,0,$FFFF,0
	dc.w	0,0,$FFFF,0,0,$8001,0,0
	dc.w	$8001,$FC0,$20,$8FE1,$1FE0,$10,$9FF1,$1830
	dc.w	$640,$9E71,$1830,$4C0,$9CF1,$1FE0,$10,$9FF1
	dc.w	$1FF0,0,$9FF1,$1818,$620,$9E39,$1818,$460
	dc.w	$9C79,$1FF0,$8,$9FF9,$FE0,$10,$8FF1,0
	dc.w	0,$8001,0,0,$8001,0,0,$FFFF
	dc.w	0,$FFFF,0,$7FFE,$FFFF,0,$4002,$C003
	dc.w	$3FFC,$503A,$D03B,$3FFC,$401A,$C01B,$3FFC,$47CA
	dc.w	$C7CB,$3FFC,$47CA,$C7CB,$3FFC,$401A,$C01B,$3FFC
	dc.w	$400A,$C00B,$3FFC,$47E2,$C7E3,$3FFC,$47E2,$C7E3
	dc.w	$3FFC,$400A,$C00B,$3FFC,$501A,$D01B,$3FFC,$4002
	dc.w	$C003,$3FFC,$7FFE,$FFFF,0,0,$FFFF,0

icondat
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	14,15,$30,$AAAA,$FFFF,0,$B000,$F800
	dc.w	0,0,0,0,$33,$73,12,$D555
	dc.w	$FFFF,0,$5600,$FF00,0,0,0,0
	dc.w	12,$7C,3,$7AAA,$7FFF,$8000,$AAC0,$FFE0
	dc.w	0,0,0,0,1,$7F,0,$8FFF
	dc.w	$8FFF,$7000,$FFF8,$FFFC,0,0,0,0
	dc.w	0,$7F,0,$33FF,$F3FF,$C00,$FFFE,$FFFF
	dc.w	0,0,0,0,0,$7F,0,$C7F
	dc.w	$FC7F,$380,$FFFF,$FFFF,0,$C000,$E000,0
	dc.w	0,$7F,0,$19F,$FF9F,$60,$FFFF,$FFFF
	dc.w	0,$F000,$F800,0,0,$7F,0,$60
	dc.w	$FFE0,$1F,0,0,$FFFF,0,$200,$FC00
	dc.w	0,$7F,0,$1F,$FFFF,0,$FFFF,$FFFF
	dc.w	0,$FE00,$FE00,0,0,$7F,0,7
	dc.w	$FFFF,0,$FFFF,$FFFF,0,$FE00,$FE00,0
	dc.w	0,$3F,0,7,$FFFF,0,$FF00,$FFFF
	dc.w	0,$1E00,$FE00,0,0,$1F,0,6
	dc.w	$FFFF,0,0,$FFFF,0,$600,$FE00,0
	dc.w	0,7,0,5,$FFFE,0,$C000,0
	dc.w	$3FFF,$3600,$E00,$C000,0,1,0,5
	dc.w	$FFFE,0,$FFFF,$3FFF,0,$F600,$CE00,0
	dc.w	0,0,0,4,$7FFF,0,0,$FFFF
	dc.w	0,$E00,$FE00,0,0,0,0,7
	dc.w	$1FFF,0,$FC00,$FFFF,0,$7E00,$FE00,0
	dc.w	0,0,0,7,$7FF,0,$F800,$F800
	dc.w	$7FF,$FE00,$FE00,$3000,0,0,0,7
	dc.w	$1FF,0,$F001,$FFFF,0,$FE00,$FE00,$6000
	dc.w	0,0,0,7,$7F,0,$FFFF,$FFFF
	dc.w	0,$FC00,$FE00,0,0,0,0,1
	dc.w	$1F,0,$FFFF,$FFFF,0,$F800,$FC00,0
	dc.w	0,0,0,0,3,0,0,$FFFF
	dc.w	0,0,$F800,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,$600,0,0,$FF00,0
	dc.w	$FF00,0,0,0,0,0,0,$F03
	dc.w	0,3,$81C0,$7E00,$FFC0,0,0,0
	dc.w	0,0,0,$1F86,1,7,$1E0,$8000
	dc.w	$81E0,0,0,0,0,0,0,$3FD8
	dc.w	6,$1E,$70,$4008,$78,0,0,0
	dc.w	0,0,0,$7FF0,9,$18,$18,$E000
	dc.w	$18,0,0,0,0,0,0,$FFF0
	dc.w	7,$30,8,$F004,12,0,0,0
	dc.w	1,0,0,$FFE2,$17,$70,12,$F802
	dc.w	14,0,0,0,3,0,0,$FF62
	dc.w	$8B,$64,4,$FC02,6,0,0,0
	dc.w	7,0,0,$FEC0,$12B,$E4,6,$FE01
	dc.w	7,0,0,0,15,0,0,$FC84
	dc.w	$357,$C8,2,$F709,3,0,0,0
	dc.w	$1E,0,1,$F884,$757,$C8,$C0A,$E389
	dc.w	3,0,0,0,$3C,0,3,$7C8C
	dc.w	$35F,$80C0,$1E0A,$C1C9,3,0,0,0
	dc.w	$78,0,7,$3E88,$15F,$C0C0,$3F12,$80F1
	dc.w	11,0,0,0,$F0,0,15,$1F88
	dc.w	$5F,$E0C0,$7F92,$71,11,0,0,0
	dc.w	$1E0,0,$1F,$F80,$5E,$F0C0,$FFE2,$29
	dc.w	$13,0,0,0,$1C0,0,$3F,$7C1
	dc.w	$2C,$F8E0,$FFE6,$21,$17,0,0,0
	dc.w	$380,0,$7F,$3E3,8,$FC60,$FFE6,$30
	dc.w	6,0,0,0,$100,0,$FF,$1E7
	dc.w	$10,$FE70,$FF8E,$60,14,0,0,0
	dc.w	0,$100,$FF,$F7,0,$FF30,$FF0E,$E0
	dc.w	14,0,0,0,0,$80,$7F,$79
	dc.w	0,$FF98,$FE1E,$180,$1E,0,0,0
	dc.w	0,$40,$3F,$26,$18,$FFDE,$7C7F,$200
	dc.w	$7F,0,0,0,0,$20,$1F,$1B
	dc.w	4,$FFE7,$81FF,0,$81FF,$8000,0,$8000
	dc.w	0,$10,15,$38,3,$FFC3,$FF01,$FE
	dc.w	$FFFF,$E000,0,$E000,0,8,7,$70
	dc.w	0,$FF80,0,$FF01,$FF01,$7000,$8000,$F000
	dc.w	0,4,3,$E0,0,$FF00,0,0
	dc.w	0,$3800,$C000,$F800,0,2,1,$1C0
	dc.w	0,$FE00,0,0,0,$1E00,$6000,$7E00
	dc.w	0,1,0,$380,0,$FC00,0,0
	dc.w	0,$700,$3800,$3F00,0,0,0,$700
	dc.w	$8000,$7800,0,0,0,$380,$C00,$F80
	dc.w	0,0,0,$E00,$4000,$3000,0,0
	dc.w	0,$180,$640,$7C0,0,0,0,$1C00
	dc.w	$2000,0,0,0,0,0,$3C0,$3C0
	dc.w	0,0,0,$1800,0,0,0,0
	dc.w	0,0,$180,$180,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	$3FF,0,0,$FFFF,0,0,$C000,0
	dc.w	0,0,0,0,$7FF,0,0,$FFFF
	dc.w	0,0,$E000,0,0,0,0,0
	dc.w	$3FF,$7FF,0,$FFFF,$F000,0,$E000,0
	dc.w	0,0,0,0,$200,$600,$1FF,$1FFF
	dc.w	$1000,$E000,$E000,0,0,0,0,0
	dc.w	$200,$600,$1FF,$1FFF,$1000,$E000,$E000,0
	dc.w	0,0,0,0,$200,$600,$1FF,$1FFF
	dc.w	$1000,$E000,$E000,0,0,0,0,0
	dc.w	$200,$600,$1FF,$1FFF,$1000,$E000,$E00C,12
	dc.w	12,0,0,0,$200,$600,$1FF,$1FFF
	dc.w	$1000,$E000,$E01C,$1C,$1C,0,0,0
	dc.w	$200,$600,$1FF,$1FFF,$1000,$E000,$E03C,$3C
	dc.w	$3C,0,0,0,$200,$600,$1FF,$1FFF
	dc.w	$1000,$E000,$E07C,$7C,$7C,0,0,0
	dc.w	$200,$600,$1FF,$1F80,$107F,$E000,$FF,$E0FF
	dc.w	$FF,$EEE0,$EEE0,$EEE0,$200,$600,$1FF,$1F00
	dc.w	$10FF,$E000,$1FF,$E1FF,$1FF,$EEE0,$EEE0,$EEE0
	dc.w	$200,$600,$1FF,$1F00,$10FF,$E000,$3FF,$E3FF
	dc.w	$3FF,$EEE0,$EEE0,$EEE0,$200,$600,$1FF,$1F00
	dc.w	$10FF,$E000,$7FF,$E7FF,$7FF,$EEE0,$EEE0,$EEE0
	dc.w	$200,$600,$1FF,$1F00,$10FF,$E000,$3FF,$E3FF
	dc.w	$3FF,$EEE0,$EEE0,$EEE0,$200,$600,$1FF,$1F00
	dc.w	$10FF,$E000,$1FF,$E1FF,$1FF,$EEE0,$EEE0,$EEE0
	dc.w	$200,$600,$1FF,$1F00,$10FF,$E000,$FF,$E0FF
	dc.w	$FF,$EEE0,$EEE0,$EEE0,$200,$600,$1FF,$1F00
	dc.w	$10FF,$E000,$7C,$E07C,$7C,0,0,0
	dc.w	$200,$600,$1FF,$1F7F,$1080,$E000,$C03C,$203C
	dc.w	$3C,0,0,0,$200,$600,$1FF,$1F7F
	dc.w	$1080,$E000,$C01C,$201C,$1C,0,0,0
	dc.w	$200,$600,$1FF,$1F7F,$1080,$E000,$C00C,$200C
	dc.w	12,0,0,0,$200,$600,$1FF,$1F7F
	dc.w	$1080,$E000,$C000,$2000,0,0,0,0
	dc.w	$200,$600,$1FF,$1F00,$10FF,$E000,0,$E000
	dc.w	0,0,0,0,$200,$600,$1FF,$1F80
	dc.w	$107F,$E000,0,$E000,0,0,0,0
	dc.w	$200,$600,$1FF,$1FFF,$1000,$E000,$E000,0
	dc.w	0,0,0,0,$3FF,$7FF,0,$FFFF
	dc.w	$F000,0,$E000,0,0,0,0,0
	dc.w	$7FF,0,0,$FFFF,0,0,$C000,0
	dc.w	0,0,0,0,$3FF,0,0,$FFFF
	dc.w	0,0,$8000,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	$7FF,0,0,$FFFF,0,0,$8000,0
	dc.w	0,0,0,0,$FFF,0,0,$FFFF
	dc.w	0,0,$C000,0,0,0,0,0
	dc.w	$7FF,$FFF,0,$FFFF,$E000,0,$C000,0
	dc.w	0,0,0,0,$400,$C00,$3FF,$3FFF
	dc.w	$2000,$C000,$C000,0,0,0,0,0
	dc.w	$400,$C00,$3FF,$3FFF,$2000,$C000,$C000,0
	dc.w	0,0,0,0,$400,$C00,$3FF,$3FFF
	dc.w	$2000,$C000,$C000,0,0,0,0,0
	dc.w	$400,$C00,$3FF,$3FFF,$2000,$C000,$C000,0
	dc.w	0,0,0,0,$400,$C00,$3FF,$3FFF
	dc.w	$2000,$C000,$C000,0,0,$1800,$1800,$1800
	dc.w	$400,$C00,$3FF,$3FFF,$2000,$C000,$C000,0
	dc.w	0,$1C00,$1C00,$1C00,$400,$C00,$3FF,$3FFF
	dc.w	$2000,$C000,$C000,0,0,$1E00,$1E00,$1E00
	dc.w	$400,$C00,$3FF,$3F00,$20FF,$C000,0,$C000
	dc.w	0,$1F00,$1F00,$1F00,$400,$C00,$3FF,$3E00
	dc.w	$21FF,$C000,$3BB,$C3BB,$3BB,$FF80,$FF80,$FF80
	dc.w	$400,$C00,$3FF,$3E00,$21FF,$C000,$3BB,$C3BB
	dc.w	$3BB,$FFC0,$FFC0,$FFC0,$400,$C00,$3FF,$3E00
	dc.w	$21FF,$C000,$3BB,$C3BB,$3BB,$FFE0,$FFE0,$FFE0
	dc.w	$400,$C00,$3FF,$3E00,$21FF,$C000,$3BB,$C3BB
	dc.w	$3BB,$FFF0,$FFF0,$FFF0,$400,$C00,$3FF,$3E00
	dc.w	$21FF,$C000,$3BB,$C3BB,$3BB,$FFE0,$FFE0,$FFE0
	dc.w	$400,$C00,$3FF,$3E00,$21FF,$C000,$3BB,$C3BB
	dc.w	$3BB,$FFC0,$FFC0,$FFC0,$400,$C00,$3FF,$3E00
	dc.w	$21FF,$C000,$3BB,$C3BB,$3BB,$FF80,$FF80,$FF80
	dc.w	$400,$C00,$3FF,$3EFF,$2100,$C000,$8000,$4000
	dc.w	0,$1F00,$1F00,$1F00,$400,$C00,$3FF,$3EFF
	dc.w	$2100,$C000,$8000,$4000,0,$1E00,$1E00,$1E00
	dc.w	$400,$C00,$3FF,$3EFF,$2100,$C000,$8000,$4000
	dc.w	0,$1C00,$1C00,$1C00,$400,$C00,$3FF,$3EFF
	dc.w	$2100,$C000,$8000,$4000,0,$1800,$1800,$1800
	dc.w	$400,$C00,$3FF,$3E00,$21FF,$C000,0,$C000
	dc.w	0,0,0,0,$400,$C00,$3FF,$3F00
	dc.w	$20FF,$C000,0,$C000,0,0,0,0
	dc.w	$400,$C00,$3FF,$3FFF,$2000,$C000,$C000,0
	dc.w	0,0,0,0,$7FF,$FFF,0,$FFFF
	dc.w	$E000,0,$C000,0,0,0,0,0
	dc.w	$FFF,0,0,$FFFF,0,0,$8000,0
	dc.w	0,0,0,0,$FFF,0,0,$FFFF
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	0,0,0,$100,$C0,$1C0,0,0
	dc.w	0,0,0,0,0,0,0,$F00
	dc.w	$10C0,$1FC0,0,0,0,0,0,0
	dc.w	0,1,1,$FF00,$C0,$FFC0,0,0
	dc.w	0,0,0,0,3,4,7,$FF00
	dc.w	$DE,$FFDE,0,0,0,0,0,0
	dc.w	7,0,7,$FF3C,$C2,$FFC2,0,0
	dc.w	0,0,0,0,7,0,7,$FF3C
	dc.w	$C2,$FFC2,0,0,0,0,0,0
	dc.w	7,0,7,$FF3C,$C2,$FFC2,0,0
	dc.w	0,0,0,0,7,0,7,$FF3C
	dc.w	$C2,$FFC2,$800,$800,$800,0,0,0
	dc.w	7,0,7,$FF3C,$C2,$FFC2,$1800,$1800
	dc.w	$1800,0,0,0,7,0,7,$FF3C
	dc.w	$C2,$FFC2,$3800,$3800,$3800,0,0,0
	dc.w	7,0,7,$FF3C,$C2,$FFC2,$7800,$7800
	dc.w	$7800,0,0,0,7,0,7,$FF3C
	dc.w	$C2,$FFC2,$F800,$F800,$F800,0,0,0
	dc.w	7,0,7,$FF3D,$C1,$FFC1,$FFEE,$FFEE
	dc.w	$FFEE,$E000,$E000,$E000,7,0,7,$F33B
	dc.w	$4C3,$FBC3,$FFEE,$FFEE,$FFEE,$E000,$E000,$E000
	dc.w	7,0,7,$F137,$6C7,$FBC7,$FFEE,$FFEE
	dc.w	$FFEE,$E000,$E000,$E000,7,0,7,$F13F
	dc.w	$6CF,$FBCF,$FFEE,$FFEE,$FFEE,$E000,$E000,$E000
	dc.w	7,0,7,$F137,$EC7,$F3C7,$FFEE,$FFEE
	dc.w	$FFEE,$E000,$E000,$E000,7,0,7,$F13B
	dc.w	$EC3,$FFC3,$FFEE,$FFEE,$FFEE,$E000,$E000,$E000
	dc.w	7,0,7,$FF3D,$C1,$FFC1,$FFEE,$FFEE
	dc.w	$FFEE,$E000,$E000,$E000,7,0,7,$FF3C
	dc.w	$C2,$FFC2,$F800,$F800,$F800,0,0,0
	dc.w	7,0,7,$FF3C,$C2,$FFC2,$7800,$7800
	dc.w	$7800,0,0,0,7,0,7,$FF3C
	dc.w	$C2,$FFC2,$3800,$3800,$3800,0,0,0
	dc.w	7,0,7,$FF3C,$C2,$FFC2,$1800,$1800
	dc.w	$1800,0,0,0,7,0,7,$FF3C
	dc.w	$C2,$FFC2,$800,$800,$800,0,0,0
	dc.w	7,0,7,$FF3C,$C2,$FFC2,0,0
	dc.w	0,0,0,0,3,4,7,$FF3C
	dc.w	$C2,$FFC2,0,0,0,0,0,0
	dc.w	0,1,1,$FF00,$DE,$FFDE,0,0
	dc.w	0,0,0,0,0,0,0,$1F00
	dc.w	$60C0,$7FC0,0,0,0,0,0,0
	dc.w	0,0,0,$F00,$10C0,$1FC0,0,0
	dc.w	0,0,0,0,0,0,0,$300
	dc.w	$4C0,$7C0,0,0,0,0,0,0
	dc.w	0,0,0,$100,$C0,$1C0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	$40,$40,0,0,0,0,0,0

scrdata	dc.l	0,0,$7FF0000,0,$3FF0000,0,$F8000000,0,$70000,0
	dc.l	$C7C00000,0,$1FC00000,0,0,0,0,0,0,0,0,0,$10000
	dc.l	0,$F3F00000,0,$7F00000,0,$1FC0000,0,$3F0000,0
	dc.l	$80000000,0,0,0,0,0,0,0,0,0,$C010000,$3FE0000
	dc.l	$83FF0000,$1FF0000,$F8000000,$F0000000,$C0003,$30000
	dc.l	$6C608380,$83800000,$1FC00F80,$F800000,0,0,0,0,0,0
	dc.l	0,0,$30000,0,$FFF8E1E0,$E1E0,$4100000,$3E003E0
	dc.l	$3FE0000,$F800F8,$60001F,$1F001F,$C0000000,0,0,0,0,0
	dc.l	0,0,0,0,$18000000,$7FF0000,$C3FF0000,$1FF0000
	dc.l	$F8000000,$F0000000,$80007,$70000,$2820C7C0,$C7C00000
	dc.l	$1FC00F80,$F800000,0,0,0,0,0,0,0,0,$30001,1
	dc.l	$FFF8F3F0,$F3F0,$4100000,$3E003E0,$3FE0000,$1FC01FC
	dc.l	$40003F,$3F003F,$40008000,$80008000,0,0,0,0,0,0,0
	dc.l	0,$10200000,$FDF0000,$43FF0000,$801F0000,$F8000000,0
	dc.l	$80007,$70000,$2820C7C0,$C7C00000,$1FC00000,0,0,0,0
	dc.l	0,0,0,0,0,$30001,1,$FFF8F7E0,$F7E0,$7F00000,0
	dc.l	$3FE0000,$FC00FC,$60001F,$1F001F,$40008000,$80008000,0
	dc.l	0,0,0,0,0,0,0,$10500000,$F8F0000,$403F0000
	dc.l	$801F0000,$80000000,0,$80007,$70000,$2820C7C0,$C7C00000
	dc.l	$3F800000,0,$1FFE0000,0,$3E30000,0,$E03F0000,0
	dc.l	$FC000000,0,$30001,1,$FFF0F7C0,$F7C0,$FE00000,0
	dc.l	$1FE0000,$7C007C,$30000F,$F000F,$400F8000,$80008000
	dc.l	$FE030000,0,$FFC00000,0,0,0,0,0,$105F0000,$F800000
	dc.l	$C03F0000,$1F0000,$80000000,0,$80007,$70000,$2820C7C0
	dc.l	$C7C00000,$7FC01F00,$1F000000,$30030000,$FFC,$7F70000
	dc.l	$1C1,$F060001F,$C01F,$600F800,$F800,$30001,1,$FFE0FF80
	dc.l	$FF80,$18300000,$7C007C0,$FE0000,$7C007C,$10000F,$F000F
	dc.l	$401F8007,$80078007,$FF06FC00,$FC01FC00,$600000,$FF800000
	dc.l	0,0,0,0,$103F0000,$FC00000,$3F0000,$1F0000,$80000000
	dc.l	0,$80007,$70000,$2820C7C0,$C7C00000,$7FC03F80,$3F800000
	dc.l	$20010000,$1FFE,$87F70000,$3E3,$F0C0003F,$E03F,$200FC00
	dc.l	$FC00,$30001,1,$FFC0FF00,$FF00,$10100000,$FE00FE0
	dc.l	$FE0000,$7C007C,$10000F,$F000F,$403F800F,$800F800F
	dc.l	$FF84FE00,$FE03FE00,$300000,$FFC00000,0,0,0,0
	dc.l	$18010000,$7FE0000,$803F0000,$1F0000,$80000000,0,$80007
	dc.l	$70000,$2820C7C0,$C7C00000,$7FC01F80,$1F800000,$20400000
	dc.l	$1FBF,$87F70000,$3E3,$F081007E,$E07E,$FE000000,0,$30001
	dc.l	1,$FF80FE00,$FE00,$18100000,$7E007E0,$FE0000,$7C007C
	dc.l	$10000F,$F000F,$403F801F,$801F801F,$FF841F00,$1F031F00
	dc.l	$8100000,$F7E00000,0,0,0,0,$C000000,$3FF0000
	dc.l	$C03F0000,$1F0000,$80000000,0,$80007,$70000,$2820C7C0
	dc.l	$C7C00000,$3FC00F80,$F800000,$20E10000,$1F1E,$87F70000
	dc.l	$3E3,$F083007C,$E07C,$F8000000,0,$30001,1,$FF80FC00
	dc.l	$FC00,$C100000,$3E003E0,$FE0000,$7C007C,$10000F,$F000F
	dc.l	$403F801F,$801F801F,$FF841F00,$1F031F00,$1C300000
	dc.l	$E3C00000,0,0,0,0,$7E00000,$1F0000,$403F0000
	dc.l	$801F0000,$80000000,0,$80007,$70000,$3820C7C0,$C7C00000
	dc.l	$1FC00F80,$F800000,$20BF0000,$1F00,$7F70000,$3E3
	dc.l	$F0C0003F,$E03F,$C00F000,$F000,$30001,1,$FFC0FF00,$FF00
	dc.l	$4100000,$3E003E0,$FE0000,$7C007C,$10000F,$F000F
	dc.l	$403F801F,$801F801F,$FF84FF00,$FF03FF00,$17E00000
	dc.l	$E0000000,0,0,0,0,$1FD00000,$F0000,$403F0000
	dc.l	$801F0000,$80000000,0,$C0003,$30000,$1060EF80,$EF800000
	dc.l	$1FC00F80,$F800000,$20800000,$1F00,$7F70000,$3E3
	dc.l	$F060001F,$E01F,$600F800,$F800,$30001,1,$FFE0FF80,$FF80
	dc.l	$4100000,$3E003E0,$FE0000,$7C007C,$10000F,$F000F
	dc.l	$403F801F,$801F801F,$FF84FE00,$FE03FE00,$10000000
	dc.l	$E0000000,0,0,0,0,$10500000,$F8F0000,$403F0000
	dc.l	$801F0000,$80000000,0,$40003,$30000,$40FF80,$FF800000
	dc.l	$3FE00F80,$F800000,$20800000,$1F00,$7FF0000,$3E3
	dc.l	$F03F0000,$E000,$82007C00,$7C00,$30001,1,$FFF0F7C0,$F7C0
	dc.l	$C180000,$3E003E0,$1FF0000,$7C007C,$30000F,$F000F
	dc.l	$603F801F,$801F801F,$FF040000,$30000,$10000000,$E0000000
	dc.l	0,0,0,0,$10200000,$FDF0000,$403F0000,$801F0000
	dc.l	$80000000,0,$60001,$10000,$C0FF00,$FF000000,$7FF01FC0
	dc.l	$1FC00000,$20800000,$1F00,$7FF0000,$3F7,$F0FF0000,$E000
	dc.l	$200FC00,$FC00,$30001,1,$FFF8F7E0,$F7E0,$180C0000
	dc.l	$7F007F0,$3FF0000,$FE00FE,$8060001F,$1F001F,$303FC01F
	dc.l	$C01FC01F,$FE048000,$80038000,$10000000,$E0000000,0,0
	dc.l	0,0,$18000000,$7FF0000,$C03F0000,$1F0000,$80000000,0
	dc.l	$30000,0,$180FE00,$FE000000,$7FF03FE0,$3FE00000
	dc.l	$20800000,$1F00,$7FF0000,$1FF,$F080007F,$E07F,$600F800
	dc.l	$F800,$30001,1,$FFF8F3F0,$F3F0,$10040000,$FF80FF8
	dc.l	$3FF0000,$1FF01FF,$8040003F,$3F003F,$103FE00F,$E00FE00F
	dc.l	$FE04FC00,$FC03FC00,$10000000,$E0000000,0,0,0,0
	dc.l	$C010000,$3FE0000,$803F0000,$E0000,$80000000,0,$10000,0
	dc.l	$83007C00,$7C000000,$7FF01FC0,$1FC00000,$31800000,$E00
	dc.l	$3FF0000,$FF,$F0C0003F,$C03F,$C00F000,$F000,$30000,0
	dc.l	$FFF8E1E0,$E1E0,$180C0000,$7F007F0,$3FF0000,$FE00FE
	dc.l	$8060001F,$1F001F,$301FC007,$C007C007,$FE06F800,$F801F800
	dc.l	$30000000,$C0000000,0,0,0,0,$7FF0000,0,$1F0000,0,0
	dc.l	0,0,0,$FE000000,0,$3FE00000,0,$1F000000,0,$1FF0000
	dc.l	0,$E07F0000,0,$F8000000,0,$10000,0,$F3F00000,0
	dc.l	$FF80000,0,$1FF0000,0,$3F0000,0,$E00F0000,0,$FC030000
	dc.l	0,$E0000000,0,0,0

oldpal
buffer	equ	oldpal+32
trash	equ	buffer+512
end	equ	trash+300