Image Viewers on CP/M

CP/M is by default a text-only affair. However, many of the machines that can run CP/M have hardware that would allow them to display graphics. As BBSing started to grow so too did the distribution of electronic images in formats such as: .RLE, .PCX, .GIF and .BMP. Therefore, programs were written on popular CP/M machines to display these pictures. Each program was hardware dependant because there were no standard operating system calls to interact with the graphics hardware. There was GSX-80, but you still needed a hardware dependant screen driver for each machine and not that many machines had them, plus it was pretty slow. There were also programs that printed the image to a printer rather than display on screen. This was particularly useful for those machines that didn't have sufficient graphical hardware or a version couldn't be found or adapted for them.

The main image formats, prior to 1990, were are as follows.


CompuServe developed what is probably the earliest widespread image format in the mid eighties, possibly before 1985. It encodes black and white images in resolutions of 128×96 or 256×192, compressed using Run Length Encoding. This had the most widespread support and I've found the following RLE viewers for CP/M on the Walnut Creek CD:

  • PIXRLE.ARK - RLE graphics viewer for the NEC CP/M Starlet/8500
  • VTCRLE.LBR - RLE graphics viewer for the Visual 1050. This can display an .RLE image as well as save a screen to .RLE. It only works with 'high-resolution' 256x192 images, which the author states virtually all were then anyway. It was written by Alex Fetesoff in 1988.
  • RDUMP10.LBR - RLE graphics viewer, which can display on a TeleVideo TPC-1 or TS-803 graphics screen or print to EPSON FX, SEIKOSHA SP-1000 or 1200, or almost any other EPSON-FX 'work-a-like' printer on any CP/M computer. It was written in Basic and Assembler by Dave Clifford in 1987.

MacPaint: .MAC, .PNTG, .PIC, etc

MacPaint was released in 1984 by Apple and its image format used a form of Run Length Encoding called PackBits. The images are always 576×720 and monochrome. I found one viewer for this on the Walnut Creek CD:

  • PRINTEP v0.6 - Prints Electric Paintbrush/Macpaint images to a MicroBee DP80/100 printer or if you have a Microbee Premium or 256TC, to the screen. Dated 1992.


ZSoft Corporation released PCX in 1985 as an image format for its PC Paintbrush graphics editing software. PCX stands for PiCture eXchange and supported a version of Run Length Encoding to compress the images. Over time several releases of the format were made to support more features and colour palettes.

The only viewers I found for PCX files were written by Steve Goldsmith in 1993 for the Commodore 128 with an 80 column monitor. They work reasonably well but can only view monochrome images and there is some image distortion. The best variants can be found on the Walnut Creek CD:

  • PCX'EM 1.0 - This can view 640x200 images and works with a 16k VDC. If you do have a 64k VDC then it has a mode which supports this and works faster.
  • PCX'EM 1.1 - This can view 640x480 images but requires a 64k VDC and a monitor capable of displaying in interlace mode.


As colour support and display resolutions increased CompuServe decided to release a new image format in 1987, called the Graphics Interchange Format (GIF). This supported upto 256 colours and its use of LZW data compression was much more efficient than RLE. The original release was known as GIF87 and a further release was made in 1989 called GIF89a which added several features, most notably animation. However, not all GIF viewers can view the '89 version of the files so there is a program called GIFSTRIP to convert GIF89a images to GIF87. There are a few GIF viewers for CP/M:

  • GIFVIEW v1.05 - A GIF viewer for the Amstrad PCW. It was released by John Elliott in 1996 and is available from his John Elliott's Amstrad CP/M Software page as PWGIFSEA.COM. This is a self-extracting archive and the program allows you to view image files in GIF87 or GIF89a format as monochrome or greyscale images.

  • GIFPAS - The Turbo Pascal source for a GIF viewer/printer. This is useful if you want to adapt a GIF viewer to your own machine. It can be found on the Walnut Creek CD uuencoded within two emails about it, dated 1992.

  • VALGIF - This was available for the Epson QX-10/QX-16. I've seen it mentioned in a few places, such as on Vintage Computer Federation Forum, which has documentation dating to 1989. The documentation says that it could also view RLE files, but I haven't been unable to obtain a copy of the program.


Microsoft developed the BMP format in 1987 to store Device Independent Bitmaps and was first used in Windows 2.0. It supports compression using RLE or a form of Huffman coding. I found one viewer for this format:

  • PCWBMP v1.5 - A BMP viewer for the Amstrad PCW, released by John Elliott in 1996 and available from John Elliott's Amstrad CP/M Software page as PWBMPSEA.COM. It can only view uncompressed .BMP files in monochrome or greyscale.

Miscellaneous Formats

There were many other formats supported by various applications, which tended to be specific to a single machine or hardware manufacturer. Some of the most notable are:

Stop Press: .SPC, .CUT
A Desktop publishing application for the Amstrad PCW.
An integrated software suite featuring a word processor; spreadsheet; charting, graphing and painting applications; email and more. It was written for the Epson QX-10/QX-16.
DR Graph
A graphing program written by Digital Research which used a GSX driver.
DR Draw
A drawing program written by Digital Research which used a GSX driver.

Video Demonstrating the Image Viewers

You can see some of the images viewers in action on various types of machine in the following video.

Creative Commons License
Image Viewers on CP/M by Lawrence Woodman is licensed under a Creative Commons Attribution 4.0 International License.

Share This Post


Related Articles

Modula-2 Compilers on CP/M

Modula-2 is a great language in general and is a good choice for programming on CP/M. There are three good compilers available for CP/M which all require a Z80 processor and we'll compare each in turn...   Read More

XCCP: A Shell Extension for CP/M

XCCP describes itself as an Extended Console Command Processor for CP/M. It supports the 8080 and v1.0 was released by Anton R. Fleig in 1984. Like EPEX, XCCP doesn't require installing so we can begi...   Read More

EPEX: An Environment Extension for CP/M

Epex is an evironment extension for CP/M. It stands for Environmental Processing EXecutive, and v1.1 was released by James H. Whorton in 1986. It can make using CP/M much more comfortable at the cost...   Read More

File Comparison Utilities on CP/M

There are many utilities available for CP/M to compare the differences between files and to distribute those differences. All the utilities in this article can be found on the Walnut Creek CD. Binary ...   Read More

Breakout Style Games on CP/M

Breakout style video games were pretty popular at one time both at Arcades and on home computers. The games are based on a simple concept where you have to destroy a group of 'bricks' at the top of t...   Read More