Shaos wrote:Thanks! I'll try to play with this - at least in emulators
Just grab a copy of Fuse 1.1 ( http://fuse-emulator.sourceforge.net ). Select the ZX Spectrum SE model. Then type MODE 1 and press [ENTER]. In this mode the screen is normally paged out so instead of losing 6.75K of RAM to the larger screen, you actually get an additional 6.75K of main RAM (where the screen normally lives), which gives you code page support. Would be nice if someone could put together a small Russian demo using it.
Shaos wrote:So paging is required? This mode will not work on Timex-2048 where high-resolution mode is already implemented, but in the main memory?
That's correct. To enable BASIC to work properly in 80x24 mode (including editing programs) requires at least 32K of ROM (or you'd lose support for 32x24 mode). I did have a version of the code that used the Timex screen area but that required moving the BASIC area past the second screen. At that point almost no existing software would run. It also left very little room for BASIC.
Once you get used to using 80x24 mode it's fairly unpleasant to go back to 32x24 mode. I'm hoping that this will lead to more people building Chloe 280SE compatible clones. It helps that Fuse 1.1 actually ships with SE Basic IV, so there's no need to mess about with swapping ROMs.
I checked your documentation - you didn't support mode with attributes per byte in your Basic, why?
Different attributes per every 8 pixels should look interesting
Я тут за главного - если что шлите мыло на me собака shaos точка net
Shaos wrote:I checked your documentation - you didn't support mode with attributes per byte in your Basic, why?
Different attributes per every 8 pixels should look interesting
The trouble is that when you support more than one mode you either have to have a different ROM for each mode (as with SE Basic IV) or you have to do branching and the more modes the slower it gets with branching. As the bitmap area is the same in 8x8 attribute or 8x1 attribute mode there's really no excuse for a whole new ROM. The simplest solution for using 8x1 mode is a dedicated text channel attached to a stream with support for 256 UDGs. I've already got all the code necessary to do it. In fact I've got a version that does it in software on the original 1982 hardware: http://www.worldofspectrum.org/infoseek ... id=0021575
How difficult is to port it on different Z80-hardware? For example, I need to have different font size and bigger width and height of the text screen (and totally different graphics) and different keyboard reading technique...
P.S. Also is there easier way to immediately switch to mode 1 automatically on the start?
Я тут за главного - если что шлите мыло на me собака shaos точка net
Shaos wrote:How difficult is to port it on different Z80-hardware? For example, I need to have different font size and bigger width and height of the text screen (and totally different graphics) and different keyboard reading technique...
Well, if you have a VDP like one of the TMS devices, pretty trivial. The I/O is a fairly small part of the ROM so it's not a big deal to rewrite it for a new machine.
P.S. Also is there easier way to immediately switch to mode 1 automatically on the start?
It starts in low-res because 99.9% of software runs in that mode and devices like divIDE force ROM1 anyway. Maybe save a snapshot and just start by loading that?
P.S. Also is there easier way to immediately switch to mode 1 automatically on the start?
It starts in low-res because 99.9% of software runs in that mode and devices like divIDE force ROM1 anyway. Maybe save a snapshot and just start by loading that?
This is the difference between just loaded mode 0 and just switched mode 1:
Shaos wrote:Also it looks like these modes have different ROMs loaded in 0 page.
That's correct. Each mode uses its own ROM (with ROM1 being lo-res). That means no branching, and no complex ROM calling system. It also means ROM1 can be used wihout ROM0 in a 16K-ROM machine. Then you get all of the features of SE Basic IV except hi-res mode. Of course if you're modifying for Sprinter, you may as well modify ROM0 to use the native 80x25 text mode instead.
Also, with the keyboard routines, the next version of SE Basic IV will include a much simpler routine that is both faster and more space efficient.