### BACK TO THE BASICS

This section is for those who have come across some of these terms in reading the History, but don’t quite understand what they mean. Also included is a brief explanation of the hexadecimal numbering system.

First, let’s look at definitions of some words that I have been loosely throwing around:

- BIT
- The smallest piece of information that a computer can deal with, it is either a “0” (off, clear) or a “1” (on, set).
- BYTE
- The most convenient piece of information (for humans) that computers use. One byte consists of eight bits, and ranges from “00000000” (0 decimal) to “11111111” (255 decimal).
- NIBBLE
- (also spelled “nybble”). One half of a byte, consisting of four bits, ranging from “0000” (0 decimal) to “1111” (15 decimal).
- WORD
- Two bytes (or four nibbles, if you prefer), consisting of sixteen bits, and ranging from “00000000 00000000” (0 decimal) to “11111111 11111111” (65535 decimal). Not used much in microcomputers.
- BINARY
- A system of counting using only two digits, “0” and “1” (base 2). Computers speak in binary at their most basic level; anything else is translated into binary, so the computer can understand it.
- DECIMAL
- A system of counting using ten digits, “0” through “9” (base 10). Most of the Western world uses this system.
- HEXADECIMAL
- A system of counting using sixteen digits, “0” through “9” and “A” through “F” (base 16). Programmers use this system as a convenient way of organizing groups of binary numbers.
- KILOBYTE
- Abbreviated “K”, “KB”, or “Kbytes”, it refers to 1,024 bytes. A 64K computer has 64 x 1024 = 65536 bytes.
- MEGABYTE
- Abbreviated “M”, “MB”, or “meg”, it refers to 1,024 Kbytes, or 1,024 x 1,024 = 1,048,576 bytes. A 32 MB hard disk, the largest size volume that ProDOS can handle, holds 32 x 1,024 = 32,768 Kbytes, or 32 x 1,024 x 1,024 = 33,554,432 bytes.
- GIGABYTE
- Abbreviated “G”, “GB”, or “gig”, it refers to 1,024 MB, or 1,048,576 Kbytes, or 1,073,741,824 bytes. The Apple II Smartport (which will be mentioned later in this history) can handle disk devices up to 4 gig in size (although the software to handle that type of size has yet to be written).
- RAM
- Random Access Memory. Any data stored in this memory disappears when the computer is turned off.
- ROM
- Read Only Memory. Data cannot be stored in this type of memory, but instead it usually contains programs or other information that does not disappear when the computer is turned off.
- HARDWARE
- The physical electronic components and mechanical parts that make up a piece of computer equipment. Examples would be the keyboard, disk drive, or television monitor (also called CRT, or Cathode Ray Tube).
- SOFTWARE
- The digital instructions executed by the computer in RAM. They may act on the hardware that is attached to the computer. Examples would be a BASIC or Pascal program, an assembly language routine to read a clock, or a disk operating system. Since software is executed in RAM, it disappears from memory when the computer is turned off.
- FIRMWARE
- The same as software, except it is executed from ROM, and does not disappear when the computer is turned off. Almost any software could be in ROM, except programs that modify themselves as they run.

Next, let’s look at hexadecimal numbers in more detail. Since computers deal in binary (base 2), the true language of computers is either in terms of “0” (off) or “1” (on). However, it quickly becomes cumbersome to refer to large numbers in binary; the base 10 number “458” is “111001010” in binary. So programmers have decided to group numbers in such a way as to make it easy to convert part or all of that number to binary if necessary, but still have numbers (almost) as easy to deal with as our standard base 10 system.

Now, in the familiar base 10 system there are ten digits, 0 through 9. When counting, after you pass 9, you add one to the digit to the left of the 9, change the 9 to a 0, and continue. So, “09” becomes “10”, “19” becomes “20”, and so on. However, in the base 16 system there are sixteen digits, 0 through 9, and then A through F (representing decimal 10 through15). When counting, then, you go 7, 8, 9, then A (not 10), B, C, D, E, F,10, 11, 12, and so on. In the Apple world we have traditionally used a preceding dollar sign to signify a hexadecimal number, so “25” means twenty-five, but “$25” means thirty-seven (2 x 16, plus 5). To translate a hexadecimal number to decimal, use powers of 16:

$B65F | = | (11 x 163) | + | (6 x 162) | + | (5 x 161) | + | (15 x 160) |

= | (11 x 4096) | + | (6 x 256) | + | (5 x 16) | + | (15 x 1) | |

= | 45056 | + | 1536 | + | 80 | + | 15 | |

= | 46687 |

The same thing can be done in reverse to convert base 10 to hexadecimal, starting by dividing the number by 4096, then the remainder by 256, then 16. If the number is greater than 65536, you need a bigger power of 16 (and you are probably not dealing with an 8-bit Apple II!) Or you can just get a programmer’s calculator like mine that automatically does the conversion for you…

When dealing with memory addresses on an Apple II, we usually designate them as four digit hex numbers (such as the $B65F example above). Numbers less than $1000 often are printed without the leading blank ($400 instead of $0400), and numbers less than $100 are treated the same way ($32 instead of $0032).