Commodore VIC-20, Commodore’s first microcomputer designed for the home consumer market, introduced in 1981 or maybe already in 1980, was quite a success, in spite of the poor quality of the software available for it. When the Commodore 64 was introduced in late 1982, nobody wanted to buy its older brother any more, and proud Commodore 64 owners laughed at the VIC-20’s poor technical capabilities:
The Commodore 264 series can be considered the successor of the VIC-20. It was also based on an integrated video and sound chip, which also offered high-resolution graphics and some timer functions, but produced poor sound and lacked sprites.
Anyway, the Commodore VIC-20 was not as poor as the Commodore 64 users believed. Game ports like Atlantis showed that you can do raster effects with it. Unfortunately most programmers never made use of all the features the VIC-20 has. The VIC-20 market died before the microcomputer scene really started, with all those cool intros and demos that pushed the Commodore 64 hardware into new limits.
In addition to the more advanced machine language demos, there were quite a lot of demos written in BASIC.
You can download the demo for PAL-B or NTSC-M computers. In order to view the whole demo, you will need an 8 kB memory expansion and a 1541 compatible disk drive.
Update (October 23, 2004): The demo was
re-released with full source code
(including the previously closed-source music by Jonas Hultén that was
not part of the original source code
package, and including support for the Commodore 1581 disk drive
contributed by Pasi
Albert Ojala). Download the updated PAL-B or NTSC-M
multi-part executables. The stand-alone executables for those parts
that can be run on an unexpanded VIC-20 are not included in the new
In 1995, I began to think that it is time to show the Commodore users two things:
I developed a stable raster routine for the VIC-20 and wrote an
article for the C=Hacking net
magazine, issue 10:
Making stable raster interrupts (C64 and VIC-20). At that
time, I did not have enough interest to write a whole demo, but I
decided to start coding later, as I got some e-mail from some VIC-20
users in the autumn of 1995, and as I needed some project to prevent
the boredom in military service, which I was doing at that time.
Veni vidi Vic! was mainly created in 1996 by me,
Marko Mäkelä. I wrote the raster interrupt macros (remember, the
6560/6561 VIC-I videochip does not support raster interrupts) for DASM
and coded two effects that I had planned a long time, a checkerboard
zoomer and a copper scroller with colour bars rotating around it. The
copper scroller refers to the Amiga, which has a special
chip for modifying the video chip registers depending on the raster
beam position. In this
copper part, the 6502 is busy changing
the screen colour for more than half of the screen area, and the whole
part with graphics updates and music takes almost all processing
Later, in May 1996, as I got long holidays from the military service, I designed a fully timing-independent protocol for the serial bus and wrote a timing-independent loader for drives with 1541-compatible serial bus hardware and for all Commodore computers with serial bus. This protocol is described in the prlink package (later cbmlink), and the source code is also separately available from Stephen Judd’s The Fridge. As you might guess, I used the VIC-20 version in the demo. The demo got two new parts: a huge bitmap scroller that scrolls the demo name over the screen, and a vector rotation part, which was based on the code in the C=Hacking 10 article by Stephen Judd and George Taylor. The code was adapted for the VIC-20 and optimized by me.
Originally we planned to have the demo finished by Tribute ’96. It was originally announced to be in June, and most of the demo was actually finished by late May, including some music by Anders Carlsson with Adam Bergström’s music routines. Adam contributed two demo parts for the project: a 2D bitmap rotator and a plasma effect. All we needed was a reasonable end part, and some time for finishing the demo.
In the summer, there was a long pause, because I went to Germany and had no TV or monitor for my VIC-20. (Yes, I was optimistic enough to take my VIC-20 with me.) When I visited Asger Alstrup’s place in Denmark, I took my equipment with me, and we went a bit nostalgic. Asger coded a skeleton of a good music routine for the VIC-20.
In the autumn, it seemed like everyone had lost interest in the project. Not much happened; I corrected some slight bugs in the effects and Anders wrote some new music. After the autumn term was over, I finally decided to finish the demo for The Party ’96. I got some music from Jonas Hultén, who had refused to publish the source code for his music, even for us, even though he and Adam suggested that we would use his music in the demo. I restructured and optimized Adam’s demo parts and NTSC fixed Jonas’ music, and included my IRQ loader in Adam’s parts. I also wrote an end part with 8 scrollers and a Morse code blinker for the floppy drive. I spent about 10 days with the demo, and finally got it finished in the Christmas evening. This demo has some unique properties:
I uploaded the demo to FUNET’s
VIC-20 demo collection and e-mailed it to other members and to Jens Schönfeld, our
because The Party rules required that the coder must be present. Jens
was going to The Party anyway, and he took the demo to the WiLD Compo,
which had no hardware restrictions for the entries. As you might
guess, none of the 5 prizes were awarded to the VIC-20 demo with its
whopping hardware requirements: 13½ kB of memory (yes, the demo
requires an 8-kilobyte memory expansion, although some parts run on an
unexpanded VIC-20), 40 kB of disk usage and 300 kIPS of processing
power. No, there were too many entries that featured minutes of
precalculated ray-tracing animations that were calculated on a network
of powerful workstations, and other cruel things. It’s funny to see
that the winning entry, which must have used thousands of times more
computing power, main memory and disk space than our
Vic! demo, only got 3272 votes, 7 times more votes than our entry,
which was ranked 6th with 442 votes. Thanks to all our
voters! There were 30 entries for the WiLD compo according to Jens
Schönfeld; 22 of them were displayed.
You might wonder why I chose the title
Vic!. If you are familiar with history, you might know that Caius Julius Caesar, the famous Roman Emperor, used
veni, vidi, vici, meaning
I came, I saw, I
conquered (thanks to Miguel Gordillo for the correction). When
the VIC-20 was introduced in Finland, there were stupid television
commercials that said
Veni vidi VIC! Build the city of Rome in two days with the VIC-20!.
(As you might know, an old rumour has it that Rome was built in two
days.) This commercial was so stupid and childish that I had to pick
What you might not know is that I bought my first VIC-20 in 1991, five years after I got my first computer, the Commodore 64. I wanted to create something own on the VIC-20. As you see, it took another five years to reach this goal. Hmm, I got my Commodore 16 in 1994; maybe you should wait for a C16 demo around 2000. No, maybe you will have to wait until my retirement.