;John Veldthuis
;21 Ngatai Street
;Manaia, Taranaki, 4851
;New Zealand

**	Tabstops : variable
**	Assemble with Macro68

**      Permission is granted to purchasers of Macro68 to modify this source
**      file.  Permission is further granted to distribute the source code that
**      they have modified subject to the following conditions:
**      1.  That the original, unaltered, source is included with the
**          distribution.
**      2.  That no charge is made for the distribution, other than the cost of
**          media.                    (Distribution via Fred Fish is permitted)
**      3.  That my copyright notice remains as part of this and any other
**          file adapted from this file.

**	Program to disassemble Copper lists in memory and output a listing
**	That can be Reassembled with Macro68

**	Usage: Display Address Numberlines CPR/s NOADD/s
**	If the CPR switch is used the machine copper list is displayed
**	If noadd switch is used the the address will not be printed
**	Address is a machine address in the form $num xnum or 0xnum
**	NumLines is the number of copper instructions to disassemble
**	Display will stop when it finds a cend instruction
**	To redirect to a file use Display >Temp.asm CPR noadd
**	This gives the following output (Partial)


	comment	*

LOF Copper List

=====================

	cwait	$2B:$00
	cmove	#$0039,(color)
	cmove	#$0FFF,(color+2)
	cmove	#$0002,(color+4)
	cmove	#$0F80,(color+6)
	cmove	#$0000,(color+32)
	cmove	#$0D22,(color+34)

	[rest deleted]

	cmove	#$6790,(bplpt+2)
	cmove	#$0002,(bplpt+4)
	cmove	#$0660,(bplpt+6)
	cwait	$2C:$00
	cmove	#$A200,(bplcon0)
	cwait	$36:$00
	cmove	#$0200,(bplcon0)
	cend
*
**	Which show the LOF machine copper list
**	Requires Arp.library to run

	exeobj
	objfile	'ram:Display'
	errfile	'ram:assem.output'
;	Next line is for an Arexx Script to Assemble from Editor
;	Auto: Macro68 Display.asm



	ifnd	_LVOArpExit
_LVOPrintf	equ	-$e4
_LVOPuts	equ	-$f0
_LVOGADS	equ	-$fc
_LVOAtol	equ	-$102
_LVOArpExit	equ	-$17a
_LVOCheckAbort	equ	-$10e
	endc




	MOVEM.L D0/A0,-(SP)
	lea	(Args,pc),a1
	moveq	#8,d0
1$	clr.l	(a1)+
	dbra	d0,1$
	movea.l	(4).w,A6
	LEA	(arplibrary.MSG,PC),A1
	MOVEQ	#$27,D0
	JSR	(-$228,A6)
	TST.L	D0
	BNE.b	ArpOpen
	LEA	(doslibrary.MSG,PC),A1
	JSR	(-$228,A6)
	TST.L	D0
	BEQ.b	lbC000044
	movea.l	D0,A6
	JSR	(-$3C,A6)
	MOVE.L	D0,D1
	BEQ.b	lbC000044
	LEA	(youneed.MSG,PC),A0
	MOVE.L	A0,D2
	MOVEQ	#$1C,D3
	JSR	(-$30,A6)
lbC000044	ADDQ.W	#8,SP
	RTS

ArpOpen
	movea.l	d0,a6
	movem.l	(sp)+,d0/a0
	lea	(Help,pc),a1
	lea	(TPlate,pc),a3
	lea	(Args,pc),a2
	jsr	(_LVOGADS,a6)
	tst.l	d0
	bmi	InputError
	lea	(Args,pc),a0
	tst.l	(8,a0)			;seeif Flag set
	beq.b	Cont
	movea.l	($34,a6),a0		;Get GfxBase
	movea.l	($22,a0),a5		;get Active View
	movea.l	(4,a5),a0		;Get LOFCprList
	movea.l	(4,a0),a4		;Get Copper List
	moveq	#0,d7
	move.l	d7,d6
	move.w	(8,a0),d7		;Get Count
	lea	(LOFName,pc),a0
	jsr	(_LVOPrintf,a6)		;Print Header
	bsr	Disassem
	move.l	(8,a5),d7		;Get SHFCprList
	beq.b	Exit
	lea	(SHFName,pc),a0
	jsr	(_LVOPrintf,a6)
	movea.l	d7,a0
	movea.l	(4,a0),a4
	moveq	#0,d7
	move.l	d7,d6
	move.w	(8,a0),d7
	bsr	Disassem
	bra.b	Exit

Cont	tst.l	(a0)			;see if any start address
	beq.b	ShowUsage
	tst.l	(4,a0)			;see if any length
	beq.b	ShowUsage
	movea.l	(Args,pc),a0
	cmpi.b	#'$',(a0)		;decimal number
	beq.b	1$
	cmpi.b	#'x',(a0)		;x0002 style number
	beq.b	1$
	cmpi.b	#'x',(1,a0)		;c style number
	bne.b	5$
	addq.w	#1,a0			;move over 0
1$	bsr.b	ParseHex
	bra.b	2$
5$	jsr	(_LVOAtol,a6)
2$	and.l	#$fffffffe,d0		;mask to a word address
	movea.l	d0,a4			;save start address
	movea.l	(Args+4,pc),a0
	cmpi.b	#'$',(a0)
	beq.b	6$			;decimal number
	cmpi.b	#'$',(a0)
	beq.b	6$			;x00 style number
	cmpi.b	#'x',(1,a0)
	bne.b	3$			;c style number
	addq.w	#1,a0			;move over 0
6$	bsr.b	ParseHex
	bra.b	4$
3$	jsr	(_LVOAtol,a6)
4$	move.l	d0,d7			;copy length
	moveq	#0,d6
	bsr.b	Disassem
Exit	moveq	#0,d0
	move.l	d0,d2
	jsr	(_LVOArpExit,a6)

Ex	jsr	(_LVOPuts,a6)
	bra	Exit

ShowUsage
	lea	(Help,pc),a1
	bra	Ex
InputError
	movea.l	(Args,pc),a1
	bra	Ex

ParseHex
	lea	(HexTable,pc),a1
	addq.w	#1,a0			;Move over '$' character
	moveq	#0,d5			;Used as a Holder
4$	moveq	#0,d0
	move.b	(a0)+,d0
	beq.b	EndParse
	cmp.b	#':',d0
	bcs.b	1$
	and.l	#%11011111,d0		;Mask to UpperCase
1$	moveq	#15,d1			;Loop Counter
3$	cmp.b	(0,a1,d1.w),d0		;Test Byte
	beq.b	2$
	dbra	d1,3$
	moveq	#-1,d2			;Set error Flag
	bra.b	EndParse

2$	lsl.l	#4,d5			;Shift Left 4 bits
	or.l	d1,d5			;and add to d5
	bra.b	4$

EndParse
	move.l	d5,d0
	rts


**	Entry	A4 = Start of Copper List
**		D7 = Length of Copper List
**		D6 = End Flag for Wait (Set to Zero)
Disassem
	lea	(Ex,pc),a1		;routine to call if Ctrl-C
	jsr	(_LVOCheckAbort,a6)
	tst.l	d7
	bne.b	1$
	rts
1$	lea	(Noadd,pc),a0
	tst.l	(a0)			;test if addres wanted
	bne.b	2$
	move.l	a4,-(sp)
	lea	(AddString,pc),a0
	movea.l	sp,a1
	jsr	(_LVOPrintf,a6)
	adda.w	#4,sp
2$	subq.l	#1,d7
	moveq	#0,d4
	move.l	d4,d5
	move.w	(a4)+,d4
	move.w	(a4)+,d5
	btst	#0,d4
	beq	Move
	bsr	GetMask
	btst	#0,d5
	beq.b	Wait
	lea	(SkipIns,pc),a0
	bra.b	PutRest
Wait
	cmpi.l	#$7f,(HP)
	bne.b	1$
	cmpi.l	#$ff,(VP)
	bne.b	1$
	lea	(CEndins,pc),a0
	jsr	(_LVOPrintf,a6)
	rts

1$	lea	(WaitIns,pc),a0

PutRest	move.l	(HP,pc),-(sp)
	move.l	(VP,pc),-(sp)
	movea.l	sp,a1
	jsr	(_LVOPrintf,a6)
	addq.w	#8,sp
	cmpi.l	#$7f,(HM)
	bne.b	PutMask
	cmpi.l	#$7f,(VM)
	bne.b	PutMask
PutLF	btst	#15,d5			;Test Blitter finished disable
	bne.b	1$
	lea	(BFDis,pc),a0
	jsr	(_LVOPrintf,a6)
1$	lea	(LineFeed,pc),a0
	jsr	(_LVOPrintf,a6)
	bra	Disassem

PutMask	move.l	(HM,pc),-(sp)
	move.l	(VM,pc),-(sp)
	movea.l	sp,a1
	lea	(MaskIns,pc),a0
	jsr	(_LVOPrintf,a6)
	addq.w	#8,sp
	bra	PutLF

Move	lsr.l	#1,d4
	and.w	#$ff,d4
	lsl.l	#2,d4			;offset * 4
	lea	(Table,pc),a0
	move.l	(0,a0,d4.w),d0		;Get Discribtion address
	move.l	d0,-(sp)		;save addres of string
	move.l	d5,-(sp)		;save data
	movea.l	sp,a1
	lea	(MoveIns,pc),a0
	jsr	(_LVOPrintf,a6)
	addq.w	#8,sp
	bra	Disassem

GetMask move.l	d4,d0
	lsr.l	#8,d0
	and.l	#$ff,d0			;get VP
	move.l	d4,d1
	lsr.l	#1,d1
	and.l	#$7f,d1			;Get HP
	move.l	d0,(VP)
	move.l	d1,(HP)
	move.l	d5,d0
	lsr.l	#8,d0
	and.l	#$7f,d0
	move.l	d0,(VM)
	move.l	d5,d0
	lsr.l	#1,d0
	and.l	#$7f,d0
	move.l	d0,(HM)
Endit	rts

Table	dl	bltddat1
	dl	dmaconr1
	dl	vposr1
	dl	vhposr1
	dl	dskdatr1
	dl	joy0dat1
	dl	joy1dat1
	dl	clxdat1
	dl	adkconr1
	dl	pot0dat1
	dl	pot1dat1
	dl	potinp1
	dl	serdatr1
	dl	dskbytr1
	dl	intenar1
	dl	intreqr1
	dl	dskptr1
	dl	dskptr21
	dl	dsklen1
	dl	dskdat1
	dl	refptr1
	dl	vposw1
	dl	vhposw1
	dl	copcon1
	dl	serdat1
	dl	serper1
	dl	potgo1
	dl	joytest1
	dl	strequ1
	dl	strvbl1
	dl	strhor1
	dl	strlong1
	dl	bltcon01
	dl	bltcon11
	dl	bltafwm1
	dl	bltalwm1
	dl	bltcpt1
	dl	bltcpt21
	dl	bltbpt1
	dl	bltbpt21
	dl	bltapt1
	dl	bltapt21
	dl	bltdpt1
	dl	bltdpt21
	dl	bltsize1
	dl	pad2d01
	dl	pad2d11
	dl	pad2d21
	dl	bltbmod1
	dl	bltbmod1
	dl	bltamod1
	dl	bltdmod1
	dl	pad3401
	dl	pad3411
	dl	pad3421
	dl	pad3431
	dl	bltcdat1
	dl	bltbdat1
	dl	bltadat1
	dl	pad3b01
	dl	pad3b11
	dl	pad3b21
	dl	pad3b31
	dl	dsksync1
	dl	cop1lc1
	dl	cop1lc21
	dl	cop2lc1
	dl	cop2lc21
	dl	copjmp11
	dl	copjmp21
	dl	copins1
	dl	diwstrt1
	dl	diwstop1
	dl	ddfstrt1
	dl	ddfstop1
	dl	dmacon1
	dl	clxcon1
	dl	intena1
	dl	intreq1
	dl	adkcon1
	dl	aud0ac_ptr1
	dl	aud0ac_ptr21
	dl	aud0ac_len1
	dl	aud0ac_per1
	dl	aud0ac_vol1
	dl	aud0ac_dat1
	dl	aud0ac_pad01
	dl	aud0ac_pad11
	dl	aud1ac_ptr1
	dl	aud1ac_ptr21
	dl	aud1ac_len1
	dl	aud1ac_per1
	dl	aud1ac_vol1
	dl	aud1ac_dat1
	dl	aud1ac_pad01
	dl	aud1ac_pad11
	dl	aud2ac_ptr1
	dl	aud2ac_ptr21
	dl	aud2ac_len1
	dl	aud2ac_per1
	dl	aud2ac_vol1
	dl	aud2ac_dat1
	dl	aud2ac_pad01
	dl	aud2ac_pad11
	dl	aud3ac_ptr1
	dl	aud3ac_ptr21
	dl	aud3ac_len1
	dl	aud3ac_per1
	dl	aud3ac_vol1
	dl	aud3ac_dat1
	dl	aud3ac_pad01
	dl	aud3ac_pad11
	dl	bplpt01
	dl	bplpt021
	dl	bplpt11
	dl	bplpt121
	dl	bplpt21
	dl	bplpt221
	dl	bplpt31
	dl	bplpt321
	dl	bplpt41
	dl	bplpt421
	dl	bplpt51
	dl	bplpt521
	dl	pad7c01
	dl	pad7c11
	dl	pad7c21
	dl	pad7c31
	dl	bplcon01
	dl	bplcon11
	dl	bplcon21
	dl	pad831
	dl	bpl1mod1
	dl	bpl2mod1
	dl	pad8601
	dl	pad8611
	dl	bpldat01,bpldat11,bpldat21
	dl	bpldat31,bpldat41,bpldat51,pad8e01,pad8e11
	dl	sprpt01,sprpt021,sprpt11,sprpt121
	dl	sprpt21,sprpt221,sprpt31,sprpt321
	dl	sprpt41,sprpt421,sprpt51,sprpt521
	dl	sprpt61,sprpt621,sprpt71,sprpt721
	dl	spr0pos1,spr0ctl1,spr0dataa1,spr0datab1
	dl	spr1pos1,spr1ctl1,spr1dataa1,spr1datab1
	dl	spr2pos1,spr2ctl1,spr2dataa1,spr2datab1
	dl	spr3pos1,spr3ctl1,spr3dataa1,spr3datab1
	dl	spr4pos1,spr4ctl1,spr4dataa1,spr4datab1
	dl	spr5pos1,spr5ctl1,spr5dataa1,spr5datab1
	dl	spr6pos1,spr6ctl1,spr6dataa1,spr6datab1
	dl	spr7pos1,spr7ctl1,spr7dataa1,spr7datab1
	dl	Color01,Color11,Color21,Color31
	dl	Color41,Color51,Color61,Color71
	dl	Color81,Color91,Color101,Color111
	dl	Color121,Color131,Color141,Color151
	dl	Color161,Color171,Color181,Color191
	dl	Color201,Color211,Color221,Color231
	dl	Color241,Color251,Color261,Color271
	dl	Color281,Color291,Color301,Color311

doslibrary.MSG	db	'dos.library',0
youneed.MSG	db	'you need '
arplibrary.MSG	db	'arp.library',0
		db	' V39+',$A
Help		db	'Usage: Display <StartAddress> <Length>',10
		db	'       ([cpr] Display Machine List)',10
		db	'       ([noadd] Do not display Addresses',0
TPlate		db	'Start,Length,CPR/s,NOADD/s',0
AddString
		db	'%08lx',0
MoveIns		db	'	cmove	#$%04lx,(%s)',10,0
SkipIns		db	'	cskip	$%02lx:$%02lx',0
WaitIns		db	'	cwait	$%02lx:$%02lx',0
CEndins		db	'	cend',10,0
BFDis		db	'1',0
LOFName		db	'   LOF Copper List',10,'=====================',10,10,0
SHFName		db	10,10,'   SHF Copper List',10,'=====================',10,10,0
MaskIns		db	'{$%02lx:$%02lx}',0
Break		db	10,'***Break'                   ;Uses LF on next Bit
LineFeed	db	10,0
HexTable
		db	'0123456789ABCDEF',0
InErr		db	'Input Error Please check Quotes etc.',0

bltddat1	db "bltddat",0
dmaconr1	db "dmaconr",0
vposr1		db "vposr",0
vhposr1		db "vhposr",0
dskdatr1	db "dskdatr",0
joy0dat1	db "joy0dat",0
joy1dat1	db "joy1dat",0
clxdat1		db "clxdat",0
adkconr1	db "adkconr",0
pot0dat1	db "pot0dat",0
pot1dat1	db "pot1dat",0
potinp1		db "potinp",0
serdatr1	db "serdatr",0
dskbytr1	db "dskbytr",0
intenar1	db "intenar",0
intreqr1	db "intreqr",0
dskptr1		db "dskpth",0
dskptr21	db "dskpth+2",0
dsklen1		db "dsklen",0
dskdat1		db "dskdat",0
refptr1		db "refptr",0
vposw1		db "vposw",0
vhposw1		db "vhposw",0
copcon1		db "copcon",0
serdat1		db "serdat",0
serper1		db "serper",0
potgo1		db "potgo",0
joytest1	db "joytest",0
strequ1		db "strequ",0
strvbl1		db "strvbl",0
strhor1		db "strhor",0
strlong1	db "strlong",0
bltcon01	db "bltcon0",0
bltcon11	db "bltcon1",0
bltafwm1	db "bltafwm",0
bltalwm1	db "bltalwm",0
bltcpt1		db "bltcpth",0
bltcpt21	db "bltcpth+2",0
bltbpt1		db "bltbpth",0
bltbpt21	db "bltbpth+2",0
bltapt1		db "bltapth",0
bltapt21	db "bltapth+2",0
bltdpt1		db "bltdpth",0
bltdpt21	db "bltdpth+2",0
bltsize1	db "bltsize",0
pad2d01		db "pad2d[0]",0
pad2d11		db "pad2d[1]",0
pad2d21		db "pad2d[2]",0
bltcmod1	db "bltcmod",0
bltbmod1	db "bltbmod",0
bltamod1	db "bltamod",0
bltdmod1	db "bltdmod",0
pad3401		db "pad34[0]",0
pad3411		db "pad34[1]",0
pad3421		db "pad34[2]",0
pad3431		db "pad34[3]",0
bltcdat1	db "bltcdat",0
bltbdat1	db "bltbdat",0
bltadat1	db "bltadat",0
pad3b01		db "pad3b[0]",0
pad3b11		db "pad3b[1]",0
pad3b21		db "pad3b[2]",0
pad3b31		db "pad3b[3]",0
dsksync1	db "dsksync",0
cop1lc1		db "cop1lch",0
cop1lc21	db "cop1lch+2",0
cop2lc1		db "cop2lch",0
cop2lc21	db "cop2lch+2",0
copjmp11	db "copjmp1",0
copjmp21	db "copjmp2",0
copins1		db "copins",0
diwstrt1	db "diwstrt",0
diwstop1	db "diwstop",0
ddfstrt1	db "ddfstrt",0
ddfstop1	db "ddfstop",0
dmacon1		db "dmacon",0
clxcon1		db "clxcon",0
intena1		db "intena",0
intreq1		db "intreq",0
adkcon1		db "adkcon",0
aud0ac_ptr1	db "aud0+ac_ptr",0
aud0ac_ptr21	db "aud0+ac_ptr+2",0
aud0ac_len1	db "aud0+ac_len",0
aud0ac_per1	db "aud0+ac_per",0
aud0ac_vol1	db "aud0+ac_vol",0
aud0ac_dat1	db "aud0+ac_dat",0
aud0ac_pad01	db "aud0+ac_pad[0]",0
aud0ac_pad11	db "aud0+ac_pad[1]",0
aud1ac_ptr1	db "aud1+ac_ptr",0
aud1ac_ptr21	db "aud1+ac_ptr+2",0
aud1ac_len1	db "aud1+ac_len",0
aud1ac_per1	db "aud1+ac_per",0
aud1ac_vol1	db "aud1+ac_vol",0
aud1ac_dat1	db "aud1+ac_dat",0
aud1ac_pad01	db "aud1+ac_pad[0]",0
aud1ac_pad11	db "aud1+ac_pad[1]",0
aud2ac_ptr1	db "aud2+ac_ptr",0
aud2ac_ptr21	db "aud2+ac_ptr+2",0
aud2ac_len1	db "aud2+ac_len",0
aud2ac_per1	db "aud2+ac_per",0
aud2ac_vol1	db "aud2+ac_vol",0
aud2ac_dat1	db "aud2+ac_dat",0
aud2ac_pad01	db "aud2+ac_pad[0]",0
aud2ac_pad11	db "aud2+ac_pad[1]",0
aud3ac_ptr1	db "aud3+ac_ptr",0
aud3ac_ptr21	db "aud3+ac_ptr+2",0
aud3ac_len1	db "aud3+ac_len",0
aud3ac_per1	db "aud3+ac_per",0
aud3ac_vol1	db "aud3+ac_vol",0
aud3ac_dat1	db "aud3+ac_dat",0
aud3ac_pad01	db "aud3+ac_pad[0]",0
aud3ac_pad11	db "aud3+ac_pad[1]",0
bplpt01		db "bplpt",0
bplpt021	db "bplpt+2",0
bplpt11		db "bplpt+4",0
bplpt121	db "bplpt+6",0
bplpt21		db "bplpt+8",0
bplpt221	db "bplpt+10",0
bplpt31		db "bplpt+12",0
bplpt321	db "bplpt+14",0
bplpt41		db "bplpt+16",0
bplpt421	db "bplpt+18",0
bplpt51		db "bplpt+20",0
bplpt521	db "bplpt+22",0
pad7c01		db "pad7c[0]",0
pad7c11		db "pad7c[1]",0
pad7c21		db "pad7c[2]",0
pad7c31		db "pad7c[3]",0
bplcon01	db "bplcon0",0
bplcon11	db "bplcon1",0
bplcon21	db "bplcon2",0
pad831		db "pad83",0
bpl1mod1	db "bpl1mod",0
bpl2mod1	db "bpl2mod",0
pad8601		db "pad86[0]",0
pad8611		db "pad86[1]",0
bpldat01	db "bpldat",0
bpldat11	db "bpldat+2",0
bpldat21	db "bpldat+4",0
bpldat31	db "bpldat+6",0
bpldat41	db "bpldat+8",0
bpldat51	db "bpldat+10",0
pad8e01		db "pad8e[0]",0
pad8e11		db "pad8e[1]",0
sprpt01		db "sprpt",0
sprpt021	db "sprpt+2",0
sprpt11		db "sprpt+4",0
sprpt121	db "sprpt+8",0
sprpt21		db "sprpt+10",0
sprpt221	db "sprpt+12",0
sprpt31		db "sprpt+14",0
sprpt321	db "sprpt+16",0
sprpt41		db "sprpt+18",0
sprpt421	db "sprpt+20",0
sprpt51		db "sprpt+22",0
sprpt521	db "sprpt+24",0
sprpt61		db "sprpt+26",0
sprpt621	db "sprpt+28",0
sprpt71		db "sprpt+30",0
sprpt721	db "sprpt+32",0
spr0pos1	db "spr+sd_pos",0
spr0ctl1	db "spr+sd_ctl",0
spr0dataa1	db "spr+sd_dataa",0
spr0datab1	db "spr+sd_datab",0
spr1pos1	db "spr+8+sd_pos",0
spr1ctl1	db "spr+8+sd_ctl",0
spr1dataa1	db "spr+8+sd_dataa",0
spr1datab1	db "spr+8+sd_datab",0
spr2pos1	db "spr+16+sd_pos",0
spr2ctl1	db "spr+16+sd_ctl",0
spr2dataa1	db "spr+16+sd_dataa",0
spr2datab1	db "spr+16+sd_datab",0
spr3pos1	db "spr+24+sd_pos",0
spr3ctl1	db "spr+24+sd_ctl",0
spr3dataa1	db "spr+24+sd_dataa",0
spr3datab1	db "spr+24+sd_datab",0
spr4pos1	db "spr+32+sd_pos",0
spr4ctl1	db "spr+32+sd_ctl",0
spr4dataa1	db "spr+32+sd_dataa",0
spr4datab1	db "spr+32+sd_datab",0
spr5pos1	db "spr+40+sd_pos",0
spr5ctl1	db "spr+40+sd_ctl",0
spr5dataa1	db "spr+40+sd_dataa",0
spr5datab1	db "spr+40+sd_datab",0
spr6pos1	db "spr+48+sd_pos",0
spr6ctl1	db "spr+48+sd_ctl",0
spr6dataa1	db "spr+48+sd_dataa",0
spr6datab1	db "spr+48+sd_datab",0
spr7pos1	db "spr+56+sd_pos",0
spr7ctl1	db "spr+56+sd_ctl",0
spr7dataa1	db "spr+56+sd_dataa",0
spr7datab1	db "spr+56+sd_datab",0
Color01		db "color",0
Color11		db "color+2",0
Color21		db "color+4",0
Color31		db "color+6",0
Color41		db "color+8",0
Color51		db "color+10",0
Color61		db "color+12",0
Color71		db "color+14",0
Color81		db "color+16",0
Color91		db "color+18",0
Color101	db "color+20",0
Color111	db "color+22",0
Color121	db "color+24",0
Color131	db "color+26",0
Color141	db "color+28",0
Color151	db "color+30",0
Color161	db "color+32",0
Color171	db "color+34",0
Color181	db "color+36",0
Color191	db "color+38",0
Color201	db "color+40",0
Color211	db "color+42",0
Color221	db "color+44",0
Color231	db "color+46",0
Color241	db "color+48",0
Color251	db "color+50",0
Color261	db "color+52",0
Color271	db "color+54",0
Color281	db "color+56",0
Color291	db "color+58",0
Color301	db "color+60",0
Color311	db "color+62",0

	even

Args	dx.l	1
	dx.l	1
	dx.l	1
Noadd	dx.l	1
VP	dx.l	1
HP	dx.l	1
VM	dx.l	1
HM	dx.l	1

	end
