SE Basic IV 4.0 Anya

English forum about Speccy

Moderator: Shaos

User avatar
cheveron
Fanat
Posts: 52
Joined: 29 Jan 2013 13:43
Location: 86.182.165.70

Post by cheveron »

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. :)
User avatar
Shaos
Admin
Posts: 24032
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

So paging is required? This mode will not work on Timex-2048 where high-resolution mode is already implemented, but in the main memory?
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
cheveron
Fanat
Posts: 52
Joined: 29 Jan 2013 13:43
Location: 86.182.165.70

Post by cheveron »

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.
User avatar
Shaos
Admin
Posts: 24032
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

OK, I see - thanks!
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
cheveron
Fanat
Posts: 52
Joined: 29 Jan 2013 13:43
Location: 86.182.165.70

Post by cheveron »

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.
User avatar
Shaos
Admin
Posts: 24032
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

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
User avatar
cheveron
Fanat
Posts: 52
Joined: 29 Jan 2013 13:43
Location: 86.182.165.70

Post by cheveron »

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
User avatar
Shaos
Admin
Posts: 24032
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

I tried this basic in Fuse - interesting :)

Even some of my old basic-programs are working ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24032
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

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
User avatar
cheveron
Fanat
Posts: 52
Joined: 29 Jan 2013 13:43
Location: 86.182.165.70

Post by cheveron »

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?
User avatar
Shaos
Admin
Posts: 24032
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

OK, I'll try to modify your sources

For now I just launched unmodified ROMs in my Sprinter emulator (formerly known as SPRINT):

Image

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.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24032
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:In order to run BasicSE I implemented your memory mapping scheme with ports #7FFD and #FF and now I'm working on keyboard emulation...
Done! :)

Image
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24032
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

cheveron wrote:
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:

Code: Select all

< 000050e0  00 18 00 10 38 38 10 00  64 10 00 00 00 7c 10 10  |....88..d....|..|
< 000050f0  00 00 00 64 00 10 00 00  00 20 00 00 20 10 04 00  |...d..... .. ...|
< 00005100  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
< *
< 000051e0  00 24 00 30 44 44 30 00  64 00 00 00 00 10 00 10  |.$.0DD0.d.......|
< 000051f0  00 00 00 64 00 10 00 00  00 20 00 00 20 10 04 00  |...d..... .. ...|
< 00005200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
< *
< 000052e0  00 5a 00 10 44 44 10 00  54 10 38 18 00 10 10 10  |.Z..DD..T.8.....|
< 000052f0  18 1c 00 54 18 38 44 18  2c 24 1c 00 20 38 1c 00  |...T.8D.,$.. 8..|
< 00005300  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
< *
< 000053e0  00 62 00 10 3c 38 10 00  54 10 24 24 00 10 10 10  |.b..<8..T.$$....|
< 000053f0  24 20 00 54 24 10 44 24  30 28 20 00 20 10 24 00  |$ .T$.D$0( . .$.|
< 00005400  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
< *
< 000054e0  00 5a 00 10 04 44 10 00  4c 10 24 3c 00 10 10 10  |.Z...D..L.$<....|
< 000054f0  3c 18 00 4c 3c 10 54 24  20 30 18 00 20 10 24 00  |<..L<.T$ 0.. .$.|
< 00005500  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
< *
< 000055e0  00 24 00 10 08 44 10 00  4c 10 24 20 00 10 10 10  |.$...D..L.$ ....|
< 000055f0  20 04 00 4c 20 10 28 24  20 28 04 00 20 10 24 00  | ..L .($ (.. .$.|
< 00005600  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
< *
< 000056e0  00 18 00 10 30 38 10 00  44 10 24 18 00 10 10 08  |....08..D.$.....|
< 000056f0  18 38 00 44 18 08 28 18  20 24 38 00 3c 08 1c 00  |.8.D..(. $8.<...|
< 00005700  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
< *

< 00005c00  ff 00 00 00 ff 00 00 00  00 19 02 00 00 00 00 00  |ÿ...ÿ...........|
---
> 00005c00  ff 00 00 00 ff 00 19 0d  0d 07 02 00 00 00 00 00  |ÿ...ÿ...........|

< 00005c30  00 00 00 00 00 00 00 3c  3c 00 80 00 21 f6 ff 00  |.......<<...!öÿ.|
< 00005c40  00 00 00 00 00 00 00 00  07 00 00 cb 5c 00 00 b6  |...........Ë\..¶|
< 00005c50  5c b6 5c cb 5c 00 00 ca  5c cc 5c cc 5c 00 00 00  |\¶\Ë\..Ê\Ì\Ì\...|
< 00005c60  00 ce 5c ce 5c ce 5c 00  92 5c 10 02 00 00 00 00  |.Î\Î\Î\..\......|
< 00005c70  00 00 00 00 00 00 00 00  2c 00 00 40 5b 00 00 00  |........,..@[...|
< 00005c80  ff 00 02 17 00 40 ff 50  21 18 02 17 01 07 00 07  |ÿ....@ÿP!.......|
< 00005c90  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
< *
---
> 00005c30  00 00 00 00 00 00 00 3c  3c 00 ff c0 21 f6 ff 00  |.......<<.ÿÀ!öÿ.|
> 00005c40  00 00 00 00 ff fe ff 01  07 00 00 cb 5c 00 00 b6  |....ÿþÿ....Ë\..¶|
> 00005c50  5c b6 5c cb 5c d5 5c ca  5c cc 5c cc 5c d4 5c 00  |\¶\Ë\Õ\Ê\Ì\Ì\Ô\.|
> 00005c60  00 ce 5c ce 5c ce 5c 18  92 5c 10 02 00 00 00 00  |.Î\Î\Î\..\......|
> 00005c70  00 00 00 00 e6 1a 00 00  fc 02 00 40 5b 00 00 00  |....æ...ü..@[...|
> 00005c80  ff 00 4a 17 01 c0 e1 d0  51 18 4a 17 01 07 00 07  |ÿ.J..ÀáÐQ.J.....|
> 00005c90  00 00 00 00 00 00 00 db  02 4b 00 3e 00 c3 f6 24  |.......Û.K.>.Ãö$|
> 00005ca0  02 c2 f6 a1 38 83 0e 3f  00 88 0e c1 d7 49 24 00  |.Âö¡8..?...Á×I$.|

< 00005cc0  5a 39 c4 15 52 a5 33 c4  15 50 80 80 0d 80 00 00  |Z9Ä.R¥3Ä.P......|
< 00005cd0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
---
> 00005cc0  5a 39 c4 15 52 a5 33 c4  15 50 80 80 0d 80 0e 00  |Z9Ä.R¥3Ä.P......|
> 00005cd0  00 01 00 00 0d 80 00 00  01 00 00 00 0a 00 00 00  |................|
> 00005ce0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
P.S. Also it looks like these modes have different ROMs loaded in 0 page.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
cheveron
Fanat
Posts: 52
Joined: 29 Jan 2013 13:43
Location: 86.182.165.70

Post by cheveron »

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.
User avatar
Shaos
Admin
Posts: 24032
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

I already forked your repository on GitHub ;)

Now I need to understand how to build BasicSE IV from sources...
Я тут за главного - если что шлите мыло на me собака shaos точка net