[Coco] 64K ROM to RAM programs - where did this one come from?

L. Curtis Boyle curtisboyle at sasktel.net
Tue Dec 14 16:30:43 EST 2021


You could shrink it by a byte with 4032 being a PULS CC,PC instead. :-)


> On Dec 14, 2021, at 3:24 PM, Allen Huffman <alsplace at pobox.com> wrote:
> 
> Using a Motorola 6809 Emulator I found online (which turns out to be the Xroar site):
> 
> http://6809.uk
> 
> …I was able to convert the DATA statements from the ROM to RAM program in to “fcb” constant bytes…
> 
> start:
> fcb $34,$01,$1A,$50,$10,$8E,$80,$00
> fcb $B7,$FF,$DE,$EC,$A4,$AE,$22,$EE
> fcb $24,$B7,$FF,$DF,$ED,$A1,$AF,$A1
> fcb $EF,$A1,$10,$8C,$FE,$FC,$25,$E8
> fcb $10,$8C,$FF,$00,$24,$0C,$B7,$FF
> fcb $DE,$EC,$A4,$B7,$FF,$DF,$ED,$A1
> fcb $20,$EE,$35,$01,$39
> 
> …then “assemble” it and look at the output in the emulator:
> 
> 4000:	34 01         	PSHS CC
> 4002:	1A 50         	ORCC #$50
> 4004:	10 8E 80 00   	LDY #$8000
> 4008:	B7 FF DE      	STA $FFDE
> 400B:	EC A4         	LDD ,Y
> 400D:	AE 22         	LDX $02,Y
> 400F:	EE 24         	LDU $04,Y
> 4011:	B7 FF DF      	STA $FFDF
> 4014:	ED A1         	STD ,Y++
> 4016:	AF A1         	STX ,Y++
> 4018:	EF A1         	STU ,Y++
> 401A:	10 8C FE FC   	CMPY #$FEFC
> 401E:	25 E8         	BCS $4008
> 4020:	10 8C FF 00   	CMPY #$FF00
> 4024:	24 0C         	BCC $4032
> 4026:	B7 FF DE      	STA $FFDE
> 4029:	EC A4         	LDD ,Y
> 402B:	B7 FF DF      	STA $FFDF
> 402E:	ED A1         	STD ,Y++
> 4030:	20 EE         	BRA $4020
> 4032:	35 01         	PULS CC
> 4034:	39            	RTS
> 
> I can now see why it is larger. Instead of copying a byte at a time, like the Frank Hogg version, it copies 6 bytes at a type by loading them in to three 16-bit registers (D, X and U).  That means it is 6 times faster, I guess ;-)
> 
> But, what is going on at $401A with the compare against address $FEFC followed by a compare against $FF00?
> 
> 
> 
> -- 
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
> 



More information about the Coco mailing list