All pastes #2090613 Raw Edit

Someone

public text v1 · immutable
#2090613 ·published 2011-10-17 02:25 UTC
rendered paste body

[BITS 32]
[ORG 0x10000]
_header:
	dd 1
	dd _file_end - _header
	dd 10000h
	
	dd 'code'
	dd _code_section
	dd _code_section_end - _code_section
	dd SECT_PRES | PROT_EXEC | PROT_READ
	
	dd 'data'
	dd _data_section
	dd _data_section_end - _data_section
	dd SECT_PRES | PROT_READ | PROT_WRITE
	
	dd 'rdat'
	dd _readonly_data_section
	dd _readonly_data_section_end - _readonly_data_section
	dd SECT_PRES | PROT_READ
	
	dd 'impt'
	dd 0
	dd 0
	dd 0
	
	dd 'expt'
	dd _export_section
	dd _export_section_end - _export_section
	dd SECT_PRES | PROT_READ
_header_end:

_code_section:
[SECTION .text]
KrnMain:
	sub esp, 64
	
	push 10001110b
	push TmrSystemTickIsr
	push 20h
	call KrnInsertIDTEntry
	
	push 10001111b
	push ExcGPIsr
	push 0Dh
	call KrnInsertIDTEntry
	
	push 10001111b
	push ExcDFIsr
	push 08h
	call KrnInsertIDTEntry
	
	push 10001111b
	push ExcUDIsr
	push 06h
	call KrnInsertIDTEntry
	
	push 10001111b
	push ExcNMIIsr
	push 02h
	call KrnInsertIDTEntry
	
	lidt [idt_desc]	
	
	mov eax, cr4
	or eax, 600h
	mov cr4, eax
	
	call KrnGetRTCTime
	
	call KrnGetCursorPos
	mov dword [screen_row], eax
	mov dword [screen_col], edx
	




...
so on and so forth
...





%include "src/kernel/syscall.asm"
%include "src/kernel/screen.asm"
%include "src/kernel/cpu_features.asm"
%include "src/kernel/exceptions.asm"
%include "src/kernel/memory.asm"
%include "src/kernel/crt.asm"

_code_section_end:
align 16, db 0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[SECTION .data]
_data_section:

idt:
	times 8 * 64 db 0
idt_desc:
	dw (idt_desc - idt - 1)
	dd idt

systemtick  dd 0
uptime      dd 0

...
global variables here
...


_data_section_end:

align 16, db 0

_readonly_data_section:

	itoastr: db '0123456789abcdefghijklmnopqrstuvwxyz', 0
	
	...
	strings here
	...


	str_fmt_time db '%2x/%2x/%2x %2x:%2x:%2x', 0Ah, 0
	
_readonly_data_section_end:

align 16, db 0
	
_export_section:
	dd 2

	dd 1
	dd exstr1
	dd KrnInsertIDTEntry
	
	dd 2
	dd exstr2
	dd KrnLoadDriverLL
	
	;;export string pool
	exstr1:	db 'KrnInsertIDTEntry', 0
	exstr2:	db 'KrnLoadDriverLL', 0
_export_section_end:

	
times 0x4000-($-$$) db 0
_file_end: