IBM PC Programming
Home Politics IBM PC Programming MSP430 LTSpice Tools Empty

 

x86 Assembly
Quick BASIC
MSVC 1.52C

I was a young boy and teenager in the 1960's. So, as a child, the only 'calculator' I had occasional access to was the old, mechanical calculators with a hand-crank on them -- the Monroe's, for example. Transistor radios were just going through the "1-transistor", "3-transistor" and "all-transistor" phases, where you could actually decide how many transistors you wanted to buy in a radio. [The electronics magazines were still publishing smaller tube (valve) radio receiver designs.] More transistors in a radio was better, but also more expensive. This was before IC's were publicly available, of course. Not surprisingly, my slide rule was my friend. Cheap, effective for some problems, and a must for anyone learning math. It wasn't until the early- to mid-1970's that I actually got to try out some electronic calculators at the store. Even then, I couldn't afford their cost.

Altair 8800

When the Altair 8800 was first mentioned in Popular Electronics (a magazine I read often), in January of 1975 (with the 2nd part following in February), I drooled over the idea of buying one. It wasn't until some months later that I got the cash needed to buy one. I then needed to assemble it and get a power supply for the beast (which was not included.)

Electronics was a kind of small-time hobby of mine at the time, but I was no where near very good at it. I knew some of the basics, liked reading the periodicals each month, and I'd read a few books on transistors and ICs, but I knew little else and didn't have a lot of practical experience. That situation would soon change some.

By the way, you can see the pages I saw in Popular Electronics at this web site:

Popular Electronics, January 1975

The darned thing only came with 256 bytes of memory, though. They included sockets for three more 256-byte static RAM chips, but those things were kind of expensive and it was about the time when I really began to feel the need for more memory that MITS offered their 4k dynamic RAM cards. Feeling positive, I bought two of them. Then, I spend long, long hours debugging the darned things and finally discovered the required fixes (the design was bad, to begin with.) I think it took me a month, maybe more, to get them working. A week after all that effort, I got a letter from MITS telling me that their 4k dynamic RAM cards needed some "blue wire" fixes. A little late to save me all that time, but I accepted the correction. At least I learned a little from the sweating over them.

Later, I got callusus on my finger-tips from toggling in code with metal bat-handle switches on the Altair 8800. I got a chance to see an IMSAI 8080, with it's nice, flat, plastic switch design and decided that this was what I really wanted. Unfortunately, I had to work my way through college to pay my own college and living expenses and buying the Altair 8800 and the RAM cards tapped me dry. So there was no chance of buying an IMSAI. But I did get a chance to use them.

I also got to work on Apple's early Apple computer for a short time and then on Apple II's for some years of time, Radio Shack TRS-80, Level I machines, Sinclair ZX81 (still have one), Commodore 64's (I still have two), Vic 20's, Amiga's, etc. Eventually, I got a chance to work on an IBM PC in 1982 and an IBM PC/AT in 1984. By this time, I had also worked on the PDP-8, PDP-10, PDP-11, and VAX-11/780 computers from Digital Equipment, to name some minis.

Roughly about this time, in 1982, I also took on my first significant electronic design entirely without any application specific information from other sources -- an 8051-based unit that I used to convert my IBM Model 85 Electronic Typewriter into a computer printer. My design included static ram for a buffer, used a serial interface supporting both hardware and software handshaking, and interfaced directly to the reed relays underneath the keyboard in the typewriter. I did all the testing to find out how that keyboard worked, documented it, tested ideas about simulating the reed relay closures and strategized about minimizing the impact on the typewriter so that I could return it to pre-modified condition, etc. It worked the very first time I tried it out! A good feeling, I must say. (Model 85 picture; IBM typewriter thumbnail history.)

PCs and Such

The IBM PC architecture has grown from a relatively simple design, with the PC running at 4.77MHz.  The base system from IBM, back then, only had 16k of RAM and couldn't be expanded readily past 256k.  (I remember that I couldn't afford to buy anywhere near 256k of RAM at the time, so I'd set my own sights more at the 32k level.)  Computers were often shipped with only 32Kb of RAM and one floppy drive.  The 8088 CPU exposed its local bus directly onto the system's attachment bus.  Later, with the advent of the IBM PC/AT using the 80286 CPU, this bus was extended to support a 16-bit data path and more interrupt sources and was eventually standardized as the ISA bus.

Soon after the 6MHz IBM PC/AT came out, folks discovered that an 8MHz crystal worked just fine -- 33% improvement for just a few dollars! Simple to install, too -- just a tiny bit of soldering. In my own case, I found that a 9.5MHz crystal worked, as well. But that's about where the add-in cards stopped working, because the bus was too fast. As PC-clones finally started coming out and succeeding as true clones, the market was mostly looking at their "MHz." Faster systems were better, other things being equal. So it wasn't too long before the clone makers ran right into the same barrier I ran into -- the cards wouldn't work when the CPU got up above about 9MHz. So, the need for decoupling the ISA bus (as it came to be called) from the CPU's clock led to a new market for "chip sets" that handled this to replace the bucket full of small ICs needed, otherwise. That chipset business grew several big businesses, by itself, and eventually Intel muscled itself into that area.

Today's Pentium Pro family of computers (including the P II and P III) have as many transistors in their support chipset as the CPU, itself -- 50-75 million transistor equivalents in the complex CPU package alone.  These systems include at least two levels of caching systems, support for several types of DRAM memory systems, a local CPU bus designed to smoothly handle up to four CPUs together, a reflection wave PCI bus for lower power, an AGP bus for video, the standard ISA bus and associated bridge chips, sophisticated interrupt controllers to manage both PCI and ISA bus interrupts, a specialized APIC bus that provides support for multiple CPUs, and support for memory holes and spaces for compatibility.

It's sometimes surprising that there remains a degree of compatibility through all these changes and that old software can often still run on them.   Of course, that has also come with a price in complexity.

My Slant

I'm more interested in teaching folks wanting to learn programming on their own, than in supplementing information that professional programmers may need in their work. The territory of professional work on the PC has moved from DOS to Windows 16-bit, from Windows 16-bit to WIndows 32-bit, and now from Windows 32-bit to Windows 64-bit. There is plenty of information out there (almost shovel-ware, in a sense) and far too much for me to try and organize. It's hard enough for me to try and stay current on it, let alone trying to develop an active set of web pages to teach it.

But getting started in programming has to start somewhere and not everyone can teach themselves by jumping straight into the information hell hole of Windows. It's a big system with a tremendous amount of detail that must be mastered before writing significant applications for others.

There is also a price to pay.  It costs real money to buy the traditional tools used for Windows programming. For those with a hobby interest (which is what I'd like to foster) or just trying to test their hand at it to see how they do, the price may be too high.  Luckily, there are some good tools such as QBASIC and the ML assembler which are freely available and of good, professional quality. A lot can be done with them and they can be used to supplement each other, as well. QBASIC can even call assembly routines with the CALL ABSOLUTE statement. Further, as I'm sure you are already aware, the various QB compilers such as QB 4.5 and PDS 7.1 are widely available, if of questionable legality.

So I think you'll notice that bias here. But it won't be a limiting one. If I find something of interest to me and possibly to others, I'll put it up.

 

Feel free to email me.

Last updated: Friday, January 06, 2006 10:37