Читаю папки:
"/bd0/" - файл не найден
"/bd0/1/" - успешно
Само устройство "bd0" существует.
Code:
ORG 0
BITS 32
MENUET01 db 'MENUET01'
version dd 1
program.start dd start_
program.end dd end_
program.memory dd end_ + STACK_SIZE
program.stack dd end_ + STACK_SIZE
program.params dd 0
program.path dd 0
STACK_SIZE equ 256
start_:
call on_redraw
L_1:
; wait.event
mov eax, 10
int 64
cmp eax, 1
jne L_2
call on_redraw
jmp L_1
L_2:
cmp eax, 2
jne L_3
; get.key.code
; mov eax, 2
int 64
jmp L_1
L_3:
cmp eax, 3
jne L_1
; get.button.number
mov eax, 17
int 64
shr eax, 8
cmp eax, 1
jne L_1
; program.terminate
neg eax
int 64
on_redraw:
; redraw.start
mov eax, 12
mov ebx, 1
int 64
; draw.window
xor eax, eax
mov ebx, 200
mov ecx, 200
mov edx, 33AABBCCh
xor edi, edi
int 64
mov eax, 70
mov ebx, .dir.read.file_info
int 64
; draw.text
mov edx, [eax * 4 + errors]
mov eax, 4
xor ebx, ebx
mov ecx, 80000000h
int 64
; redraw.finish
mov eax, 12
mov ebx, 2
int 64
ret
.dir.read.file_info:
dd 1
dd 0
dd 0
dd 0
dd .buffer
db 0
dd .FolderName
; .FolderName db "/bd0/",0
.FolderName db "/bd0/1/",0
.buffer resb 32
errors:
dd .0
dd .1
dd .2
dd .3
dd .4
dd .5
dd .6
dd .7
dd .8
dd .9
dd .10
dd .11
.0 db "0 = успешно",0
.1 db "1 = не определена база и/или раздел жёсткого диска" ,0
.2 db "2 = функция не поддерживается для данной файловой системы",0
.3 db "3 = неизвестная файловая система",0
.4 db "4 = зарезервировано, никогда не возвращается в текущей реализации",0
.5 db "5 = файл не найден",0
.6 db "6 = файл закончился",0
.7 db "7 = указатель вне памяти приложения",0
.8 db "8 = диск заполнен",0
.9 db "9 = таблица FAT разрушена",0
.10 db "10 = доступ запрещён",0
.11 db "11 = ошибка устройства",0
end_:
Как вообще проверить возможность чтения папки?
В ebx возвращается -1, если папка не найдена.
Но она может существовать и быть в это же время недоступна.