ZXblast - ZX81 memory extension plus USB

Any discussions related to the creation of new hardware or software for the ZX80 or ZX81
User avatar
PokeMon
Posts: 2264
Joined: Sat Sep 17, 2011 6:48 pm

Re: ZXblast - ZX81 memory extension plus USB

Post by PokeMon »

Hi Brian,

thanks for your questions and I think I have to add this in documentation. So a section for programmers is needed. ;)

I will answer it from last to first - is more easy for me.
Register $50
This is a special feature requested from developers of the german forum and as there was space in the CPLD I realized this. When ZXblast is attached to a standard ZX81 via expansion connector, /RAMCS is pulled high which disables all internal RAM. There maybe some hardware supplying own RAM (extension cards) which can not be switched off. To avoid collisions, ZXblast can be told to not serve a specific address area ($2000-$3FFF, $8000-$BFFF, $C000-$FFFF). If the corresponding bit is set, ZXblast does not react on read/write in these address areas - as long as RAM is chosen in general for the address area (see register $20, ROM/RAM selection to address area). If ROM is selected in one of these address areas, the ROM will NOT be switched off.

And by the way, there are some 19 inch ZX81 systems existing with a bus and several slots for hardware modules where this feature could be useful. These are named ZX96, ZX97 and maybe ZX2000 (not 100% sure, I don't own any of these systems.
Register $40 (page window address)
Here you can move the page area/window to any required location through memory. Choosing $50 will select the page to $8000-$9FFF if a 8k page size is used. If the page size is set to 16k, the page starts at $8000 and ends at $BFFF. You can not start a 16k page to address $A000-$DFFF for example as 16k pages begin on boundaries only (A13 is not used in this case).

And I did a small change for better programming
bit 4 is used as high bit of page number and bit 5-7 is used for page window address with following result:

$40=page window address
$00=$0000
$20=$2000
$40=$4000
$60=$6000
$80=$8000
$A0=$A000
$C0=$C000
$E0=$E000
bit 4=high bit of page select register to use page 16-31
Register $30 (page select)
$00-$F0 selects one of 16 pages while the other 16 pages are selected with setting bit 4 of register $40. The reason for this are restrictions to available address lines and macro cells in CPLD, requesting some compromises. So you have 32 pages all in all and have a memory hole when using 8k pages only (every second page is used). The 8k window size was a feature to have more fix memory available in your instance, only 8k pageable memory.

And the pages are used from bottom till down, page 0 is the highest page (instance 7, $C000-$FFFF) while page 29-32 would reference the ZXblast control instance - be carefully using this memory area. This has the advantage, that you can mix paging and multiple instances on you request. If you need only 256k memory, than only instances 4-7 memory is used for paging while you could use instance 1-3 for user programs. This mode is quite flexible.

page 0 = $7C000-$7FFFF
page 1 = $78000-$7BFFF
page 2 = $74000-$77FFF
page 3 = $70000-$73FFF
page 4 = $6C000-$6FFFF
... and so on

In fact this is not the true address in RAM as all page bits are inverted physically - but this is another story. From developers view you can use this model. And it is quite flexible as you could use the pages used or better blocked from the ROM of all other instances as well. So using page 3,7,11,15,19,23,27 you can have 7 instances with full memory and 7x16k pages as well. But need maybe more logic in your program.


Last but not least - all the features and memory access is available in parallel to the video display. The RAM is not mirrored (unless you set bit 5 of control register $10) and during video display the memory address of $4000-$7FFF is forced automatically even if the ZX81 does address the expected mirror at $C000-$FFFF. This allows to use this area for paging area as long as you do not force to execute code to this area. The extended M1NOT from the ZXmore (executable code anywhere in memory) is not available here. This might be realized in future, I think. Well - we will see.

Setting the mirror bit in register $10 is for compatibility mode only to specific programs requiring the (memory wasting) mirror technique.

So hope it is getting clearer now. Will draw some pictures for the manual for easier understanding. ;)
User avatar
blittled
Posts: 229
Joined: Fri Dec 19, 2008 3:04 am
Location: Northwestern Pennsylvania, USA

Re: ZXblast - ZX81 memory extension plus USB

Post by blittled »

Thanks Karl!

This does clear things up a bit. I'm an electrical engineer/computer programmer and MUST KNOW EVERYTHING when it comes to computers great and small :D

I am planning on working on an Ultima style program and want to use the $2000-$3FFF area for a library of machine code routines and using $C000-$FFFF for map and game data so I will be switching the $C000-$FFFF area quite a bit for different gaming environments.

I'm looking forward to your updated manual. Keep up the good work.
2X Timex Sinclair 1000, ZX81, ZX80Core, 5X 16K Ram Pack, ZXBlast, ZX P file to Ear Input Signal Converter, Elf II
User avatar
GCHarder
Posts: 427
Joined: Sat Dec 14, 2013 7:46 pm

Re: ZXblast - ZX81 memory extension plus USB

Post by GCHarder »

Date/Time still not working.

See the attached.

Regards;

Greg
Screen caps
Screen caps
Date-Time.gif (17.77 KiB) Viewed 3289 times
User avatar
mrtinb
Posts: 1906
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: ZXblast - ZX81 memory extension plus USB

Post by mrtinb »

Has anyone got Hot-Z working?
Martin
https://zx.rtin.be
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube
User avatar
PokeMon
Posts: 2264
Joined: Sat Sep 17, 2011 6:48 pm

Re: ZXblast - ZX81 memory extension plus USB

Post by PokeMon »

GCHarder wrote: Wed Mar 08, 2017 6:24 pm Date/Time still not working.

See the attached.

Regards;

Greg

Date-Time.gif
Did you order an assembly kit or the completed module ?
I am not sure now.
What happen if you enter 01.01.2000 00:00:00 ?
User avatar
GCHarder
Posts: 427
Joined: Sat Dec 14, 2013 7:46 pm

Re: ZXblast - ZX81 memory extension plus USB

Post by GCHarder »

I ordered the assembled module. Is there someway to test the flash memory, assuming that's where the data is stored? Could it be a dead battery, I don't see how that would cause the problem when turned on though.

I'll try your new sample when I get home.

Regards;

Greg

Just to clarify that is the complete module, no soldering.
User avatar
PokeMon
Posts: 2264
Joined: Sat Sep 17, 2011 6:48 pm

Re: ZXblast - ZX81 memory extension plus USB

Post by PokeMon »

Could you just remove the battery, leave a few minutes without power and switch it on (left without battery) and describe what is displayed then (with no manual configuration - just type what is shown when displayed). Thanks.

Is the RTC in a socket (on component side) or soldered directly on solder side ?

Maybe the chip is accidently write protected - removing battery should reset the chip.
User avatar
GCHarder
Posts: 427
Joined: Sat Dec 14, 2013 7:46 pm

Re: ZXblast - ZX81 memory extension plus USB

Post by GCHarder »

The plot thickens...

I think you may be right. I don't know which is the RTC chip but it has to be the thingy behind the battery, its soldered on, all the large chips are socketed.

Before I lobotomize HAL here's some more info.

Your suggested sample didn't work.

I tried a different machine, still didn't work.

BUT...

I switched the 8K-16K area from ROM to RAM
Pressed W
Turned HAL off then on
The 8K-16K area was back to ROM

So either the W function is not working or as you say the memory is locked.

Also, as noted elsewhere I couldn't get HOT-Z to work.

Regards;

Greg
Last edited by GCHarder on Sat Mar 11, 2017 11:21 pm, edited 1 time in total.
User avatar
PokeMon
Posts: 2264
Joined: Sat Sep 17, 2011 6:48 pm

Re: ZXblast - ZX81 memory extension plus USB

Post by PokeMon »

The RTC has 8 pins.
Maybe soldered at the backside.
What happens if you remove the battery for a few minutes and leave it removed and power on, what date/time is displayed then and is the time moving ? I mean the round battery in the socket in the middle of the board, not the main power (both to remove of course for a few minutes).

The config is stored into the memory of RTC. W(rite) is not active, it is still stored whenever you change it and press Q(bit).
Removing the small CR1220 battery should normally reset the RTC chip completely (while power off, too).

By the way - I am a few days off, so can't answer before tuesday.
User avatar
PokeMon
Posts: 2264
Joined: Sat Sep 17, 2011 6:48 pm

Re: ZXblast - ZX81 memory extension plus USB

Post by PokeMon »

By the way - what the hell is HAL ? :mrgreen:
Never heard that ...
Post Reply