added no planned fat32 error codes and added mbr/vbr reading error codes
This commit is contained in:
@@ -94,7 +94,7 @@ read_disk_raw:
|
|||||||
%elifdef __STEVIA_VBR
|
%elifdef __STEVIA_VBR
|
||||||
ERROR VBR_ERROR_DISK_READ_ERR
|
ERROR VBR_ERROR_DISK_READ_ERR
|
||||||
%else
|
%else
|
||||||
ERROR STAGE2_MBR_DISK_READ_ERROR
|
ERROR STAGE2_INT13_DISK_READ_ERR
|
||||||
%endif
|
%endif
|
||||||
.endf:
|
.endf:
|
||||||
__CDECL16_PROC_EXIT
|
__CDECL16_PROC_EXIT
|
||||||
|
|||||||
@@ -51,16 +51,16 @@
|
|||||||
%define STAGE2_MM_E820_MISC_ERR 'D'
|
%define STAGE2_MM_E820_MISC_ERR 'D'
|
||||||
%define STAGE2_MM_E820_NONSTANDARD 'E'
|
%define STAGE2_MM_E820_NONSTANDARD 'E'
|
||||||
%define STAGE2_MM_E820_NO_SMAP 'F'
|
%define STAGE2_MM_E820_NO_SMAP 'F'
|
||||||
%define STAGE2_MBR_DISK_READ_ERROR 'G'
|
%define STAGE2_INT13_DISK_READ_ERR 'G'
|
||||||
%define STAGE2_FAT32_INIT_ERROR 'H'
|
%define STAGE2_FAT32_E_FMT 'H'
|
||||||
%define STAGE2_FAT32_NO_FILE 'I'
|
%define STAGE2_FAT32_E_RANGE 'I'
|
||||||
%define STAGE2_FAT32_END_OF_CHAIN 'J'
|
%define STAGE2_FAT32_E_NOSUCH 'J'
|
||||||
%define STAGE2_FAT32_NCLUS_CFDIVZ 'K'
|
%define STAGE2_FAT32_E_ISDIR 'K'
|
||||||
%define STAGE2_FAT32_CLS2LBA_CF 'L'
|
%define STAGE2_FAT32_E_TOOLONG 'L'
|
||||||
%define STAGE2_FAT32_INIT_CF 'M'
|
%define STAGE2_FAT32_E_UNSUPPORTED 'M'
|
||||||
%define STAGE2_ERROR_INFOPRINTER 'N'
|
%define STAGE2_FAT32_E_UNIMPLEMENTED 'N'
|
||||||
%define STAGE2_ERROR_RESERVED_O 'O'
|
%define STAGE2_ERROR_BAD_MBR 'O'
|
||||||
%define STAGE2_ERROR_RESERVED_P 'P'
|
%define STAGE2_ERROR_BAD_VBR 'P'
|
||||||
%define STAGE2_ERROR_RESERVED_Q 'Q'
|
%define STAGE2_ERROR_RESERVED_Q 'Q'
|
||||||
%define STAGE2_ERROR_RESERVED_R 'R'
|
%define STAGE2_ERROR_RESERVED_R 'R'
|
||||||
%define STAGE2_ERROR_RESERVED_S 'S'
|
%define STAGE2_ERROR_RESERVED_S 'S'
|
||||||
|
|||||||
@@ -213,13 +213,13 @@ ReadMbrData:
|
|||||||
.check_sig:
|
.check_sig:
|
||||||
mov bx, [bp + 6]
|
mov bx, [bp + 6]
|
||||||
cmp word [bx + 0x1FE], 0xAA55 ; check for bytes at end
|
cmp word [bx + 0x1FE], 0xAA55 ; check for bytes at end
|
||||||
jne ReadMbrData.error
|
jne ReadMbrData.error_nosign
|
||||||
; TODO: this needs error checking, zero checking, check the sig a bunch of stuff...
|
; TODO: this needs more error checking, zero checking, check the sig a bunch of stuff...
|
||||||
.endp:
|
.endp:
|
||||||
__CDECL16_PROC_EXIT
|
__CDECL16_PROC_EXIT
|
||||||
ret
|
ret
|
||||||
.error:
|
.error_nosign:
|
||||||
ERROR STEVIA_DEBUG_ERR
|
ERROR STAGE2_ERROR_BAD_MBR
|
||||||
|
|
||||||
; int read_vbr(int boot_drive, void* buf)
|
; int read_vbr(int boot_drive, void* buf)
|
||||||
; read vbr on boot partition to memory (for fat bpb/ebpb)
|
; read vbr on boot partition to memory (for fat bpb/ebpb)
|
||||||
@@ -239,7 +239,7 @@ ReadVbrData:
|
|||||||
je ReadVbrData.active_found
|
je ReadVbrData.active_found
|
||||||
add bx, PartEntry_t_size ; next part entry's attributes
|
add bx, PartEntry_t_size ; next part entry's attributes
|
||||||
loop ReadVbrData.find_active_L0
|
loop ReadVbrData.find_active_L0
|
||||||
jmp ReadVbrData.error
|
jmp ReadVbrData.error_noactive
|
||||||
.active_found:
|
.active_found:
|
||||||
movzx ax, byte [bp + 4]
|
movzx ax, byte [bp + 4]
|
||||||
push ax ; drive_num (2)
|
push ax ; drive_num (2)
|
||||||
@@ -256,15 +256,19 @@ ReadVbrData:
|
|||||||
.check_sig:
|
.check_sig:
|
||||||
mov bx, [bp + 6]
|
mov bx, [bp + 6]
|
||||||
cmp word [bx + 0x1FE], 0xAA55 ; check for bytes at end
|
cmp word [bx + 0x1FE], 0xAA55 ; check for bytes at end
|
||||||
jne ReadVbrData.error
|
jne ReadVbrData.error_nosign
|
||||||
.check_FAT_size:
|
.check_FAT_size:
|
||||||
test word [bx + FAT32_bpb_t.unused2_ZERO_word], 0 ; TotSectors16 will not be set if FAT32
|
test word [bx + FAT32_bpb_t.unused2_ZERO_word], 0 ; TotSectors16 will not be set if FAT32
|
||||||
jnz ReadVbrData.error
|
jnz ReadVbrData.error_badfatfs
|
||||||
.endp:
|
.endp:
|
||||||
__CDECL16_PROC_EXIT
|
__CDECL16_PROC_EXIT
|
||||||
ret
|
ret
|
||||||
.error:
|
.error_noactive:
|
||||||
ERROR STEVIA_DEBUG_ERR
|
ERROR STAGE2_ERROR_BAD_VBR
|
||||||
|
.error_nosign:
|
||||||
|
ERROR STAGE2_ERROR_BAD_VBR
|
||||||
|
.error_badfatfs:
|
||||||
|
ERROR STAGE2_ERROR_BAD_VBR
|
||||||
|
|
||||||
; set ds and es segments back to the base of the loader
|
; set ds and es segments back to the base of the loader
|
||||||
%ifnmacro __TINY_DS_ES
|
%ifnmacro __TINY_DS_ES
|
||||||
|
|||||||
Reference in New Issue
Block a user