applesingle/tools/asu
Rob Greene cebb3727b0 Adding an AppleSingle edit command. 2024-02-07 18:54:43 -06:00
..
src/main/java/io/github/applecommander/applesingle/tools/asu Adding an AppleSingle edit command. 2024-02-07 18:54:43 -06:00
README.md Updating documentation and tests a bit. 2018-06-03 17:27:42 -05:00
build.gradle Upgrading PicoCLI version and adapting a bit. 2023-10-28 11:48:51 -05:00

README.md

Command-Line Examples

For the included command-line utility, we are using asu for the name. as is the GNU Assembler while applesingle is already on Macintoshes. Hopefully that will prevent some confusion!

Note that all runs are with the asu alias defined as alias asu='java -jar build/libs/applesingle-1.2.0.jar' (adjust as necessary).

Basic usage

$ asu --help
Usage: asu [-hV] [--debug] [COMMAND]

AppleSingle utility

Options:
      --debug     Dump full stack trackes if an error occurs
  -h, --help      Show this help message and exit.
  -V, --version   Print version information and exit.

Commands:
  analyze  Perform an analysis on an AppleSingle file
  create   Create an AppleSingle file
  extract  Extract contents of an AppleSingle file
  filter   Filter an AppleSingle file
  help     Displays help information about the specified command
  info     Display information about an AppleSingle file

Subcommand help

$ asu info --help
Usage: asu info [-h] [--stdin] [<file>]

Display information about an AppleSingle file
Please include a file name or indicate stdin should be read, but not both.

Parameters:
      [<file>]   File to process

Options:
      --stdin    Read AppleSingle from stdin.
  -h, --help     Show help for subcommand

Info subcommand

$ asu info api/src/test/resources/hello.applesingle.bin 
Real Name: -Unknown-
ProDOS info:
  Access: 0xC3
  File Type: 0x06
  Auxtype: 0x0803
Data Fork: Present, 2,912 bytes
Resource Fork: Not present

Sample runs

Using pipes to create a text file and display information. Note that the invalid filename of my-text-file was changed to MY.TEXT.FILE.

$ echo "Hello World!" | asu create --name my-text-file --stdout --filetype 0x04 --stdin-fork=data --fix-text | asu info --stdin
Real Name: MY.TEXT.FILE
ProDOS info:
  Access: 0xC3
  File Type: 0x04
  Auxtype: 0x0000
Data Fork: Present, 13 bytes
Resource Fork: Not present

The --fix-text flag flips the high-bit and translates the newline character:

$ echo "Hello World!" | asu create --name my-text-file --stdout --filetype txt --stdin-fork=data --fix-text | hexdump -C
00000000  00 05 16 00 00 02 00 00  00 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00  00 03 00 00 00 03 00 00  |................|
00000020  00 3e 00 00 00 0c 00 00  00 0b 00 00 00 4a 00 00  |.>...........J..|
00000030  00 08 00 00 00 01 00 00  00 52 00 00 00 0d 4d 59  |.........R....MY|
00000040  2e 54 45 58 54 2e 46 49  4c 45 00 c3 00 04 00 00  |.TEXT.FILE......|
00000050  00 00 c8 e5 ec ec ef a0  d7 ef f2 ec e4 a1 8d     |...............|
0000005f

(The message is at 0x52 through 0x5e.)

Without the --fix-text flag:

$ echo "Hello World!" | asu create --name my-text-file --stdout --filetype txt --stdin-fork=data | hexdump -C
00000000  00 05 16 00 00 02 00 00  00 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00  00 03 00 00 00 03 00 00  |................|
00000020  00 3e 00 00 00 0c 00 00  00 0b 00 00 00 4a 00 00  |.>...........J..|
00000030  00 08 00 00 00 01 00 00  00 52 00 00 00 0d 4d 59  |.........R....MY|
00000040  2e 54 45 58 54 2e 46 49  4c 45 00 c3 00 04 00 00  |.TEXT.FILE......|
00000050  00 00 48 65 6c 6c 6f 20  57 6f 72 6c 64 21 0a     |..Hello World!.|
0000005f

Integration with 'ac'

Create a disk, generate an AppleSingle text file, import into the ProDOS image, and then export the file to stdout.

$ ac -pro140 demo.dsk demo
$ echo "Hello World!" | asu create --stdout --filetype txt --stdin-fork=data --fix-text | ac -as demo.dsk MY.TEXT.FILE
$ ac -l demo.dsk 
demo.dsk /DEMO/
  MY.TEXT.FILE TXT 001 05/26/2018 05/26/2018 13  
ProDOS format; 139,264 bytes free; 4,096 bytes used.

$ ac -e demo.dsk MY.TEXT.FILE
Hello World!