refactor(boot): defn -> DEFN
This commit is contained in:
parent
c84e5b55e4
commit
1cd67eec0a
|
@ -15,7 +15,7 @@ struc fat_bpb
|
||||||
.sects_per_track dw ?
|
.sects_per_track dw ?
|
||||||
.heads_per_cyl dw ?
|
.heads_per_cyl dw ?
|
||||||
}
|
}
|
||||||
defn fat_bpb
|
DEFN fat_bpb
|
||||||
|
|
||||||
;; Struct: fat_entry
|
;; Struct: fat_entry
|
||||||
struc fat_entry
|
struc fat_entry
|
||||||
|
@ -33,7 +33,7 @@ struc fat_entry
|
||||||
.start dw ?
|
.start dw ?
|
||||||
.size dd ?
|
.size dd ?
|
||||||
}
|
}
|
||||||
defn fat_entry
|
DEFN fat_entry
|
||||||
|
|
||||||
;; Constants: Attributes
|
;; Constants: Attributes
|
||||||
;; ATTR_READ_ONLY - Read-only
|
;; ATTR_READ_ONLY - Read-only
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
;; File: macro.inc
|
;; File: macro.inc
|
||||||
|
|
||||||
;; Macro: defn name
|
;; Macro: DEFN name
|
||||||
macro defn name
|
macro DEFN x {
|
||||||
{
|
|
||||||
virtual at 0
|
virtual at 0
|
||||||
name name
|
x x
|
||||||
|
sizeof.#x:
|
||||||
end virtual
|
end virtual
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,6 @@ struc Partition
|
||||||
.lba dd ?
|
.lba dd ?
|
||||||
.sectors dd ?
|
.sectors dd ?
|
||||||
}
|
}
|
||||||
defn Partition
|
DEFN Partition
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ struc EFI_TIME
|
||||||
.Daylight UINT8
|
.Daylight UINT8
|
||||||
.Pad2 UINT8
|
.Pad2 UINT8
|
||||||
}
|
}
|
||||||
defn EFI_TIME
|
DEFN EFI_TIME
|
||||||
|
|
||||||
struc EFI_TABLE_HEADER
|
struc EFI_TABLE_HEADER
|
||||||
{
|
{
|
||||||
|
@ -90,7 +90,7 @@ struc EFI_TABLE_HEADER
|
||||||
.CRC32 UINT32
|
.CRC32 UINT32
|
||||||
.Reserved UINT32
|
.Reserved UINT32
|
||||||
}
|
}
|
||||||
defn EFI_TABLE_HEADER
|
DEFN EFI_TABLE_HEADER
|
||||||
|
|
||||||
;; ========================================================================
|
;; ========================================================================
|
||||||
;; EFI_SYSTEM_TABLE
|
;; EFI_SYSTEM_TABLE
|
||||||
|
@ -131,7 +131,7 @@ struc EFI_SYSTEM_TABLE
|
||||||
.NumberOfTableEntries UINTN
|
.NumberOfTableEntries UINTN
|
||||||
.ConfigurationTable UINTPTR
|
.ConfigurationTable UINTPTR
|
||||||
}
|
}
|
||||||
defn EFI_SYSTEM_TABLE
|
DEFN EFI_SYSTEM_TABLE
|
||||||
|
|
||||||
;; ========================================================================
|
;; ========================================================================
|
||||||
;; EFI_BOOT_SERVICES
|
;; EFI_BOOT_SERVICES
|
||||||
|
@ -210,7 +210,7 @@ struc EFI_BOOT_SERVICES
|
||||||
.SetMem UINTPTR
|
.SetMem UINTPTR
|
||||||
.CreateEventEx UINTPTR
|
.CreateEventEx UINTPTR
|
||||||
}
|
}
|
||||||
defn EFI_BOOT_SERVICES
|
DEFN EFI_BOOT_SERVICES
|
||||||
|
|
||||||
;; ========================================================================
|
;; ========================================================================
|
||||||
;; EFI_RUNTIMES_SERVICES
|
;; EFI_RUNTIMES_SERVICES
|
||||||
|
@ -269,7 +269,7 @@ struc EFI_LOADED_IMAGE_PROTOCOL
|
||||||
.ImageDataType UINT32
|
.ImageDataType UINT32
|
||||||
.Unload UINTPTR
|
.Unload UINTPTR
|
||||||
}
|
}
|
||||||
defn EFI_LOADED_IMAGE_PROTOCOL
|
DEFN EFI_LOADED_IMAGE_PROTOCOL
|
||||||
|
|
||||||
;; ========================================================================
|
;; ========================================================================
|
||||||
;; EFI_DEVICE_PATH_PROTOCOL
|
;; EFI_DEVICE_PATH_PROTOCOL
|
||||||
|
@ -282,7 +282,7 @@ struc EFI_DEVICE_PATH_PROTOCOL
|
||||||
.SubType UINT8
|
.SubType UINT8
|
||||||
.Length db 2 dup(?)
|
.Length db 2 dup(?)
|
||||||
}
|
}
|
||||||
defn EFI_DEVICE_PATH_PROTOCOL
|
DEFN EFI_DEVICE_PATH_PROTOCOL
|
||||||
|
|
||||||
;; ========================================================================
|
;; ========================================================================
|
||||||
;; EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
;; EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
||||||
|
@ -302,7 +302,7 @@ struc EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
||||||
.EnableCursor UINTPTR
|
.EnableCursor UINTPTR
|
||||||
.Mode UINTPTR
|
.Mode UINTPTR
|
||||||
}
|
}
|
||||||
defn EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
DEFN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
||||||
|
|
||||||
struc SIMPLE_TEXT_OUTPUT_MODE
|
struc SIMPLE_TEXT_OUTPUT_MODE
|
||||||
{
|
{
|
||||||
|
@ -350,7 +350,7 @@ struc EFI_LOAD_FILE_PROTOCOL
|
||||||
{
|
{
|
||||||
.LoadFile UINTPTR
|
.LoadFile UINTPTR
|
||||||
}
|
}
|
||||||
defn EFI_LOAD_FILE_PROTOCOL
|
DEFN EFI_LOAD_FILE_PROTOCOL
|
||||||
|
|
||||||
|
|
||||||
;; ========================================================================
|
;; ========================================================================
|
||||||
|
@ -372,7 +372,7 @@ struc EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
|
||||||
.Revision UINT64
|
.Revision UINT64
|
||||||
.OpenVolume UINTPTR
|
.OpenVolume UINTPTR
|
||||||
}
|
}
|
||||||
defn EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
|
DEFN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
|
||||||
|
|
||||||
;; ========================================================================
|
;; ========================================================================
|
||||||
;; EFI_FILE_PROTOCOL
|
;; EFI_FILE_PROTOCOL
|
||||||
|
@ -400,7 +400,7 @@ struc EFI_FILE_PROTOCOL
|
||||||
.WriteEx UINTPTR
|
.WriteEx UINTPTR
|
||||||
.FlushEx UINTPTR
|
.FlushEx UINTPTR
|
||||||
}
|
}
|
||||||
defn EFI_FILE_PROTOCOL
|
DEFN EFI_FILE_PROTOCOL
|
||||||
|
|
||||||
; Open Mode
|
; Open Mode
|
||||||
EFI_FILE_MODE_READ = 0x0000000000000001
|
EFI_FILE_MODE_READ = 0x0000000000000001
|
||||||
|
|
|
@ -10,7 +10,8 @@ LOADER_SRCS = loader.asm \
|
||||||
memory.inc \
|
memory.inc \
|
||||||
logger.inc \
|
logger.inc \
|
||||||
a20.inc \
|
a20.inc \
|
||||||
multiboot.inc
|
multiboot.inc \
|
||||||
|
stpdfs.inc
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(TARGET)
|
all: $(TARGET)
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
include '../common/fat12.inc'
|
include '../common/fat12.inc'
|
||||||
|
|
||||||
|
;; Function: fat_read_bpb
|
||||||
fat_read_bpb:
|
fat_read_bpb:
|
||||||
mov ax, DISK_BUFFER/0x10
|
mov ax, DISK_BUFFER/0x10
|
||||||
mov es, ax
|
mov es, ax
|
||||||
|
|
|
@ -76,9 +76,23 @@ _start:
|
||||||
cmp dword [DISK_BUFFER], STPDFS_MAGIC
|
cmp dword [DISK_BUFFER], STPDFS_MAGIC
|
||||||
jne .fat_fallback
|
jne .fat_fallback
|
||||||
|
|
||||||
|
mov si, szMsgStpdFSFound
|
||||||
|
call bios_log
|
||||||
|
|
||||||
|
call stpdfs_load_rootdir
|
||||||
|
|
||||||
|
mov si, szKernelStpdfsFile
|
||||||
|
call stpdfs_search
|
||||||
|
|
||||||
|
|
||||||
|
jmp .skip_fat
|
||||||
|
|
||||||
; fallback to fat12
|
; fallback to fat12
|
||||||
; for now fat12 is asumed
|
; for now fat12 is asumed
|
||||||
.fat_fallback:
|
.fat_fallback:
|
||||||
|
mov si, szMsgFatFallback
|
||||||
|
call bios_log
|
||||||
|
|
||||||
; get bpb
|
; get bpb
|
||||||
call fat_read_bpb
|
call fat_read_bpb
|
||||||
|
|
||||||
|
@ -112,6 +126,8 @@ _start:
|
||||||
xor bx, bx
|
xor bx, bx
|
||||||
call fat_load_binary
|
call fat_load_binary
|
||||||
|
|
||||||
|
.skip_fat:
|
||||||
|
|
||||||
; fetch memory map from bios
|
; fetch memory map from bios
|
||||||
call memory_get_map
|
call memory_get_map
|
||||||
jc .error_memory
|
jc .error_memory
|
||||||
|
@ -156,6 +172,7 @@ _start:
|
||||||
include 'a20.inc'
|
include 'a20.inc'
|
||||||
include '../common/bios.inc'
|
include '../common/bios.inc'
|
||||||
include 'fat.inc'
|
include 'fat.inc'
|
||||||
|
include 'stpdfs.inc'
|
||||||
include 'disk.inc'
|
include 'disk.inc'
|
||||||
include 'logger.inc'
|
include 'logger.inc'
|
||||||
include 'memory.inc'
|
include 'memory.inc'
|
||||||
|
@ -173,6 +190,9 @@ uKernelSize dd 0
|
||||||
|
|
||||||
szMsgStage2 db "StupidOS Loader", 0
|
szMsgStage2 db "StupidOS Loader", 0
|
||||||
szKernelFile db "VMSTUPIDSYS", 0
|
szKernelFile db "VMSTUPIDSYS", 0
|
||||||
|
szKernelStpdfsFile db "vmstupid.sys", 0
|
||||||
|
szMsgStpdFSFound db "StupidFS found", 0
|
||||||
|
szMsgFatFallback db "Fallback to FATFS", 0
|
||||||
szMsgKernelFound db "Kernel found, size: %x", 0
|
szMsgKernelFound db "Kernel found, size: %x", 0
|
||||||
szMsgErrorA20 db "ERROR: can't enable a20 line", 0
|
szMsgErrorA20 db "ERROR: can't enable a20 line", 0
|
||||||
szMsgErrorMemory db "ERROR: can't detect available memory", 0
|
szMsgErrorMemory db "ERROR: can't detect available memory", 0
|
||||||
|
|
|
@ -82,7 +82,7 @@ struc MultibootData
|
||||||
.fb_type db ?
|
.fb_type db ?
|
||||||
.fb_misc dw 3 dup ?
|
.fb_misc dw 3 dup ?
|
||||||
}
|
}
|
||||||
defn MultibootData
|
DEFN MultibootData
|
||||||
|
|
||||||
MULTIBOOT_DATA_MEM = 0x0001
|
MULTIBOOT_DATA_MEM = 0x0001
|
||||||
MULTIBOOT_DATA_BOOTDEV = 0x0002
|
MULTIBOOT_DATA_BOOTDEV = 0x0002
|
||||||
|
@ -101,7 +101,7 @@ struc MultibootMMap
|
||||||
.length dq ?
|
.length dq ?
|
||||||
.type dd ?
|
.type dd ?
|
||||||
}
|
}
|
||||||
defn MultibootMMap
|
DEFN MultibootMMap
|
||||||
|
|
||||||
MULTIBOOT_MEMORY_AVAILABLE = 0x1
|
MULTIBOOT_MEMORY_AVAILABLE = 0x1
|
||||||
MULTIBOOT_MEMORY_RESERVED = 0x2
|
MULTIBOOT_MEMORY_RESERVED = 0x2
|
||||||
|
@ -116,4 +116,4 @@ struc MultibootModule
|
||||||
.cmdline dd ?
|
.cmdline dd ?
|
||||||
.pad dd ?
|
.pad dd ?
|
||||||
}
|
}
|
||||||
defn MultibootModule
|
DEFN MultibootModule
|
||||||
|
|
55
boot/loader/stpdfs.inc
Normal file
55
boot/loader/stpdfs.inc
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
STPDFS_NAME_MAX = 28
|
||||||
|
|
||||||
|
;; Struct: inode
|
||||||
|
struc inode {
|
||||||
|
.inode dw ?
|
||||||
|
.nlink dw ?
|
||||||
|
.uid dw ?
|
||||||
|
.gid dw ?
|
||||||
|
.flags dw ?
|
||||||
|
.size dd ?
|
||||||
|
.zones dd 10 dup(?)
|
||||||
|
.actime dq ?
|
||||||
|
.modtime dq ?
|
||||||
|
}
|
||||||
|
DEFN inode
|
||||||
|
|
||||||
|
;; Struct: dirent
|
||||||
|
struc dirent {
|
||||||
|
.inum dd ?
|
||||||
|
.name db STPDFS_NAME_MAX dup(?)
|
||||||
|
}
|
||||||
|
DEFN dirent
|
||||||
|
|
||||||
|
;; Function: stpdfs_load_rootdir
|
||||||
|
;;
|
||||||
|
;; Out:
|
||||||
|
stpdfs_load_rootdir:
|
||||||
|
; read first inode
|
||||||
|
mov ax, DISK_BUFFER/0x10
|
||||||
|
mov es, ax
|
||||||
|
mov ax, 2
|
||||||
|
mov cx, 1
|
||||||
|
xor bx, bx
|
||||||
|
call disk_read_sectors
|
||||||
|
|
||||||
|
; root dir is inode 1
|
||||||
|
mov dword eax, [DISK_BUFFER + sizeof.inode * 2 + inode.size]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;; Function: stpdfs_search
|
||||||
|
;;
|
||||||
|
;; In:
|
||||||
|
;; SI - filename
|
||||||
|
;;
|
||||||
|
stpdfs_search:
|
||||||
|
clc ; clear carry flag
|
||||||
|
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
stpdfs_copy_data:
|
||||||
|
ret
|
Loading…
Reference in a new issue