├── .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 |
9 |
No Matches
10 |
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 --------------------------------------------------------------------------------