fox32os/kernel/shell/commands/diskrm.asm

31 lines
604 B
NASM

; eject command
shell_diskrm_command_string: data.str "diskrm" data.8 0
shell_diskrm_command:
call shell_parse_arguments
mov r1, 10
call string_to_int
; r0: disk ID
; check if it's in range
cmp r0, 3
ifgt jmp shell_diskrm_command_out_of_range
; OR it with the IO port to remove a disk
or r0, 0x80005000
; remove disk
out r0, 0
ret
shell_diskrm_command_out_of_range:
mov r0, shell_diskrm_command_out_of_range_string
call print_str_to_terminal
ret
shell_diskrm_command_out_of_range_string: data.str "invalid disk ID" data.8 10 data.8 0