Program Development

You have this great idea of writing a wonderful program for the Apple 1! What tools can you use to make your dream come true? Here's a list of some of the available tools. This list is by no means complete, but hopefully you'll find what you need here. If not you can always google around to find more tools.

The Way Of The WOZ

To start with I would like you to consider the way how the Woz himself wrote his programs for the Apple 1, by hand assembling his code. All you need is the programming manual for the 6502, the WOZ Monitor, a pencil and a lot of paper.
You may also need a hex-calculator to calculate your branch distances. Most PC-based desktop calculators also have a "programming" mode, which allows you to do hexadecimal calculations and conversions. However let's presume that the PC is not invented yet. Here's a small program which can be used to calculate the branch distances.


branch offset calculator

You can assemble this small program to just about any memory location you like using the A1-Assembler (or the compatible SB-Assembler).

You start this program by typing the following command to the WOZ Monitor prompt:

280Rorigin.destination

After which the branch offset is printed. If you don't enter the origin and destination correctly, nothing will be printed and you'll return to the WOZ Monitor prompt. If the branch offset doesn't fit in one byte you'll get a range error indication in the form of a > symbol.

280R100.133

0280: A9
=31
\

The source listing of this small program is part of the A1-Assembler download package.

Apple 1 Basic

There's another way with which you don't need any extra hardware or software. Most applications can be conveniently programmed in Basic. Basic is especially useful if you want to get fast results. I don't mean that Basic programs run faster than assembly programs, but program development will certainly be faster in Basic.

I have dedicated a separate chapter to the Apple 1 Basic.

Assembler

If you want to create your programs in Assembly there are plenty of options. If you prefer to use the Apple 1 stand-alone you even have the choice between two assemblers! Otherwise there is a virtually unlimited supply of cross assemblers available for the PC or MAC.


The Krusader

Here's the first assembler which runs on the Apple 1 (credit given where credit's due, Ken was first). Ken Wessen from down under wrote it, and by the time of this writing he has just released version 1.2 which has some very interesting new debugging features. Ken's assembler has very modest memory requirements and can co-exist with the WOZ Monitor in the same 4k memory block. Replica 1 and A-One users have this assembler available in ROM (F000R).


A1-Assembler

And this is the second assembler which runs on the Apple 1. I wrote this assembler myself. My intention was to write an assembler for the Apple 1 which was reasonably compatible with the PC versions of my SB-Assembler.
The A1-Assembler has some extra assembler related features compared to the Krusader. However to be quite honest it lacks the Krusader's new debugging features. But then again, personally I have never ever used a debugger myself.

A-One users are in luck because the A1-Assembler comes in ROM on that computer (9000R). Others may load the assembler, which requires 4k of memory, in RAM.
Replica 1 users who prefer the A1-Assembler above Apple 1 Basic can even re-program their ROM. They can also install a bigger ROM and with a small modification to the main board they can switch between Apple 1 Basic and A1-Assembler.
Original Apple 1 users need at least 8kB of memory to run the A1-Assembler. But even then the usefulness of the A1-Assembler is quite limited because that will leave only about 3kB to write your source in.
Emulator users (like the POM1) can load and run the assembler from address $9000.

I have dedicated a separate chapter for the A1-Assembler.


SB-Assembler

A more convenient way to create your programs is by writing them on a PC. Years ago I wrote my own cross assembler for the PC called the SB-Assembler. You can freely download and use it if you like. If you know the SB-Assembler already you will need little time to switch to the A1-Assembler.
The SB-Assembler comes with many different crosses, which enable you to write programs for other microprocessors as well.

For instance I wrote the A1-Assembler using my SB-Assembler. And I used the POM 1 emulator to test the software. Once the software is ready to run on real hardware you can transfer the generated code somehow.
The easiest way of course is when you can upload it using a serial connection. For that purpose the SB-Assembler can generate WOZ Monitor readable code.
If you own an original Apple 1 without a serial interface you'll have to enter the code by hand.

You can read more about the SB-Assembler elsewhere on this site.

Other Programming Platforms

I have presented you with some tools which I am familiar with. Obviously that is not all there is out there. Apart from my own SB-Assembler there are many other cross assemblers and cross compilers out there which run on a PC and can create 6502 code.
I have even heard about Forth compilers running on the Apple 1.

If you know of another useful addition to this page you can always send me an email.