docs: add more docs
This commit is contained in:
		
							parent
							
								
									aaf6fbccdf
								
							
						
					
					
						commit
						b43672d268
					
				
					 11 changed files with 130 additions and 12 deletions
				
			
		|  | @ -1,4 +1,4 @@ | |||
| Format: 1.51 | ||||
| Format: 1.52 | ||||
| 
 | ||||
| # This is the Natural Docs languages file for this project.  If you change | ||||
| # anything here, it will apply to THIS PROJECT ONLY.  If you'd like to change | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ Timestamp: Updated yyyy/mm/dd | |||
| # These are indexes you deleted, so Natural Docs will not add them again | ||||
| # unless you remove them from this line. | ||||
| 
 | ||||
| Don't Index: Classes, Variables, Macros | ||||
| Don't Index: Variables, Macros, Classes | ||||
| 
 | ||||
| 
 | ||||
| # -------------------------------------------------------------------------- | ||||
|  | @ -63,9 +63,12 @@ Group: BootLoader  { | |||
|    Group: Loader  { | ||||
| 
 | ||||
|       File: a20.inc  (boot/loader/a20.inc) | ||||
|       File: disk.inc  (boot/loader/disk.inc) | ||||
|       File: fat.inc  (boot/loader/fat.inc) | ||||
|       File: loader.asm  (boot/loader/loader.asm) | ||||
|       File: logger.inc  (boot/loader/logger.inc) | ||||
|       File: memory.inc  (boot/loader/memory.inc) | ||||
|       File: stpdfs.inc  (boot/loader/stpdfs.inc) | ||||
|       File: video.inc  (boot/loader/video.inc) | ||||
|       }  # Group: Loader | ||||
| 
 | ||||
|  | @ -81,6 +84,9 @@ Group: BootLoader  { | |||
|    Group: EFI  { | ||||
| 
 | ||||
|       File: bootia32.asm  (boot/efi/bootia32.asm) | ||||
|       File: fs.inc  (boot/efi/fs.inc) | ||||
|       File: logger.inc  (boot/efi/logger.inc) | ||||
|       File: memory.inc  (boot/efi/memory.inc) | ||||
|       File: uefi.inc  (boot/efi/uefi.inc) | ||||
|       }  # Group: EFI | ||||
| 
 | ||||
|  | @ -105,10 +111,10 @@ Group: Kernel  { | |||
|          File: cmos.inc  (kernel/dev/at/cmos.inc) | ||||
|          File: com.inc  (kernel/dev/at/com.inc) | ||||
|          File: floppy.inc  (kernel/dev/at/floppy.inc) | ||||
|          File: ide.inc  (kernel/dev/at/ide.inc) | ||||
|          File: kbd.inc  (kernel/dev/at/kbd.inc) | ||||
|          File: ne2k.inc  (kernel/dev/at/ne2k.inc) | ||||
|          File: pit.inc  (kernel/dev/at/pit.inc) | ||||
|          File: ata.inc  (kernel/dev/at/ata.inc) | ||||
|          }  # Group: At | ||||
| 
 | ||||
|       File: console.inc  (kernel/dev/console.inc) | ||||
|  | @ -140,6 +146,8 @@ Group: Kernel  { | |||
|    File: lock.inc  (kernel/lock.inc) | ||||
|    File: pic.inc  (kernel/pic.inc) | ||||
|    File: vfs.inc  (kernel/vfs.inc) | ||||
|    File: bio.inc  (kernel/bio.inc) | ||||
|    File: shed.inc  (kernel/sched.inc) | ||||
|    }  # Group: Kernel | ||||
| 
 | ||||
| Group: Lib  { | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| Format: 1.51 | ||||
| Format: 1.52 | ||||
| 
 | ||||
| # This is the Natural Docs topics file for this project.  If you change anything | ||||
| # here, it will apply to THIS PROJECT ONLY.  If you'd like to change something | ||||
|  |  | |||
|  | @ -2,6 +2,12 @@ | |||
| 	;; Buffer cache | ||||
| 
 | ||||
| 	;; Struc: Buffer | ||||
| 	;;  | ||||
| 	;; .dev      - Device id | ||||
| 	;; .block    - Block number | ||||
| 	;; .ulock    - lock | ||||
| 	;; .refcount - refcount | ||||
| 	;; .data     - block data | ||||
| struc Buffer { | ||||
| 	.dev      dd ? | ||||
| 	.block    dd ? | ||||
|  | @ -21,14 +27,39 @@ bio_init: | |||
| 
 | ||||
| 	;; Function: bio_read | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;    EAX - devid (AH major, AL minor) | ||||
| 	;;    ECX - block | ||||
| bio_bread: | ||||
| 	push eax | ||||
| 	mov eax, uBIOLock | ||||
| 	call lock_acquire | ||||
| 	pop eax | ||||
| 
 | ||||
| 	movzx ecx, ah | ||||
| 	shl ecx, 2 | ||||
| 	add ecx, aBlockDevices | ||||
| 	cmp ecx, aBlockDevices.end | ||||
| 	jb @f | ||||
| 
 | ||||
| 	mov esi, szErrorInvalidDevid | ||||
| 	call klog | ||||
| 	jmp .end | ||||
| @@: | ||||
| 	mov ecx, [ecx] | ||||
| 	mov ecx, [ecx + BlkDev.strategy] | ||||
| 
 | ||||
| 	call ecx | ||||
| 
 | ||||
| .end: | ||||
| 	mov eax, uBIOLock | ||||
| 	call lock_release | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: bio_bwrite | ||||
| bio_bwrite: | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: bio_brelse | ||||
| 	;; Unbusy a buffer and release it to the free lists. | ||||
| bio_brelse: | ||||
|  | @ -40,3 +71,4 @@ bio_brelse: | |||
| 	ret | ||||
| 
 | ||||
| uBIOLock dd 0 | ||||
| szErrorInvalidDevid db "Error: invalid devid", 0 | ||||
|  |  | |||
							
								
								
									
										4
									
								
								kernel/cpuid.inc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								kernel/cpuid.inc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| CPUID_FEAT_ECX_SSE3   = (1 shl 0) | ||||
| CPUID_FEAT_ECX_PCLMUL = (1 shl 1) | ||||
| 
 | ||||
| CPUID_FEAT_EDX_APIC = (1 shl 9)  | ||||
|  | @ -14,11 +14,24 @@ FLOPPY_720KB  = 0x3 | |||
| FLOPPY_1_44MB = 0x4 | ||||
| FLOPPY_2_88MB = 0x5 | ||||
| 
 | ||||
| 	;; TODO: disk geometry for each floppy type | ||||
| HEADS_PER_CYLINDER  = 2 | ||||
| SECTORS_PER_CLUSTER = 1 | ||||
| BYTES_PER_SECTOR    = 512 | ||||
| SECTORS_PER_TRACK   = 18 | ||||
| TOTAL_SECTORS       = 2880 | ||||
| 
 | ||||
| FLOPPY_MAX = 2 | ||||
| 
 | ||||
| 	;; Struct: Floppy | ||||
| 	;; | ||||
| 	;; .active - XXX | ||||
| 	;; .motor  - XXX | ||||
| struc Floppy { | ||||
| 	.active db ? | ||||
| 	.motor  db ? | ||||
| } | ||||
| DEFN Floppy | ||||
| 
 | ||||
| floppy_probe: | ||||
| 	mov al, CMOS_FLOPPY_TYPE | ||||
|  | @ -45,9 +58,52 @@ floppy_init: | |||
| 	call floppy_probe | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: floppy_lba_to_chs | ||||
| 	;; Convert LBA to CHS | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;   EAX - LBA | ||||
| 	;; | ||||
| 	;; Out: | ||||
| 	;; 	AL - Cylinder | ||||
| 	;;  AH - Head | ||||
| 	;;  CL - Sector | ||||
| floppy_lba_to_chs: | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
| 	sub esp, 1 | ||||
| 	; CYL = LBA / (HPC * SPT) | ||||
| 	; HEAD = (LBA % (HPC * SPT)) / SPT | ||||
| 	; SECT = (LBA % (HPC * SPT)) % SPT + 1 | ||||
| 
 | ||||
| 	mov edx, eax | ||||
| 	shr edx, 16 | ||||
| 	mov cx, (HEADS_PER_CYLINDER * SECTORS_PER_TRACK) | ||||
| 	div cx | ||||
| 
 | ||||
| 	mov [ebp-1], al ; cyl | ||||
| 
 | ||||
| 	mov ax, dx | ||||
| 	mov cl, SECTORS_PER_TRACK | ||||
| 	div cl | ||||
| 
 | ||||
| 	mov cl, ah | ||||
| 	inc cl | ||||
| 	xchg al, ah | ||||
| 	mov al, [ebp-1] | ||||
| 	leave | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: floppy_strategy | ||||
| 	;; Do a read or write operation | ||||
| 	;; | ||||
| 	;; In: | ||||
| 	;;    EAX - Address of <Buffer> | ||||
| floppy_strategy: | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: floppy_open | ||||
| 	;; Open the device for I/O operations | ||||
| floppy_open: | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
|  | @ -63,6 +119,8 @@ floppy_open: | |||
| 	pop ebp | ||||
| 	ret | ||||
| 
 | ||||
| 	;; Function: floppy_close | ||||
| 	;; Close a device. | ||||
| floppy_close: | ||||
| 	xor eax, eax | ||||
| 	ret | ||||
|  | @ -75,6 +133,7 @@ floppy_dump: | |||
| 	ret | ||||
| 
 | ||||
| floppy_psize: | ||||
| 	xor eax, eax | ||||
| 	ret | ||||
| 
 | ||||
| floppy_irq: | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ DEFN Device | |||
| 	;; Struc: BlkDev | ||||
| 	;; | ||||
| 	;; .open     - Open the device in preparation for I/O operations | ||||
| 	;; .strategy - Start a read or write operation, and return immediately. | ||||
| 	;; .strategy - Do a read or write operation. | ||||
| 	;; .close    - Close a device. | ||||
| 	;; .dump     - Write all physical memory to the device. | ||||
| 	;; .psize    - Return the size of a disk-drive partition. | ||||
|  | @ -31,6 +31,7 @@ struc BlkDev { | |||
| 	.dump     dd ? | ||||
| 	.psize    dd ? | ||||
| } | ||||
| DEFN BlkDev | ||||
| 
 | ||||
| 	;; Struc: CharDev | ||||
| 	;; | ||||
|  |  | |||
|  | @ -1 +1,4 @@ | |||
| File: Introduction | ||||
| 
 | ||||
| About: StupidOS Kernel | ||||
| 
 | ||||
|  |  | |||
|  | @ -14,8 +14,9 @@ | |||
| 	jmp short kmain | ||||
| 
 | ||||
| 	;; Function: kmain | ||||
| 	;; Kernel entry point | ||||
| 	;; | ||||
| 	;; Parameters: | ||||
| 	;; In: | ||||
| 	;;  | ||||
| 	;;     EAX - Boot Magic | ||||
| 	;;     EBX - Boot structure address | ||||
|  | @ -29,7 +30,7 @@ kmain: | |||
| 	; Copy boot structure | ||||
| 	mov ecx, sizeof.BootInfo | ||||
| 	mov esi, ebx | ||||
| 	mov edi, boot_structure | ||||
| 	mov edi, stBootInfo | ||||
| 	rep movsb | ||||
| 
 | ||||
| 	; print hello world  | ||||
|  | @ -52,11 +53,11 @@ kmain: | |||
| 	call mm_init | ||||
| 
 | ||||
| 	mov eax, 0xC0400000 | ||||
| 	mov ebx, [boot_structure.high_mem] | ||||
| 	mov ebx, [stBootInfo.high_mem] | ||||
| 	add ebx, KERNEL_VIRT_BASE | ||||
| 	call pmm_free_range | ||||
| 
 | ||||
| 	;mov eax, [boot_structure.low_mem] | ||||
| 	;mov eax, [stBootInfo.low_mem] | ||||
| 	;call heap_init | ||||
| 
 | ||||
| 	call pic_init | ||||
|  | @ -88,6 +89,9 @@ kmain: | |||
| 
 | ||||
| 	call vfs_init | ||||
| 
 | ||||
| 	mov ah, 2 | ||||
| 	call bio_bread | ||||
| 
 | ||||
| 	mov eax, SYSCALL_EXIT | ||||
| 	int 0x42 | ||||
| 
 | ||||
|  | @ -126,7 +130,9 @@ szMsgKernelAlive db "Kernel (", VERSION_FULL , ") is alive", 0 | |||
| szMsgBuildDate db "Built ", BUILD_DATE, 0 | ||||
| szErrorBootProtocol db "Error: wrong magic number", 0 | ||||
| 
 | ||||
| boot_structure BootInfo | ||||
| 	;; Variable: stBootInfo | ||||
| 	;; <BootInfo> | ||||
| stBootInfo BootInfo | ||||
| 
 | ||||
| kTSS TSS | ||||
| 
 | ||||
|  |  | |||
|  | @ -176,7 +176,7 @@ mm_init: | |||
| 	KV2P eax | ||||
| 	mov [edx], eax | ||||
| 
 | ||||
| 	cmp esi, [boot_structure.high_mem] | ||||
| 	cmp esi, [stBootInfo.high_mem] | ||||
| 	jb .loop | ||||
| 
 | ||||
| 	; reload cr3 | ||||
|  |  | |||
|  | @ -7,8 +7,13 @@ struc BootInfoRange { | |||
| } | ||||
| 
 | ||||
| 	;; Struct: BootInfo | ||||
| 	;; | ||||
| 	;; StupidOS boot protocol structure | ||||
| 	;; | ||||
| 	;; .mmap         - Free memory map | ||||
| 	;; .kernel_start - Kernel start address | ||||
| 	;; .kernel_size  - Kernel size in bytes | ||||
| 	;; .high_mem     - Free memory under 1MB | ||||
| 	;; .low_mem      - Free memory upper 1MB | ||||
| struc BootInfo { | ||||
| 	.mmap         dd 4*2*20 dup(0) | ||||
| 	.kernel_start dd ? | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue