Terminal Programs for BBSing on the Commodore VIC-20

The VIC-20 introduced many people into the world of BBSing, but only a few of the many terminal programs that were available for the Vic have survived. They each have their own pros and cons and here I review a few of them.

VICModem Basic Type-In Terminal

The Commodore 1600 VICModem, released in 1982, contained a short terminal program written in Basic within its user manual. However, this program had a small error on line 320 in some of the manuals, which should read:

320 if a$="" or st<>0 then 360

It is 22 column only and converts to/from ASCII. However, it would be easy to adapt this to use PETSCII if desired. It is simple, but works well on an unexpanded Vic. Unlike the other terminal programs presented here it doesn't have a menu, so you have to configure it with the correct baud rate, stop bits, parity, etc through the first line of the program. To see how to configure this by altering line 100 of the code have a look at the VIC-20 Programmers Reference Guide

100 open 5,2,3,chr$(6)


Shortly after the release of the VICModem came the VICterm 40 (VIC-1610) cartridge which can display in 40 columns as well as the standard 22 columns. This improves the alignment of text from BBS's and if you were happy with the small font it could make BBSing much easier. If you choose to keep to 22 columns then it also supports a mode which wraps words which works well. Victerm supports modems speeds up to 2400 baud and can display PETSCII or ASCII. The 40 column mode is single colour but the 22 column mode supports PETSCII colours. It needs an 8k+ expansion to work and the version on zimmers.net looks like it should be for NTSC from the screen position, but it only works in PAL mode on VICE.


Plus/Term is a type-in program, written in Basic and machine language. It can be seen in COMPUTE! Issue 57 / February 1985. It only supports 22 columns but has a number of nice features such as the same word wrap mode as Victerm and the ability to transfer text to/from a buffer and load/save it to disk or tape. This works well with text files and there is information in the article on how to tokenize/detokenize Basic programs to/from ASCII. Plus/Term supports up to 2400 baud and requires 8k+ memory expansion, 16k+ if using the load/save buffers.

Mighty Term

Mighty Term by Craig Bruce was released in the late 1980s and was written using a machine-language monitor. It is the most advanced terminal program available for the Vic and supports 40 column by default, as well as 22 columns and an 80 column mode using two pages. Mighty Term is unfinished but seems to work quite well and supports both ASCII and PETSCII modes upto 2400 baud in theory, however I've only ever been able to get it working at 300 baud through VICE. It looks like it should be for NTSC, but only works for me in PAL mode in VICE. Sadly it lacks colour PETSCII support even in 22-column mode. Mighty Term requires 16k+ memory expansion.


NinjaTerm is the latest termiminal program that I've come across and can be download as a .d64 image. It is very big and requires 24k+ memory expansion. It doesn't offer very much for all the extra memory, but it does look good as it uses a nice fat font for its 22 column display and supports colour. It is quite buggy however and hangs on some sites. For the right sites though it really does look quite nice and works at upto 2400 baud on VICE.


To connect to telnet BBS's over the internet from within VICE you can use Tcpser with a command such as:

$ tcpser -v 25232 -s 2400  -l 4

This would launch tcpser to accept a connection from VICE on port 25232 and emulate a modem at 2400 baud using log level 4.

For a list of telnet BBSs look at:

Configuring VICE to use Tcpser

If you are using VICE to connect to telnet BBS's via tcpser you need to configure the RS232 settings properly for the Userport. I use the SDL version of VICE where I go to Machine settings > RS232 settings. On the GUI versions there will be a similar menu structure somewhere.

First you need to configure the Userport:

  • Enable the Userport RS232 emulation
  • Set the Userport RS232 host device. This is the device used under host settings. I use device 3 as this is already part configured for tcpser.
  • Set the Userport RS232 baud rate. This should match the baud rate you are using for tcpser.

Second you need to configure the Host settings. I use device 3 so I'll base this around that, but you can use a different device if you wish. The main thing is that you use the same device number as you specified for the Userport RS232 host device above.

  • Connect the device to tcpser using the same port specified after the -v switch when running tcpser: Device 3
  • Set the device baud rate, as above for the Userport RS232 baud rate: Device 3 baud rate -> 300
  • Enable IP232 protocol: Device 3 use IP232 protocol

HAYES Modem Commands

If you are connecting via a Hayes compatible modem or tcpser you will need the following modem commands to dial and hang-up the modem. If you are using a VICModem then you can ignore these as this can't dial and therefore you have to dial manually with a normal phone and then connect the VICModem.

The modem starts off in command mode from which you can use the following commands:

ATZReset modem
ATE0Turn off echo
ATE1Turn on echo
ATDTxxxxxDial xxxxx - if using a phone line then xxxxx is the number that you want to dial - if using tcpser then xxxx generally is hostname:port unless you have added a shortcut into the address book.

Once you are connected to a remote host if you want to escape to command mode you can use +++. The use of this varies between modems. The HAYES version is actually: <pause> +++ <pause> the pauses are there to avoid the data you are transmitting putting the modem into command mode. There is also a similar standard called TIES which used: +++AT[some valid command]<cr> The problem with this is that, while unlikely, it was quite possible that a binary file could contain this sequence and hence the modem randomly be put into command mode without the user understanding why. This could even by used to wind people up by putting: +++ATH0<cr> in text to hang-up the modems of people reading it if they were using a modem that used the TIES system rather than the HAYES system.

Video Demonstrating the Terminal Programs

You can see the terminal programs in action connecting to various BBSs in the following video.

Creative Commons License
Terminal Programs for BBSing on the Commodore VIC-20 by Lawrence Woodman is licensed under a Creative Commons Attribution 4.0 International License.

Share This Post


Related Articles

80 Columns in Software on the Commodore VIC-20

If you have good eyesight, a well-tuned display and patience it is possible to use 80 columns in software on the VIC-20. This is really just an experiment but considering the limitations of the Vic I ...   Read More

64 Column Text Mode on the Commodore VIC-20

With a little lateral thinking and by putting the television on its side we can create a 64 column sideways text mode on the VIC-20. This article will demonstrate this and show how it is done. Previo...   Read More

Word Processors on the Commodore VIC-20

Word processing is possible on the VIC-20 and can be surprisingly comfortable despite the small screen text area. Here I will show a variety of word processors each of which handles the 22 column rest...   Read More

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