A DOS 3.3 B file and a ProDOS BIN, SYS or command file is a block of bytes that goes to a given address. The explorer
disassembles it with the 6502-family decoder: the NMOS 6502 of the Apple II, II Plus and the first IIe, or the 65C02 of the enhanced IIe and the IIc
(the IIgs runs both in its emulation mode, and has its own 65C816 mode, which is not decoded). The processor is a choice in the options bar; nothing in the file says which.
Load and start addresses
| File system | Where the load address is |
|---|---|
DOS 3.3, type B | The first 2 bytes of the file (low byte first) are the address; the next 2 are the length; then the code. LOADER.OBJ0 on the System Master loads at $1000 and is 1,092 bytes; FPBASIC at $D000, 10,240 bytes |
ProDOS, BIN ($06) and SYS ($FF) | The aux type field of the directory entry. A system file loads at $2000 |
Neither file system stores a start address: BRUN starts at the load address (DOS 3.3 and ProDOS both), and a CALL from a BASIC program names the address it wants. The viewer marks the load address as the start; the options bar can move the mark.
Labels
The disassembly names an operand that is one of these addresses. Each table says how the name was checked.
Monitor ROM routines ($F800–$FFFF)
Fifty-six of these were checked by the bytes at the address in the Apple IIgs ROM 01 (its bank $FF carries the Apple II Monitor): for example COUT at $FDED is JMP ($0036) through CSWL, PRBYTE at $FDDA shifts the accumulator right four times and prints a hexadecimal digit, GETLN at $FD6A prints the prompt from $33 and reads a line. Twenty more (RESET, HOME, WAIT, RDKEY, KEYIN, CROUT and others) are at the addresses of Apple's published Monitor listing, but the IIgs ROM holds a short patch there that jumps into the real routine, so the ROM does not confirm the name.
| Address | Name | What it does |
|---|---|---|
$F800 | PLOT | Plot a low-resolution block |
$F819 | HLINE | Low-resolution horizontal line |
$F828 | VLINE | Low-resolution vertical line |
$F832 | CLRSCR | Clear the low-resolution screen |
$F871 | SCRN | Read the colour of a low-resolution block |
$F940 | PRNTYX | Print Y then X as hexadecimal |
$F941 | PRNTAX | Print A then X as hexadecimal |
$F948 | PRBLNK | Print three spaces |
$FB1E | PREAD | Read a paddle (published listing) |
$FB2F | INIT | Text mode, full-screen window |
$FB39 | SETTXT | Switch to text mode |
$FB40 | SETGR | Switch to low-resolution graphics |
$FC22 | VTAB | Recalculate the cursor line's address |
$FC58 | HOME | Clear the text window (published listing) |
$FC62 | CR | Carriage return |
$FC66 | LF | Line feed |
$FCA8 | WAIT | Delay (published listing) |
$FD0C | RDKEY | Wait for a key (published listing) |
$FD1B | KEYIN | The standard keyboard input routine (published listing) |
$FD6A | GETLN | Prompt and read a line |
$FD8E | CROUT | Print a carriage return (published listing) |
$FDDA | PRBYTE | Print A as two hexadecimal digits |
$FDED | COUT | Print A through the output hook |
$FDF0 | COUT1 | Print A on the screen |
$FE2C | MOVE | Copy memory |
$FE80 | SETINV | Inverse text |
$FE84 | SETNORM | Normal text |
$FE89 | SETKBD | Keyboard as the input device |
$FE93 | SETVID | Screen as the output device |
$FF3A | BELL | Ring the bell |
$FF69 | MONZ | Enter the Monitor (published listing) |
The explorer's label list is longer (76 Monitor entries); the table shows the common ones.
Applesoft ROM routines
Eight, checked against the real Applesoft image (FPBASIC) on the DOS 3.3 System Master: CRDO $DAFB, STROUT $DB3A (print the string at Y, A), OUTSP $DB57, OUTQUES $DB5A, OUTDO $DB5C, BASIC $E000 (cold start), BASIC2 $E003 (warm start) and LINPRT $ED24 (print X, A as a line number).
Soft switches ($C000–$C0FF)
The keyboard (KBD $C000, KBDSTRB $C010), the speaker (SPKR $C030), the display switches (TXTCLR $C050 to HIRES $C057), the annunciators, the buttons and paddles ($C060–$C070), the enhanced IIe memory and 80-column switches ($C000–$C01F), the language card ($C080–$C08B) and the slot I/O areas
($C090–$C0FF, 16 addresses a slot, named SLOTn_IOk), with the Disk II controller in slot 6 named by its registers (PHASE0OFF to Q7H, MOTORON at $C0E9). These are the documented hardware addresses; nothing on this Mac holds a ROM that could confirm each one.
Zero page and system locations
The text window and cursor (WNDLFT $20 to CV $25), the output and input hooks (CSWL $36, KSWL $38), the Monitor's working addresses (A1L $3C to A4H $43) and the Applesoft pointers (TXTTAB $67, VARTAB $69, MEMSIZ $73 and others); the DOS 3.3 entry points in page 3 ($03D0–$03EA) and the vectors ($03F0–$03FF); and the ProDOS 8 machine language interface at $BF00. Several zero-page locations are confirmed by the ROM code that uses them: CR writes CH and CV, UP compares WNDTOP with CV, COUT jumps through CSWL, SETCOL stores COLOR, SETINV stores INVFLG, NXTA1 compares A1 with A2; the rest are the documented values.