2021-07-12 16:27:13 -04:00

4.1 KiB

Program location

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.



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).

ProDOS and SOS File Types

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
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 ${filename} 2C 00 60 BIT ${target page} F8 CLD 4C 00 60 JMP ${target page}


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.

diskii commands

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 -