[A86] Re: Breaking 8k asm limit
[Prev][Next][Index][Thread]
[A86] Re: Breaking 8k asm limit
I've pasted the relevant code from Zelda 86 that does the relocation. As
you can see, it's really quite simple. It just grabs the string and loads
it into RAM page 1, using the ROM's ABS routines. ZeldaDat is the
destination address in RAM page 1. The reason $8000 is subtracted from
ZeldaDat is because it uses an ABS address. I don't remember exactly how
ABS addresses work (they're pretty simple), but they are relative. HL
contains the address relative to the RAM page, and A contains the page
number (maybe that's all there is to them). $9300 is $1300 bytes into the
page, so that is the value used.
ZeldaDat = $9300 ; [...]
LoadData:
ld hl,ZeldaDatVar-1
rst 20h
rst 10h
ret c
call _ex_ahl_bde
call _get_word_ahl
call _set_abs_src_addr
ld a,1
ld hl,ZeldaDat-$8000
call _set_abs_dest_addr
sub a
ex de,hl
call _set_mm_num_bytes
call _mm_ldir
call _ram_page_1
ZeldaDatVar:
.db 8,"zeldadat"
> I'm no good at all trying to manipulate the vat, i'll be glad if someone
> could write it or tell me that this is a useless post...
Follow-Ups:
References: