Folders can contain folders or files
But files can not contain folders,
Unless they fold themself like a tree in the winds...
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.
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.
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:
Let us briefly examine each group and the files in it:
| File | Description |
|---|---|
| system32.asm | The main file of the 32bits SOL_OS part. |
This file contains:
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. |
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. |
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 |
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 |
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 |
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 |
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 |
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 |
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) |
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 |
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 |
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 |
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 |
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 |
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 |
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) |
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 |
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 |
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 |
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...