refactor(boot): defn -> DEFN
This commit is contained in:
parent
c84e5b55e4
commit
1cd67eec0a
|
@ -15,7 +15,7 @@ struc fat_bpb
|
|||
.sects_per_track dw ?
|
||||
.heads_per_cyl dw ?
|
||||
}
|
||||
defn fat_bpb
|
||||
DEFN fat_bpb
|
||||
|
||||
;; Struct: fat_entry
|
||||
struc fat_entry
|
||||
|
@ -33,7 +33,7 @@ struc fat_entry
|
|||
.start dw ?
|
||||
.size dd ?
|
||||
}
|
||||
defn fat_entry
|
||||
DEFN fat_entry
|
||||
|
||||
;; Constants: Attributes
|
||||
;; ATTR_READ_ONLY - Read-only
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
;; File: macro.inc
|
||||
|
||||
;; Macro: defn name
|
||||
macro defn name
|
||||
{
|
||||
;; Macro: DEFN name
|
||||
macro DEFN x {
|
||||
virtual at 0
|
||||
name name
|
||||
x x
|
||||
sizeof.#x:
|
||||
end virtual
|
||||
}
|
||||
|
|
|
@ -10,6 +10,6 @@ struc Partition
|
|||
.lba dd ?
|
||||
.sectors dd ?
|
||||
}
|
||||
defn Partition
|
||||
DEFN Partition
|
||||
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ struc EFI_TIME
|
|||
.Daylight UINT8
|
||||
.Pad2 UINT8
|
||||
}
|
||||
defn EFI_TIME
|
||||
DEFN EFI_TIME
|
||||
|
||||
struc EFI_TABLE_HEADER
|
||||
{
|
||||
|
@ -90,7 +90,7 @@ struc EFI_TABLE_HEADER
|
|||
.CRC32 UINT32
|
||||
.Reserved UINT32
|
||||
}
|
||||
defn EFI_TABLE_HEADER
|
||||
DEFN EFI_TABLE_HEADER
|
||||
|
||||
;; ========================================================================
|
||||
;; EFI_SYSTEM_TABLE
|
||||
|
@ -131,7 +131,7 @@ struc EFI_SYSTEM_TABLE
|
|||
.NumberOfTableEntries UINTN
|
||||
.ConfigurationTable UINTPTR
|
||||
}
|
||||
defn EFI_SYSTEM_TABLE
|
||||
DEFN EFI_SYSTEM_TABLE
|
||||
|
||||
;; ========================================================================
|
||||
;; EFI_BOOT_SERVICES
|
||||
|
@ -210,7 +210,7 @@ struc EFI_BOOT_SERVICES
|
|||
.SetMem UINTPTR
|
||||
.CreateEventEx UINTPTR
|
||||
}
|
||||
defn EFI_BOOT_SERVICES
|
||||
DEFN EFI_BOOT_SERVICES
|
||||
|
||||
;; ========================================================================
|
||||
;; EFI_RUNTIMES_SERVICES
|
||||
|
@ -269,7 +269,7 @@ struc EFI_LOADED_IMAGE_PROTOCOL
|
|||
.ImageDataType UINT32
|
||||
.Unload UINTPTR
|
||||
}
|
||||
defn EFI_LOADED_IMAGE_PROTOCOL
|
||||
DEFN EFI_LOADED_IMAGE_PROTOCOL
|
||||
|
||||
;; ========================================================================
|
||||
;; EFI_DEVICE_PATH_PROTOCOL
|
||||
|
@ -282,7 +282,7 @@ struc EFI_DEVICE_PATH_PROTOCOL
|
|||
.SubType UINT8
|
||||
.Length db 2 dup(?)
|
||||
}
|
||||
defn EFI_DEVICE_PATH_PROTOCOL
|
||||
DEFN EFI_DEVICE_PATH_PROTOCOL
|
||||
|
||||
;; ========================================================================
|
||||
;; EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
||||
|
@ -302,7 +302,7 @@ struc EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
|||
.EnableCursor UINTPTR
|
||||
.Mode UINTPTR
|
||||
}
|
||||
defn EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
||||
DEFN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
|
||||
|
||||
struc SIMPLE_TEXT_OUTPUT_MODE
|
||||
{
|
||||
|
@ -350,7 +350,7 @@ struc EFI_LOAD_FILE_PROTOCOL
|
|||
{
|
||||
.LoadFile UINTPTR
|
||||
}
|
||||
defn EFI_LOAD_FILE_PROTOCOL
|
||||
DEFN EFI_LOAD_FILE_PROTOCOL
|
||||
|
||||
|
||||
;; ========================================================================
|
||||
|
@ -372,7 +372,7 @@ struc EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
|
|||
.Revision UINT64
|
||||
.OpenVolume UINTPTR
|
||||
}
|
||||
defn EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
|
||||
DEFN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL
|
||||
|
||||
;; ========================================================================
|
||||
;; EFI_FILE_PROTOCOL
|
||||
|
@ -400,7 +400,7 @@ struc EFI_FILE_PROTOCOL
|
|||
.WriteEx UINTPTR
|
||||
.FlushEx UINTPTR
|
||||
}
|
||||
defn EFI_FILE_PROTOCOL
|
||||
DEFN EFI_FILE_PROTOCOL
|
||||
|
||||
; Open Mode
|
||||
EFI_FILE_MODE_READ = 0x0000000000000001
|
||||
|
|
|
@ -10,7 +10,8 @@ LOADER_SRCS = loader.asm \
|
|||
memory.inc \
|
||||
logger.inc \
|
||||
a20.inc \
|
||||
multiboot.inc
|
||||
multiboot.inc \
|
||||
stpdfs.inc
|
||||
|
||||
.PHONY: all
|
||||
all: $(TARGET)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
include '../common/fat12.inc'
|
||||
|
||||
;; Function: fat_read_bpb
|
||||
fat_read_bpb:
|
||||
mov ax, DISK_BUFFER/0x10
|
||||
mov es, ax
|
||||
|
|
|
@ -76,9 +76,23 @@ _start:
|
|||
cmp dword [DISK_BUFFER], STPDFS_MAGIC
|
||||
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
|
||||
; for now fat12 is asumed
|
||||
.fat_fallback:
|
||||
mov si, szMsgFatFallback
|
||||
call bios_log
|
||||
|
||||
; get bpb
|
||||
call fat_read_bpb
|
||||
|
||||
|
@ -112,6 +126,8 @@ _start:
|
|||
xor bx, bx
|
||||
call fat_load_binary
|
||||
|
||||
.skip_fat:
|
||||
|
||||
; fetch memory map from bios
|
||||
call memory_get_map
|
||||
jc .error_memory
|
||||
|
@ -156,6 +172,7 @@ _start:
|
|||
include 'a20.inc'
|
||||
include '../common/bios.inc'
|
||||
include 'fat.inc'
|
||||
include 'stpdfs.inc'
|
||||
include 'disk.inc'
|
||||
include 'logger.inc'
|
||||
include 'memory.inc'
|
||||
|
@ -173,6 +190,9 @@ uKernelSize dd 0
|
|||
|
||||
szMsgStage2 db "StupidOS Loader", 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
|
||||
szMsgErrorA20 db "ERROR: can't enable a20 line", 0
|
||||
szMsgErrorMemory db "ERROR: can't detect available memory", 0
|
||||
|
|
|
@ -82,7 +82,7 @@ struc MultibootData
|
|||
.fb_type db ?
|
||||
.fb_misc dw 3 dup ?
|
||||
}
|
||||
defn MultibootData
|
||||
DEFN MultibootData
|
||||
|
||||
MULTIBOOT_DATA_MEM = 0x0001
|
||||
MULTIBOOT_DATA_BOOTDEV = 0x0002
|
||||
|
@ -101,7 +101,7 @@ struc MultibootMMap
|
|||
.length dq ?
|
||||
.type dd ?
|
||||
}
|
||||
defn MultibootMMap
|
||||
DEFN MultibootMMap
|
||||
|
||||
MULTIBOOT_MEMORY_AVAILABLE = 0x1
|
||||
MULTIBOOT_MEMORY_RESERVED = 0x2
|
||||
|
@ -116,4 +116,4 @@ struc MultibootModule
|
|||
.cmdline 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