PC Graphic Characters on the Z-100

One of the biggest differences between the IBM-PC clone and the Z-100 is in the handling of Graphics, and it is one of the biggest issues when discussing PC compatibility.

The following explanation is based upon Paul Herman's article in Issue #24 of the Z-100 LifeLine:

Most of us know that there are two different types of graphics (at least in the 80's); character (or block) graphics, and dot-addressable (or bit-mapped) graphics. In fact, up until the time the Z-100 was introduced, you had to take your pick between one or the other. If you were in 'graphics' mode, you could use bit-mapped graphics, but normal text output was impossible. On the other hand, if you were in text mode, character display was easy, but graphics were not available.

 

Text Graphics on the Z-100

The Z-100 was one of the first computers to allow text and graphics to be mixed on the screen at the same time. This was a real benefit for programmers, who are always looking for fancier ways to do things. You might say that the Z-100 is always in graphics mode, but the video design is optimized for graphics text display.

To maintain compatibility with the older Heath H-8 (using the H-19 terminal) and H-88/89 series computer, a character graphics set, called the H-19 Graphics Character Set, was provided as part of the Z-100 character font. This allowed existing programs (written in CP/M) to draw lines and other shapes on the screen using specially designed graphic text shapes.

GrafxLineChrs

 

Text Graphics on the IBM-PC Clone

The IBM-PC computer, released about the same time as the Z-100, was a hybrid when it came to graphics. Like earlier computers, it maintained the separation between traditional text and graphics modes. But as a compromise, the BIOS could emulate text mode while in graphics mode. In other words, it was possible to write characters to the screen from the satandard font while in graphics mode. The PC BIOS accomplished this by copying the font pattern into video memory. The number of bytes that needed to be copied for each character depended on the particular graphics mode. This was similar to the Z-100, but the PC was not optimized for text display in graphics mode. This made the text output speed (particularly scrolling) dreadfully slow.

The benefit of the IBM-PC system was that screen output in text modes was blindingly fast. Instead of copying the entire font pattern to the screen, only one byte need be written to video memory (or two, if color attributes were required).

Since text mode in the IBM-PC was so much faster than graphics mode, programmers would naturally like to stay with text mode, if possible. But some applications would look so much nicer with a sprinkling of graphics, like lines and borders. IBM forsaw this, and provided a large set f block graphics that could be used along with the normal character font. Any character value from 0 to 255 that did not have a printable ASCII character associated with it, was given a graphic symbol.

On an IBM-PC, block graphics are treated just like ordinary text characters. If you output a 41h to the console, you will see an upper case 'A'. If you output a 1, a happy-face will appear. It's as simple as that. To get the character to the console, you can write directly to video memory, use an Int 10h call, or use a DOS function call.

 

Advantages of PC Character Graphics

There are a lot of reasons why Z-100 owners should be jealous of the IBM-PC text graphics. Text graphics on the PC is much faster, the character set is much larger, and output to the console is much simpler.

Speed, we can't do much about. The PC's are fast because they have a hardware text mode which requires only one byte be written to video memory for each text or graphic character. This compares with up to 27 bytes which might be written to the Z-100's video memory.

The larger character set is an overcomeable problem. In fact, with the introduction of MTR-100 ROM v3.0, several years ago, we now have the entire PC graphic character set available to us.

Ease of use is still something of a problem... one that Paul Herman had hoped to alleviate to some degree by the time his original article was complete. But first, we should look at the problem more closely.

With version 3.0 or later of the MTR-100 monitor ROM (ZROM), we now have two graphic character sets to choose from; the original H-19 block graphics, and the new PC graphic characters in ROM.

 

Disadvantages of H-19 Graphics

Using the H-19 graphic characters is an awkward task. Instead of just writing unique graphic codes to the console, you must first switch to block graphics mode. When you want to display normal characters again, you must switch back to text mode. These mode changes are necessary because Heath used ASCII codes of printable characters for the graphic characters. This was done to avoid using any character codes above 127.

Back in the days of separate terminals that used 7-bit interfacing, this might have been a reasonable way to define the graphics set. But it is no joy to work with these days. Mode changes must be accomplished by sending ESCape sequences to the console, so a typical output string to display one graphic character on the screen would be 5 bytes long.

Another disadvantage of the H-19 graphics is that they are not compatible with anything except the H/Z-100, the H/Z-88/89/90, and the H-8 used with an H-19 terminal. Programmers looking to write programs that might also be used on the more popular PC's will avoid H-19 graphics like the plague.

 

Accessing PC Graphic Characters on the Z-100

The PC Graphics set included in the MTR-100 V3.0 and later is a distinct step forward for programmers striving for compatibility between different machines. Now, all we have to do is write programs that use this character set, and the same program will display correctly on a PC compatible. Lines, borders, and menus ... which used to require separate programming for Z-100's and PC's ... now can be displayed with relative ease on either machine.

The Character sets in ZROM v4.3 has been expanded further. The entire character set is provided here:  Z-100 ASCII Chart.pdf

 

Z-100 ESCape Sequences

Z-100 ESCape sequences provide for cursor control (including erasing and editing), selecting operation modes, and provide several other additional functions for Heath/Zenith computers. As mentioned earlier, these internal Heath/Zenith Escape Sequences also provide backward mobility with the older H-19 and H/Z-88/89/90 computers, don't require additional software, and permit the changing of screen display characteristics and cursor control functions on-the-fly using the command line and the Z-100's function key, {F8}, which provides the ESC (or ^[ ) code necessary.

For example, to change to yellow text on a cyan background, type the following line at the command line prompt:

ECHO {F8}m36{RETURN}

The default colors are 7 and 0, for white on black background, so to change back, just type:  ECHO {F8}m70{RETURN}

These ESCape sequences are often used in the creation of a Batch File. The Z-100 ESCape sequences are:  Z-100 ESCape Sequences.

 

Z-100 Interlaced Video

The H/Z-100 video screen is normally composed of 25 rows by 80 columns. Each character row is made up of nine lines, giving us 225 lines of information in the display. These are referred to as scan lines, with each scan line divided into 640 pieces (pixels) which can be individually lighted or dark. There are eight pixels per character, thus permitting 80 characters.The H/Z-100 video screen is normally composed of 25 rows by 80 columns. Each character row is made up of nine lines, giving us 225 lines of information in the display. These are referred to as scan lines, with each scan line divided into 640 pieces (pixels) which can be individually lighted or dark. There are eight pixels per character, thus permitting 80 characters.


The scan lines are drawn on the screen one at a time at a very high rate of speed, controlled by a device called a CRT-C (CRT Controller). The entire screen is drawn 60 times per second. If you look very closely at a screen with writing on it, you can see a small gap between every scan line. What the CRT-C can do is to shift the screen of information every other time it is refreshed (redisplayed on the screen) so that the space between the scan lines is filled in. This procedure of placing every other screen with the scan lines woven together is called Interlacing.

For a complete explanation of Interlaced Video, please see the article:  Z-100 Interlaced Video.

 

Locating the Cursor on the Z-100 Screen

Another peculiarity of the Z-100 is the means of placing Text or Graphics in a specific location on the Z-100 Screen. While ZBASIC will also use the LOCATE command, the ESC Y is also often used in ZBASIC programs. An ESCape sequence, ESC Y (or ^[Yrc), is used to place the cursor at any particular location on the screen. This is often referred to in Heath/Zenith manuals as 'Direct Cursor Addressing'. To use this feature, the 'r' and 'c' characters in the command sequence should be replaced by text characters which indicate the desired row and column. Refer to Figure 4 for a list of text characters to use to specify different row and column numbers. You should notice that the text characters are in ASCII sequence, beginning with the space character (which is the first 'printable' character). Therefore, if you don't have this chart handy, you can always calculate the character to use with an ASCII table. The numbers given in Figure 4 assume that the first row and column will be referred to as number one. Here are a couple of examples of using direct cursor addressing...

^[Y 1          ... sets the cursor to row 1, column 18.

^[Y/*          ... sets the cursor to row 16, column 11.

If you try to move the cursor to a row greater than 24 (or 25 if the 25th line is enabled), the command will be ignored, and the cursor will stay on the same line.

 

ESCyRowColChrs     

 

Z-100 Graphics Utilities

WavesBullet     DoodlerV1     DoodlerV2     DoodlerV3

Paul Herman's Doodler-V Program:  Paul Herman created an amazing Graphics Application that made extensive use of the Z-100 and IBM-PC Clone Graphics capability. Let me describe Paul Herman's Doodler V Program:

*    Runs on several different MS-DOS computers, including the Zenith Z-100 series and the IBM-PC (XT, AT and clones). It should also run on MS-DOS 386 machines, including the IBM-PS2 series.

*    On the Zenith Z-100 computer, Doodler supports standard video, interlace video, and ProScan video, in two, eight, or sixteen colors. A Hughes V1 Board is required for 16 color operation. High resolution operation (interlace and ProScan) will require 64K video RAM chips. Three banks of video RAM are not required for monochrome operation.

*    On PC compatibles, Doodler supports CGA graphics in low-resolution color or high-resolution monochrome, EGA graphics in two or sixteen colors, and VGA graphics in two or sixteen colors. You must have more than 64K of memory installedon your EGA or enhanced EGA card to use the 16 color mode of EGA or VGA.

*    Doodler requires MS-DOS or PC-DOS version 2.00 or later to operate properly. It requires a minimum of 105K of free RAM to run.

*    The Doodler Graphics Package is a software tool which allows you to use your computer as an electronics sketchpad. You can draw pictures, charts, plans, diagrams, and just about anything else imaginable that will fit on the computer screen. A wide assortment of preset patterns and sophisticated drawing and text commands is available.

 

WavesBullet     ZCLKscrn1     Paint2     Paint3

  Paint4     Paint5

Steven Vagts' PAINT100 Graphics Program:  This is a terrific program that I made for creating opening Hello Screens at bootup (HELLO.SCN) or for opening graphics screens for programs. For example, the first photo shows the opening screen of PAINT100. The second photo shows an introduction screen (Note the address is no longer correct). The third photo shows the help sceen. The fourth screen shows the addition of the graphics help lines at the top of the screen being edited. The last photo shows my bootup to ZDOS v3. It includes a ZCLK date/time. PAINT100 uses the standard Z-100 Character Set, including graphics and reverse video. While not as fancy as Doodler, it's not as complicated either. Its capabilities include:

*    A Help Screen can be displayed any time by pressing the {HELP} key (see photo 3).

*    A Help line is displayed just above the Function Keys to show the key definitions (see photo 3 or 4).

*    Full use of the Function Keys to mark and bound a block to move, delete or copy, change colors, or enter and exit Graphics Mode or Reverse Video.

*    Copy and Paste a block of the screen to paste elsewhere. Pasting will overwrite anything already occupying the new location.

*    A help block that defines the graphics characers can be placed on the first two lines of the screen, for instant reference (see photo 4). These two lines overwrite the first two lines of your screen, so be sure to insert two blamk lines before invoking the help lines with {CTRL-G}. When the editing is complete, just delete the first two lines and save your work.

*    Save and recall screen to disk as *.SCN files, or any other name that you wish.

*    Print the screen to a printer.

 

WavesHBar6