The VIC-20 was my first computer. Nothing like working hard on a program only to hit the memory limit. I read that manual from cover to cover. It was wonderful that practically everything you could want to know about your computer was in one book.
Ah memories,... The VIC-20 was my first computer too, as a 14 year old in 1983. Programming in Basic exhausted the 3583 bytes of RAM too quickly. So I spent all my pocket money on the VicMon 6502 assembly language cartridge ($84 I think it cost, about $250 today). That summer holiday, I copied out the entire ROM disassembly into old school exercise books (I couldn't afford a printer!), and reverse engineered the floating point math routines. Then I wrote 6502 assembly programs, including:
- a text to speech program, using phoneme production rules I found in a 1976 IEEE paper "Letter-to-sound rules for automatic translation of english text to phonetics"
- a 3D graphics toolkit, that drew antialiased lines, circles, cuboids onto a pixel-addressable display. The VIC-20 only had a 22x23 character display. I remember having to fill the screen with ASCII chars 0 to 255, then forcing the video to use doubleheight 8x16 pixel characters with char data in RAM rather than the video ROM. Then the graphics primatives were written into these characters by bitwise operations. I had to write my own arithmetic routines as the 6502 could only add two 8bit numbers. There was not even a multiply instruction!
My dad was quite prescient for the time and bought me and my sister VIC-20s with little black and white matching TVs. I have great memories of typing in games from magazines and hacking the random sentence generator in BASIC and loading/saving programs to cassette tape over many minutes. Ten minutes to find and load a program!
The sentence generator was quite hilarious, my friends and I added all the bad words a group of 12 year-olds could think up and put them in the DATA lines. Hours and weeks of fun and laughs, haha. I'm a bit jealous other people discovered assembly language on the thing, didn't know it existed at the time.
Had the whole thing with Datasette, Manuals, and tapes in the original box in mint condition until around 2001-ish… until I finally sold and trashed everything to backpack around the world, sigh.
> Nothing like working hard on a program only to hit the memory limit
Mine was a TI-99/4a. The "+" symbol was obtained by SHIFT =, as on most current US-layout keyboards. But if you hit the FCTN key instead of the SHIFT key, it immediately rebooted the machine. It was easy to do that because the FCTN key was immediately below the right SHIFT key. Was so frustrating to lose hours of work that way. First lesson in save early, save often. Of course saving was to cassette tape, which took several minutes, so you tended to delay doing it.
EDIT: Also, the quote (") was obtained as FCTN-P, which is very close to the = key. I think that might have been even more dangerous.
I must have had this VIC-20 for nearly 36 years. Generally it works like a champ, except analog inputs from the paddles aren't handled properly and jumps around. It is very annoying. If anyone reading this comment has some brilliant suggestions on fixing it, I would love to know more.
The other problem is all of the cartridges for all of the games. However, in my search to solve this problem I found http://www.mega-cart.com/ It is amazing, every piece of software ever written, even demos from 2007 and all of the memory expansions on a single cartridge. I highly recommend.
Further, the joystick went missing, but Commodore used the same interface as the Atari, so I could actually by a brand new replacement off the shelf at a local retro computer store.
The potentiometers get worn and dirty, and the varying resistance from the dirt and loose contacts causes the jitter. You can try cleaning them with electronics cleaner or alcohol, but it probably won't work for long, if at all.
Commodore paddles are similar, but use 470k ohm linear pots. You can use 500k ohm ones if you can't find 470's, but you probably won't have a problem finding them.
I wish I still had my copies of The Commodore 64 Programmer's Reference Guide and The Commodore 64 Inner Space Anthology (published by The Transactor magazine). Such incredible resources. I taught myself assembly when I was twelve or thirteen years old, although I sort of sucked at it because I grew up in a tiny, isolated northern town and couldn't get any of my questions answered. In fact, I am pretty certain I was the only person within a 500 km radius with any command of 6510 assembly.
Getting that bare-metal knowledge of that machine served me pretty well. I'm not sure if there's an equivalent path to programmer competency today.
Yeah, that's the one. I'm not normally one for nostalgia or memorabilia, but I spent a LOT of my youth poring over that thing. I think it eventually got tattered and my mom chucked it when I left for university.
I still have my original C64 Programmers Reference manual. I have also collected a few older programming books from the era like including book 1571 Internals.
Ditto, mostly! There was one page of the Programmer's Reference Guide that had a grid showing the hex opcodes for each instruction and addressing mode, and after many adventures in hand-assembling code, this ended up being the most worn-out page in mine. :)
My first job was demo'ing VIC-20s at Macy's stores in the SF Bay Area when I was 13 (there was a group of us spread around to different malls). One of the features of the marketing package was to demonstrate CompuServe, The Source, and Dow Jones News Retrieval dialup services.
After the summer gig ended, the accounts still worked and that's how I got online for the first time, before BBSes.
Thanks, Rachel. A Vic-20 was my first, too, although it and its manuals have been lost to time and cross-country moves.
I got a Commodore 64 around the same time and, for a while, had a "cool" set up with a TV, the two Commodores, an Atari 2600, and A/B switches for managing all the connections. I had a tape drive for the Commodores too, but never could figure out how to use it (I was young).
I would take trips to the library and pick up secondhand computing magazines that had code listings in the back, in BASIC, and then carefully copy them in to one of the computers.
I didn't really grasp everything about it all, but I understood flow control and loops and basic logic before about 8 or so.
I really wish there was a similar development environment now for beginners. Everything seems to either dumb things down too far -- confusing drag-and-drop UIs and so on -- or introduce highly abstract concepts way too early (Javascript...). I think a big part of the success of Arduino was this same "learn by tinkering" environment.
The goal of block based languages like Scratch is to allow beginners to be able to worry about logical errors without wasting nearly all of their time on syntax errors instead. Sinclair was able to get the same effect on his machines with his multi-mode cursor and one Basic keyword per key (of course, the horrible membrane keyboards he used made this the only reasonable option).
The main problem with block based languages is that short code fragments take up the whole screen. This keeps people from ever going beyond trivial initial examples.
I think a better approach to reducing syntactical complexity is simpler language.
In traditional basic, a for loop looks like:
for i = 1 to 100
print i
next i
The syntax here is very nearly as simple as possible. There are no parentheses, no semicolons, no braces or brackets; i is not declared ahead of time; indentation isn't important.
Every new programming language is developed with its own syntactic dressings for ever-greater levels of abstraction. More experienced programmers want to see lambdas and continuations and parallelism and design patterns and so on, and these concepts are extraordinarily difficult to teach to beginners without also introducing advanced math. We forget how difficult it is to grasp these abstractions for the first time; we eat our young.
I don't like graphical languages because they aren't a good stepping stone towards "real" programming. They are too limited, too verbose, too awkward, and too slow to build programs with.
We assume that we can't make new languages that are resistant to syntax errors. But once upon a time, we did. (Despite all its many other limitations, I don't think I ever had a single syntax error in COBOL.)
I remember working though this with my dad when I was little, very well put together. That same copy now sits on my shelf as a reminder of where it all started for me. Still have thar ol Vic & play around on it every now and then. We've sure come a long way
I remember spending all of a Saturday typing in that game in the back of the book where you're a stationary cursor-sized block at the bottom of the screen and you have to tap the space bar at the right time to hit the big white block moving across the top. I was pretty disappointed after all that but I didn't have a tape or disk drive to save it. So I just sat there pretending it was fun until I finally bit the bullet and turned off the VIC-20.
My first machine was a TRS-80 Model III that my dad bought for me at a garage sale. It came with an aftermarket BASIC programming manual, but no programmer's manual for the machine. Without a real reference manual to explain what was going on, I wasn't able to get past the "programs as magical incantations" stage until much later.
Also, the machine came with no disk drives or any other storage to speak of. 9 year old me was really impressed at how people apparently retyped their programs into the machine every time they turned it on.
I also didn't understand what "REM" meant and the author didn't really go into what comments were and what they were for, so I dutifully typed every comment from the program listing into the machine word-for-word, being careful to use the exact same capitalization and punctuation. Then, of course, I wondered why I had to type all that cryptic stuff in below it if I was already telling the computer what to do in English!
It's a miracle I persisted long enough to figure this all out and then make a career out of it.
Fond memories indeed, reading that. I cut my teeth on an old VIC-20. I think I even had that manual, and typed in that BASIC music program. My first foray into PEEKing and POKEing things into memory with that language.
I think that inspired me to go out and get the '101 BASIC Games' book and experiment with that code too! "Hammurabi, I beg to report..."
Good memories sitting with dad at the VIC-20 when I was about four years old, typing in BASIC programs from magazines. Once, we typed in a drawing program and drew the planets with the joystick. We also went to local computer shows and brought back programs on data cassettes to try out. Fun times, and I was hooked!
In 1979, my friend's dad got a new Apple II+ with THE APPLESOFT TUTORIAL and we started at the beginning and tried everything as it came along. At the age of 13, we both learned how to program. Thank you Caryl Richardson and Jef Raskin.
Those early Apple manuals were probably the best computer manuals ever done. Friendly hand-holding at its best. When I saw the first Mac manuals ... very disappointing ...
You can find it and others at archive.org: https://archive.org/details/VIC-20ProgrammersReferenceGuide1...