Defaults to $801 for ROM-based Applesoft. Locations $67/$68 point to the start of the program, and the byte preceding it must be #0.
Details:
- http://www.atarimagazines.com/compute/issue11/36_1_THE_APPLE_GAZETTE_RESOLVING_APPLESOFT_AND_HIRES_GRAPHICS_MEMORY_CONFLICTS.php
- http://retrocomputing.stackexchange.com/questions/1604
DOS stores an additional byte on the end, which should be ignored.
See PARSE.INPUT.LINE at http://www.txbobsc.com/scsc/scdocumentor/D52C.html
“AT” is ambiguous: it could also be “ATN” or “A TO”. Applesoft checks by seeing if the character directly after “AT” is “N” OR “O”, and forcing a non-match with “AT” if so. Note that this doesn’t skip blanks.
Data statements and REM statements seem to leave characters completely intact (including storing the space, if any, after the “REM” or “DATA” keyword).
Beneath Apple ProDOS Table E.1
00 | both | Typeless file | |
01 | both | Bad blocks file | |
02 | SOS | PASCAL code file | |
03 | SOS | PASCAL text file | |
04 | TXT | both | ASCII text fil |
05 | SOS | PASCAL text file | |
06 | BIN | both | Binary file |
07 | SOS | Font file | |
08 | SOS | Graphics screen file | |
09 | SOS | Business BASIC program file | |
0A | SOS | Business BASIC data file | |
0B | SOS | Word processor file | |
0C | SOS | SOS system file | |
0D-0E | SOS | SOS reserved for future use | |
0F | DIR | both | Directory file |
10 | SOS | RPS data file | |
11 | SOS | RPS index file | |
12-18 | SOS | SOS reserved for future use | |
19 | ADB | ProDOS | AppleWorks data base file |
1A | AWP | ProDOS | AppleWorks word processing file |
1B | ASP | ProDOS | AppleWorks spreadsheet file |
1C-BF | SOS | SOS reserved for future use | |
C0-EE | ProDOS | ProDOS reserved for future use | |
EF | PAS | ProDOS | ProDOS PASCAL file |
F0 | CMD | ProDOS | Added command file |
F1-F8 | ProDOS | ProDOS user defined file types | |
FA | INT | ProDOS | Integer BASIC program file |
FB | IVR | ProDOS | Integer BASIC variables file |
FC | BAS | ProDOS | Applesoft BASIC program file |
FD | VAR | ProDOS | Applesoft BASIC variables file |
FE | REL | ProDOS | EDASM relocatable object module file |
FF | SYS | ProDOS | System file |
This is the simplest possible example of a FHELLO program that loads another program (FWORLD) at $6000, then jumps to it. The placeholder FWORLD below clears the screen, prints “HELLO WORLD”, then spins forever.
20 40 03 JSR NAKEDOS
6D 01 DC ADC NKRDFILE
2C 02 DF BIT
6000-G 20 58 FC JSR HOME 6003-H A2 00 LDX #00 6005-I BD 13 60 LDA -O,X 6008-J F0 06 BEQ -N 600A-K 20 ED FD JSR COUT 600D-L E8 INX 600E-M D0 F5 BNE -I 6010-N 4C 10 60 JMP * 6013- C8 C5 CC CC CF HELLO 6018- AC A0 D7 CF D2 CC C4 00 , WORLD.
echo -n -e ‘\x20\x40\x03\x6D\x01\xDC\x2C\x02\xDF\x2C\x00\x60\xF8\x4C\x00\x60’ | diskii put -f ./lib/supermon/testdata/chacha20.dsk DF01:FHELLO - echo -n -e ‘\x20\x58\xFC\xA2\x00\xBD\x13\x60\xF0\x06\x20\xED\xFD\xE8\xD0\xF5\x4C\x10\x60\xC8\xC5\xCC\xCC\xCF\xAC\xA0\xD7\xCF\xD2\xCC\xC4\x00’ | diskii put -f ./lib/supermon/testdata/chacha20.dsk DF02:FWORLD -