I made a thing started from scratch Sunday. Open source. Here's the blog article. 24 levels of undo/redo. Clipboard copy/paste/cut, and other stuff shown in image including shifting image left/up/down/right. Have fun on the original Vic-20!
If you have any 3K/8K/etc. expanded RAM, remove before you try. Otherwise the source is editable (ACME pure 6502).
Thanks for moving this into the right board. I now better understand this forum's organization.
The raster/timer split on Vic-20 is an interesting idea I considered. But I chickened out and ran out of RAM -- only 13 bytes free!!! so it could be rather difficult. But there are more bytes/buffers elsewhere that could steal some bytes from, and further space optimizations. Seems like a useful feature. I am definitely shooting for it with its younger sibling Commodore model that comes with more RAM. But that doesn't help us here. Then again, with more Vic-20 RAM, we could also edit 4K double character sets also.
Alternative is that the user can press @ and it will swap RAM/ROM sets on demand.
Ah, I get your temporary unexpand comment... yeah -- since the video memory map is identical, LOAD... 8,1 is necessary then SYS manually instead of RUN. I hadn't tried that yet, but seems like a solid idea too. Bummer is putting character set in the middle of BASIC RAM though. 3K free before the set, and 1.5K free after. Not sure what other options there are, ah I see could relocate set to $1400-$1BFF and then only $1C00-$1DFF (half a K) is "wasted" not available to BASIC. Could also have a new branch for a variation that does this and avoid the manual SYS. Of course that's why we have 8K/16K/24K, etc. RAM expansions too. Doesn't seem like we need to be restricted to unexpanded, it was just a challenge I set myself and that was the configuration I started with in early 80s. I suspect I will submit new versions as I've already dealt with changes necessary for changing some of the addresses for an unnamed other popular Commodore 8-bit system.
davervw1 wrote:Ah, I get your temporary unexpand comment...
Probably not.
yeah -- since the video memory map is identical, LOAD... 8,1 is necessary then SYS manually instead of RUN.
The tool I linked to, "3K.PRG", temporarily 'unexpands' the VIC-20. It sets the BASIC limits and the screen position as for the unexpanded VIC-20, so programs that rely on a given position of BASIC start and position of screen memory can be run without the need to physically remove memory expansions.
It is supposed to be loaded with ",8,1" as parts of it load into the $03xx vector area. It thus autostarts, without any SYS or RUN.