Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
non-paged supervisor code calling paged application code
#7
so, now my header of "core.bas" is:
Code:
#PRAGMA push(case_insensitive)
#PRAGMA case_insensitive = True
#define STANDALONE  ' remove ROM initialization and SysVars...

Asm
    org $0000
    nop             ; your first nop
    nop             ; your second nop
    di              ; disable interrupts during setup
    nop
                    ; since SAVENEX CFG 7 killed the ROM, we are already in RAM
    jp _jump_over   ; jump to the setup logic
   
                    ; --- im 1 interrupt vector ---
    org $0038       ; hardware interrupt location
    ei              ; re-enable interrupts
    reti            ; return from interrupt
   
_jump_over:
    nop
    im 1            ; set interrupt mode 1
    nop
    ld sp, $fffe    ; set stack to top of bank 57
    nop
End Asm

s_main()
#include "constants.bas"
#include "globals.bas"

...and my sjasmplus linker is :

Code:
    DEVICE ZXSPECTRUMNEXT

; entry point at $0000 and stack at $FFFE
    SAVENEX OPEN "project.nex", $0000, $FFFE

; enable 2mb mode
    SAVENEX CFG 0, 0, 0, 1

; *** the hardware lock ***
; this bit tells the Next to disable the ROM and allow page 50 to map to slot 0
    SAVENEX CFG 7, 0, 0, 1

; load the core logic into page 50/51
    MMU 0, 50
    MMU 1, 51
    ORG $0000
    INCBIN "core.bin"

; load font into bank 56
    MMU 6, 56
    ORG $C000
    INCBIN "fon-056.fon"

; load stages
    MMU 3, 60 : ORG $6000 : INCBIN "stage-init.bin"
    MMU 3, 68 : ORG $6000 : INCBIN "stage-left.bin"
    MMU 3, 69 : ORG $6000 : INCBIN "stage-right.bin"

; final hardware state setup
    MMU 0, 50    ; core code
    MMU 1, 51    ; core code
    MMU 2, 52    ; core data
    MMU 7, 57    ; screen and stack

    SAVENEX AUTO
    SAVENEX CLOSE

but for some reason I still see the normal Spectrum ROM in   zesarux :


Code:
¤ Debug CPU (step)
  mptr:      0001H [X]  flwPC 1-7:V1

+0001  IM 1                PC 0001
  0003  JP 0080             SP FFFF
  0006  RST 38              AF FFFF'FFFF
  0007  RST 38              SZ5H3PNC
  0008  RETI                HL FFFF'FFFF
  000A  RST 38              DE FFFF'FFFF
  000B  RST 38              BC FFFF'FFFF
  000C  RST 38              IX FFFF
  000D  RST 38              IY FFFF
  000E  RST 38              IR 0001
  000F  RST 38             [IM0] IFF--
  0010  RETI               (HL) 00 F3
  0012  RST 38             (DE) 00 F3
                           (BC) 00 F3

(SP)  F300 56ED 80C3 FF00 EDFF F

stM dasm en:Stp Stovr cntSt Hx
Chr brk wtch ToglL Run Runt Ret
ClrTstpart Write vScr Memzn -1
Pc=ptr nxtpcBr stk cpuHst f1:he


I've tried for literally hours in a loop with Gemini to unmap the Spectrum ROM and get my code at page 50 to map to MMU0.

Could anyone please help me?    Thank you!
Reply


Messages In This Thread
RE: non-paged supervisor code calling paged application code - by sdo303 - 2026-02-18, 07:27 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)