My mod from yesteryear
Moderator: Moderators
My mod from yesteryear
Thought I'd post a picture of the internal memory expansion that I built about 35 years ago.
It piggy-backs on the character ROM with a pair of 6116s, the flyleads pick up RAM1, RAM2, RAM3 and VR/W. I also had to mod UA1 to stop the RAM blocks being gated on to the expansion bus, that way the 3K block can be used for screens & character sets.
It piggy-backs on the character ROM with a pair of 6116s, the flyleads pick up RAM1, RAM2, RAM3 and VR/W. I also had to mod UA1 to stop the RAM blocks being gated on to the expansion bus, that way the 3K block can be used for screens & character sets.
- Attachments
-
- vicmem.jpg (362.6 KiB) Viewed 2936 times
- joshuadenmark
- Big Mover
- Posts: 1218
- Joined: Sat Oct 23, 2010 11:32 am
- Location: Fr-Havn, Denmark
- Occupation: Service engineer
Re: My mod from yesteryear
Wow thats a cool modification. Does it still run?
Kind regards, Peter.
____________________________________________________
In need of a wiki logon - PM me
____________________________________________________
In need of a wiki logon - PM me
- Mike
- Herr VC
- Posts: 4870
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: My mod from yesteryear
Nice one!
I did a similar mod on my VIC-20. I also extended the colour RAM with a 16Kx4 SRAM chip. There, the additional address lines are taken from the user port.
I did a similar mod on my VIC-20. I also extended the colour RAM with a 16Kx4 SRAM chip. There, the additional address lines are taken from the user port.
Yep. That was exactly the reason I did it for.that way the 3K block can be used for screens & character sets.
I rerouted the /RAMx signals by socketing UC4, on the CR variant of the mainboard U13 combines pairs of the /RAMx signals to provide the /CS for originally two, now four 2Kx8 SRAMs. The original /RAM123 are tied high over 4K7 to H-level, because you don't want the inputs of UD9 to place a 'logic' level on the expansion bus that's essentially undefined for CMOS inputs. Of course, UD9 has not anymore to separate CPU and VIC bus in case of CPU accesses to $0400 to $0FFF. And in any case, the internal expansion takes priority over what's present at the expansion port.I also had to mod UA1 to stop the RAM blocks being gated on to the expansion bus
Re: My mod from yesteryear
Yep sure does, the fit is a bit tight under the keyboard and the ROM creeps a bit at times. I'd like to build a replacement that also pages between the ROM and RAM.joshuadenmark wrote:Wow thats a cool modification. Does it still run?
- Richardc64
- Vic 20 Drifter
- Posts: 33
- Joined: Mon Feb 01, 2010 3:55 pm
Re: My mod from yesteryear
I did something similar around the same time. I used an 8kx8 with 3k of it as RAM1,2,3 and 4k "under" the Character ROM so I could have custom characters without using any "main" memory.
I've since thought of a way to have both VID accessible internal 3K OR normal external 3k not accessible for video. Would this be worth the effort?
Also, Mike, 16k for Color Memory seems a bit extreme. Any suggestions for what could be done with a more modest amount, say, 2k? (Four color maps.)
I've since thought of a way to have both VID accessible internal 3K OR normal external 3k not accessible for video. Would this be worth the effort?
Also, Mike, 16k for Color Memory seems a bit extreme. Any suggestions for what could be done with a more modest amount, say, 2k? (Four color maps.)
Did that, too. The thing about RAM under ROM is to arrange the banking circuitry so that the RAM can be written without switching out the ROM. That way, the ROM can be copied to RAM by PEEK/POKE (or LDA/STA) the same addresses, then modified before making the switch. This would apply to BASIC and Kernel ROMs, as well as to Character ROMI'd like to build a replacement that also pages between the ROM and RAM.
- Attachments
-
- The other ICs in the poor-quality webcam pic are a latch and buffer as a Configuration Register and logic to select what the 6502 "sees" in character space and what the VIC sees.
- charrampic.jpg (27.36 KiB) Viewed 2877 times
"I am endeavoring, ma'am, to create a mnemonic memory circuit... using stone knives and bearskins." -- Spock to Edith Keeler
- Mike
- Herr VC
- Posts: 4870
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: My mod from yesteryear
Sorry?Richardc64 wrote:Also, Mike, 16k for Color Memory seems a bit extreme. Any suggestions for what could be done with a more modest amount, say, 2k? (Four color maps.)
I wanted to do fullscreen FLI. Not something else. As the underlying bitmap mode uses double-height characters, VIC-I accesses the same addresses in colour RAM for 16 raster lines. The display routine for VFLI now cycles the new upper 4 address lines through the values 0..15 so that VIC-I sees different values from colour RAM in each raster, giving one pixel high attributes.
Re: My mod from yesteryear
Cool, would you care to share your schematic?Did that, too. The thing about RAM under ROM is to arrange the banking circuitry so that the RAM can be written without switching out the ROM. That way, the ROM can be copied to RAM by PEEK/POKE (or LDA/STA) the same addresses, then modified before making the switch. This would apply to BASIC and Kernel ROMs, as well as to Character ROM
- Mike
- Herr VC
- Posts: 4870
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: My mod from yesteryear
The schematics of Richardc64s internal expansion are found on his site.srowe wrote:Cool, would you care to share your schematic?
As ambitious as this mod is, it would have been helpful if Richardc64 also had provided some software at least to demonstrate the advantages of doing those mods. That is something I didn't miss out with my VFLI mod.
'Just' talking about to have extra video RAM, and the mere possibilities to use changed contents of BASIC or KERNAL ROM doesn't cut it for me.
- Richardc64
- Vic 20 Drifter
- Posts: 33
- Joined: Mon Feb 01, 2010 3:55 pm
Re: My mod from yesteryear
Yeah, I pretty much abandoned the VIC after getting a C128. I've since thought of better and more versatile ways of doing what I did -- and more -- but don't expect to ever actually do them.Mike wrote:The schematics of Richardc64s internal expansion are found on his site.srowe wrote:Cool, would you care to share your schematic?
As ambitious as this mod is, it would have been helpful if Richardc64 also had provided some software at least to demonstrate the advantages of doing those mods. That is something I didn't miss out with my VFLI mod.
'Just' talking about to have extra video RAM, and the mere possibilities to use changed contents of BASIC or KERNAL ROM doesn't cut it for me.
Sorry.
"I am endeavoring, ma'am, to create a mnemonic memory circuit... using stone knives and bearskins." -- Spock to Edith Keeler
- Mike
- Herr VC
- Posts: 4870
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: My mod from yesteryear
Ummm... ok. Well, that might be a 'career' shared by many who write here in Denial: the VIC-20 as first computer, replaced by a C64 or C128 or one of the 264 series, later on an Amiga or some entirely different computer, etc. Somewhere around 2002 I saw that emulators had gotten mature enough to think about what might have been possible to do on the VIC-20, giving one's own knowledge of today. Even better if you had kept the original hardware to run the newly written programs on the real iron.Richardc64 wrote:Yeah, I pretty much abandoned the VIC after getting a C128. I've since thought of better and more versatile ways of doing what I did -- and more -- but don't expect to ever actually do them.
Sorry.
That being said, I now count at least five 'officially' known VIC-20s with at least the +3K between $0400 and $0FFF filled with RAM accessible by VIC: yours, srowe's, wimoos', freshlamb's and mine. Now, my VFLI mod actually was a spin-off of a longer project tokra and I did over the four years from 2010 to 2014: explore the display capabilities of the VIC-I. In doing so, we two managed to produce resolutions for bitmapped displays and also uniform colour resolutions that were unheard of before. Especially the 208x256 resolution was regarded as sort-of holy grail (especially for the German members) to achieve. We finally managed to do this, and even supported this resolution with an own BASIC extension. In parallel to this, another mode was created with 72x256 pixels, FLI, i.e. all 3 global colours refreshed on each raster, and 8x1 pixel colour attributes (which required rewriting 9 bytes of colour RAM data on each raster!)
Both modes work on an unaltered VIC-20, just a RAM expansion is needed. Then, the CPU shuffles bitmap or colour data in sync to the raster beam into the RAM accessible to VIC. Which more or less monopolises the CPU to aid the VIC for the display. The foreground program is halted during display.
I wanted to see both things, that resolution of 208x256, and FLI, at once. Together with at least some remaining time (~20%) for the main CPU to run own programs. That's what I devised my VFLI mod for! Four years later, there's a slightly enhanced resolution of 224x280 available without FLI, and 104x256 is possible for FLI, without modding the hardware. We know now for sure, that doing both things at once is completely beyond the limits for an unmodded VIC-20.
For the former 208x256 resolution without FLI, I wrote a display routine which only requires two NMIs per frame to put the bitmap on screen (i.e. effectively 100% CPU time available!!) That routine should run unaltered on your modded VIC-20's as well (it does not require the 16Kx4 colour RAM). I've put it here for download. In the d/l directory I put also some other tools, for example 'max.prg' moves the screen to $0400 and makes even more memory available for BASIC. There's also a slide show ('vfli_pan_slide') as demonstrator which loads VFLI images into an unmodded VIC-20 to display them, even if at reduced width (72 vs. 208 pixels), but with a sliding window. Please take your time to try out those programs.
There's still a lot to discover on our old friendly computer. No reason to throw the helve after the hatchet.
Re: My mod from yesteryear
Would that mean it would be possible to boot the Vic, copy the character rom to ram, load and overwrite with a custom character set, flick a switch and use the Vic with a custom character set?srowe wrote:Cool, would you care to share your schematic?Did that, too. The thing about RAM under ROM is to arrange the banking circuitry so that the RAM can be written without switching out the ROM. That way, the ROM can be copied to RAM by PEEK/POKE (or LDA/STA) the same addresses, then modified before making the switch. This would apply to BASIC and Kernel ROMs, as well as to Character ROM
I might fancy trying that for a Jeff Minter themed Vic. I love his space game fonts.
I would need some help figuring out the circuitry but I have plenty of Vic's now.
Vic20-Ian
The best things in life are Vic-20
Upgrade all new gadgets and mobiles to 3583 Bytes Free today! Ready
The best things in life are Vic-20
Upgrade all new gadgets and mobiles to 3583 Bytes Free today! Ready
Re: My mod from yesteryear
Yes, I'm intending to use a 74LS175 as a write-only register to manage bank switching so it's all controlled by software.
My first experiments didn't quite work out so I'm going to have to spend so more time debugging this. I'll post a schematic once I think I have something that works.
My first experiments didn't quite work out so I'm going to have to spend so more time debugging this. I'll post a schematic once I think I have something that works.
- Richardc64
- Vic 20 Drifter
- Posts: 33
- Joined: Mon Feb 01, 2010 3:55 pm
Re: My mod from yesteryear
In my modification mechanical switches were used only to configure the normally expandable areas; RAM1,2,3 and BLOCKS1,2,3 and 5, in much the same way as some bus expanders or RAM packs were built. Character and Kernal ROM (or BASIC, if I had included that possibility,) were bankable only via software, although mechanical switching would certainly be possible. (And electronically simpler!)Vic20-Ian wrote: Would that mean it would be possible to boot the Vic, copy the character rom to ram, load and overwrite with a custom character set, flick a switch and use the Vic with a custom character set?
The first thing to decide is just how much you want to change the VIC's architecture. I chose to arrange things so that if I didn't close any switches or twiddled any bits that on power up my VIC would appear mostly unmodified. (It could never have external 3K and the number of VIA "images" were reduced.) This meant NOT using any User Port bits for a "Configuration Register" and instead adding a latch and buffer, plus address and R/W decoding for them. I never had any device that plugged into the User Port, so using VIA bits would've been possible and made the project somewhat simpler -- except I wouldn't have been able to do the trick I did with BLK5.I would need some help figuring out the circuitry but I have plenty of Vic's now.
Yeah, I made it more complicated than it needed to be.
If one were to do Mike's 16K Color Memory mod there would still be 4 VIA bits available for other configuration/banking features.
Ian, feel free to email or PM me.
"I am endeavoring, ma'am, to create a mnemonic memory circuit... using stone knives and bearskins." -- Spock to Edith Keeler
- Mike
- Herr VC
- Posts: 4870
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: My mod from yesteryear
I provided the source code of the display routine (here: link), so it's quite easy to change it for a banking register at another address.Richardc64 wrote:If one were to do Mike's 16K Color Memory mod there would still be 4 VIA bits available for other configuration/banking features.