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)

Victerm

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

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

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.

Tcpser

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 127.0.0.1:25232
  • 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:

Command
ATZReset modem
ATH0Hang-up
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

Feedback/Discuss

Sign up to get new articles straight to your inbox.

Delivered by FeedBurner

Related Articles

SUBLEQ on the Commodore VIC-20

I have created a SUBLEQ Virtual Machine for the Commodore VIC-20. SUBLEQ is a computer architecture that has only one instruction: SUBLEQ. The instruction stands for SUbtract and Branch if Less than ...   Read More

Sweet 16 (The 6502 Dream Machine) Ported to the VIC-20

Sweet 16 was created by Steve Wozniak to reduce code size and make it easier to handle 16-bit pointers and arithmetic for his Apple Integer BASIC. He wrote it around 1977 and referred to it in an arti...   Read More

Position Independent Code (6502) on the Commodore VIC-20

If we are writing 6502 machine code and want to to create a routine or program that can be placed in any location then we have to create Position Independent Code (PIC) or make the code relocatable. H...   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

Hand Assembling to Machine Code on the Commodore VIC-20

I quite enjoy designing machine language routines on paper and then hand assembling them. For many people this would have been their only option until they got a more advanced machine language monitor...   Read More