nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 19 Aug 2017 20:11



Reply to topic  [ 51 posts ]  Go to page Previous  1, 2, 3, 4  Next
[ZX] SE Basic IV 4.0 Anya 
Author Message
Novelist
User avatar

Joined: 29 Jan 2013 16:43
Posts: 45
Location: 86.182.165.70
Reply with quote
Post 
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. :)


23 May 2013 10:11
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15434
Location: New York
Reply with quote
Post 
So paging is required? This mode will not work on Timex-2048 where high-resolution mode is already implemented, but in the main memory?

_________________
:eugeek: https://twitter.com/Shaos1973


23 May 2013 10:36
Profile WWW
Novelist
User avatar

Joined: 29 Jan 2013 16:43
Posts: 45
Location: 86.182.165.70
Reply with quote
Post 
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.


23 May 2013 10:54
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15434
Location: New York
Reply with quote
Post 
OK, I see - thanks!

_________________
:eugeek: https://twitter.com/Shaos1973


23 May 2013 13:14
Profile WWW
Novelist
User avatar

Joined: 29 Jan 2013 16:43
Posts: 45
Location: 86.182.165.70
Reply with quote
Post 
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 17:37
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15434
Location: New York
Reply with quote
Post 
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 :)

_________________
:eugeek: https://twitter.com/Shaos1973


23 May 2013 18:11
Profile WWW
Novelist
User avatar

Joined: 29 Jan 2013 16:43
Posts: 45
Location: 86.182.165.70
Reply with quote
Post 
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


23 May 2013 18:26
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15434
Location: New York
Reply with quote
Post 
I tried this basic in Fuse - interesting :)

Even some of my old basic-programs are working ;)

_________________
:eugeek: https://twitter.com/Shaos1973


23 May 2013 21:58
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15434
Location: New York
Reply with quote
Post 
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?

_________________
:eugeek: https://twitter.com/Shaos1973


26 May 2013 18:17
Profile WWW
Novelist
User avatar

Joined: 29 Jan 2013 16:43
Posts: 45
Location: 86.182.165.70
Reply with quote
Post 
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.

Quote:
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?


26 May 2013 18:32
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15434
Location: New York
Reply with quote
Post 
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...

_________________
:eugeek: https://twitter.com/Shaos1973


Last edited by Shaos on 27 May 2013 09:17, edited 1 time in total.



26 May 2013 20:23
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15434
Location: New York
Reply with quote
Post 
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

_________________
:eugeek: https://twitter.com/Shaos1973


27 May 2013 02:17
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15434
Location: New York
Reply with quote
Post 
cheveron wrote:
Quote:
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:
< 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.

_________________
:eugeek: https://twitter.com/Shaos1973


27 May 2013 02:29
Profile WWW
Novelist
User avatar

Joined: 29 Jan 2013 16:43
Posts: 45
Location: 86.182.165.70
Reply with quote
Post 
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.


27 May 2013 08:59
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15434
Location: New York
Reply with quote
Post 
I already forked your repository on GitHub ;)

Now I need to understand how to build BasicSE IV from sources...

_________________
:eugeek: https://twitter.com/Shaos1973


27 May 2013 09:20
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 51 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.