├── .gitignore
├── .vscode
└── settings.json
├── Doxyfile
├── README.md
├── docs
├── DBR_8c.html
├── DBR_8c_source.html
├── FATMacro_8h.html
├── FATMacro_8h_source.html
├── FAT_8c.html
├── FAT_8c_source.html
├── annotated.html
├── bc_s.png
├── bdwn.png
├── bridge_8inc.html
├── bridge_8inc_source.html
├── classes.html
├── closed.png
├── ctype_8h.html
├── ctype_8h_source.html
├── custom__interupt_8c.html
├── custom__interupt_8c_source.html
├── datablock_8c.html
├── datablock_8c_source.html
├── dir_0d67bf078cf62967117ee9c52285b915.html
├── dir_54112a8488150e3990de75b133460d53.html
├── dir_5472b1451e88c23121d845fd740b5a4f.html
├── dir_6c5dbf78c9d877054db4c2f491f462f3.html
├── dir_8cc759ac4a20234241947ac00f66cf10.html
├── dir_b68035bc57a772d788e581835ca0fe7b.html
├── dir_cd52837ac89ed29db7a42090ce34ce6f.html
├── doc.png
├── doxygen.css
├── doxygen.png
├── dynsections.js
├── files.html
├── filesystem_8h.html
├── filesystem_8h_source.html
├── folderclosed.png
├── folderopen.png
├── fsErrorCode_8h.html
├── fsErrorCode_8h_source.html
├── fsapi_8h.html
├── fsapi_8h_source.html
├── fsutilities_8h.html
├── fsutilities_8h_source.html
├── functions.html
├── functions_vars.html
├── globals.html
├── globals_defs.html
├── globals_func.html
├── globals_type.html
├── globals_vars.html
├── graphic_8h.html
├── graphic_8h_source.html
├── group__FATItemState.html
├── group__file.html
├── group__fileMod.html
├── group__fileType.html
├── group__group__file__type.html
├── index.html
├── jquery.js
├── kbhit_8c.html
├── kbhit_8c_source.html
├── kernel_8c.html
├── kernel_8c_source.html
├── kernel_8h.html
├── kernel_8h_source.html
├── menu.js
├── menudata.js
├── modules.html
├── mystring_8c.html
├── mystring_8c_source.html
├── mystring_8h.html
├── mystring_8h_source.html
├── nav_f.png
├── nav_g.png
├── nav_h.png
├── open.png
├── search
│ ├── all_0.html
│ ├── all_0.js
│ ├── all_1.html
│ ├── all_1.js
│ ├── all_10.html
│ ├── all_10.js
│ ├── all_11.html
│ ├── all_11.js
│ ├── all_12.html
│ ├── all_12.js
│ ├── all_13.html
│ ├── all_13.js
│ ├── all_14.html
│ ├── all_14.js
│ ├── all_15.html
│ ├── all_15.js
│ ├── all_2.html
│ ├── all_2.js
│ ├── all_3.html
│ ├── all_3.js
│ ├── all_4.html
│ ├── all_4.js
│ ├── all_5.html
│ ├── all_5.js
│ ├── all_6.html
│ ├── all_6.js
│ ├── all_7.html
│ ├── all_7.js
│ ├── all_8.html
│ ├── all_8.js
│ ├── all_9.html
│ ├── all_9.js
│ ├── all_a.html
│ ├── all_a.js
│ ├── all_b.html
│ ├── all_b.js
│ ├── all_c.html
│ ├── all_c.js
│ ├── all_d.html
│ ├── all_d.js
│ ├── all_e.html
│ ├── all_e.js
│ ├── all_f.html
│ ├── all_f.js
│ ├── classes_0.html
│ ├── classes_0.js
│ ├── close.png
│ ├── defines_0.html
│ ├── defines_0.js
│ ├── defines_1.html
│ ├── defines_1.js
│ ├── defines_2.html
│ ├── defines_2.js
│ ├── defines_3.html
│ ├── defines_3.js
│ ├── defines_4.html
│ ├── defines_4.js
│ ├── defines_5.html
│ ├── defines_5.js
│ ├── defines_6.html
│ ├── defines_6.js
│ ├── defines_7.html
│ ├── defines_7.js
│ ├── defines_8.html
│ ├── defines_8.js
│ ├── defines_9.html
│ ├── defines_9.js
│ ├── defines_a.html
│ ├── defines_a.js
│ ├── defines_b.html
│ ├── defines_b.js
│ ├── defines_c.html
│ ├── defines_c.js
│ ├── defines_d.html
│ ├── defines_d.js
│ ├── defines_e.html
│ ├── defines_e.js
│ ├── files_0.html
│ ├── files_0.js
│ ├── files_1.html
│ ├── files_1.js
│ ├── files_2.html
│ ├── files_2.js
│ ├── files_3.html
│ ├── files_3.js
│ ├── files_4.html
│ ├── files_4.js
│ ├── files_5.html
│ ├── files_5.js
│ ├── files_6.html
│ ├── files_6.js
│ ├── files_7.html
│ ├── files_7.js
│ ├── files_8.html
│ ├── files_8.js
│ ├── files_9.html
│ ├── files_9.js
│ ├── functions_0.html
│ ├── functions_0.js
│ ├── functions_1.html
│ ├── functions_1.js
│ ├── functions_2.html
│ ├── functions_2.js
│ ├── functions_3.html
│ ├── functions_3.js
│ ├── functions_4.html
│ ├── functions_4.js
│ ├── functions_5.html
│ ├── functions_5.js
│ ├── functions_6.html
│ ├── functions_6.js
│ ├── functions_7.html
│ ├── functions_7.js
│ ├── functions_8.html
│ ├── functions_8.js
│ ├── functions_9.html
│ ├── functions_9.js
│ ├── functions_a.html
│ ├── functions_a.js
│ ├── functions_b.html
│ ├── functions_b.js
│ ├── functions_c.html
│ ├── functions_c.js
│ ├── functions_d.html
│ ├── functions_d.js
│ ├── functions_e.html
│ ├── functions_e.js
│ ├── functions_f.html
│ ├── functions_f.js
│ ├── groups_0.html
│ ├── groups_0.js
│ ├── mag_sel.png
│ ├── nomatches.html
│ ├── search.css
│ ├── search.js
│ ├── search_l.png
│ ├── search_m.png
│ ├── search_r.png
│ ├── searchdata.js
│ ├── typedefs_0.html
│ ├── typedefs_0.js
│ ├── variables_0.html
│ ├── variables_0.js
│ ├── variables_1.html
│ ├── variables_1.js
│ ├── variables_2.html
│ ├── variables_2.js
│ ├── variables_3.html
│ ├── variables_3.js
│ ├── variables_4.html
│ ├── variables_4.js
│ ├── variables_5.html
│ ├── variables_5.js
│ ├── variables_6.html
│ ├── variables_6.js
│ ├── variables_7.html
│ ├── variables_7.js
│ ├── variables_8.html
│ ├── variables_8.js
│ ├── variables_9.html
│ ├── variables_9.js
│ ├── variables_a.html
│ ├── variables_a.js
│ ├── variables_b.html
│ ├── variables_b.js
│ ├── variables_c.html
│ └── variables_c.js
├── splitbar.png
├── stdio_8h.html
├── stdio_8h_source.html
├── stone_8c.html
├── stone_8c_source.html
├── stone_8h.html
├── stone_8h_source.html
├── structFAT__ITEM-members.html
├── structFAT__ITEM.html
├── sync_off.png
├── sync_on.png
├── tab_a.png
├── tab_b.png
├── tab_h.png
├── tab_s.png
├── tabs.css
├── terminal_8c.html
├── terminal_8c_source.html
├── terminal_8h.html
├── terminal_8h_source.html
├── timeout_8c.html
├── timeout_8c_source.html
├── user_8c.html
├── user_8c_source.html
├── user_8h.html
├── user_8h_source.html
├── utilities_8h.html
└── utilities_8h_source.html
├── latex
└── 16337269_颜彬_实验五.tex
├── linux
├── .bochsrc
├── Makefile
├── README.md
├── boot
│ ├── Makefile
│ ├── boot.s
│ ├── head.s
│ └── setup.s
├── include
│ ├── asm
│ │ ├── io.h
│ │ ├── system.h
│ │ └── system.h.bac
│ ├── boot
│ │ └── pm.inc
│ ├── debug.h
│ ├── linux
│ │ ├── fork.h
│ │ ├── fs.h
│ │ ├── head.h
│ │ ├── mm.h
│ │ ├── sched.h
│ │ ├── semaphore.h
│ │ ├── signal.h
│ │ └── sys.h
│ ├── stdarg.h
│ └── string.h
├── init
│ ├── main.c
│ └── testscript.s
├── kernel
│ ├── Makefile
│ ├── asm.s
│ ├── printk.c
│ ├── printk.s
│ ├── sched.c
│ ├── semaphore.c
│ ├── system_call.s
│ ├── traps.c
│ └── vsprintf.c
├── lib
│ ├── Makefile
│ └── string.c
├── tools
│ ├── debug
│ ├── system
│ └── system.elf
└── unittest
│ └── unittest.c
├── protectmod
├── .bochsrc
├── Makefile
├── boot
│ ├── Makefile
│ ├── boot.o
│ ├── boot.s
│ ├── head.o
│ └── head.s
└── include
│ └── boot
│ └── pm.inc
├── report
├── 16337269_颜彬_实验五.tex
├── 16337269_颜彬_实验六.pdf
└── assets
│ ├── int_still_work.png
│ ├── kill_p.png
│ ├── mm.png
│ ├── mm_free.png
│ └── three_stone_S.png
├── step_0
├── README.md
├── a.img
├── boot.asm
├── build.sh
└── run.sh
├── step_1
├── README.md
├── section1
│ ├── .bochsrc
│ └── boot.com
├── section2
│ └── fill.asm
└── section3
│ ├── .bochsrc
│ ├── build.sh
│ ├── latex
│ ├── 16337269_颜彬_实验一.pdf
│ ├── 16337269_颜彬_实验一.tex
│ └── asset
│ │ ├── procedure.png
│ │ └── stone_run.png
│ ├── run.sh
│ └── stone.asm
├── step_2
├── .bochsrc
├── README.md
├── Utilities
│ ├── build.sh
│ ├── run.sh
│ └── utility.asm
├── build.sh
├── latex
│ ├── 16337269_颜彬_实验二.pdf
│ ├── 16337269_颜彬_实验二.tex
│ └── assets
│ │ ├── helloPage.png
│ │ ├── onePageRun.png
│ │ ├── overview.png
│ │ ├── program.png
│ │ └── sixPageRun.png
├── loader.asm
├── run.sh
└── userCodes
│ ├── .bochsrc
│ ├── build.sh
│ ├── run.sh
│ └── stone.asm
└── step_3
├── .bochsrc
├── .gitignore
├── Makefile
├── filesystem
├── API
│ ├── fsErrorCode.h
│ └── fsapi.h
├── DBR.asm
├── DBR.c
├── FAT.c
├── FATMacro.h
├── Makefile
├── README.md
├── datablock.c
├── filesystem.h
├── fsutilities.asm
└── fsutilities.h
├── include
├── Makefile
├── bridge.inc
├── ctype.h
├── graphic.h
├── kmm.c
├── kmm.h
├── mystring.c
├── mystring.h
├── stdio.h
├── utilities.asm
└── utilities.h
├── kernel
├── Makefile
├── PCB.h
├── PCBManager.c
├── clock_interupt_installer.asm
├── context_switch.inc
├── custom_interupt.c
├── global_custom_int_installer.asm
├── interupt_install.asm
├── kernel.c
├── kernel.h
└── timeout.c
├── loader
├── Makefile
└── loader.asm
└── user
├── Makefile
├── kb_interupt_installer.asm
├── kbhit.c
├── stone
├── stone.c
└── stone.h
├── terminal.c
├── terminal.h
├── user.c
└── user.h
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "latex-workshop.chktex.enabled": true,
3 | "latex-workshop.latex.toolchain": [
4 | {
5 | "command": "xelatex",
6 | "args": [
7 | "%DOC%"
8 | ]
9 | },
10 |
11 | {
12 | "command": "xelatex",
13 | "args": [
14 | "%DOC%"
15 | ]
16 | },
17 |
18 | // {
19 | // "command": "xelatex",
20 | // "args": [
21 | // "%DOC%"
22 | // ]
23 | // },
24 |
25 | // {
26 | // "command": "xelatex",
27 | // "args": [
28 | // "%DOC%"
29 | // ]
30 | // }
31 | ],
32 | "todohighlight.include": [
33 | "step_3/**/*",
34 | "latex/*.tex"
35 | ]
36 | }
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OperatingSystem
2 | 操作系统实验课课程项目,按照本学期操作系统课程的进度逐步完成。
3 | [点此查看实验六的实验报告(首次实现进程切换的实验)](https://github.com/YanB25/OperatingSystem/blob/master/report/16337269_%E9%A2%9C%E5%BD%AC_%E5%AE%9E%E9%AA%8C%E5%85%AD.pdf)
4 | ## 介绍
5 | 使用`git tag`和`git checkout`查看项目完成的各个阶段。
6 |
7 | `/step_0`到`/step_2`是一些demo代码,是建立起该OS的一些初步尝试。**后续所有代码都在`/step_3`上完成**
8 | `/linux`文件夹存放的是linux系统的早期版本的内核,用于学习用途
9 | `/protectmod`存放的是我试图进入保护模式完成实验的一些代码。这部分代码最终没有成功(无法完成进程切换)故暂时弃置了。
10 |
11 | 想要了解项目的具体情况,可以`git checkout`到具体的分支上(他们命名为`PM-EX*-*-Report`,其中`*`是通配符),并查看实验报告`/report/16337269_颜彬_实验*.pdf`
12 | ## 更新log(outdated,后续更新见实验报告)
13 | 1. [step three][4]
14 | C语言和汇编混合编程。
15 | linux下工具链:编译器gcc,连接器ld。
16 | 成功。
17 | 1. [step two][3]
18 | 操作系统的第二个demo项目。
19 | 主要内容为学习调用`bios`
20 | 1. [step one][1]
21 | 操作系统实验的第一个demo项目。
22 | 项目中的sectoin1和section2都是热身,其任务要求[见此][1]
23 | 任务3要求制作引导程序。引导程序要求可以在裸机上运行,且输出动画和个人信息。
24 | 1. [step zero][2]
25 | 操作系统的第"零"个项目
26 | 该项目中包含一个"样例程序",用来检测自己的环境是否搭配完成
27 | 该样例程序可以正确在裸机上运行。正确运行时,其输出Hello World
28 | ## How-to
29 | ### run
30 | 每个`step_3`内有一份`README.md`
31 | 请阅读相应的文件了解各次项目的实验目的和运行方式,或直接阅读 Makefile
32 | ## Enviroment and Tools
33 | - Ubuntu
34 | 本实验在 Ubuntu 16.04 环境下进行
35 | - nasm
36 | 编译 16/32 位`x86`汇编代码
37 | - bximage
38 | 用于产生`*.img`文件
39 | - bochs
40 | 用于调试运行
41 |
42 | [1]: /step_1/README.md
43 | [2]: /step_0/README.md
44 | [3]: /step_2/README.md
45 | [4]: /step_3/README.md
46 |
--------------------------------------------------------------------------------
/docs/bc_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/bc_s.png
--------------------------------------------------------------------------------
/docs/bdwn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/bdwn.png
--------------------------------------------------------------------------------
/docs/closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/closed.png
--------------------------------------------------------------------------------
/docs/doc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/doc.png
--------------------------------------------------------------------------------
/docs/doxygen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/doxygen.png
--------------------------------------------------------------------------------
/docs/folderclosed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/folderclosed.png
--------------------------------------------------------------------------------
/docs/folderopen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/folderopen.png
--------------------------------------------------------------------------------
/docs/nav_f.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/nav_f.png
--------------------------------------------------------------------------------
/docs/nav_g.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/nav_g.png
--------------------------------------------------------------------------------
/docs/nav_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/nav_h.png
--------------------------------------------------------------------------------
/docs/open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/open.png
--------------------------------------------------------------------------------
/docs/search/all_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['add',['add',['../utilities_8h.html#ae9e80f72ea764075aace5d65cebc1ced',1,'utilities.h']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/all_10.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_10.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['readkb',['readkb',['../utilities_8h.html#ae1f62902b54c95a1ade4f1efb5238671',1,'utilities.h']]],
4 | ['recent_5faccess_5fymd',['recent_access_ymd',['../structFAT__ITEM.html#a66c3299b6fba20f1fbd7d3207b057641',1,'FAT_ITEM::recent_access_ymd()'],['../FATMacro_8h.html#ac7712d222620362331436a3fdedd6750',1,'recent_access_ymd(): FATMacro.h']]],
5 | ['res',['res',['../structFAT__ITEM.html#a4816433ed3b998fa2a91ba1542274f65',1,'FAT_ITEM::res()'],['../FATMacro_8h.html#a29850f3918435f089b2e206b9da59936',1,'res(): FATMacro.h']]],
6 | ['reserved_5fsector',['RESERVED_SECTOR',['../filesystem_8h.html#a38ae6d97afaf6b396db299358275c8e8',1,'filesystem.h']]],
7 | ['resetterminal',['resetTerminal',['../terminal_8c.html#aca99b33c2628f81c32a097025cd99664',1,'terminal.c']]],
8 | ['root_5farea_5faddress',['ROOT_AREA_ADDRESS',['../filesystem_8h.html#abf8f6913254daf589e4c2d01a22721a0',1,'filesystem.h']]],
9 | ['root_5fentries',['ROOT_ENTRIES',['../filesystem_8h.html#af8d91b24ef1bd40fb1e409a60f525405',1,'filesystem.h']]],
10 | ['row',['row',['../kbhit_8c.html#acc38b28927bf55a0a8a775fb8425476e',1,'kbhit.c']]]
11 | ];
12 |
--------------------------------------------------------------------------------
/docs/search/all_11.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_12.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_12.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['terminal',['terminal',['../terminal_8c.html#af7e98df71ae4465e9f15b377a208a424',1,'terminal(): terminal.c'],['../terminal_8h.html#af7e98df71ae4465e9f15b377a208a424',1,'terminal(): terminal.c']]],
4 | ['terminal_2ec',['terminal.c',['../terminal_8c.html',1,'']]],
5 | ['terminal_2eh',['terminal.h',['../terminal_8h.html',1,'']]],
6 | ['terminal_5fstyle',['TERMINAL_STYLE',['../terminal_8c.html#a8a0239fd282c243f33f93f584f07e957',1,'terminal.c']]],
7 | ['timeout',['timeout',['../timeout_8c.html#ad446b5782bcb2d8ffc0aa1f8c4d16ded',1,'timeout.c']]],
8 | ['timeout_2ec',['timeout.c',['../timeout_8c.html',1,'']]],
9 | ['to_5fbg',['TO_BG',['../graphic_8h.html#afed11571754d6fe53c5b2f79e3fec46c',1,'graphic.h']]],
10 | ['to_5ffn',['TO_FN',['../graphic_8h.html#a9e40ea51a9709803fe739b1b0685cd4d',1,'graphic.h']]],
11 | ['to_5fstring',['TO_STRING',['../filesystem_8h.html#a2003019677c3c6a3c08c36206360dc74',1,'filesystem.h']]],
12 | ['true',['true',['../kernel_8c.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7',1,'kernel.c']]],
13 | ['type_5fdoc',['TYPE_DOC',['../group__fileType.html#ga99175dd632b9406722bab986f152d73f',1,'fsapi.h']]],
14 | ['type_5ffile',['TYPE_FILE',['../group__fileType.html#ga1c4b9a03f9d2107bf4c139bb00c7ec4c',1,'fsapi.h']]],
15 | ['type_5ffldr',['TYPE_FLDR',['../group__fileType.html#ga1efe38564b740d4fe6f8d609c4118a2a',1,'fsapi.h']]]
16 | ];
17 |
--------------------------------------------------------------------------------
/docs/search/all_13.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_13.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['user_2ec',['user.c',['../user_8c.html',1,'']]],
4 | ['user_2eh',['user.h',['../user_8h.html',1,'']]],
5 | ['user_5fprogram_5faddress',['USER_PROGRAM_ADDRESS',['../filesystem_8h.html#ae44946f8504b82263b27b7fac6b9e4d8',1,'filesystem.h']]],
6 | ['user_5fprograma',['user_programA',['../datablock_8c.html#a8d588936cc6f4bc277d53c1c657db43b',1,'datablock.c']]],
7 | ['user_5fprogramq',['user_programQ',['../datablock_8c.html#a1329f6048c8b09136d61817ef43e4171',1,'datablock.c']]],
8 | ['user_5fprograms',['user_programS',['../datablock_8c.html#ad90c19079fbfa90b6a2230edf0cb8622',1,'datablock.c']]],
9 | ['user_5fprogramw',['user_programW',['../datablock_8c.html#ab496dd13daa99bab7e7075cd9b3cdc48',1,'datablock.c']]],
10 | ['utilities_2eh',['utilities.h',['../utilities_8h.html',1,'']]]
11 | ];
12 |
--------------------------------------------------------------------------------
/docs/search/all_14.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_14.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['x',['x',['../timeout_8c.html#a6150e0515f7202e2fb518f7206ed97dc',1,'x(): timeout.c'],['../stone_8c.html#a6150e0515f7202e2fb518f7206ed97dc',1,'x(): stone.c']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/all_15.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_15.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['y',['y',['../timeout_8c.html#a0a2f84ed7838f07779ae24c5a9086d33',1,'y(): timeout.c'],['../stone_8c.html#a0a2f84ed7838f07779ae24c5a9086d33',1,'y(): stone.c']]],
4 | ['ymd',['ymd',['../structFAT__ITEM.html#a21bfe7f05e5b827057cd11aeaec4ec78',1,'FAT_ITEM::ymd()'],['../FATMacro_8h.html#af2610f141296d1a780edda8c43eed706',1,'ymd(): FATMacro.h']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/all_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['back_5fspace',['BACK_SPACE',['../terminal_8c.html#a7247a7911f0b8149deac401b46dac394',1,'terminal.c']]],
4 | ['bhigh_5fcluster',['bhigh_cluster',['../structFAT__ITEM.html#a828bbe194bb703dc4e6778b399d62718',1,'FAT_ITEM::bhigh_cluster()'],['../FATMacro_8h.html#aeffdd1e02844ff9fb0286e509949b884',1,'bhigh_cluster(): FATMacro.h']]],
5 | ['blow_5fcluster',['blow_cluster',['../structFAT__ITEM.html#a15cde220d34d3c7f0bb543bfcd93e585',1,'FAT_ITEM::blow_cluster()'],['../FATMacro_8h.html#a9504341f73c8b44395351cab4e83f35d',1,'blow_cluster(): FATMacro.h']]],
6 | ['bpb_5faddress',['BPB_ADDRESS',['../filesystem_8h.html#ad9aa7720352b30194a3ba7abff63b202',1,'filesystem.h']]],
7 | ['bridge_2einc',['bridge.inc',['../bridge_8inc.html',1,'']]],
8 | ['buffer_5fsize',['BUFFER_SIZE',['../terminal_8c.html#a6b20d41d6252e9871430c242cb1a56e7',1,'terminal.c']]],
9 | ['byte_5fper_5fsector',['BYTE_PER_SECTOR',['../filesystem_8h.html#a30367e8832bce4f727592ddc5913c223',1,'filesystem.h']]]
10 | ];
11 |
--------------------------------------------------------------------------------
/docs/search/all_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['callback',['callback',['../timeout_8c.html#a6a8cb702d8916519818b4b860d2218f6',1,'timeout.c']]],
4 | ['ch',['ch',['../timeout_8c.html#af53f92900705f7de3c139a05b2f9ef16',1,'timeout.c']]],
5 | ['checkbound',['checkBound',['../stone_8c.html#a3cb7fe2b57de556290df6af1ef7b1fd0',1,'stone.c']]],
6 | ['clear_5fscreen',['clear_screen',['../utilities_8h.html#a4953d1edcbbfc7e420c423ded1d5621a',1,'utilities.h']]],
7 | ['clock_5finstall_5finterupt',['clock_install_interupt',['../kernel_8c.html#a3669f1ea764b0a3567d54ba02f378241',1,'kernel.c']]],
8 | ['cmd_5fbuffer',['CMD_BUFFER',['../terminal_8c.html#adedde379808a21b727c4d25b410680de',1,'terminal.c']]],
9 | ['column',['column',['../kbhit_8c.html#a9762f8f1f3d75d55778f6fae1059f933',1,'kbhit.c']]],
10 | ['created_5ftime',['created_time',['../structFAT__ITEM.html#aa1e50ceb385144ed80de396adf66b919',1,'FAT_ITEM::created_time()'],['../FATMacro_8h.html#ad7c006bb83e1d2cf39a654e1bda73bcf',1,'created_time(): FATMacro.h']]],
11 | ['ctype_2eh',['ctype.h',['../ctype_8h.html',1,'']]],
12 | ['cur_5fdir',['CUR_DIR',['../terminal_8c.html#a0eb453072d746176ccfe15c483db768d',1,'terminal.c']]],
13 | ['custom_5finterupt_2ec',['custom_interupt.c',['../custom__interupt_8c.html',1,'']]]
14 | ];
15 |
--------------------------------------------------------------------------------
/docs/search/all_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['err_5fnot_5ffound',['ERR_NOT_FOUND',['../fsapi_8h.html#a47744541258a26adfce215564d8d05f4',1,'fsErrorCode.h']]],
4 | ['err_5fsys_5fprotc',['ERR_SYS_PROTC',['../fsErrorCode_8h.html#a759d73978a17aea3c676b7a717a8faee',1,'fsErrorCode.h']]],
5 | ['err_5ftype_5fdoc',['ERR_TYPE_DOC',['../fsErrorCode_8h.html#a0bc7dbfb6a623226dde9fae4c6267631',1,'fsErrorCode.h']]],
6 | ['err_5ftype_5ffldr',['ERR_TYPE_FLDR',['../fsErrorCode_8h.html#afd648b641f3e90a8aa2e5005a5d86c00',1,'fsErrorCode.h']]],
7 | ['error_5fflags',['error_flags',['../datablock_8c.html#a53a8d36e3b69c6378227a42269a8bb56',1,'datablock.c']]],
8 | ['evenflag',['evenFlag',['../kbhit_8c.html#ab2f3dce2fc559e57fa88f8fc945dc254',1,'kbhit.c']]],
9 | ['extendname',['extendname',['../structFAT__ITEM.html#aa5f0086f0da974014236005a0ff3b4c8',1,'FAT_ITEM::extendname()'],['../FATMacro_8h.html#a276d151d5c4bc39c2ae6c7143beab46e',1,'extendname(): FATMacro.h']]]
10 | ];
11 |
--------------------------------------------------------------------------------
/docs/search/all_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['hello_5fhybrid_5fprogramming',['hello_hybrid_programming',['../utilities_8h.html#aba7e39f892c5263f63ec221bf78b3f09',1,'utilities.h']]],
4 | ['help_5fmsg',['HELP_MSG',['../terminal_8c.html#ae163198bf08f6e5245ca18c680b49b9f',1,'terminal.c']]],
5 | ['hidden_5fsector',['HIDDEN_SECTOR',['../filesystem_8h.html#adcbb8fca10393e998613d4d814f6c084',1,'filesystem.h']]],
6 | ['hms',['hms',['../structFAT__ITEM.html#a171be3c11a7490776f6ca0ac99126fb5',1,'FAT_ITEM::hms()'],['../FATMacro_8h.html#a384f285853fa2d8b52f3eb72cf9fc9ab',1,'hms(): FATMacro.h']]],
7 | ['home_5fdir',['home_dir',['../datablock_8c.html#ad4a5f5d0fcd40211e708b9f31ea8ee2b',1,'datablock.c']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/search/all_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['isalnum',['isalnum',['../ctype_8h.html#a8bcec0ef45b247be417aa72efb935594',1,'ctype.h']]],
4 | ['isalpha',['isalpha',['../ctype_8h.html#a883af429ff1e512612c748491098fc8b',1,'ctype.h']]],
5 | ['isdigit',['isdigit',['../ctype_8h.html#afac4eb5bfd9f2e857c4db67bda044cc1',1,'ctype.h']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/all_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['jumptouser',['jumpToUser',['../user_8c.html#a5f9b1df8b310315a976056c2b45b040e',1,'jumpToUser(): user.c'],['../user_8h.html#a5f9b1df8b310315a976056c2b45b040e',1,'jumpToUser(): user.c']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/all_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['kb_5fcustom_5finterupt',['kb_custom_interupt',['../kbhit_8c.html#aab70d857c1054a14887b95f8ec3c7bef',1,'kbhit.c']]],
4 | ['kb_5finterupt_5finstall',['kb_interupt_install',['../terminal_8c.html#a6fc4984e92d904f14a49fa490ef6e912',1,'terminal.c']]],
5 | ['kb_5finterupt_5funinstall',['kb_interupt_uninstall',['../terminal_8c.html#acb6088d7aee6bfb31757d714c60be99c',1,'terminal.c']]],
6 | ['kbhit',['kbhit',['../utilities_8h.html#ad5451da499ab9d3907da8dd7060ab677',1,'utilities.h']]],
7 | ['kbhit_2ec',['kbhit.c',['../kbhit_8c.html',1,'']]],
8 | ['kernel_2ec',['kernel.c',['../kernel_8c.html',1,'']]],
9 | ['kernel_2eh',['kernel.h',['../kernel_8h.html',1,'']]],
10 | ['kernel_5faddress',['KERNEL_ADDRESS',['../filesystem_8h.html#a6f867ea06f8f2e2170af9b7302a13163',1,'filesystem.h']]],
11 | ['kernel_5fbin',['kernel_bin',['../datablock_8c.html#a26decea6b3f1cfd1d5834d6c408cf208',1,'datablock.c']]]
12 | ];
13 |
--------------------------------------------------------------------------------
/docs/search/all_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['lgsector2head',['lgsector2head',['../fsutilities_8h.html#a351ceaca1f9e9bcab6e69a440a3b77aa',1,'fsutilities.h']]],
4 | ['lgsector2sector',['lgsector2sector',['../fsutilities_8h.html#ac4b5d82ee350769eafe817b579427007',1,'fsutilities.h']]],
5 | ['lgsector2track',['lgsector2track',['../fsutilities_8h.html#ad77303c50bb1269e264331a9708fd2ff',1,'fsutilities.h']]],
6 | ['loadlogicsector',['loadLogicSector',['../fsutilities_8h.html#a829cfbd6904cdede14f94784bf7d7909',1,'fsutilities.h']]],
7 | ['loadsector',['loadSector',['../fsutilities_8h.html#a35c1a257e21e91115e97730a5cabeb2b',1,'fsutilities.h']]],
8 | ['low_5f8_5fmask',['LOW_8_MASK',['../terminal_8c.html#a0c49f1f971dfbc855a96f943a40cb4e8',1,'terminal.c']]]
9 | ];
10 |
--------------------------------------------------------------------------------
/docs/search/all_d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_d.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['main',['main',['../kernel_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'kernel.c']]],
4 | ['media_5ftype',['media_type',['../datablock_8c.html#a97c8e0392164cb1101ed6dded9742181',1,'datablock.c']]],
5 | ['memcpy',['memcpy',['../mystring_8c.html#aeedb41f7f8d6e2f902409d7b78deb472',1,'mystring.c']]],
6 | ['mod',['mod',['../structFAT__ITEM.html#a9e45d6c4a9a76b778986930c31fb7dc0',1,'FAT_ITEM::mod()'],['../FATMacro_8h.html#a7e6d6c4ffa3ecb61cde728e16c91deee',1,'mod(): FATMacro.h']]],
7 | ['modify_5fhms',['modify_hms',['../structFAT__ITEM.html#a56a6b36d2eec2a382d8caf043395cd41',1,'FAT_ITEM::modify_hms()'],['../FATMacro_8h.html#a7c98939955a71d8798f82c6a6f50e0ac',1,'modify_hms(): FATMacro.h']]],
8 | ['modify_5fymd',['modify_ymd',['../structFAT__ITEM.html#a71f17662b58e2bc02d7d97c7e23bd23d',1,'FAT_ITEM::modify_ymd()'],['../FATMacro_8h.html#a74bc7e8dc7419dc1583d60b180fe3d44',1,'modify_ymd(): FATMacro.h']]],
9 | ['msg',['msg',['../datablock_8c.html#abe7a9e754e1b30af24d61bb908ab1ca8',1,'datablock.c']]],
10 | ['mystring_2ec',['mystring.c',['../mystring_8c.html',1,'']]],
11 | ['mystring_2eh',['mystring.h',['../mystring_8h.html',1,'']]]
12 | ];
13 |
--------------------------------------------------------------------------------
/docs/search/all_e.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_e.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['newline',['newline',['../stdio_8h.html#a4dbf8fb6d5f10005890232f1134c8bfd',1,'stdio.h']]],
4 | ['nextalphabet',['nextAlphabet',['../timeout_8c.html#a652dd5d7fb59e47a23a056f913ca74ff',1,'timeout.c']]],
5 | ['no_5ferr',['NO_ERR',['../fsErrorCode_8h.html#a0ac74b7a179f050bce712dac77d0c6b4',1,'fsErrorCode.h']]],
6 | ['number_5fof_5ffat',['NUMBER_OF_FAT',['../filesystem_8h.html#a31d6a061dce3dd8706cae22c281e3ece',1,'filesystem.h']]],
7 | ['number_5fof_5fhead',['NUMBER_OF_HEAD',['../filesystem_8h.html#a459511c4d17f338939c7282428a50846',1,'filesystem.h']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/search/all_f.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/all_f.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['padding',['padding',['../stdio_8h.html#a0d5027dbb6ea79f6609f03d408eeb786',1,'stdio.h']]],
4 | ['parsecmd',['parseCMD',['../terminal_8c.html#ac86c2518b13bf57f46a14bd44c719767',1,'terminal.c']]],
5 | ['printf',['printf',['../stdio_8h.html#a23d2d9d5699f88839da97ec2718d7af7',1,'stdio.h']]],
6 | ['promt',['PROMT',['../terminal_8c.html#aac1b9baca390a3e52fec87d235941c91',1,'terminal.c']]],
7 | ['putch',['putch',['../stdio_8h.html#a81ec9828355c08c02542e9fd66165c13',1,'stdio.h']]],
8 | ['putch_5fstyle',['putch_style',['../stdio_8h.html#a92d5182fc0f2fdaf4892ff7077f1575c',1,'stdio.h']]],
9 | ['puti',['puti',['../stdio_8h.html#ae3bac739978f11002e3646cd20940ee8',1,'stdio.h']]],
10 | ['putiln',['putiln',['../stdio_8h.html#a152efb1974f3df553ccd2e376f6e7641',1,'stdio.h']]],
11 | ['putln',['putln',['../stdio_8h.html#af3eb504bdd17cc3904e4610ba6214ec5',1,'stdio.h']]],
12 | ['putn',['putn',['../stdio_8h.html#a26a7b3f23b22d25097878dda81c114a8',1,'stdio.h']]],
13 | ['puts',['puts',['../stdio_8h.html#ad51e22925bd6ef7184be7e3195c77f2d',1,'stdio.h']]],
14 | ['puts_5fstyle',['puts_style',['../stdio_8h.html#a932d958d3d390921ed2f76fe1ba4fe05',1,'stdio.h']]]
15 | ];
16 |
--------------------------------------------------------------------------------
/docs/search/classes_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/classes_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['fat_5fitem',['FAT_ITEM',['../structFAT__ITEM.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/search/close.png
--------------------------------------------------------------------------------
/docs/search/defines_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['_5f_5fg_5fb',['__G_B',['../graphic_8h.html#aab47c7f4a89680564bf1aca3d54da493',1,'graphic.h']]],
4 | ['_5f_5fg_5fg',['__G_G',['../graphic_8h.html#a9533e2f2d07078f8f0c653712797bdeb',1,'graphic.h']]],
5 | ['_5f_5fg_5fr',['__G_R',['../graphic_8h.html#ac9ad39dd74dfd1515c8907d0c484f757',1,'graphic.h']]],
6 | ['_5fto_5fstring',['_TO_STRING',['../filesystem_8h.html#a6b37d561928a4f3559d1b5dfde9dacea',1,'filesystem.h']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/defines_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['back_5fspace',['BACK_SPACE',['../terminal_8c.html#a7247a7911f0b8149deac401b46dac394',1,'terminal.c']]],
4 | ['bpb_5faddress',['BPB_ADDRESS',['../filesystem_8h.html#ad9aa7720352b30194a3ba7abff63b202',1,'filesystem.h']]],
5 | ['buffer_5fsize',['BUFFER_SIZE',['../terminal_8c.html#a6b20d41d6252e9871430c242cb1a56e7',1,'terminal.c']]],
6 | ['byte_5fper_5fsector',['BYTE_PER_SECTOR',['../filesystem_8h.html#a30367e8832bce4f727592ddc5913c223',1,'filesystem.h']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/defines_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['data_5fblock_5faddress',['DATA_BLOCK_ADDRESS',['../filesystem_8h.html#a854dd48da7058c5913bb05ddebe9dbe3',1,'filesystem.h']]],
4 | ['default_5fstyle',['DEFAULT_STYLE',['../stdio_8h.html#ad0f737d6f892e9d7a566ab5602690c82',1,'stdio.h']]],
5 | ['default_5fstyle_5fdark',['DEFAULT_STYLE_DARK',['../stdio_8h.html#aa7ca098167c85ed8a604f2405c5dd0f7',1,'stdio.h']]],
6 | ['delay',['DELAY',['../timeout_8c.html#a62249e384b997229a3e2ae74ade334e2',1,'DELAY(): timeout.c'],['../stone_8c.html#a62249e384b997229a3e2ae74ade334e2',1,'DELAY(): stone.c']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/defines_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['err_5fnot_5ffound',['ERR_NOT_FOUND',['../fsapi_8h.html#a47744541258a26adfce215564d8d05f4',1,'fsErrorCode.h']]],
4 | ['err_5fsys_5fprotc',['ERR_SYS_PROTC',['../fsErrorCode_8h.html#a759d73978a17aea3c676b7a717a8faee',1,'fsErrorCode.h']]],
5 | ['err_5ftype_5fdoc',['ERR_TYPE_DOC',['../fsErrorCode_8h.html#a0bc7dbfb6a623226dde9fae4c6267631',1,'fsErrorCode.h']]],
6 | ['err_5ftype_5ffldr',['ERR_TYPE_FLDR',['../fsErrorCode_8h.html#afd648b641f3e90a8aa2e5005a5d86c00',1,'fsErrorCode.h']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/defines_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['false',['false',['../kernel_8c.html#a65e9886d74aaee76545e83dd09011727',1,'kernel.c']]],
4 | ['fat_5ftable_5faddress',['FAT_TABLE_ADDRESS',['../filesystem_8h.html#a8968104a702bebb4db8ddda1eb81980a',1,'filesystem.h']]],
5 | ['filesize2sectors',['filesize2sectors',['../fsutilities_8h.html#afada56f7987eca2d244486767e70aaae',1,'fsutilities.h']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/defines_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['help_5fmsg',['HELP_MSG',['../terminal_8c.html#ae163198bf08f6e5245ca18c680b49b9f',1,'terminal.c']]],
4 | ['hidden_5fsector',['HIDDEN_SECTOR',['../filesystem_8h.html#adcbb8fca10393e998613d4d814f6c084',1,'filesystem.h']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/defines_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['kernel_5faddress',['KERNEL_ADDRESS',['../filesystem_8h.html#a6f867ea06f8f2e2170af9b7302a13163',1,'filesystem.h']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/defines_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['lgsector2head',['lgsector2head',['../fsutilities_8h.html#a351ceaca1f9e9bcab6e69a440a3b77aa',1,'fsutilities.h']]],
4 | ['lgsector2sector',['lgsector2sector',['../fsutilities_8h.html#ac4b5d82ee350769eafe817b579427007',1,'fsutilities.h']]],
5 | ['lgsector2track',['lgsector2track',['../fsutilities_8h.html#ad77303c50bb1269e264331a9708fd2ff',1,'fsutilities.h']]],
6 | ['low_5f8_5fmask',['LOW_8_MASK',['../terminal_8c.html#a0c49f1f971dfbc855a96f943a40cb4e8',1,'terminal.c']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/defines_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['no_5ferr',['NO_ERR',['../fsErrorCode_8h.html#a0ac74b7a179f050bce712dac77d0c6b4',1,'fsErrorCode.h']]],
4 | ['number_5fof_5ffat',['NUMBER_OF_FAT',['../filesystem_8h.html#a31d6a061dce3dd8706cae22c281e3ece',1,'filesystem.h']]],
5 | ['number_5fof_5fhead',['NUMBER_OF_HEAD',['../filesystem_8h.html#a459511c4d17f338939c7282428a50846',1,'filesystem.h']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/defines_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['promt',['PROMT',['../terminal_8c.html#aac1b9baca390a3e52fec87d235941c91',1,'terminal.c']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/defines_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['reserved_5fsector',['RESERVED_SECTOR',['../filesystem_8h.html#a38ae6d97afaf6b396db299358275c8e8',1,'filesystem.h']]],
4 | ['root_5farea_5faddress',['ROOT_AREA_ADDRESS',['../filesystem_8h.html#abf8f6913254daf589e4c2d01a22721a0',1,'filesystem.h']]],
5 | ['root_5fentries',['ROOT_ENTRIES',['../filesystem_8h.html#af8d91b24ef1bd40fb1e409a60f525405',1,'filesystem.h']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/defines_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['sector_5fper_5fcluster',['SECTOR_PER_CLUSTER',['../filesystem_8h.html#aca148839c0d0d711a1f2d7475e98c033',1,'filesystem.h']]],
4 | ['sector_5fper_5ffat',['SECTOR_PER_FAT',['../filesystem_8h.html#a9ca69b6704f2332a8fe3c128774b3e67',1,'filesystem.h']]],
5 | ['sector_5fper_5ftrack',['SECTOR_PER_TRACK',['../filesystem_8h.html#a74e60043d8d8de1e047c08e9d27587e3',1,'filesystem.h']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/defines_d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_d.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['terminal_5fstyle',['TERMINAL_STYLE',['../terminal_8c.html#a8a0239fd282c243f33f93f584f07e957',1,'terminal.c']]],
4 | ['to_5fbg',['TO_BG',['../graphic_8h.html#afed11571754d6fe53c5b2f79e3fec46c',1,'graphic.h']]],
5 | ['to_5ffn',['TO_FN',['../graphic_8h.html#a9e40ea51a9709803fe739b1b0685cd4d',1,'graphic.h']]],
6 | ['to_5fstring',['TO_STRING',['../filesystem_8h.html#a2003019677c3c6a3c08c36206360dc74',1,'filesystem.h']]],
7 | ['true',['true',['../kernel_8c.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7',1,'kernel.c']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/search/defines_e.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/defines_e.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['user_5fprogram_5faddress',['USER_PROGRAM_ADDRESS',['../filesystem_8h.html#ae44946f8504b82263b27b7fac6b9e4d8',1,'filesystem.h']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/files_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['bridge_2einc',['bridge.inc',['../bridge_8inc.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/files_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['ctype_2eh',['ctype.h',['../ctype_8h.html',1,'']]],
4 | ['custom_5finterupt_2ec',['custom_interupt.c',['../custom__interupt_8c.html',1,'']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/files_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['datablock_2ec',['datablock.c',['../datablock_8c.html',1,'']]],
4 | ['dbr_2ec',['DBR.c',['../DBR_8c.html',1,'']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/files_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['fat_2ec',['FAT.c',['../FAT_8c.html',1,'']]],
4 | ['fatmacro_2eh',['FATMacro.h',['../FATMacro_8h.html',1,'']]],
5 | ['filesystem_2eh',['filesystem.h',['../filesystem_8h.html',1,'']]],
6 | ['fsapi_2eh',['fsapi.h',['../fsapi_8h.html',1,'']]],
7 | ['fserrorcode_2eh',['fsErrorCode.h',['../fsErrorCode_8h.html',1,'']]],
8 | ['fsutilities_2eh',['fsutilities.h',['../fsutilities_8h.html',1,'']]]
9 | ];
10 |
--------------------------------------------------------------------------------
/docs/search/files_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['graphic_2eh',['graphic.h',['../graphic_8h.html',1,'']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/files_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['kbhit_2ec',['kbhit.c',['../kbhit_8c.html',1,'']]],
4 | ['kernel_2ec',['kernel.c',['../kernel_8c.html',1,'']]],
5 | ['kernel_2eh',['kernel.h',['../kernel_8h.html',1,'']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/files_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['mystring_2ec',['mystring.c',['../mystring_8c.html',1,'']]],
4 | ['mystring_2eh',['mystring.h',['../mystring_8h.html',1,'']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/files_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['stdio_2eh',['stdio.h',['../stdio_8h.html',1,'']]],
4 | ['stone_2ec',['stone.c',['../stone_8c.html',1,'']]],
5 | ['stone_2eh',['stone.h',['../stone_8h.html',1,'']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/files_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['terminal_2ec',['terminal.c',['../terminal_8c.html',1,'']]],
4 | ['terminal_2eh',['terminal.h',['../terminal_8h.html',1,'']]],
5 | ['timeout_2ec',['timeout.c',['../timeout_8c.html',1,'']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/files_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/files_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['user_2ec',['user.c',['../user_8c.html',1,'']]],
4 | ['user_2eh',['user.h',['../user_8h.html',1,'']]],
5 | ['utilities_2eh',['utilities.h',['../utilities_8h.html',1,'']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/functions_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['add',['add',['../utilities_8h.html#ae9e80f72ea764075aace5d65cebc1ced',1,'utilities.h']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/functions_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['callback',['callback',['../timeout_8c.html#a6a8cb702d8916519818b4b860d2218f6',1,'timeout.c']]],
4 | ['checkbound',['checkBound',['../stone_8c.html#a3cb7fe2b57de556290df6af1ef7b1fd0',1,'stone.c']]],
5 | ['clear_5fscreen',['clear_screen',['../utilities_8h.html#a4953d1edcbbfc7e420c423ded1d5621a',1,'utilities.h']]],
6 | ['clock_5finstall_5finterupt',['clock_install_interupt',['../kernel_8c.html#a3669f1ea764b0a3567d54ba02f378241',1,'kernel.c']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/functions_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['dbrkernelloader',['DBRkernelLoader',['../DBR_8c.html#a482f186c21f76a08955c0ce233a5e822',1,'DBR.c']]],
4 | ['draw_5fchar_5fstyle',['draw_char_style',['../stdio_8h.html#a873330922045639f213b67529213947a',1,'stdio.h']]],
5 | ['draw_5fmy_5finfo',['draw_my_info',['../custom__interupt_8c.html#aaf4710d9e44c73ac7b597880692c3ce8',1,'custom_interupt.c']]],
6 | ['draw_5fstr',['draw_str',['../stdio_8h.html#a57cdab7349dbc2740c0b2cf737cfa1e9',1,'stdio.h']]],
7 | ['draw_5fstr_5fstyle',['draw_str_style',['../stdio_8h.html#a82c747b74ae1660df433780dd9740289',1,'stdio.h']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/search/functions_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['get_5fcursor',['get_cursor',['../utilities_8h.html#aa97cd4e969256b6ec80bcec9e6b90432',1,'utilities.h']]],
4 | ['getch',['getch',['../stdio_8h.html#aca8ac8de5202a8aa092f29c97b845fd4',1,'stdio.h']]],
5 | ['getkbhit',['getKbHit',['../stone_8c.html#a0334df10b7b2b9ff1e258b104ed562a0',1,'stone.c']]],
6 | ['global_5fcustom_5fint_5finstall',['global_custom_int_install',['../kernel_8c.html#a2c3b8bd76c0b69e14fb50ecc908140ca',1,'kernel.c']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/functions_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['hello_5fhybrid_5fprogramming',['hello_hybrid_programming',['../utilities_8h.html#aba7e39f892c5263f63ec221bf78b3f09',1,'utilities.h']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/functions_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['isalnum',['isalnum',['../ctype_8h.html#a8bcec0ef45b247be417aa72efb935594',1,'ctype.h']]],
4 | ['isalpha',['isalpha',['../ctype_8h.html#a883af429ff1e512612c748491098fc8b',1,'ctype.h']]],
5 | ['isdigit',['isdigit',['../ctype_8h.html#afac4eb5bfd9f2e857c4db67bda044cc1',1,'ctype.h']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/functions_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['jumptouser',['jumpToUser',['../user_8c.html#a5f9b1df8b310315a976056c2b45b040e',1,'jumpToUser(): user.c'],['../user_8h.html#a5f9b1df8b310315a976056c2b45b040e',1,'jumpToUser(): user.c']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/functions_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['kb_5fcustom_5finterupt',['kb_custom_interupt',['../kbhit_8c.html#aab70d857c1054a14887b95f8ec3c7bef',1,'kbhit.c']]],
4 | ['kb_5finterupt_5finstall',['kb_interupt_install',['../terminal_8c.html#a6fc4984e92d904f14a49fa490ef6e912',1,'terminal.c']]],
5 | ['kb_5finterupt_5funinstall',['kb_interupt_uninstall',['../terminal_8c.html#acb6088d7aee6bfb31757d714c60be99c',1,'terminal.c']]],
6 | ['kbhit',['kbhit',['../utilities_8h.html#ad5451da499ab9d3907da8dd7060ab677',1,'utilities.h']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/functions_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['loadlogicsector',['loadLogicSector',['../fsutilities_8h.html#a829cfbd6904cdede14f94784bf7d7909',1,'fsutilities.h']]],
4 | ['loadsector',['loadSector',['../fsutilities_8h.html#a35c1a257e21e91115e97730a5cabeb2b',1,'fsutilities.h']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/functions_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['main',['main',['../kernel_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'kernel.c']]],
4 | ['memcpy',['memcpy',['../mystring_8c.html#aeedb41f7f8d6e2f902409d7b78deb472',1,'mystring.c']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/functions_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['newline',['newline',['../stdio_8h.html#a4dbf8fb6d5f10005890232f1134c8bfd',1,'stdio.h']]],
4 | ['nextalphabet',['nextAlphabet',['../timeout_8c.html#a652dd5d7fb59e47a23a056f913ca74ff',1,'timeout.c']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/functions_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['padding',['padding',['../stdio_8h.html#a0d5027dbb6ea79f6609f03d408eeb786',1,'stdio.h']]],
4 | ['parsecmd',['parseCMD',['../terminal_8c.html#ac86c2518b13bf57f46a14bd44c719767',1,'terminal.c']]],
5 | ['printf',['printf',['../stdio_8h.html#a23d2d9d5699f88839da97ec2718d7af7',1,'stdio.h']]],
6 | ['putch',['putch',['../stdio_8h.html#a81ec9828355c08c02542e9fd66165c13',1,'stdio.h']]],
7 | ['putch_5fstyle',['putch_style',['../stdio_8h.html#a92d5182fc0f2fdaf4892ff7077f1575c',1,'stdio.h']]],
8 | ['puti',['puti',['../stdio_8h.html#ae3bac739978f11002e3646cd20940ee8',1,'stdio.h']]],
9 | ['putiln',['putiln',['../stdio_8h.html#a152efb1974f3df553ccd2e376f6e7641',1,'stdio.h']]],
10 | ['putln',['putln',['../stdio_8h.html#af3eb504bdd17cc3904e4610ba6214ec5',1,'stdio.h']]],
11 | ['putn',['putn',['../stdio_8h.html#a26a7b3f23b22d25097878dda81c114a8',1,'stdio.h']]],
12 | ['puts',['puts',['../stdio_8h.html#ad51e22925bd6ef7184be7e3195c77f2d',1,'stdio.h']]],
13 | ['puts_5fstyle',['puts_style',['../stdio_8h.html#a932d958d3d390921ed2f76fe1ba4fe05',1,'stdio.h']]]
14 | ];
15 |
--------------------------------------------------------------------------------
/docs/search/functions_d.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_d.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['readkb',['readkb',['../utilities_8h.html#ae1f62902b54c95a1ade4f1efb5238671',1,'utilities.h']]],
4 | ['resetterminal',['resetTerminal',['../terminal_8c.html#aca99b33c2628f81c32a097025cd99664',1,'terminal.c']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/functions_e.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_e.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['scroll_5fup_5fone_5fline',['scroll_up_one_line',['../utilities_8h.html#a81096a58339734f344bdb34e6082a599',1,'utilities.h']]],
4 | ['set_5fcursor',['set_cursor',['../utilities_8h.html#a93609c4269b97a09d9666c9f3432f4af',1,'utilities.h']]],
5 | ['stone',['stone',['../stone_8c.html#a540b94e7c007b61967aeffb9add1b3b2',1,'stone.c']]],
6 | ['strchr',['strchr',['../mystring_8h.html#a8808c2e9690d22c5f3415529334ffa16',1,'mystring.h']]],
7 | ['strcmp',['strcmp',['../mystring_8c.html#a32b497b12670b9b7eb7750351e6bfcad',1,'strcmp(const char *lhs, const char *rhs): mystring.c'],['../mystring_8h.html#a21e4788b4a0ae39b11aa32e9a1079f98',1,'strcmp(const char *, const char *): mystring.c']]],
8 | ['strlen',['strlen',['../mystring_8h.html#aae92efea7aa0a8626e3470b50ebca296',1,'mystring.h']]],
9 | ['strstr',['strstr',['../mystring_8h.html#a9d2b897d512c3ca3fe82b7ee3c689fe5',1,'mystring.h']]],
10 | ['sum',['sum',['../user_8c.html#a6881d7cf777449bc2547023a0aed03b7',1,'sum(int end): user.c'],['../user_8h.html#ae5ed002269f3aaa8d667dc87937c5a6a',1,'sum(int): user.c']]]
11 | ];
12 |
--------------------------------------------------------------------------------
/docs/search/functions_f.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/functions_f.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['terminal',['terminal',['../terminal_8c.html#af7e98df71ae4465e9f15b377a208a424',1,'terminal(): terminal.c'],['../terminal_8h.html#af7e98df71ae4465e9f15b377a208a424',1,'terminal(): terminal.c']]],
4 | ['timeout',['timeout',['../timeout_8c.html#ad446b5782bcb2d8ffc0aa1f8c4d16ded',1,'timeout.c']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/groups_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/groups_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['fatitemstate',['FATItemState',['../group__FATItemState.html',1,'']]],
4 | ['filemod',['FileMod',['../group__fileMod.html',1,'']]],
5 | ['filetype',['FileType',['../group__fileType.html',1,'']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/mag_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/search/mag_sel.png
--------------------------------------------------------------------------------
/docs/search/nomatches.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/docs/search/search_l.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/search/search_l.png
--------------------------------------------------------------------------------
/docs/search/search_m.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/search/search_m.png
--------------------------------------------------------------------------------
/docs/search/search_r.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/search/search_r.png
--------------------------------------------------------------------------------
/docs/search/searchdata.js:
--------------------------------------------------------------------------------
1 | var indexSectionsWithContent =
2 | {
3 | 0: "_abcdefghijklmnprstuxy",
4 | 1: "f",
5 | 2: "bcdfgkmstu",
6 | 3: "_acdghijklmnprst",
7 | 4: "bcdefhkmrsuxy",
8 | 5: "f",
9 | 6: "_bdefghklnprstu",
10 | 7: "f"
11 | };
12 |
13 | var indexSectionNames =
14 | {
15 | 0: "all",
16 | 1: "classes",
17 | 2: "files",
18 | 3: "functions",
19 | 4: "variables",
20 | 5: "typedefs",
21 | 6: "defines",
22 | 7: "groups"
23 | };
24 |
25 | var indexSectionLabels =
26 | {
27 | 0: "All",
28 | 1: "Classes",
29 | 2: "Files",
30 | 3: "Functions",
31 | 4: "Variables",
32 | 5: "Typedefs",
33 | 6: "Macros",
34 | 7: "Modules"
35 | };
36 |
37 |
--------------------------------------------------------------------------------
/docs/search/typedefs_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/typedefs_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['fat_5fitem',['FAT_ITEM',['../FATMacro_8h.html#a30ca17a2d1e095eca8836b26c7ca0025',1,'FATMacro.h']]],
4 | ['fat_5fitem_5ft',['FAT_ITEM_T',['../FATMacro_8h.html#aabf0f6df73d0a21cea512d484c0d6ae2',1,'FATMacro.h']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/variables_0.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_0.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['bhigh_5fcluster',['bhigh_cluster',['../structFAT__ITEM.html#a828bbe194bb703dc4e6778b399d62718',1,'FAT_ITEM::bhigh_cluster()'],['../FATMacro_8h.html#aeffdd1e02844ff9fb0286e509949b884',1,'bhigh_cluster(): FATMacro.h']]],
4 | ['blow_5fcluster',['blow_cluster',['../structFAT__ITEM.html#a15cde220d34d3c7f0bb543bfcd93e585',1,'FAT_ITEM::blow_cluster()'],['../FATMacro_8h.html#a9504341f73c8b44395351cab4e83f35d',1,'blow_cluster(): FATMacro.h']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/variables_1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_1.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['ch',['ch',['../timeout_8c.html#af53f92900705f7de3c139a05b2f9ef16',1,'timeout.c']]],
4 | ['cmd_5fbuffer',['CMD_BUFFER',['../terminal_8c.html#adedde379808a21b727c4d25b410680de',1,'terminal.c']]],
5 | ['column',['column',['../kbhit_8c.html#a9762f8f1f3d75d55778f6fae1059f933',1,'kbhit.c']]],
6 | ['created_5ftime',['created_time',['../structFAT__ITEM.html#aa1e50ceb385144ed80de396adf66b919',1,'FAT_ITEM::created_time()'],['../FATMacro_8h.html#ad7c006bb83e1d2cf39a654e1bda73bcf',1,'created_time(): FATMacro.h']]],
7 | ['cur_5fdir',['CUR_DIR',['../terminal_8c.html#a0eb453072d746176ccfe15c483db768d',1,'terminal.c']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/search/variables_2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_2.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['deltax',['deltax',['../stone_8c.html#ad35e47e391d93c0ae43ca14645fccbf3',1,'stone.c']]],
4 | ['deltay',['deltay',['../stone_8c.html#a2e1850d63e764acfcb687e62331ed195',1,'stone.c']]],
5 | ['delx',['delX',['../timeout_8c.html#a79550bd9f4b68860d49424ce526a1c4e',1,'timeout.c']]],
6 | ['dely',['delY',['../timeout_8c.html#a0d16071db9f37e01f43985bc7548c976',1,'timeout.c']]],
7 | ['direction',['direction',['../timeout_8c.html#a886d551d5381dc3e53f17825ffc51641',1,'timeout.c']]],
8 | ['dot',['dot',['../datablock_8c.html#a348c155f713e2ad9e4ec48288d07576e',1,'datablock.c']]],
9 | ['dotdot',['dotdot',['../datablock_8c.html#a712ac855280d38844500ef9b85f027a2',1,'datablock.c']]]
10 | ];
11 |
--------------------------------------------------------------------------------
/docs/search/variables_3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_3.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['error_5fflags',['error_flags',['../datablock_8c.html#a53a8d36e3b69c6378227a42269a8bb56',1,'datablock.c']]],
4 | ['evenflag',['evenFlag',['../kbhit_8c.html#ab2f3dce2fc559e57fa88f8fc945dc254',1,'kbhit.c']]],
5 | ['extendname',['extendname',['../structFAT__ITEM.html#aa5f0086f0da974014236005a0ff3b4c8',1,'FAT_ITEM::extendname()'],['../FATMacro_8h.html#a276d151d5c4bc39c2ae6c7143beab46e',1,'extendname(): FATMacro.h']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/variables_4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_4.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['fat_5fitems',['fat_items',['../FAT_8c.html#a683230552c587c4ff1de8d0f2034978e',1,'FAT.c']]],
4 | ['filename',['filename',['../structFAT__ITEM.html#a536b8676d6d56c9c691fb0f2cfe56a10',1,'FAT_ITEM::filename()'],['../FATMacro_8h.html#a36126364ff9f56a16488e5c2b8d1206e',1,'filename(): FATMacro.h']]],
5 | ['filesize',['filesize',['../structFAT__ITEM.html#a134efce543c3dae5e98a7c859fb19b7c',1,'FAT_ITEM::filesize()'],['../FATMacro_8h.html#a0532db3d21cdd9e862560340b97d8e05',1,'filesize(): FATMacro.h']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/variables_5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_5.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['hms',['hms',['../structFAT__ITEM.html#a171be3c11a7490776f6ca0ac99126fb5',1,'FAT_ITEM::hms()'],['../FATMacro_8h.html#a384f285853fa2d8b52f3eb72cf9fc9ab',1,'hms(): FATMacro.h']]],
4 | ['home_5fdir',['home_dir',['../datablock_8c.html#ad4a5f5d0fcd40211e708b9f31ea8ee2b',1,'datablock.c']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/search/variables_6.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_6.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['kernel_5fbin',['kernel_bin',['../datablock_8c.html#a26decea6b3f1cfd1d5834d6c408cf208',1,'datablock.c']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/variables_7.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_7.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['media_5ftype',['media_type',['../datablock_8c.html#a97c8e0392164cb1101ed6dded9742181',1,'datablock.c']]],
4 | ['mod',['mod',['../structFAT__ITEM.html#a9e45d6c4a9a76b778986930c31fb7dc0',1,'FAT_ITEM::mod()'],['../FATMacro_8h.html#a7e6d6c4ffa3ecb61cde728e16c91deee',1,'mod(): FATMacro.h']]],
5 | ['modify_5fhms',['modify_hms',['../structFAT__ITEM.html#a56a6b36d2eec2a382d8caf043395cd41',1,'FAT_ITEM::modify_hms()'],['../FATMacro_8h.html#a7c98939955a71d8798f82c6a6f50e0ac',1,'modify_hms(): FATMacro.h']]],
6 | ['modify_5fymd',['modify_ymd',['../structFAT__ITEM.html#a71f17662b58e2bc02d7d97c7e23bd23d',1,'FAT_ITEM::modify_ymd()'],['../FATMacro_8h.html#a74bc7e8dc7419dc1583d60b180fe3d44',1,'modify_ymd(): FATMacro.h']]],
7 | ['msg',['msg',['../datablock_8c.html#abe7a9e754e1b30af24d61bb908ab1ca8',1,'datablock.c']]]
8 | ];
9 |
--------------------------------------------------------------------------------
/docs/search/variables_8.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_8.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['recent_5faccess_5fymd',['recent_access_ymd',['../structFAT__ITEM.html#a66c3299b6fba20f1fbd7d3207b057641',1,'FAT_ITEM::recent_access_ymd()'],['../FATMacro_8h.html#ac7712d222620362331436a3fdedd6750',1,'recent_access_ymd(): FATMacro.h']]],
4 | ['res',['res',['../structFAT__ITEM.html#a4816433ed3b998fa2a91ba1542274f65',1,'FAT_ITEM::res()'],['../FATMacro_8h.html#a29850f3918435f089b2e206b9da59936',1,'res(): FATMacro.h']]],
5 | ['row',['row',['../kbhit_8c.html#acc38b28927bf55a0a8a775fb8425476e',1,'kbhit.c']]]
6 | ];
7 |
--------------------------------------------------------------------------------
/docs/search/variables_9.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_9.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['style',['style',['../timeout_8c.html#a5251487cfa4de7a311eb2654bdf5a66e',1,'timeout.c']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/variables_a.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_a.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['user_5fprograma',['user_programA',['../datablock_8c.html#a8d588936cc6f4bc277d53c1c657db43b',1,'datablock.c']]],
4 | ['user_5fprogramq',['user_programQ',['../datablock_8c.html#a1329f6048c8b09136d61817ef43e4171',1,'datablock.c']]],
5 | ['user_5fprograms',['user_programS',['../datablock_8c.html#ad90c19079fbfa90b6a2230edf0cb8622',1,'datablock.c']]],
6 | ['user_5fprogramw',['user_programW',['../datablock_8c.html#ab496dd13daa99bab7e7075cd9b3cdc48',1,'datablock.c']]]
7 | ];
8 |
--------------------------------------------------------------------------------
/docs/search/variables_b.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_b.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['x',['x',['../timeout_8c.html#a6150e0515f7202e2fb518f7206ed97dc',1,'x(): timeout.c'],['../stone_8c.html#a6150e0515f7202e2fb518f7206ed97dc',1,'x(): stone.c']]]
4 | ];
5 |
--------------------------------------------------------------------------------
/docs/search/variables_c.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Loading...
12 |
13 |
18 |
Searching...
19 |
No Matches
20 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/search/variables_c.js:
--------------------------------------------------------------------------------
1 | var searchData=
2 | [
3 | ['y',['y',['../timeout_8c.html#a0a2f84ed7838f07779ae24c5a9086d33',1,'y(): timeout.c'],['../stone_8c.html#a0a2f84ed7838f07779ae24c5a9086d33',1,'y(): stone.c']]],
4 | ['ymd',['ymd',['../structFAT__ITEM.html#a21bfe7f05e5b827057cd11aeaec4ec78',1,'FAT_ITEM::ymd()'],['../FATMacro_8h.html#af2610f141296d1a780edda8c43eed706',1,'ymd(): FATMacro.h']]]
5 | ];
6 |
--------------------------------------------------------------------------------
/docs/splitbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/splitbar.png
--------------------------------------------------------------------------------
/docs/sync_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/sync_off.png
--------------------------------------------------------------------------------
/docs/sync_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/sync_on.png
--------------------------------------------------------------------------------
/docs/tab_a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/tab_a.png
--------------------------------------------------------------------------------
/docs/tab_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/tab_b.png
--------------------------------------------------------------------------------
/docs/tab_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/tab_h.png
--------------------------------------------------------------------------------
/docs/tab_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/docs/tab_s.png
--------------------------------------------------------------------------------
/linux/.bochsrc:
--------------------------------------------------------------------------------
1 | # memory
2 | megs: 32
3 |
4 | # filename of ROM images
5 | romimage: file=/usr/share/bochs/BIOS-bochs-latest
6 | vgaromimage: file=/usr/share/vgabios/vgabios.bin
7 |
8 | floppya: 1_44=OS.img, status=inserted
9 |
10 | boot: floppy
11 |
12 | log: log/bochsout.log
13 |
14 | mouse: enabled=0
15 |
16 | keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
17 |
18 | magic_break: enabled=1
--------------------------------------------------------------------------------
/linux/README.md:
--------------------------------------------------------------------------------
1 | 第一个扇区 boot
2 | 第2~5扇区 setup
3 | 第6~29扇区 head
--------------------------------------------------------------------------------
/linux/boot/Makefile:
--------------------------------------------------------------------------------
1 | LD=ld
2 | LDFLAGS=-melf_i386 -N
3 | CC=gcc
4 | CCFLAGS=-march=i386 -m16 -mpreferred-stack-boundary=2 -ffreestanding -g
5 | AS=nasm
6 | ASFLAGS=
7 |
8 | all: boot.bin setup.bin head.o
9 | boot.bin: boot.o
10 | $(LD) $(LDFLAGS) -Ttext 0x0 --oformat binary -o $@ $^
11 | boot.o: boot.s
12 | $(AS) $(ASFLAGS) -f elf -o $@ $^
13 | setup.bin: setup.o
14 | $(LD) $(LDFLAGS) -Ttext 0x000 --oformat binary -o $@ $^
15 | setup.o: setup.s
16 | $(AS) $(ASFLAGS) -f elf -o $@ $^
17 | head.o: head.s
18 | $(AS) $(ASFLAGS) -f elf -o $@ $^
19 |
20 | clean:
21 | find . -type f -name "*.o" -delete
22 | find . -type f -name "*.bin" -delete
--------------------------------------------------------------------------------
/linux/include/asm/io.h:
--------------------------------------------------------------------------------
1 | #define outb(value, port)\
2 | __asm__("outb %%al, %%dx"::"a"(value),"d"(port))
3 |
4 | #define inb(port) ({\
5 | unsigned char _v;\
6 | __asm__ volatile("inb %%dx, %%al":"=a"(_v):"d"(port));\
7 | _v;\
8 | })
9 |
10 | #define outb_p(value, port)\
11 | __asm__("outb %%al, %%dx\n"\
12 | "jmp 1f\n"\
13 | "1:jmp 1f\n"\
14 | "1:"::"a"(value), "d"(port))
15 |
16 | #define inb_p(port) ({\
17 | unsigned char _v;\
18 | __asm__ volatile("inb %%dx, %%al\n"\
19 | "jmp 1f\n"\
20 | "1:jmp 1f\n"\
21 | "1:":"=a"(_v):"d"(port));\
22 | _v;\
23 | })
24 |
25 |
--------------------------------------------------------------------------------
/linux/include/debug.h:
--------------------------------------------------------------------------------
1 | #ifndef __DEBUG_H_
2 | #define __DEBUG_H_
3 |
4 | #define BochsBreak() __asm__("xchgw %%bx, %%bx\n"::)
5 |
6 | #endif
--------------------------------------------------------------------------------
/linux/include/linux/fork.h:
--------------------------------------------------------------------------------
1 | #ifndef __FORK_H_
2 | #define __FORK_H_
3 |
4 | #define fork() \
5 | ({\
6 | cli();\
7 | int32_t __fork_ret;\
8 | __asm__(\
9 | "movl $0x02, %%eax\n"\
10 | "int $0x80\n"\
11 | : "=r"(__fork_ret)\
12 | :\
13 | );\
14 | sti();\
15 | __fork_ret;\
16 | })
17 |
18 | #define wait() \
19 | ({\
20 | cli();\
21 | int32_t __wait_ret;\
22 | __asm__(\
23 | "movl $0x03, %%eax\n"\
24 | "int $0x80\n"\
25 | : "=r"(__wait_ret)\
26 | :);\
27 | sti();\
28 | __wait_ret;\
29 | })
30 |
31 | #define exit() \
32 | __asm__("movl $0x04, %%eax\n"\
33 | "int $0x80\n"\
34 | ::);
35 |
36 | #endif
--------------------------------------------------------------------------------
/linux/include/linux/fs.h:
--------------------------------------------------------------------------------
1 | #ifndef __FS_H_
2 | #define __FS_H_
3 | #define NR_OPEN 20
4 | struct m_inode {
5 | unsigned short i_mode;
6 | unsigned short i_uid;
7 | unsigned long i_size;
8 | unsigned long i_mtime;
9 | unsigned char i_gid;
10 | unsigned char i_nlinks;
11 | unsigned short i_zone[9];
12 | struct task_struct* i_wait;
13 | unsigned long i_atime;
14 | unsigned long i_ctime;
15 | unsigned short i_dev;
16 | unsigned short i_num;
17 | unsigned short i_count;
18 | unsigned char i_lock;
19 | unsigned char i_dirt;
20 | unsigned char i_pipe;
21 | unsigned char i_mount;
22 | unsigned char i_seek;
23 | unsigned char i_update;
24 | };
25 | typedef long off_t; //TODO: should be move into sys/type.h
26 | struct file {
27 | unsigned short f_mode;
28 | unsigned short f_flags;
29 | unsigned short f_count;
30 | struct m_inode* f_inode;
31 | off_t f_pos;
32 | };
33 |
34 | #endif
--------------------------------------------------------------------------------
/linux/include/linux/head.h:
--------------------------------------------------------------------------------
1 | /// this file finished
2 | #ifndef __HEAD_H_
3 | #define __HEAD_H_
4 | //#include
5 | typedef struct desc_struct {
6 | unsigned long a, b; // 64 bits
7 | } desc_table[256];
8 | extern unsigned long pg_dir[1024];
9 | extern desc_table idt, gdt;
10 |
11 | #define GDT_NUL 0
12 | #define GDT_CODE 1
13 | #define GDT_DATA 2
14 | #define GDT_TMP 3
15 |
16 | #define LDT_NUL 0
17 | #define LDT_CODE 1
18 | #define LDT_DATA 2
19 | #endif
--------------------------------------------------------------------------------
/linux/include/linux/mm.h:
--------------------------------------------------------------------------------
1 | #ifndef __MM_H_
2 | #define __MM_H_
3 | #define PAGE_SIZE 4096
4 | #endif
5 |
6 |
--------------------------------------------------------------------------------
/linux/include/linux/semaphore.h:
--------------------------------------------------------------------------------
1 | #ifndef __SEMAPHORE_H_
2 | #define __SEMAPHORE_H_
3 | #define NR_SEMAPHORE 256
4 | #include "../asm/system.h"
5 | #include "../linux/sched.h"
6 | typedef struct Semaphone {
7 | int value;
8 | int block_processes[NR_TASKS];
9 | int bsize;
10 | int used;
11 | } Semaphone;
12 | int getsem(int );
13 | int freesem(int );
14 | int p(int );
15 | int v(int );
16 | #endif
--------------------------------------------------------------------------------
/linux/include/linux/signal.h:
--------------------------------------------------------------------------------
1 | #ifndef __SIGNAL_H_
2 | #define __SIGNAL_H_
3 | typedef unsigned int sigset_t;
4 | struct sigaction {
5 | void (*sa_handler)(int);
6 | sigset_t sa_mask;
7 | int sa_flags;
8 | void (*sa_restorer)(void);
9 | };
10 | #endif
--------------------------------------------------------------------------------
/linux/include/stdarg.h:
--------------------------------------------------------------------------------
1 | #ifndef _STDARG_H
2 | #define _STDARG_H
3 |
4 | typedef char *va_list;
5 |
6 | /* Amount of space required in an argument list for an arg of type TYPE.
7 | TYPE may alternatively be an expression whose type is used. */
8 |
9 | #define __va_rounded_size(TYPE) \
10 | (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
11 |
12 | #ifndef __sparc__
13 | #define va_start(AP, LASTARG) \
14 | (AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG)))
15 | #else
16 | #define va_start(AP, LASTARG) \
17 | (__builtin_saveregs (), \
18 | AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG)))
19 | #endif
20 |
21 | void va_end (va_list); /* Defined in gnulib */
22 | #define va_end(AP)
23 |
24 | #define va_arg(AP, TYPE) \
25 | (AP += __va_rounded_size (TYPE), \
26 | *((TYPE *) (AP - __va_rounded_size (TYPE))))
27 |
28 | #endif /* _STDARG_H */
29 |
--------------------------------------------------------------------------------
/linux/init/testscript.s:
--------------------------------------------------------------------------------
1 | [BITS 32]
2 | global test_write
3 | test_write:
4 | push ds
5 | push ebx
6 |
7 |
8 |
9 | pop ds
10 | ret
--------------------------------------------------------------------------------
/linux/kernel/Makefile:
--------------------------------------------------------------------------------
1 | LD=ld
2 | LDFLAGS=-melf_i386 -N
3 | CC=gcc
4 | CCFLAGS=-m32 -mpreferred-stack-boundary=2 -ffreestanding -g
5 | #TODO: in pm, here should be -m32 not -m16
6 | #TODO: delete -march=i386
7 | AS=nasm
8 | ASFLAGS=
9 |
10 | all: asm.o traps.o printk.o printk_tmp.o system_call.o sched.o semaphore.o
11 | asm.o: asm.s
12 | $(AS) $(ASFLAGS) -f elf -o $@ $^
13 | traps.o: traps.c
14 | $(CC) $(CCFLAGS) -c $^
15 | # sched.o: sched.c
16 | # $(CC) $(CCFLAGS) -c $^
17 | sched.o: sched.c ../include/linux/sys.h
18 | gcc -m32 -fno-builtin -fno-stack-protector -fomit-frame-pointer -fstrength-reduce -I../include -c -o sched.o sched.c
19 |
20 | printk.o: printk.c
21 | $(CC) $(CCFLAGS) -c $^
22 | printk_tmp.o: printk.s #TODO: only as workaround. delete me.
23 | $(AS) $(ASFLAGS) -f elf -o $@ $^
24 | system_call.o: system_call.s
25 | $(AS) $(ASFLAGS) -f elf -o $@ $^
26 | semaphore.o : semaphore.c
27 | $(CC) $(CCFLAGS) -c $^
28 | vsprintf.o: vsprintf.c
29 | $(CC) $(CCFLAGS) -c $^
--------------------------------------------------------------------------------
/linux/kernel/printk.c:
--------------------------------------------------------------------------------
1 | /**
2 | * @brief
3 | * NOTICE: it is only use as a workaround.
4 | */
5 | #include
6 | void putch(char);
7 | void newline();
8 | int32_t printks(const char* str) {
9 |
10 | while (*str) {
11 | if (*str == '\n') {
12 | newline();
13 | }
14 | else {
15 | putch(*str);
16 | }
17 | str++;
18 | }
19 | }
--------------------------------------------------------------------------------
/linux/lib/Makefile:
--------------------------------------------------------------------------------
1 | LD=ld
2 | LDFLAGS=-melf_i386 -N
3 | CC=gcc
4 | CCFLAGS=-m32 -mpreferred-stack-boundary=2 -ffreestanding -g
5 | #TODO: in pm, here should be -m32 not -m16
6 | #TODO: delete -march=i386
7 | AS=nasm
8 | ASFLAGS=
9 |
10 | string.o: string.c
11 | $(CC) $(CCFLAGS) -c $^
--------------------------------------------------------------------------------
/linux/tools/system:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/linux/tools/system
--------------------------------------------------------------------------------
/linux/tools/system.elf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/linux/tools/system.elf
--------------------------------------------------------------------------------
/linux/unittest/unittest.c:
--------------------------------------------------------------------------------
1 | // NOTICE:
2 | // NOT USE.
3 | // when trap trigger, it dies. so, can no test
4 | // all testcase once.
5 | #include
6 | int32_t printks(const char*);
7 | void test_divide_zero_trap() {
8 | printks("begin to test divide 0\n");
9 | __asm__ volatile(
10 | "movb $0x0, %%ah\n"
11 | "div %%ah\n"
12 | ::
13 | );
14 | printks("test end.\n");
15 | }
16 |
17 | void test_general_protection_trap() {
18 | printks("begin to test general protection trap\n");
19 | __asm__ volatile(
20 | "movl 0x28, %%eax\n"
21 | "movw %%ax, %%ds\n"
22 | "movl (0xFFFF), %%eax\n"
23 | ::
24 | );
25 | printks("test end.\n");
26 | }
27 |
28 | void unittest_testall() {
29 | test_divide_zero_trap();
30 | test_general_protection_trap();
31 | }
--------------------------------------------------------------------------------
/protectmod/.bochsrc:
--------------------------------------------------------------------------------
1 | # memory
2 | megs: 32
3 |
4 | # filename of ROM images
5 | romimage: file=/usr/share/bochs/BIOS-bochs-latest
6 | vgaromimage: file=/usr/share/vgabios/vgabios.bin
7 |
8 | floppya: 1_44=OS.img, status=inserted
9 |
10 | boot: floppy
11 |
12 | log: log/bochsout.log
13 |
14 | mouse: enabled=0
15 |
16 | keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
--------------------------------------------------------------------------------
/protectmod/Makefile:
--------------------------------------------------------------------------------
1 | all: write_os_img
2 | BOOT=boot
3 | ALL_BIN = ${BOOT}/boot.bin ${BOOT}/head.bin
4 | write_os_img: ${ALL_BIN}
5 | dd if=boot/boot.bin of=OS.img bs=512 count=1 conv=notrunc
6 | dd if=boot/head.bin of=OS.img bs=512 count=10 conv=notrunc seek=1
7 |
8 | boot/boot.bin: boot/boot.s
9 | cd boot/ && make boot.bin
10 | boot/head.bin: boot/head.s
11 | cd boot/ && make head.bin
12 |
13 | clean:
14 | find . -type f -name "*.o" -delete
15 | find . -type f -name "*.bin" -delete
16 |
17 | run:
18 | bochs -q
--------------------------------------------------------------------------------
/protectmod/boot/Makefile:
--------------------------------------------------------------------------------
1 | LD=ld
2 | LDFLAGS=-melf_i386 -N
3 | CC=gcc
4 | CCFLAGS=-march=i386 -m16 -mpreferred-stack-boundary=2 -ffreestanding
5 | AS=nasm
6 | ASFLAGS=
7 |
8 | all: boot.bin head.bin
9 | boot.bin: boot.o
10 | $(LD) $(LDFLAGS) -Ttext 0x0 --oformat binary -o $@ $^
11 | boot.o: boot.s
12 | $(AS) $(ASFLAGS) -f elf -o $@ $^
13 | head.bin: head.o
14 | $(LD) $(LDFLAGS) -Ttext 0x8000 --oformat binary -o $@ $^
15 | head.o: head.s
16 | $(AS) $(ASFLAGS) -f elf -o $@ $^
17 |
18 | clean:
19 | find . -type f -name "*.o" -delete
20 | find . -type f -name "*.bin" -delete
--------------------------------------------------------------------------------
/protectmod/boot/boot.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/protectmod/boot/boot.o
--------------------------------------------------------------------------------
/protectmod/boot/boot.s:
--------------------------------------------------------------------------------
1 | [BITS 16]
2 | global _start
3 |
4 | ;SEG equ 0x7C0
5 | ;KERNEL equ 0x800
6 |
7 | _start:
8 | mov ax, 0
9 | mov ds, ax
10 | mov es, ax
11 | mov fs, ax
12 | mov gs, ax
13 | jmp load_kernel
14 |
15 | load_kernel:
16 | mov cl, 2
17 |
18 | ;below set load target memory to KERNEL:0
19 | mov ax, 0x800
20 | mov es, ax
21 | mov bx, 0
22 | ; cl
23 | ; bx
24 | mov ah, 2 ; function number
25 | mov al, 10 ; load two sector
26 | mov dl, 0; 0 for fd
27 | mov dh, 0; head
28 | mov ch, 0 ; low 8 bits of cyl
29 | int 13H
30 |
31 | jmp2KERNEL:
32 | jmp 0:0x8000
33 |
34 | blank:
35 | times 444-($-$$) db 0
36 | partition_table:
37 | .first:
38 | ; TODO: partition table in MBR
39 | times 510-($-$$) db 0
40 | dw 0xAA55
--------------------------------------------------------------------------------
/protectmod/boot/head.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/protectmod/boot/head.o
--------------------------------------------------------------------------------
/report/16337269_颜彬_实验六.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/report/16337269_颜彬_实验六.pdf
--------------------------------------------------------------------------------
/report/assets/int_still_work.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/report/assets/int_still_work.png
--------------------------------------------------------------------------------
/report/assets/kill_p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/report/assets/kill_p.png
--------------------------------------------------------------------------------
/report/assets/mm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/report/assets/mm.png
--------------------------------------------------------------------------------
/report/assets/mm_free.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/report/assets/mm_free.png
--------------------------------------------------------------------------------
/report/assets/three_stone_S.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/report/assets/three_stone_S.png
--------------------------------------------------------------------------------
/step_0/README.md:
--------------------------------------------------------------------------------
1 | # step0
2 | ## how-tos
3 | ### build
4 | ``` shell
5 | $ sh build.sh
6 | ```
7 | this code turn `boot.asm` to `boot.bin`
8 | then write `boot.bin` into `boot.image`
9 | ### run
10 | ``` shell
11 | $ sh run.sh
12 | ```
13 | this open `bochs`, load `.bochsrc` and get startted.
14 | ## directory tree
15 | ``` python
16 | .
17 | ├── a.img # image file written by boot.bin
18 | ├── bochsout.log # log file by bochs
19 | ├── .bochsrc # config for bochs
20 | ├── boot.asm # source code
21 | ├── boot.bin # get from boot.asm
22 | ├── build.sh
23 | ├── README.md
24 | └── run.sh
25 |
26 | 0 directories, 8 files
27 | ```
--------------------------------------------------------------------------------
/step_0/a.img:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_0/a.img
--------------------------------------------------------------------------------
/step_0/boot.asm:
--------------------------------------------------------------------------------
1 | %define w(x) __utf32__(x)
2 | org 07c00h
3 | mov ax, cs
4 | mov ds, ax
5 | mov es, ax
6 | call DispStr
7 | jmp $
8 |
9 | DispStr:
10 | mov ax, BootMessage
11 | mov bp, ax
12 | mov cx, length
13 | mov ax, 01301h
14 | mov bx, 000ch
15 | mov dl, 0
16 | int 10h
17 | ret
18 | BootMessage: db 'hello world!'
19 | length equ ($-BootMessage)
20 | times 510-($-$$) db 0
21 | dw 0xaa55
--------------------------------------------------------------------------------
/step_0/build.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | nasm boot.asm -o boot.bin
3 | dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
--------------------------------------------------------------------------------
/step_0/run.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | bochs -q
--------------------------------------------------------------------------------
/step_1/README.md:
--------------------------------------------------------------------------------
1 | # 实验项目1
2 | ## 搭建和应用实验环境
3 | ### Problem1
4 | 产生一个虚拟软盘
5 | 将其用 DOS 格式化为 DOS 引导盘
6 | Solution:
7 | 下载bochs的DOS镜像文件,并按`.bochsrc`的方式配置bochs。
8 | DOS镜像放在A盘,`a.img`放在B盘。
9 | 上述`a.img`即为格式化后的文件
10 | ``` shell
11 | $ bochs
12 | // be in the Dos system
13 | Dos:> format b:
14 | ...
15 | format complete
16 | $ xxd a.image | less
17 | ```
18 | 文件介绍
19 | ``` python
20 | .
21 | ├── a.img # formatted image
22 | ├── bochsout.log # log file
23 | ├── .bochsrc # config file
24 | ├── boot.com # a sample code
25 | └── freedos.img # Dos image used by bochs
26 | ```
27 | ### Problem2
28 | 用 WinHex 工具将其中一个虚拟软盘的首扇区填满你的个人信息
29 | Solution:
30 | ``` x86/asm
31 | ; in file fill.asm
32 | times 32 db "16337269 yanbin "
33 | ```
34 | ``` shell
35 | $ nasm fill.asm -o fill.bin
36 | $ dd if=fill.bin of=fill.img
37 | $ xxd fill.img | less
38 | ```
39 | nasm汇编器产生特殊的”汇编“填满整个文件。
40 | 使用dd将.bin文件写入.img
41 | ```
42 | # some output
43 | 00000000: 3136 3333 3732 3639 2079 616e 6269 6e20 16337269 yanbin
44 | 00000010: 3136 3333 3732 3639 2079 616e 6269 6e20 16337269 yanbin
45 | 00000020: 3136 3333 3732 3639 2079 616e 6269 6e20 16337269 yanbin
46 | ...
47 | ...
48 | 000001f0: 3136 3333 3732 3639 2079 616e 6269 6e20 16337269 yanbin
49 | ```
50 |
51 | ## 接管裸机控制权
52 | ### Problem3
53 | 完成`storm.asm`程序,使其在裸机上显示个人的相关信息
54 | Solotion:
55 | 运行方式
56 | ``` shell
57 | $ sh run.sh
58 | ```
59 | 会直接弹出bochs的虚拟机窗口,打开stone.img,并运行。
60 | 生成文件方式
61 | ``` shell
62 | $ sh build.sh
63 | ```
64 | ## 遇到的Bugs
65 | ### mul instruction
66 | 乘的指令,当操作数为16bits时,会将高位放置到dx处
67 | 在本程序中,该行为错误地将dl置为0
68 | 见wiki mul
--------------------------------------------------------------------------------
/step_1/section1/.bochsrc:
--------------------------------------------------------------------------------
1 | # memory
2 | megs: 32
3 |
4 | # filename of ROM images
5 | romimage: file=/usr/share/bochs/BIOS-bochs-latest
6 | vgaromimage: file=/usr/share/vgabios/vgabios.bin
7 |
8 | floppya: 1_44=freedos.img, status=inserted
9 | floppyb: 1_44=a.img, status=inserted
10 |
11 | boot: a
12 |
13 | log: bochsout.log
14 |
15 | mouse: enabled=0
16 |
17 | keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
--------------------------------------------------------------------------------
/step_1/section1/boot.com:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_1/section1/boot.com
--------------------------------------------------------------------------------
/step_1/section2/fill.asm:
--------------------------------------------------------------------------------
1 | times 32 db "16337269 yanbin "
--------------------------------------------------------------------------------
/step_1/section3/.bochsrc:
--------------------------------------------------------------------------------
1 | # memory
2 | megs: 32
3 |
4 | # filename of ROM images
5 | romimage: file=/usr/share/bochs/BIOS-bochs-latest
6 | vgaromimage: file=/usr/share/vgabios/vgabios.bin
7 |
8 | floppya: 1_44=stone.img, status=inserted
9 | # floppyb: 1_44=stone.asm, status=inserted
10 |
11 | boot: a
12 |
13 | log: bochsout.log
14 |
15 | mouse: enabled=0
16 |
17 | keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
18 |
19 | # ips instruction per second
20 | # cpu: count=1, ips=4294967295
--------------------------------------------------------------------------------
/step_1/section3/build.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | nasm stone.asm -o stone.bin -g
3 | dd if=stone.bin of=stone.img bs=512 count=1 conv=notrunc
--------------------------------------------------------------------------------
/step_1/section3/latex/16337269_颜彬_实验一.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_1/section3/latex/16337269_颜彬_实验一.pdf
--------------------------------------------------------------------------------
/step_1/section3/latex/asset/procedure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_1/section3/latex/asset/procedure.png
--------------------------------------------------------------------------------
/step_1/section3/latex/asset/stone_run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_1/section3/latex/asset/stone_run.png
--------------------------------------------------------------------------------
/step_1/section3/run.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | bochs -q
--------------------------------------------------------------------------------
/step_2/.bochsrc:
--------------------------------------------------------------------------------
1 | # memory
2 | megs: 32
3 |
4 | # filename of ROM images
5 | romimage: file=/usr/share/bochs/BIOS-bochs-latest
6 | vgaromimage: file=/usr/share/vgabios/vgabios.bin
7 |
8 | floppya: 1_44=boot.img, status=inserted
9 | # floppyb: 1_44=stone.asm, status=inserted
10 |
11 | boot: a
12 |
13 | log: bochsout.log
14 |
15 | mouse: enabled=0
16 |
17 | keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
18 |
19 | # ips instruction per second
20 | # cpu: count=1, ips=4294967295
--------------------------------------------------------------------------------
/step_2/Utilities/build.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | nasm utility.asm -o utility.bin
--------------------------------------------------------------------------------
/step_2/Utilities/run.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | bochs -q
--------------------------------------------------------------------------------
/step_2/build.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | nasm loader.asm -o loader.bin
3 | (cd userCodes/ && ./build.sh && cd ..)
4 | (cd Utilities/ && ./build.sh && cd ..)
5 | dd if=loader.bin of=boot.img conv=notrunc
6 | dd if=Utilities/utility.bin of=boot.img conv=notrunc oflag=seek_bytes seek="$((512*1))"
7 | dd if=userCodes/ul.bin of=boot.img conv=notrunc oflag=seek_bytes seek="$((512*2))"
8 | dd if=userCodes/up.bin of=boot.img conv=notrunc oflag=seek_bytes seek="$((512*3))"
9 | dd if=userCodes/ur.bin of=boot.img conv=notrunc oflag=seek_bytes seek="$((512*4))"
10 | dd if=userCodes/dl.bin of=boot.img conv=notrunc oflag=seek_bytes seek="$((512*5))"
11 | dd if=userCodes/dn.bin of=boot.img conv=notrunc oflag=seek_bytes seek="$((512*6))"
12 | dd if=userCodes/dr.bin of=boot.img conv=notrunc oflag=seek_bytes seek="$((512*7))"
--------------------------------------------------------------------------------
/step_2/latex/16337269_颜彬_实验二.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_2/latex/16337269_颜彬_实验二.pdf
--------------------------------------------------------------------------------
/step_2/latex/assets/helloPage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_2/latex/assets/helloPage.png
--------------------------------------------------------------------------------
/step_2/latex/assets/onePageRun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_2/latex/assets/onePageRun.png
--------------------------------------------------------------------------------
/step_2/latex/assets/overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_2/latex/assets/overview.png
--------------------------------------------------------------------------------
/step_2/latex/assets/program.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_2/latex/assets/program.png
--------------------------------------------------------------------------------
/step_2/latex/assets/sixPageRun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YanB25/OperatingSystem/348f0044bdaae65145ab12cea931a4a341c746ce/step_2/latex/assets/sixPageRun.png
--------------------------------------------------------------------------------
/step_2/run.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | bochs -q
--------------------------------------------------------------------------------
/step_2/userCodes/.bochsrc:
--------------------------------------------------------------------------------
1 | # memory
2 | megs: 32
3 |
4 | # filename of ROM images
5 | romimage: file=/usr/share/bochs/BIOS-bochs-latest
6 | vgaromimage: file=/usr/share/vgabios/vgabios.bin
7 |
8 | floppya: 1_44=stone.img, status=inserted
9 |
10 | boot: a
11 |
12 | log: bochsout.log
13 |
14 | mouse: enabled=0
15 |
16 | keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
17 |
18 | # ips instruction per second
19 | # cpu: count=1, ips=4294967295
--------------------------------------------------------------------------------
/step_2/userCodes/build.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | nasm stone.asm -o ul.bin -d DEBUG -d UL
3 | nasm stone.asm -o up.bin -d DEBUG -d UP
4 | nasm stone.asm -o ur.bin -d DEBUG -d UR
5 | nasm stone.asm -o dl.bin -d DEBUG -d DL
6 | nasm stone.asm -o dn.bin -d DEBUG -d DN
7 | nasm stone.asm -o dr.bin -d DEBUG -d DR
8 |
--------------------------------------------------------------------------------
/step_2/userCodes/run.sh:
--------------------------------------------------------------------------------
1 | set -x
2 | bochs -q
--------------------------------------------------------------------------------
/step_3/.bochsrc:
--------------------------------------------------------------------------------
1 | # memory
2 | megs: 32
3 |
4 | # filename of ROM images
5 | romimage: file=/usr/share/bochs/BIOS-bochs-latest
6 | vgaromimage: file=/usr/share/vgabios/vgabios.bin
7 |
8 | floppya: 1_44=OS.img, status=inserted
9 |
10 | boot: a
11 |
12 | log: bochsout.log
13 |
14 | mouse: enabled=0
15 |
16 | keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
17 |
18 | # ips instruction per second
19 | # cpu: count=1, ips=4294967295
--------------------------------------------------------------------------------
/step_3/.gitignore:
--------------------------------------------------------------------------------
1 | # Prerequisites
2 | *.d
3 |
4 | # Object files
5 | *.o
6 | *.ko
7 | *.obj
8 | *.elf
9 |
10 | # Linker output
11 | *.ilk
12 | *.map
13 | *.exp
14 |
15 | # Precompiled Headers
16 | *.gch
17 | *.pch
18 |
19 | # Libraries
20 | *.lib
21 | *.a
22 | *.la
23 | *.lo
24 |
25 | # Shared objects (inc. Windows DLLs)
26 | *.dll
27 | *.so
28 | *.so.*
29 | *.dylib
30 |
31 | # Executables
32 | *.exe
33 | *.out
34 | *.app
35 | *.i*86
36 | *.x86_64
37 | *.hex
38 |
39 | # Debug files
40 | *.dSYM/
41 | *.su
42 | *.idb
43 | *.pdb
44 |
45 | # Kernel Module Compile Results
46 | *.mod*
47 | *.cmd
48 | .tmp_versions/
49 | modules.order
50 | Module.symvers
51 | Mkfile.old
52 | dkms.conf
--------------------------------------------------------------------------------
/step_3/filesystem/API/fsErrorCode.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file
3 | * @brief define error code that is used in @ref fsapi.h
4 | */
5 | #define NO_ERR 0
6 | /// system protected file, not allow executing the operation
7 | #define ERR_SYS_PROTC -2
8 | /// target type is folder, unable to execute the operation
9 | #define ERR_TYPE_FLDR -3
10 | /// target type is partition doc, unable
11 | #define ERR_TYPE_DOC -4
12 | /// file not found
13 | #define ERR_NOT_FOUND -1
--------------------------------------------------------------------------------
/step_3/filesystem/DBR.asm:
--------------------------------------------------------------------------------
1 | [BITS 16]
2 | extern DBRkernelLoader
3 | global BPB
4 | %include "../include/bridge.inc"
5 | begin:
6 | jmp code
7 | times 3 - ($ - $$) db 0
8 |
9 | db 'aaaaaaaa'
10 | BPB:
11 | ; 0x7E0B
12 | BytePerSector dw 512 ; bpb
13 | SectorPerCluster db 1 ; bpb + 2
14 | ReservedSector dw 2 ; bpb + 3
15 | NumberOfFAT db 2 ; bpb + 5
16 | RootEntries dw 512 ; bpb + 6
17 | SmallSector dw 2800 ; bpb + 8
18 | MediaDescriptor db 0xF0 ; bpb + 10
19 | SectorsPerFAT dw 4 ; bpb + 11
20 | SectorPerTrack dw 36; bpb + 13
21 | NumberOfHead dw 2; bpb + 15
22 | HiddenSector dd 1 ; bpb + 17
23 | LargeSector dd 0; unused bpb + 21
24 | ExtBPB:
25 | times 26 db 0
26 | ;TODO: Ext BPB in DBR
27 | code:
28 | ; 0x7E3E
29 | calll DBRkernelLoader
30 | hlt
31 |
32 | data:
33 | mydata dw 10
34 |
35 |
--------------------------------------------------------------------------------
/step_3/filesystem/FATMacro.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file
3 | * @brief all the macro needed by FAT inner implementation
4 | */
5 | #ifndef __FAT_MACRO_H_
6 | #define __FAT_MACRO_H_
7 | #include
8 |
9 | typedef uint16_t FAT_ITEM_T;
10 |
11 | /**
12 | * @defgroup FATItemState
13 | * @brief describe the fat item state. whether current item is
14 | * unused, '.' and '..', or deleted
15 | */
16 | ///@{
17 | #define S_UNUSED ((uint8_t)0x00) ///< item unused
18 | #define S_DOTS ((uint8_t)0x2E) ///< it is '.' or '..'
19 | #define S_DEL ((uint8_t)0xE5) ///< has been deleted, can be reused
20 | ///@}
21 | struct FAT_ITEM {
22 | uint8_t filename[8];
23 | uint8_t extendname[3];
24 | uint8_t mod;
25 |
26 | uint8_t res; ///< reserved
27 | uint8_t created_time; ///< ms
28 | uint16_t hms; ///< hour minute second
29 | uint16_t ymd; ///< year month day
30 | uint16_t recent_access_ymd;
31 | uint16_t bhigh_cluster;
32 |
33 | uint16_t modify_hms;
34 | uint16_t modify_ymd;
35 | uint16_t blow_cluster;
36 | uint32_t filesize; ///< in bytes
37 | }__attribute__((packed));
38 |
39 | typedef struct FAT_ITEM FAT_ITEM;
40 |
41 | /** @defgroup fileMod
42 | * @brief mod of a file(directory)
43 | */
44 | ///@{
45 | #define FAT_rw (0) ///< readable and writable
46 | #define FAT_ro (1) ///< read only
47 | #define FAT_hid (1 << 1) ///< hidden file
48 | #define FAT_sys (1 << 2) ///< system file
49 | #define FAT_fldr (1 << 4) ///< folder
50 | #define FAT_doc (1 << 5) ///< partition reserved doc
51 | #define FAT_ITEM_EMPTY {0,0,0,0,0,0,0,0,0,0,0,0,0}
52 |
53 | #define FAT_ITEM_SIZE (32)
54 | ///@}
55 |
56 | #endif
--------------------------------------------------------------------------------
/step_3/filesystem/Makefile:
--------------------------------------------------------------------------------
1 | LD=ld
2 | LDFLAGS=-melf_i386 -N
3 | CC=gcc
4 | CCFLAGS=-march=i386 -m16 -mpreferred-stack-boundary=2 -ffreestanding
5 | AS=nasm
6 | ASFLAGS=
7 |
8 | all: DBR.bin datablock.bin FAT.bin
9 |
10 | DBR.bin: DBR.o DBRkernelLoader.o fsutilities.o
11 | $(LD) $(LDFLAGS) -Ttext 0x7E00 --oformat binary -o $@ $^
12 | DBR.o: DBR.asm
13 | $(AS) $(ASFLAGS) -f elf32 -o $@ $^
14 | DBRkernelLoader.o: DBR.c fsutilities.h filesystem.h
15 | $(CC) $(CCFLAGS) -c $< -o $@ -Og
16 |
17 | datablock.o: datablock.c FATMacro.h
18 | $(CC) $(CCFLAGS) -c $^
19 | datablock.bin: datablock.o
20 | $(LD) $(LDFLAGS) -Tdata 0 --oformat binary -o $@ $^
21 |
22 | FAT.bin: FAT.o
23 | $(LD) $(LDFLAGS) --oformat binary -o $@ $^
24 | FAT.o: FAT.c
25 | $(CC) $(CCFLAGS) -c $^ -o $@
26 |
27 | fsutilities.o: fsutilities.asm
28 | $(AS) $(ASFLAGS) -f elf32 -o $@ $^
--------------------------------------------------------------------------------
/step_3/filesystem/README.md:
--------------------------------------------------------------------------------
1 | # 文件系统备忘
2 | ## 软盘空间分配
3 | MBR 主引导,跳转到DBR(汇编),在7C00 1号扇区 off 0 [000~200]
4 | DBR 操作系统引导,将内核载入内存并跳转到内核(0x8000)。在7E00 2号扇区 off 512 [200~400]
5 | (保留扇区) 3号扇区 1024 [400~600]
6 | FAT表1 4-7扇区(4个) 3*512 = 1536 [600~e00]
7 | FAT表2 8-11扇区(4个)512*7 = 3584 [e00~1600]
8 | 保留数据块 12-13 512 * 11 = 5632 [1600~1a00]
9 | 根目录数据块 14-15 512*13= 6656 [1a00~1e00]
10 | 内核程序 16-23 512*15= 7680 [1e00~2e00]
11 | home/ 24 [2e00~3000]
12 | msg 25 [3000~3200]
13 | 用户程序q 26-29 512*25=12800 [3200~3a00]
14 | 用户程序w 30-33 512*29=14848 [3a00~4200]
15 | 用户程序a 34-37 512*33=16896 [4200~4a00]
16 | 用户程序s 38-41 512*37=18944 [4a00~5200]
17 | 内核程序(接上) 42-73(32) [5200~9200]
18 | ## 软盘结构
19 | ; 磁道 面 扇区
20 | ; 0~79 0~1 1~18
21 | 1 0 2
22 | 逻辑扇区 面 运算后的结果
23 | 1~18 0 -1/18-> 0
24 | 19~36 1 -1/18-> 1
25 | 37~54 0 -1/18-> 2
26 | 55~72 1 -1/18-> 3
27 | ## 内存结构
28 | //TODO: WARNING:
29 | // 用户程序是通过LD硬编码进去的。
30 | // 在本项目中,还没有内存分配,所以就让四个程序硬编码吧
31 | // 动态内存分配后记得改过来
32 | 1:0x7C00: MBR(loader)
33 | 2:0x7E00: DBR
34 | 4:0x8200: FAT table
35 | 4:0x8A00: root area
36 | 8:0x9200: data block
37 | 32:0xA200(~0xF200) kernel
--------------------------------------------------------------------------------
/step_3/filesystem/filesystem.h:
--------------------------------------------------------------------------------
1 | #ifndef __FILE_SYSTEM_H_
2 | #define __FILE_SYSTEM_H_
3 |
4 | // WARNING: should be the same with DBR.asm
5 | #define BYTE_PER_SECTOR (512)
6 | #define SECTOR_PER_CLUSTER (1)
7 | #define RESERVED_SECTOR (2)
8 | #define NUMBER_OF_FAT (2)
9 | #define ROOT_ENTRIES (512)
10 | #define SECTOR_PER_FAT (4)
11 | #define SECTOR_PER_TRACK (36)
12 | #define NUMBER_OF_HEAD (2)
13 | #define HIDDEN_SECTOR (1)
14 |
15 | /// DEPRECATED
16 | // #define USER_PROGRAM_ADDRESS (0x6C00)
17 | #define BPB_ADDRESS (0x7E0B)
18 | #define FAT_TABLE_ADDRESS (0x8200)
19 | #define ROOT_AREA_ADDRESS (0x8A00)
20 | #define DATA_BLOCK_ADDRESS (0x9200)
21 | #define KERNEL_ADDRESS 0xA200
22 |
23 | #define _TO_STRING(X) #X
24 | #define TO_STRING(X) _TO_STRING(X)
25 |
26 | #endif
--------------------------------------------------------------------------------
/step_3/filesystem/fsutilities.asm:
--------------------------------------------------------------------------------
1 | [BITS 16]
2 | global loadSector
3 | %include "../include/bridge.inc"
4 | loadSector:
5 | ; track bp + 6
6 | ; head bp + 10
7 | ; sector bp + 14
8 | ; addr bp + 18
9 | ; num bp + 22
10 | enter 0, 0
11 | push bx
12 | push es
13 |
14 | ; sector number in low 6 bits in CL
15 | mov ax, [bp + 14]
16 | and ax, 03FH ; 0011_1111
17 | mov bx, [bp + 6]
18 | and bx, 0C0H;1100_0000
19 | add ax, bx
20 | mov cl, al
21 |
22 | ; low 8 bits of cyl in CH
23 | mov ch, [bp + 6]
24 |
25 | ; head in DH
26 | mov dh, [bp + 10]
27 |
28 | mov dl, 0 ; 0 for fd
29 |
30 |
31 | xor ax, ax
32 | mov es, ax
33 |
34 | mov bx, [bp + 18]
35 | ; address ad es:bx, so read argument to es
36 | mov ax, [bp + 20]
37 | mov es, ax
38 | xor ax, ax ; clear ax
39 |
40 | ; number of sectors to load
41 | mov al, [bp + 22]
42 |
43 | mov ah, 02H
44 | int 13H
45 |
46 | xor ah, ah
47 | and al, 0FH ; 00001111
48 |
49 | pop es
50 | pop bx
51 | leave
52 |
53 | retl
--------------------------------------------------------------------------------
/step_3/filesystem/fsutilities.h:
--------------------------------------------------------------------------------
1 | #ifndef __FS_UTILITIES_H_
2 | #define __FS_UTILITIES_H_
3 | #include
4 | #define lgsector2sector(X) (((X-1)%18)+1) ///< logic sector to sector
5 | #define lgsector2head(X) (((X-1)/18)%2) ///< logic sector to head
6 | #define lgsector2track(X) ((X-1)/36) ///< logic sector 2 track
7 | void loadSector(uint16_t track, uint16_t head, uint16_t sector, uint32_t addr, uint16_t num);
8 | static inline void loadLogicSector(uint16_t lgsector, uint32_t addr, uint16_t num) {
9 | uint16_t sectorN = lgsector2sector(lgsector);
10 | uint16_t headN = lgsector2head(lgsector);
11 | uint16_t trackN = lgsector2track(lgsector);
12 | loadSector(trackN, headN, sectorN, addr, num);
13 | }
14 |
15 | #define filesize2sectors(X) ((X+511)/512)
16 |
17 | /**
18 | * strcmp only for file system
19 | */
20 | static inline int16_t __fs_strcmp(const char* s1, const char* s2) {
21 | const char* lhs = s1;
22 | const char* rhs = s2;
23 | while (*lhs && *rhs) {
24 | if (*lhs != * rhs) {
25 | return *lhs - *rhs;
26 | }
27 | lhs++;
28 | rhs++;
29 | }
30 | return *lhs - *rhs;
31 | }
32 |
33 |
34 | #endif
--------------------------------------------------------------------------------
/step_3/include/Makefile:
--------------------------------------------------------------------------------
1 | LD=ld
2 | LDFLAGS=-melf_i386 -N
3 | CC=gcc
4 | CCFLAGS=-march=i386 -m16 -mpreferred-stack-boundary=2 -ffreestanding
5 | AS=nasm
6 | ASFLAGS=
7 |
8 | all: utilities.o mystring.o kmm.o
9 |
10 | utilities.o: utilities.asm
11 | $(AS) $(ASFLAGS) -f elf32 -o $@ $^
12 |
13 | mystring.o : mystring.c mystring.h
14 | $(CC) $(CCFLAGS) -c $^
15 | kmm.o: kmm.c
16 | $(CC) $(CCFLAGS) -c $^
17 |
18 | clean:
19 | rm *.bin -f
20 | rm *.o -f
21 | rm *.gch -f
22 | run:
23 | bochs -q
24 | rebuild:
25 | make clean
26 | make
27 |
--------------------------------------------------------------------------------
/step_3/include/bridge.inc:
--------------------------------------------------------------------------------
1 | %macro pushl 1
2 | push word 0
3 | push word %1
4 | %endmacro
5 |
6 | %macro calll 1
7 | push word 0
8 | call %1
9 | %endmacro
10 |
11 | %macro retl 0
12 | pop ecx
13 | jmp cx
14 |
15 | %endmacro
--------------------------------------------------------------------------------
/step_3/include/ctype.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file
3 | * @brief light-weight ctype.h
4 | */
5 | #ifndef __C_TYPE_H_
6 | #define __C_TYPE_H_
7 | #include
8 | static inline uint8_t isdigit(char ch) {
9 | return ch >= '0' && ch <= '9';
10 | }
11 | static inline uint8_t isalpha(char ch) {
12 | return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
13 | }
14 | static inline uint8_t isalnum(char ch) {
15 | return isdigit(ch) || isalpha(ch);
16 | }
17 | static inline uint8_t isblank(char ch) {
18 | return ch == ' ' ||
19 | ch == '\n' ||
20 | ch == '\r' ||
21 | ch == '\t';
22 | }
23 | #endif
--------------------------------------------------------------------------------
/step_3/include/graphic.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file
3 | * @brief macro for graphic
4 | * @see stdio.h
5 | *
6 | * define adequate macro for full control of color that used in text mod in terminal.
7 | */
8 | #ifndef __GRAPHIC_H_
9 | #define __GRAPHIC_H_
10 | #define __G_R (1 << 2) ///< red
11 | #define __G_G (1 << 1) ///< green
12 | #define __G_B (1) ///< blue
13 |
14 | #define G_BLACK (0)
15 | #define G_BLUE (__G_B)
16 | #define G_GREEN (__G_G)
17 | #define G_CYAN (__G_B | __G_G)
18 | #define G_RED (__G_R)
19 | #define G_PINKISH (__G_R | __G_B)
20 | #define G_BROWN (__G_G | __G_R)
21 | #define G_WHITE (__G_G | __G_B | __G_R)
22 |
23 | #define TO_FN(X) (X) ///< make defined color into describing font
24 | #define TO_BG(X) (X << 4) ///< make defined color into describing background
25 |
26 | #define G_FLASH (1 << 7) ///< whether font is Flash
27 | #define G_DARK (1 << 3) ///< whether font is light
28 |
29 | #define G_BG_BLACK (TO_BG(G_BLACK)) ///< Graphic library BackGround Black
30 | #define G_BG_WHITE (TO_BG(G_WHITE)) ///< Graphic library BackGround White
31 |
32 | #define G_FN_BLACK (TO_FN(G_BLACK)) ///< Graphic library FoNt black
33 | #define G_FN_WHITE (TO_FN(G_WHITE)) ///< Graphic library FoNt white
34 |
35 |
36 | #define G_DEFAULT (TO_FN(G_WHITE) | TO_BG(G_BLACK))
37 | #define G_DEFAULT_DARK (G_DEFAULT | G_DARK)
38 | #endif
--------------------------------------------------------------------------------
/step_3/include/kmm.h:
--------------------------------------------------------------------------------
1 | #ifndef __KERNEL_MEMORY_MENAGEMENT_H_
2 | #define __KERNEL_MEMORY_MENAGEMENT_H_
3 | #include
4 | #include
5 | #define MEM_BASE ((uint32_t) 0x10000)
6 | #define BLOCK_LITTLE_SIZE (0x20)
7 | #define BLOCK_MID_SIZE (0x800)
8 | #define BLOCK_LARGE_SIZE (0x1000)
9 |
10 | #define LITTLE_BEGIN (0)
11 | #define LITTLE_END (0x1000)
12 |
13 | #define MID_BEGIN (0x1000)
14 | #define MID_END (0xC000)
15 |
16 | #define LARGE_BEGIN (0xC000)
17 | #define LARGE_END (0xF000)
18 | //TODO: critical important here
19 | // enter and leave is workaround!
20 | // should be replaced by interupt implementation.
21 | void init_mm();
22 | uint32_t mm_get_block_nth(int32_t nth);
23 | uint32_t mm_malloc(int32_t size);
24 | uint32_t mm_get_HEAD();
25 | void mm_free(uint32_t , int32_t);
26 | #endif
--------------------------------------------------------------------------------
/step_3/include/mystring.c:
--------------------------------------------------------------------------------
1 | #include "mystring.h"
2 | int strcmp(const char* lhs, const char* rhs) {
3 | int index = 0;
4 | while (lhs[index] && rhs[index]) {
5 | if (lhs[index] != rhs[index]) {
6 | return lhs[index] - rhs[index];
7 | }
8 | index++;
9 | }
10 | return lhs[index] - rhs[index];
11 | }
12 | void* memcpy(void* dst, void const * src, int n) {
13 | for (int i = 0; i < n; ++i) {
14 | ((char *)dst)[i] = ((char*)src)[i];
15 | }
16 | return dst;
17 | }
--------------------------------------------------------------------------------
/step_3/include/mystring.h:
--------------------------------------------------------------------------------
1 | #ifndef __STRING_H_
2 | #define __STRING_H_
3 | #include
4 |
5 | static inline int16_t strlen(const char* str) {
6 | int index = 0;
7 | while (str[index]) index++;
8 | return index;
9 | }
10 |
11 | int strcmp(const char*, const char*);
12 | static inline int16_t strchr(const char* str, char chr) {
13 | const char* p = str;
14 | while (*p) {
15 | if (*p == chr) {
16 | return p - str;
17 | }
18 | p++;
19 | }
20 | return -1;
21 | }
22 | static inline int16_t strstr(const char* src, const char* tar) {
23 | int16_t src_size = strlen(src);
24 | int16_t tar_size = strlen(tar);
25 | int jmp = 0;
26 | for (int i = 0; i < src_size; ++i) {
27 | for (int j = 0; j < tar_size; ++j) {
28 | if (!tar[j] || !src[i+j] || src[i+j] != tar[j]) {
29 | jmp = 1;
30 | break;
31 | }
32 | }
33 | if (jmp == 0) {
34 | return i;
35 | } else {
36 | jmp = 0;
37 | }
38 | }
39 | return -1;
40 | }
41 | #endif
--------------------------------------------------------------------------------
/step_3/kernel/context_switch.inc:
--------------------------------------------------------------------------------
1 | extern get_current_PCB_address
2 | extern get_next_PCB_address
3 | %macro context_switch_save 0
4 | pusha
5 |
6 | push ds ; sp + 8
7 | push es ; sp + 6
8 | push fs ; sp +4
9 | push gs ; sp + 2
10 | push ss ; sp
11 | ; 低地址
12 |
13 | mov ax, 0 ; cs is 0
14 | mov es, ax
15 | mov ds, ax
16 |
17 | calll get_current_PCB_address
18 |
19 | mov bx, sp ;TODO: maybe bug
20 | mov word [ss:bx-2], sp ; sp - 2 ;TODO: important, use ss to get position!
21 |
22 | mov di, ax
23 | mov ax, sp
24 | sub ax, 2
25 | mov si, ax
26 |
27 | mov cx, 17 * 2
28 | cld
29 | rep movsb
30 | %endmacro
31 |
32 | %macro context_switch_restore 0
33 | mov ax, 0 ; cs is 0
34 | mov es, ax
35 | mov ds, ax
36 |
37 | calll get_next_PCB_address
38 | ; si and di
39 | ; move the register image into stack
40 | mov si, ax
41 | mov bx, ax
42 | mov cx, [bx]
43 | mov di, cx ; sp
44 | sub di, 2; important, bug?
45 | add bx, 2
46 | mov cx, [bx]
47 | mov ds, cx ; ss
48 | mov cx, 17 * 2
49 | cld
50 | rep movsb
51 |
52 | mov bx, ax
53 | mov cx, [bx] ;sp
54 | mov sp, cx
55 |
56 | add bx, 2
57 | mov cx, [bx] ;ss
58 | mov ss, cx
59 |
60 | pop ax; pop ignore ss
61 |
62 | pop gs
63 | pop fs
64 | pop es
65 | pop ds
66 |
67 | popa
68 |
69 | %endmacro
--------------------------------------------------------------------------------
/step_3/kernel/custom_interupt.c:
--------------------------------------------------------------------------------
1 | #include "../include/stdio.h"
2 | /**
3 | * my CRAZY 3-D stu id!
4 | */
5 | void draw_my_info() {
6 | char* a =
7 | " _____ ________ ________ ________ ________ _______ ________ ________ ";
8 | char* b =
9 | " / __ \\|\\ ____\\_____ \\|\\_____ \\ |\\_____ \\ / ___ \\|\\ ____\\\\ ___ \\ ";
10 | char* c =
11 | "|\\/_|\\ \\ \\ \\___\\|____|\\ /\\|____|\\ /_ \\|___/ //__/|_/ /\\ \\ \\___\\ \\____ \\ ";
12 | char* d =
13 | "\\|/ \\ \\ \\ \\ \\____ \\|\\ \\ \\|\\ \\ / / /__|// / /\\ \\ \\___\\|____|\\ \\ ";
14 | char* e =
15 | " \\ \\ \\ \\ ___ \\ __\\_\\ \\ __\\_\\ \\ / / / / /_/__\\ \\ ___ \\ __\\_\\ \\ ";
16 | char* f =
17 | " \\ \\__\\ \\_______\\\\_______\\|\\_______\\/__/ / |\\________\\ \\_______\\\\_______\\";
18 | char* g =
19 | " \\|__|\\|_______\\|_______|\\|_______||__|/ \\|_______|\\|_______\\|_______|";
20 | char* h =
21 | " ";
22 | draw_str(a, 7, 0) ;
23 | draw_str(b, 8, 0) ;
24 | draw_str(c, 9, 0) ;
25 | draw_str(d, 10, 0) ;
26 | draw_str(e, 11, 0) ;
27 | draw_str(f, 12, 0) ;
28 | draw_str(g, 13, 0) ;
29 | draw_str(h, 14, 0) ;
30 | }
--------------------------------------------------------------------------------
/step_3/kernel/interupt_install.asm:
--------------------------------------------------------------------------------
1 | [BITS 16]
2 | %include "context_switch"
3 | global install_interupt
4 | extern timeout
5 | install_interupt:
6 | push es
7 | push ds
8 | pusha
9 |
10 | mov ax, cs
11 | mov ds, ax
12 | xor ax, ax
13 | mov es, ax
14 | ; ;cli
15 | ; sti
16 | mov word [es: 20H], timeOut
17 | mov ax, cs
18 | mov word [es: 22H], ax
19 |
20 | popa
21 | pop ds
22 | pop es
23 |
24 | pop ecx
25 | jmp cx
26 |
27 | timeOut:
28 |
29 | pusha
30 | push gs
31 |
32 | push cs
33 | call timeout
34 |
35 | pop gs
36 | popa
37 |
38 | jmp 0F000H:0fea5H
39 |
40 | data:
41 | char db 'A'
42 | old_CS dw 0
43 | old_IP dw 0
--------------------------------------------------------------------------------
/step_3/kernel/kernel.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file
3 | * @brief used by @ref kernel.c
4 | * a header for kernel file.
5 | * why not read the source directly?
6 | */
7 | #ifndef __KERNEL_H_
8 | #define __KERNEL_H_
9 | // __asm__(".code16gcc\n");
10 | __asm__(".globl _start\n");
11 | __asm__("_start:\n");
12 | __asm__("mov $0, %eax\n");
13 | __asm__("mov %ax, %ds\n");
14 | __asm__("mov %ax, %es\n");
15 | __asm__("jmpl $0, $main\n");
16 | #endif
--------------------------------------------------------------------------------
/step_3/kernel/timeout.c:
--------------------------------------------------------------------------------
1 | /**
2 | * @file
3 | * @brief
4 | * called when clock interupt occur.
5 | * draw beautiful graph in terminal.
6 | */
7 | #include "../include/utilities.h"
8 | #include "../include/stdio.h"
9 | char ch = 'A';
10 | #define DELAY 2
11 | int delX[] = {1, 0, -1, 0};
12 | int delY[] = {0, 1, 0, -1};
13 | int direction = 0;
14 | int x = 0;
15 | int y = 0;
16 | uint8_t style = 0;
17 | void draw_terminal_board();
18 | char nextAlphabet(char);
19 | void timeout_init() {
20 | ch = 'A';
21 | x = 0;
22 | y = 0;
23 | style = 0;
24 | direction = 0;
25 | delX[0] = 1; delX[1] = 0; delX[2] = -1; delX[3] = 0;
26 | delY[0] = 0; delY[1] = 1; delY[2] = 0; delY[3] = -1;
27 | }
28 | void timeout() {
29 | // _draw_char(ch++, 0, 0x0F);
30 | draw_terminal_board();
31 | }
32 | void draw_terminal_board() {
33 | style = (style+1) & 0b00001111;
34 | ch = nextAlphabet(ch);
35 | draw_char_style(ch, y, x, style);
36 | if (y == 0 && x == 0) direction = 0;
37 | if (y == 0 && x == 79) direction = 1;
38 | if (y == 24 && x == 79) direction = 2;
39 | if (y == 24 && x == 0) direction = 3;
40 | y += delY[direction];
41 | x += delX[direction];
42 | }
43 | char nextAlphabet(char c) {
44 | if (c == 'z') return 'A';
45 | if (c == 'Z') return 'a';
46 | return c+1;
47 | }
--------------------------------------------------------------------------------
/step_3/loader/Makefile:
--------------------------------------------------------------------------------
1 | LD=ld
2 | LDFLAGS=-melf_i386 -N
3 | CC=gcc
4 | CCFLAGS=-march=i386 -m16 -mpreferred-stack-boundary=2 -ffreestanding
5 | AS=nasm
6 | ASFLAGS=
7 |
8 | loader.bin: loader.o
9 | $(LD) $(LDFLAGS) -Ttext 0x7c00 --oformat binary -o $@ $^
10 |
11 | loader.o: loader.asm
12 | $(AS) $(ASFLAGS) -f elf32 -o $@ $^
13 |
14 | clean:
15 | rm *.bin -f
16 | rm *.o -f
17 | rm *.gch -f
18 | run:
19 | bochs -q
20 | rebuild:
21 | make clean
22 | make
23 |
--------------------------------------------------------------------------------
/step_3/loader/loader.asm:
--------------------------------------------------------------------------------
1 | [BITS 16]
2 | global _start
3 |
4 | _start:
5 | mov ax, 0
6 | mov ds, ax
7 | mov es, ax
8 |
9 | load_kernel:
10 | mov dx, 1 ; count
11 | mov cl, 2
12 | mov bx, DBR_address
13 | ; cl
14 | ; bx
15 | mov ax, 0
16 | mov es, ax ; which segment to load
17 | mov ah, 2 ; function number
18 | mov al, 2 ; load two sector
19 | mov dl, 0; 0 for fd
20 | mov dh, 0; head
21 | mov ch, 0 ; low 8 bits of cyl
22 | int 13H
23 |
24 | jmp2DBR:
25 | mov bx, DBR_address
26 | jmp bx
27 | hlt
28 |
29 | blank:
30 | times 444-($-$$) db 0
31 | partition_table:
32 | .first:
33 | ; TODO: partition table in MBR
34 | times 510-($-$$) db 0
35 | dw 0xAA55
36 | DBR_address equ 0x7E00
--------------------------------------------------------------------------------
/step_3/user/kb_interupt_installer.asm:
--------------------------------------------------------------------------------
1 | [BITS 16]
2 | %include "../include/bridge.inc"
3 | extern kb_custom_interupt
4 | global kb_interupt_install
5 | global kb_interupt_uninstall
6 | kb_interupt_install:
7 | ; install int 09: keyboard interupt
8 | push gs
9 | push es
10 | push ds
11 | pusha
12 |
13 | mov ax, 0
14 | mov ds, ax
15 | mov ax, [ds: 24H]
16 | mov [old_09_ip], ax
17 | mov ax, [ds: 26H]
18 | mov [old_09_cs], ax
19 |
20 | mov word [ds: 24H] , kbCallback
21 | mov ax, cs
22 | mov word [ds: 26H] , ax
23 |
24 | popa
25 | pop ds
26 | pop es
27 | pop gs
28 |
29 | pop ecx
30 | jmp cx
31 | kb_interupt_uninstall:
32 | push ax
33 | push ds
34 |
35 | mov ax, 0
36 | mov ds, ax
37 | mov ax, [old_09_ip]
38 | mov [ds: 24H], ax
39 | mov ax, [old_09_cs]
40 | mov [ds:26H], ax
41 |
42 | pop ds
43 | pop ax
44 | retl
45 |
46 | kbCallback:
47 | pusha
48 | push ds
49 | push es
50 | push gs
51 |
52 | mov ax, 0
53 | mov ds, ax
54 |
55 | calll kb_custom_interupt
56 |
57 | pushf
58 | call far [ds:old_09_ip]
59 |
60 | pop gs
61 | pop es
62 | pop ds
63 | popa
64 |
65 | iret
66 |
67 | data:
68 | old_09_ip dw 0
69 | old_09_cs dw 0
--------------------------------------------------------------------------------
/step_3/user/kbhit.c:
--------------------------------------------------------------------------------
1 | /**
2 | * @file
3 | * @brief
4 | * keyboard cunstom interupt callback.
5 | *
6 | * currently, it only output "outch!" in user program
7 | */
8 | #include
9 | #include "../include/stdio.h"
10 | #include "../include/utilities.h"
11 | int16_t row = 8;
12 | int16_t column = 10;
13 | int16_t evenFlag = 1;
14 | void kb_custom_interupt() {
15 | if (evenFlag) {
16 | draw_str_style("ouch!", row, column, TO_FN(G_RED));
17 | column += 8;
18 | if (column > 79-10) {
19 | column = 10;
20 | row++;
21 | }
22 | }
23 | evenFlag = !evenFlag;
24 | return;
25 | }
--------------------------------------------------------------------------------
/step_3/user/stone/stone.c:
--------------------------------------------------------------------------------
1 | __asm__(
2 | ".intel_syntax noprefix\n"
3 | "movw %ax, %cs\n"
4 | "movw %ds, %ax\n"
5 | "movw %es, %ax\n"
6 | "jmp stone\n"
7 | ".att_syntax\n"
8 | );
9 |
10 | #include "../../include/utilities.h"
11 | #include "stone.h"
12 | #include "../../include/stdio.h"
13 | #define DELAY (1e5)
14 | int getKbHit();
15 | void checkBound();
16 |
17 | int x;
18 | int y;
19 | int deltax;
20 | int deltay;
21 | int stone() {
22 | // return 0;
23 | x = _X;
24 | y = _Y;
25 | deltax = 1;
26 | deltay = 1;
27 | uint8_t style = 0;
28 |
29 | // clear_screen();
30 | while(1) {
31 | int key = getKbHit();
32 | if (key == 'q') return key;
33 |
34 | int delay = DELAY;
35 | while ((--delay) >= 0) continue;
36 |
37 | draw_str(" ", y, x);
38 | x += deltax;
39 | y += deltay;
40 |
41 | checkBound();
42 | draw_str_style("A", y, x, style & 15);
43 | style++;
44 | }
45 | }
46 |
47 | int getKbHit() {
48 | int try = kbhit();
49 | if (try) {
50 | //int key = readkb(); //TODO: stone not allowed to read kb
51 | // return key;
52 |
53 | return try;
54 | }
55 | return 0;
56 | }
57 | void checkBound() {
58 | if (x <= LEFT_B) deltax = 1;
59 | if (x >= RIGHT_B) deltax = -1;
60 | if (y <= UP_B) deltay = 1;
61 | if (y >= DOWN_B) deltay = -1;
62 | }
--------------------------------------------------------------------------------
/step_3/user/stone/stone.h:
--------------------------------------------------------------------------------
1 | #ifndef __STONE_H_
2 | #define __STONE_H_
3 | #if defined(UL)
4 | #define _X 5
5 | #define _Y 5
6 | #define LEFT_B 1
7 | #define RIGHT_B 40
8 | #define UP_B 1
9 | #define DOWN_B 12
10 | #elif defined(UR)
11 | #define _X 70
12 | #define _Y 5
13 | #define LEFT_B 40
14 | #define RIGHT_B 79
15 | #define UP_B 1
16 | #define DOWN_B 12
17 | #elif defined(DL)
18 | #define _X 5
19 | #define _Y 20
20 | #define LEFT_B 1
21 | #define RIGHT_B 40
22 | #define UP_B 13
23 | #define DOWN_B 24
24 | #elif defined(DR)
25 | #define _X 70
26 | #define _Y 20
27 | #define LEFT_B 40
28 | #define RIGHT_B 79
29 | #define UP_B 13
30 | #define DOWN_B 24
31 | #endif
32 |
33 | #endif
--------------------------------------------------------------------------------
/step_3/user/terminal.h:
--------------------------------------------------------------------------------
1 | #ifndef __TERMINAL_H_
2 | #define __TERMINAL_H_
3 | int terminal();
4 | #endif
--------------------------------------------------------------------------------
/step_3/user/user.c:
--------------------------------------------------------------------------------
1 | /**
2 | * @file
3 | * @brief DEPLECATED
4 | */
5 | #include "../include/utilities.h"
6 | int sum(int end) {
7 | int sum = 0;
8 | for (int i = 0; i < end; ++i) {
9 | sum += i;
10 | }
11 | return sum;
12 | }
13 | void jumpToUser() {
14 | putln("if you see me, i will be very happy");
15 | }
--------------------------------------------------------------------------------
/step_3/user/user.h:
--------------------------------------------------------------------------------
1 | /**
2 | * @file
3 | * @brief
4 | * DEPLECATED.
5 | */
6 | #ifndef __USER_H_
7 | #define __USER_H_
8 | int sum(int);
9 | void jumpToUser();
10 | #endif
--------------------------------------------------------------------------------