EightyOne ZX81 emulator does not have a 56kB RAM option?

Emulator and emulator development specific topics
Post Reply
Kahenraz
Posts: 11
Joined: Mon Feb 10, 2020 2:06 pm

EightyOne ZX81 emulator does not have a 56kB RAM option?

Post by Kahenraz » Tue Feb 11, 2020 9:06 am

I noticed today while experimenting with emulators that No$zx has an option for 56kB RAM. This is expected as the ROM size is 8kB and this would add up to the maximum of addressable 64kB. But EightyOne does not have this option. Does anyone know why?

User avatar
mrtinb
Posts: 1165
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: EightyOne ZX81 emulator does not have a 56kB RAM option?

Post by mrtinb » Tue Feb 11, 2020 10:05 am

EightyOne has this option.
  • You select 48k RAM
  • You select RAM in area 8k - 16k
Martin
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube

Kahenraz
Posts: 11
Joined: Mon Feb 10, 2020 2:06 pm

Re: EightyOne ZX81 emulator does not have a 56kB RAM option?

Post by Kahenraz » Tue Feb 11, 2020 10:48 am

What is the relevance of this as an exclusive option?

User avatar
mrtinb
Posts: 1165
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: EightyOne ZX81 emulator does not have a 56kB RAM option?

Post by mrtinb » Tue Feb 11, 2020 11:57 am

The 8k - 16k area was originally intended for ROM, and some upgrades uses this, including the Memotech MEMO and Memotech Centronics I/F.

Using 8k- 16k area for RAM is almost a "hack".
Martin
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube

User avatar
1024MAK
Posts: 2761
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: EightyOne ZX81 emulator does not have a 56kB RAM option?

Post by 1024MAK » Thu Feb 13, 2020 6:08 pm

The address decoding done by the ULA (for the ZX81, TS1000) and logic chips (ZX80) only uses CPU address line A14.
A14 LOW selects ROM
A14 HIGH selects RAM.

Sinclair used a 8K byte ROM chip, the decoding puts it at 0x0000 to 0x1FFF. But also at 0x2000 to 0x3FFF, 0x8000 to 0x9FFF and 0xA000 to 0xBFFF. Note that as there is only 8K bytes of ROM, the SAME information is in all four decoded memory ranges. This is called partial address decoding.

It’s a similar story with the RAM.

Hence ‘traditionally’ third party expansions have mostly used 0x2000 to 0x3FFFF for ROM (EPROM)s rather than RAM. Also, the BASIC system will not recognise or use RAM below 0x4000 (16384). So RAM between 0x2000 to 0x3FFF is only useful for machine code programs unless you use PEEK and POKE to access it in BASIC.

More on the memory map in this thread ;)

Mark

Post Reply