WonderWitch/FreyaBIOS/Bank: Difference between revisions
From WSdev Wiki
Jump to navigationJump to search
(Created page with "The Bank interrupt provides an abstraction layer for accessing the WonderWitch cartridge's flash and RAM. == Interrupts == === INT $18/AH=$00 - bank_set_map === * AH = $00 * BX = Bank region * CX = Number of bank to map to region Bank regions: * 0 = SRAM (1000:xxxx) * 1 = ROM0 (2000:xxxx) * 2 = ROM1 (3000:xxxx) === INT $18/AH=$01 - bank_get_map === * AH = $01 * BX = Bank region Return: * AX = Number of bank mapped to region === INT $18/AH=$02 - bank_read_byte =...") |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
* AH = $00 | * AH = $00 | ||
* | * BL = Bank region | ||
* CX = Number of bank to map to region | * CX = Number of bank to map to region | ||
Line 18: | Line 18: | ||
* AH = $01 | * AH = $01 | ||
* | * BL = Bank region | ||
Return: | Return: | ||
Line 84: | Line 84: | ||
* DX = Offset within bank | * DX = Offset within bank | ||
* DS:SI = Input buffer, of size <code>CX</code> | * DS:SI = Input buffer, of size <code>CX</code> | ||
Return: | |||
* AX = zero on success (undocumented) | |||
=== INT $18/AH=$08 - bank_fill_block === | === INT $18/AH=$08 - bank_fill_block === | ||
Line 99: | Line 103: | ||
* AH = $09 | * AH = $09 | ||
* BX = Bank ID | * BX = Bank ID | ||
Return: | |||
* AX = zero on success (undocumented) |
Latest revision as of 13:13, 20 October 2024
The Bank interrupt provides an abstraction layer for accessing the WonderWitch cartridge's flash and RAM.
Interrupts
INT $18/AH=$00 - bank_set_map
- AH = $00
- BL = Bank region
- CX = Number of bank to map to region
Bank regions:
- 0 = SRAM (1000:xxxx)
- 1 = ROM0 (2000:xxxx)
- 2 = ROM1 (3000:xxxx)
INT $18/AH=$01 - bank_get_map
- AH = $01
- BL = Bank region
Return:
- AX = Number of bank mapped to region
INT $18/AH=$02 - bank_read_byte
- AH = $02
- BX = Bank ID
- DX = Offset within bank
Return:
- AL = Byte read
Bank ID format:
15 bit 8 7 bit 0 ---- ---- ---- ---- tiii iiii iiii iiii |||| |||| |||| |||| |+++-++++--++++-++++- Number of bank +-------------------- 0 = SRAM, 1 = Flash
INT $18/AH=$03 - bank_write_byte
- AH = $03
- BX = Bank ID
- CL = Byte to write
- DX = Offset within bank
INT $18/AH=$04 - bank_read_word
- AH = $04
- BX = Bank ID
- DX = Offset within bank
Return:
- AX = Word read
INT $18/AH=$05 - bank_write_word
- AH = $05
- BX = Bank ID
- CX = Word to write
- DX = Offset within bank
INT $18/AH=$06 - bank_read_block
- AH = $06
- BX = Bank ID
- CX = Number of bytes to read
- DX = Offset within bank
- DS:SI = Output buffer, of size
CX
INT $18/AH=$07 - bank_write_block
- AH = $07
- BX = Bank ID
- CX = Number of bytes to write
- DX = Offset within bank
- DS:SI = Input buffer, of size
CX
Return:
- AX = zero on success (undocumented)
INT $18/AH=$08 - bank_fill_block
- AH = $08
- AL = Fill value
- BX = Bank ID
- CX = Number of bytes to write
- DX = Offset within bank
Sets CX
bytes in bank BX
to value AL
starting at offset DX
.
INT $18/AH=$09 - bank_erase_flash
- AH = $09
- BX = Bank ID
Return:
- AX = zero on success (undocumented)