mirror of
https://github.com/a2stuff/prodos-path.git
synced 2024-12-26 22:30:54 +00:00
PATH command for Apple II ProDOS
.github/workflows | ||
.gitignore | ||
bell.cmd.s | ||
buzz.cmd.s | ||
cd.cmd.s | ||
chtime.cmd.s | ||
chtype.cmd.s | ||
COMMANDS | ||
copy.cmd.s | ||
date.cmd.s | ||
echo.cmd.s | ||
hello.cmd.s | ||
hide.cmd.s | ||
LICENSE | ||
Makefile | ||
mem.cmd.s | ||
more_apple2.inc | ||
online.cmd.s | ||
package.sh | ||
path.s | ||
prodos.inc | ||
README.md | ||
touch.cmd.s | ||
type.cmd.s | ||
unhide.cmd.s |
CMD executable PATH for ProDOS's BASIC.SYSTEM
💾 Disk images can be found on the Releases page 💾
Build with ca65
Instructions For Users
Installation:
- Copy files from the floppy disk image to your Apple's hard disk, in a subdirectory e.g.
/HD/CMD
- From BASIC.SYSTEM prompt, run:
PATH
, e.g.-/HD/CMD/PATH
, either fromSTARTUP
or manually
After installation, the usage is:
PATH prefix - set search path(s) - colon delimited
PATH - view current search path(s)
cmdname - load and execute named CMD, if in PATH
- Once set, binary files of type
CMD
in the specified directories can be invoked by name. - Supports multi-segment, colon-separated paths, e.g.
/hd/cmds:/hd2/more.cmds
Example:
] -/hd/cmd/path - install it
] PATH /hd/cmd:/h2/bin - set search path with two directories
] PATH - verify search path
/hd/cmd:/h2/bin
] BELL - will invoke /hd/cmd/BELL if present
] HELLO - will invoke /hd/cmd/HELLO if present
] ONLINE - will invoke /hd/cmd/ONLINE if present
Notes:
PATH
can be invoked as lower case (e.g.path /hd/cmd
)- Commands can be invoked as lower case (e.g.
hello
) - A relative
PATH
(e.g.path bin
) only works if an explicit prefix is set.- Note that if no prefix has been set, or if you run
prefix /
, BASIC.SYSTEM will use the last accessed slot and drive and thePREFIX
command will report that volume as a prefix even though it is empty.
- Note that if no prefix has been set, or if you run
Sample commands included:
HELLO
- shows a short message, for testing purposesECHO
- echoes back anything following the commandCD
- likePREFIX
but accepts..
, e.g.cd ../dir
ONLINE
- lists online volumes (volume name, slot and drive)MEM
- show memory stats for the BASIC environmentCOPY
- copy a single file, e.g.copy /path/to/file,dstfile
TYPE
- show file contents (TXT, BAS, or BIN/other), e.g.type filename
TOUCH
- apply current ProDOS date/time to a file's modification time, e.g.touch filename
DATE
- prints the current ProDOS date and timeCHTYPE
- change the type/auxtype of a file, e.g.chtype file,T$F1,A$1234
T
(type) andA
(auxtype) are optional. If neither is specified, current types are shown.S
andD
arguments can be used to specify slot and drive.
CHTIME
- change the modification date/time of a file, e.g.chtime file,A$1234,B$5678
A
(date) andB
(time) are optional. If neither is specified, current values are shown.S
andD
arguments can be used to specify slot and drive.
BELL
- emits the standard Apple II beepBUZZ
- emits the ProDOS "nice little tone"HIDE
/UNHIDE
- sets / clears the "invisible" bit on a file, used in GS/OS Finder
Instructions For Developers
Behavior of PATH
:
- Search order when a command is typed:
- ProDOS BASIC.SYSTEM intrinsics (
CAT
,PREFIX
, etc) - BASIC keywords (
LIST
,PRINT
, etc) - CMD files in paths, in listed order
- ProDOS BASIC.SYSTEM intrinsics (
- Allocates a permanent buffer to store the code and path (2 pages)
- Applesoft BASIC commands are unaffected (but can't be CMD names)
- Commands with BASIC keywords as prefixes are allowed as long as the command continues with an alphabetic character. For example,
ONLINE
is allowed despite conflicting with the valid BASIC statementONLINE GOTO10
which is short forON LINE GOTO 10
.
- Commands with BASIC keywords as prefixes are allowed as long as the command continues with an alphabetic character. For example,
Protocol for CMD
files:
- CMD file is loaded at $4000 and invoked.
- $4000-$5FFF is assumed reserved for the CMD file and any buffers it needs.
- The command line will be present at $200 (
GETLN
input buffer). - Commands can use the BI parser for arguments. See
chtype.cmd.s
for an example. - Exit with
CLC
thenRTS
to return to the ProDOS BASIC prompt.- To signal an error,
LDA
with a BI error code, thenSEC
andRTS
.
- To signal an error,