Jump to content
Kchula-Rrit

16-Bit RAM and the RF Shield...

Recommended Posts

15 minutes ago, DuaneAL said:

Is the scratchpad limited to 256?  I seem to recall that it could be expanded but I don't know if there would be a benefit to doing that.  Although, if you had a larger scratchpad, that might make Playground more interesting.

The scratchpad responds to memory addresses >8000 to >83FF, so you could in theory drop 1k of RAM there. Any software that relies on the mirroring would fail, but in the unlikely instance that any was found, we could fix it. ;)

 

Share this post


Link to post
Share on other sites

I would swear I saw instructions to modify the system for 1kB of scratchpad once, but I'm unable to find them.

Share this post


Link to post
Share on other sites

Here are more accurate numbers for the BYTE Sieve in 9900 assembly. The previous stock numbers did not reflect my most efficient 9900 code, omitting one tweak. The following reflect identical code on a 16-bit console, on a stock console using scratchpad for registers (expansion ram for code and the ~8190 byte array), and a stock console using expansion RAM for everything. 

 

16-bit              Registers in PAD                     Nothing in PAD     

6.41"                 9.19"    70%                 12.00"     53% of 16-bit

 

Just for context, the original BYTE article cites assembly speeds of 6.8" for a Z80 at 4 Mhz (presumably), 13.9" for a 6502 at ~1 Mhz (Ohio Superboard), 4" for an 8088 at 5 Mhz, 1.9" for an 8086 at 8 Mhz, and 0.49" for an 8 Mhz 68000. Time (and memory address space) was already marching on.            

 

Share this post


Link to post
Share on other sites
7 hours ago, Tursi said:

The scratchpad responds to memory addresses >8000 to >83FF, so you could in theory drop 1k of RAM there. Any software that relies on the mirroring would fail, but in the unlikely instance that any was found, we could fix it. ;)

 

Thank you!

Share this post


Link to post
Share on other sites

A limiting factor for the expansion of the scratch pad is that the range >8000 - >9FFF is also used to map in other stuff. Like video and sound processors.

But the first 1 K is free. As already written above, the existing 256 bytes show up four times in that range. Thus the byte at addresses >8000, >8100, >8200 and >8300 is actually the one and same. An expansion will further decode this, so you get four different 256 byte segments here.

My 16-bit memory expansion design allows paging in memory into all 8 K slots in the machine, >8000 - >9FFF included. But as soon as I do that, it will cover everything in that range. Thus I can't access the VDP when I have memory there.

In addition to the RAM PAD, access ports to video, sound, speech and GROM are located in the >8000 - >9FFF range.

Share this post


Link to post
Share on other sites

I used the area below 8300 in the Geneve's GPL mode for my Guru meditation program:

 

 

Share this post


Link to post
Share on other sites

Like this?

1K-16Bit-Too.jpg.3df79fc3fce28466969a21aef1b1547a.jpg

 

I had heard of some unused bits in the 9901.  If the two RAM chips were replaced with 512-byte chips, a dual 2-to-1 multiplexer could be used to switch between actually using A6 and A7 to address the full 1K RAM or keeping the new RAM in the >83XX range.  If the 9901 initialized to all inputs the pull-up would keep the RAM TI-compatible until software enables the whole bank.  The formerly-unused bit being set high would keep TI compatibility (mirroring), and a low would enable the whole >8000-83FF range.

 

A 74LS157 could be "dead-bug" glued (they called it that when I worked on computers for a living) to the top of another chip to tap the signals.

 

Apologies in advance if the picture messes things up, the Web-site seems to not let me insert it where I want to.

 

K-R.

On 11/3/2020 at 6:00 PM, Tursi said:

The scratchpad responds to memory addresses >8000 to >83FF, so you could in theory drop 1k of RAM there. Any software that relies on the mirroring would fail, but in the unlikely instance that any was found, we could fix it. ;)

 

 

Edited by Kchula-Rrit

Share this post


Link to post
Share on other sites

Be aware that the HIGH output on a 9901 is not high enough voltage on it's own to be a stable logic level to a RAM chip... I tried that years ago. ;)

 

(Edit: I see you do have a pull up there, so might work! ;) )

 

Edited by Tursi

Share this post


Link to post
Share on other sites
21 hours ago, Tursi said:

Be aware that the HIGH output on a 9901 is not high enough voltage on it's own to be a stable logic level to a RAM chip... I tried that years ago. ;)

 

(Edit: I see you do have a pull up there, so might work! ;) )

 

I put the pull-up there because the 9901, upon reset, is set to all pins being inputs.  This would make the default setting to TI compatible, with RAM at >8300-83FF.

 

The 9901 data sheet, along with the TI 99/4A schematic, use 10K pull-ups instead of the 1K I used.  The data sheet said the input current on 9901 inputs is in the micro-amps range.  It did not say what the output max current is, but the 99/4A uses 9901 outputs to drive TTL chips.

 

Anyway, looking at the schematic, Pin 29 (P10/INT12), Pin 37 (P1), and Pin 38 (P0) appear to be unused.  Pin 29 even has a 10K pull-up already on it.

 

K-R.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...