This is a list of all the currently available I/O functions in Migol 11.
I/O operations are initiated by writing pointers to data structures to the execution register, !. This page describes the format of each structure and the associated I/O operation.
I/O function list
| Immediate interrupt
|
| Position
|
Value
|
| 0
|
5
|
| Adds the operation data structure to the interrupt queue immediately. Can be used for software interrupts.
|
| Read from I/O channel
|
| Position
|
Value
|
| 0
|
10
|
| 1
|
I/O handle
|
| 2
|
Read buffer address
|
| 3
|
Read buffer length
|
| 4
|
Error number
|
| 5
|
Number of bytes read (-1 if error)
|
| Reads as many bytes as possible from the I/O channel to the buffer.
|
| Write to I/O channel
|
| Position
|
Value
|
| 0
|
11
|
| 1
|
I/O handle
|
| 2
|
Write buffer address
|
| 3
|
Write buffer length
|
| 4
|
Error number
|
| 5
|
Number of bytes written (-1 if error)
|
| Writes as many bytes as possible from buffer to the I/O channel
|
| Close I/O channel
|
| Position
|
Value
|
| 0
|
12
|
| 1
|
I/O handle
|
| 2
|
Error number
|
| Closes the I/O channel
|
| Open file channel
|
| Position
|
Value
|
| 0
|
20
|
| 1
|
File name address
|
| 2
|
File name length
|
| 3
|
File mode
|
| 4
|
Error number
|
| 5
|
New file channel handle (-1 if operation fails)
|
| Opens a new file channel
|
| Get file channel position
|
| Position
|
Value
|
| 0
|
24
|
| 1
|
File channel handle
|
| 2
|
Error number
|
| 3
|
File channel position (-1 if the operation fails)
|
| Obtains the current file position of the file channel
|
| Set file channel position
|
| Position
|
Value
|
| 0
|
25
|
| 1
|
File channel handle
|
| 2
|
New file channel position
|
| 3
|
Error number
|
| Sets the file position of the file channel
|
| Get file size
|
| Position
|
Value
|
| 0
|
26
|
| 1
|
File channel handle
|
| 2
|
Error number
|
| 3
|
File size (-1 if the operation fails)
|
| Obtains the file size of the file channel
|
| Open TCP socket
|
| Position
|
Value
|
| 0
|
30
|
| 1
|
IP address type
|
| 2
|
Pointer to IP address
|
| 3
|
Port number
|
| 4
|
Error number
|
| 5
|
Socket channel handle
|
| Opens a connection to a TCP socket
|
| Open server socket
|
| Position
|
Value
|
| 0
|
31
|
| 1
|
Port number
|
| 2
|
Error number
|
| 3
|
New server socket channel handle
|
| Opens a new server socket for listening to incoming TCP connections
|
| Listen to server socket
|
| Position
|
Value
|
| 0
|
32
|
| 1
|
Server socket handle
|
| 2
|
Error number
|
| 3
|
New socket channel handle
|
| Listens to a incoming connection from a specific server socket and creates a new TCP connection.
|
| Resolve DNS Address to IP Address
|
| Position
|
Value
|
| 0
|
34
|
| 1
|
DNS name memory address
|
| 2
|
DNS name memory length
|
| 3
|
Address where the IP address is saved
|
| 4
|
Error number
|
| 5
|
IP address type
|
| Resolves a DNS name to a IPv4 or IPv6 address
|
| Get current time in milliseconds
|
| Position
|
Value
|
| 0
|
70
|
| 1
|
The current time
|
| Obtains the current system time, measured in milliseconds.
|
| Timed interrupt
|
| Position
|
Value
|
| 0
|
71
|
| 1
|
Delay until interrupt occurs
|
| 2
|
Time in milliseconds when the interrupt occured
|
| Schedules an interrupt after a specific amount of milliseconds. This feature can be used to implement preemptive multitasking.
|
Various tables
Predefined I/O channels
| Number
|
Description
|
| 1
|
STDIN
|
| 2
|
STDOUT
|
| 3
|
STDERR
|
IP address types
| Number
|
Description
|
| 0
|
IPv4, each byte is stored in a separate memory cell
|
| 1
|
IPv6, each byte is stored in a separate memory cell
|
File opening mode
| Number
|
Description
|
| 0
|
Read-only
|
| 1
|
Read and write
|
I/O error numbers
| Number
|
Description
|
| 0
|
No error
|
| 1
|
Unspecified I/O error
|
| 2
|
I/O channel does not exist
|
| 3
|
Illegal operation argument
|
| 4
|
Operation not supported for this channel
|
| 5
|
Operation refused by operating system/runtime
|