MicroBe InterruptList - INT 0x30

-------------
AH=0x00 (CRT)
-------------

Name: __CRT_print
Function prints out the given string ($ is treated as the end of the string)
Input
AH=0x00 (CRT)
AL=0x00
DS:EDX=pointer to string being printed out (ends with $)

Name: __CRT_printchr
Function prints out the given character using the given colour
Input
AH=0x00 (CRT)
AL=0x01
BH=character being printed out (->AL)
BL=colour

Name: __CRT_scroll_up
Function scrolls up the screen 1 line
Input
AH=0x00 (CRT)
AL=0x02

Name: __CRT_get_cursor
Function gets the cursor position on the screen
Input
AH=0x00 (CRT)
AL=0x03
Output
DH=line
DL=column

Name: __CRT_set_cursor
Function sets the cursor on the given position on the screen
Input
AH=0x00 (CRT)
AL=0x04
DH=line
DL=column

Name: __CRT_print_dec
Function prints out the number on the screen
Input
AH=0x00 (CRT)
AL=0x05
ECX=number being printed out

Name: __CRT_print_hex
Function prints out the number (HEX) on the screen
Input
AH=0x00 (CRT)
AL=0x06
EDX=number being printed out

Name: __CRT_VGA_Setmode
Function sets the given VGA display mode
AH=0x00 (CRT)
AL=0x07
BX=screen mode (->AX)

----------------
AH=0x01 (Kernel)
----------------

Name: __Kernel_Allocate_Region
Function allocates the desired amount of memory in KB
Input
AH=0x01 (Kernel)
AL=0x00
ECX=size in KB
BX=access rights
Output
CY=0 then AX=selector of the allocated segment
CY=1 then AX=1 (not enough memory)
AX=2 (no free descriptors)

Name: __Kernel_Free_Region
Function claims the given memory as free
Input
AH=0x01 (Kernel)
AL=0x01
BX=selector
Output
CY=0 success
CY=1 then AX=1 memory overlapping
AX=2 not enough MMT sources (panic!)
AX=3 (non-existing descriptor)

Name: __Kernel_MExclude
Function excludes the given part of memory from allocation
Input
AH=0x01 (Kernel)
AL=0x02
ESI - base physical address
ECX - limit

Name: __Kernel_Get_Free_Memory
Function returns the amount of available (allocable) memory
Input
AH=0x01 (Kernel)
AL=0x03
Output
EAX=free memory in bytes

Name: __ACPI_poweroff
Function performs ACPI power-off of the computer
Input
AH=0x01 (Kernel)
AL=0x04

-------------
AH=0x02 (VFS)
-------------

Name: __VFS_Open_File
Function opens the file
Input
AH=0x02 (VFS)
AL=0x00
ES:EDI - filepath
Output
CY=0 then CX=file handle
CY=1 then AX=1 no free handles
AX=2 file not found

Name: __VFS_Close_File
Function closes the file
Input
AH=0x02 (VFS)
AL=0x01
CX=handle

Name: __VFS_Read_File
Function reads the given amount of bytes from the file
Input
AH=0x02 (VFS)
AL=0x02
CX=handle
ES:EDI=buffer
EDX=how many bytes will be read

Name: __VFS_Read_Cluster
Function reads the current cluster of the file
Input
AH=0x02 (VFS)
AL=0x03
CX=handle
ES:EDI=buffer

Name: __VFS_Get_Filesize
Function returns the size of the opened file
Input
AH=0x02 (VFS)
AL=0x04
CX=handle
Output
EAX=filesize

-------------
AH=0x03 (ATA)
-------------

Name: __ATA_read_sector
Function reads the sector from the ATA device
Input
AH=0x03 (ATA)
AL=0x00
ECX=LBA sector number
ES:EDI=buffer
DL=number of disk (0,1,2,3)
Output
CY=0 success
CY=1 error

--------------
AH=0x04 (8042)
--------------

Name: __8042_get_last_key
Function returns the last pressed key if any, otherwise returns 0xffff
Input
AH=0x04 (8042)
AL=0x00
Output
AX = key code (>0xFF = extended)
AX = 0xFFFF -> nothing pressed

Name: __8042_reset_processor
Function immediately resets the processor
Input
AH=0x04 (8042)
AL=0x01

Name: __8042_set_locks
Function sets the state of the keyboard locks
Input
AH=0x04 (8042)
AL=0x02
BL= bit0=SCROLL, bit1=NUM, bit2=CAPS (->AL)

--------------
AH=0x05 (8253)
--------------

Name: __8253_wait_generic
Function waits for the given period of time (increments of 55ms)
Input
AH=0x05 (8253)
AL=0x00
EBX=time to wait (55ms increments) (-> EAX)