The MegaVIC

You need an actual VIC.

Moderator: Moderators

Post Reply
Merytsetesh
Vic 20 Amateur
Posts: 40
Joined: Sat Mar 02, 2024 8:57 pm
Location: Canada

The MegaVIC

Post by Merytsetesh »

I'm posting this at the request/suggestion of Orangeman96, from a comment in the 'Introduce Yourself' thread. I'm not at all sure this is the right place for this, either, so I fully expect it to be moved. Nonetheless, I hope it's of some interest.

The MegaVIC was a project I started on because of a promise to myself, and then a bit of passion before life and life-related things got in the way. The promise was one I made myself years ago, to write an interpreter for CBM BASIC v2: why? because I could, and because it was interesting, and I'd always wanted to. I had been tinkering with languages since my teens: my school had a LOGO interpreter that ran on Beebs, and I hacked it around to make it a bit faster, give it some extra abilities, and so forth. Then I had a go at writing a FORTH interpreter (I knew there was one for the VIC but I had no money for it, and by now it was 1989 and the VIC was in the past and eBay the far future). Eventually I got the bit (haha) between my teeth and for whatever reason the passion was there and the code flowed. It wasn't long before I'd hacked together a basic BASIC interpreter in Python3. Of course, from there I got the idea of trying to put the interpreter 'into' something, and so a bit of Python graphics ensued. It worked, but hot coffee it was slow.

Naturally enough, I wanted more speed, so I rewrote the interpreter in C++, and went back to old faithful SDL2 for graphics, and eventually input and interrupts as well. Since I was faculty at the time of the original design, the C++ isn't the most graceful and gracious in the world, and wouldn't get me hired anywhere (I know: I've tried) but it was intended to be easier to see what was going on inside the interpreter. Of course, once I'd got BASIC 2 up and running - though SYS and USR calls went nowhere as there was no processor to run machine code on - I felt that warm glow of satisfaction. I'd done it: I'd fulfilled the promise to myself.

So... why did I keep getting that niggling feeling?... Why wouldn't my brain stop?

... so I went back to it. And I started to expand the BASIC I'd created, taking bits from all sorts of places, including BBC BASIC: named, multiline functions and procedures, for example. (And, oh boy, did that take a LOT of nasty, nasty C++ code to get to work.) I think ON ERROR made it in there as well, or it was planned. I coded in a RENUMBER, and there were LINE and PLOT commands as well. And things like this began to happen:https://www.dropbox.com/sh/aogsxgkutm6b ... tracking=1

... did I mention it had a fully addressable, non-character-mapped hi-res mode?

The project, by now named the MegaVIC, was turning into my personal manifestation of my personal 'dream machine'. A VIC-20 with all the bells and knobs on. A 'friendly computer' for the mid-80s, with the power of the Amiga, the A3000 or at least the BBC Master copro... As comforting and familiar as the machine that had greeted me in 1981, yet capable of so much more. (I had coveted the C=128 when I was young, saved as hard as I could for it, and of course it too passed me by. I ended up, ultimately, with an A3000, a so much better machine, but I still pine for the lost C=128 I never had.) The MegaVIC would boot up into MegaBASIC, it had 58 colours out of the box (14 colours in 4 shades, plus black and white), a 256 character set with expanded PETSCII, a high-res mode, variable screen dimensions, joysticks... even mice. Maybe even the ability, somehow, to 'load' different language 'ROMs'.

In my fanciful fever dreams I'd imagined bringing this to Steam, or something; having a 'user manual' with type-in games, and a community growing up around it. Silly me.

It was around this time that a few things happened in quick succession.
  1. I found myself with a project that was rapidly growing in scope beyond my ability to deal with it usefully, and ended up started to chase my tail in terms of design and writing programs to test that design. (The image above is made by a MegaBASIC program.)
  2. I started thinking about designing a 'custom chip' (i.e. a VM) which would run machine code which would have its own KERNAL, BASIC and other ROMs. The chip would be a kind of 32-bit 65xx, or maybe some sort of ARM-type chip.
  3. The Commander X16 started to be developed seriously by a group of very clever, capable people, and the Mega65 and Feonix came along as well.
  4. I caught COVID twice, and the second time it left its claws in my brain.
My apologies for rambling.

The upshot is... for anyone who's interested, I introduce, and offer, the MegaVIC. My fool's attempt at building a dream computer, a loving homage to the VIC-20 and, I suppose, the other computers of our younger days. I've included a link to a version that's hosted on DropBox. I used to use a GitHub repo but I was always working alone so it's private. I don't know if it's possible to pull from a private repo with the URL.

Dropbox: https://www.dropbox.com/sh/aogsxgkutm6b ... tracking=1

Demo video: https://www.dropbox.com/sh/aogsxgkutm6b ... tracking=1

M
User avatar
Orangeman96
Vic 20 Amateur
Posts: 45
Joined: Tue Jan 16, 2024 3:42 pm
Location: U.S.A.

Re: The MegaVIC

Post by Orangeman96 »

Thanks for this post, and for sharing! :D

Perhaps you can eventually host MegaVIC as a sort of a "homebrew" or "indie OS" on one or more of the "neo-retro" hardware platforms in development? (https://cx16forum.com/forum/viewtopic.p ... rew#p31063)

OGM
Post Reply