Page 1 of 1

My mod from yesteryear

Posted: Sun Jun 29, 2014 1:29 pm
by srowe
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.

Re: My mod from yesteryear

Posted: Sun Jun 29, 2014 1:40 pm
by joshuadenmark
Wow thats a cool modification. Does it still run?

Re: My mod from yesteryear

Posted: Sun Jun 29, 2014 1:50 pm
by Mike
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.
that way the 3K block can be used for screens & character sets.
Yep. That was exactly the reason I did it for.
I also had to mod UA1 to stop the RAM blocks being gated on to the expansion bus
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.

Re: My mod from yesteryear

Posted: Sun Jun 29, 2014 2:17 pm
by srowe
joshuadenmark wrote:Wow thats a cool modification. Does it still run?
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.

Re: My mod from yesteryear

Posted: Thu Jul 03, 2014 12:53 pm
by Richardc64
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'd like to build a replacement that also pages between the ROM and RAM.
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

Re: My mod from yesteryear

Posted: Thu Jul 03, 2014 1:43 pm
by Mike
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.)
Sorry?

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

Posted: Sun Jul 06, 2014 12:19 am
by srowe
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
Cool, would you care to share your schematic?

Re: My mod from yesteryear

Posted: Sun Jul 06, 2014 1:14 am
by Mike
srowe wrote:Cool, would you care to share your schematic?
The schematics of Richardc64s internal expansion are found on his site.

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.

Re: My mod from yesteryear

Posted: Sun Jul 06, 2014 10:35 am
by Richardc64
Mike wrote:
srowe wrote:Cool, would you care to share your schematic?
The schematics of Richardc64s internal expansion are found on his site.

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.
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.

Re: My mod from yesteryear

Posted: Sun Jul 06, 2014 1:09 pm
by Mike
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.
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. ;)

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

Posted: Sun Jul 13, 2014 2:52 am
by Vic20-Ian
srowe wrote:
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
Cool, would you care to share your schematic?
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?

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.

Re: My mod from yesteryear

Posted: Sun Jul 13, 2014 8:23 am
by srowe
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.

Re: My mod from yesteryear

Posted: Sun Jul 13, 2014 9:25 am
by Richardc64
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?
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!)
I would need some help figuring out the circuitry but I have plenty of Vic's now.
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.

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.

Re: My mod from yesteryear

Posted: Sun Jul 13, 2014 10:05 am
by Mike
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.
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.