[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