Solar_OS source files reference

Folders can contain folders or files
But files can not contain folders,
Unless they fold themself like a tree in the winds...


Introduction

SOL is conceptually separated into 3 main modules:

This article will shortly describe each file in the source code for the SYSTEM32 module.

This does not (yet) describe the files for the BOOT module or the SYSTEM16 module.

Methods of organization

There are a few methods by witch I organize the files in SOLAR_OS. Below is a list of those methods in order of importance.

Although you can "see" some architecture shine in the files organization, this article will NOT atempt to describe SOLAR_OS architectural organization. The architecture of SOL will be described in another article.

RadASM is the ASM IDE that I use for developing SOL and other projects. It is free, developed by KetilO and you can find it here

For me RadASM groups order is the most actual and most relevant order of the files that make up SOLAR_OS. Unfortunately if you do not have or use RadASM you can not see it and this order is not reflected exactly in the source folder tree.

Below you can see a picture of this order "groups" as they are defined in RadASM project.

RadASM project groups

Unless otherwise noted all files are originally written by Bogdan Ontanu.

No external dependency is present and no external library is used by SOL.

When noted:

The Files

Let us briefly examine each group and the files in it:

_Assembly group

File Description
system32.asm The main file of the 32bits SOL_OS part.
Remarks

This file contains:

_Build group

This group contains files used to build SOL_OS in different configurations.

File Description
bld_floppy.asm Builds SOL_OS for floppy.
bld_qemu.asm Builds SOL_OS for QEMU emulator.
bld_virtual_pc.asm Builds SOL_OS for Virtual PC emulator.
system32.loc JLOC linker control file for SOL_OS 32 bits.

App_Hw group

This group contains file used to test hardware devices and drivers for Sol. It acts like a testing and staging area before writing full drivers. Each file is usually an application that can be found under "Hardware tests" menu in SOL. Those applications might exhibit features not yet integrated in SOL. Some are just tests while other are fully functional.

Location: ./app_hw/ folder

File Description Notes
floppy_test.asm Test floppy hardware operations.
hdd_fdisk.asm Fdisk test application.
hdd_smart_show.asm HDD Smart features handling.
hdd_test.asm HDD ATA and CD-ROM ATAPI tests.
net_dc21140.asm App to configure DC21140 network driver. Eugen
net_rt8029.asm App to configure Realtek 8029 network driver. Eugen
net_rt8139.asm App to configure Realtek 8139 network driver. Eugen
net_test.asm App to test network drivers. Eugen
pci_test.asm App to test PCI drivers. Eugen
usb_test.asm App to test USB drivers.

App_Sys group

This group contains files considered to by important for Sol operations. Mostly small applications that show important OS structures or implement important OS features.

Location: ./app_sys/ folder

File Description Notes
char_map.asm Shows SOL system character map.
control_panel.asm Shows SOL Control panel.
dasm.asm SOL Disassembler main parser
dasm_methods.asm SOL Disassembler decoder methods
dasm_print.asm SOL Disassembler presentation layer
dasm_table.asm SOL Disassembler tables and strings
debug_view.asm App to view and search in debug messages output by other applications
dump_memory.asm App to view memory contents and run raw binary applications
kdebug.asm Kernel and user mode graphical debugger
net_arp.asm Application for network ARP protocol Eugen
net_dns.asm Application for network DNS protocol Eugen
net_icmp.asm Application for network ICMP protocol Eugen
net_ip.asm Application for network IP protocol Eugen
net_udp.asm Application for network UDP protocol Eugen
show_gfx.asm Application for showing OS GFX objects
show_kbd_queue.asm Application for showing OS keyboard queue
show_mem_buff.asm Application for showing OS allocator memory buffers status
show_mouse_data.asm Application for showing hardware mouse data received
show_mouse_queue.asm Application for showing OS mouse queue
show_system_counters.asm Application for showing OS counters and critical options
show_time.asm Application for showing OS counters time
sys_colors.asm Application for showing/setting OS system colors
sys_desk_bar.asm Application for showing/setting OS current selected desktop
sys_info.asm Application for showing system info
sys_screen.asm Application for taking OS screenshots and saving them on raw floppy
sys_task_bar.asm Application for showing OS tasks

App_User group

This group contains files considered to be applications.

Location: ./app_user/ folder

File Description Notes
bezier.asm Demonstrates Bezier curve drawing.
bresenham.asm Demonstrates Bresenham line and circle drawing.
disk_explore2.asm HDD Explorer application. Hawk / Bogdan
edit_caption.asm Spy windows/captions application.
game_tetris.asm Tetris game application.
hello_world.asm Hello world sample application.
menu_test.asm App for testing MENU control for SOL
simple_test.asm App used as testing pad of different features
small_sample.asm Another simple sample application
stop_watch.asm Time testing / counting Application (not finished)
test_grid.asm App used to test GRID control for SOL Hawk
view_bmp.asm App used to view 24 bits .BMP files
view_pe.asm App used to view info, map and RUN PE applications from HDD
view_text.asm App used to view text files

GFX group

This group contains files that are in fact graphical data embeded in kernel.

Locations:

File Description Notes
cursor.asm contains data structures and bitmap data for OS default mouse pointers.
font_01.asm contains bitmap data for OS default bitmap font.
font_02.asm contains bitmap data for OS alternate bitmap font.
font_04_8gr.asm contains bitmap data for OS proportional bitmap font.
dialog_48_888.asm contains bitmap data for OS icons.
stock_48_888.asm contains bitmap data for OS icons.
radio_888.asm contains bitmap data for OS icons. Jordan
sprites_wnd_888.asm contains bitmap data for OS icons. Jordan
wnd_btn_888.asm contains bitmap data for OS icons. Jordan

GUI_Controls group

This group contains files that implement SOL GUI controls.

Locations:

File Description Notes
ctrl_a_dummy.asm implements a dummy sample control (not used)
ctrl_button.asm implements BUTTON control
ctrl_check1.asm implements CHECKBOX control
ctrl_edit1.asm implements EDITBOX control
ctrl_grid.asm implements GRID control (unfinished) Hawk
ctrl_icon.asm implements ICON control
ctrl_list_box.asm implements LISTBOX control
ctrl_list_view.asm implements LISTVIEW control
ctrl_menu_pad.asm implements MENU_PAD control
ctrl_menu_pad_item.asm implements MENU_PAD_ITEM control
ctrl_menu_pop.asm implements MENU_POP control
ctrl_menu_pop_item.asm implements MENU_POP_ITEM control
ctrl_scroll_horiz.asm implements HORIZONTAL SCROLLBAR control
ctrl_scroll_vert.asm implements VERTICAL SCROLLBAR control
ctrl_slider_horiz.asm implements HORIZONTAL SLIDER control (unfinished)
ctrl_tree.asm implements TREEVIEW control
ctrl_window.asm implements WINDOW control

GUI_Dialogs group

This group contains files that implement SOL common dialogs.

Locations:

File Description
msg_box.asm implements a message box dialog
dialog_find.asm implements a Find/Find Next dialog

GUI_Main group

This group contains files that implement SOL GUI.

Locations:

File Description
gui_actions.asm implements GUI common actions
gui32.asm implements GUI main actions and system executor

Hard_HDD group

This group contains files that implement HDD drivers.

Locations:

File Description Notes
ata_func.asm implements ATA low level functions Hawk
ata_pio.asm implements ATA PIO functions
atapi_func.asm implements ATA Packet Interface - ATAPI functions
hdd_queue.asm implements SOL ATA Queue (non-blocking I/O completion) (unfinished)

Hard_IRQ group

This group contains files that implement SOL hardware IRQ handlers.

Locations:

File Description Notes
irq_00.asm implements hardware IRQ_00 handler
irq_01.asm implements hardware IRQ_01 handler
irq_02.asm implements hardware IRQ_02 handler
irq_04.asm implements hardware IRQ_04 handler
irq_06.asm implements hardware IRQ_06 handler
irq_12.asm implements hardware IRQ_12 handler
irq_14.asm implements hardware IRQ_14 handler
irq_15.asm implements hardware IRQ_15 handler
irq_dispatchers.asm implements dispatchers for all IRQ handlers Eugen
irq_hand.asm implements primary IRQ handlers and exception handlers
irq_main.asm implements common IRQ code and PIC_8259 driver

Hard_Net group

This group contains files that implement SOL network card drivers.

Everything here is written by Eugen Brasoveanu (99.999%).

Locations:

File Description
dc21140.asm implements dc21140 network card driver
ethernet.asm implements ethernet driver common interfaces
realtek8029.asm implements realtek 8029 network card driver
realtek8139.asm implements realtek 8139 network card driver

Hard_PCI group

This group contains files that implement SOL PCI driver.

Locations:

File Description Notes
pci.asm implements PCI bus driver Eugen
pci_id.inc contains pci_id.txt as data to be embedded in the kernel
pci_id.txt contains text info about PCI vendor ID and PCI devices ID that is transformed in pci_id.inc file
pci_info.asm implements PCI class/subclass/interface information retrival Eugen

Hardware group

This group contains files that implement SOL general hardware drivers.

Locations:

File Description
cmos.asm implements CMOS driver
com_port1.asm implements COM1 serial port driver
cpu1.asm implements CPU driver
dma.asm implements DMA driver
fdc_8272.asm implements floppy driver
kdb_8042.asm implements keyboard driver
mouse_main.asm implements mouse driver common routines and structures
mouse_ps2.asm implements PS/2 mouse driver
mouse_serial.asm implements Serial mouse driver on COM1
pit.asm implements PIT driver
sb16.asm implements Sound Blaster 16 driver (unfinished)
neomagic.asm implements Neomagic SVGA driver for HP OmniBook 800
vmware.asm implements wmvare driver

Help group

This group contains text help files.

Location:

File Description
help.asm help.txt converted into data defines inorder to be embeded at compile time
help.txt the help text file that will be transformed into help.asm

OS_API group

This group contains files that implement general API.

Location:

File Description Notes
api_draw_bitmap.asm implements bitmap and image render API
api_draw_circle.asm implements circle draw API
api_draw_line.asm implements line draw API
api_draw_pixel.asm implements pixel draw API
api_draw_rect.asm implements rectangle draw API
api_draw_sprite.asm implements sprite draw API
api_draw_text.asm implements text draw API
api_draw_triangle.asm implements "small triangle" draw API
api_draw_glyph.asm implements glyph draw API Bogdan / Hawk
api_gfx_object.asm implements graphical objects initialization, support and draw API
api_load_pe.asm implements support for PE loading API
api_memory.asm implements memory allocation API
api_mouse.asm implements mouse API
api_proc.asm implements export API
api_window.asm implements GUI window API

OS_API_FS group

This group contains files for fileystem API.

Location:

File Description
api_fdisk.asm FDISK (partitions) API
api_fs_ext.asm shell / file extension handlers API
api_fs_fat32.asm FAT32 filesystem API
api_fs_iso_9660.asm ISO 9660 (CDROM) filesystem API
api_fs_main.asm high level filesystem API (open, read, close)
api_fs_ntfs.asm NTFS filesystem API (not functional)

OS_API_Net group

This group contains files for network API.

Everything here is written by Eugen Brasoveanu (99.999%).

Location:

File Description
api_net_arp.asm implements network ARP protocol and API
api_net_dns.asm implements network DNS protocol and API
api_net_icmp.asm implements network ICMP (ping) protocol and API
api_net_ip.asm implements network IP protocol and API
api_net_tcp.asm implements network TCP protocol and API (not functional)
api_net_udp.asm implements network UDP protocol structures

Sol_Menu group

This group contains files for SOL on screen menus.

Location:

File Description
sol_button.asm the "SOL" start button
sol_menu_app.asm the "Applications" menu
sol_menu_control_pannel.asm the "Control Panel" menu
sol_menu_gui.asm the "GUI elements" menu
sol_menu_hw_test.asm the "Hardware Tests" menu
sol_menu_internals.asm the "OS Internals" menu
sol_menu_main.asm the "SOL MAIN" menu and Add_System_Button API
sol_menu_sw_test.asm the "Software Tests" menu

Util group

This group contains utility API.

Location:

File Description
debug.asm procedures used only during debugging
debug_macro.asm macros used for debugging and debug builds
misc.asm colector for misc utility procedures
strings.asm strings utility procedures and API
text.asm conversion from strings to number and number to strings API

Video group

This group contains video (on screen drawing) related API.

Location:

File Description
draw_char.asm draw a char on screen
draw_mouse.asm draw mouse cursor on screen
draw_utils.asm a few on screen draw utils
vesa.asm contains VESA structres definitions
video_clear.asm erase video buffer
video_colors.asm color conversion routines. Pallete setup for 8 bit modes
video_flip.asm FLIP of video buffers (non accelerated / in software)

... This is "The End" my friend ... the very End...