I think I may have answered my own question. A Report F (no filename) works fine from my routine:Bill H wrote: ↑Fri Jan 29, 2021 9:20 pm Hi all - I am back to working on this, its going along nicely but I am stumped. After I load a .P file to the proper location in memory (along with all the correct system variables) where should I jump into the ROM? I am only making use of the "NAME" routine to get the name they passed in LOAD " " then I am using my emulator code to load the P file (which I created with the TS1000 emulator by jeff v) into memory starting at 16393 ($4009, ie system variable "VERSION" ) and all loads good, just need to know where to go to pass back control to the ZX81 ROM. The actual load routines in the ROM are a bunch of spaghetti. The only thing I was able to chase down was to go to the SLOW/FAST routine which seems to be where it ends up when there is no more data to load but that just causes it to reset system variables, loosing what I loaded. Any help would be great - there is a lot of interest in the Coleco Adam community in this emulator project.
So I figured - can I do a Report 0 - all is good? I tried this:
And it works - I realized the report code is 1 less than the value you want - so 255 is 1 less than 0 in 8 bit
with the same error I coded my first emulator, however my games have evolved beyond that. My latest emulator has the right return address. I will post it later.
BTW since last year I coded several games with special code on the screen. Your emulator might need a change to have those running.
this is where my emulator continues after LOADING a program
Code: Select all
; In the ROM teh LOAD-routine is altered to come here. ; LOADING goes from BASIC so you can alter to you own special hardware loader di ld b,4 ; 1024 and more call bk2bas ; use BASIC as loader im 2 ld hl,(frames) ; after loading simulate 1 intrupt only dec hl set 7,h ld (frames),hl ld hl,isr2 ; skip normal intrupt for >1/2 sec after loading ld (isrmod+1),hl ; to create time to run special code in some games ld b,tab1 ld de,#676+#8000 ; start after loading a game ei jp i00+1
From there I made my own loader (In BASIC, under "bk2bas")
After the load I must reset IM 2 for the screendisplay.
The normal ROM will decrease frames 1x. I simulate that too. This is NEEDED for my games that use machinecode over the sysvar
that use this behaviour.
After that you can start the program at #676