fox32os/applications/sh/commands/dir.asm
jn ffdda5eaca Make use of data.strz
The filesystem image is the same before and after this commit:

$ sha256sum fox32os-orig.img fox32os.img
abc77bd6310b8eb6bcde0a8a442ca8bab071307a6cf5155ea606578435f77d27  fox32os-orig.img
abc77bd6310b8eb6bcde0a8a442ca8bab071307a6cf5155ea606578435f77d27  fox32os.img


The conversion was performed with a few sed commands:

find -name '*.asm' | xargs sed -i -e 's/data.str \("[^"]*"\) data.8 0$/data.strz \1/g'
find -name '*.asm' | xargs sed -i -e 's/data.str \("[^"]*"\) data.8 0 /data.strz \1 /g'
find -name '*.asm' | xargs sed -i -e 's/data.str \("[^"]*"\) data.8 0x00 /data.strz \1 /g'
2023-02-02 03:03:07 +01:00

40 lines
889 B
NASM

; dir command
shell_dir_command_string: data.strz "dir"
shell_dir_command:
mov r0, shell_dir_command_list_buffer
movz.8 r1, [shell_current_disk]
call ryfs_get_file_list
cmp r0, 0
ifz ret
mov r31, r0
mov r3, 0
shell_dir_command_loop:
; copy one file name from the list buffer to the file buffer
mov r0, shell_dir_command_list_buffer
add r0, r3
mov r1, shell_dir_command_file_buffer
mov r2, 11
call copy_memory_bytes
add r1, 11
mov.8 [r1], 0
; then print the file name to the terminal
mov r0, shell_dir_command_file_buffer
call print_str_to_terminal
; new line
mov r0, 10
call print_character_to_terminal
; point to next file name in the buffer
add r3, 11
loop shell_dir_command_loop
ret
shell_dir_command_list_buffer: data.fill 0, 341
shell_dir_command_file_buffer: data.fill 0, 12