refactor(boot): defn -> DEFN
This commit is contained in:
		
							parent
							
								
									c84e5b55e4
								
							
						
					
					
						commit
						1cd67eec0a
					
				
					 9 changed files with 100 additions and 23 deletions
				
			
		|  | @ -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…
	
	Add table
		
		Reference in a new issue