2016-11-16 02:04:33 +00:00
|
|
|
** 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.
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
** Format
|
|
|
|
DOS stores an additional byte on the end, which should be ignored.
|
|
|
|
** Parsing
|
|
|
|
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 |
|
|
|
|
| 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 |
|
2016-12-06 03:21:01 +00:00
|
|
|
** NakedOS FHELLO + FWORLD
|
|
|
|
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.
|
|
|
|
|
|
|
|
*** FHELLO
|
2016-11-30 03:53:40 +00:00
|
|
|
20 40 03 JSR NAKEDOS
|
|
|
|
6D 01 DC ADC NKRDFILE
|
|
|
|
2C 02 DF BIT ${filename}
|
2016-12-06 03:21:01 +00:00
|
|
|
2C 00 60 BIT ${target page}
|
2016-11-30 03:53:40 +00:00
|
|
|
F8 CLD
|
2016-12-06 03:21:01 +00:00
|
|
|
4C 00 60 JMP ${target page}
|
|
|
|
|
|
|
|
*** FWORLD
|
|
|
|
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 -
|