Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
锟斤拷有点烫
cunix
提交
d611a60e
C
cunix
项目概览
锟斤拷有点烫
/
cunix
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cunix
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d611a60e
编写于
2月 15, 2021
作者:
R
rain
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
0.466s-boot: rebuild boot
上级
3ecc3a74
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
84 addition
and
65 deletion
+84
-65
LINES
LINES
+2
-0
README.md
README.md
+2
-0
boot/x86/boot.asm
boot/x86/boot.asm
+18
-65
include/arch/x86/readdisk.inc
include/arch/x86/readdisk.inc
+62
-0
未找到文件。
LINES
浏览文件 @
d611a60e
...
...
@@ -8,3 +8,5 @@
2021-2-15 0.451: 451 lines, 4 files, rain
2021-2-15 0.466: 466 lines, 5 files, rain
README.md
浏览文件 @
d611a60e
...
...
@@ -23,4 +23,6 @@ Cunix kernel
`
0.451s-boot
`:
	`
boot
` can load 8 sectors (4KB) of loader (not 1 sector).
`
0.466s-boot
`:
	rebuild `
boot
`
</pre>
boot/x86/boot.asm
浏览文件 @
d611a60e
...
...
@@ -17,38 +17,38 @@
BI_BOOTDEV
equ
0x7e00
org
0x7c00
_start:
xor
ax
,
ax
xor
ax
,
ax
mov
ds
,
ax
mov
es
,
ax
mov
ds
,
ax
mov
es
,
ax
mov
ss
,
ax
mov
sp
,
0x7c00
mov
ss
,
ax
mov
sp
,
0x7c00
; display message: `Cunix is booting...`
; display message: `Cunix is booting...`
; boot device driver number is in DL (by BIOS-19)
mov
[
BI_BOOTDEV
],
dl
; boot device driver number is in DL (by BIOS-19)
mov
[
BI_BOOTDEV
],
dl
mov
si
,
message
call
print
mov
si
,
message
call
print
call
load_loader
call
load_loader
jmp
0x0000
:
0x8000
jmp
0x0000
:
0x8000
message:
db
"
Cunix
is
booting...
"
,
0x0d
,
0x0a
,
0x00
diskpanic_message:
db
"read disk failed"
,
0x0d
,
0x0a
,
0x00
panic_message:
db
"
panic
:
"
,
0x00
%include "arch/x86/readdisk.inc"
print:
; SI: message address
mov
al
,
[
si
]
...
...
@@ -71,12 +71,11 @@ load_loader:
mov
cl
,
0x02
mov
bx
,
0x8000
.read_loop:
call
read_sector_chs
mov
di
,
di
skpanic_message
jc
.try_lba
.read_loop:
call
read_sector
jc
panic
; read 8 sectors
add
cl
,
0x02
...
...
@@ -91,52 +90,6 @@ load_loader:
ret
.try_lba:
call
read_sector_lba
jc
panic
add
cl
,
0x02
add
bx
,
0x0200
cmp
cl
,
0x0a
je
.ret
jmp
.read_loop
read_sector_chs:
mov
ax
,
0x0201
xor
ch
,
ch
; CL is argument `start sector`
xor
dh
,
dh
mov
dl
,[
BI_BOOTDEV
]
int
0x13
ret
read_sector_lba:
push
dword
0x00000000
; ECX is argument `LBA address`
push
dword
ecx
push
word
es
push
word
bx
; 1 sector
push
word
0x0001
push
word
0x0010
mov
ah
,
0x42
mov
dl
,
[
BI_BOOTDEV
]
mov
si
,
sp
int
0x13
add
sp
,
0x10
ret
panic:
mov
si
,
panic_message
call
print
...
...
include/arch/x86/readdisk.inc
0 → 100644
浏览文件 @
d611a60e
;
Copyright
(
C
)
2021
Rain
;
This
file
is
part
of
Cunix
.
;
Cunix
is
free
software
:
you
can
redistribute
it
and
/
or
modify
;
it
under
the
terms
of
the
GNU
General
Public
Licene
and
published
by
;
the
Free
Software
Foundation
,
either
version
3
of
the
License
,
or
;
(
at
your
option
)
any
later
version
.
;
Cunix
is
distributed
in
the
hope
that
it
will
be
useful
,
;
but
WITHOUT
ANY
WARRANTY
;
without
even
the
implied
warranty
of
;
MERCHANTABILITY
or
FITNESS
FOR
A
PARTICULAR
PURPOSE
.
See
the
;
GNU
General
Public
License
for
more
details
.
;
You
should
have
recceived
a
copy
of
the
GNU
General
Public
License
;
along
with
Cunix
.
If
not
,
see
<
https
://
www
.
gnu
.
org
/
licenses
/>.
BI_BOOTDEV
equ
0x7e00
read_sector
:
;
CH
is
sector
number
call
read_sector_chs
jc
.
try_lba
ret
.
try_lba
:
call
read_sector_lba
ret
read_sector_chs
:
mov
ax
,
0x0201
xor
ch
,
ch
xor
dh
,
dh
mov
dl
,
[
BI_BOOTDEV
]
int
0x13
ret
read_sector_lba
:
push
dword
0x00000000
push
dword
ecx
push
word
es
push
word
bx
push
word
0x0001
push
word
0x0010
mov
ah
,
0x42
mov
dl
,
[
BI_BOOTDEV
]
int
0x13
add
sp
,
0x10
ret
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录