64비트 운영체제 프로젝트

cppig1995의 이미지

필자의 학업 문제로 2007년 3월에 올리던 64비트 운영체제 관련 강좌가 끊겼었습니다 ㅜㅜ
이번주 월요일(어제), 화요일(오늘), 수요일(내일) 3일 동안 기말고사를 봅니다.
그러므로 다시 운영체제 소스 코드를 들여다봅니다 (???)
처음부터 새로 작성합니다 (???)

List of loader1.asm

; CSDS Level-1 Bootloader
; Written by CScppig1995 (Heesu Yoon)
; Initial written 2007-12-11
 
[org 0]
[bits 16]
 
	jmp entry
	nop
 
	; FAT12 header
	db "CSDS  64"
	dw 512
	db 1
	dw 1
	db 2
	dw 224, 2880
	db 0xf0
	dw 9, 18, 2
	dd 0, 2880
	db 0, 0, 0x29
	dd 0x0000C5D5
	db "DreamSystem"
	db "FAT12   "
 
entry:
	jmp 0x07c0:start
 
start:
	mov ax, cs
	mov ds, ax
	mov ss, ax
	xor sp, sp
	mov ax, 0x1000
	mov es, ax
	mov cx, 2
	mov dh, 0
read_sector:
	xor di, di
retry:
	mov ah, 2
	mov al, 1
	xor bx, bx
	xor dl, dl
	int 0x13
	jnc next_sector
	inc si
	cmp si, 4
	mov di, disk_str
	jae printError
	mov ah, 0
	mov dl, 0
	int 0x13
	jmp retry
next_sector:
	mov ax, es
	add ax, 32
	mov es, ax
	inc cl
	cmp cl, 18
	jbe read_sector
	mov cl, 1
	inc dh
	cmp dh, 2
	jb read_sector
	mov dh, 0
	inc ch
	cmp ch, 40
	jb read_sector
	xor dh, dh
	mov ax, 0x07e0
	mov es, ax
	xor di, di
	mov ax, 0x4f00
	int 0x10
	cmp ax, 0x004f
	mov si, graph1_str
	jne printError
	mov ax, [es:di+4]
	cmp ax, 0x0200
	mov si, graph2_str
	jne printError
	mov ax, 0x4f01
	mov cx, 0x116
	int 0x10
	cmp ax, 0x004f
	mov si, graph3_str
	jne printError
	mov ax, 0x4f02
	mov bx, 0x4116
	int 0x10
	; UNDONE: 보호 모드로 진입
	; TODO: 공간이 남아 돌면 64비트 모드로 진입
	jmp 0x1000:0x4200
	; jmp loader2.rbx
 
printError:
	; BIOS teletype service (ah=0x0e int 0x10)
	; 비디오램을 문자=0x20 속성=0x74로 채운뒤
	; title_str에 있는 문자열을 1행 4열에 title_attr(0x4f)의 속성으로 출력하고
	; base_str에 있는 문자열을 3행 2열에 base_attr(0x70)의 속성으로 출력하고
	; *si에 있는 문자열을 4행 4열에 text_attr(0x74)의 속성으로 출력함
 
title_str db "CS DreamSystem 64 :: Error"
base_str db "A problem occured while processing start sequence:"
disk_str db "Couldn't read floppy disk."
graph1_str db "VESA BIOS Extensions not presents."
graph2_str db "VESA BIOS Extensions 2.0 or higher required."
graph3_str db "Video BIOS does not support mode 0x116(1024x768x32K)."
title_attr db 0x4f
base_attr db 0x70
text_attr db 0x74
 
	times 510-($-$$) hlt
	dw 0xaa55

결론은 내년초에 운영체제 강좌가 재개될 것이라는 것을 말해 주는 복선과,
시험전 딴짓증후군의 말로, 그리고 "이 글은 뻘글이다."입니다.