diskii/notes.org

93 lines
4.1 KiB
Org Mode
Raw Normal View History

** 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 |
** 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}
2C 00 60 BIT ${target page}
2016-11-30 03:53:40 +00:00
F8 CLD
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 -
* Sources
** ProDOS
[[https://www.apple.asimov.net/documentation/source_code/Apple%20ProDOS%20Boot%20Source.pdf][ProDOS boot source]]