Author |
Message |
cheveron
Fanat
Joined: 29 Jan 2013 13:43 Posts: 52 Location: 86.182.165.70
|
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.
|
23 May 2013 07:11 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
So paging is required? This mode will not work on Timex-2048 where high-resolution mode is already implemented, but in the main memory?
|
23 May 2013 07:36 |
|
|
cheveron
Fanat
Joined: 29 Jan 2013 13:43 Posts: 52 Location: 86.182.165.70
|
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.
|
23 May 2013 07:54 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
OK, I see - thanks!
|
23 May 2013 10:14 |
|
|
cheveron
Fanat
Joined: 29 Jan 2013 13:43 Posts: 52 Location: 86.182.165.70
|
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.
|
23 May 2013 14:37 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
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
|
23 May 2013 15:11 |
|
|
cheveron
Fanat
Joined: 29 Jan 2013 13:43 Posts: 52 Location: 86.182.165.70
|
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
|
23 May 2013 15:26 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
I tried this basic in Fuse - interesting
Even some of my old basic-programs are working
|
23 May 2013 18:58 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
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?
|
26 May 2013 15:17 |
|
|
cheveron
Fanat
Joined: 29 Jan 2013 13:43 Posts: 52 Location: 86.182.165.70
|
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.
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?
|
26 May 2013 15:32 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
OK, I'll try to modify your sources
For now I just launched unmodified ROMs in my Sprinter emulator (formerly known as SPRINT):
It's 640x350 EGA-like screen
In order to run BasicSE I implemented your memory mapping scheme with ports #7FFD and #FF and now I'm working on keyboard emulation...
Last edited by Shaos on 27 May 2013 06:17, edited 1 time in total.
|
26 May 2013 17:23 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
Done!
|
26 May 2013 23:17 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
This is the difference between just loaded mode 0 and just switched mode 1:
P.S. Also it looks like these modes have different ROMs loaded in 0 page.
|
26 May 2013 23:29 |
|
|
cheveron
Fanat
Joined: 29 Jan 2013 13:43 Posts: 52 Location: 86.182.165.70
|
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.
|
27 May 2013 05:59 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
I already forked your repository on GitHub
Now I need to understand how to build BasicSE IV from sources...
|
27 May 2013 06:20 |
|
|