June 04, 2003

The Complete History of Hacking

I was just reading the The Complete History of Hacking and came across this line:

[1981] Commodore Business Machines starts shipping the VIC-20 home computer. It features a 6502 microprocessor, 8 colors and a 61-key keyboard. Screen columns are limited to 22 characters. The product is manufactured in West Germany and sells in the U.S. for just under $300.

vic20.jpg

I had one of these... I still have all of the cassette tapes with my programs on them. I also bought the 16k expansion cartridge (the computer shipped with 2k), but never graduated to the Commodore 64, which I think programmers slightly younger than I am all had. I tend to think that it was the necessity to write very small, airtight programs that made the Pound dogma in "Dos and Donts of an Imagist" -- "use no word that does not contribute directly to the presentation of the thing" for example -- so attractive to me when I was very young (that and the belief that nobody reads poetry). What doesn't appear in the above Complete History is the appearance of my very first computer, the Sinclair ZX81:

zx81main.gif

I found this specs sheet on one of those ZX81 hobbyist pages, ZX81 Home Page. I can't believe people still like to program in this thing, since the programs disappeared every time you shut the machine off and had to be rewritten -- at least that's how I remember it, or maybe I didn't feel like it was worth purchasing the cassette drive.

Integrated Circuits
Z80A Microprocessor clocked at 3.25MHz.
1K RAM, expandable to 16K, 32K or 56K.
8K ROM containing BASIC.
A single ULA for all I/O functions.

Ports
Bus connector for adding peripherals.
3.5mm cassette tape interface for loading/saving programs.
UHF output for display on a TV set.
9v DC power supply. Smoothed down to 5v.

40 key touchpad keyboard.

Screen Resolution
32x24 Text.
64x48 'graphics'.
256x192 Hi-Res graphics. (But see notes.)
Various overscan modes. (Since it's only outputting to a TV set.)

Memory Map:
0-8K BASIC ROM.
8-16K Shadow of BASIC ROM. Can be disabled by 64K RAM pack.
16K-17K Area occupied by 1K of onboard RAM. Disabled by RAM packs.
16K-32K Area occupied by 16K RAM pack.
8K-64K Area occupied by 64K RAM pack.

Wow, what a monster. I don't know how I got this computer -- I think my father got it free when he subscribed to Time magazine or something -- but I bought the Vic 20 with the money I got from winning a TV trivia contest hosted by our local newspaper, The Herald News. I heard John Ashbery was some sort of trivia whiz kid, so I'm not so embarrassed to reveal that part of my early youth was spent involuntarily memorizing the names of the actors in The Munsters.

Posted by Brian Stefans at June 4, 2003 10:39 AM
Comments

The ZX81 was lightyears ahead of the ZX80 -- the 81 had a real chiclet keyboard, while the 80 had a press-surface. Tape drives! And the memory upgrade cartridges that always jiggled out of the slot, turning off the machine.

Posted by: The English Channel at June 4, 2003 12:47 PM

Actually, the ZX81 had a press surface keyboard as well -- the keys gave a little bit when pressed, like there was an air pocket under them, but there were no moving parts. At least that's how I remember it. I'm updating the story with the rest of the specs which I had accidentally left out -- 40 key touchpad keyboard is listed there... but I'm a foggy old man.

Posted by: Mr. Arras at June 4, 2003 01:11 PM

Saw some hits, to my site, from your Blog...pertaining to my 'Complete History of Hacking' page...FYI, I will be adding the Sinclair.

Posted by: WBG Links at June 7, 2003 08:12 AM

This variable is then used in various lines of code, holding values given it by variable assignments along the way. In the course of its life, a variable can hold any number of variables and be used in any number of different ways. This flexibility is built on the precept we just learned: a variable is really just a block of bits, and those bits can hold whatever data the program needs to remember. They can hold enough data to remember an integer from as low as -2,147,483,647 up to 2,147,483,647 (one less than plus or minus 2^31). They can remember one character of writing. They can keep a decimal number with a huge amount of precision and a giant range. They can hold a time accurate to the second in a range of centuries. A few bits is not to be scoffed at.

Posted by: Dudley at January 19, 2004 04:22 AM

Each Stack Frame represents a function. The bottom frame is always the main function, and the frames above it are the other functions that main calls. At any given time, the stack can show you the path your code has taken to get to where it is. The top frame represents the function the code is currently executing, and the frame below it is the function that called the current function, and the frame below that represents the function that called the function that called the current function, and so on all the way down to main, which is the starting point of any C program.

Posted by: Gwenhoivar at January 19, 2004 04:22 AM

Seth Roby graduated in May of 2003 with a double major in English and Computer Science, the Macintosh part of a three-person Macintosh, Linux, and Windows graduating triumvirate.

Posted by: Owen at January 19, 2004 04:23 AM

To address this issue, we turn to the second place to put variables, which is called the Heap. If you think of the Stack as a high-rise apartment building somewhere, variables as tenets and each level building atop the one before it, then the Heap is the suburban sprawl, every citizen finding a space for herself, each lot a different size and locations that can't be readily predictable. For all the simplicity offered by the Stack, the Heap seems positively chaotic, but the reality is that each just obeys its own rules.

Posted by: Margaret at January 19, 2004 04:23 AM

When compared to the Stack, the Heap is a simple thing to understand. All the memory that's left over is "in the Heap" (excepting some special cases and some reserve). There is little structure, but in return for this freedom of movement you must create and destroy any boundaries you need. And it is always possible that the heap might simply not have enough space for you.

Posted by: Polidore at January 19, 2004 04:25 AM