diff options
author | yenatch <yenatch@gmail.com> | 2013-09-08 23:54:12 -0400 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2013-09-08 23:54:37 -0400 |
commit | abb7f2fa20e49cf56a55c81d4ec86431e3009098 (patch) | |
tree | bf2fed87ded013b7bf00968a366d010eaa7672e6 | |
parent | 4778276f33c59bb0bc56cb381d4fe1dc8da1f9b8 (diff) |
split Predef into common/predef.asm
-rw-r--r-- | common/predef.asm | 54 | ||||
-rw-r--r-- | main.asm | 55 |
2 files changed, 55 insertions, 54 deletions
diff --git a/common/predef.asm b/common/predef.asm new file mode 100644 index 000000000..bd34a87a1 --- /dev/null +++ b/common/predef.asm @@ -0,0 +1,54 @@ +Predef: ; 2d83 +; Call predefined function a. +; Preserves bc, de, hl and f. + + ld [PredefID], a + ld a, [hROMBank] + push af + + ld a, BANK(GetPredefPointer) + rst Bankswitch + call GetPredefPointer ; stores hl in PredefTemp + +; Switch to the new function's bank + rst Bankswitch + +; Instead of directly calling stuff, +; push it to the stack in reverse. + + ld hl, .Return + push hl + +; Call the Predef function + ld a, [PredefAddress] + ld h, a + ld a, [PredefAddress + 1] + ld l, a + push hl + +; Get hl back + ld a, [PredefTemp] + ld h, a + ld a, [PredefTemp + 1] + ld l, a + ret + +.Return +; Clean up after the Predef call + + ld a, h + ld [PredefTemp], a + ld a, l + ld [PredefTemp+1], a + + pop hl + ld a, h + rst Bankswitch + + ld a, [PredefTemp] + ld h, a + ld a, [PredefTemp + 1] + ld l, a + ret +; 2dba + @@ -505,60 +505,7 @@ Function2d43: ; 2d43 INCLUDE "common/farcall.asm" - -Predef: ; 2d83 -; Call predefined function a. -; Preserves bc, de, hl and f. - - ld [PredefID], a - ld a, [hROMBank] - push af - - ld a, BANK(GetPredefPointer) - rst Bankswitch - call GetPredefPointer ; stores hl in PredefTemp - -; Switch to the new function's bank - rst Bankswitch - -; Instead of directly calling stuff, -; push it to the stack in reverse. - - ld hl, .Return - push hl - -; Call the Predef function - ld a, [PredefAddress] - ld h, a - ld a, [PredefAddress + 1] - ld l, a - push hl - -; Get hl back - ld a, [PredefTemp] - ld h, a - ld a, [PredefTemp + 1] - ld l, a - ret - -.Return -; Clean up after the Predef call - - ld a, h - ld [PredefTemp], a - ld a, l - ld [PredefTemp+1], a - - pop hl - ld a, h - rst Bankswitch - - ld a, [PredefTemp] - ld h, a - ld a, [PredefTemp + 1] - ld l, a - ret -; 2dba +INCLUDE "common/predef.asm" ResetWindow: ; 2dba |