approx. one year ago I played a little bit with the Speccy-Emulator rom for the ZX81, coming with EO (the SP81.rom).
I found, that it works fine with EO, but not with my ZX81 I used to test, because that was a 64K Zeddy(*).
The problem with SP81.rom is, that the dummy D-File for generating the HRG output is located in the region 8-16K (somewhere at the end of the unused rom space).
But located there, only a real 16K (which has rom images above 32K) works correctly when generating the HRG display of the Speccy. But a 32/48/64K Zeddy does not have that rom images! So with that Zeddies the HRG display of SP81.rom does not work!
My idea then was, to relocate the 33 byte dummy D-file from below 16K into the region 16-32K, because then the display generation would also work with my 64-K Zeddy. But I don't know, where there is some free (and secure) space in a Speccy in range 16-32K to hold the D-file...
I did some tests with a modified SP81-rom (it copied the dummy D-File during each video frame above 16K and "executed" the D-file there). It worked with EO in most cases (but not all), so I did not test it on a real Zeddy and stopped work ...
So my first question is; where is the D-file located in your rom?
(*) That is the only Zeddy I have, which has 16 KB ram starting at 0, that I use to test rom patches ...
The D-FILE is located at the end of printer buffer - this is in the 16K-32K region, in front of system variables.siggi wrote: So my first question is; where is the D-file located in your rom?
If printer is in use, Zeddy is in FAST mode. The printing session ends with clear buffer, so we can use it again as D-FILE.
SP81 - there was more (mostly timing) problem:
1.) there is no synch between CPU and HSYNC-generator
(that certain HALT instruction at last NMI before display or VSYNC!!);
2.) the lineperiod is 207 Tstates in Zeddy - the D-FILE in SP81 is at least T210
(if "$ED, RET" works as RET, else is T220!!);
3.) keyboard handling comes from Speccy with various runtime depending on the pressed key.
So the length of VSYNC is not constant;
zsoltzsolt wrote: I will publish the source code with comments as well, as soon as possible.
ps: sorry for my "hunglish"
It seems that I wrote bad things only about sp81, but it has a really good part, which is (with some modification) implemented in SPONZY too: the NMI-stack.zsolt wrote: SP81 - there was more (mostly timing) problem:
To calculate the addresses in the Speccy's nonlinear H-File is a time-consuming work for CPU.
Exetuting D-FILE we have not enough time to do.
That helps the NMI-stack, which contains the startaddresses of each scanlines and the suitable return addresses (from D-File). It's simple, fast, elegant - congrats for it.
Done. And it works!siggi wrote: That sounds great. I will try it on my 64K Zeddy ...
But the Zeddy with 16 K ram starting at 0k is my web-server zeddy. So I had to overwrite the server-startup-rom with the SPONZY-rom (first 8k). After I had found out, how I had to set the DIP-switches at the front of the Zeddy
to disable the EEPROM in the 8-16K range and to enable the ram there for programming with the new rom (this zeddy is running since 2007 as web-server, so I did not play around too much with it since then), the Speccy bootet on my Zeddy
I did some tests with printing and plotting on screen and found no problems.
And I defined a big array
and got no error, so SPONZY seems to run as 48K Speccy ...
But now the server is running again, so SPONZY is now down.
Sensationally good news!!!siggi wrote: Done. And it works!
Thank you very much!!!
(if the tape io works too...)
I tried also SAVE and LOAD onto an MD-recorder instead of a cassette recorder. The MD-recorder works fine with my ZX81.
and saw then black an white stripes on the screen. And something was written to the MD-recorder
Then I did
and tried to load the saved program. But the screen remains white (no black stripes) and nothing is loaded.
Then I did a load/save test with the ZX81 rom and it works (so the cabling and the recorder is ok)
Because I am not familiar with a Speccy: were the commands correct?
Yes, the syntax of these commands is same in Speccy too.siggi wrote: were the commands correct?
I tried your steps in EO - SAVE "test" then NEW and LOAD "test" - there was no problem, 'Zeddy' switched to FAST mode.
I don't understand - yet.siggi wrote: But the screen remains white (no black stripes) and nothing is loaded.
I did the same save/load test with a tape recorder and had the same behaviour (white screen during load).
And I had some other problem, which I could reproduce with EO V0.52 (ZX81 with 48K ram and /M1-circuit enabled):
when I enter the following program
Code: Select all
10 for f=32 to 255 20 print chr$ f; 30 next f
Code: Select all
40 save "test"
Do you get the same result?
I use the SPONZY-rom stored on my server at
I hope, that it is not corrupted....