iobridge/v0.1.md

3.7 KiB

Numbers: Big Endian. Input strings not null terminated unless explicitly stated.

Outgoing API: 0x00 - reserved 0x01 - read line from stdin; returns a 0x01 packet. 0x02 [len: u32, data: u8[]] - write to stdout 0x03 [len: u32, data: u8[]] - write to stderr 0x04 - read a byte from stdin; returns a 0x04 packet. 0x05 [byte: u8] - write a byte to stdout 0x06 [byte: u8] - write a byte to stderr 0x07 [len: u32] - read from stdin. returns a 0x07 packet.

0x08 [len: u32] - allocate a buffer of len bytes. returns a 0x08 packet.
0x09 [ptr: u32] - free a buffer allocated at ptr.
0x0A [ptr: u32, off: u32, len: u32] - read len bytes from ptr + off. returns a 0x0A packet.
0x0B [ptr: u32, off: u32, len: u32, data: u8[]] - write len bytes to ptr + off.
0x0C [ptr: u32] - query the size of the buffer allocated at ptr. returns a 0x0C packet.
0x0D [ptr: u32, new_len: u32] - resize the buffer allocated at ptr to new_len bytes.

Expect null-terminated data:
* 0x0E [len: u32, mode: u32, data: u8[]] - open a file (fopen). returns a 0x0E packet.

0x0F [ptr: u32] - close a file (fclose).
0x10 [ptr: u32, len: u32] - read len bytes from file. returns a 0x10 packet.
0x11 [ptr: u32, len: u32] - write len bytes to file.
0x12 [ptr: u32] - query the size of the file. returns a 0x12 packet.
0x13 [ptr: u32, off: u32, whence: u8]: seek to off bytes from whence
    (0-backwards,1-forwards,2-from beginning,3-from end).

Expect null-terminated data:
* 0x14 [len: u32, len2: u32, data1: u8[], data2: u8[]] - rename.
* 0x15 [len: u32, data: u8[]] - unlink.
* 0x16 [len: u32, data: u8[]] - mkdir.
* 0x17 [len: u32, data: u8[]] - rmdir.
* 0x18 [len: u32, data: u8[]] - chdir.

0x19 - getcwd, returns a 0x19 packet.

0x1A - UNIX time, returns a 0x1A packet.
0x1B - local time, returns a 0x1B packet.
0x1C - GMT, returns a 0x1C packet.

0x1D [time: u32] - sleep for n ms.
0x1E - put terminal in raw mode (if platform supports that).
0x1F - put terminal in cooked mode (if platform supports that).
0x20 - get terminal size, returns a 0x20 packet.

0x21 [ptr: u32] - flush file.
0x22 - flush stdout.

0x23 - get errno state. returns a 0x23 packet.

Expect null-terminated data:
* 0x24 [len: u32, data: u8[]] - file exists? returns a 0x24 packet.
* 0x25 [len: u32, data: u8[]] - list directory entries. returns a 0x25 packet.

0x26 - API version. returns a 0x26 packet.
0x27 - Host environment. returns a 0x27 packet.

Incoming API: 0x01 [len: u32] [data: u8[]] - line read from stdin. 0x04 [byte: u16] - byte read from stdin. 0x07 [len: u32] [data: u8[]] - data read from stdin. 0x08 [ptr: u32] - buffer allocated at ptr (ptr = 0 if unable to allocate). 0x0A [len: u32] [data: u8[]] - data read from ptr + off. 0x0C [len: u32] - size of the buffer allocated at ptr. 0x0E [ptr: u32] - file opened at ptr (ptr = 0 if unable to open). 0x10 [len: u32] [data: u8[]] - data read from file. 0x12 [len: u32] - size of the file. 0x19 [len: u32] [data: u8[]] - current working directory (len = 0 if unable to determine). 0x1A [time: u64] - UNIX time. 0x1B [year: u32, month: u8, day: u8, hour: u8, minute: u8, second: u8] - local time. 0x1C [year: u32, month: u8, day: u8, hour: u8, minute: u8, second: u8] - GMT. 0x20 [width: u16, height: u16] - terminal size (or 0 if unknown). 0x23 [error: u8] - error state. 0x24 [exists: u8] - exists? 0x25 [no: u32, (len: u32, path: u8[], size: u32, type: u8)[]] - list directory entries. 0x26 [major: u8, minor: u8] - API version (0, 1). 0x27 [len: u32, data: u8[]] - Host environment.