pokecrystal-board/home/farcall.asm

55 lines
733 B
NASM
Raw Normal View History

FarCall_de:: ; 2d54
; Call a:de.
; Preserves other registers.
ld [hBuffer], a
ld a, [hROMBank]
push af
ld a, [hBuffer]
rst Bankswitch
call .de
jr ReturnFarCall
.de
push de
ret
; 2d63
FarCall_hl:: ; 2d63
; Call a:hl.
; Preserves other registers.
ld [hBuffer], a
ld a, [hROMBank]
push af
ld a, [hBuffer]
rst Bankswitch
2015-11-03 19:35:36 -08:00
call FarJump_hl
; 2d6e
ReturnFarCall:: ; 2d6e
; We want to retain the contents of f.
; To do this, we can pop to bc instead of af.
ld a, b
2015-11-03 19:35:36 -08:00
ld [wFarCallBCBuffer], a
ld a, c
2015-11-03 19:35:36 -08:00
ld [wFarCallBCBuffer + 1], a
; Restore the working bank.
pop bc
ld a, b
rst Bankswitch
2015-11-03 19:35:36 -08:00
ld a, [wFarCallBCBuffer]
ld b, a
2015-11-03 19:35:36 -08:00
ld a, [wFarCallBCBuffer + 1]
ld c, a
ret
; 2d82
2015-11-03 19:35:36 -08:00
FarJump_hl:: ; 2d82
jp [hl]
; 2d83