Sadly, I no longer have the source code to most of these.
I did, however, manage to disassemble Atari Cassette Verify from an old COMPUTE! magazine.
Also, it might be possible to get Undelete for Atari from COMPUTE's Disk, though I'm not sure COMPUTE's Disk ever got past the planning stages.

Computer System

Name of the software

Programming Language

Description
Atari 800 Atari Cassette Verify, page 100. See also. 6502 Assembly Language A fully relocatable 6502 machine language routine for verifying the integrity of a data cassette. It cheated a little bit, getting the address of the cassette device's name from within a ROM - otherwise it wouldn't have been fully relocateable. This was useful because saving a program to cassette was slow and tended to result in unrecoverable errors; if you didn't save your program on more than one cassette (slowly), you could easily lose your only copy of what you just saved.
Atari 800 Don't recall 6502 Assembly Language A little DOS menu substitute that would run from "page 6" (absolute address $600 or decimal 1536). This kind of thing was popular back then - mine was a little more featureful than most because it used a sort of mini-interpreter to reduce the assembly language boilerplate needed to make CIO calls.
Atari 800 Chase the Dot 6502 Assembly Language A very fast and very boring game. You controlled a dot with a joystick, and you chased another dot that moved around semi-randomly.
Atari 800 Don't recall Atari 8K BASIC for creating the loadable files and 6502 Assembly Language for loading the files Relocating loader with single-byte resolution. You'd assemble your code once at $101, and again at $203, and from that you could tell which low bytes differed and which high bytes differed. You had to adopt the convention of always doing your address arithmetic low byte first, otherwise carries could cause problems.
Atari 800 Cookie 6502 Assembly Language It just output the word "Cookie" once in a while, at random intervals. I snuck it onto one of my dad's diskettes and was pleased to see that it puzzled him. It worked when there weren't any programs running, because it was an interrupt handler. It even worked while in the DOS menu.
Atari 800 Undelete for Atari Atari 8K BASIC A program for undeleting files from Atari diskettes. It would write the data to a second diskette in batches of about 40 kilobytes at a time.
Atari 800 Quiz (?) Atari 8K BASIC A program for drilling on things you need to memorize. I used it for German and Spanish vocabulary in high school. It lives on to some extent as a Linux program. I even defined my own characters for German Umlauts and Spanish Virguilla - localization wasn't really a thing back then.
Atari 800 Don't recall Don't recall A text editor. It was a little unique in that it edited text directly in video RAM, with small transformation as lines entered and left screen RAM. Also, it always kept the line you were currently editing vertically centered.
Atari 800 Don't recall Don't recall A heap (the malloc kind). It was probably a bit naive - I never used it for much.
Atari 800 Don't recall Atari 8K BASIC I did a sizeable number of experiments with computer graphics on the Atari - this was back before GL became more or less synonymous with computer graphics, and anything with a semblance of 3D-ness was still interesting. Here's a picture from a Linux-based reimplementation. It uses the sin() and cos() trigonometric functions:

I also played with Dragon curves and Mandelbrot sets - among other things.
I also played with the system's hardware sprites (known as "players") and display list.
Atari 800 Don't recall Atari 8K BASIC I also played around with the sound chip in the Atari. One of the more interesting (to me) programs just started two voices with almost-equal pitches. The sound waves would add and cancel, add and cancel, making a pleasing (to me) wavering sound. My father, who was a music professor at the time, knew exactly what was happening when I played it for him.
Commodore 64 Don't recall, not sure it had a name 6502 Assembly Language A 6502 machine language interrupt handler that would obtain, and record in RAM, metrics from a Boiling Water Reactor (BWR) simulator. A BWR is a type of nuclear reactor.
Apple II Don't recall 6502 Assembly Language A high-resolution sound generator. It actually achieved a resolution of 1 clock cycle despite the machine's shortest instructions being 2 clock cycles long. This was done, on average, by using different LDA (LoaD Accumulator) instructions as delays inside of a loop; these LDA instructions (each having a different addressing mode), when sorted by their duration, differed from their neighbors by a single clock cycle. A few bytes of data was used to describe each pitch like what you would find on a tuned piano. Sadly, only after I had done the hard work of tuning several octaves with an oscilloscope did we realize that different Apples would have different instruction speeds and hence produce different pitches for a given collection of bytes. It used self-modifying code (which is just about always best avoided), and had to avoid putting anything important into the accumulator, because those LDA's would wipe the value in the accumulator with something irrelevant.



Hits: 2189
Timestamp: 2024-12-27 08:03:37 PST

Back to Dan's tech tidbits

You can e-mail the author with questions or comments: