fox32os/applications/sh/commands/disk.asm

39 lines
851 B
NASM
Raw Normal View History

; disk command
shell_disk_command_string: data.strz "disk"
shell_disk_command:
call shell_parse_arguments
mov r1, 10
call string_to_int
; r0: disk ID
; check if it's in range
2023-03-05 08:35:54 +01:00
cmp r0, 4
ifgt jmp shell_disk_command_out_of_range
2023-03-05 08:35:54 +01:00
ifz jmp shell_disk_command_is_disk
2023-03-05 08:35:54 +01:00
call is_romdisk_available
ifnz ret
jmp shell_disk_command_is_romdisk
shell_disk_command_is_disk:
; OR it with the IO port to get the current insert state of a disk
or r0, 0x80001000
in r1, r0
cmp r1, 0
2022-12-27 03:26:27 +01:00
ifz ret
2023-03-05 08:35:54 +01:00
shell_disk_command_is_romdisk:
; set the current disk ID
2023-03-05 08:35:54 +01:00
call set_current_disk_id
ret
shell_disk_command_out_of_range:
mov r0, shell_disk_command_out_of_range_string
call print_str_to_terminal
ret
shell_disk_command_out_of_range_string: data.str "invalid disk ID" data.8 10 data.8 0