Migol 11/IO Functions

From Esolang
Jump to navigation Jump to search

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