40 Columns in Basic on the Commodore VIC-20

There are a number of programs that allow you to use 40 columns of text from Basic on a Commodore VIC-20. This can be useful as by default the Vic's screen is 22 columns by 23 rows. They are supplied as a machine language programs which take over some of the Basic printing routines to provide you with a display using a smaller font. Because of the need to remap the screen each of these programs needs at least an additional 8K RAM expansion.

VIC 40/FAT-40

There is a little bit of confusion surrounding the name and origin of this. The date given by FAT-40 on Zimmers is 13th July 1983 and is for a PAL screen. However, there is a program called VIC 40 published in Ahoy! Magazine, October 1984 for NTSC. Either way they seem to be compatible as FAT-40 works with the Ahoy! Magazine, VIC 40 Demo also on Zimmers and is dated 1984.

The demo really demonstrates how good this extension is because it shows full character sets plus hi-res graphics being used at the same time. From the Ahoy! Magazine article it says how this program makes the Vic compatible with PET Basic programs and also demonstrates how to use this mode from machine code programs. With an 8K RAM expansion it leaves 4466 bytes free for your Basic programs.

The PET support is quite good in that it moves the screen map to the correct location for the PET so that you can Poke directly into it and it also emulates the Sound system. Naturally it doesn't extend the Basic to v4 which PET's often use, but other than that it is pretty good.

PET Compatibility Tests

You can test the PET compatibility of VIC 40 using the following:

Switch to lowercase:

poke 59468,14

Switch to uppercase:

poke 59468,12

Print an A in top-left corner of screen:

poke 32768,65


Screen-40 is a available for NTSC screens on Zimmers and seems to have been published in Compute! Gazette, June 1985. It is much the same at VIC 40, but lacks PET support. However, it uses 653 fewer bytes and therefore with an 8K RAM expansion it leaves 5119 bytes free.

Super Screen

This was a commercial program sold by Audiogenic and reviewed in Commodore Magazine, November 1983. A PAL version of it is available on a .T64 tape image.

For me this version has the nicest font, however unfortunately it has an annoying behaviour in that it prints an extra new line after every print. The included demo show this not being done, but it is cumbersome and makes Super Screen a pain to work with.

PET Loader

PET Loader is a cartridge for PAL systems available from Zimmers. It is presumably meant to make it easier/possible to run PET programs written in Basic on the Vic. However, while it patches Basic and provides 40 columns, common pokes for sound and text display don't work. That said, because it is a cartridge, it is nice to be able to boot directly into 40 columns. There is more discussion about patching it to work with NTSC systems on the denial forum.

The Big One

The Big One is a little different from the other programs listed in this article in that it doesn't display 40 columns. Instead, it uses the same character font for a normal Vic, but expands the number of columns displayed to 25 and the number of rows to 30. It works on an unexpanded Vic and comes with a demonstration program.

Because of overscan, 25 columns is just about as much as you can extend the number of columns to before they start disappearing off the side of older television set screens. The version linked to is for PAL systems and is hosted on the Zimmers website. I mention it here because you may find that it is more comfortable to use than the small fonts of the 40 column extensions and because it works on an unexpanded Vic.

Video of the Extensions

You can see the extensions being used on a Commodore VIC-20 in the video below:

Creative Commons License
40 Columns in Basic on the Commodore VIC-20 by Lawrence Woodman is licensed under a Creative Commons Attribution 4.0 International License.

Share This Post


Related Articles

Getting the Address of BASIC Variables on the VIC-20

Getting the address of a BASIC variable can be useful if you want to pass data to a machine code routine or want to access the bytes of a variable directly to improve speed and reduce garbage collectio...   Read More

Saving and Loading Memory on the VIC-20

Saving and loading memory is quite easy on the VIC-20 once you know how. However, it isn't obvious how to do this and therefore this article will present a few simple ways of doing it from BASIC and A...   Read More

Basic Line Storage on the VIC-20

BASIC programs are stored in memory using a simple structure that we can investigate and manipulate. This article will show how they are stored and contains a BASIC program to go through each line of ...   Read More

Storing Machine Code in REM Statements on the VIC-20

BASIC programs often contain machine code routines but they take up quite a lot of space in BASIC. An interesting way to reduce the amount of space that they take is to store the machine code in REM s...   Read More

Adding Basic Stubs to Assembly Language on the Commodore VIC-20

To make machine language programs more friendly it's nice to add a Basic stub which contains a line with a SYS statement to start the code. This is easy to do on the VIC-20 and the process gives you a...   Read More