| number | mnemonic | a | b | c | d |
|---|---|---|---|---|---|
| 0 | exit | status | |||
| 1 | msg.data | msg.len | |||
| 2 | log | msg.data | msg.len | ||
| 3 | create | filename.data | filename.len | mode | |
| 4 | open_reading | filename.data | filename.len | flags | mode |
| 5 | open_writing | filename.data | filename.len | flags | mode |
| 6 | read | file descriptor | buffer.data | buffer.len | |
| 7 | write | file descriptor | buffer.data | buffer.len | |
| 8 | close | file descriptor | |||
| 9 | argc | ||||
| 10 | arg | arg index | buffer.data | buffer.len | |
| 11 | read_input | buffer.data | buffer.len | ||
| 12 | execute | binary.data | binary.len | ||
| 13 | ui_dimensions | ||||
| 14 | ui_render | buffer.data | buffer.width | buffer.height | |
| 15 | get_key_pressed | ||||
| 16 | instant_now | ||||
| 17 | read_dir | path.data | path.len | out.data | out.len |
- exit: Exits the program. This is guaranteed to never return.
- print: Writes the message to stdout.
- log: Writes the message to stderr.
- create: Creates the file. Sets
ato a file descriptor or zero if it didn't work. - open_reading: Opens the file for reading. Sets
ato a file descriptor or zero if it didn't work. - open_writing: Opens the file for writing. Sets
ato a file descriptor or zero if it didn't work. - read: Reads from the file descriptor into the buffer, at most buffer.len. Sets
ato the amount of bytes that were read. - write: Writes from the buffer to the file descriptor, at most buffer.len. Sets
ato the amount of bytes that were written. - close: Closes the file descriptor. Sets
ato one if it worked or zero if it didn't work. - argc: Sets
ato the number of arguments given to the program, including the program name itself. - arg: Fills the buffer with the indexth argument, at most buffer.len. Sets
ato the amount of bytes that were written. - read_input: Reads from stdin into the buffer, at most buffer.len. Sets
ato the amount of bytes that were read. - execute: Loads the given binary into the current VM, replacing the current execution.
- ui_dimensions: Loads the UI width into
a, its height intob. - ui_render: Renders the buffer as a UI. Outer dimension is height, inner dimensions is width, each pixel is three bytes (RGB).
- get_key_pressed: Sets
ato the keycode of the next pressed key (0if none is pressed). - instant_now: Sets
ato a value that represents the current time in nanoseconds since some undefined reference event. The reference event is consistent over multiple instant_now calls, so you can use this to measure time. - read_dir: Stores the directory entries of the path in the out buffer in the format
<kind:1><len:8><name:len>. The kind is 1 for files, 2 for directories, and other kind values should be handled by the code. Setsato the number of bytes written in the out buffer, or a negative value if an error occurred.