A czy Basic można włączyć na czas dekompresji? Jeżeli tak, to proponuję:
src = $9D
dest = $24;
loop jsr get
beq stop
lsr @
tay
q0 jsr get
q1 sta (dest,x)
inc dest
bne q2
inc dest+1
q2
dey
_bpl bmi loop
bcs q0
bcc q1
get JMP $A293
stop rts
Wynik: 32 bajty na zerowej :)
Jakby ktoś się uparł, że musi chodzić na XL/XE z oryginalnym ROM'em to można i tak:
src = $9D
dest = $24;
loop jsr get
beq stop
lsr @
tay
q0 jsr get
q1 sta (dest,x)
jsr $E6D1
dey
_bpl bmi loop
bcs q0
bcc q1
get JMP $A293
stop rts
Wynik: 26 bajtów ;)
Trzeba się tylko upewnić, że obydwa ROMy są w odpowiedniej wersji :D