social.linux.pizza is one of the many independent Mastodon servers you can use to participate in the fediverse.
A instance dedicated - but not limited - to people with an interest in the GNU+Linux ecosystem and/or general tech. Sysadmins to enthusiasts, creators to movielovers - Welcome!

Administered by:

Server stats:

1.3K
active users

And today it became suddenly very relevant to me that the 65816 has a serious advantage in moving data over the 6502 at the same clock speed. By my math, a ~41% advantage.

; 6502:
lda #$34 ; [2]
sta $df00 ; [4]
lda #$12 ; [2]
sta $df01 ; [4]
= 12 cycles
; 65816
lda #$1234 ; [3]
sta $df00 ; [5]
= 8 cycles

; 65816, with DP = $DF00
lda #$1234 ; [3]
sta $00 ; [4]
= 7 cycles

ytm

@mos_8502

On a C128 within some constraints it's possible to do it in 10 cycles in two different ways, thanks to MMU.

With zero page relocation (LDA + STA zp) one must care to deal with offsets 0/1 (CPU ports) separately.

With stack relocation (LDA +PHA) one must disable interrupts and set/restore stack pointer.

Sounds cumbersome, but I used both methods to speed up Amaurote gameplay in both VIC and VDC releases:

elysium64.itch.io/amaurote

itch.ioAmaurote 64 & 128 by elysium64, ytmytmIsometric Amaurote Commodore 64 conversion