64K Memory and Display Expansion Replacement Project

Hardware questions and modifications
prpplague
Posts: 40
Joined: Sun Aug 11, 2019 4:59 pm

64K Memory and Display Expansion Replacement Project

Post by prpplague »

Greetings All!
just wanted to announce that my 64K Memory And Display Explansion replacement boards are up and running! the design is open source (non-commercial) and all the design files are available here:
https://hackaday.io/project/172158-ibm- ... lay-module
20200709_230745-small.jpg
(376.18 KiB) Not downloaded yet
20200709_224846-small.jpg
(285.39 KiB) Not downloaded yet
Dave
Brutman
Site Admin
Posts: 1331
Joined: Sat Jun 21, 2008 5:03 pm
Contact:

Re: 64K Memory and Display Expansion Replacement Project

Post by Brutman »

So this is a drop-in replacement for the existing 64KB card? Does it have any advantages over the original card besides reduced part count and presumably lower power draw?

I remember that PC Enterprises managed to cram 192KB onto their replacement card, but that required some additional wiring/motherboard changes to make it happen. Have you looked into other possible functions to put on the card?
prpplague
Posts: 40
Joined: Sun Aug 11, 2019 4:59 pm

Re: 64K Memory and Display Expansion Replacement Project

Post by prpplague »

Brutman wrote:So this is a drop-in replacement for the existing 64KB card? Does it have any advantages over the original card besides reduced part count and presumably lower power draw?

I remember that PC Enterprises managed to cram 192KB onto their replacement card, but that required some additional wiring/motherboard changes to make it happen. Have you looked into other possible functions to put on the card?
it's just a drop in replacement for the original card... hadn't considered any enhancements. to be honest, i've been making the various reproduction cards more for my own educational benefit, making the available for purchase is just a side effect...
DarkStar2032
Posts: 40
Joined: Tue Jun 02, 2020 1:55 pm
Location: Northern Minnesota

Re: 64K Memory and Display Expansion Replacement Project

Post by DarkStar2032 »

New parts are always welcome. And the price is good.
Thanks for your efforts.
Hi-ho, KERMIT the computer file transfer/management protocol here.
And welcome to NULL MODEM Street.
prpplague
Posts: 40
Joined: Sun Aug 11, 2019 4:59 pm

Re: 64K Memory and Display Expansion Replacement Project

Post by prpplague »

prpplague wrote:
Brutman wrote:So this is a drop-in replacement for the existing 64KB card? Does it have any advantages over the original card besides reduced part count and presumably lower power draw?

I remember that PC Enterprises managed to cram 192KB onto their replacement card, but that required some additional wiring/motherboard changes to make it happen. Have you looked into other possible functions to put on the card?
it's just a drop in replacement for the original card... hadn't considered any enhancements. to be honest, i've been making the various reproduction cards more for my own educational benefit, making the available for purchase is just a side effect...
side note, as you might notice from the other thread about the HotShot II schematics, i just started on a HotShot II replacement board....
KenG
Posts: 239
Joined: Sat Jul 16, 2016 5:36 pm
Location: Cincinnati, Ohio

Re: 64K Memory and Display Expansion Replacement Project

Post by KenG »

I have had an idea for a while, but not the knowledge to know if it will work or the skills to try. If you made an 128k static ram card for the memory slot, which should just require a jumper wire to connect to another address line, could you then disable ram refresh and have the lower 128k as fast as the rest of memory? If this is possible it would be a great addition to the machine.
Enhanced PCjr with a jr-IDE (1GB DOM) and a parallel port side car with a compact flash reader and backpack 1.44mb floppy attached. Tandy video mod.
prpplague
Posts: 40
Joined: Sun Aug 11, 2019 4:59 pm

Re: 64K Memory and Display Expansion Replacement Project

Post by prpplague »

KenG wrote:I have had an idea for a while, but not the knowledge to know if it will work or the skills to try. If you made an 128k static ram card for the memory slot, which should just require a jumper wire to connect to another address line, could you then disable ram refresh and have the lower 128k as fast as the rest of memory? If this is possible it would be a great addition to the machine.
i can research that....
Brutman
Site Admin
Posts: 1331
Joined: Sat Jun 21, 2008 5:03 pm
Contact:

Re: 64K Memory and Display Expansion Replacement Project

Post by Brutman »

It's not that simple.

The 64K on the motherboard is directly wired to the video controller circuitry. So is the 64K in the memory card slot. On a 64K machine some of the advanced video modes are not available because the base 64K doesn't have enough bandwidth to satisfy the video controller. When the machine is expanded you get another bank of 64K, doubling the available memory bandwidth for the video controller and enabling the extra PCjr graphics modes.

Both the 64K bank on the motherboard and the 64K in the memory slot are connected to the video controller and the main system bus. And they have to be because of the shared memory architecture of this machine. There is no explicit RAM refresh on that 128K .. it is being provided by the video controller that is constantly reading (and refreshing) the DRAMs. Even with a static RAM the video controller would still need access to both banks of RAM.

Some upgrades provided an extra 16KB of backfill memory at B800:0000, basically making the machine more like a PC by providing it with dedicated video memory. This was usually done through the CPU slot, like on a jrHotshot type of board. The PC Enterprises jrExcelerator does this, and has a good write-up. But it can break compatibility with the extended video modes.
prpplague
Posts: 40
Joined: Sun Aug 11, 2019 4:59 pm

Re: 64K Memory and Display Expansion Replacement Project

Post by prpplague »

Brutman wrote:It's not that simple.

The 64K on the motherboard is directly wired to the video controller circuitry. So is the 64K in the memory card slot. On a 64K machine some of the advanced video modes are not available because the base 64K doesn't have enough bandwidth to satisfy the video controller. When the machine is expanded you get another bank of 64K, doubling the available memory bandwidth for the video controller and enabling the extra PCjr graphics modes.

Both the 64K bank on the motherboard and the 64K in the memory slot are connected to the video controller and the main system bus. And they have to be because of the shared memory architecture of this machine. There is no explicit RAM refresh on that 128K .. it is being provided by the video controller that is constantly reading (and refreshing) the DRAMs. Even with a static RAM the video controller would still need access to both banks of RAM.

Some upgrades provided an extra 16KB of backfill memory at B800:0000, basically making the machine more like a PC by providing it with dedicated video memory. This was usually done through the CPU slot, like on a jrHotshot type of board. The PC Enterprises jrExcelerator does this, and has a good write-up. But it can break compatibility with the extended video modes.
thanks for the info! this is what i had gathered from designing the replica card, but i wanted to see if there was some additional info i was missing...
alanh
Posts: 339
Joined: Tue May 10, 2011 6:52 pm
Location: Atlanta, GA

Re: 64K Memory and Display Expansion Replacement Project

Post by alanh »

The short answer is 'sort of'. I've modified my board to remove the 2Kbit 24S18 decode ROM at ZM56 and replaced it with a 22V10 PAL. It has the responsibility of generating memory related chip-selects on 32K boundaries for the Video Gate Array (VGA), cartridge slots, side-car connector, and all of the buffers between them + the CGA decode window at B8000. The original goal was to open up the side-car buffers for the D and E segments (originally gated off) so that those could be populated with upper memory blocks. The JR-IDE already tries to map RAM there, but it's inaccessible due to buffer control by ZM56.

The side effect is that it is possible to turn off the VGA strobe for the lower 128K region and leave it on for the CGA window alias - then back-fill the lower 128K from JR-IDE. The results are pretty incredible. The lower 128K then runs at full speed because it's from JR-IDE. You no longer have to patch DOS to work around the memory reservation for the video frame buffer required in the first 128K. You don't have to run any auxiliary like JRCONFIG.SYS to adjust things with >128K. And you get the entire 128KB on-board RAM as dedicated video RAM! The JR becomes a truly IBM PC compatible machine. In fact, it's more like a Tandy 1000 - but without the T1K's reservation of the frame buffer at the top of conventional RAM. I've even booted stock MS-DOS 6.22 on the JR with only this mod active and no other modifications.

The downside is it breaks software compatibility with the JR's own BIOS. Some of the video modes, like 320x200x4, require 32,000 bytes for one frame. The JR's CGA aliasing window at B8000 has a bug. Like the original CGA card, it's not 32KB wide. It aliases the first 16KB region from B8000-BBFFF to BC000-BFFFF. Tandy 'fixed' this problem on the 1000. So if you want a continuous video page that is 32K in length, you can only access it from the true memory address in lower 128K space - and not the CGA window; and that's exactly what the JR's BIOS does in places! It de-references the page reg and uses it as a base address for video operations - assuming system memory = video memory. The TandyMOD and my TandyMOD+ both fix this aliasing issue with the full B8000-BFFFF range. The later fixes it for all video page numbers and not just even ones.

So, in theory, you could trigger the remap on ZM56, activate the lower 128K on JR-IDE, install a TandyMOD+, (all three doable today) and lastly patch the video BIOS routines to properly take advantage of the TandyMOD+ to write directly to B8000+, and have essentially a Tandy 1000! Running faster than a Tandy 1000. With more video memory than a Tandy 1000. And if you switch the speaker mux on bootup as well with TSOUND.COM, Tandy 1000 sound would work correctly. You would have come full circle.

I might try that one day just lifting the Int 10H code from a 1000's ROM. The machine code in system BIOS may have to change.. I can't remember if Tandy altered that or not. Part of me screams if you want a Tandy 1000, just plug in your Tandy 1000. But the full circle of mods would make a JR that much more useful as a retro computer in general.

EDIT: Lastly, I've designed a board using a tiny 5V SMT GreenPAK device from Silago/Dialog instead of the 22v10. It's a true DIP size board with J-Lead pins on the side meant as a direct replacement with a switch input to activate/deactivate both the lower 128K mod and the D/E segment mod. I just haven't built one up to test it yet. But it would easily allow a switch reversible change - much like the TandyMOD+ (has a switch to disable and revert to original behavior). The only thing needed would be to add a switch to JR-IDE with alternate firmware to enable/disable lower 128K fill. Everything else could be done in software. The video BIOS issue is only for graphics modes - text seems fine. So a TSR could replace Int 10h after boot.
Post Reply