fox32rom: Add read_sector and write_sector

This commit is contained in:
Ry 2022-03-25 17:24:53 -07:00
parent 33408802eb
commit 6dde85a921
3 changed files with 53 additions and 0 deletions

43
disk.asm Normal file
View File

@ -0,0 +1,43 @@
; disk routines
; read a sector into the specified memory buffer
; inputs:
; r0: sector number
; r1: disk ID
; r2: sector buffer (512 bytes)
; outputs:
; none
read_sector:
push r3
push r4
mov r3, 0x80002000 ; command to set the location of the buffer
mov r4, 0x80003000 ; command to read a sector from a disk into the buffer
or.8 r4, r1 ; set the disk ID
out r3, r2 ; set the memory buffer location
out r4, r0 ; read the sector into memory
pop r4
pop r3
ret
; wrtie a sector from the specified memory buffer
; inputs:
; r0: sector number
; r1: disk ID
; r2: sector buffer (512 bytes)
; outputs:
; none
write_sector:
push r3
push r4
mov r3, 0x80002000 ; command to set the location of the buffer
mov r4, 0x80004000 ; command to write a sector to a disk from the buffer
or.8 r4, r1 ; set the disk ID
out r3, r2 ; set the memory buffer location
out r4, r0 ; write the sector from memory
pop r4
pop r3
ret

View File

@ -45,6 +45,10 @@ draw_menu_items: jmp [0xF0044014]
close_menu: jmp [0xF0044018] close_menu: jmp [0xF0044018]
menu_update_event: jmp [0xF004401C] menu_update_event: jmp [0xF004401C]
; disk jump table
read_sector: jmp [0xF0045000]
write_sector: jmp [0xF0045004]
; event types ; event types
const MOUSE_CLICK_EVENT_TYPE: 0x00000000 const MOUSE_CLICK_EVENT_TYPE: 0x00000000
const MENU_BAR_CLICK_EVENT_TYPE: 0x00000001 const MENU_BAR_CLICK_EVENT_TYPE: 0x00000001

View File

@ -127,6 +127,7 @@ get_rom_version:
#include "background.asm" #include "background.asm"
#include "boot.asm" #include "boot.asm"
#include "debug.asm" #include "debug.asm"
#include "disk.asm"
#include "draw_rectangle.asm" #include "draw_rectangle.asm"
#include "draw_text.asm" #include "draw_text.asm"
#include "event.asm" #include "event.asm"
@ -194,6 +195,11 @@ get_rom_version:
data.32 close_menu data.32 close_menu
data.32 menu_update_event data.32 menu_update_event
; disk jump table
org.pad 0xF0045000
data.32 read_sector
data.32 write_sector
org.pad 0xF004F000 org.pad 0xF004F000
standard_font_width: standard_font_width:
data.16 8 data.16 8