Back to the index of Compute II

COMPUTE II ISSUE 3 / AUGUST/SEPTEMBER 1980 / PAGE 41

ALL ABOUT OSI MICROSOFT BASIC-IN-ROM, VERSION 1.0 REV 3.2

by Edward H, Carlson

Published by the author
3872 Raleigh Drive
Okemos, MI, 48864
8½ × 11 inches Soft-cover, 60 Pages, $8.95

Review by Charles L. Stanford

This book would almost certainly have saved me from many very frustrating hours of poring through OSI’s so-called “Manuals” and several of the general texts on BASIC during the first months I owned my C1P. Would you believe, I discovered how to use the immediate mode by accident, in about the fifth week? Mr. Carlson covers the subject very nicely on the first page of his new book.

Granted, BASIC is BASIC, to a very large degree. It’s not too hard to convert from one computer’s BASIC to another’s. Most commands and functions act alike. But there are significant differences in some areas; I can never remember the exact result of some of the functions I seldom use, such as TAB and INPUT. So every encounter with those commands in a published program requires some searching in the files. This reference book ends that.

Mr. Carlson states in the introduction that he is presenting OSI BASIC on two levels; pure BASIC, and then the underlying principles of program code storage, pointers, flags, and the way programs really work. He succeeds admirably in the first, with only minor exceptions. Each of the commands, statements, functions, and operators is listed and discussed in detail. Many examples and suggestions are included, and useful combinations of functions are presented. In particular, I learned some things about the USR function I could only guess at before (and I use it heavily). A very few of the functions covered could have stood a heavier treatment. WAIT I, J, K and the Boolean Operators AND, OR, and NOT are, as is usual, glossed over, apparently under the theory that everyone understands Boolean Algebra. It is very elementary, but many hobbyists haven’t yet seen its usefulness, and may never until more of its advantages are more thoroughly pointed out and explored. Be assured, though, that these are minor faults – the coverage of BASIC is very thorough. This manual, together with a more generalized text (such as Basic BASIC) should meet any programmer’s needs.

Mr. Carton’s treatment of his second task is not quite so successful, although still very thought provoking and useful. He has caused some considerable loss of sleep, while I explore the machine codes his lists and tables point out. There is an extremely well annotated memory map for pages $00 through $03, as well as a listing of the Monitor ROM from $FE00 to $FFFF. The ROM listing is for the C2-4P, but differences in the C1P ROM are called out in a separate list. I think most OSI owners have figured out by now that the BASIC ROMs are identical for all models, with only the Monitor ROMs being different.

Other useful discussions are presented on the format and programming of both BASIC and Machine Language tapes, floating point numbers, and the way the program stores variables. Less successful sections cover the source code and two’s complement binary numbers. The only section that fails badly, however, is the one on OSI’s Big Bug. I refer, of course, to the String Array Garbage Collection glitch. The author presents what might appear to be a really simple solution. It does, in fact, work. But it’s virtually impossible to overlay on an existing program which uses a lot of concatenated string arrays. There are more effective solutions to this bug.

All in all, I think that any of several sections of this very well presented manual are worth the purchase price. I recommend it to the hobbyist and to the serious programmer alike.