CFOG's PIP, September 1986, Volume 4 No. 11, Whole No. 47, page 6

RE-VIEW.FYL I Got Those Installation Blues... (Part 1)

by Jim Holmes, with Rashama Johnson

Although I've used computers virtually every day for nearly three years, I know very little about how they really work. Fact is, I don't need (or care) to know.

Recently I bought a new car stereo. I happen to know that the tiny tapes are "programmed" in four tracks... and that the two outside tracks are used for the "programs" on Side A, while the inner two are used for Side B. Understanding this won't help me play a tape. That's all taken care of by the "hardware".

When I insert a tape, the "operating system" knows what it must do to play the "side that's up", auto-reverse to play the "other side", jump to the next (or previous) selection, etc. according to instructions "from the ROM" and simple "toggles" I can press on the "console". I needn't understand how tape decks "think", what "languages" they use, how any "operational delays" between functions are derived; it's all been "pre-programmed".

A personal computer presents a vastly different problem. If we "pre-program" specific functions, assigning them to "toggles" (as is done for "dedicated word processors") we lose flexibility. In order to handle different types of work, a personal computer should be "set up" by the software for the job at hand. Users of PC/MS-DOS machines can usually buy a package "off the shelf" for use on their systems, expecting to do little or no configuration. In the CP/M world users often must install the software, because systems differ in the way they may perform a task.

Most install routines are frustrating for the non-technical user. S/he is-expected to know a great many details about his/her system. The information is often poorly defined, and the only aid offered in most cases is... "refer to the Technical Section of your system documentation." When the user tries to look it up the terms used in the install routine don't appear in the Index; many tech manuals aren't even indexed.

I'll attempt to shed some light on this subject, with the aid of Rashama Johnson OKOK member and developer of Electric Easel, Ozgammon, etc. (That Software Co., Pasadena, CA). To use a phrase from Mark Twain, "... together we share all knowledge. He knows all that CAN be known, and I know the rest." Throughout our three-part series you may credit Rash for any brilliant insights, all the clear and cogent instructions, etc. The naivete needed to undertake this project (as well as an ability to "nag without ceasing") is mine.

Most install routines actually require only two code entries. They must know the codes for clear screen and cursor positioning, in order to set the program up for your system. Many time you will be asked for more information, however. This is because most programmers use a "generic" install routine.

The first thing you will likely see when you load an install routine is a Menu of Systems already pre-configured. If you find your EXACT system listed (or if you know that it "emulates" one which is), just enter this as directed; that should do it. Some of these "emulations" 100%, however, so be sure and do some tests before committing data, etc. When problems DO arise (or if there's no system on the Menu you recognize as "yours"), you will need to do a custom installation.

Assuming this to be the case, let's look at a model install routine, to see what's expected. The one we've chosen is excerpted from Turbo. Pascal, not to illustrate a "good" or "bad" routine but because it's about as complete as you'll find. Where a full text editor is employed, the install routine is detailed as to the use of cursor / insert / block and misc. edit functions.

One question you might ask yourself when confronted with an enigmatic install routine is "... do they really need to know all this?". For example, a modem program wouldn't require many cursor instructions, but it would need your port addresses, etc.

Assuming that you're to do a custom installation, the first question asked will likely be,

"What is the clear screen sequence for your system?"

Looking in my Executive manual under System Specifications, I find a table (page 449) showing Keyboard Sequence plus Decimal and Hex equivalents... together with the related Action. Let's call this Table A; in part (to keep this simple) it says:

                   Table A:

Decimal Hex
Keyboard Sequence Sequence
Sequence (BASIC) (Assembly) Action
-----------------------------------------
:
:
CTRL Z 26 1A Clear screen
:
:
ESC =p1,p2 27 61 1B 3D Load cursor
row, column:
p1 = ypos+32
p2 = xpos+32
:

What does all this mean? In the above example, we are meant to see that holding down the [CTRL] key (while at the same time pressing "D") will clear the screen. Further, entering the code (in either Decimal or Hex) as part of a program would have the same result.

If a "Decimal 26" will clear the screen, why not just type in "26" from the keyboard? It's not the same number, that's why.

When I enter "26" from the keyboard, I'm giving the system two ASCII values (for a definition of "ASCII values" see Technical Note, below). The value of an ASCII "2" is to a Decimal [50]; the ASCII "6" is a Decimal [54]. Now that we've told you this, don't worry about it. For the moment, you may safely use the Decimal number from these tables in install routines; later, when you are more familiar with the differences, you may prefer to "switch to Hex" (the base most often used by programmers, it's a "kind of shorthand" for binary or "machine language"). For the present, an Executive owner would enter:

26 <cr>

The next thing the install routine will ask you to enter is the code for cursor position. In Table A this is not so clear especially if you are trying to find it among four pages of entry lines. What it turns out to be called in the Action column is "Load cursor row, column". The clue here is found in the words "row" & "column". If your manual calls this something else, just look for the word "cursor" plus values for "row" and "column" in the description; this is the one you need. Mine turns out to be,

ESC =p1,p2    27 61     1B 3D     Load cursor
row, column:
p1 = ypos+32
p2 = xpos+32

Ok, how do you enter this one? And what's the p1,p2 all about?

To answer the latter question first, p1 & p2 are values for "screen" row & column, to which some "offset" must be added, for defining the position of the cursor. Most Televideo-like CP/M systems require adding a value of 32; see your manual to be sure.

This sequence (and some others) are more complicated to enter than the single [26] for CLEAR SCREEN (above). Several questions will probably be asked, in order that you input the information in a way the system understands. We'll therefore "walk you thru" such a series of entries before explaining more. The code entered will be from the Executive Manual, as before. In most install routines, the "cursor sequence" is (typically):

"Does your terminal need a cursor initializer?"

Most do. For the Executive it's the [ESC=], or Decimal [27] [61] (Table A, above). if there is more than one initializer for your system, press <cr> after each entry. Most programs will then ask for a specific character (a period, two <cr>s, etc.) to end the sequence. To illustrate, your responses would look like the following:

27<cr>
61<cr>
. <cr>

Next query:

"Does your ROW come first (y/n)?"

As noted above, this is indicated by the values for p1,p2. An Executive owner would answer:

Y<cr>

"Please enter the offset for your ROW."

Here you'd enter:

32<cr>

Another query:

"Please enter the offset for your COLUMN."

Again you'd enter,

32<cr>

Finally, you may be asked:

"Does your terminal need a terminator after ROW, COLUMN or both?"

If you have an Executive, you'd say:

NO<cr>

Next time we'll talk about other things you might be asked in a detailed install routine, and we'll include the Clear Screen and Cursor Position values for some of the more popular systems.

Technical Note:

You may be asked if your terminal accepts the above information in binary, two-digit ASCII or three-digit ASCII... even variable ASCII code. Binary is the most common format, used on virtually all CP/M systems which require an offset for cursor position. All Osbornes, KayPros, Morrows etc., and many S-100 systems accept code in binary form. You needn't be too concerned about the differences, but if you're interested, I'll illustrate them.

Binary has a single value, expressed in decimal or hexidecimal. A decimal 27 would have a unitary value, neither "2, then 7" nor "seven ones plus two tens". In ASCII the [ESC] key would be equivalent; in Hex you'd enter 1B.

ASCII (2 & 3-digit or variable) values are complex (not single). In 2-digit ASCII, "27" would indeed be "2, then 7". In 3-digit ASCII, three characters must be used; a "27" would be entered as "027". Variable ASCII can mix entries of 2, 3, or more. It's a format used by DEC, among others.