display_file_entries:
mov r15 , 0 ; file to return
mov [dispy],dword 60
newfile:
mov [dispx],dword 20
add [dispy],dword 12
mov rdi , datareturn
mov rcx , datareturnend-datareturn
mov rax , 0
cld
rep stosb
; Read entry
mov rax , 58 ; file system
mov rbx , 3 ; read directory entry
mov rcx , r15 ; file num to return
mov rdx , 1 ; filecount (fixed)
mov r8 , datareturn
mov r9 , path1
int 0x60
cmp rax , 0 ; past last entry ?
jne filedone
; File name
mov rax , 4
mov rbx , filename
mov rcx , [dispx]
mov rdx , [dispy]
mov rsi , 0x000000
mov r9 , 1
int 0x60
add [dispx],dword 20*6
; Filesize
mov rbx , 8 shl 16
mov rcx , [filesize]
call displaynum
; Filetime
mov rbx , 2 shl 16
mov rcx , [filetime]
shr rcx , 16
and rcx , 0xff
call displaynum
mov rbx , 2 shl 16
mov rcx , [filetime]
shr rcx , 8
and rcx , 0xff
call displaynum
mov rbx , 2 shl 16
mov rcx , [filetime]
and rcx , 0xff
call displaynum
; Filedate
mov rbx , 2 shl 16
mov rcx , [filedate]
and rcx , 0xff
call displaynum
mov rbx , 2 shl 16
mov rcx , [filedate]
shr rcx , 8
and rcx , 0xff
call displaynum
mov rbx , 4 shl 16
mov rcx , [filedate]
shr rcx , 16
and rcx , 0xffff
call displaynum
add r15 , 1
cmp r15 , 10
jb newfile
filedone:
ret
displaynum:
mov rax , 47
mov rdx , [dispx]
shl rdx , 32
add rdx , [dispy]
mov rsi , 0
int 0x60
shr rbx , 16
imul rbx , 6
add rbx , 6
add [dispx],rbx
ret
dispx: dq 0x0
dispy: dq 0x0
path1: db '/fd/1',0
path2: db '',0
path3: db '/fd/1/driver',0
path4: db '/usb/1',0
path5: db '/cd/1/source',0
datareturn:
reserved: rb 8
filename: rb 256
filesize: rb 8
filedate: rb 8
filetime: rb 8
fileattr: rb 8
datareturnend: