IBM PC Programming

See at.html for some PC pictures.

The SofTech Microsystems, Inc., UCSD p-System Application Catalog, First Edition, from December 15, 1981. When I started at SCS in 1982, I used UCSD Pascal running on an Apple II. The UCSD p-System compiled programs into p-code, which was very similar to what Java compilers do. The UCSD p-System was a complete operating system. UCSD Pascal II on an Apple II compiled at about 200 lines per minute. SCS later purchased a Western Digital Pascal MicroEngine that compiled about 2500 lines per minute. The MicroEngine had a custom cpu that executed p-codes directly. The UCSD system was originally written at the University of California at San Diego, but later sold to SofTech. Version II supported the Apple; Version III supported the MicroEngine, and SofTech's version IV supported the Radio Shack TRS-80 and IBM PC/XT. I think that the MicroEngine was about twice as fast as the TRS-80. The Apple used 5 1/4" floppy disks, while both the MicroEngine and the TRS-80 used 8 1/2" disks.

The UCSD Pascal Handbook A Reference and Guidebook for Programmers by Randy Clark and Stephen Koehler from 1982, ISBN 0-13-935511-1. This book described the UCSD Pascal language as implemented in SofTech Microsystems' p-System Version IV.0. The pages are in a typewriter-like Courier font, the style used by most Pascal books of the time.

SofTech Microsystems Version IV.0 UCSD p-System Internal Architecture Guide from March, 1981. This guide describes the 256 P-Code byte-codes supported by the P-Machine and the BIOS calls supported by the p-System. NCI stands for Network Consulting Inc. NCI eventually took over from SofTech, and then later Pecan took over from NCI.

The UCSD p-System contained an optional Fortran compiler. This is the title page of the SofTech Microsystems UCSD p-SYSTEM A PRODUCT FOR MINI- AND MICRO-COMPUTERS Version IV.0 FORTRAN REFERENCE MANUAL, first edition from March 1981. The language was similar to Fortran-77. The compile listings in the manual have the heading FORTRAN Compiler IV.0 [0.0] The cover of this manual was blue the the NCI logo the same as the Internal Architecture Guide above.

A close-up of the title for any non-believers. This actually existed.

Here is a UCSD p-System overview psysversions.html from http://www.ics.uci.edu/~archive/documentation/p-system/psysversions.txt.Z .

The Apple II http://apple2history.org had an 8 bit MOS Technology 6502 cpu http://en.wikipedia.org/wiki/MOS_Technology_6502 .

The TRS-80 http://www.trs-80.com had a Zilog Z80 cpu running at a whopping 2 MHz. The Z80 was an 8 bit cpu similar to an Intel 8080 and contains the 78 Intel 8080 op codes in its instruction set. http://en.wikipedia.org/wiki/Zilog_Z80 The TRS-80 used 8 1/2" floppy disks. SCS's TRS-80 had an expansion unit with three floppy disk drives. The floppy disk drives on the TRS-80 had a bad design that would corrupt any disks left in the drive when you powered the drives up or down. We used to call this system the Trash-80. Tim Mann http://www.tim-mann.org/ has a Retrocomputing page with a TRS-80 emulator for Unix.

IBM Personal Computer Hardware Reference Library Technical Reference, part number 1502494, from 1984. This is IBM's reference manual for the original 6 MHz 286-based AT. Section 5 contained a 176-page annotated listing of the system bios. I referred to this section a lot, especially the part with the video code for int 10h starting on page 5-127. The manual also covered items such as the circuitry on the system board, expansion boards, keyboard, and the power supply, and details of the 80286 and 80287 instruction set.

Microsoft Macro Assembler Package, User's Guide for the MS-DOS Operating System, document number 8450L-300-00, part number 016-014-009, from 1984. This manual described version 3.00 of MASM, LINK, SYMDEB, CREF, LIB, and MAKE.

The 5 1/4" floppy is coded D-175 016014.301 and says
MICROSOFT
MACRO ASSEMBLER
Package
For MS-DOS
System Requirements:
128K memory*, MS-DOS 2.0 or higher, one double-sided disk drive (two recommended)
* Based on 108K available user memory
Part No. 016-014-011

Microsoft MS-DOS Operating System Programmer's Reference Manual, document number 8411-310-02, part number 036-014-012, from 1984. This manual listed the services provided by MS-DOS 3.10. I made heavy use of the functions under int 21h (which interestingly enough, start almost identically to the services provided under CP/M). The manual also covered items like writing device drivers and loading executables.

Microsoft had unix-envy, even back in then... Section 1.5 FILE AND MEMORY MANAGEMENT at the bottom of page 1-7 starts
The MS-DOS hierarchical (multilevel) file system system is similar
to that of the XENIX operating system.

Prospero Software http://www.prosperosoftware.com ProPascal User Manual Version iid 2.1 for 8086/8087/8088 with MS-DOS/PC-DOS and Version iic 2.1 for 8086/8087/8088 with CP/M-86 from March 1985. When we did the initial 8088 MS-DOS port of our application, we tried all of the available Pascal and Fortran compilers that we could find. Prospero's Pascal and Fortran compilers were the only ones that would compile our applications. The other compilers that we tried were either too buggy to compile large programs or else (in the case of Microsoft, for example) so non-standard that we could not even get a compile far enough to tell. Prospero is located in England. We were so pleased with their compilers, that we offered to be US resellers. Prospero Pascal was (and I believe still is) the only Pascal compiler that passes the Pascal Validation Suite developed by the British Standards Institute.

Borland Turbo Pascal Reference Manual from 1983. Turbo Pascal http://www.borland.com was Borland International's claim to fame. Borland supported CP/M-80, CP/M-86 and MS-DOS/PC-DOS. The TURBO.COM stand-alone executable with the integrated editor and compiler was only 27 KB. In comparison, current versions of Microsoft compilers require about a million times that much space. Unfortunately, we could never convert our Pascal programs to Turbo Pascal because TP was (to use a phrase common in the fortran world) too much of an extended subset of Standard Pascal. Turbo Pascal didn't support some basic Pascal syntax, and the early versions created only COM format executables using the tiny memory model in which all of the code and data was confined to the same 64 K segment. The editor, a clone of MicroPro WordStar was nice for the time, though, and a 27 KB executable was not a bad size for an editor, let alone an entire IDE.

The Borland Turbo Pascal 4.0 Owner's Handbook from 1987. The cover says "The world standard in Pascal compilers is now faster than ever before - compiles 27,000 lines per minute" and "IBM VERSION PS/2, PC, XT, AT, & True Compatibles".

The Borland Turbo C 2.0 User's Guide from 1988. Borland tried to follow on the success of Turbo Pascal, but it took longer than they expected to produce a good C compiler. We didn't have many C programs in 1988, so we didn't use Turbo C much. Turbo C shows the start of the memory model explosion to work around the 64 K segment limitation of the Intel 8086 architecture. Near pointers were two-byte values with an offset from a fixed segment pointer and could access only a single 64 K segment. Far pointers were four-byte values with a two-byte segment pointer and a two-byte offset and could access the lower 1 MB of memory (because the address calculation shifted the segment pointer 4 bits before adding the offset). Later compilers invented huge pointers, which were four-byte values which were actual four-byte addresses and could access any area of memory by copying through a window created by a memory manager. For many C programmers, far pointers on Intel systems were the first time that they had to deal with a system where the size of a pointer did not match the size of an integer. Turbo C supported tiny (all code and data with in the same 64 K segment, required for COM format executables), small (code and data in separate 64 K segments), medium (far pointers for code, near pointers for data), compact (near pointers for code, far pointers for data), large (far pointers for both code and data), and huge (far pointers for code, data and static data).

Microsoft C 5.0 Optimizing Compiler for the MS-DOS Operating System User's Guide, document number 410840001-500-R04-0887A, part number 00177, from 1987. It could generate 8086/8088, 80186/80188, and 80286 instructions and could use the standard small, medium, compact, large, and huge memory models. As with most MS compilers, it was a little slow and a little buggy.

Microsoft Pascal Compiler for the 286 XENIX Operating System User's Guide, part number 8511I-330-05, document number 020-092-013, from 1985. We used this compiler on Xenix 386, but not for long, because it could not take advantage of 386 instructions and, as with all things Microsoft, it was a little buggy.

HCR/Pascal User Reference Manual from July, 1987. For a short time, we used HCR/Pascal on our SCO Xenix systems. SCO resold this compiler. The compiler supported ISO Pascal Levels 0 and 1 plus some extensions for separate compilation. The compiler actually translated the programs into C, and then used the Xenix C compiler. This allowed Pascal programs to use the C preprocessor and to call Unix system functions easily.

We did our original 386-based MSDOS port using DJGCC http://www.delorie.com .

Zortech C++ Version 3.0 Compiler Guide from 1991. We used Zortech C for our first released 386-based MSDOS port.

Symantec C++ Version 6 User's Guide for Windows and DOS from 1993. Symantec's update of Zortech C worked well for us.

Section 1.2.1.3 Five Byte Packed Binary (5b): Type W Mouse Only on page 1-10 of the LOGITECH Mouse Technical Reference and Programmer's Guide, Document Number PUB 620190-01 Rev A, from July 1990. This was one of the very few manuals that told how to program mice. The manual contained a list of the Int 33h services provided by the mouse device driver. I used these services in the MSDOS port of our applications. The manual also described the mouse droppings that the mouse sent over the serial port. I used the specifications on this page to write a SCO Xenix mouse driver that our applications used.

FANSI-CONSOLE The Integrated Console Utility User Manual Version 2.00 - November 12th, 1986 (2nd Printing) by No Smoking Software and Hershey Micro Consulting, Inc. We have hand-written 5 1/4" floppy disks labelled Version 2.00I Serial 000005562 Date 06/08/87. Fansi-Console was a replacement for the MSDOS ANSI.SYS driver that ran faster, supported more escape sequences, supported command-line recall, and supported keyboard macros. We recommended it to some of our initial MSDOS customers.


Return to the museum ../museum.html

Return home ../../index.html



http://williambader.com - Revised October 30, 2010 10:33:40 PM.
Copyright © 2010 William Bader.