Deleted unuseful documentation

This commit is contained in:
lucic71 2022-06-28 19:40:51 +03:00
parent 28f9618ec2
commit 4212d287f0
2 changed files with 0 additions and 111 deletions

View File

@ -1,48 +0,0 @@
I. File structure
-----------------
A. Root directory
-----------------
File structure
--------------
iso - GRUB directory that is used for emulation
kmain.c - kernel source code
loader.s - entry point in the OS that passes execution to kernel
modules/ - list of modules, each module is kept in a different directory
config/ - folder for config files
scripts/ - useful scripts and templates
Documentation.txt - file that describes important aspects about the
structure, implementation, functionality, etc
README.md - brief explanation of the project
Makefile - makefile to build the whole project
Makefile rules
--------------
all - recursively build all modules and combine them to get the kernel
run - run the OS in bochs emulator
clean - clean unimportant files (objects, executables, etc)
B. Module directories
---------------------
File structure
--------------
include/ - interfaces for modules
module_dir/ - implementation of module. Each module must have a short
description of what it does and a Makefile that will describe what
libraries it uses and other important configuration

View File

@ -1,63 +0,0 @@
I. Introduction
---------------
Framebuffer
-----------
The framebuffer is a hardware device that is capable of displaying a buffer of
memory on the screen. The framebuffer has 80 columns and 25 rows. We can
communicate with it through a memory mapped I/O address and we can consider that
it is an array of size 80x25. Its starting address is defined in screen.h as
FBUFFER_START_ADDR.
This module handles the communication with this framebuffer so that we can
display text on the screen.
Format of Framebuffer cells
---------------------------
The memory is divided into 16 bit cells that encapsulate the character and its
attributes. The character is placed in the right most 8 bits and the attributes
in the left most 8 bits. (if we consider the format where LSB is on the left and
MSB is on the right)
To encode the character ASCII codes are used.
The attribute bits are divided as follows: the left most 4 bits are for
background color, while the right most 4 bits are used for foreground color.
Depending of the mode setup, attribute bit 7 may be used for blinking thus
only 3 bits remain for background color. Attribute bit 3 may be used for
foreground intensity. Attribute bit 0 may be used for underline.
Cursor
------
Moving the cursor on the framebuffer is done via two different I/O ports. The
cursor position is a 16 bit integer that must be sent to a 8 bit I/O port.
We do that in two turns.
First, we send a byte to the command port that tells it to receive the highest
8 bits of the position, then we send the byte to data port.
Second, we send another byte to the command port that tells it to receive the
lowest 8 bits of the position. then we send the byte to data port.
The above mentioned ports are defined as macros in include/cursor.h. The
command bytes are defined in the same header.
II. Implementations
------------------
The reference code for this section can be found in screen.h and screen.c.
There are two main operation to perform: screen_init and screen_write.
screen_init will initiate the screen by filing the framebuffer with whitespaces
(ASCII character 0x20).
screen_write will put characters on the screen and will update the cursor too.
III. Further work
-----------------
Maybe I will also implement a way to disable/enable blinking by accessing
specific I/O addresses.