mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-07 11:51:49 +09:00
141 lines
4.5 KiB
Plaintext
141 lines
4.5 KiB
Plaintext
All peripherals using serial connection must follow these standards
|
|
|
|
0. How to communicate
|
|
|
|
0.1 Master-to-Slave mode
|
|
|
|
- Master device must send enquiry query, and when slave device report READY, master must pull the answer from the slave
|
|
|
|
0.2 Master-to-Master mode
|
|
|
|
- One peer sends enquiry, and other peer writes the answer into the requester device. You know the transaction is done
|
|
when other peer reports READY, NOT READY, and READY again.
|
|
|
|
1. ENQUIRY commands
|
|
|
|
1.0 All ENQUIRY commands have following syntax:
|
|
|
|
<COMMAND-STRING> 0x17
|
|
<COMMAND-STRING> 0x1E <ARGUMENTS-STRINGS SEPARATED BY 0x1F> 0x17
|
|
<ANSWER-STRINGS SEPARATED BY 0x1F> 0x17
|
|
|
|
All ENQUIRY commands are RECOMMENDED to be no larger than 4096 bytes
|
|
STRINGs only consists with printable ASCII subset
|
|
|
|
1.1 WHO-ARE-YOU commands
|
|
|
|
DEVTYP
|
|
|
|
Description: type of the device
|
|
Returns: type of the device, of which but not exhaustive:
|
|
|
|
- PRNT: Printer
|
|
- STOR: Storage device (floppy drive, etc.)
|
|
- COMM: Modem (slave-mode device)
|
|
- COMP: Modem (master-mode device, typically an other computer connected though a null-modem)
|
|
|
|
DEVNAM
|
|
|
|
Description: enquires canonical device name
|
|
Returns: canonical device name in ASCII, maximum 4095 bytes
|
|
|
|
Note: non-standard device types must have LONGER THAN 4 characters of DEVTYP
|
|
|
|
1.2 CONTROL commands
|
|
|
|
DEVRST
|
|
|
|
Description: resets the device
|
|
Returns: none
|
|
|
|
2. Device-specific commands
|
|
|
|
2.0 Command formats
|
|
|
|
Device-specific commands does NOT have any header nor footer
|
|
|
|
2.1 STORage devices
|
|
|
|
2.1.0 NOTE
|
|
|
|
comma-followed-by-drive-number can be omitted; drive number 1 will be substituted
|
|
|
|
2.1.1 File Control
|
|
|
|
OPENR"<path to file>",<drive number>
|
|
|
|
Description: opens the file for reading
|
|
|
|
OPENW"<path to file>",<drive number>
|
|
|
|
Description: opens the file for writing
|
|
|
|
OPENA"<path to file>",<drive number>
|
|
|
|
Description: opens the file for appending (a variant of write)
|
|
|
|
WRITE<number of bytes to write>
|
|
|
|
Description: puts the device to WRITE mode. Any subsequent bytes will be interpreted as-is for writing
|
|
|
|
FLUSH
|
|
|
|
Description: flushes any internal output buffer and no longer puts the device to WRITE mode
|
|
|
|
READ<number of bytes to read>
|
|
|
|
Description: reads specified number of bytes. Any subsequent reading operation will return bytes stored into the file
|
|
until the specified number of bytes reached
|
|
|
|
CLOSE
|
|
|
|
Description: closes any file that is open.
|
|
|
|
LOAD"<path to file>",<drive number>
|
|
|
|
Description: loads an executable file for running. Will throw an error if the file is not executable.
|
|
|
|
CHTYPE,<file type>,<drive number>
|
|
|
|
Description: changes the file's file type (or its extension)
|
|
|
|
CHDIR"<path>"
|
|
|
|
Description: changes the working directory of the filesystem to given path. Disk with non-hierarchical filesystem should
|
|
ignore this command.
|
|
|
|
LIST,<drive number>
|
|
LIST"<path>",<drive number>
|
|
|
|
Description: lists contents of the given directory in READABLE FORMAT (no 0x17 at the end, terminates string with zero)
|
|
If no path is given, current working directory will be used instead. Non-hierarchical system should ignore
|
|
PATH argument, and raw filesystem (e.g. EPROM) should return first 4096 bytes of its contents.
|
|
|
|
USAGE,<drive number>
|
|
|
|
Description: returns following values: TOTAL_SPACE 0x1E USED_SPACE 0x1D TOTAL_FILE_COUNT 0x1E TOTAL_DIRECTORY_COUNT in
|
|
ASCII string.
|
|
For non-hierarchical system, TOTAL_DIRECTORY_COUNT is always 0x30 (ASCII string "0")
|
|
|
|
FSTYPE,<drive number>
|
|
|
|
Description: returns filesystem type in plain string, of which but not limited to:
|
|
|
|
- TREE: any generic filesystem with recursive directories and multiple files.
|
|
When emulators use filesystem of running OS for the disk implementation (and not use proprietary binary
|
|
file), this type should be returned.
|
|
- FLAT: filesystem without directories and can hold multiple files. E.g. Commodore 64
|
|
- RAW: no filesystem is used. E.g. EPROM
|
|
|
|
When disk image is used for emulation, their identifier should be returned. E.g. FAT, TEVD
|
|
|
|
2.1.2 File type dictionary
|
|
|
|
- PRG: executable
|
|
- TXT: text document
|
|
- BIN: binary data
|
|
- SEC: pseudo-type used by an pseudo-file called "!BOOTSEC", which is a boot sector
|
|
|
|
File type is independent of the "extension", but just a marker for an auto-execution (firstmost PRG file will be
|
|
auto-run). If your file is neither PRG nor TXT, use BIN.
|
|
Operation system may choose to ignore this feature and handle the "extension" by itself |