Hi guys
I have a problem with a routine that activate the firmware, amsdos, and rom nº6 (where is acmedos).
the thing is that the routine itself alone works, but if i implement it on a game, the same routine hangs on the call of the rom nº6
the code is located on the second bank &C000, (mode #C1)
the code is not totally implemented on the game, but i want to know what it hangs on the "call &BCCE"!!
i'm out of ideas, please can someone help me in this one?
org #c000 ;[#C1-#C000]
jp entry
;---VARIABLES----;
MODE equ 0
.drive db #00
.dire_jump_restore db #bd,#88
.dire_descomp db #00,#00
.stack_orig db #00,#00
.nombre_fase db "lvlx.apl"
;---VARIABLES_FIN----;
.restore_HIGH_jumpblock
ld bc, &7f88 OR MODE
out (c),c
call &44
ld bc, &7f8c OR MODE
out (c),c
ret
.restore_HIGH_jumpblock_end
.firmware_JUMP_RESTORE
; LOW JUMP
rst &8
dw 0
.entry
ld sp,#c000
ld hl,#88BD
ld (firmware_JUMP_RESTORE+1),hl
ld hl,&c9fb
ld (&38),hl
di
call restore_HIGH_jumpblock
exx
ld bc, &7f8c OR MODE
exx
ei
call firmware_JUMP_RESTORE
call &bb00 ; KM INITIALISE
ld c,7 ; AMSDOS
ld de,&0040
ld hl,&abff
call &bcce ; KL INIT BACK
ld c,6 ; Acmedos
ld de,&0040
ld hl,&abff
call &bcce ; KL INIT BACK HERE IT HANGS, NEVER RETURN OF THIS CALL!!!
ld c,7 ; AMSDOS
ld de,&0040
ld hl,&abff
call &bcce ; KL INIT BACK
ld c,6 ; Acmedos
ld de,&0040
ld hl,&abff
call &bcce ; KL INIT BACK HERE IT HANGS, NEVER RETURN OF THIS CALL!!!
Are you supposed to overwrite the AMSDOS variables when Acmedos is initialized? Should it be this:
ld c,7 ; AMSDOS
ld de,&0040
ld hl,&abff
call &bcce ; KL INIT BACK
ld c,6 ; Acmedos
call &bcce ; KL INIT BACK