I have patch for ESXDOS for possibility jump to original NMI code in ZX rom, if you hold SHIFT during pressing NMI button.
but work only if first instruction on ZX rom at address #66 is PUSH AF and return incorrect R register. All can be fixed later.
NMI PATCH
;new code for esxdos rom
RET ; 0066 C9
NOP ; 0067 00
LD ($3DF4), HL ; 0068 22 F4 3D
JP $1F4F ; 006B C3 4F 1F
As first I replace one instruction at address #6B
New routine is here:
1F4F: LD A, $FE
1F51: IN A, ($FE)
1F53: BIT 0, A
1F55: JR Z, $1F5F
1F57: POP AF
1F58: PUSH AF
1F59: LD HL, ($3DF9)
1F5C: JP $006E
1F5F: POP AF
1F60: PUSH AF
1F61: LD HL, $0067
1F64: PUSH HL
1F65: LD HL, ($3DF4)
1F68: JP $1FFA
press NMI+SHIFT = return to ZX rom to address #67
without SHIFT continue as original
this new code also cause incorrect value in R register and may need small fix... (add small DJNZ loop which add small delay and fix R)
This is usable in emulators, but on real ZX it need delay before last JP $1FFA. Ideally any loop 0.5 sec...
LD A, $FE
IN A, ($FE)
BIT 0, A
JR Z, $1F5F
POP AF
PUSH AF
LD HL, ($3DF9)
JP $006E
POP AF
PUSH AF
LD HL, $0067
PUSH HL
LD HL,XXXX ;delay value
LOOP: DEC HL
NOP
NOP
LD A,H
OR L
JR NZ,LOOP
LD HL, ($3DF4)
JP $1FFA