-
Notifications
You must be signed in to change notification settings - Fork 70
SIO Command $F6 Read Directory
This is a command for Device $70 - The FujiNet Device itself (see SIO-Commands-for-Device-ID-$70).
Retrieve the next directory entry text and place into buffer.
AUX1 specifies a maximum length to retrieve. If the directory entry path is longer than this, it will be truncated to fit this value (along with a terminating NULL character). This is useful for making read commands more efficient for display, and using a subsequent Directory Open/Directory Read to get the full 256 character filename for mounting.
AUX2 indicates whether to return additional file details along with the entry text. Setting bit 7 (0x80) will return 10 additional bytes (see RETURNS section below for details) followed by the directory entry text. The max directory entry text length returned will be reduced by 10 bytes to accommodate the additional data.
DCB | Value |
---|---|
DDEVIC | $70 |
DUNIT | $01 |
DCOMND | $F6 |
DSTATS | $40 |
DBUF | Buffer to contain the directory entry 0-255 bytes |
DTIMLO | # of seconds before timeout |
DBYT | # of bytes to return in directory entry |
DAUX1 | Maximum length of entry response |
DAUX2 | If bit 0x80 set, additional file details returned |
NULL terminated string with directory entry.
First and second bytes are both set to 0x7F (0x7F7F) when the end of the directory has been reached.
If AUX2 bit 7 (0x80) is set on the request, the following data will be returned before the directory entry text:
Byte | Item | Description |
---|---|---|
0x00 | MODIFIED_YEAR | File modified date-time: years since 1970 |
0x01 | MODIFIED_MONTH | File modified date-time: month (1-12) |
0x02 | MODIFIED_DAY | File modified date-time: day of month (1-31) |
0x03 | MODIFIED_HOUR | File modified date-time: hour (0-23) |
0x04 | MODIFIED_MINUTE | File modified date-time: minute (0-59) |
0x05 | MODIFIED_SECOND | File modified date-time: second (0-59) |
0x06 | FILE_SIZE_LO | File size low byte |
0x07 | FILE_SIZE_HI | File size high byte |
0x08 | FILE_FLAGS | One or more file flag values (see below) |
0x09 | FILE_TYPE | One of the file type values (see below) |
The file's modified date-time value will be adjusted to the local time zone (if any) set on FujiNet.
File Flag | Value | Description |
---|---|---|
FF_DIR | 0x01 | Entry is a directory |
FF_TRUNC | 0x02 | Entry name was truncated to fit requested size |
File Type | Value | Description |
---|---|---|
FT_UNKNOWN | 0x00 | File type could not be determined |
FT_ATR | 0x01 | ATR disk image |
FT_ATX | 0x02 | ATX disk image |
FT_XEX | 0x03 | Atari executable |
/**
A directory entry, with stat() information
*/
union
{
struct
{
unsigned short mode;
unsigned long size;
char filename[256];
} entry;
unsigned char rawData[262]; // max size.
} dirEntry;
// loop and read dir for display
while ((dirEntry.entry.filename[0]!=0x7F))
{
memset(dirEntry.rawData,0,sizeof(dirEntry.rawData);
dirEntry.entry.filename[0]=0x7F;
OS.dcb.ddevic=0x70;
OS.dcb.dunit=1;
OS.dcb.dcomnd=0xF6;
OS.dcb.dstats=0x40;
OS.dcb.dbuf=&path;
OS.dcb.dtimlo=0x0F;
OS.dcb.dbyt=36;
OS.dcb.daux1=36;
OS.dcb.daux2=hostSlot;
siov();
if (dirEntry.entry.filename[0]=='.')
continue;
else if (dirEntry.entry.filename[0]==0x7F)
break;
else
{
strcpy(files[num_entries],path);
screen_puts(0,num_entries+2,path);
num_entries++;
}
}
- Open Directory
- Close Directory
Copyright 2024 Contributors to the FujiNetWIFI project.
Join us on Discord: https://discord.gg/7MfFTvD
- Home
- What is FujiNet?
- The Definition of Done
- Board bring up for FujiNet Platform.IO code
- The Complete Linux CLI Guide
- The Complete macOS CLI Guide
- Development Env for Apps
- FujiNet-Development-Guidelines
- System Quickstarts
- FujiNet Flasher
- Setting up a TNFS Server
- FujiNet Configuration File: fnconfig.ini
- AppKey Registry - SIO Command $DC Open App Key
- CP-M Support
- BBS
- Official Hardware Versions
- Prototype Board Revisions
- FujiNet Development Guidelines
- Atari Programming
- Apple Programming
- C64 Programming
- ADAM Programming
- Testing Plan
- Hacker List
- FujiNet VirtualMachine