├── .github └── workflows │ └── main.yml ├── .gitignore ├── .gitmodules ├── LICENSE.md ├── Makefile ├── README.md ├── ap_bootstrap.md ├── ap_bootstrap.s.x86_64.arch_specific ├── bootloader ├── Makefile ├── axle_boot_info.h ├── elf.h ├── flash.sh ├── main.c ├── paging.c ├── paging.h └── uefi ├── docs ├── CODING.md ├── amc.md ├── compositor.md ├── memory_map.md └── todo.md ├── initrd ├── executable_icon.bmp ├── folder_icon.bmp ├── image_icon.bmp ├── text_icon.bmp ├── titlebar7.bmp ├── titlebar_x_filled2.bmp └── titlebar_x_unfilled2.bmp ├── kernel ├── boot │ ├── boot.s.i686.arch_specific │ └── boot.s.x86_64.arch_specific ├── crypto │ ├── aes.c │ ├── aes.h │ ├── crypto.h │ ├── sha256.c │ └── sha256.h ├── gfx │ ├── font │ │ ├── font.c │ │ ├── font.h │ │ └── font8x8.h │ └── lib │ │ ├── ca_layer.c │ │ ├── ca_layer.h │ │ ├── color.c │ │ ├── color.h │ │ ├── gfx.c │ │ ├── gfx.h │ │ ├── point.c │ │ ├── point.h │ │ ├── putpixel.c │ │ ├── putpixel.h │ │ ├── rect.c │ │ ├── rect.h │ │ ├── screen.c │ │ ├── screen.h │ │ ├── size.c │ │ └── size.h ├── kernel │ ├── address_space.c │ ├── address_space.h │ ├── address_space_bitmap.c │ ├── address_space_bitmap.h │ ├── ap_bootstrap.h │ ├── assert.c │ ├── assert.h │ ├── axle.h │ ├── boot.h │ ├── boot_info.c │ ├── boot_info.h │ ├── drivers │ │ ├── kb │ │ │ ├── kb.c │ │ │ └── kb.h │ │ ├── mouse │ │ │ ├── mouse.c │ │ │ └── mouse.h │ │ ├── pit │ │ │ ├── pit.c │ │ │ └── pit.h │ │ ├── ps2 │ │ │ ├── ps2.c │ │ │ └── ps2.h │ │ ├── rtc │ │ │ ├── clock.c │ │ │ └── clock.h │ │ ├── serial │ │ │ ├── serial.c │ │ │ └── serial.h │ │ └── terminal │ │ │ ├── terminal.c │ │ │ └── terminal.h │ ├── elf.c │ ├── elf.h │ ├── interrupts │ │ ├── cpu_fault_handlers.c │ │ ├── cpu_fault_handlers.h │ │ ├── idt.c │ │ ├── idt.h │ │ ├── idt_activate.s.i686.arch_specific │ │ ├── idt_activate.s.x86_64.arch_specific │ │ ├── idt_structures.h │ │ ├── int_handler_stubs.h │ │ ├── int_handler_stubs.s.i686.arch_specific │ │ ├── int_handler_stubs.s.x86_64.arch_specific │ │ ├── interrupts.c │ │ ├── interrupts.h │ │ ├── pic.c │ │ └── pic.h │ ├── kernel.c │ ├── kernel.h │ ├── multiboot.h │ ├── multitasking │ │ ├── tasks │ │ │ ├── mlfq.c │ │ │ ├── mlfq.h │ │ │ ├── process_small.s.i686.arch_specific │ │ │ ├── process_small.s.x86_64.arch_specific │ │ │ ├── reaper.c │ │ │ ├── reaper.h │ │ │ ├── task_small.c │ │ │ ├── task_small.h │ │ │ └── task_small_int.h │ │ ├── util.c │ │ └── util.h │ ├── pmm │ │ ├── pmm.c.i686.arch_specific │ │ ├── pmm.h │ │ ├── pmm_int.h.i686.arch_specific │ │ └── pmm_int.h.x86_64.arch_specific │ ├── segmentation │ │ ├── gdt.c │ │ ├── gdt.h │ │ ├── gdt_activate.s.i686.arch_specific │ │ ├── gdt_activate.s.x86_64.arch_specific │ │ └── gdt_structures.h │ ├── smp.c │ ├── smp.h │ ├── syscall │ │ ├── syscall.c │ │ ├── syscall.h │ │ ├── sysfuncs.c │ │ └── sysfuncs.h │ ├── util │ │ ├── adi │ │ │ ├── adi.c │ │ │ └── adi.h │ │ ├── amc │ │ │ ├── amc.c │ │ │ ├── amc.h │ │ │ ├── amc_internal.h │ │ │ ├── core_commands.c │ │ │ └── core_commands.h │ │ ├── elf │ │ │ ├── elf.c │ │ │ └── elf.h │ │ ├── mutex │ │ │ ├── mutex.c │ │ │ └── mutex.h │ │ ├── spinlock │ │ │ ├── spinlock.c │ │ │ └── spinlock.h │ │ ├── unistd │ │ │ ├── read.c │ │ │ ├── read.h │ │ │ ├── unistd.h │ │ │ ├── write.c │ │ │ └── write.h │ │ ├── walk_stack.s.i686.arch_specific │ │ ├── walk_stack.s.x86_64.arch_specific │ │ └── yxml │ │ │ ├── yxml.c │ │ │ └── yxml.h │ └── vmm │ │ ├── vmm.c.i686.arch_specific │ │ ├── vmm.c.x86_64.arch_specific │ │ ├── vmm.h.i686.arch_specific │ │ └── vmm.h.x86_64.arch_specific ├── lib │ └── iberty │ │ ├── iberty.c │ │ └── iberty.h ├── std │ ├── array_m.c │ ├── array_m.h │ ├── circular_buffer.c │ ├── circular_buffer.h │ ├── common.c │ ├── common.h │ ├── ctype.c │ ├── ctype.h │ ├── hash_map.c │ ├── hash_map.h │ ├── kheap.c │ ├── kheap.h │ ├── klog.h │ ├── list.c │ ├── list.h │ ├── list_node.c │ ├── list_node.h │ ├── math.c │ ├── math.h │ ├── memory.c │ ├── memory.h │ ├── printf.c │ ├── printf.h │ ├── rand.c │ ├── rand.h │ ├── rand_internal.h │ ├── std.c │ ├── std.h │ ├── std_base.h │ ├── string.c │ ├── string.h │ ├── timer.c │ ├── timer.h │ └── unlikely.h └── tests │ ├── test.c │ ├── test.h │ ├── test_memory_usage_proc_pool.c │ └── test_memory_usage_proc_pool.h ├── notes └── notes.md ├── os_dist ├── config │ ├── desktop_shortcuts.txt │ └── run_on_startup.txt └── images │ ├── executable_icon.bmp │ ├── folder_icon.bmp │ ├── image_icon.bmp │ ├── text_icon.bmp │ ├── titlebar7.bmp │ ├── titlebar_x_filled2.bmp │ └── titlebar_x_unfilled2.bmp ├── programs ├── cross_axle_template.ini ├── meson.build ├── subprojects │ ├── 2048 │ │ ├── 2048.c │ │ └── meson.build │ ├── activity_monitor │ │ ├── activity_monitor.c │ │ └── meson.build │ ├── ata_driver │ │ ├── ata_driver.c │ │ ├── ata_driver.h │ │ ├── ata_driver_messages.h │ │ └── meson.build │ ├── awm │ │ ├── animations.c │ │ ├── animations.h │ │ ├── awm.c │ │ ├── awm.h │ │ ├── awm_internal.h │ │ ├── awm_messages.h │ │ ├── composite.c │ │ ├── composite.h │ │ ├── effects.c │ │ ├── effects.h │ │ ├── math.h │ │ ├── meson.build │ │ ├── utils.c │ │ ├── utils.h │ │ ├── window.c │ │ └── window.h │ ├── breakout │ │ ├── breakout.c │ │ └── meson.build │ ├── cat │ │ ├── cat.c │ │ └── meson.build │ ├── crash_reporter │ │ ├── crash_reporter.c │ │ ├── crash_reporter_messages.h │ │ └── meson.build │ ├── doom │ │ ├── am_map.c │ │ ├── am_map.h │ │ ├── config.h │ │ ├── d_englsh.h │ │ ├── d_event.c │ │ ├── d_event.h │ │ ├── d_items.c │ │ ├── d_items.h │ │ ├── d_iwad.c │ │ ├── d_iwad.h │ │ ├── d_loop.c │ │ ├── d_loop.h │ │ ├── d_main.c │ │ ├── d_main.h │ │ ├── d_mode.c │ │ ├── d_mode.h │ │ ├── d_net.c │ │ ├── d_player.h │ │ ├── d_textur.h │ │ ├── d_think.h │ │ ├── d_ticcmd.h │ │ ├── deh_main.h │ │ ├── deh_misc.h │ │ ├── deh_str.h │ │ ├── doom.h │ │ ├── doomdata.h │ │ ├── doomdef.c │ │ ├── doomdef.h │ │ ├── doomfeatures.h │ │ ├── doomgeneric.c │ │ ├── doomgeneric.h │ │ ├── doomgeneric_axle.c │ │ ├── doomkeys.h │ │ ├── doomstat.c │ │ ├── doomstat.h │ │ ├── doomtype.h │ │ ├── dstrings.c │ │ ├── dstrings.h │ │ ├── dummy.c │ │ ├── f_finale.c │ │ ├── f_finale.h │ │ ├── f_wipe.c │ │ ├── f_wipe.h │ │ ├── g_game.c │ │ ├── g_game.h │ │ ├── gusconf.c │ │ ├── gusconf.h │ │ ├── hu_lib.c │ │ ├── hu_lib.h │ │ ├── hu_stuff.c │ │ ├── hu_stuff.h │ │ ├── i_cdmus.c │ │ ├── i_cdmus.h │ │ ├── i_endoom.c │ │ ├── i_endoom.h │ │ ├── i_input.c │ │ ├── i_joystick.c │ │ ├── i_joystick.h │ │ ├── i_main.c │ │ ├── i_scale.c │ │ ├── i_scale.h │ │ ├── i_sound.c │ │ ├── i_sound.h │ │ ├── i_swap.h │ │ ├── i_system.c │ │ ├── i_system.h │ │ ├── i_timer.c │ │ ├── i_timer.h │ │ ├── i_video.c │ │ ├── i_video.h │ │ ├── icon.c │ │ ├── info.c │ │ ├── info.h │ │ ├── m_argv.c │ │ ├── m_argv.h │ │ ├── m_bbox.c │ │ ├── m_bbox.h │ │ ├── m_cheat.c │ │ ├── m_cheat.h │ │ ├── m_config.c │ │ ├── m_config.h │ │ ├── m_controls.c │ │ ├── m_controls.h │ │ ├── m_fixed.c │ │ ├── m_fixed.h │ │ ├── m_menu.c │ │ ├── m_menu.h │ │ ├── m_misc.c │ │ ├── m_misc.h │ │ ├── m_random.c │ │ ├── m_random.h │ │ ├── memio.c │ │ ├── memio.h │ │ ├── meson.build │ │ ├── net_client.h │ │ ├── net_dedicated.h │ │ ├── net_defs.h │ │ ├── net_gui.h │ │ ├── net_io.h │ │ ├── net_loop.h │ │ ├── net_packet.h │ │ ├── net_query.h │ │ ├── net_sdl.h │ │ ├── net_server.h │ │ ├── p_ceilng.c │ │ ├── p_doors.c │ │ ├── p_enemy.c │ │ ├── p_floor.c │ │ ├── p_inter.c │ │ ├── p_inter.h │ │ ├── p_lights.c │ │ ├── p_local.h │ │ ├── p_map.c │ │ ├── p_maputl.c │ │ ├── p_mobj.c │ │ ├── p_mobj.h │ │ ├── p_plats.c │ │ ├── p_pspr.c │ │ ├── p_pspr.h │ │ ├── p_saveg.c │ │ ├── p_saveg.h │ │ ├── p_setup.c │ │ ├── p_setup.h │ │ ├── p_sight.c │ │ ├── p_spec.c │ │ ├── p_spec.h │ │ ├── p_switch.c │ │ ├── p_telept.c │ │ ├── p_tick.c │ │ ├── p_tick.h │ │ ├── p_user.c │ │ ├── r_bsp.c │ │ ├── r_bsp.h │ │ ├── r_data.c │ │ ├── r_data.h │ │ ├── r_defs.h │ │ ├── r_draw.c │ │ ├── r_draw.h │ │ ├── r_local.h │ │ ├── r_main.c │ │ ├── r_main.h │ │ ├── r_plane.c │ │ ├── r_plane.h │ │ ├── r_segs.c │ │ ├── r_segs.h │ │ ├── r_sky.c │ │ ├── r_sky.h │ │ ├── r_state.h │ │ ├── r_things.c │ │ ├── r_things.h │ │ ├── s_sound.c │ │ ├── s_sound.h │ │ ├── sha1.c │ │ ├── sha1.h │ │ ├── sounds.c │ │ ├── sounds.h │ │ ├── st_lib.c │ │ ├── st_lib.h │ │ ├── st_stuff.c │ │ ├── st_stuff.h │ │ ├── statdump.c │ │ ├── statdump.h │ │ ├── tables.c │ │ ├── tables.h │ │ ├── v_patch.h │ │ ├── v_video.c │ │ ├── v_video.h │ │ ├── w_checksum.c │ │ ├── w_checksum.h │ │ ├── w_file.c │ │ ├── w_file.h │ │ ├── w_file_stdc.c │ │ ├── w_main.c │ │ ├── w_main.h │ │ ├── w_merge.h │ │ ├── w_wad.c │ │ ├── w_wad.h │ │ ├── wi_stuff.c │ │ ├── wi_stuff.h │ │ ├── z_zone.c │ │ └── z_zone.h │ ├── echo │ │ ├── echo.c │ │ └── meson.build │ ├── empty │ │ ├── empty.c │ │ └── meson.build │ ├── false │ │ ├── false.c │ │ └── meson.build │ ├── file_manager │ │ ├── ata.c │ │ ├── ata.h │ │ ├── fat.c │ │ ├── fat.h │ │ ├── file_manager.c │ │ ├── file_manager_messages.h │ │ ├── fs_node.h │ │ ├── initrd.c │ │ ├── initrd.h │ │ ├── math.h │ │ ├── meson.build │ │ ├── ui.c │ │ ├── ui.h │ │ ├── util.c │ │ ├── util.h │ │ ├── vfs.c │ │ └── vfs.h │ ├── image_viewer │ │ ├── image_viewer.c │ │ ├── image_viewer_messages.h │ │ └── meson.build │ ├── kb_driver │ │ ├── generate_keyboard_map.py │ │ ├── kb_colemak.h │ │ ├── kb_driver.c │ │ ├── kb_driver.h │ │ ├── kb_driver_messages.h │ │ └── meson.build │ ├── libagx │ │ ├── font │ │ │ ├── font.c │ │ │ ├── font.h │ │ │ └── font8x8.h │ │ ├── lib │ │ │ ├── ca_layer.c │ │ │ ├── ca_layer.h │ │ │ ├── color.c │ │ │ ├── color.h │ │ │ ├── elem_stack.c │ │ │ ├── elem_stack.h │ │ │ ├── gfx.h │ │ │ ├── hash_map.c │ │ │ ├── hash_map.h │ │ │ ├── point.c │ │ │ ├── point.h │ │ │ ├── putpixel.c │ │ │ ├── putpixel.h │ │ │ ├── rect.c │ │ │ ├── rect.h │ │ │ ├── screen.c │ │ │ ├── screen.h │ │ │ ├── shapes.c │ │ │ ├── shapes.h │ │ │ ├── size.c │ │ │ ├── size.h │ │ │ ├── text_box.c │ │ │ ├── text_box.h │ │ │ ├── util.c │ │ │ └── util.h │ │ ├── libagx.h │ │ ├── math.h │ │ └── meson.build │ ├── libamc │ │ ├── libamc.c │ │ ├── libamc.h │ │ └── meson.build │ ├── libfiles │ │ ├── libfiles.c │ │ ├── libfiles.h │ │ └── meson.build │ ├── libgui │ │ ├── gfx.h │ │ ├── gui_button.c │ │ ├── gui_button.h │ │ ├── gui_elem.h │ │ ├── gui_layer.c │ │ ├── gui_layer.h │ │ ├── gui_scroll_view.c │ │ ├── gui_scroll_view.h │ │ ├── gui_scrollbar.c │ │ ├── gui_scrollbar.h │ │ ├── gui_slider.c │ │ ├── gui_slider.h │ │ ├── gui_text_input.c │ │ ├── gui_text_input.h │ │ ├── gui_text_view.c │ │ ├── gui_text_view.h │ │ ├── gui_timer.c │ │ ├── gui_timer.h │ │ ├── gui_view.c │ │ ├── gui_view.h │ │ ├── libgui.c │ │ ├── libgui.h │ │ ├── meson.build │ │ ├── utils.c │ │ └── utils.h │ ├── libimg │ │ ├── libimg.c │ │ ├── libimg.h │ │ ├── meson.build │ │ ├── nanojpeg.c │ │ └── nanojpeg.h │ ├── libnet │ │ ├── libnet.c │ │ ├── libnet.h │ │ └── meson.build │ ├── libport │ │ ├── libport.c │ │ ├── libport.h │ │ └── meson.build │ ├── libutils │ │ ├── array.c │ │ ├── array.h │ │ ├── assert.c │ │ ├── assert.h │ │ ├── cmp.h │ │ ├── libutils.h │ │ ├── meson.build │ │ ├── sleep.c │ │ └── sleep.h │ ├── logs_viewer │ │ ├── logs_viewer.c │ │ └── meson.build │ ├── memory_scan_viewer │ │ ├── memory_scan_viewer.c │ │ └── meson.build │ ├── memory_walker │ │ ├── memory_walker.c │ │ └── meson.build │ ├── mouse_driver │ │ ├── meson.build │ │ ├── mouse_driver.c │ │ └── mouse_driver_messages.h │ ├── net │ │ ├── arp.c │ │ ├── arp.h │ │ ├── callback.c │ │ ├── callback.h │ │ ├── dns.c │ │ ├── dns.h │ │ ├── ethernet.c │ │ ├── ethernet.h │ │ ├── ipv4.c │ │ ├── ipv4.h │ │ ├── meson.build │ │ ├── net.c │ │ ├── net.h │ │ ├── net_messages.h │ │ ├── tcp.c │ │ ├── tcp.h │ │ ├── udp.c │ │ ├── udp.h │ │ ├── util.c │ │ └── util.h │ ├── netclient │ │ ├── css.c │ │ ├── css.h │ │ ├── elem_stack.c │ │ ├── elem_stack.h │ │ ├── gfx.h │ │ ├── html.c │ │ ├── html.h │ │ ├── layout.c │ │ ├── layout.h │ │ ├── meson.build │ │ ├── mock-request.h │ │ ├── netclient.c │ │ ├── render.c │ │ ├── render.h │ │ ├── shims.c │ │ ├── shims.h │ │ ├── utils.c │ │ └── utils.h │ ├── paintbrush │ │ ├── meson.build │ │ └── paintbrush.c │ ├── pci_driver │ │ ├── meson.build │ │ ├── pci_driver.c │ │ ├── pci_driver.h │ │ └── pci_messages.h │ ├── preferences │ │ ├── meson.build │ │ ├── preferences.c │ │ └── preferences_messages.h │ ├── print_and_exit │ │ ├── meson.build │ │ └── print_and_exit.c │ ├── rainbow │ │ ├── meson.build │ │ └── rainbow.c │ ├── realtek_8139_driver │ │ ├── meson.build │ │ ├── realtek_8139_driver.c │ │ ├── realtek_8139_driver.h │ │ └── rtl8139_messages.h │ ├── snake │ │ ├── meson.build │ │ └── snake.c │ ├── task_viewer │ │ ├── meson.build │ │ └── task_viewer.c │ ├── terminal │ │ ├── meson.build │ │ ├── terminal.c │ │ └── terminal.h │ ├── textpad │ │ ├── meson.build │ │ └── textpad.c │ ├── true │ │ ├── meson.build │ │ └── true.c │ └── watchdogd │ │ ├── meson.build │ │ ├── watchdogd.c │ │ ├── watchdogd.h │ │ └── watchdogd_messages.h └── tlsclient │ ├── asn1.c │ ├── asn1.h │ ├── big_int.c │ ├── big_int.h │ ├── meson.build │ ├── tls.c │ ├── tls.h │ └── tlsclient.c ├── python-dependencies.txt ├── resources ├── grub.cfg └── linker.ld ├── rust_kernel_libs ├── Cargo.lock ├── Cargo.toml ├── acpi │ ├── Cargo.toml │ └── src │ │ ├── amc.rs │ │ ├── apic.rs │ │ ├── interrupts.rs │ │ ├── lib.rs │ │ ├── scheduler.rs │ │ ├── smp.rs │ │ ├── spinlocks.rs │ │ ├── structs.rs │ │ └── utils.rs ├── ffi_bindings │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── pmm │ ├── Cargo.toml │ └── src │ │ └── lib.rs └── x86_64-unknown-axle_kernel.json ├── rust_programs ├── Cargo.toml ├── agx_definitions │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ ├── font.rs │ │ ├── layer.rs │ │ └── lib.rs ├── awm2 │ ├── .gitignore │ ├── Cargo.toml │ ├── requirements.md │ └── src │ │ ├── animations.rs │ │ ├── bitmap.rs │ │ ├── compositor.rs │ │ ├── desktop.rs │ │ ├── effects.rs │ │ ├── events.rs │ │ ├── keyboard.rs │ │ ├── main.rs │ │ ├── main_axle.rs │ │ ├── main_std.rs │ │ ├── mouse.rs │ │ ├── shortcuts.rs │ │ ├── utils.rs │ │ └── window.rs ├── awm_messages │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ ├── awm2_messages.h │ │ ├── build.rs │ │ └── lib.rs ├── axle_rt │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ ├── core_commands.rs │ │ └── lib.rs ├── axle_rt_derive │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── c_compiler │ ├── Cargo.toml │ └── src │ │ ├── codegen.rs │ │ ├── lexer.rs │ │ ├── main.rs │ │ ├── main_axle.rs │ │ ├── main_std.rs │ │ ├── optimizer.rs │ │ ├── parser.rs │ │ └── simulator.rs ├── compilation_definitions │ ├── Cargo.toml │ └── src │ │ ├── asm.rs │ │ ├── encoding.rs │ │ ├── instructions.rs │ │ ├── lib.rs │ │ ├── prelude.rs │ │ └── registers.rs ├── dock │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── dock_messages │ ├── .gitignore │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ ├── dock_messages.h │ │ └── lib.rs ├── example_program │ ├── Cargo.toml │ └── src │ │ ├── main.rs │ │ ├── main_axle.rs │ │ └── main_std.rs ├── file_browser │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── file_manager_messages │ ├── .gitignore │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ ├── file_server_messages.h │ │ └── lib.rs ├── gb_emu │ ├── .gitignore │ ├── Cargo.lock │ ├── Cargo.toml │ └── src │ │ ├── cpu.rs │ │ ├── gameboy.rs │ │ ├── interrupts.rs │ │ ├── joypad.rs │ │ ├── main.rs │ │ ├── main_axle.rs │ │ ├── main_std.rs │ │ ├── mmu.rs │ │ ├── ppu.rs │ │ ├── serial.rs │ │ └── timer.rs ├── gpt_helper │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── ide │ ├── .gitignore │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ ├── ide_messages.h │ │ ├── ide_messages.rs │ │ ├── main.rs │ │ ├── output_view.rs │ │ ├── source_code_view.rs │ │ └── status_view.rs ├── image_viewer_messages │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── initrd_fs │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── kb_driver_messages │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── libfs │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── libgui │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ ├── bordered.rs │ │ ├── button.rs │ │ ├── font.rs │ │ ├── label.rs │ │ ├── lib.rs │ │ ├── scroll_view.rs │ │ ├── text_input_view.rs │ │ ├── text_view.rs │ │ ├── ui_elements.rs │ │ ├── view.rs │ │ ├── window_axle.rs │ │ ├── window_events.rs │ │ ├── window_std.rs │ │ └── window_uefi.rs ├── libgui_derive │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── linker │ ├── Cargo.toml │ ├── rustfmt.toml │ └── src │ │ ├── assembly_lexer.rs │ │ ├── assembly_packer.rs │ │ ├── assembly_parser.rs │ │ ├── lib.rs │ │ ├── main.rs │ │ ├── main_axle.rs │ │ ├── main_std.rs │ │ ├── new_try.rs │ │ ├── records.rs │ │ └── symbols.rs ├── linker_messages │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── menu_bar │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── menu_bar_messages │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── mouse_driver_messages │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── preferences_messages │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── sata_driver │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ ├── main.rs │ │ ├── pci_messages.rs │ │ └── sata_definitions.rs ├── sata_driver_messages │ ├── .gitignore │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ ├── lib.rs │ │ └── sata_driver_messages.h ├── saved_capture.txt ├── saved_capture1.txt ├── ttf_renderer │ ├── Cargo.toml │ └── src │ │ ├── character_map.rs │ │ ├── glyphs.rs │ │ ├── hints.rs │ │ ├── lib.rs │ │ ├── metrics.rs │ │ ├── parse_utils.rs │ │ ├── parser.rs │ │ ├── render.rs │ │ └── render_context.rs ├── ttf_viewer │ ├── Cargo.toml │ └── src │ │ ├── font_viewer.rs │ │ ├── main.rs │ │ ├── main_axle.rs │ │ ├── main_std.rs │ │ └── utils.rs ├── x86_64-unknown-axle.json └── xplatform_gui │ ├── Cargo.toml │ └── src │ ├── main.rs │ ├── main_axle.rs │ └── main_std.rs ├── screenshots ├── boot.png ├── circle.png ├── color_test.png ├── desktop1.png ├── desktop2.png ├── doom.jpg ├── help.png ├── julia.png ├── mandelbrot.png ├── rect.png ├── startup.png ├── text_test.png └── triangle.png ├── scripts ├── binutils.patch ├── build_kernel_headers.py ├── build_meson_projects.py ├── build_newlib.py ├── build_os_image.py ├── build_os_toolchain.py ├── build_programs.py ├── build_quick.py ├── build_rust_toolchain.py ├── build_userspace_headers.py ├── build_utils.py ├── clean-duplicate-files-named-2.py ├── create_hard_drive_image.py ├── flash_usb.py ├── gcc.patch ├── hopper.py ├── install_dependencies.py ├── install_linux.py ├── list_libc_headers.py ├── mkinitrd │ ├── .gitignore │ ├── Cargo.lock │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── newlib.patch ├── run_axle.py ├── rust_libc.patch └── stage_images.py └── site ├── assets └── axle.svg ├── awm.html ├── docs ├── html │ ├── aes_8h_source.html │ ├── animator_8h_source.html │ ├── annotated.html │ ├── array__l_8h_source.html │ ├── array__m_8h_source.html │ ├── array__o_8h_source.html │ ├── asmjit_8h_source.html │ ├── bc_s.png │ ├── bdwn.png │ ├── bmp_8h_source.html │ ├── button_8h_source.html │ ├── ca__layer_8h_source.html │ ├── calculator_8h_source.html │ ├── circular__buffer_8h_source.html │ ├── classes.html │ ├── clock_8h_source.html │ ├── close_8h_source.html │ ├── closed.png │ ├── color_8h_source.html │ ├── common_8h_source.html │ ├── crypto_8h_source.html │ ├── ctype_8h_source.html │ ├── descriptor__tables_8h_source.html │ ├── dir_006cde671736cb3e0e8f6dad4de0ddd2.html │ ├── dir_05579cfa9032ba8af0763113b3a4873c.html │ ├── dir_0addfd89f8b50fed3337d0aea39cd71c.html │ ├── dir_0e0d1fa832c75408d679171fe126e36a.html │ ├── dir_138853cd1db50e645a71bd53680ff16f.html │ ├── dir_14d20d605aa92beb6c214125967f5261.html │ ├── dir_1b969e5e0415847ec44eb66ab42a5062.html │ ├── dir_1d5bcaf0ef709869c8ec97fbd602b55f.html │ ├── dir_1e4b4a645210dfc0e8dbad6c9bb08618.html │ ├── dir_1e9bb6deb523c4200f98c78048b9fae1.html │ ├── dir_24a2fd238b6589fd9f2e163c535f9159.html │ ├── dir_35cc8732b9b12bff97c887348dd5b1ad.html │ ├── dir_3b03f8a184556c51e272f55e9031e413.html │ ├── dir_4261af1259721e3e39e0d2dd7354b511.html │ ├── dir_52b22a0e3a69a11d2d8df7c1548212e7.html │ ├── dir_5de3327ff260e594597fa360ce5287cf.html │ ├── dir_5ee395c3fcd252f42090420669e5f7be.html │ ├── dir_68267d1309a1af8e8297ef4c3efbcdba.html │ ├── dir_71017a83341381b0f755ee40b26b6645.html │ ├── dir_7125a63be608d5b0a5cb708658f6f686.html │ ├── dir_77b97e4335fc31704ee282d26999dd29.html │ ├── dir_78b47aa4b998f4425ab6f6d99882b65a.html │ ├── dir_7faf84be0a238e2294086b557062eef3.html │ ├── dir_8328768c0c63f679576a263df82f47a5.html │ ├── dir_8b0164eb0fb74115683f9812cb2f78f0.html │ ├── dir_900581f72f943a880f1f2bb7586fde7a.html │ ├── dir_92b3f0dd0871f03d6b1b62148a14d336.html │ ├── dir_951b0f34ba90bfa3f5cbb9337dc72d8a.html │ ├── dir_95997cde2d2988f238ac82f6da0769f9.html │ ├── dir_964f2ef89448db6dea75d58e4c12a386.html │ ├── dir_aee9ab6fedb00380c94a3a6c6b09f99a.html │ ├── dir_b48c9f6fcb42ed6a12da8075fc6ab188.html │ ├── dir_bed20eb59341ae51146510a8061b4d66.html │ ├── dir_c1b611b1823b20f1ef680d502aae6b4b.html │ ├── dir_c85d3e3c5052e9ad9ce18c6863244a25.html │ ├── dir_c86603f79b902ad390ffc2674fbc4470.html │ ├── dir_cbd7f246bdf7dc0a50281a272327e6ed.html │ ├── dir_cfe76dcdaf9f369e9e9723b4e01306cb.html │ ├── dir_d1bcc236dc106e41ecfd0ed09b4c7e77.html │ ├── dir_d93a1d4020dea85bb71b237545b5e722.html │ ├── dir_db8fb8b1f0b6471ce3b8420d03b2f92d.html │ ├── dir_e44d38ef5b41655e44130ee638668425.html │ ├── dir_e6a4798784ba0abaa651298c0f6010cf.html │ ├── dir_ea39ebf78c831526a651c285e9c01a63.html │ ├── dir_eb168930ba9048cd1d3eee0abf44b5d7.html │ ├── dir_ee2f8627e30e92ecb86206ab51d12ec8.html │ ├── dir_f21a48f78eea9287cfd4f05d116b9b45.html │ ├── dir_f499df0936c48bf1c7a6ea79096bbb05.html │ ├── dir_f762610fd4b281b6d2510dea981b94a1.html │ ├── dir_f8f278e8e7b27c47fa36f2fbda6fdcd5.html │ ├── dir_f96bd62c0b4564514ea400b0d63944b7.html │ ├── dir_fe9004854c8f0f3cfbfe7f330be58a96.html │ ├── doc.png │ ├── doxygen.css │ ├── doxygen.png │ ├── driver_8h_source.html │ ├── dup_8h_source.html │ ├── dynsections.js │ ├── e1000_8h_source.html │ ├── elf_8h_source.html │ ├── fd_8h_source.html │ ├── fd__entry_8h_source.html │ ├── files.html │ ├── folderclosed.png │ ├── folderopen.png │ ├── font8x8_8h_source.html │ ├── font_8h_source.html │ ├── fs_8h_source.html │ ├── fs__file_8h_source.html │ ├── fs__file__internal_8h_source.html │ ├── fscodec_8h_source.html │ ├── fsdec_8h_source.html │ ├── gfx_2lib_2util_8h_source.html │ ├── gfx_8h_source.html │ ├── gfx__test_8h_source.html │ ├── ide_8h_source.html │ ├── index.html │ ├── initrd_8h_source.html │ ├── int32_8h_source.html │ ├── isr_8h_source.html │ ├── jpeg_8h_source.html │ ├── jquery.js │ ├── kb_8h_source.html │ ├── kb__us_8h_source.html │ ├── kbman_8h_source.html │ ├── kernel_2util_2multitasking_2util_8h_source.html │ ├── kernel_8h_source.html │ ├── keymap_8h_source.html │ ├── kheap_8h_source.html │ ├── klog_8h_source.html │ ├── label_8h_source.html │ ├── launcher_8h_source.html │ ├── lib_2iberty_2iberty_8h_source.html │ ├── list_8h_source.html │ ├── list__node_8h_source.html │ ├── macho_8h_source.html │ ├── map1_8h_source.html │ ├── map2_8h_source.html │ ├── math_8h_source.html │ ├── memory_8h_source.html │ ├── menu.js │ ├── menudata.js │ ├── mmio_8h_source.html │ ├── mouse_8h_source.html │ ├── multiboot_8h_source.html │ ├── mutex_8h_source.html │ ├── nav_f.png │ ├── nav_g.png │ ├── nav_h.png │ ├── open.png │ ├── paging_8h_source.html │ ├── panic_8h_source.html │ ├── pci__detect_8h_source.html │ ├── pipe_8h_source.html │ ├── pit_8h_source.html │ ├── point_8h_source.html │ ├── printf_8h_source.html │ ├── rand_8h_source.html │ ├── rand__internal_8h_source.html │ ├── rd__file_8h_source.html │ ├── rd__file__internal_8h_source.html │ ├── read_8h_source.html │ ├── record_8h_source.html │ ├── rect_8h_source.html │ ├── replacements_8h_source.html │ ├── rexle_8h_source.html │ ├── 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_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 │ │ ├── classes_1.html │ │ ├── classes_1.js │ │ ├── classes_10.html │ │ ├── classes_10.js │ │ ├── classes_11.html │ │ ├── classes_11.js │ │ ├── classes_12.html │ │ ├── classes_12.js │ │ ├── classes_2.html │ │ ├── classes_2.js │ │ ├── classes_3.html │ │ ├── classes_3.js │ │ ├── classes_4.html │ │ ├── classes_4.js │ │ ├── classes_5.html │ │ ├── classes_5.js │ │ ├── classes_6.html │ │ ├── classes_6.js │ │ ├── classes_7.html │ │ ├── classes_7.js │ │ ├── classes_8.html │ │ ├── classes_8.js │ │ ├── classes_9.html │ │ ├── classes_9.js │ │ ├── classes_a.html │ │ ├── classes_a.js │ │ ├── classes_b.html │ │ ├── classes_b.js │ │ ├── classes_c.html │ │ ├── classes_c.js │ │ ├── classes_d.html │ │ ├── classes_d.js │ │ ├── classes_e.html │ │ ├── classes_e.js │ │ ├── classes_f.html │ │ ├── classes_f.js │ │ ├── close.png │ │ ├── mag_sel.png │ │ ├── nomatches.html │ │ ├── search.css │ │ ├── search.js │ │ ├── search_l.png │ │ ├── search_m.png │ │ ├── search_r.png │ │ └── searchdata.js │ ├── serial_8h_source.html │ ├── sha256_8h_source.html │ ├── shapes_8h_source.html │ ├── shell_8h_source.html │ ├── sincostan_8h_source.html │ ├── size_8h_source.html │ ├── snake_8h_source.html │ ├── splitbar.png │ ├── stackprotect_8h_source.html │ ├── std_8h_source.html │ ├── std__base_8h_source.html │ ├── std__stream_8h_source.html │ ├── string_8h_source.html │ ├── struct____attribute____-members.html │ ├── struct____attribute____.html │ ├── struct__cpu__type__names-members.html │ ├── struct__cpu__type__names.html │ ├── struct__nj__cmp-members.html │ ├── struct__nj__cmp.html │ ├── struct__nj__code-members.html │ ├── struct__nj__code.html │ ├── struct__nj__ctx-members.html │ ├── struct__nj__ctx.html │ ├── struct_s_h_a256___c_t_x-members.html │ ├── struct_s_h_a256___c_t_x.html │ ├── struct_vec2d-members.html │ ├── struct_vec2d.html │ ├── structalloc__block__t-members.html │ ├── structalloc__block__t.html │ ├── structarray__l-members.html │ ├── structarray__l.html │ ├── structarray__l__item-members.html │ ├── structarray__l__item.html │ ├── structarray__m-members.html │ ├── structarray__m.html │ ├── structarray__o-members.html │ ├── structarray__o.html │ ├── structbitmap-members.html │ ├── structbitmap.html │ ├── structbutton-members.html │ ├── structbutton.html │ ├── structca__animation-members.html │ ├── structca__animation.html │ ├── structca__layer__t-members.html │ ├── structca__layer__t.html │ ├── structcircle-members.html │ ├── structcircle.html │ ├── structcircular__buffer-members.html │ ├── structcircular__buffer.html │ ├── structcolor-members.html │ ├── structcolor.html │ ├── structcommand-members.html │ ├── structcommand.html │ ├── structcommand__table__t-members.html │ ├── structcommand__table__t.html │ ├── structcoordinate-members.html │ ├── structcoordinate.html │ ├── structdirent-members.html │ ├── structdirent.html │ ├── structe1000__rx__desc-members.html │ ├── structe1000__rx__desc.html │ ├── structe1000__tx__desc-members.html │ ├── structe1000__tx__desc.html │ ├── structelf__header-members.html │ ├── structelf__header.html │ ├── structelf__phdr-members.html │ ├── structelf__phdr.html │ ├── structelf__rel-members.html │ ├── structelf__rel.html │ ├── structelf__rela-members.html │ ├── structelf__rela.html │ ├── structelf__s__header-members.html │ ├── structelf__s__header.html │ ├── structelf__sym__tab-members.html │ ├── structelf__sym__tab.html │ ├── structelf__t-members.html │ ├── structelf__t.html │ ├── structfd__entry-members.html │ ├── structfd__entry.html │ ├── structfile__t-members.html │ ├── structfile__t.html │ ├── structfs__file-members.html │ ├── structfs__file.html │ ├── structfs__node-members.html │ ├── structfs__node.html │ ├── structgame__state-members.html │ ├── structgame__state.html │ ├── structgdt__entry__struct-members.html │ ├── structgdt__entry__struct.html │ ├── structgdt__ptr__struct-members.html │ ├── structgdt__ptr__struct.html │ ├── structgradient-members.html │ ├── structgradient.html │ ├── structheap__t-members.html │ ├── structheap__t.html │ ├── structidt__entry__struct-members.html │ ├── structidt__entry__struct.html │ ├── structidt__ptr__struct-members.html │ ├── structidt__ptr__struct.html │ ├── structinitrd__file__header__t-members.html │ ├── structinitrd__file__header__t.html │ ├── structinitrd__header__t-members.html │ ├── structinitrd__header__t.html │ ├── structkeymap-members.html │ ├── structkeymap.html │ ├── structlabel-members.html │ ├── structlabel.html │ ├── structline-members.html │ ├── structline.html │ ├── structlist__node__s-members.html │ ├── structlist__node__s.html │ ├── structlist__s-members.html │ ├── structlist__s.html │ ├── structload__command-members.html │ ├── structload__command.html │ ├── structlock__t-members.html │ ├── structlock__t.html │ ├── structmach__header-members.html │ ├── structmach__header.html │ ├── structmtwist__s-members.html │ ├── structmtwist__s.html │ ├── structmultiboot__info-members.html │ ├── structmultiboot__info.html │ ├── structpage-members.html │ ├── structpage.html │ ├── structpage__directory-members.html │ ├── structpage__directory.html │ ├── structpage__table-members.html │ ├── structpage__table.html │ ├── structpci__device-members.html │ ├── structpci__device.html │ ├── structpipe__block__info-members.html │ ├── structpipe__block__info.html │ ├── structpipe__t-members.html │ ├── structpipe__t.html │ ├── structrect-members.html │ ├── structrect.html │ ├── structregisters-members.html │ ├── structregisters.html │ ├── structscreen__t-members.html │ ├── structscreen__t.html │ ├── structsegment__command-members.html │ ├── structsegment__command.html │ ├── structsize-members.html │ ├── structsize.html │ ├── structsnake__player-members.html │ ├── structsnake__player.html │ ├── structstd__stream-members.html │ ├── structstd__stream.html │ ├── structtask-members.html │ ├── structtask.html │ ├── structtask__history-members.html │ ├── structtask__history.html │ ├── structterm__cell__color-members.html │ ├── structterm__cell__color.html │ ├── structterm__cursor-members.html │ ├── structterm__cursor.html │ ├── structterm__scroll__state-members.html │ ├── structterm__scroll__state.html │ ├── structtime__t-members.html │ ├── structtime__t.html │ ├── structtimer__callback-members.html │ ├── structtimer__callback.html │ ├── structtriangle-members.html │ ├── structtriangle.html │ ├── structtss__entry__struct-members.html │ ├── structtss__entry__struct.html │ ├── structvbe__mode__info-members.html │ ├── structvbe__mode__info.html │ ├── structvesa__info-members.html │ ├── structvesa__info.html │ ├── structview-members.html │ ├── structview.html │ ├── structwindow-members.html │ ├── structwindow.html │ ├── sync_off.png │ ├── sync_on.png │ ├── syscall_8h_source.html │ ├── sysfuncs_8h_source.html │ ├── tab_a.png │ ├── tab_b.png │ ├── tab_h.png │ ├── tab_s.png │ ├── tabs.css │ ├── task_8h_source.html │ ├── terminal_8h_source.html │ ├── test_8h_source.html │ ├── timer_8h_source.html │ ├── union_double-members.html │ ├── union_double.html │ ├── unionrawcolor-members.html │ ├── unionrawcolor.html │ ├── unionterm__display-members.html │ ├── unionterm__display.html │ ├── unistd_8h_source.html │ ├── unlikely_8h_source.html │ ├── usage__monitor_8h_source.html │ ├── user_2extern_2shell_2lib_2iberty_2iberty_8h_source.html │ ├── util_2elf_2elf_8h_source.html │ ├── vbe_8h_source.html │ ├── vesa_8h_source.html │ ├── vga_8h_source.html │ ├── view_8h_source.html │ ├── window_8h_source.html │ ├── write_8h_source.html │ └── xserv_8h_source.html ├── latex │ ├── Makefile │ ├── annotated.tex │ ├── dir_006cde671736cb3e0e8f6dad4de0ddd2.tex │ ├── dir_05579cfa9032ba8af0763113b3a4873c.tex │ ├── dir_0addfd89f8b50fed3337d0aea39cd71c.tex │ ├── dir_0e0d1fa832c75408d679171fe126e36a.tex │ ├── dir_138853cd1db50e645a71bd53680ff16f.tex │ ├── dir_14d20d605aa92beb6c214125967f5261.tex │ ├── dir_1b969e5e0415847ec44eb66ab42a5062.tex │ ├── dir_1d5bcaf0ef709869c8ec97fbd602b55f.tex │ ├── dir_1e4b4a645210dfc0e8dbad6c9bb08618.tex │ ├── dir_1e9bb6deb523c4200f98c78048b9fae1.tex │ ├── dir_24a2fd238b6589fd9f2e163c535f9159.tex │ ├── dir_35cc8732b9b12bff97c887348dd5b1ad.tex │ ├── dir_3b03f8a184556c51e272f55e9031e413.tex │ ├── dir_4261af1259721e3e39e0d2dd7354b511.tex │ ├── dir_52b22a0e3a69a11d2d8df7c1548212e7.tex │ ├── dir_5de3327ff260e594597fa360ce5287cf.tex │ ├── dir_5ee395c3fcd252f42090420669e5f7be.tex │ ├── dir_68267d1309a1af8e8297ef4c3efbcdba.tex │ ├── dir_71017a83341381b0f755ee40b26b6645.tex │ ├── dir_7125a63be608d5b0a5cb708658f6f686.tex │ ├── dir_77b97e4335fc31704ee282d26999dd29.tex │ ├── dir_78b47aa4b998f4425ab6f6d99882b65a.tex │ ├── dir_7faf84be0a238e2294086b557062eef3.tex │ ├── dir_8328768c0c63f679576a263df82f47a5.tex │ ├── dir_8b0164eb0fb74115683f9812cb2f78f0.tex │ ├── dir_900581f72f943a880f1f2bb7586fde7a.tex │ ├── dir_92b3f0dd0871f03d6b1b62148a14d336.tex │ ├── dir_951b0f34ba90bfa3f5cbb9337dc72d8a.tex │ ├── dir_95997cde2d2988f238ac82f6da0769f9.tex │ ├── dir_964f2ef89448db6dea75d58e4c12a386.tex │ ├── dir_aee9ab6fedb00380c94a3a6c6b09f99a.tex │ ├── dir_b48c9f6fcb42ed6a12da8075fc6ab188.tex │ ├── dir_bed20eb59341ae51146510a8061b4d66.tex │ ├── dir_c1b611b1823b20f1ef680d502aae6b4b.tex │ ├── dir_c85d3e3c5052e9ad9ce18c6863244a25.tex │ ├── dir_c86603f79b902ad390ffc2674fbc4470.tex │ ├── dir_cbd7f246bdf7dc0a50281a272327e6ed.tex │ ├── dir_cfe76dcdaf9f369e9e9723b4e01306cb.tex │ ├── dir_d1bcc236dc106e41ecfd0ed09b4c7e77.tex │ ├── dir_d93a1d4020dea85bb71b237545b5e722.tex │ ├── dir_db8fb8b1f0b6471ce3b8420d03b2f92d.tex │ ├── dir_e44d38ef5b41655e44130ee638668425.tex │ ├── dir_e6a4798784ba0abaa651298c0f6010cf.tex │ ├── dir_ea39ebf78c831526a651c285e9c01a63.tex │ ├── dir_eb168930ba9048cd1d3eee0abf44b5d7.tex │ ├── dir_ee2f8627e30e92ecb86206ab51d12ec8.tex │ ├── dir_f21a48f78eea9287cfd4f05d116b9b45.tex │ ├── dir_f499df0936c48bf1c7a6ea79096bbb05.tex │ ├── dir_f762610fd4b281b6d2510dea981b94a1.tex │ ├── dir_f8f278e8e7b27c47fa36f2fbda6fdcd5.tex │ ├── dir_f96bd62c0b4564514ea400b0d63944b7.tex │ ├── dir_fe9004854c8f0f3cfbfe7f330be58a96.tex │ ├── doxygen.sty │ ├── refman.tex │ ├── struct____attribute____.tex │ ├── struct__cpu__type__names.tex │ ├── struct__nj__cmp.tex │ ├── struct__nj__code.tex │ ├── struct__nj__ctx.tex │ ├── struct_s_h_a256___c_t_x.tex │ ├── struct_vec2d.tex │ ├── structalloc__block__t.tex │ ├── structarray__l.tex │ ├── structarray__l__item.tex │ ├── structarray__m.tex │ ├── structarray__o.tex │ ├── structbitmap.tex │ ├── structbutton.tex │ ├── structca__animation.tex │ ├── structca__layer__t.tex │ ├── structcircle.tex │ ├── structcircular__buffer.tex │ ├── structcolor.tex │ ├── structcommand.tex │ ├── structcommand__table__t.tex │ ├── structcoordinate.tex │ ├── structdirent.tex │ ├── structe1000__rx__desc.tex │ ├── structe1000__tx__desc.tex │ ├── structelf__header.tex │ ├── structelf__phdr.tex │ ├── structelf__rel.tex │ ├── structelf__rela.tex │ ├── structelf__s__header.tex │ ├── structelf__sym__tab.tex │ ├── structelf__t.tex │ ├── structfd__entry.tex │ ├── structfile__t.tex │ ├── structfs__file.tex │ ├── structfs__node.tex │ ├── structgame__state.tex │ ├── structgdt__entry__struct.tex │ ├── structgdt__ptr__struct.tex │ ├── structgradient.tex │ ├── structheap__t.tex │ ├── structidt__entry__struct.tex │ ├── structidt__ptr__struct.tex │ ├── structinitrd__file__header__t.tex │ ├── structinitrd__header__t.tex │ ├── structkeymap.tex │ ├── structlabel.tex │ ├── structline.tex │ ├── structlist__node__s.tex │ ├── structlist__s.tex │ ├── structload__command.tex │ ├── structlock__t.tex │ ├── structmach__header.tex │ ├── structmtwist__s.tex │ ├── structmultiboot__info.tex │ ├── structpage.tex │ ├── structpage__directory.tex │ ├── structpage__table.tex │ ├── structpci__device.tex │ ├── structpipe__block__info.tex │ ├── structpipe__t.tex │ ├── structrect.tex │ ├── structregisters.tex │ ├── structscreen__t.tex │ ├── structsegment__command.tex │ ├── structsize.tex │ ├── structsnake__player.tex │ ├── structstd__stream.tex │ ├── structtask.tex │ ├── structtask__history.tex │ ├── structterm__cell__color.tex │ ├── structterm__cursor.tex │ ├── structterm__scroll__state.tex │ ├── structtime__t.tex │ ├── structtimer__callback.tex │ ├── structtriangle.tex │ ├── structtss__entry__struct.tex │ ├── structvbe__mode__info.tex │ ├── structvesa__info.tex │ ├── structview.tex │ ├── structwindow.tex │ ├── union_double.tex │ ├── unionrawcolor.tex │ └── unionterm__display.tex └── scheduler.md ├── gfx.html ├── index.html ├── main.css ├── multitasking.html └── screenshots ├── awm.png ├── desktop1.png ├── desktop2.png ├── doom.jpg ├── pci_tree.png ├── quick-edit.png └── task_manager_with_cpu.png /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "bootloader/posix-uefi"] 2 | path = bootloader/posix-uefi 3 | url = https://gitlab.com/bztsrc/posix-uefi 4 | -------------------------------------------------------------------------------- /bootloader/Makefile: -------------------------------------------------------------------------------- 1 | TARGET = BOOTX64.EFI 2 | 3 | include uefi/Makefile 4 | 5 | -------------------------------------------------------------------------------- /bootloader/paging.h: -------------------------------------------------------------------------------- 1 | #ifndef PAGING_H 2 | #define PAGING_H 3 | 4 | #include 5 | 6 | #define PAGE_SIZE 0x1000 7 | #define ROUND_TO_NEXT_PAGE(val) ((val + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) 8 | 9 | typedef union pml4e pml4e_t; 10 | 11 | uint64_t map_region_1gb_pages(pml4e_t* page_mapping_level4, uint64_t vmem_start, uint64_t vmem_size, uint64_t phys_start); 12 | uint64_t map_region_4k_pages(pml4e_t* page_mapping_level4, uint64_t vmem_start, uint64_t vmem_size, uint64_t phys_start); 13 | pml4e_t* map2(void); 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /bootloader/uefi: -------------------------------------------------------------------------------- 1 | posix-uefi/uefi -------------------------------------------------------------------------------- /docs/CODING.md: -------------------------------------------------------------------------------- 1 | Code Style 2 | ------------ 3 | 4 | Indent using 4 spaces. 5 | 6 | Functions are declared on a single line. 7 | 8 | Definitions and defines should be aligned where possible. 9 | -------------------------------------------------------------------------------- /initrd/executable_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/initrd/executable_icon.bmp -------------------------------------------------------------------------------- /initrd/folder_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/initrd/folder_icon.bmp -------------------------------------------------------------------------------- /initrd/image_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/initrd/image_icon.bmp -------------------------------------------------------------------------------- /initrd/text_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/initrd/text_icon.bmp -------------------------------------------------------------------------------- /initrd/titlebar7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/initrd/titlebar7.bmp -------------------------------------------------------------------------------- /initrd/titlebar_x_filled2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/initrd/titlebar_x_filled2.bmp -------------------------------------------------------------------------------- /initrd/titlebar_x_unfilled2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/initrd/titlebar_x_unfilled2.bmp -------------------------------------------------------------------------------- /kernel/boot/boot.s.x86_64.arch_specific: -------------------------------------------------------------------------------- 1 | [bits 64] 2 | 3 | [section .text] 4 | 5 | [section .bss] 6 | 7 | [global _kernel_stack_bottom] 8 | [global _kernel_stack_top] 9 | 10 | _kernel_stack_bottom: 11 | align 4096 ; ensure stack is page-aligned 12 | resb 16384 ; reserve 16kb stack for kernel 13 | _kernel_stack_top: 14 | -------------------------------------------------------------------------------- /kernel/crypto/crypto.h: -------------------------------------------------------------------------------- 1 | #ifndef crypto_H 2 | #define crypto_H 3 | 4 | #include "aes.h" 5 | #include "sha256.h" 6 | 7 | #endif // crypto_H 8 | -------------------------------------------------------------------------------- /kernel/crypto/sha256.h: -------------------------------------------------------------------------------- 1 | #ifndef SHA256_H 2 | #define SHA256_H 3 | 4 | #include 5 | #include 6 | 7 | #define SHA256_BLOCK_SIZE 32 8 | 9 | typedef unsigned char BYTE; 10 | typedef unsigned int WORD; 11 | 12 | typedef struct { 13 | BYTE data[64]; 14 | WORD datalen; 15 | unsigned long long bitlen; 16 | WORD state[8]; 17 | } SHA256_CTX; 18 | 19 | void sha256_init(SHA256_CTX *ctx); 20 | void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len); 21 | void sha256_final(SHA256_CTX *ctx, BYTE hash[]); 22 | 23 | int sha256_test(); 24 | 25 | #endif // SHA256_H 26 | -------------------------------------------------------------------------------- /kernel/gfx/lib/point.c: -------------------------------------------------------------------------------- 1 | #include "point.h" 2 | 3 | Point point_make(int x, int y) { 4 | Point coord; 5 | coord.x = x; 6 | coord.y = y; 7 | return coord; 8 | } 9 | 10 | Point point_zero() { 11 | return point_make(0, 0); 12 | } 13 | -------------------------------------------------------------------------------- /kernel/gfx/lib/point.h: -------------------------------------------------------------------------------- 1 | #ifndef POINT_H 2 | #define POINT_H 3 | 4 | typedef struct coordinate { 5 | int x; 6 | int y; 7 | } Point; 8 | 9 | Point point_make(int x, int y); 10 | Point point_zero(); 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /kernel/gfx/lib/putpixel.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "putpixel.h" 4 | #include "screen.h" 5 | 6 | __attribute__((always_inline)) 7 | inline void putpixel_alpha(ca_layer* layer, int x, int y, Color color, int alpha) { 8 | Deprecated(); 9 | } 10 | 11 | __attribute__((always_inline)) 12 | inline void putpixel(ca_layer* layer, int x, int y, Color color) { 13 | Deprecated(); 14 | } 15 | -------------------------------------------------------------------------------- /kernel/gfx/lib/putpixel.h: -------------------------------------------------------------------------------- 1 | #ifndef PUTPIXEL_H 2 | #define PUTPIXEL_H 3 | 4 | #include 5 | #include "ca_layer.h" 6 | #include "color.h" 7 | 8 | // Draw a pixel within the provided layer 9 | void putpixel(ca_layer* layer, int x, int y, Color color); 10 | 11 | // Draw a pixel within the provided layer, and alpha-blend with the existing layer contents 12 | void putpixel_alpha(ca_layer* layer, int x, int y, Color color, int alpha); 13 | 14 | #endif -------------------------------------------------------------------------------- /kernel/gfx/lib/screen.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/kernel/gfx/lib/screen.c -------------------------------------------------------------------------------- /kernel/gfx/lib/screen.h: -------------------------------------------------------------------------------- 1 | #ifndef GFX_SCREEN_H 2 | #define GFX_SCREEN_H 3 | 4 | #include "size.h" 5 | #include "ca_layer.h" 6 | 7 | typedef struct window Window; 8 | 9 | // Root display structure to which all graphics are rendered 10 | // This may only be created via a call to gfx_init() 11 | typedef struct screen_t { 12 | uintptr_t* physbase; //address of beginning of framebuffer 13 | uint32_t video_memory_size; 14 | 15 | Size resolution; 16 | uint16_t bits_per_pixel; 17 | uint8_t bytes_per_pixel; 18 | 19 | Size default_font_size; //recommended font size for screen resolution 20 | 21 | ca_layer* vmem; //raw framebuffer pushed to screen 22 | Window* window; //root window 23 | } Screen; 24 | 25 | //copy all double buffer data to real screen 26 | void write_screen(Screen* screen); 27 | //copy 'region' from double buffer to real screen 28 | void write_screen_region(Rect region); 29 | 30 | 31 | #endif -------------------------------------------------------------------------------- /kernel/gfx/lib/size.c: -------------------------------------------------------------------------------- 1 | #include "size.h" 2 | 3 | Size size_make(int w, int h) { 4 | Size size; 5 | size.width = w; 6 | size.height = h; 7 | return size; 8 | } 9 | 10 | Size size_zero() { 11 | return size_make(0, 0); 12 | } 13 | -------------------------------------------------------------------------------- /kernel/gfx/lib/size.h: -------------------------------------------------------------------------------- 1 | #ifndef SIZE_H 2 | #define SIZE_H 3 | 4 | typedef struct size { 5 | int width; 6 | int height; 7 | } Size; 8 | 9 | Size size_make(int w, int h); 10 | Size size_zero(); 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /kernel/kernel/address_space.c: -------------------------------------------------------------------------------- 1 | #include "address_space.h" 2 | 3 | uintptr_t addr_space_frame_floor(uintptr_t addr) { 4 | uint32_t orig=addr; 5 | if (addr & ~PAGING_FRAME_MASK) { 6 | addr &= PAGING_FRAME_MASK; 7 | return addr - PAGING_FRAME_SIZE; 8 | } 9 | return addr; 10 | 11 | } 12 | 13 | uintptr_t addr_space_page_floor(uintptr_t addr) { 14 | return addr_space_frame_floor(addr); 15 | } 16 | 17 | uintptr_t addr_space_frame_ceil(uintptr_t addr) { 18 | if (addr & ~PAGING_FRAME_MASK) { 19 | addr &= PAGING_FRAME_MASK; 20 | return addr + PAGING_FRAME_SIZE; 21 | } 22 | return addr; 23 | } 24 | 25 | uintptr_t addr_space_page_ceil(uintptr_t addr) { 26 | return addr_space_frame_ceil(addr); 27 | } 28 | -------------------------------------------------------------------------------- /kernel/kernel/assert.h: -------------------------------------------------------------------------------- 1 | #ifndef ASSERT_H 2 | #define ASSERT_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #define NotImplemented() do {_panic("Not implemented", __FILE__, __LINE__);} while(0); 9 | #define Deprecated() do {_panic("Explicitly deprecated", __FILE__, __LINE__);} while(0); 10 | 11 | #define panic(msg) _panic(msg, __FILE__, __LINE__); 12 | #define PANIC(msg) panic(msg) 13 | 14 | #define assert(cond, msg) if (!(cond)) {PANIC(msg)} 15 | #define ASSERT(cond, msg, ...) assert(cond, msg) 16 | 17 | void _panic(const char* msg, const char* file, int line); 18 | 19 | void task_assert(bool cond, const char* msg, const register_state_t* regs); 20 | bool should_relaunch_crashed_amc_service(); 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /kernel/kernel/boot.h: -------------------------------------------------------------------------------- 1 | #ifndef BOOT_EXPORTS_H 2 | #define BOOT_EXPORTS_H 3 | 4 | #include 5 | 6 | //labels defined in boot.s 7 | extern uint32_t _kernel_stack_bottom; 8 | extern uint32_t _kernel_stack_top; 9 | 10 | //labels defined in link.ld 11 | extern uint32_t _kernel_image_start; 12 | extern uint32_t _kernel_image_end; 13 | 14 | #endif -------------------------------------------------------------------------------- /kernel/kernel/drivers/kb/kb.h: -------------------------------------------------------------------------------- 1 | #ifndef KB_DRIVER_H 2 | #define KB_DRIVER_H 3 | 4 | #include 5 | 6 | __BEGIN_DECLS 7 | 8 | // "SSC" means "Scan Code Set" here, i.e. the set of bytes corresponding to 9 | // physical keyboard keys. 10 | #define KBD_SSC_CMD 0xF0 11 | #define KBD_SSC_GET 0x00 12 | #define KBD_SSC_2 0x02 13 | #define KBD_SSC_3 0x03 14 | 15 | //non-blocking getchar() 16 | //returns NULL if no pending keys 17 | char kgetch(); 18 | //blocks until character is recieved 19 | char getchar(); 20 | //check if there is a pending keypress 21 | bool haskey(); 22 | //return mask of modifier keys 23 | char kb_modifiers(); 24 | 25 | // Initialize PS/2 keyboard driver 26 | void ps2_keyboard_enable(void); 27 | void ps2_keyboard_driver_launch(); 28 | //swap layout to interpret incoming scancodes 29 | void switch_layout(void* layout); 30 | //get current layout 31 | void* kb_layout(); 32 | 33 | __END_DECLS 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /kernel/kernel/drivers/mouse/mouse.h: -------------------------------------------------------------------------------- 1 | #ifndef MOUSE_H 2 | #define MOUSE_H 3 | 4 | #include 5 | #include 6 | 7 | // TODO(PT): use this! 8 | typedef struct mouse_button_state { 9 | bool left_down : 1; 10 | bool right_down : 1; 11 | bool middle_down : 1; 12 | } mouse_button_state_t; 13 | 14 | // PS/2 controller calls this to do extra setup for the PS/2 mouse device 15 | void ps2_mouse_enable(void); 16 | // Kernel calls this to launch the mouse driver 17 | void ps2_mouse_driver_launch(void); 18 | 19 | //returns current button states in bitmask 20 | //0th bit is left button state 21 | //1st bit is right button state 22 | //2nd bit is middle button state 23 | uint8_t mouse_events(); 24 | 25 | //blocks running task until mouse event is recieved 26 | void mouse_event_wait(); 27 | 28 | void mouse_reset_cursorpos(); 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /kernel/kernel/drivers/pit/pit.h: -------------------------------------------------------------------------------- 1 | #ifndef PIT_H 2 | #define PIT_H 3 | 4 | #include 5 | #include 6 | 7 | #define PIT_INT_VECTOR INT_VECTOR_IRQ0 8 | 9 | #define PIT_TICK_GRANULARITY_1MS 1000 10 | #define PIT_TICK_GRANULARITY_5MS 200 11 | #define PIT_TICK_GRANULARITY_10MS 100 12 | #define PIT_TICK_GRANULARITY_20MS 50 13 | #define PIT_TICK_GRANULARITY_50MS 20 14 | #define PIT_TICK_GRANULARITY_100MS 10 15 | #define PIT_TICK_GRANULARITY_1000MS 1 16 | 17 | void pit_timer_init(uint32_t frequency); 18 | void pit_set_frequency(uint32_t frequency); 19 | 20 | uint32_t pit_clock(); 21 | uint32_t tick_count(); 22 | 23 | uintptr_t ms_since_boot(void); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /kernel/kernel/drivers/serial/serial.h: -------------------------------------------------------------------------------- 1 | #ifndef SERIAL_H 2 | #define SERIAL_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | void serial_init(); 9 | 10 | void serial_putchar(char c); 11 | void serial_puts(char* str); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /kernel/kernel/interrupts/idt_activate.s.i686.arch_specific: -------------------------------------------------------------------------------- 1 | ; export symbol to C code 2 | [global idt_activate] 3 | idt_activate: 4 | ; pointer to IDT is passed as first parameter on stack 5 | mov eax, [esp+4] 6 | ; load dereferenced IDT pointer 7 | lidt [eax] 8 | ret -------------------------------------------------------------------------------- /kernel/kernel/interrupts/idt_activate.s.x86_64.arch_specific: -------------------------------------------------------------------------------- 1 | [GLOBAL idt_activate] 2 | idt_activate: 3 | ; https://aaronbloomfield.github.io/pdr/book/x86-64bit-ccc-chapter.pdf 4 | ; IDT pointer is passed as the first parameter 5 | lidt [rdi] 6 | ret -------------------------------------------------------------------------------- /kernel/kernel/interrupts/interrupts.h: -------------------------------------------------------------------------------- 1 | #ifndef INTERRUPTS_H 2 | #define INTERRUPTS_H 3 | 4 | #include 5 | 6 | #include "idt_structures.h" 7 | #include "idt.h" 8 | 9 | typedef int (*int_callback_t)(register_state_t*); 10 | 11 | //sets up IDT, 12 | //and registers default interrupt handlers 13 | void interrupt_init(void); 14 | 15 | //request a callback to be invoked when interrupt vector `interrupt_num` is 16 | //processed by the CPU 17 | void interrupt_setup_callback(uint8_t interrupt_num, int_callback_t callback); 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /kernel/kernel/interrupts/pic.h: -------------------------------------------------------------------------------- 1 | #ifndef PIC_H 2 | #define PIC_H 3 | 4 | #include 5 | 6 | void pic_remap(int offset1, int offset2); 7 | void pic_signal_end_of_interrupt(uint8_t irq_no); 8 | void pic_set_interrupt_enabled(int interrupt, bool enabled); 9 | bool is_interrupt_vector_delivered_by_pic(int interrupt); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /kernel/kernel/kernel.h: -------------------------------------------------------------------------------- 1 | #ifndef KERNEL_H 2 | #define KERNEL_H 3 | 4 | #include 5 | 6 | // https://stackoverflow.com/questions/195975/how-to-make-a-char-string-from-a-c-macros-value 7 | #define _STR_VALUE(arg) #arg 8 | #define _FUNCTION_NAME(name) _STR_VALUE(name) 9 | 10 | // NOTE: This function name is special-cased in the kernel crash handler. 11 | #define AMC_EXEC_TRAMPOLINE_NAME _amc_exec_trampoline 12 | #define AMC_EXEC_TRAMPOLINE_NAME_STR _FUNCTION_NAME(AMC_EXEC_TRAMPOLINE_NAME) 13 | 14 | // NOTE: This function name is special-cased in the kernel crash handler. 15 | #define FS_SERVER_EXEC_TRAMPOLINE_NAME _fs_server_trampoline 16 | #define FS_SERVER_EXEC_TRAMPOLINE_NAME_STR _FUNCTION_NAME(FS_SERVER_EXEC_TRAMPOLINE_NAME) 17 | 18 | // TODO(PT): Move this to a different file? Where? 19 | void FS_SERVER_EXEC_TRAMPOLINE_NAME(uint32_t arg1, uint32_t arg2, uint32_t arg3); 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /kernel/kernel/multitasking/tasks/mlfq.h: -------------------------------------------------------------------------------- 1 | #ifndef MLFQ_H 2 | #define MLFQ_H 3 | 4 | #include "task_small.h" 5 | 6 | void mlfq_init(void); 7 | 8 | void mlfq_add_task_to_queue(task_small_t* task, uint32_t queue_idx); 9 | bool mlfq_choose_task(task_small_t** out_task, uint32_t* out_quantum); 10 | bool mlfq_prepare_for_switch_from_task(task_small_t* task); 11 | bool mlfq_priority_boost_if_necessary(void); 12 | bool mlfq_next_quantum_for_task(task_small_t* task, uint32_t* out_quantum); 13 | void mlfq_delete_task(task_small_t* task); 14 | void mlfq_print(void); 15 | 16 | #endif -------------------------------------------------------------------------------- /kernel/kernel/multitasking/tasks/reaper.h: -------------------------------------------------------------------------------- 1 | #ifndef REAPER_H 2 | #define REAPER_H 3 | 4 | void reaper_task(void); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /kernel/kernel/multitasking/tasks/task_small_int.h: -------------------------------------------------------------------------------- 1 | #ifndef TASK_SMALL_INTERNAL_H 2 | #define TASK_SMALL_INTERNAL_H 3 | 4 | #define MAX_TASKS 1024 5 | 6 | task_small_t* _tasking_get_linked_list_head(void); 7 | void _tasking_set_linked_list_head(task_small_t* new_head); 8 | 9 | #endif -------------------------------------------------------------------------------- /kernel/kernel/multitasking/util.h: -------------------------------------------------------------------------------- 1 | #ifndef MULT_UTIL_H 2 | #define MULT_UTIL_H 3 | 4 | #include 5 | 6 | //causes current process' stack to be forcibly moved to different location 7 | void move_stack(void* new_stack_start, uint32_t size); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /kernel/kernel/pmm/pmm.h: -------------------------------------------------------------------------------- 1 | #ifndef PMM_H 2 | #define PMM_H 3 | 4 | #include 5 | #include 6 | #include "pmm_int.h" 7 | 8 | pmm_state_t* pmm_get(void); 9 | void pmm_init(void); 10 | 11 | uintptr_t pmm_alloc(void); 12 | void pmm_alloc_address(uintptr_t address); 13 | uintptr_t pmm_alloc_continuous_range(uintptr_t size); 14 | 15 | void pmm_free(uintptr_t frame_addr); 16 | 17 | void pmm_dump(void); 18 | uintptr_t pmm_allocated_memory(void); 19 | 20 | bool pmm_is_address_allocated(uintptr_t address); 21 | bool pmm_is_frame_general_purpose(uintptr_t address); 22 | 23 | void pmm_test(void); 24 | 25 | void pmm_push_allocatable_frame(uint64_t frame_addr); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /kernel/kernel/pmm/pmm_int.h.i686.arch_specific: -------------------------------------------------------------------------------- 1 | #ifndef PMM_INT_H 2 | #define PMM_INT_H 3 | 4 | #include 5 | #include 6 | 7 | struct pmm_state { 8 | //if a frame's bit is set, it is general-purpose RAM which can be allocated to the virtual memory manager 9 | //else, the frame is reserved by the system and should not be touched by PMM 10 | // TODO(PT): x86_64 make this larger than 4GB 11 | address_space_frame_bitmap_t system_accessible_frames; 12 | //if a frame's bit is set, it has been allocated by the PMM and is currently in use 13 | //else, it is not in use and may be allocated by the PMM 14 | address_space_frame_bitmap_t allocation_state; 15 | spinlock_t lock; 16 | } __attribute__((aligned(PAGE_SIZE))); 17 | typedef struct pmm_state pmm_state_t; 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /kernel/kernel/pmm/pmm_int.h.x86_64.arch_specific: -------------------------------------------------------------------------------- 1 | #ifndef PMM_INT_H 2 | #define PMM_INT_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | // 16GB max frame stack size 10 | #define PMM_MAX_MEMORY_SIZE (1024LL * 1024LL * 1024LL * 16LL) 11 | 12 | typedef struct pmm_state { 13 | uint64_t* stack_head; 14 | uint64_t* stack_bottom; 15 | uint64_t* stack_top; 16 | spinlock_t lock; 17 | } pmm_state_t; 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /kernel/kernel/segmentation/gdt_activate.s.x86_64.arch_specific: -------------------------------------------------------------------------------- 1 | [GLOBAL gdt_activate] 2 | gdt_activate: 3 | ; GDT pointer is passed as the first parameter, rdi 4 | ; https://aaronbloomfield.github.io/pdr/book/x86-64bit-ccc-chapter.pdf 5 | lgdt [rdi] 6 | ret 7 | 8 | 9 | [GLOBAL gdt_load_cs] 10 | gdt_load_cs: 11 | push rdi 12 | push $.next 13 | retfq 14 | .next: 15 | ret 16 | 17 | 18 | [GLOBAL gdt_load_ds] 19 | gdt_load_ds: 20 | mov ax, di 21 | mov ds, ax 22 | mov es, ax 23 | mov fs, ax 24 | mov gs, ax 25 | mov ss, ax 26 | ret 27 | 28 | [GLOBAL tss_activate] 29 | tss_activate: 30 | mov ax, 0x2B ; load index of TSS structure 31 | ; index is 0x28 (5th selector, each 8 bytes) 32 | ; but set the bottom two bits to set RPL 33 | ; to 3, not 0 34 | ltr ax ; load 0x2B into task state register 35 | ret 36 | -------------------------------------------------------------------------------- /kernel/kernel/syscall/sysfuncs.h: -------------------------------------------------------------------------------- 1 | #ifndef SYSFUNCS_H 2 | #define SYSFUNCS_H 3 | 4 | #include "syscall.h" 5 | #include 6 | #include 7 | 8 | //installs common syscalls into syscall table 9 | void create_sysfuncs(); 10 | int exit(uintptr_t code); 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /kernel/kernel/util/mutex/mutex.h: -------------------------------------------------------------------------------- 1 | #ifndef MUTEX_H 2 | #define MUTEX_H 3 | 4 | typedef struct lock_t { 5 | int flag; 6 | const char* name; 7 | } lock_t; 8 | 9 | lock_t* lock_create(); 10 | void lock(lock_t* lock); 11 | void unlock(lock_t* lock); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /kernel/kernel/util/unistd/read.c: -------------------------------------------------------------------------------- 1 | #include "read.h" 2 | #include 3 | 4 | #include 5 | 6 | int stdin_read(void* task, int UNUSED(fd), void* buf, int count) { 7 | Deprecated(); 8 | } 9 | 10 | uint32_t read(int fd, void* buf, uint32_t count) { 11 | Deprecated(); 12 | } 13 | -------------------------------------------------------------------------------- /kernel/kernel/util/unistd/read.h: -------------------------------------------------------------------------------- 1 | #ifndef READ_H 2 | #define READ_H 3 | 4 | #include 5 | #include 6 | 7 | uint32_t read(int fd, void* buf, uint32_t count); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /kernel/kernel/util/unistd/unistd.h: -------------------------------------------------------------------------------- 1 | #ifndef UNISTD_H 2 | #define UNISTD_H 3 | 4 | #include "read.h" 5 | #include "write.h" 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /kernel/kernel/util/unistd/write.h: -------------------------------------------------------------------------------- 1 | #ifndef WRITE_H 2 | #define WRITE_H 3 | 4 | int write(int fd, char* buf, int len); 5 | int std_write(void* task, int fd, const void* buf, int len); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /kernel/lib/iberty/iberty.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #ifndef NULL 4 | #define NULL 0 5 | #endif 6 | 7 | #ifndef EOS 8 | #define EOS '\0' 9 | #endif 10 | 11 | #define INITIAL_MAXARGC 8 12 | 13 | void freeargv (char **vector); 14 | char **buildargv (const char *input, int *ac); 15 | -------------------------------------------------------------------------------- /kernel/std/circular_buffer.h: -------------------------------------------------------------------------------- 1 | #ifndef CIRCULAR_BUF_H 2 | #define CIRCULAR_BUF_H 3 | 4 | #include 5 | #include 6 | 7 | typedef struct circular_buffer { 8 | char *buffer; // data buffer 9 | char *buffer_end; // end of data buffer 10 | size_t capacity; // maximum number of items in the buffer 11 | size_t count; // number of items in the buffer 12 | size_t sz; // size of each item in the buffer 13 | char *head; // pointer to head 14 | char *tail; // pointer to tail 15 | } circular_buffer; 16 | 17 | void cb_init(circular_buffer *cb, size_t capacity, size_t sz); 18 | void cb_free(circular_buffer *cb); 19 | void cb_push_back(circular_buffer *cb, const char *item); 20 | void cb_pop_front(circular_buffer *cb, char *item); 21 | void cb_peek(circular_buffer *cb, char *item); 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /kernel/std/hash_map.h: -------------------------------------------------------------------------------- 1 | #ifndef HASH_MAP_H 2 | #define HASH_MAP_H 3 | 4 | #include 5 | 6 | typedef struct hash_map hash_map_t; 7 | 8 | hash_map_t* hash_map_create(void); 9 | void hash_map_put(hash_map_t* map, void* key_buf, uint32_t key_buf_len, void* value); 10 | void* hash_map_get(hash_map_t* map, void* key_buf, uint32_t key_buf_len); 11 | void hash_map_delete(hash_map_t* map, void* key_buf, uint32_t key_buf_len); 12 | 13 | #endif -------------------------------------------------------------------------------- /kernel/std/klog.h: -------------------------------------------------------------------------------- 1 | #ifndef KLOG_H 2 | #define KLOG_H 3 | 4 | #define KLOG(func, ...) ({printk_dbg("KLog: %s:%d calls %s", __FILE__, __LINE__, #func); func(__VA_ARGS__);}) 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /kernel/std/list_node.c: -------------------------------------------------------------------------------- 1 | #include "list_node.h" 2 | #include "kheap.h" 3 | #include "memory.h" 4 | 5 | list_node* list_node_create(void* payload) { 6 | //malloc or fail 7 | list_node* node; 8 | if (!(node = kmalloc(sizeof(list_node)))) { 9 | return node; 10 | } 11 | 12 | //initial vals 13 | memset(node, 0, sizeof(list_node)); 14 | node->payload = payload; 15 | return node; 16 | } 17 | -------------------------------------------------------------------------------- /kernel/std/list_node.h: -------------------------------------------------------------------------------- 1 | #ifndef LIST_NODE_H 2 | #define LIST_NODE_H 3 | 4 | //encapsulates item in linked list 5 | typedef struct list_node_s { 6 | void* payload; //contents of node 7 | struct list_node_s* prev; //back node 8 | struct list_node_s* next; //next node 9 | } list_node; 10 | 11 | list_node* list_node_create(void* payload); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /kernel/std/memory.h: -------------------------------------------------------------------------------- 1 | #ifndef STD_MEMORY_H 2 | #define STD_MEMORY_H 3 | 4 | #include "std_base.h" 5 | #include 6 | 7 | __BEGIN_DECLS 8 | 9 | STDAPI int memcmp(const void*, const void*, size_t); 10 | STDAPI void* memmove(void*, const void*, size_t); 11 | STDAPI void* memset(void*, int, size_t); 12 | STDAPI void memadd(void*, void*, size_t); 13 | STDAPI void* calloc(size_t num, size_t size); 14 | STDAPI void* realloc(void* ptr, size_t size); 15 | STDAPI void* memcpy(void* __restrict, const void* __restrict, size_t); 16 | void* memmove(void* dest, const void* src, size_t count); 17 | 18 | __END_DECLS 19 | 20 | #endif // STD_MEMORY_H 21 | -------------------------------------------------------------------------------- /kernel/std/rand.h: -------------------------------------------------------------------------------- 1 | #ifndef RAND_H 2 | #define RAND_H 3 | 4 | //state 5 | typedef struct mtwist_s mtwist; 6 | //constructor 7 | mtwist* mtwist_new(void); 8 | //destructor 9 | void mtwist_free(mtwist* mt); 10 | 11 | void mtwist_init(mtwist* mt, unsigned long seed); 12 | unsigned long mtwist_rand(mtwist* mt); 13 | double mtwist_drand(mtwist* mt); 14 | 15 | unsigned long mtwist_seed_system(mtwist* mt); 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /kernel/std/rand_internal.h: -------------------------------------------------------------------------------- 1 | #ifndef RAND_INT_H 2 | #define RAND_INT_H 3 | 4 | #define MTWIST_N 624 5 | #define MTWIST_M 397 6 | 7 | struct mtwist_s { 8 | //MT buffer holding N uint32's 9 | uint32_t state[MTWIST_N]; 10 | 11 | //pointer to above 12 | //next long to use 13 | uint32_t* next; 14 | 15 | //number of integers left in state before update is needed 16 | unsigned int left; 17 | 18 | //1 if seed was given 19 | unsigned int seeded : 1; 20 | 21 | //1 to always return static system seed 22 | //MT_STATIC_SEED 23 | unsigned int static_system_seed : 1; 24 | }; 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /kernel/std/std.c: -------------------------------------------------------------------------------- 1 | #include "std.h" 2 | 3 | -------------------------------------------------------------------------------- /kernel/std/std.h: -------------------------------------------------------------------------------- 1 | #ifndef STD_H 2 | #define STD_H 3 | 4 | #ifndef NULL 5 | #define NULL (0) 6 | #endif 7 | 8 | #include 9 | #include 10 | #include "std_base.h" 11 | #include "common.h" 12 | #include "ctype.h" 13 | #include "string.h" 14 | #include "memory.h" 15 | #include "kheap.h" 16 | #include "timer.h" 17 | #include "printf.h" 18 | 19 | #endif // STD_H 20 | -------------------------------------------------------------------------------- /kernel/std/timer.h: -------------------------------------------------------------------------------- 1 | #ifndef STD_TIMER_H 2 | #define STD_TIMER_H 3 | 4 | #include "std_base.h" 5 | #include 6 | #include 7 | 8 | __BEGIN_DECLS 9 | 10 | #define MAX_CALLBACKS 100 11 | 12 | typedef struct { 13 | void* func; 14 | uint32_t interval; 15 | uint32_t time_left; 16 | bool repeats; 17 | void* context; 18 | } timer_callback_t; 19 | 20 | STDAPI void timer_init(); 21 | 22 | STDAPI timer_callback_t* timer_callback_register(void* callback, int interval, bool repeats, void* context); 23 | STDAPI void timer_callback_remove(timer_callback_t* callback); 24 | STDAPI void timer_callback_deliver_immediately(timer_callback_t* callback); 25 | 26 | STDAPI void sleep(uint32_t ms); 27 | 28 | __END_DECLS 29 | 30 | #endif // STD_TIMER_H 31 | -------------------------------------------------------------------------------- /kernel/std/unlikely.h: -------------------------------------------------------------------------------- 1 | #ifndef UNLIKELY_H 2 | #define UNLIKELY_H 3 | 4 | #if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) 5 | #define likely(expr) __builtin_expect(!!(expr), 1) 6 | #define unlikely(expr) __builtin_expect(!!(expr), 0) 7 | #else 8 | #define likely(expr) (expr) 9 | #define unlikely(expr) (expr) 10 | #endif 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /kernel/tests/test.h: -------------------------------------------------------------------------------- 1 | #ifndef TEST_H 2 | #define TEST_H 3 | 4 | void test_colors(); 5 | void force_hardware_irq(); 6 | void force_page_fault(); 7 | void test_interrupts(); 8 | void test_vesa(); 9 | void test_heap(); 10 | void test_printf(); 11 | void test_time_unique(); 12 | void test_malloc(); 13 | void test_crypto(); 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /kernel/tests/test_memory_usage_proc_pool.h: -------------------------------------------------------------------------------- 1 | #ifndef TEST_MEMORY_USAGE_PROC_POOL_H 2 | #define TEST_MEMORY_USAGE_PROC_POOL_H 3 | 4 | void test_memory_usage_proc_pool(void); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /os_dist/config/desktop_shortcuts.txt: -------------------------------------------------------------------------------- 1 | /usr/applications/preferences, Preferences 2 | /usr/applications/logs_viewer, Logs Viewer 3 | /usr/applications/doom, DOOM 4 | /usr/applications/breakout, Breakout 5 | /usr/applications/2048, 2048 6 | /usr/applications/textpad, Notepad, 1, 0 7 | /magic/exploit, Exploit, 1, 1 8 | /usr/applications/task_viewer, VAS Viz, 1, 2 9 | /usr/applications/gb_emu, GameBoy, 1, 3 10 | /usr/applications/file_browser, File Browser, 1, 4 11 | -------------------------------------------------------------------------------- /os_dist/config/run_on_startup.txt: -------------------------------------------------------------------------------- 1 | /usr/applications/awm2 2 | /usr/applications/kb_driver 3 | /usr/applications/mouse_driver 4 | /usr/applications/dock 5 | /usr/applications/menu_bar 6 | /usr/applications/file_browser 7 | /usr/applications/pci_driver 8 | /usr/applications/realtek_8139_driver 9 | /usr/applications/net 10 | -------------------------------------------------------------------------------- /os_dist/images/executable_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/os_dist/images/executable_icon.bmp -------------------------------------------------------------------------------- /os_dist/images/folder_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/os_dist/images/folder_icon.bmp -------------------------------------------------------------------------------- /os_dist/images/image_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/os_dist/images/image_icon.bmp -------------------------------------------------------------------------------- /os_dist/images/text_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/os_dist/images/text_icon.bmp -------------------------------------------------------------------------------- /os_dist/images/titlebar7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/os_dist/images/titlebar7.bmp -------------------------------------------------------------------------------- /os_dist/images/titlebar_x_filled2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/os_dist/images/titlebar_x_filled2.bmp -------------------------------------------------------------------------------- /os_dist/images/titlebar_x_unfilled2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/os_dist/images/titlebar_x_unfilled2.bmp -------------------------------------------------------------------------------- /programs/subprojects/2048/meson.build: -------------------------------------------------------------------------------- 1 | project('2048', 'c') 2 | executable( 3 | '2048', 4 | '2048.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libagx').get_variable('libagx_dep'), 9 | subproject('libgui').get_variable('libgui_dep'), 10 | subproject('libamc').get_variable('libamc_dep'), 11 | subproject('libutils').get_variable('libutils_dep'), 12 | ] 13 | ) 14 | -------------------------------------------------------------------------------- /programs/subprojects/activity_monitor/meson.build: -------------------------------------------------------------------------------- 1 | project('activity_monitor', 'c', default_options : ['b_lto=true']) 2 | executable( 3 | 'activity_monitor', 4 | 'activity_monitor.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | -------------------------------------------------------------------------------- /programs/subprojects/ata_driver/ata_driver.h: -------------------------------------------------------------------------------- 1 | #ifndef ATA_DRIVER_H 2 | #define ATA_DRIVER_H 3 | 4 | #include 5 | #include 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /programs/subprojects/ata_driver/meson.build: -------------------------------------------------------------------------------- 1 | project('ata_driver', 'c') 2 | executable( 3 | 'ata_driver', 4 | 'ata_driver.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libport').get_variable('libport_dep'), 9 | subproject('libgui').get_variable('libgui_dep'), 10 | ] 11 | ) 12 | install_headers( 13 | ['ata_driver_messages.h'], 14 | install_dir: join_paths(meson.get_cross_property('include_root'), 'drivers', 'ata') 15 | ) 16 | -------------------------------------------------------------------------------- /programs/subprojects/awm/awm.h: -------------------------------------------------------------------------------- 1 | #ifndef AWM_H 2 | #define AWM_H 3 | 4 | #endif -------------------------------------------------------------------------------- /programs/subprojects/awm/composite.h: -------------------------------------------------------------------------------- 1 | #ifndef COMPOSITE_H 2 | #define COMPOSITE_H 3 | 4 | #include 5 | 6 | void compositor_init(void); 7 | void compositor_queue_rect_to_redraw(Rect update_rect); 8 | void compositor_queue_rect_difference_to_redraw(Rect bg, Rect fg); 9 | void compositor_render_frame(void); 10 | 11 | #endif -------------------------------------------------------------------------------- /programs/subprojects/awm/effects.h: -------------------------------------------------------------------------------- 1 | #ifndef AWM_EFFECTS_H 2 | #define AWM_EFFECTS_H 3 | 4 | #include 5 | #include 6 | 7 | #include "window.h" 8 | 9 | void radial_gradiant( 10 | ca_layer* layer, 11 | Size gradient_size, 12 | Color c1, 13 | Color c2, 14 | int x1, 15 | int y1, 16 | float r 17 | ); 18 | 19 | void draw_window_backdrop_segments(ca_layer* dest, user_window_t* window, int segments); 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /programs/subprojects/awm/math.h: -------------------------------------------------------------------------------- 1 | #ifndef MATH_H 2 | #define MATH_H 3 | 4 | #define CMP(op, a, b) ({ \ 5 | __typeof__(a) _a = (a); \ 6 | __typeof__(b) _b = (b); \ 7 | (_a op _b) ? _a : _b; \ 8 | }) 9 | #define MIN(a, b) CMP(<=, a, b) 10 | #define min(a, b) MIN(a, b) 11 | 12 | #define MAX(a, b) CMP(>, a, b) 13 | #define max(a, b) MAX(a, b) 14 | 15 | #define abs(val) ((val) < 0) ? -(val) : (val) 16 | 17 | #endif -------------------------------------------------------------------------------- /programs/subprojects/awm/meson.build: -------------------------------------------------------------------------------- 1 | project('awm', 'c') 2 | executable( 3 | 'awm', 4 | [ 5 | 'awm.c', 6 | 'effects.c', 7 | 'window.c', 8 | 'utils.c', 9 | 'animations.c', 10 | 'composite.c' 11 | ], 12 | install: true, 13 | install_dir: meson.get_cross_property('initrd_dir'), 14 | dependencies: [ 15 | subproject('libagx').get_variable('libagx_dep'), 16 | subproject('libamc').get_variable('libamc_dep'), 17 | subproject('libimg').get_variable('libimg_dep'), 18 | subproject('libutils').get_variable('libutils_dep'), 19 | ] 20 | ) 21 | headers_dir = join_paths(meson.get_cross_property('include_root'), 'awm') 22 | install_headers( 23 | ['awm.h', 'awm_messages.h'], 24 | install_dir: headers_dir 25 | ) 26 | awm_dep = declare_dependency(include_directories: headers_dir) 27 | -------------------------------------------------------------------------------- /programs/subprojects/awm/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef AWM_UTILS_H 2 | #define AWM_UTILS_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | #include 9 | 10 | #include 11 | 12 | uint32_t ms_since_boot(); 13 | 14 | Point point_translate(Point p, Rect r); 15 | Size screen_resolution(void); 16 | uint8_t screen_bytes_per_pixel(void); 17 | uint32_t screen_pixels_per_scanline(void); 18 | 19 | bool rect_contains_rect(Rect a, Rect b); 20 | array_t* rect_diff(Rect bg, Rect fg); 21 | 22 | void rect_add(array_t* arr, Rect r); 23 | array_t* update_occlusions(array_t* free_areas, Rect exclude_rect); 24 | 25 | image_t* load_image(const char* image_name); 26 | 27 | // Friend functions for awm 28 | void _set_screen_resolution(Size); 29 | void _set_screen_bytes_per_pixel(uint8_t); 30 | void _set_screen_pixels_per_scanline(uint32_t); 31 | 32 | #endif -------------------------------------------------------------------------------- /programs/subprojects/breakout/meson.build: -------------------------------------------------------------------------------- 1 | project('breakout', 'c') 2 | executable( 3 | 'breakout', 4 | 'breakout.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | -------------------------------------------------------------------------------- /programs/subprojects/cat/cat.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int cat(char* name) { 5 | FILE* f = fopen(name, "r"); 6 | if (!f) { 7 | //file not found! 8 | printf("cat: %s: No such file or directory\n", name); 9 | return 1; 10 | } 11 | char line[256]; 12 | while (fgets(line, sizeof(line), f)) { 13 | printf("%s", line); 14 | } 15 | fclose(f); 16 | return 0; 17 | } 18 | 19 | int main(int argc, char** argv) { 20 | if (argc < 2) { 21 | printf("Usage: cat [file]\n"); 22 | return 0; 23 | } 24 | 25 | int succeeded = 0; 26 | for (int i = 1; i < argc; i++) { 27 | char* input = argv[i]; 28 | 29 | int status = cat(input); 30 | //only save failure (return code 1) 31 | //default is success 32 | if (!succeeded) succeeded = status; 33 | } 34 | return succeeded; 35 | } 36 | 37 | -------------------------------------------------------------------------------- /programs/subprojects/cat/meson.build: -------------------------------------------------------------------------------- 1 | project('cat', 'c', default_options : ['b_lto=true']) 2 | executable( 3 | 'cat', 4 | 'cat.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir') 7 | ) 8 | -------------------------------------------------------------------------------- /programs/subprojects/crash_reporter/crash_reporter_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef CRASH_REPORTER_MESSAGES_H 2 | #define CRASH_REPORTER_MESSAGES_H 3 | 4 | #include 5 | 6 | #define CRASH_REPORTER_SERVICE_NAME "com.axle.crash_reporter" 7 | 8 | // Sent from clients to the crash reporter 9 | #define CRASH_REPORTER_INFORM_ASSERT 100 10 | typedef struct crash_reporter_inform_assert { 11 | uint32_t event; // CRASH_REPORTER_INFORM_ASSERT 12 | uint32_t crash_report_length; 13 | char crash_report[]; 14 | } crash_reporter_inform_assert_t; 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /programs/subprojects/crash_reporter/meson.build: -------------------------------------------------------------------------------- 1 | project('crash_reporter', 'c') 2 | executable( 3 | 'crash_reporter', 4 | 'crash_reporter.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | install_headers( 10 | ['crash_reporter_messages.h'], 11 | install_dir: join_paths(meson.get_cross_property('include_root'), 'crash_reporter') 12 | ) 13 | 14 | -------------------------------------------------------------------------------- /programs/subprojects/doom/doomgeneric.c: -------------------------------------------------------------------------------- 1 | #include "doomgeneric.h" 2 | 3 | uint32_t* DG_ScreenBuffer = 0; 4 | 5 | 6 | void dg_Create() 7 | { 8 | DG_ScreenBuffer = malloc(DOOMGENERIC_RESX * DOOMGENERIC_RESY * 4); 9 | 10 | DG_Init(); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /programs/subprojects/doom/doomgeneric.h: -------------------------------------------------------------------------------- 1 | #ifndef DOOM_GENERIC 2 | #define DOOM_GENERIC 3 | 4 | #include 5 | #include 6 | 7 | #define DOOMGENERIC_RESX 640 8 | #define DOOMGENERIC_RESY 400 9 | 10 | 11 | extern uint32_t* DG_ScreenBuffer; 12 | 13 | 14 | void DG_Init(); 15 | void DG_DrawFrame(); 16 | void DG_SleepMs(uint32_t ms); 17 | uint32_t DG_GetTicksMs(); 18 | int DG_GetKey(int* pressed, unsigned char* key); 19 | void DG_SetWindowTitle(const char * title); 20 | 21 | #endif //DOOM_GENERIC 22 | -------------------------------------------------------------------------------- /programs/subprojects/doom/net_dedicated.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(C) 2005-2014 Simon Howard 3 | // 4 | // This program is free software; you can redistribute it and/or 5 | // modify it under the terms of the GNU General Public License 6 | // as published by the Free Software Foundation; either version 2 7 | // of the License, or (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // 15 | // Dedicated server code. 16 | // 17 | 18 | #ifndef NET_DEDICATED_H 19 | #define NET_DEDICATED_H 20 | 21 | void NET_DedicatedServer(void); 22 | 23 | #endif /* #ifndef NET_DEDICATED_H */ 24 | 25 | 26 | -------------------------------------------------------------------------------- /programs/subprojects/doom/net_sdl.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(C) 2005-2014 Simon Howard 3 | // 4 | // This program is free software; you can redistribute it and/or 5 | // modify it under the terms of the GNU General Public License 6 | // as published by the Free Software Foundation; either version 2 7 | // of the License, or (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // DESCRIPTION: 15 | // Networking module which uses SDL_net 16 | // 17 | 18 | #ifndef NET_SDL_H 19 | #define NET_SDL_H 20 | 21 | #include "net_defs.h" 22 | 23 | extern net_module_t net_sdl_module; 24 | 25 | #endif /* #ifndef NET_SDL_H */ 26 | 27 | -------------------------------------------------------------------------------- /programs/subprojects/doom/p_inter.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(C) 1993-1996 Id Software, Inc. 3 | // Copyright(C) 2005-2014 Simon Howard 4 | // 5 | // This program is free software; you can redistribute it and/or 6 | // modify it under the terms of the GNU General Public License 7 | // as published by the Free Software Foundation; either version 2 8 | // of the License, or (at your option) any later version. 9 | // 10 | // This program is distributed in the hope that it will be useful, 11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | // GNU General Public License for more details. 14 | // 15 | // DESCRIPTION: 16 | // 17 | // 18 | 19 | 20 | #ifndef __P_INTER__ 21 | #define __P_INTER__ 22 | 23 | 24 | 25 | 26 | boolean P_GivePower(player_t*, int); 27 | 28 | 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /programs/subprojects/doom/statdump.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright(C) 2005-2014 Simon Howard 4 | 5 | This program is free software; you can redistribute it and/or 6 | modify it under the terms of the GNU General Public License 7 | as published by the Free Software Foundation; either version 2 8 | of the License, or (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | */ 16 | 17 | #ifndef DOOM_STATDUMP_H 18 | #define DOOM_STATDUMP_H 19 | 20 | void StatCopy(wbstartstruct_t *stats); 21 | void StatDump(void); 22 | 23 | #endif /* #ifndef DOOM_STATDUMP_H */ 24 | -------------------------------------------------------------------------------- /programs/subprojects/doom/w_main.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright(C) 2005-2014 Simon Howard 3 | // 4 | // This program is free software; you can redistribute it and/or 5 | // modify it under the terms of the GNU General Public License 6 | // as published by the Free Software Foundation; either version 2 7 | // of the License, or (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // DESCRIPTION: 15 | // Common code to parse command line, identifying WAD files to load. 16 | // 17 | 18 | #ifndef W_MAIN_H 19 | #define W_MAIN_H 20 | 21 | boolean W_ParseCommandLine(void); 22 | 23 | #endif /* #ifndef W_MAIN_H */ 24 | 25 | -------------------------------------------------------------------------------- /programs/subprojects/echo/echo.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char** argv) { 4 | for (int i = 1; i < argc; i++) { 5 | printf("%s ", argv[i]); 6 | } 7 | putchar('\n'); 8 | return 0; 9 | } 10 | -------------------------------------------------------------------------------- /programs/subprojects/echo/meson.build: -------------------------------------------------------------------------------- 1 | project('echo', 'c') 2 | executable( 3 | 'echo', 4 | 'echo.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir') 7 | ) 8 | -------------------------------------------------------------------------------- /programs/subprojects/empty/empty.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char** argv) { 4 | char buf[64]; 5 | snprintf(buf, 64, "com.axle.empty-%d", ms_since_boot()); 6 | amc_register_service(buf); 7 | return 0; 8 | } 9 | -------------------------------------------------------------------------------- /programs/subprojects/empty/meson.build: -------------------------------------------------------------------------------- 1 | project('empty', 'c') 2 | executable( 3 | 'empty', 4 | 'empty.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir') 7 | ) 8 | -------------------------------------------------------------------------------- /programs/subprojects/false/false.c: -------------------------------------------------------------------------------- 1 | int main(int argc, char** argv) { 2 | return 1; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /programs/subprojects/false/meson.build: -------------------------------------------------------------------------------- 1 | project('false', 'c') 2 | executable( 3 | 'false', 4 | 'false.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir') 7 | ) 8 | -------------------------------------------------------------------------------- /programs/subprojects/file_manager/ata.h: -------------------------------------------------------------------------------- 1 | #ifndef ATA_CLIENT_H 2 | #define ATA_CLIENT_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | typedef struct ata_sector { 9 | uint32_t size; 10 | void* data[]; 11 | } ata_sector_t; 12 | 13 | ata_sector_t* ata_read_sector(uint32_t sector_lba); 14 | void ata_write_sector(uint32_t sector_lba, void* sector_data); 15 | 16 | #endif -------------------------------------------------------------------------------- /programs/subprojects/file_manager/fs_node.h: -------------------------------------------------------------------------------- 1 | #ifndef FS_NODE_H 2 | #define FS_NODE_H 3 | 4 | #include 5 | 6 | typedef enum fs_node_type { 7 | FS_NODE_TYPE_BASE = 0, 8 | FS_NODE_TYPE_ROOT = 1, 9 | FS_NODE_TYPE_INITRD = 2, 10 | FS_NODE_TYPE_FAT = 3, 11 | } fs_node_type_t; 12 | 13 | typedef struct fs_base_node { 14 | // Common fields 15 | fs_node_type_t type; 16 | char name[64]; 17 | struct fs_base_node* parent; 18 | bool is_directory; 19 | array_t* children; 20 | } fs_base_node_t; 21 | 22 | #endif -------------------------------------------------------------------------------- /programs/subprojects/file_manager/initrd.h: -------------------------------------------------------------------------------- 1 | #ifndef INITRD_H 2 | #define INITRD_H 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | #include "fs_node.h" 10 | 11 | #define HEADER_MAGIC 0xBF 12 | 13 | typedef struct { 14 | uint32_t nfiles; //# of files in ramdisk 15 | } initrd_header_t; 16 | 17 | typedef struct { 18 | uint8_t magic; //magic number 19 | char name[64]; //filename 20 | uint32_t offset; //offset in initrd that file starts 21 | uint32_t length; //length of file 22 | } initrd_file_header_t; 23 | 24 | typedef struct initrd_fs_node { 25 | fs_base_node_t base; 26 | // Private fields 27 | uintptr_t initrd_offset; 28 | uint32_t size; 29 | } initrd_fs_node_t; 30 | 31 | fs_base_node_t* initrd_parse_from_amc(fs_base_node_t* initrd_root, amc_initrd_info_t* initrd_info); 32 | uint8_t* initrd_read_file(initrd_fs_node_t* fs_node, uint32_t* out_file_size); 33 | 34 | #endif -------------------------------------------------------------------------------- /programs/subprojects/file_manager/math.h: -------------------------------------------------------------------------------- 1 | #ifndef MATH_H 2 | #define MATH_H 3 | 4 | #ifndef CMP 5 | #define CMP(op, a, b) ({ \ 6 | __typeof__(a) _a = (a); \ 7 | __typeof__(b) _b = (b); \ 8 | (_a op _b) ? _a : _b; \ 9 | }) 10 | #endif 11 | 12 | #ifndef MIN 13 | #define MIN(a, b) CMP(<=, a, b) 14 | #endif 15 | 16 | #ifndef min 17 | #define min(a, b) MIN(a, b) 18 | #endif 19 | 20 | #ifndef MAX 21 | #define MAX(a, b) CMP(>, a, b) 22 | #endif 23 | 24 | #ifndef max 25 | #define max(a, b) MAX(a, b) 26 | #endif 27 | 28 | #ifndef abs 29 | #define abs(val) ((val) < 0) ? -(val) : (val) 30 | #endif 31 | 32 | #endif -------------------------------------------------------------------------------- /programs/subprojects/file_manager/meson.build: -------------------------------------------------------------------------------- 1 | project('file_manager', 'c') 2 | executable( 3 | 'file_manager', 4 | 'ata.c', 5 | 'fat.c', 6 | 'file_manager.c', 7 | 'initrd.c', 8 | 'ui.c', 9 | 'util.c', 10 | 'vfs.c', 11 | install: true, 12 | install_dir: meson.get_cross_property('initrd_dir'), 13 | dependencies: [ 14 | subproject('libgui').get_variable('libgui_dep'), 15 | subproject('libport').get_variable('libport_dep'), 16 | subproject('libimg').get_variable('libimg_dep'), 17 | ] 18 | ) 19 | install_headers( 20 | ['file_manager_messages.h'], 21 | install_dir: join_paths(meson.get_cross_property('include_root'), 'file_manager') 22 | ) 23 | -------------------------------------------------------------------------------- /programs/subprojects/file_manager/ui.h: -------------------------------------------------------------------------------- 1 | #ifndef UI_H 2 | #define UI_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include "vfs.h" 9 | 10 | typedef struct file_view file_view_t; 11 | 12 | void file_manager_load_images(void); 13 | Rect ui_content_view_sizer(gui_view_t* view, Size window_size); 14 | 15 | void ui_generate_tree(gui_view_t* container_view, file_view_t* parent_view, uint32_t idx_within_parent, fs_node_t* node); 16 | 17 | #endif -------------------------------------------------------------------------------- /programs/subprojects/file_manager/util.h: -------------------------------------------------------------------------------- 1 | #ifndef UTIL_H 2 | #define UTIL_H 3 | 4 | #include 5 | #include 6 | 7 | #include "vfs.h" 8 | 9 | bool str_ends_with(char* str, const char* suffix); 10 | bool str_ends_with_any(char* str, const char* suffixes[]); 11 | array_t* str_split(const char* a_str, const char a_delim); 12 | 13 | void print_tabs(uint32_t count); 14 | void print_fs_tree(fs_node_t* node, uint32_t depth); 15 | 16 | uint32_t depth_first_search__idx(fs_base_node_t* parent, fs_base_node_t* find, uint32_t sum, bool* out_found); 17 | 18 | void launch_amc_service_if_necessary(const char* service_name); 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /programs/subprojects/image_viewer/image_viewer_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef IMAGE_VIEWER_MESSAGES_H 2 | #define IMAGE_VIEWER_MESSAGES_H 3 | 4 | #include 5 | 6 | #define IMAGE_VIEWER_SERVICE_NAME "com.axle.image_viewer" 7 | 8 | // Sent from clients to the image viewer 9 | #define IMAGE_VIEWER_LOAD_IMAGE 1 10 | typedef struct image_viewer_load_image_request { 11 | uint32_t event; // IMAGE_VIEWER_LOAD_IMAGE 12 | char path[128]; 13 | } image_viewer_load_image_request_t; 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /programs/subprojects/image_viewer/meson.build: -------------------------------------------------------------------------------- 1 | project('image_viewer', 'c') 2 | executable( 3 | 'image_viewer', 4 | 'image_viewer.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libgui').get_variable('libgui_dep'), 9 | subproject('libimg').get_variable('libimg_dep'), 10 | ] 11 | ) 12 | install_headers( 13 | ['image_viewer_messages.h'], 14 | install_dir: join_paths(meson.get_cross_property('include_root'), 'image_viewer') 15 | ) 16 | -------------------------------------------------------------------------------- /programs/subprojects/kb_driver/kb_driver_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef KB_DRIVER_MESSAGES_H 2 | #define KB_DRIVER_MESSAGES_H 3 | 4 | #define KEY_IDENT_UP_ARROW 0x999 5 | #define KEY_IDENT_DOWN_ARROW 0x998 6 | #define KEY_IDENT_LEFT_ARROW 0x997 7 | #define KEY_IDENT_RIGHT_ARROW 0x996 8 | 9 | #define KEY_IDENT_LEFT_SHIFT 0x995 10 | #define KEY_IDENT_RIGHT_SHIFT 0x994 11 | 12 | #define KEY_IDENT_ESCAPE 0x993 13 | #define KEY_IDENT_LEFT_CONTROL 0x992 14 | #define KEY_IDENT_LEFT_COMMAND 0x991 15 | #define KEY_IDENT_LEFT_OPTION 0x990 16 | 17 | #define KB_DRIVER_SERVICE_NAME "com.axle.kb_driver" 18 | 19 | typedef enum key_event_type { 20 | KEY_PRESSED = 0, 21 | KEY_RELEASED = 1 22 | } key_event_type_t; 23 | 24 | typedef struct key_event { 25 | uint32_t key; 26 | key_event_type_t type; 27 | } key_event_t; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /programs/subprojects/kb_driver/meson.build: -------------------------------------------------------------------------------- 1 | project('kb_driver', 'c') 2 | executable( 3 | 'kb_driver', 4 | 'kb_driver.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libport').get_variable('libport_dep'), 9 | subproject('libamc').get_variable('libamc_dep'), 10 | subproject('libutils').get_variable('libutils_dep') 11 | ] 12 | ) 13 | install_headers( 14 | ['kb_driver_messages.h'], 15 | install_dir: join_paths(meson.get_cross_property('include_root'), 'drivers', 'kb') 16 | ) 17 | -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/elem_stack.h: -------------------------------------------------------------------------------- 1 | #ifndef ELEM_STACK_H 2 | #define ELEM_STACK_H 3 | 4 | #include 5 | 6 | typedef struct stack_elem { 7 | void* payload; 8 | struct stack_elem* prev; 9 | struct stack_elem* next; 10 | } stack_elem_t; 11 | 12 | typedef struct elem_stack { 13 | stack_elem_t* head; 14 | stack_elem_t* tail; 15 | uint32_t count; 16 | } elem_stack_t; 17 | 18 | elem_stack_t* stack_create(void); 19 | void stack_destroy(elem_stack_t* s); 20 | 21 | void stack_push(elem_stack_t* stack, void* item); 22 | void* stack_peek(elem_stack_t* stack); 23 | void* stack_pop(elem_stack_t* stack); 24 | 25 | void* stack_get(elem_stack_t* stack, uint32_t idx); 26 | 27 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/gfx.h: -------------------------------------------------------------------------------- 1 | #ifndef GFX_H 2 | #define GFX_H 3 | 4 | #include "screen.h" 5 | 6 | extern Screen* gfx_screen(); 7 | extern int gfx_bytes_per_pixel(); 8 | 9 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/hash_map.h: -------------------------------------------------------------------------------- 1 | #ifndef HASH_MAP_H 2 | #define HASH_MAP_H 3 | 4 | #include 5 | 6 | typedef struct hash_map hash_map_t; 7 | 8 | hash_map_t* hash_map_create(uint32_t initial_size); 9 | void hash_map_put(hash_map_t* map, void* key_buf, uint32_t key_buf_len, void* value); 10 | void* hash_map_get(hash_map_t* map, void* key_buf, uint32_t key_buf_len); 11 | uint32_t hash_map_size(hash_map_t* map); 12 | 13 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/point.c: -------------------------------------------------------------------------------- 1 | #include "point.h" 2 | -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/point.h: -------------------------------------------------------------------------------- 1 | #ifndef POINT_H 2 | #define POINT_H 3 | 4 | typedef struct coordinate { 5 | int x; 6 | int y; 7 | } Point; 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/putpixel.h: -------------------------------------------------------------------------------- 1 | #ifndef PUTPIXEL_H 2 | #define PUTPIXEL_H 3 | 4 | #include "ca_layer.h" 5 | #include "color.h" 6 | 7 | // Draw a pixel within the provided layer 8 | void putpixel(ca_layer* layer, int x, int y, Color color); 9 | 10 | // Draw a pixel within the provided layer, and alpha-blend with the existing layer contents 11 | void putpixel_alpha(ca_layer* layer, int x, int y, Color color, int alpha); 12 | 13 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/screen.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/programs/subprojects/libagx/lib/screen.c -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/screen.h: -------------------------------------------------------------------------------- 1 | #ifndef GFX_SCREEN_H 2 | #define GFX_SCREEN_H 3 | 4 | #include "size.h" 5 | #include "ca_layer.h" 6 | #include "color.h" 7 | 8 | typedef struct window Window; 9 | 10 | // Wraps up some helpful info about the framebuffer 11 | // These days, awm is the only one to deal with this 12 | typedef struct screen_t { 13 | uint32_t video_memory_size; 14 | 15 | Size resolution; 16 | uint16_t bits_per_pixel; 17 | uint8_t bytes_per_pixel; 18 | 19 | ca_layer* vmem; // Buffer we composite to 20 | ca_layer* pmem; // Memory-mapped video memory 21 | } Screen; 22 | 23 | //fill double buffer with a given Color 24 | void fill_screen(Screen* screen, Color color); 25 | //copy all double buffer data to real screen 26 | void write_screen(Screen* screen); 27 | //copy 'region' from double buffer to real screen 28 | void write_screen_region(Rect region); 29 | 30 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/size.c: -------------------------------------------------------------------------------- 1 | #include "size.h" 2 | -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/size.h: -------------------------------------------------------------------------------- 1 | #ifndef SIZE_H 2 | #define SIZE_H 3 | 4 | typedef struct size { 5 | int width; 6 | int height; 7 | } Size; 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /programs/subprojects/libagx/lib/util.h: -------------------------------------------------------------------------------- 1 | #ifndef GFX_UTIL_H 2 | #define GFX_UTIL_H 3 | 4 | #include "gfx.h" 5 | 6 | Window* containing_window(View* v); 7 | Rect absolute_frame(View* view); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /programs/subprojects/libagx/libagx.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBAGX_H 2 | #define LIBAGX_H 3 | 4 | // This file only exists to allow Meson to create the top-level libagx directory, 5 | // since it refuses to create intermediate directories when installing headers for 6 | // libagx/font/ and libagx/lib/ to the sysroot. 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /programs/subprojects/libagx/math.h: -------------------------------------------------------------------------------- 1 | #ifndef MATH_H 2 | #define MATH_H 3 | 4 | #define CMP(op, a, b) ({ \ 5 | __typeof__(a) _a = (a); \ 6 | __typeof__(b) _b = (b); \ 7 | (_a op _b) ? _a : _b; \ 8 | }) 9 | #define MIN(a, b) CMP(<=, a, b) 10 | #define min(a, b) MIN(a, b) 11 | 12 | #define MAX(a, b) CMP(>, a, b) 13 | #define max(a, b) MAX(a, b) 14 | 15 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libamc/meson.build: -------------------------------------------------------------------------------- 1 | project('libamc', 'c') 2 | libamc = static_library( 3 | 'amc', 4 | 'libamc.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('libraries_root') 7 | ) 8 | headers_dir = join_paths(meson.get_cross_property('include_root'), 'libamc') 9 | install_headers( 10 | ['libamc.h'], 11 | install_dir: headers_dir 12 | ) 13 | libamc_dep = declare_dependency(include_directories: headers_dir, link_with: libamc) 14 | -------------------------------------------------------------------------------- /programs/subprojects/libfiles/libfiles.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBFILES_H 2 | #define LIBFILES_H 3 | 4 | #include 5 | #include 6 | 7 | int mkdir(const char* pathname, mode_t mode); 8 | 9 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libfiles/meson.build: -------------------------------------------------------------------------------- 1 | project('libfiles', 'c') 2 | libfiles = static_library( 3 | 'files', 4 | 'libfiles.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('libraries_root'), 7 | dependencies: subproject('libutils').get_variable('libutils_dep') 8 | ) 9 | headers_dir = join_paths(meson.get_cross_property('include_root'), 'libfiles') 10 | install_headers(['libfiles.h'], install_dir: headers_dir) 11 | libfiles_dep = declare_dependency(include_directories: headers_dir, link_with: libfiles) 12 | -------------------------------------------------------------------------------- /programs/subprojects/libgui/gfx.h: -------------------------------------------------------------------------------- 1 | #ifndef GFX_H 2 | #define GFX_H 3 | 4 | typedef struct framebuffer_info { 5 | uint32_t type; 6 | uint32_t address; 7 | uint32_t width; 8 | uint32_t height; 9 | uint32_t bits_per_pixel; 10 | uint32_t bytes_per_pixel; 11 | uint32_t size; 12 | } framebuffer_info_t; 13 | 14 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libgui/gui_timer.h: -------------------------------------------------------------------------------- 1 | #ifndef GUI_TIMER_H 2 | #define GUI_TIMER_H 3 | 4 | #include 5 | #include "gui_elem.h" 6 | 7 | typedef void(*gui_timer_cb_t)(void* ctx); 8 | 9 | typedef struct gui_timer { 10 | uintptr_t start_time; 11 | uint32_t duration; 12 | uint32_t fires_after; 13 | gui_timer_cb_t invoke_cb; 14 | void* invoke_ctx; 15 | } gui_timer_t; 16 | 17 | void gui_timer_start(uint32_t duration, gui_timer_cb_t timer_cb, void* invoke_ctx); 18 | 19 | // Friend function for main event loop 20 | void gui_dispatch_ready_timers(gui_application_t* app); 21 | 22 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libgui/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef GUI_UTILS_H 2 | #define GUI_UTILS_H 3 | 4 | #include "gui_elem.h" 5 | #include "gui_layer.h" 6 | 7 | uint32_t ms_since_boot(void); 8 | 9 | void draw_diagonal_insets(gui_layer_t* layer, Rect outer, Rect inner, Color c, uint32_t width); 10 | const char* rect_print(Rect r); 11 | void rect_add(array_t* arr, Rect r); 12 | 13 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libimg/libimg.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBIMG_H 2 | #define LIBIMG_H 3 | 4 | #include 5 | 6 | typedef enum image_type { 7 | IMAGE_BITMAP = 0, 8 | IMAGE_JPEG = 1 9 | } image_type_t; 10 | 11 | typedef struct image { 12 | image_type_t type; 13 | Size size; 14 | uint32_t bit_count; 15 | uint8_t* pixel_data; 16 | } image_t; 17 | 18 | // Auto-detects image format 19 | image_t* image_parse(uint32_t size, uint8_t* data); 20 | // Format-specific image parsers 21 | image_t* image_parse_bmp(uint32_t size, uint8_t* data); 22 | image_t* image_parse_jpeg(uint32_t size, uint8_t* data); 23 | 24 | void image_free(image_t* image); 25 | void image_render_to_layer(image_t* image, ca_layer* dest, Rect frame); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /programs/subprojects/libimg/meson.build: -------------------------------------------------------------------------------- 1 | project('libimg', 'c') 2 | libimg = static_library( 3 | 'img', 4 | [ 5 | 'libimg.c', 6 | 'nanojpeg.c', 7 | ], 8 | install: true, 9 | install_dir: meson.get_cross_property('libraries_root') 10 | ) 11 | headers_dir = join_paths(meson.get_cross_property('include_root'), 'libimg') 12 | install_headers( 13 | ['libimg.h'], 14 | install_dir: headers_dir 15 | ) 16 | libimg_dep = declare_dependency(include_directories: headers_dir, link_with: libimg) 17 | -------------------------------------------------------------------------------- /programs/subprojects/libnet/meson.build: -------------------------------------------------------------------------------- 1 | project('libnet', 'c') 2 | add_project_link_arguments('-lutils', language: 'c') 3 | libnet = static_library( 4 | 'net', 5 | ['libnet.c'], 6 | install: true, 7 | install_dir: meson.get_cross_property('libraries_root'), 8 | dependencies: subproject('libutils').get_variable('libutils_dep') 9 | ) 10 | headers_dir = join_paths(meson.get_cross_property('include_root'), 'libnet') 11 | install_headers( 12 | ['libnet.h'], 13 | install_dir: headers_dir 14 | ) 15 | libnet_dep = declare_dependency(include_directories: headers_dir, link_with: libnet) 16 | -------------------------------------------------------------------------------- /programs/subprojects/libport/libport.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBPORT_H 2 | #define LIBPORT_H 3 | 4 | #include 5 | 6 | void outb(uint16_t port, uint8_t val); 7 | void outw(uint16_t port, uint16_t val); 8 | void outl(uint16_t port, uint32_t val); 9 | 10 | uint8_t inb(uint16_t port); 11 | uint16_t inw(uint16_t port); 12 | uint32_t inl(uint16_t port); 13 | 14 | uint8_t htonb(uint8_t byte, int num_bits); 15 | uint16_t htons(uint16_t hostshort); 16 | uint32_t htonl(uint32_t hostlong); 17 | 18 | uint8_t ntohb(uint8_t byte, int num_bits); 19 | uint16_t ntohs(uint16_t netshort); 20 | uint32_t ntohl(uint32_t netlong); 21 | 22 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libport/meson.build: -------------------------------------------------------------------------------- 1 | project('libport', 'c') 2 | libport = static_library( 3 | 'port', 4 | 'libport.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('libraries_root') 7 | ) 8 | headers_dir = join_paths(meson.get_cross_property('include_root'), 'libport') 9 | install_headers( 10 | ['libport.h'], 11 | install_dir: headers_dir 12 | ) 13 | libport_dep = declare_dependency(include_directories: headers_dir, link_with: libport) 14 | -------------------------------------------------------------------------------- /programs/subprojects/libutils/array.h: -------------------------------------------------------------------------------- 1 | #ifndef ARRAY_H 2 | #define ARRAY_H 3 | 4 | #include 5 | 6 | #define ARR_NOT_FOUND -1 7 | typedef void* type_t; 8 | 9 | typedef struct array { 10 | type_t* array; 11 | int32_t size; 12 | int32_t max_size; 13 | } array_t; 14 | 15 | array_t* array_create(int32_t max_size); 16 | void array_destroy(array_t* array); 17 | 18 | void array_insert(array_t* array, type_t item); 19 | void array_set(array_t* array, int32_t i, type_t item); 20 | void array_remove(array_t* array, int32_t i); 21 | 22 | type_t array_lookup(array_t* array, int32_t i); 23 | int32_t array_index(array_t* array, type_t item); 24 | 25 | // Helper destructor for a common code pattern that frees each element, then calls destroy 26 | void array_free_each_element_and_destroy(array_t* array); 27 | 28 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libutils/assert.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "assert.h" 5 | #include 6 | 7 | void task_assert(bool cond, const char* msg); 8 | 9 | void axle_assert(bool cond, const char* msg) { 10 | if (!cond) { 11 | task_assert(cond, msg); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /programs/subprojects/libutils/assert.h: -------------------------------------------------------------------------------- 1 | #ifndef ASSERT_H 2 | #define ASSERT_H 3 | 4 | #include 5 | 6 | void axle_assert(bool cond, const char* msg); 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /programs/subprojects/libutils/cmp.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBUTILS_CMP_H 2 | #define LIBUTILS_CMP_H 3 | 4 | #define CMP(op, a, b) ({ \ 5 | __typeof__(a) _a = (a); \ 6 | __typeof__(b) _b = (b); \ 7 | (_a op _b) ? _a : _b; \ 8 | }) 9 | #define MIN(a, b) CMP(<=, a, b) 10 | #define min(a, b) MIN(a, b) 11 | 12 | #define MAX(a, b) CMP(>, a, b) 13 | #define max(a, b) MAX(a, b) 14 | 15 | #define abs(val) ((val) < 0) ? -(val) : (val) 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /programs/subprojects/libutils/libutils.h: -------------------------------------------------------------------------------- 1 | #ifndef LIBUTILS_H 2 | #define LIBUTILS_H 3 | 4 | #include "array.h" 5 | #include "assert.h" 6 | #include "sleep.h" 7 | 8 | #endif -------------------------------------------------------------------------------- /programs/subprojects/libutils/meson.build: -------------------------------------------------------------------------------- 1 | project('libutils', 'c') 2 | libutils = static_library( 3 | 'utils', 4 | 'array.c', 5 | 'assert.c', 6 | 'sleep.c', 7 | install: true, 8 | install_dir: meson.get_cross_property('libraries_root') 9 | ) 10 | headers_dir = join_paths(meson.get_cross_property('include_root'), 'libutils') 11 | install_headers( 12 | ['libutils.h', 'array.h', 'assert.h', 'sleep.h', 'cmp.h'], 13 | install_dir: headers_dir 14 | ) 15 | libutils_dep = declare_dependency(include_directories: headers_dir, link_with: libutils) 16 | -------------------------------------------------------------------------------- /programs/subprojects/libutils/sleep.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | 6 | #include "sleep.h" 7 | #include "assert.h" 8 | 9 | #define AXLE_CORE_SERVICE_NAME "com.axle.core" 10 | #define AMC_SLEEP_UNTIL_TIMESTAMP 202 11 | 12 | int usleep(long unsigned int ms) { 13 | uint32_t b[2]; 14 | b[0] = AMC_SLEEP_UNTIL_TIMESTAMP; 15 | b[1] = ms; 16 | amc_message_send(AXLE_CORE_SERVICE_NAME, &b, sizeof(b)); 17 | return 0; 18 | } 19 | 20 | unsigned sleep(unsigned int seconds) { 21 | return usleep(seconds * 1000); 22 | } 23 | -------------------------------------------------------------------------------- /programs/subprojects/libutils/sleep.h: -------------------------------------------------------------------------------- 1 | #ifndef SLEEP_H 2 | #define SLEEP_H 3 | 4 | #include 5 | 6 | unsigned sleep(unsigned int seconds); 7 | int usleep(long unsigned int ms); 8 | 9 | uint32_t ms_since_boot(); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /programs/subprojects/logs_viewer/meson.build: -------------------------------------------------------------------------------- 1 | project('logs_viewer', 'c') 2 | executable( 3 | 'logs_viewer', 4 | 'logs_viewer.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libgui').get_variable('libgui_dep'), 9 | ] 10 | ) 11 | -------------------------------------------------------------------------------- /programs/subprojects/memory_scan_viewer/meson.build: -------------------------------------------------------------------------------- 1 | project('memory_scan_viewer', 'c') 2 | executable( 3 | 'memory_scan_viewer', 4 | 'memory_scan_viewer.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | -------------------------------------------------------------------------------- /programs/subprojects/memory_walker/meson.build: -------------------------------------------------------------------------------- 1 | project('memory_walker', 'c') 2 | executable( 3 | 'memory_walker', 4 | 'memory_walker.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | -------------------------------------------------------------------------------- /programs/subprojects/mouse_driver/meson.build: -------------------------------------------------------------------------------- 1 | project('mouse_driver', 'c') 2 | executable( 3 | 'mouse_driver', 4 | 'mouse_driver.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libport').get_variable('libport_dep'), 9 | subproject('libamc').get_variable('libamc_dep') 10 | ] 11 | ) 12 | install_headers( 13 | ['mouse_driver_messages.h'], 14 | install_dir: join_paths(meson.get_cross_property('include_root'), 'drivers', 'mouse') 15 | ) 16 | -------------------------------------------------------------------------------- /programs/subprojects/mouse_driver/mouse_driver_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef MOUSE_DRIVER_MESSAGES_H 2 | #define MOUSE_DRIVER_MESSAGES_H 3 | 4 | #define MOUSE_DRIVER_SERVICE_NAME "com.axle.mouse_driver" 5 | 6 | #define MOUSE_PACKET 1 7 | typedef struct mouse_packet_msg { 8 | uint32_t event; 9 | int8_t status; 10 | int16_t rel_x; 11 | int16_t rel_y; 12 | int8_t rel_z; 13 | } mouse_packet_msg_t; 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /programs/subprojects/net/callback.h: -------------------------------------------------------------------------------- 1 | #ifndef CALLBACK_H 2 | #define CALLBACK_H 3 | 4 | #include 5 | #include 6 | 7 | void* callback_list_init(void); 8 | void* callback_list_destroy(void* callback_list); 9 | 10 | typedef bool(*cb_is_satisfied_func)(void*); 11 | typedef void(*cb_complete_func)(void*); 12 | 13 | // Set up a callback with a satisfaction and completion function 14 | void callback_list_add_callback( 15 | void* callback_list, 16 | void* callback_info, 17 | cb_is_satisfied_func is_satisfied, 18 | cb_complete_func complete 19 | ); 20 | 21 | // Invokes the satisfaction function of each callback and completes them if ready 22 | void callback_list_invoke_ready_callbacks(void* callback_list); 23 | 24 | bool callback_list_invoke_callback_if_ready(void* callback_list, void* ctx); 25 | 26 | #endif -------------------------------------------------------------------------------- /programs/subprojects/net/ethernet.h: -------------------------------------------------------------------------------- 1 | #ifndef NET_ETHERNET_H 2 | #define NET_ETHERNET_H 3 | 4 | #include 5 | #include "net.h" 6 | 7 | typedef enum ethtype { 8 | ETHTYPE_ARP = 0x0806, 9 | ETHTYPE_IPv4 = 0x0800, 10 | ETHTYPE_IPv6 = 0x86dd 11 | } ethtype_t; 12 | 13 | typedef struct ethernet_frame { 14 | uint8_t dst_mac_addr[MAC_ADDR_SIZE]; 15 | uint8_t src_mac_addr[MAC_ADDR_SIZE]; 16 | uint16_t type; 17 | uint8_t data[]; 18 | } __attribute__((packed)) ethernet_frame_t; 19 | 20 | void ethernet_receive(packet_info_t* packet_info, ethernet_frame_t* ethernet_frame, uint32_t size); 21 | void ethernet_send(uint8_t dst_mac_addr[MAC_ADDR_SIZE], ethtype_t ethtype, uint8_t* packet, uint32_t size); 22 | 23 | #endif -------------------------------------------------------------------------------- /programs/subprojects/net/udp.h: -------------------------------------------------------------------------------- 1 | #ifndef NET_UDP_H 2 | #define NET_UDP_H 3 | 4 | #include "net.h" 5 | 6 | typedef struct udp_packet { 7 | uint16_t source_port; 8 | uint16_t dest_port; 9 | uint16_t length; 10 | uint16_t checksum; 11 | uint8_t data[]; 12 | } __attribute((packed)) udp_packet_t; 13 | 14 | void udp_receive(packet_info_t* packet_info, udp_packet_t* packet, uint32_t packet_size); 15 | void udp_send(void* packet, 16 | uint32_t packet_size, 17 | uint16_t source_port, 18 | uint16_t dest_port, 19 | uint8_t dst_ip[IPv4_ADDR_SIZE]); 20 | 21 | #endif -------------------------------------------------------------------------------- /programs/subprojects/net/util.h: -------------------------------------------------------------------------------- 1 | #ifndef NET_UTIL_H 2 | #define NET_UTIL_H 3 | 4 | #include 5 | #include 6 | 7 | #include "net.h" 8 | 9 | void format_mac_address(char* out, ssize_t out_size, uint8_t mac_addr[6]); 10 | 11 | void format_ipv4_address__buf(char* out, ssize_t out_size, uint8_t ip_addr[4]); 12 | void format_ipv4_address__u32(char* out, ssize_t out_size, uint32_t ip_addr); 13 | 14 | void hexdump(const void* addr, const int len); 15 | 16 | uint16_t net_checksum_ipv4(void* addr, int count); 17 | // TODO(PT): This produces the wrong checksum and needs fixing 18 | uint16_t net_checksum_tcp_udp(uint16_t proto, 19 | uint16_t length, 20 | uint8_t src_ip[IPv4_ADDR_SIZE], 21 | uint8_t dst_ip[IPv4_ADDR_SIZE], 22 | void* addr, 23 | int count); 24 | 25 | #endif -------------------------------------------------------------------------------- /programs/subprojects/netclient/css.h: -------------------------------------------------------------------------------- 1 | #ifndef UTILS_H 2 | #define UTILS_H 3 | 4 | #include 5 | #include "shims.h" 6 | 7 | typedef struct css_node { 8 | char* name; 9 | 10 | bool sets_background_color; 11 | Color background_color; 12 | 13 | bool sets_margin_top; 14 | uint32_t margin_top; 15 | 16 | bool sets_margin_bottom; 17 | uint32_t margin_bottom; 18 | 19 | bool sets_margin_left; 20 | uint32_t margin_left; 21 | 22 | bool sets_margin_right; 23 | uint32_t margin_right; 24 | 25 | bool sets_font_size_em; 26 | uint32_t font_size_em; 27 | 28 | bool sets_font_color; 29 | Color font_color; 30 | 31 | struct css_node* parent; 32 | struct css_node** children; 33 | uint32_t max_children; 34 | uint32_t child_count; 35 | } css_node_t; 36 | 37 | array_t* css_parse(const char* stylesheet); 38 | void css_tree_print(css_node_t* root); 39 | 40 | #endif -------------------------------------------------------------------------------- /programs/subprojects/netclient/elem_stack.h: -------------------------------------------------------------------------------- 1 | #ifndef ELEM_STACK_H 2 | #define ELEM_STACK_H 3 | 4 | typedef struct elem_stack elem_stack_t; 5 | 6 | elem_stack_t* stack_create(void); 7 | void stack_destroy(elem_stack_t* s); 8 | 9 | void stack_push(elem_stack_t* stack, void* item); 10 | void* stack_peek(elem_stack_t* stack); 11 | void* stack_pop(elem_stack_t* stack); 12 | 13 | #endif -------------------------------------------------------------------------------- /programs/subprojects/netclient/gfx.h: -------------------------------------------------------------------------------- 1 | #ifndef GFX_H 2 | #define GFX_H 3 | 4 | typedef struct framebuffer_info { 5 | uint32_t type; 6 | uint32_t address; 7 | uint32_t width; 8 | uint32_t height; 9 | uint32_t bits_per_pixel; 10 | uint32_t bytes_per_pixel; 11 | uint32_t size; 12 | } framebuffer_info_t; 13 | 14 | #endif -------------------------------------------------------------------------------- /programs/subprojects/netclient/html.h: -------------------------------------------------------------------------------- 1 | #ifndef HTML_H 2 | #define HTML_H 3 | 4 | #include 5 | #include "shims.h" 6 | 7 | typedef enum html_dom_node_type { 8 | HTML_DOM_NODE_TYPE_DOCUMENT = 0, 9 | HTML_DOM_NODE_TYPE_HTML_TAG = 1, 10 | HTML_DOM_NODE_TYPE_TEXT = 2, 11 | } html_dom_node_type_t; 12 | 13 | typedef struct html_dom_node { 14 | html_dom_node_type_t type; 15 | char* name; 16 | char* attrs; 17 | 18 | struct html_dom_node* parent; 19 | struct html_dom_node** children; 20 | uint32_t max_children; 21 | uint32_t child_count; 22 | } html_dom_node_t; 23 | 24 | typedef struct html_dom { 25 | html_dom_node_t* root; 26 | } html_dom_t; 27 | 28 | html_dom_node_t* html_parse_from_socket(uint32_t conn_desc); 29 | void html_dom_node_print(html_dom_node_t* node); 30 | 31 | #endif -------------------------------------------------------------------------------- /programs/subprojects/netclient/meson.build: -------------------------------------------------------------------------------- 1 | project('netclient', 'c') 2 | executable( 3 | 'netclient', 4 | [ 5 | 'netclient.c', 6 | 'html.c', 7 | 'elem_stack.c', 8 | 'layout.c', 9 | 'render.c', 10 | 'shims.c', 11 | 'css.c', 12 | 'utils.c', 13 | ], 14 | install: true, 15 | install_dir: meson.get_cross_property('initrd_dir'), 16 | dependencies: [ 17 | subproject('libgui').get_variable('libgui_dep'), 18 | subproject('libnet').get_variable('libnet_dep'), 19 | subproject('libutils').get_variable('libutils_dep'), 20 | meson.get_compiler('c').find_library('m') 21 | ] 22 | ) 23 | -------------------------------------------------------------------------------- /programs/subprojects/netclient/shims.c: -------------------------------------------------------------------------------- 1 | #include "shims.h" 2 | #include "mock-request.h" 3 | 4 | uint32_t html_read_tcp_stream(uint32_t conn_descriptor, uint8_t* buf, uint32_t len) { 5 | return net_tcp_conn_read(conn_descriptor, buf, len); 6 | memcpy(buf, mocked_request, sizeof(mocked_request)); 7 | return sizeof(mocked_request); 8 | } 9 | -------------------------------------------------------------------------------- /programs/subprojects/netclient/shims.h: -------------------------------------------------------------------------------- 1 | #ifndef SHIMS_H 2 | #define SHIMS_H 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | uint32_t html_read_tcp_stream(uint32_t conn_descriptor, uint8_t* buf, uint32_t len); 12 | 13 | #endif -------------------------------------------------------------------------------- /programs/subprojects/netclient/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef CSS_H 2 | #define CSS_H 3 | 4 | #include 5 | #include "shims.h" 6 | 7 | bool str_is_whitespace(const char* s); 8 | bool str_ends_with(const char* s, uint32_t s_len, const char* t, uint32_t t_len); 9 | int strcicmp(char const* a, char const* b); 10 | 11 | #endif -------------------------------------------------------------------------------- /programs/subprojects/paintbrush/meson.build: -------------------------------------------------------------------------------- 1 | project('paintbrush', 'c') 2 | executable( 3 | 'paintbrush', 4 | 'paintbrush.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | -------------------------------------------------------------------------------- /programs/subprojects/pci_driver/meson.build: -------------------------------------------------------------------------------- 1 | project('pci_driver', 'c') 2 | executable( 3 | 'pci_driver', 4 | 'pci_driver.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libgui').get_variable('libgui_dep'), 9 | subproject('libport').get_variable('libport_dep'), 10 | ] 11 | ) 12 | install_headers( 13 | ['pci_messages.h'], 14 | install_dir: join_paths(meson.get_cross_property('include_root'), 'pci') 15 | ) 16 | -------------------------------------------------------------------------------- /programs/subprojects/pci_driver/pci_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef PCI_MESSAGES_H 2 | #define PCI_MESSAGES_H 3 | 4 | #include 5 | 6 | #define PCI_SERVICE_NAME "com.axle.pci_driver" 7 | 8 | // Sent from client to pci_driver as amc_msg_u32_5 9 | // (Message ID, Bus, Device, Function, Offset) 10 | #define PCI_REQUEST_READ_CONFIG_WORD (1 << 0) 11 | // Sent from pci_driver to client as amc_msg_u32_2 12 | // (Message ID, config word value) 13 | #define PCI_RESPONSE_READ_CONFIG_WORD (1 << 0) 14 | 15 | #define PCI_REQUEST_WRITE_CONFIG_WORD (1 << 1) 16 | #define PCI_RESPONSE_WRITE_CONFIG_WORD (1 << 1) 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /programs/subprojects/preferences/meson.build: -------------------------------------------------------------------------------- 1 | project('preferences', 'c') 2 | executable( 3 | 'preferences', 4 | 'preferences.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libgui').get_variable('libgui_dep'), 9 | subproject('awm').get_variable('awm_dep'), 10 | ] 11 | ) 12 | install_headers( 13 | ['preferences_messages.h'], 14 | install_dir: join_paths(meson.get_cross_property('include_root'), 'preferences') 15 | ) 16 | -------------------------------------------------------------------------------- /programs/subprojects/preferences/preferences_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef PREFERENCES_MESSAGES_H 2 | #define PREFERENCES_MESSAGES_H 3 | 4 | #include 5 | #include 6 | 7 | #define PREFERENCES_SERVICE_NAME "com.axle.preferences" 8 | 9 | typedef struct prefs_updated_msg { 10 | uint32_t event; 11 | Color from; 12 | Color to; 13 | } prefs_updated_msg_t; 14 | 15 | #endif -------------------------------------------------------------------------------- /programs/subprojects/print_and_exit/meson.build: -------------------------------------------------------------------------------- 1 | project('print_and_exit', 'c') 2 | executable( 3 | 'print_and_exit', 4 | 'print_and_exit.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir') 7 | ) 8 | -------------------------------------------------------------------------------- /programs/subprojects/print_and_exit/print_and_exit.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char** argv) { 4 | printf("**** Running! ****\n"); 5 | printf("PID %d a\nnew\n", getpid()); 6 | printf("Argc: %d argv: 0x%08x\n", argc, argv); 7 | for (int i = 0; i < argc; i++) { 8 | printf("Argv[%d] = %s\n", i, argv[i]); 9 | } 10 | return 1; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /programs/subprojects/rainbow/meson.build: -------------------------------------------------------------------------------- 1 | project('rainbow', 'c') 2 | executable( 3 | 'rainbow', 4 | 'rainbow.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | -------------------------------------------------------------------------------- /programs/subprojects/realtek_8139_driver/meson.build: -------------------------------------------------------------------------------- 1 | project('realtek_8139_driver', 'c') 2 | realtek_8139_driver = executable( 3 | 'realtek_8139_driver', 4 | 'realtek_8139_driver.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libgui').get_variable('libgui_dep'), 9 | subproject('libport').get_variable('libport_dep'), 10 | subproject('libamc').get_variable('libamc_dep'), 11 | ] 12 | ) 13 | headers_dir = join_paths(meson.get_cross_property('include_root'), 'drivers', 'realtek_8139') 14 | install_headers( 15 | ['rtl8139_messages.h'], 16 | install_dir: headers_dir 17 | ) 18 | realtek_8139_driver_dep = declare_dependency(include_directories: headers_dir) 19 | -------------------------------------------------------------------------------- /programs/subprojects/realtek_8139_driver/rtl8139_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef RTL_8139_MESSAGES_H 2 | #define RTL_8139_MESSAGES_H 3 | 4 | #define RTL8139_SERVICE_NAME "com.axle.realtek_8139_driver" 5 | 6 | #endif -------------------------------------------------------------------------------- /programs/subprojects/snake/meson.build: -------------------------------------------------------------------------------- 1 | project('snake', 'c') 2 | executable( 3 | 'snake', 4 | 'snake.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | -------------------------------------------------------------------------------- /programs/subprojects/task_viewer/meson.build: -------------------------------------------------------------------------------- 1 | project('task_viewer', 'c') 2 | executable( 3 | 'task_viewer', 4 | 'task_viewer.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | -------------------------------------------------------------------------------- /programs/subprojects/terminal/meson.build: -------------------------------------------------------------------------------- 1 | project('terminal', 'c') 2 | executable( 3 | 'terminal', 4 | 'terminal.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libgui').get_variable('libgui_dep'), 9 | subproject('libport').get_variable('libport_dep'), 10 | ] 11 | ) 12 | -------------------------------------------------------------------------------- /programs/subprojects/terminal/terminal.h: -------------------------------------------------------------------------------- 1 | #ifndef TERMINAL_H 2 | #define TERMINAL_H 3 | 4 | #include 5 | 6 | #define TERMINAL_SERVICE_NAME "com.axle.terminal" 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /programs/subprojects/textpad/meson.build: -------------------------------------------------------------------------------- 1 | project('textpad', 'c') 2 | executable( 3 | 'textpad', 4 | 'textpad.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: subproject('libgui').get_variable('libgui_dep') 8 | ) 9 | -------------------------------------------------------------------------------- /programs/subprojects/true/meson.build: -------------------------------------------------------------------------------- 1 | project('true', 'c') 2 | executable( 3 | 'true', 4 | 'true.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir') 7 | ) 8 | -------------------------------------------------------------------------------- /programs/subprojects/true/true.c: -------------------------------------------------------------------------------- 1 | int main(int argc, char** argv) { 2 | return 0; 3 | } 4 | -------------------------------------------------------------------------------- /programs/subprojects/watchdogd/meson.build: -------------------------------------------------------------------------------- 1 | project('watchdogd', 'c') 2 | executable( 3 | 'watchdogd', 4 | 'watchdogd.c', 5 | install: true, 6 | install_dir: meson.get_cross_property('initrd_dir'), 7 | dependencies: [ 8 | subproject('libamc').get_variable('libamc_dep'), 9 | subproject('libutils').get_variable('libutils_dep'), 10 | ] 11 | ) 12 | install_headers( 13 | ['watchdogd_messages.h'], 14 | install_dir: join_paths(meson.get_cross_property('include_root'), 'daemons', 'watchdogd') 15 | ) 16 | -------------------------------------------------------------------------------- /programs/subprojects/watchdogd/watchdogd.h: -------------------------------------------------------------------------------- 1 | #ifndef WATCHDOGD_H 2 | #define WATCHDOGD_H 3 | 4 | #include 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /programs/subprojects/watchdogd/watchdogd_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef WATCHDOGD_MESSAGES_H 2 | #define WATCHDOGD_MESSAGES_H 3 | 4 | #include 5 | 6 | #define WATCHDOGD_SERVICE_NAME "com.axle.watchdogd" 7 | 8 | // Sent from watchdogd to any amc service 9 | #define WATCHDOGD_LIVELINESS_PING (1 << 2) 10 | 11 | // Sent from any amc service to watchdogd 12 | #define WATCHDOGD_LIVELINESS_PING_RESPONSE (1 << 3) 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /programs/tlsclient/asn1.h: -------------------------------------------------------------------------------- 1 | #ifndef ASN1_H 2 | #define ASN1_H 3 | 4 | #include 5 | #include "tls.h" 6 | 7 | void asn1_cert_parse(tls_conn_t* conn, uint32_t cert_len); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /programs/tlsclient/big_int.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "big_int.h" 4 | 5 | typedef struct big_int { 6 | uint32_t* components; 7 | uint32_t component_count; 8 | uint32_t max_component_count; 9 | } big_int_t; 10 | 11 | big_int_t* big_int_alloc() { 12 | big_int_t* bi = calloc(1, sizeof(big_int_t)); 13 | bi->max_component_count = 4; 14 | bi->component_count = 0; 15 | } 16 | 17 | void big_int_or(big_int_t* bi, uint32_t val) { 18 | 19 | } -------------------------------------------------------------------------------- /programs/tlsclient/big_int.h: -------------------------------------------------------------------------------- 1 | #ifndef BIG_INT_H 2 | #define BIG_INT_H 3 | 4 | #include 5 | 6 | typedef struct big_int big_int_t; 7 | 8 | big_int_t* big_int_alloc(); 9 | void big_int_or(big_int_t* bi, uint32_t val); 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /programs/tlsclient/meson.build: -------------------------------------------------------------------------------- 1 | project('tlsclient', 'c') 2 | add_project_link_arguments('-lnet', '-lport', '-lgui', '-lagx', '-lamc', '-lutils', language: 'c') 3 | executable( 4 | 'tlsclient', 5 | [ 6 | 'tlsclient.c', 7 | 'tls.c', 8 | 'asn1.c', 9 | 'big_int.c', 10 | ], 11 | install: true, 12 | install_dir: meson.get_cross_property('initrd_dir') 13 | ) 14 | -------------------------------------------------------------------------------- /programs/tlsclient/tls.h: -------------------------------------------------------------------------------- 1 | #ifndef TLS_H 2 | #define TLS_H 3 | 4 | #include 5 | 6 | typedef enum tls_conn_state { 7 | TLS_INIT = 0, 8 | TLS_CLIENT_HELLO_SENT = 1, 9 | TLS_SERVER_HELLO_RECV = 2, 10 | TLS_SERVER_CERTIFICATE_RECV = 3, 11 | } tls_conn_state_t; 12 | 13 | typedef struct tls_conn { 14 | uint32_t tcp_conn_desc; 15 | uint8_t current_chunk[1024]; 16 | uint32_t current_chunk_size; 17 | uint32_t read_off; 18 | uint32_t previously_read_byte_count; 19 | tls_conn_state_t state; 20 | } tls_conn_t; 21 | 22 | void tls_init(uint32_t tcp_conn_desc); 23 | void* tls_read(tls_conn_t* state, uint32_t len); 24 | uint8_t tls_read_byte(tls_conn_t* state); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /python-dependencies.txt: -------------------------------------------------------------------------------- 1 | requests 2 | ninja 3 | meson==0.60.2 4 | -------------------------------------------------------------------------------- /resources/grub.cfg: -------------------------------------------------------------------------------- 1 | set timeout=0 2 | 3 | menuentry "AXLE OS" { 4 | multiboot /boot/axle.bin 5 | module /boot/initrd.img initrd.img 6 | } 7 | -------------------------------------------------------------------------------- /resources/linker.ld: -------------------------------------------------------------------------------- 1 | /* Kernel entry point */ 2 | ENTRY(_start) 3 | 4 | /* Kernel is loaded at the top of the 64-bit address space minus 2G */ 5 | KERNEL_VMA = 0xFFFFFFFF80000000; 6 | 7 | SECTIONS { 8 | . = KERNEL_VMA; 9 | 10 | _kernel_image_start = .; 11 | 12 | .text BLOCK(4K) : ALIGN(4K) { 13 | *(.text) 14 | } 15 | 16 | .rodata BLOCK(4K) : ALIGN(4K) { 17 | *(.rodata) 18 | } 19 | 20 | .data BLOCK(4K) : ALIGN(4K) { 21 | *(.data) 22 | } 23 | 24 | .bss BLOCK(4K) : ALIGN(4K) { 25 | *(COMMON) 26 | *(.bss) 27 | } 28 | 29 | _kernel_image_end = .; 30 | } 31 | -------------------------------------------------------------------------------- /rust_kernel_libs/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | resolver = "2" 3 | members = [ 4 | "ffi_bindings", 5 | "acpi", 6 | "pmm", 7 | ] 8 | 9 | exclude = [] -------------------------------------------------------------------------------- /rust_kernel_libs/acpi/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "acpi" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [lib] 7 | name = "acpi" 8 | crate-type = ["staticlib"] 9 | 10 | [dependencies] 11 | ffi_bindings = {path = "../ffi_bindings"} 12 | lazy_static = { version = "1.4.0", features = ["spin_no_std"] } 13 | spin = "0.9.4" 14 | 15 | [dependencies.bitvec] 16 | version = "1" 17 | default-features = false 18 | features = ["alloc"] 19 | -------------------------------------------------------------------------------- /rust_kernel_libs/acpi/src/interrupts.rs: -------------------------------------------------------------------------------- 1 | use alloc::vec::Vec; 2 | use lazy_static::lazy_static; 3 | use spin::Mutex; 4 | 5 | lazy_static! { 6 | // Note that the same IDT is shared across every CPU core 7 | static ref IDT_FREE_VECTORS: spin::Mutex> = Mutex::new(Vec::new()); 8 | } 9 | 10 | pub fn idt_set_free_vectors(free_vectors: &Vec) { 11 | for vec in free_vectors.iter() { 12 | IDT_FREE_VECTORS.lock().push(*vec); 13 | } 14 | } 15 | 16 | #[no_mangle] 17 | pub fn idt_allocate_vector() -> usize { 18 | // Pop from the front so the allocations are a bit more intuitive 19 | IDT_FREE_VECTORS.lock().remove(0) 20 | } 21 | -------------------------------------------------------------------------------- /rust_kernel_libs/ffi_bindings/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ffi_bindings" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [lib] 7 | name = "ffi_bindings" 8 | crate-type = ["rlib", "staticlib"] 9 | 10 | [dependencies] 11 | cstr_core = "0.2.4" 12 | -------------------------------------------------------------------------------- /rust_kernel_libs/pmm/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "pmm" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [lib] 7 | name = "pmm" 8 | crate-type = ["staticlib"] 9 | 10 | [dependencies] 11 | ffi_bindings = {path = "../ffi_bindings"} 12 | lazy_static = { version = "1.4.0", features = ["spin_no_std"] } 13 | spin = "0.9.4" 14 | heapless = { version = "0.7.16" } 15 | -------------------------------------------------------------------------------- /rust_kernel_libs/x86_64-unknown-axle_kernel.json: -------------------------------------------------------------------------------- 1 | { 2 | "arch": "x86_64", 3 | "cpu": "x86-64", 4 | "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128", 5 | "dynamic-linking": false, 6 | "llvm-target": "x86_64-unknown-none-gnu", 7 | "target-endian": "little", 8 | "target-pointer-width": "64", 9 | "pre-link-args": { 10 | "gcc": ["-m64", "--script=../resources/linker.ld"] 11 | }, 12 | "features": "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-float", 13 | "disable-redzone": true, 14 | "os": "axle_kernel", 15 | "executables": true, 16 | "position-independent-executables": false, 17 | "panic-strategy": "abort", 18 | "target-family": [ 19 | "axle" 20 | ], 21 | "max-atomic-width": 64, 22 | "linker-flavor": "gcc", 23 | "linker-is-gnu": true, 24 | "linker": "../x86_64-toolchain/bin/x86_64-elf-axle-gcc", 25 | "archive-format": "gnu", 26 | "code-model": "kernel" 27 | } -------------------------------------------------------------------------------- /rust_programs/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | resolver = "2" 3 | members = [ 4 | "agx_definitions", 5 | "awm_messages", 6 | "axle_rt", 7 | "axle_rt_derive", 8 | "file_browser", 9 | "file_manager_messages", 10 | "initrd_fs", 11 | "libfs", 12 | "libgui", 13 | "gb_emu", 14 | "sata_driver", 15 | "sata_driver_messages", 16 | "dock", 17 | "image_viewer_messages", 18 | # "linker", 19 | "linker_messages", 20 | "ide", 21 | "libgui_derive", 22 | "xplatform_gui", 23 | "awm2", 24 | # "c_compiler", 25 | "example_program", 26 | # "compilation_definitions", 27 | "mouse_driver_messages", 28 | "kb_driver_messages", 29 | "preferences_messages", 30 | "dock_messages", 31 | "menu_bar", 32 | "menu_bar_messages", 33 | "ttf_renderer", 34 | "ttf_viewer", 35 | ] 36 | 37 | exclude = [ 38 | "gpt_helper", 39 | "scroll_view_test", 40 | ] -------------------------------------------------------------------------------- /rust_programs/agx_definitions/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/agx_definitions/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "agx_definitions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = { path = "../axle_rt" } 8 | itertools = { version = "0.10.5", default-features = false } 9 | bresenham = { git = "https://github.com/indubitablement2/bresenham-rs" } 10 | 11 | # PT: For f64.sqrt() in no_std contexts 12 | [dependencies.num-traits] 13 | version = "0.2" 14 | default-features = false 15 | features = ["libm"] 16 | 17 | [features] 18 | no_std = [] 19 | -------------------------------------------------------------------------------- /rust_programs/awm2/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /rust_programs/awm2/requirements.md: -------------------------------------------------------------------------------- 1 | Supports multiple windows per process 2 | -------------------------------------------------------------------------------- /rust_programs/awm2/src/keyboard.rs: -------------------------------------------------------------------------------- 1 | use alloc::collections::BTreeSet; 2 | 3 | #[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Debug)] 4 | pub enum KeyboardModifier { 5 | Shift, 6 | Control, 7 | Command, 8 | Option, 9 | } 10 | 11 | pub struct KeyboardState { 12 | pub pressed_modifiers: BTreeSet, 13 | } 14 | 15 | impl KeyboardState { 16 | pub fn new() -> Self { 17 | Self { 18 | pressed_modifiers: BTreeSet::new(), 19 | } 20 | } 21 | 22 | pub fn is_control_held(&self) -> bool { 23 | self.pressed_modifiers.contains(&KeyboardModifier::Control) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /rust_programs/awm_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/awm_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "awm_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | agx_definitions = {path = "../agx_definitions" } 10 | cstr_core = "0.2.4" 11 | 12 | [features] 13 | testing = [] 14 | -------------------------------------------------------------------------------- /rust_programs/awm_messages/src/awm2_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef AWM2_H 2 | #define AWM2_H 3 | 4 | // PT: Must match the definitions in the corresponding Rust file 5 | 6 | #define AWM2_SERVICE_NAME "com.axle.awm" 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /rust_programs/axle_rt/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/axle_rt/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "axle_rt" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | cstr_core = "0.2.4" 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | 10 | [features] 11 | testing = [] 12 | -------------------------------------------------------------------------------- /rust_programs/axle_rt_derive/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "axle_rt_derive" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [lib] 7 | name = "axle_rt_derive" 8 | proc-macro = true 9 | 10 | [dependencies] 11 | quote = "1.0" 12 | syn = "1.0" 13 | -------------------------------------------------------------------------------- /rust_programs/axle_rt_derive/src/lib.rs: -------------------------------------------------------------------------------- 1 | extern crate proc_macro; 2 | 3 | use proc_macro::TokenStream; 4 | use quote::quote; 5 | use syn; 6 | 7 | #[proc_macro_derive(ContainsEventField)] 8 | pub fn contains_event_field_derive(input: TokenStream) -> TokenStream { 9 | let ast = syn::parse(input).unwrap(); 10 | impl_contains_event_field(&ast) 11 | } 12 | 13 | fn impl_contains_event_field(ast: &syn::DeriveInput) -> TokenStream { 14 | let name = &ast.ident; 15 | let gen = quote! { 16 | impl ContainsEventField for #name { 17 | fn event(&self) -> u32 { 18 | self.event 19 | } 20 | } 21 | }; 22 | gen.into() 23 | } 24 | -------------------------------------------------------------------------------- /rust_programs/c_compiler/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "c_compiler" 3 | version = "0.1.0" 4 | edition = "2021" 5 | resolver = "2" 6 | 7 | [features] 8 | # default = ["run_in_axle"] 9 | default = ["run_with_std"] 10 | run_in_axle = [] 11 | run_with_std = ["tempfile"] 12 | 13 | [dependencies] 14 | axle_rt = {path = "../axle_rt" } 15 | axle_rt_derive = {path = "../axle_rt_derive" } 16 | compilation_definitions = { path = "../compilation_definitions" } 17 | # TODO(PT): This should enable the default features when we're running in no_std 18 | linker = { path = "../linker", default-features = false } 19 | 20 | cstr_core = "0.2.4" 21 | itertools = "0.10.5" 22 | # These dependencies are only enabled in run_with_std mode 23 | tempfile = { version = "3.3.0", optional = true } 24 | derive_more = "0.99.17" 25 | strum = "0.24.1" 26 | strum_macros = "0.24" 27 | static_assertions = "1.1.0" 28 | -------------------------------------------------------------------------------- /rust_programs/c_compiler/src/main_axle.rs: -------------------------------------------------------------------------------- 1 | use axle_rt::{amc_message_await_unchecked, amc_register_service, println, AmcMessage}; 2 | 3 | pub fn main() {} 4 | -------------------------------------------------------------------------------- /rust_programs/compilation_definitions/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "compilation_definitions" 3 | version = "0.1.0" 4 | edition = "2021" 5 | resolver = "2" 6 | 7 | [dependencies] 8 | axle_rt = {path = "../axle_rt" } 9 | axle_rt_derive = {path = "../axle_rt_derive" } 10 | cstr_core = "0.2.4" 11 | derive_more = "0.99.17" 12 | strum = "0.24.1" 13 | strum_macros = "0.24" 14 | assert_hex = "0.2.2" 15 | bitmatch = "0.1.1" 16 | -------------------------------------------------------------------------------- /rust_programs/compilation_definitions/src/lib.rs: -------------------------------------------------------------------------------- 1 | //#[no_std] 2 | #![feature(stmt_expr_attributes)] 3 | 4 | pub mod prelude; 5 | 6 | pub mod asm; 7 | pub mod encoding; 8 | pub mod instructions; 9 | pub mod registers; 10 | -------------------------------------------------------------------------------- /rust_programs/compilation_definitions/src/prelude.rs: -------------------------------------------------------------------------------- 1 | pub use crate::registers::Register::*; 2 | pub use crate::registers::{AccessType, RegView, Register}; 3 | -------------------------------------------------------------------------------- /rust_programs/dock/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /rust_programs/dock/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "dock" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = { path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | agx_definitions = {path = "../agx_definitions" } 10 | awm_messages = {path = "../awm_messages" } 11 | dock_messages = {path = "../dock_messages" } 12 | libgui = { path = "../libgui" } 13 | -------------------------------------------------------------------------------- /rust_programs/dock_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/dock_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "dock_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | agx_definitions = {path = "../agx_definitions"} 10 | -------------------------------------------------------------------------------- /rust_programs/example_program/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "example_program" 3 | version = "0.1.0" 4 | edition = "2021" 5 | resolver = "2" 6 | 7 | [features] 8 | default = ["run_in_axle"] 9 | run_in_axle = [] 10 | run_with_std = [] 11 | 12 | [dependencies] 13 | axle_rt = {path = "../axle_rt" } 14 | axle_rt_derive = {path = "../axle_rt_derive" } 15 | cstr_core = "0.2.4" 16 | agx_definitions = {path = "../agx_definitions" } 17 | awm_messages = {path = "../awm_messages" } 18 | libgui = { path = "../libgui" } 19 | -------------------------------------------------------------------------------- /rust_programs/example_program/src/main_std.rs: -------------------------------------------------------------------------------- 1 | use std::error; 2 | 3 | pub fn main() -> Result<(), Box> { 4 | println!("Running with std"); 5 | 6 | Ok(()) 7 | } 8 | -------------------------------------------------------------------------------- /rust_programs/file_browser/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /rust_programs/file_browser/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "file_browser" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = { path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | agx_definitions = {path = "../agx_definitions" } 10 | libgui = { path = "../libgui" } 11 | file_manager_messages = {path = "../file_manager_messages" } 12 | image_viewer_messages = {path = "../image_viewer_messages" } 13 | -------------------------------------------------------------------------------- /rust_programs/file_manager_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/file_manager_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "file_manager_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | cstr_core = "0.2.4" 10 | 11 | [features] 12 | testing = [] 13 | -------------------------------------------------------------------------------- /rust_programs/gb_emu/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /rust_programs/gb_emu/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gb_emu" 3 | version = "0.1.0" 4 | edition = "2021" 5 | resolver = "2" 6 | 7 | [features] 8 | default = ["run_in_axle"] 9 | use_std = ["pixels", "winit", "image"] 10 | run_in_axle = ["libgui"] 11 | 12 | [dependencies] 13 | axle_rt = {path = "../axle_rt" } 14 | agx_definitions = { path = "../agx_definitions" } 15 | awm_messages = { path = "../awm_messages" } 16 | file_manager_messages = { path = "../file_manager_messages" } 17 | bitmatch = "0.1.1" 18 | # These dependencies are only enabled in use_std mode 19 | pixels = { version = "0.11.0", optional = true } 20 | winit = { version = "0.29.10", optional = true, features = ["rwh_05"] } 21 | image = { version = "0.24.0", optional = true } 22 | 23 | # [target.'cfg(feature = "run_in_axle")'.dependencies] 24 | libgui = { path = "../libgui", optional = true } 25 | -------------------------------------------------------------------------------- /rust_programs/gb_emu/src/main.rs: -------------------------------------------------------------------------------- 1 | #![cfg_attr(not(feature = "use_std"), no_std)] 2 | #![cfg_attr(feature = "run_in_axle", feature(start))] 3 | #![cfg_attr(feature = "run_in_axle", feature(format_args_nl))] 4 | #![cfg_attr(feature = "run_in_axle", feature(default_alloc_error_handler))] 5 | extern crate alloc; 6 | 7 | mod cpu; 8 | mod gameboy; 9 | mod interrupts; 10 | mod joypad; 11 | mod mmu; 12 | mod ppu; 13 | mod serial; 14 | mod timer; 15 | 16 | #[cfg(not(feature = "use_std"))] 17 | mod main_axle; 18 | #[cfg(not(feature = "use_std"))] 19 | #[start] 20 | #[allow(unreachable_code)] 21 | fn start(_argc: isize, _argv: *const *const u8) -> isize { 22 | main_axle::main(); 23 | 0 24 | } 25 | 26 | #[cfg(feature = "use_std")] 27 | mod main_std; 28 | #[cfg(feature = "use_std")] 29 | fn main() { 30 | main_std::main(); 31 | } 32 | -------------------------------------------------------------------------------- /rust_programs/gpt_helper/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/gpt_helper/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "gpt_helper" 3 | version = "0.1.0" 4 | edition = "2021" 5 | workspace = "../" 6 | 7 | [features] 8 | use_std = [] 9 | 10 | [dependencies] 11 | binread = { version = "2.2.0", default-features = false, features = [] } 12 | 13 | [dependencies.bitvec] 14 | version = "1" 15 | default-features = false 16 | features = ["alloc"] 17 | -------------------------------------------------------------------------------- /rust_programs/ide/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /rust_programs/ide/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ide" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = { path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | agx_definitions = {path = "../agx_definitions" } 10 | awm_messages = {path = "../awm_messages" } 11 | libgui = { path = "../libgui" } 12 | libgui_derive = { path = "../libgui_derive" } 13 | linker_messages = {path = "../linker_messages" } 14 | file_manager_messages = {path = "../file_manager_messages" } 15 | -------------------------------------------------------------------------------- /rust_programs/ide/src/ide_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef IDE_MESSAGES_H 2 | #define IDE_MESSAGES_H 3 | 4 | // PT: Must match the definitions in the corresponding Rust file 5 | 6 | #define IDE_SERVICE_NAME "com.axle.ide" 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /rust_programs/ide/src/ide_messages.rs: -------------------------------------------------------------------------------- 1 | extern crate alloc; 2 | extern crate libc; 3 | 4 | use axle_rt::{ContainsEventField, ExpectsEventField}; 5 | 6 | // PT: Must match the definitions in the corresponding C header 7 | 8 | pub const IDE_SERVICE_NAME: &str = "com.axle.ide"; 9 | 10 | pub trait IdeEvent: ExpectsEventField + ContainsEventField {} 11 | -------------------------------------------------------------------------------- /rust_programs/image_viewer_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/image_viewer_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "image_viewer_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | cstr_core = "0.2.4" 10 | 11 | [features] 12 | -------------------------------------------------------------------------------- /rust_programs/initrd_fs/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /rust_programs/initrd_fs/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "initrd_fs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | file_manager_messages = {path = "../file_manager_messages" } 10 | libfs = {path = "../libfs" } 11 | cstr_core = "0.2.4" 12 | serde = { version = "1.0", default-features = false, features = ["derive"] } 13 | serde_bytes = { version = "0.11", default-features = false } 14 | postcard = { version = "1.0.2", features = ["alloc"] } 15 | -------------------------------------------------------------------------------- /rust_programs/kb_driver_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/kb_driver_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "kb_driver_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | -------------------------------------------------------------------------------- /rust_programs/libfs/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/libfs/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "libfs" 3 | version = "0.1.0" 4 | edition = "2021" 5 | workspace = "../" 6 | 7 | [dependencies] 8 | file_manager_messages = {path = "../file_manager_messages" } 9 | cstr_core = "0.2.4" 10 | serde = { version = "1.0", default-features = false, features = ["derive"] } 11 | serde_bytes = { version = "0.11", default-features = false } 12 | postcard = { version = "0.7.2", features = ["alloc"] } 13 | -------------------------------------------------------------------------------- /rust_programs/libgui/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /rust_programs/libgui_derive/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "libgui_derive" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [lib] 7 | name = "libgui_derive" 8 | proc-macro = true 9 | 10 | [dependencies] 11 | quote = "1.0" 12 | syn = "1.0" 13 | agx_definitions = {path = "../agx_definitions" } 14 | # libgui = {path = "../libgui" } 15 | -------------------------------------------------------------------------------- /rust_programs/linker/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "linker" 3 | version = "0.1.0" 4 | edition = "2021" 5 | resolver = "2" 6 | 7 | [features] 8 | default = ["run_in_axle"] 9 | run_in_axle = [] 10 | 11 | [dependencies] 12 | axle_rt = {path = "../axle_rt" } 13 | axle_rt_derive = {path = "../axle_rt_derive" } 14 | linker_messages = {path = "../linker_messages" } 15 | compilation_definitions = { path = "../compilation_definitions" } 16 | 17 | cstr_core = "0.2.4" 18 | serde = { version = "1.0", default-features = false, features = ["derive"] } 19 | serde_bytes = { version = "0.11", default-features = false } 20 | postcard = { version = "0.7.2", features = ["alloc"] } 21 | bitflags = "1.3" 22 | -------------------------------------------------------------------------------- /rust_programs/linker/rustfmt.toml: -------------------------------------------------------------------------------- 1 | max_width = 160 2 | -------------------------------------------------------------------------------- /rust_programs/linker/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![cfg_attr(feature = "run_in_axle", no_std)] 2 | #![cfg_attr(feature = "run_in_axle", feature(start))] 3 | #![cfg_attr(feature = "run_in_axle", feature(format_args_nl))] 4 | #![cfg_attr(feature = "run_in_axle", feature(default_alloc_error_handler))] 5 | #![feature(trait_upcasting)] 6 | #![feature(label_break_value)] 7 | #![feature(extend_one)] 8 | 9 | extern crate alloc; 10 | 11 | #[cfg(feature = "run_in_axle")] 12 | pub use axle_rt::{print, println}; 13 | #[cfg(not(feature = "run_in_axle"))] 14 | pub use std::{print, println}; 15 | 16 | mod assembly_lexer; 17 | pub mod assembly_packer; 18 | mod assembly_parser; 19 | pub mod new_try; 20 | mod records; 21 | mod symbols; 22 | 23 | pub use crate::new_try::{render_elf, FileLayout}; 24 | -------------------------------------------------------------------------------- /rust_programs/linker_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/linker_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "linker_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | cstr_core = "0.2.4" 10 | 11 | [features] 12 | testing = [] 13 | -------------------------------------------------------------------------------- /rust_programs/menu_bar/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /rust_programs/menu_bar/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "menu_bar" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = { path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | agx_definitions = {path = "../agx_definitions" } 10 | awm_messages = {path = "../awm_messages" } 11 | libgui = { path = "../libgui" } 12 | menu_bar_messages = { path = "../menu_bar_messages" } 13 | -------------------------------------------------------------------------------- /rust_programs/menu_bar_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/menu_bar_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "menu_bar_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | agx_definitions = {path = "../agx_definitions"} 10 | -------------------------------------------------------------------------------- /rust_programs/menu_bar_messages/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![no_std] 2 | 3 | extern crate alloc; 4 | 5 | use agx_definitions::{Rect, RectU32}; 6 | use axle_rt::{copy_str_into_sized_slice, ContainsEventField, ExpectsEventField}; 7 | use axle_rt_derive::ContainsEventField; 8 | 9 | pub const AWM_MENU_BAR_HEIGHT: isize = 28; 10 | pub const AWM_MENU_BAR_SERVICE_NAME: &str = "com.axle.awm_menu_bar"; 11 | -------------------------------------------------------------------------------- /rust_programs/mouse_driver_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/mouse_driver_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "mouse_driver_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | 10 | [features] 11 | -------------------------------------------------------------------------------- /rust_programs/preferences_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/preferences_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "preferences_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | agx_definitions = {path = "../agx_definitions" } 10 | -------------------------------------------------------------------------------- /rust_programs/preferences_messages/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![no_std] 2 | 3 | use agx_definitions::Color; 4 | use axle_rt::{ContainsEventField, ExpectsEventField}; 5 | use axle_rt_derive::ContainsEventField; 6 | 7 | pub const PREFERENCES_SERVICE_NAME: &'static str = "com.axle.preferences"; 8 | 9 | #[derive(Debug, Copy, Clone)] 10 | pub struct ColorRGBA { 11 | pub vals: [u8; 4], 12 | } 13 | 14 | impl From for Color { 15 | fn from(c: ColorRGBA) -> Self { 16 | Color::new(c.vals[0], c.vals[1], c.vals[2]) 17 | } 18 | } 19 | 20 | #[repr(C)] 21 | #[derive(Debug, ContainsEventField)] 22 | pub struct PreferencesUpdated { 23 | event: u32, 24 | pub from: ColorRGBA, 25 | pub to: ColorRGBA, 26 | } 27 | 28 | impl ExpectsEventField for PreferencesUpdated { 29 | const EXPECTED_EVENT: u32 = 812; 30 | } 31 | -------------------------------------------------------------------------------- /rust_programs/sata_driver/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /rust_programs/sata_driver/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sata_driver" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = { path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | 10 | [dependencies.bitvec] 11 | version = "1" 12 | default-features = false 13 | features = ["alloc"] 14 | -------------------------------------------------------------------------------- /rust_programs/sata_driver_messages/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /rust_programs/sata_driver_messages/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sata_driver_messages" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../axle_rt" } 8 | axle_rt_derive = {path = "../axle_rt_derive" } 9 | cstr_core = "0.2.4" 10 | 11 | [features] 12 | testing = [] 13 | -------------------------------------------------------------------------------- /rust_programs/sata_driver_messages/src/sata_driver_messages.h: -------------------------------------------------------------------------------- 1 | #ifndef SATA_DRIVER_MESSAGES_H 2 | #define SATA_DRIVER_MESSAGES_H 3 | 4 | #include 5 | 6 | // PT: Add more definitions here as C clients need them 7 | 8 | #define SATA_DRIVER_SERVICE_NAME "com.axle.sata_driver" 9 | 10 | // TODO(PT): Flesh this out 11 | 12 | #define SATA_DRIVER_READ_SECTOR_EVENT 100 13 | typedef struct sata_driver_read { 14 | uint64_t start_sector; 15 | uint64_t sector_count; 16 | } sata_driver_read_t; 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /rust_programs/ttf_renderer/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ttf_renderer" 3 | version = "0.1.0" 4 | edition = "2021" 5 | resolver = "2" 6 | 7 | [dependencies] 8 | axle_rt = {path = "../axle_rt" } 9 | axle_rt_derive = {path = "../axle_rt_derive" } 10 | agx_definitions = {path = "../agx_definitions"} 11 | num-traits = { version = "0.2", default-features = false, features = ["libm"]} 12 | itertools = { version = "0.10.5", default-features = false } 13 | 14 | [features] 15 | no_std = [] 16 | -------------------------------------------------------------------------------- /rust_programs/ttf_renderer/src/render_context.rs: -------------------------------------------------------------------------------- 1 | use crate::hints::{parse_instructions, GraphicsState, HintParseOperations}; 2 | use crate::Font; 3 | use agx_definitions::Size; 4 | use alloc::vec; 5 | use alloc::vec::Vec; 6 | 7 | pub struct FontRenderContext<'a> { 8 | font: &'a Font, 9 | font_size: Size, 10 | scaled_cvt: Vec, 11 | graphics_state: GraphicsState, 12 | } 13 | 14 | impl<'a> FontRenderContext<'a> { 15 | pub fn new(font: &'a Font, font_size: Size) -> Self { 16 | let mut graphics_state = GraphicsState::new(font_size); 17 | parse_instructions( 18 | font, 19 | &font.prep, 20 | &HintParseOperations::debug_run(), 21 | &mut graphics_state, 22 | ); 23 | Self { 24 | font, 25 | font_size, 26 | scaled_cvt: vec![], 27 | graphics_state, 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /rust_programs/ttf_viewer/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ttf_viewer" 3 | version = "0.1.0" 4 | edition = "2021" 5 | resolver = "2" 6 | 7 | [features] 8 | default = [] 9 | run_with_std = ["libgui/run_with_std", "pixels", "winit"] 10 | 11 | [dependencies] 12 | libgui = { path = "../libgui", default-features = false } 13 | libgui_derive = {path = "../libgui_derive"} 14 | axle_rt = {path = "../axle_rt" } 15 | axle_rt_derive = {path = "../axle_rt_derive" } 16 | agx_definitions = {path = "../agx_definitions"} 17 | ttf_renderer = {path = "../ttf_renderer"} 18 | # These dependencies are only enabled in use_std mode 19 | pixels = { version = "0.13.0", optional = true } 20 | winit = { version = "0.29.10", optional = true, features = ["rwh_05"] } 21 | -------------------------------------------------------------------------------- /rust_programs/ttf_viewer/src/main_axle.rs: -------------------------------------------------------------------------------- 1 | use crate::font_viewer::FontViewer; 2 | use agx_definitions::Size; 3 | use alloc::rc::Rc; 4 | use axle_rt::amc_register_service; 5 | use core::cell::RefCell; 6 | use libgui::AwmWindow; 7 | 8 | pub fn main() { 9 | amc_register_service("com.axle.ttf_viewer"); 10 | 11 | let window = Rc::new(AwmWindow::new("Font Viewer", Size::new(800, 600))); 12 | Rc::new(RefCell::new(FontViewer::new( 13 | Rc::clone(&window), 14 | Some("/fonts/new_york_italic.ttf"), 15 | ))); 16 | window.enter_event_loop() 17 | } 18 | -------------------------------------------------------------------------------- /rust_programs/x86_64-unknown-axle.json: -------------------------------------------------------------------------------- 1 | { 2 | "arch": "x86_64", 3 | "cpu": "x86-64", 4 | "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128", 5 | "dynamic-linking": false, 6 | "llvm-target": "x86_64-elf", 7 | "executables": true, 8 | "os": "axle", 9 | "position-independent-executables": false, 10 | "target-pointer-width": "64", 11 | "panic-strategy": "abort", 12 | "target-family": [ 13 | "axle" 14 | ], 15 | "max-atomic-width": 64, 16 | "linker-flavor": "gcc", 17 | "linker-is-gnu": true, 18 | "linker": "../x86_64-toolchain/bin/x86_64-elf-axle-gcc" 19 | } -------------------------------------------------------------------------------- /rust_programs/xplatform_gui/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "xplatform_gui" 3 | version = "0.1.0" 4 | edition = "2021" 5 | resolver = "2" 6 | 7 | [features] 8 | default = ["run_in_axle"] 9 | run_in_axle = [] 10 | 11 | [dependencies] 12 | axle_rt = {path = "../axle_rt" } 13 | axle_rt_derive = {path = "../axle_rt_derive" } 14 | cstr_core = "0.2.4" 15 | # libgui = {path = "../libgui", features=["run_with_std"]} 16 | libgui = {path = "../libgui"} 17 | libgui_derive = {path = "../libgui_derive"} 18 | agx_definitions = {path = "../agx_definitions"} 19 | -------------------------------------------------------------------------------- /rust_programs/xplatform_gui/src/main.rs: -------------------------------------------------------------------------------- 1 | #![cfg_attr(target_os = "axle", no_std)] 2 | #![cfg_attr(target_os = "axle", feature(start))] 3 | #![cfg_attr(target_os = "axle", feature(format_args_nl))] 4 | #![cfg_attr(target_os = "axle", feature(default_alloc_error_handler))] 5 | 6 | #[cfg(target_os = "axle")] 7 | mod main_axle; 8 | #[cfg(target_os = "axle")] 9 | extern crate alloc; 10 | 11 | #[cfg(not(target_os = "axle"))] 12 | mod main_std; 13 | 14 | #[cfg(target_os = "axle")] 15 | mod run_in_axle { 16 | use crate::main_axle; 17 | pub use axle_rt::{print, println}; 18 | 19 | #[start] 20 | #[allow(unreachable_code)] 21 | fn start(_argc: isize, _argv: *const *const u8) -> isize { 22 | main_axle::main(); 23 | 0 24 | } 25 | } 26 | 27 | #[cfg(not(target_os = "axle"))] 28 | pub use std::{print, println}; 29 | #[cfg(not(target_os = "axle"))] 30 | fn main() { 31 | main_std::main(); 32 | } 33 | -------------------------------------------------------------------------------- /screenshots/boot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/boot.png -------------------------------------------------------------------------------- /screenshots/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/circle.png -------------------------------------------------------------------------------- /screenshots/color_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/color_test.png -------------------------------------------------------------------------------- /screenshots/desktop1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/desktop1.png -------------------------------------------------------------------------------- /screenshots/desktop2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/desktop2.png -------------------------------------------------------------------------------- /screenshots/doom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/doom.jpg -------------------------------------------------------------------------------- /screenshots/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/help.png -------------------------------------------------------------------------------- /screenshots/julia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/julia.png -------------------------------------------------------------------------------- /screenshots/mandelbrot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/mandelbrot.png -------------------------------------------------------------------------------- /screenshots/rect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/rect.png -------------------------------------------------------------------------------- /screenshots/startup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/startup.png -------------------------------------------------------------------------------- /screenshots/text_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/text_test.png -------------------------------------------------------------------------------- /screenshots/triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/screenshots/triangle.png -------------------------------------------------------------------------------- /scripts/build_quick.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/python3 2 | import shutil 3 | import argparse 4 | from pathlib import Path 5 | 6 | from build_programs import build_all_programs 7 | from build_os_image import build_iso, build_initrd, run_iso 8 | 9 | 10 | def main(): 11 | parser = argparse.ArgumentParser() 12 | parser.add_argument("--force_rebuild_programs", nargs="*", action="store") 13 | parser.add_argument("--force_rebuild_everything", action="store_true") 14 | parser.set_defaults(force_rebuild_everything=False) 15 | args = parser.parse_args() 16 | 17 | build_all_programs( 18 | only_recently_updated=True, 19 | force_rebuild_programs=args.force_rebuild_programs, 20 | force_rebuild_all=args.force_rebuild_everything, 21 | ) 22 | 23 | build_initrd() 24 | image_path = build_iso() 25 | run_iso(image_path) 26 | 27 | 28 | if __name__ == "__main__": 29 | main() 30 | -------------------------------------------------------------------------------- /scripts/clean-duplicate-files-named-2.py: -------------------------------------------------------------------------------- 1 | """I don't know why, but sometimes when working with VS Code 2 | duplicates of many working files pop up with " 2" in the filename. 3 | It pollutes my working index and causes problems with the build system. 4 | This script finds and deletes them. 5 | """ 6 | import os 7 | import pathlib 8 | import shutil 9 | import sys 10 | 11 | 12 | def main(): 13 | root_dir = pathlib.Path(__file__).parent 14 | for f in root_dir.rglob("*"): 15 | if " 2" in f.name: 16 | os.remove(f.as_posix()) 17 | 18 | 19 | if __name__ == "__main__": 20 | main() 21 | -------------------------------------------------------------------------------- /scripts/create_hard_drive_image.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/python3 2 | from build_utils import run_and_check 3 | 4 | 5 | def main() -> None: 6 | run_and_check(["qemu-img", "create", "-f", "raw", "axle-hdd.img", "64M"]) 7 | 8 | 9 | if __name__ == "__main__": 10 | main() 11 | -------------------------------------------------------------------------------- /scripts/hopper.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import argparse 3 | import sys 4 | 5 | 6 | def main(): 7 | parser = argparse.ArgumentParser() 8 | parser.add_argument('--program', '-p', action="store") 9 | parser.add_argument("--kernel", action="store_true") 10 | parser.set_defaults(kernel=False) 11 | args = parser.parse_args() 12 | 13 | if args.kernel: 14 | path = './isodir/boot/axle.bin' 15 | else: 16 | path = f'./initrd/{args.program}' 17 | 18 | 19 | subprocess.run(f"hopperv4 -e {path}", shell=True) 20 | 21 | 22 | if __name__ == "__main__": 23 | main() 24 | -------------------------------------------------------------------------------- /scripts/list_libc_headers.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | 4 | def list_libc_headers() -> None: 5 | sysroot_path = Path(__file__).parents[1] / 'axle-sysroot' / 'usr' / 'include' 6 | for p in sorted(sysroot_path.rglob("*")): 7 | if p.is_dir(): 8 | continue 9 | relative_path = p.relative_to(sysroot_path) 10 | print(f' "{relative_path}",') 11 | 12 | 13 | if __name__ == '__main__': 14 | list_libc_headers() 15 | -------------------------------------------------------------------------------- /scripts/mkinitrd/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | output.img 3 | -------------------------------------------------------------------------------- /scripts/mkinitrd/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "mkinitrd" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | axle_rt = {path = "../../rust_programs/axle_rt", features = ["testing"] } 8 | libfs = { path = "../../rust_programs/libfs" } 9 | cstr_core = "*" 10 | serde = { version = "1.0", default-features = false, features = ["derive"] } 11 | serde_bytes = { version = "0.11", default-features = false } 12 | postcard = { version = "0.7.2", features = ["alloc"] } 13 | pathdiff = "0.2.1" 14 | -------------------------------------------------------------------------------- /site/docs/html/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/bc_s.png -------------------------------------------------------------------------------- /site/docs/html/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/bdwn.png -------------------------------------------------------------------------------- /site/docs/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/closed.png -------------------------------------------------------------------------------- /site/docs/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/doc.png -------------------------------------------------------------------------------- /site/docs/html/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/doxygen.png -------------------------------------------------------------------------------- /site/docs/html/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/folderclosed.png -------------------------------------------------------------------------------- /site/docs/html/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/folderopen.png -------------------------------------------------------------------------------- /site/docs/html/menudata.js: -------------------------------------------------------------------------------- 1 | var menudata={children:[ 2 | {text:"Main Page",url:"index.html"}, 3 | {text:"Classes",url:"annotated.html",children:[ 4 | {text:"Class List",url:"annotated.html"}, 5 | {text:"Class Index",url:"classes.html"}]}, 6 | {text:"Files",url:"files.html",children:[ 7 | {text:"File List",url:"files.html"}]}]} 8 | -------------------------------------------------------------------------------- /site/docs/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/nav_f.png -------------------------------------------------------------------------------- /site/docs/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/nav_g.png -------------------------------------------------------------------------------- /site/docs/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/nav_h.png -------------------------------------------------------------------------------- /site/docs/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/open.png -------------------------------------------------------------------------------- /site/docs/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5f_5fattribute_5f_5f',['__attribute__',['../struct____attribute____.html',1,'']]], 4 | ['_5fcpu_5ftype_5fnames',['_cpu_type_names',['../struct__cpu__type__names.html',1,'']]], 5 | ['_5fnj_5fcmp',['_nj_cmp',['../struct__nj__cmp.html',1,'']]], 6 | ['_5fnj_5fcode',['_nj_code',['../struct__nj__code.html',1,'']]], 7 | ['_5fnj_5fctx',['_nj_ctx',['../struct__nj__ctx.html',1,'']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /site/docs/html/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['alloc_5fblock_5ft',['alloc_block_t',['../structalloc__block__t.html',1,'']]], 4 | ['array_5fl',['array_l',['../structarray__l.html',1,'']]], 5 | ['array_5fl_5fitem',['array_l_item',['../structarray__l__item.html',1,'']]], 6 | ['array_5fm',['array_m',['../structarray__m.html',1,'']]], 7 | ['array_5fo',['array_o',['../structarray__o.html',1,'']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /site/docs/html/search/all_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['task',['task',['../structtask.html',1,'']]], 4 | ['task_5fhistory',['task_history',['../structtask__history.html',1,'']]], 5 | ['term_5fcell_5fcolor',['term_cell_color',['../structterm__cell__color.html',1,'']]], 6 | ['term_5fcursor',['term_cursor',['../structterm__cursor.html',1,'']]], 7 | ['term_5fdisplay',['term_display',['../unionterm__display.html',1,'']]], 8 | ['term_5fscroll_5fstate',['term_scroll_state',['../structterm__scroll__state.html',1,'']]], 9 | ['time_5ft',['time_t',['../structtime__t.html',1,'']]], 10 | ['timer_5fcallback',['timer_callback',['../structtimer__callback.html',1,'']]], 11 | ['triangle',['triangle',['../structtriangle.html',1,'']]], 12 | ['tss_5fentry_5fstruct',['tss_entry_struct',['../structtss__entry__struct.html',1,'']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /site/docs/html/search/all_11.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vbe_5fmode_5finfo',['vbe_mode_info',['../structvbe__mode__info.html',1,'']]], 4 | ['vec2d',['Vec2d',['../struct_vec2d.html',1,'']]], 5 | ['vesa_5finfo',['vesa_info',['../structvesa__info.html',1,'']]], 6 | ['view',['view',['../structview.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /site/docs/html/search/all_12.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['window',['window',['../structwindow.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /site/docs/html/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['bitmap',['bitmap',['../structbitmap.html',1,'']]], 4 | ['button',['button',['../structbutton.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /site/docs/html/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ca_5fanimation',['ca_animation',['../structca__animation.html',1,'']]], 4 | ['ca_5flayer_5ft',['ca_layer_t',['../structca__layer__t.html',1,'']]], 5 | ['circle',['circle',['../structcircle.html',1,'']]], 6 | ['circular_5fbuffer',['circular_buffer',['../structcircular__buffer.html',1,'']]], 7 | ['color',['color',['../structcolor.html',1,'']]], 8 | ['command',['command',['../structcommand.html',1,'']]], 9 | ['command_5ftable_5ft',['command_table_t',['../structcommand__table__t.html',1,'']]], 10 | ['coordinate',['coordinate',['../structcoordinate.html',1,'']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /site/docs/html/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['dirent',['dirent',['../structdirent.html',1,'']]], 4 | ['double',['Double',['../union_double.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /site/docs/html/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['e1000_5frx_5fdesc',['e1000_rx_desc',['../structe1000__rx__desc.html',1,'']]], 4 | ['e1000_5ftx_5fdesc',['e1000_tx_desc',['../structe1000__tx__desc.html',1,'']]], 5 | ['elf_5fheader',['elf_header',['../structelf__header.html',1,'']]], 6 | ['elf_5fphdr',['elf_phdr',['../structelf__phdr.html',1,'']]], 7 | ['elf_5frel',['elf_rel',['../structelf__rel.html',1,'']]], 8 | ['elf_5frela',['elf_rela',['../structelf__rela.html',1,'']]], 9 | ['elf_5fs_5fheader',['elf_s_header',['../structelf__s__header.html',1,'']]], 10 | ['elf_5fsym_5ftab',['elf_sym_tab',['../structelf__sym__tab.html',1,'']]], 11 | ['elf_5ft',['elf_t',['../structelf__t.html',1,'']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /site/docs/html/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fd_5fentry',['fd_entry',['../structfd__entry.html',1,'']]], 4 | ['file_5ft',['file_t',['../structfile__t.html',1,'']]], 5 | ['fs_5ffile',['fs_file',['../structfs__file.html',1,'']]], 6 | ['fs_5fnode',['fs_node',['../structfs__node.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /site/docs/html/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['game_5fstate',['game_state',['../structgame__state.html',1,'']]], 4 | ['gdt_5fentry_5fstruct',['gdt_entry_struct',['../structgdt__entry__struct.html',1,'']]], 5 | ['gdt_5fptr_5fstruct',['gdt_ptr_struct',['../structgdt__ptr__struct.html',1,'']]], 6 | ['gradient',['gradient',['../structgradient.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /site/docs/html/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['heap_5ft',['heap_t',['../structheap__t.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /site/docs/html/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['idt_5fentry_5fstruct',['idt_entry_struct',['../structidt__entry__struct.html',1,'']]], 4 | ['idt_5fptr_5fstruct',['idt_ptr_struct',['../structidt__ptr__struct.html',1,'']]], 5 | ['initrd_5ffile_5fheader_5ft',['initrd_file_header_t',['../structinitrd__file__header__t.html',1,'']]], 6 | ['initrd_5fheader_5ft',['initrd_header_t',['../structinitrd__header__t.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /site/docs/html/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['keymap',['keymap',['../structkeymap.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /site/docs/html/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['label',['label',['../structlabel.html',1,'']]], 4 | ['line',['line',['../structline.html',1,'']]], 5 | ['list_5fnode_5fs',['list_node_s',['../structlist__node__s.html',1,'']]], 6 | ['list_5fs',['list_s',['../structlist__s.html',1,'']]], 7 | ['load_5fcommand',['load_command',['../structload__command.html',1,'']]], 8 | ['lock_5ft',['lock_t',['../structlock__t.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /site/docs/html/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mach_5fheader',['mach_header',['../structmach__header.html',1,'']]], 4 | ['mtwist_5fs',['mtwist_s',['../structmtwist__s.html',1,'']]], 5 | ['multiboot_5finfo',['multiboot_info',['../structmultiboot__info.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /site/docs/html/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['page',['page',['../structpage.html',1,'']]], 4 | ['page_5fdirectory',['page_directory',['../structpage__directory.html',1,'']]], 5 | ['page_5ftable',['page_table',['../structpage__table.html',1,'']]], 6 | ['pci_5fdevice',['pci_device',['../structpci__device.html',1,'']]], 7 | ['pipe_5fblock_5finfo',['pipe_block_info',['../structpipe__block__info.html',1,'']]], 8 | ['pipe_5ft',['pipe_t',['../structpipe__t.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /site/docs/html/search/all_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['rawcolor',['rawcolor',['../unionrawcolor.html',1,'']]], 4 | ['rect',['rect',['../structrect.html',1,'']]], 5 | ['registers',['registers',['../structregisters.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /site/docs/html/search/all_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['screen_5ft',['screen_t',['../structscreen__t.html',1,'']]], 4 | ['segment_5fcommand',['segment_command',['../structsegment__command.html',1,'']]], 5 | ['sha256_5fctx',['SHA256_CTX',['../struct_s_h_a256___c_t_x.html',1,'']]], 6 | ['size',['size',['../structsize.html',1,'']]], 7 | ['snake_5fplayer',['snake_player',['../structsnake__player.html',1,'']]], 8 | ['std_5fstream',['std_stream',['../structstd__stream.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5f_5fattribute_5f_5f',['__attribute__',['../struct____attribute____.html',1,'']]], 4 | ['_5fcpu_5ftype_5fnames',['_cpu_type_names',['../struct__cpu__type__names.html',1,'']]], 5 | ['_5fnj_5fcmp',['_nj_cmp',['../struct__nj__cmp.html',1,'']]], 6 | ['_5fnj_5fcode',['_nj_code',['../struct__nj__code.html',1,'']]], 7 | ['_5fnj_5fctx',['_nj_ctx',['../struct__nj__ctx.html',1,'']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['alloc_5fblock_5ft',['alloc_block_t',['../structalloc__block__t.html',1,'']]], 4 | ['array_5fl',['array_l',['../structarray__l.html',1,'']]], 5 | ['array_5fl_5fitem',['array_l_item',['../structarray__l__item.html',1,'']]], 6 | ['array_5fm',['array_m',['../structarray__m.html',1,'']]], 7 | ['array_5fo',['array_o',['../structarray__o.html',1,'']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['task',['task',['../structtask.html',1,'']]], 4 | ['task_5fhistory',['task_history',['../structtask__history.html',1,'']]], 5 | ['term_5fcell_5fcolor',['term_cell_color',['../structterm__cell__color.html',1,'']]], 6 | ['term_5fcursor',['term_cursor',['../structterm__cursor.html',1,'']]], 7 | ['term_5fdisplay',['term_display',['../unionterm__display.html',1,'']]], 8 | ['term_5fscroll_5fstate',['term_scroll_state',['../structterm__scroll__state.html',1,'']]], 9 | ['time_5ft',['time_t',['../structtime__t.html',1,'']]], 10 | ['timer_5fcallback',['timer_callback',['../structtimer__callback.html',1,'']]], 11 | ['triangle',['triangle',['../structtriangle.html',1,'']]], 12 | ['tss_5fentry_5fstruct',['tss_entry_struct',['../structtss__entry__struct.html',1,'']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_11.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vbe_5fmode_5finfo',['vbe_mode_info',['../structvbe__mode__info.html',1,'']]], 4 | ['vec2d',['Vec2d',['../struct_vec2d.html',1,'']]], 5 | ['vesa_5finfo',['vesa_info',['../structvesa__info.html',1,'']]], 6 | ['view',['view',['../structview.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_12.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['window',['window',['../structwindow.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['bitmap',['bitmap',['../structbitmap.html',1,'']]], 4 | ['button',['button',['../structbutton.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ca_5fanimation',['ca_animation',['../structca__animation.html',1,'']]], 4 | ['ca_5flayer_5ft',['ca_layer_t',['../structca__layer__t.html',1,'']]], 5 | ['circle',['circle',['../structcircle.html',1,'']]], 6 | ['circular_5fbuffer',['circular_buffer',['../structcircular__buffer.html',1,'']]], 7 | ['color',['color',['../structcolor.html',1,'']]], 8 | ['command',['command',['../structcommand.html',1,'']]], 9 | ['command_5ftable_5ft',['command_table_t',['../structcommand__table__t.html',1,'']]], 10 | ['coordinate',['coordinate',['../structcoordinate.html',1,'']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['dirent',['dirent',['../structdirent.html',1,'']]], 4 | ['double',['Double',['../union_double.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['e1000_5frx_5fdesc',['e1000_rx_desc',['../structe1000__rx__desc.html',1,'']]], 4 | ['e1000_5ftx_5fdesc',['e1000_tx_desc',['../structe1000__tx__desc.html',1,'']]], 5 | ['elf_5fheader',['elf_header',['../structelf__header.html',1,'']]], 6 | ['elf_5fphdr',['elf_phdr',['../structelf__phdr.html',1,'']]], 7 | ['elf_5frel',['elf_rel',['../structelf__rel.html',1,'']]], 8 | ['elf_5frela',['elf_rela',['../structelf__rela.html',1,'']]], 9 | ['elf_5fs_5fheader',['elf_s_header',['../structelf__s__header.html',1,'']]], 10 | ['elf_5fsym_5ftab',['elf_sym_tab',['../structelf__sym__tab.html',1,'']]], 11 | ['elf_5ft',['elf_t',['../structelf__t.html',1,'']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fd_5fentry',['fd_entry',['../structfd__entry.html',1,'']]], 4 | ['file_5ft',['file_t',['../structfile__t.html',1,'']]], 5 | ['fs_5ffile',['fs_file',['../structfs__file.html',1,'']]], 6 | ['fs_5fnode',['fs_node',['../structfs__node.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['game_5fstate',['game_state',['../structgame__state.html',1,'']]], 4 | ['gdt_5fentry_5fstruct',['gdt_entry_struct',['../structgdt__entry__struct.html',1,'']]], 5 | ['gdt_5fptr_5fstruct',['gdt_ptr_struct',['../structgdt__ptr__struct.html',1,'']]], 6 | ['gradient',['gradient',['../structgradient.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['heap_5ft',['heap_t',['../structheap__t.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['idt_5fentry_5fstruct',['idt_entry_struct',['../structidt__entry__struct.html',1,'']]], 4 | ['idt_5fptr_5fstruct',['idt_ptr_struct',['../structidt__ptr__struct.html',1,'']]], 5 | ['initrd_5ffile_5fheader_5ft',['initrd_file_header_t',['../structinitrd__file__header__t.html',1,'']]], 6 | ['initrd_5fheader_5ft',['initrd_header_t',['../structinitrd__header__t.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['keymap',['keymap',['../structkeymap.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['label',['label',['../structlabel.html',1,'']]], 4 | ['line',['line',['../structline.html',1,'']]], 5 | ['list_5fnode_5fs',['list_node_s',['../structlist__node__s.html',1,'']]], 6 | ['list_5fs',['list_s',['../structlist__s.html',1,'']]], 7 | ['load_5fcommand',['load_command',['../structload__command.html',1,'']]], 8 | ['lock_5ft',['lock_t',['../structlock__t.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mach_5fheader',['mach_header',['../structmach__header.html',1,'']]], 4 | ['mtwist_5fs',['mtwist_s',['../structmtwist__s.html',1,'']]], 5 | ['multiboot_5finfo',['multiboot_info',['../structmultiboot__info.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['page',['page',['../structpage.html',1,'']]], 4 | ['page_5fdirectory',['page_directory',['../structpage__directory.html',1,'']]], 5 | ['page_5ftable',['page_table',['../structpage__table.html',1,'']]], 6 | ['pci_5fdevice',['pci_device',['../structpci__device.html',1,'']]], 7 | ['pipe_5fblock_5finfo',['pipe_block_info',['../structpipe__block__info.html',1,'']]], 8 | ['pipe_5ft',['pipe_t',['../structpipe__t.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['rawcolor',['rawcolor',['../unionrawcolor.html',1,'']]], 4 | ['rect',['rect',['../structrect.html',1,'']]], 5 | ['registers',['registers',['../structregisters.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /site/docs/html/search/classes_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['screen_5ft',['screen_t',['../structscreen__t.html',1,'']]], 4 | ['segment_5fcommand',['segment_command',['../structsegment__command.html',1,'']]], 5 | ['sha256_5fctx',['SHA256_CTX',['../struct_s_h_a256___c_t_x.html',1,'']]], 6 | ['size',['size',['../structsize.html',1,'']]], 7 | ['snake_5fplayer',['snake_player',['../structsnake__player.html',1,'']]], 8 | ['std_5fstream',['std_stream',['../structstd__stream.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /site/docs/html/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/search/close.png -------------------------------------------------------------------------------- /site/docs/html/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/search/mag_sel.png -------------------------------------------------------------------------------- /site/docs/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
No Matches
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /site/docs/html/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/search/search_l.png -------------------------------------------------------------------------------- /site/docs/html/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/search/search_m.png -------------------------------------------------------------------------------- /site/docs/html/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/search/search_r.png -------------------------------------------------------------------------------- /site/docs/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "_abcdefghiklmprstvw", 4 | 1: "_abcdefghiklmprstvw" 5 | }; 6 | 7 | var indexSectionNames = 8 | { 9 | 0: "all", 10 | 1: "classes" 11 | }; 12 | 13 | var indexSectionLabels = 14 | { 15 | 0: "All", 16 | 1: "Classes" 17 | }; 18 | 19 | -------------------------------------------------------------------------------- /site/docs/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/splitbar.png -------------------------------------------------------------------------------- /site/docs/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/sync_off.png -------------------------------------------------------------------------------- /site/docs/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/sync_on.png -------------------------------------------------------------------------------- /site/docs/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/tab_a.png -------------------------------------------------------------------------------- /site/docs/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/tab_b.png -------------------------------------------------------------------------------- /site/docs/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/tab_h.png -------------------------------------------------------------------------------- /site/docs/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/docs/html/tab_s.png -------------------------------------------------------------------------------- /site/docs/latex/Makefile: -------------------------------------------------------------------------------- 1 | all: refman.pdf 2 | 3 | pdf: refman.pdf 4 | 5 | refman.pdf: clean refman.tex 6 | pdflatex refman 7 | makeindex refman.idx 8 | pdflatex refman 9 | latex_count=8 ; \ 10 | while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ 11 | do \ 12 | echo "Rerunning latex...." ;\ 13 | pdflatex refman ;\ 14 | latex_count=`expr $$latex_count - 1` ;\ 15 | done 16 | makeindex refman.idx 17 | pdflatex refman 18 | 19 | 20 | clean: 21 | rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf 22 | -------------------------------------------------------------------------------- /site/docs/latex/dir_006cde671736cb3e0e8f6dad4de0ddd2.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_006cde671736cb3e0e8f6dad4de0ddd2}{}\section{src/user/shell/programs/rexle Directory Reference} 2 | \label{dir_006cde671736cb3e0e8f6dad4de0ddd2}\index{src/user/shell/programs/rexle Directory Reference@{src/user/shell/programs/rexle Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_05579cfa9032ba8af0763113b3a4873c.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_05579cfa9032ba8af0763113b3a4873c}{}\section{src/user/programs Directory Reference} 2 | \label{dir_05579cfa9032ba8af0763113b3a4873c}\index{src/user/programs Directory Reference@{src/user/programs Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_0addfd89f8b50fed3337d0aea39cd71c.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_0addfd89f8b50fed3337d0aea39cd71c}{}\section{src/kernel/util/elf Directory Reference} 2 | \label{dir_0addfd89f8b50fed3337d0aea39cd71c}\index{src/kernel/util/elf Directory Reference@{src/kernel/util/elf Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_0e0d1fa832c75408d679171fe126e36a.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_0e0d1fa832c75408d679171fe126e36a}{}\section{src/kernel/util/multitasking/tasks Directory Reference} 2 | \label{dir_0e0d1fa832c75408d679171fe126e36a}\index{src/kernel/util/multitasking/tasks Directory Reference@{src/kernel/util/multitasking/tasks Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_138853cd1db50e645a71bd53680ff16f.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_138853cd1db50e645a71bd53680ff16f}{}\section{src/user/shell/programs Directory Reference} 2 | \label{dir_138853cd1db50e645a71bd53680ff16f}\index{src/user/shell/programs Directory Reference@{src/user/shell/programs Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \end{DoxyCompactItemize} 6 | -------------------------------------------------------------------------------- /site/docs/latex/dir_14d20d605aa92beb6c214125967f5261.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_14d20d605aa92beb6c214125967f5261}{}\section{src/kernel/drivers/e1000 Directory Reference} 2 | \label{dir_14d20d605aa92beb6c214125967f5261}\index{src/kernel/drivers/e1000 Directory Reference@{src/kernel/drivers/e1000 Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_1b969e5e0415847ec44eb66ab42a5062.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_1b969e5e0415847ec44eb66ab42a5062}{}\section{src/kernel/drivers/mouse Directory Reference} 2 | \label{dir_1b969e5e0415847ec44eb66ab42a5062}\index{src/kernel/drivers/mouse Directory Reference@{src/kernel/drivers/mouse Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_1d5bcaf0ef709869c8ec97fbd602b55f.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_1d5bcaf0ef709869c8ec97fbd602b55f}{}\section{src/kernel/util/macho Directory Reference} 2 | \label{dir_1d5bcaf0ef709869c8ec97fbd602b55f}\index{src/kernel/util/macho Directory Reference@{src/kernel/util/macho Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_1e4b4a645210dfc0e8dbad6c9bb08618.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_1e4b4a645210dfc0e8dbad6c9bb08618}{}\section{src/kernel/drivers/serial Directory Reference} 2 | \label{dir_1e4b4a645210dfc0e8dbad6c9bb08618}\index{src/kernel/drivers/serial Directory Reference@{src/kernel/drivers/serial Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_1e9bb6deb523c4200f98c78048b9fae1.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_1e9bb6deb523c4200f98c78048b9fae1}{}\section{src/gfx/lib Directory Reference} 2 | \label{dir_1e9bb6deb523c4200f98c78048b9fae1}\index{src/gfx/lib Directory Reference@{src/gfx/lib Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_24a2fd238b6589fd9f2e163c535f9159.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_24a2fd238b6589fd9f2e163c535f9159}{}\section{src/lib/iberty Directory Reference} 2 | \label{dir_24a2fd238b6589fd9f2e163c535f9159}\index{src/lib/iberty Directory Reference@{src/lib/iberty Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_35cc8732b9b12bff97c887348dd5b1ad.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_35cc8732b9b12bff97c887348dd5b1ad}{}\section{src/user/extern/false Directory Reference} 2 | \label{dir_35cc8732b9b12bff97c887348dd5b1ad}\index{src/user/extern/false Directory Reference@{src/user/extern/false Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_3b03f8a184556c51e272f55e9031e413.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_3b03f8a184556c51e272f55e9031e413}{}\section{src/kernel/util/mutex Directory Reference} 2 | \label{dir_3b03f8a184556c51e272f55e9031e413}\index{src/kernel/util/mutex Directory Reference@{src/kernel/util/mutex Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_4261af1259721e3e39e0d2dd7354b511.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_4261af1259721e3e39e0d2dd7354b511}{}\section{src/crypto Directory Reference} 2 | \label{dir_4261af1259721e3e39e0d2dd7354b511}\index{src/crypto Directory Reference@{src/crypto Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_52b22a0e3a69a11d2d8df7c1548212e7.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_52b22a0e3a69a11d2d8df7c1548212e7}{}\section{src/kernel/util/interrupts Directory Reference} 2 | \label{dir_52b22a0e3a69a11d2d8df7c1548212e7}\index{src/kernel/util/interrupts Directory Reference@{src/kernel/util/interrupts Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_5de3327ff260e594597fa360ce5287cf.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_5de3327ff260e594597fa360ce5287cf}{}\section{src/user/extern/true Directory Reference} 2 | \label{dir_5de3327ff260e594597fa360ce5287cf}\index{src/user/extern/true Directory Reference@{src/user/extern/true Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_5ee395c3fcd252f42090420669e5f7be.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_5ee395c3fcd252f42090420669e5f7be}{}\section{src/kernel/drivers/kb Directory Reference} 2 | \label{dir_5ee395c3fcd252f42090420669e5f7be}\index{src/kernel/drivers/kb Directory Reference@{src/kernel/drivers/kb Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{}\section{src Directory Reference} 2 | \label{dir_68267d1309a1af8e8297ef4c3efbcdba}\index{src Directory Reference@{src Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | directory \hyperlink{dir_c86603f79b902ad390ffc2674fbc4470}{gfx} 7 | \item 8 | directory \hyperlink{dir_c85d3e3c5052e9ad9ce18c6863244a25}{lib} 9 | \item 10 | directory \hyperlink{dir_8b0164eb0fb74115683f9812cb2f78f0}{user} 11 | \end{DoxyCompactItemize} 12 | -------------------------------------------------------------------------------- /site/docs/latex/dir_71017a83341381b0f755ee40b26b6645.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_71017a83341381b0f755ee40b26b6645}{}\section{src/user/extern/shell/lib Directory Reference} 2 | \label{dir_71017a83341381b0f755ee40b26b6645}\index{src/user/extern/shell/lib Directory Reference@{src/user/extern/shell/lib Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \end{DoxyCompactItemize} 6 | -------------------------------------------------------------------------------- /site/docs/latex/dir_7125a63be608d5b0a5cb708658f6f686.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_7125a63be608d5b0a5cb708658f6f686}{}\section{src/user/extern/shell Directory Reference} 2 | \label{dir_7125a63be608d5b0a5cb708658f6f686}\index{src/user/extern/shell Directory Reference@{src/user/extern/shell Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_77b97e4335fc31704ee282d26999dd29.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_77b97e4335fc31704ee282d26999dd29}{}\section{src/gfx/font Directory Reference} 2 | \label{dir_77b97e4335fc31704ee282d26999dd29}\index{src/gfx/font Directory Reference@{src/gfx/font Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_78b47aa4b998f4425ab6f6d99882b65a.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_78b47aa4b998f4425ab6f6d99882b65a}{}\section{src/user/xserv Directory Reference} 2 | \label{dir_78b47aa4b998f4425ab6f6d99882b65a}\index{src/user/xserv Directory Reference@{src/user/xserv Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_7faf84be0a238e2294086b557062eef3.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_7faf84be0a238e2294086b557062eef3}{}\section{src/kernel/drivers/vesa Directory Reference} 2 | \label{dir_7faf84be0a238e2294086b557062eef3}\index{src/kernel/drivers/vesa Directory Reference@{src/kernel/drivers/vesa Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_8328768c0c63f679576a263df82f47a5.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_8328768c0c63f679576a263df82f47a5}{}\section{src/kernel/bios Directory Reference} 2 | \label{dir_8328768c0c63f679576a263df82f47a5}\index{src/kernel/bios Directory Reference@{src/kernel/bios Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_8b0164eb0fb74115683f9812cb2f78f0.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_8b0164eb0fb74115683f9812cb2f78f0}{}\section{src/user Directory Reference} 2 | \label{dir_8b0164eb0fb74115683f9812cb2f78f0}\index{src/user Directory Reference@{src/user Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | directory \hyperlink{dir_95997cde2d2988f238ac82f6da0769f9}{extern} 7 | \end{DoxyCompactItemize} 8 | -------------------------------------------------------------------------------- /site/docs/latex/dir_900581f72f943a880f1f2bb7586fde7a.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_900581f72f943a880f1f2bb7586fde7a}{}\section{src/kernel/util/vfs Directory Reference} 2 | \label{dir_900581f72f943a880f1f2bb7586fde7a}\index{src/kernel/util/vfs Directory Reference@{src/kernel/util/vfs Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_92b3f0dd0871f03d6b1b62148a14d336.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_92b3f0dd0871f03d6b1b62148a14d336}{}\section{src/kernel/util/kbman Directory Reference} 2 | \label{dir_92b3f0dd0871f03d6b1b62148a14d336}\index{src/kernel/util/kbman Directory Reference@{src/kernel/util/kbman Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_951b0f34ba90bfa3f5cbb9337dc72d8a.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_951b0f34ba90bfa3f5cbb9337dc72d8a}{}\section{src/kernel/drivers/vbe Directory Reference} 2 | \label{dir_951b0f34ba90bfa3f5cbb9337dc72d8a}\index{src/kernel/drivers/vbe Directory Reference@{src/kernel/drivers/vbe Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_95997cde2d2988f238ac82f6da0769f9.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_95997cde2d2988f238ac82f6da0769f9}{}\section{src/user/extern Directory Reference} 2 | \label{dir_95997cde2d2988f238ac82f6da0769f9}\index{src/user/extern Directory Reference@{src/user/extern Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \end{DoxyCompactItemize} 6 | -------------------------------------------------------------------------------- /site/docs/latex/dir_964f2ef89448db6dea75d58e4c12a386.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_964f2ef89448db6dea75d58e4c12a386}{}\section{src/kernel/drivers/pit Directory Reference} 2 | \label{dir_964f2ef89448db6dea75d58e4c12a386}\index{src/kernel/drivers/pit Directory Reference@{src/kernel/drivers/pit Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_aee9ab6fedb00380c94a3a6c6b09f99a.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_aee9ab6fedb00380c94a3a6c6b09f99a}{}\section{src/kernel/drivers Directory Reference} 2 | \label{dir_aee9ab6fedb00380c94a3a6c6b09f99a}\index{src/kernel/drivers Directory Reference@{src/kernel/drivers Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \end{DoxyCompactItemize} 6 | -------------------------------------------------------------------------------- /site/docs/latex/dir_b48c9f6fcb42ed6a12da8075fc6ab188.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_b48c9f6fcb42ed6a12da8075fc6ab188}{}\section{src/kernel/drivers/terminal Directory Reference} 2 | \label{dir_b48c9f6fcb42ed6a12da8075fc6ab188}\index{src/kernel/drivers/terminal Directory Reference@{src/kernel/drivers/terminal Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_bed20eb59341ae51146510a8061b4d66.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_bed20eb59341ae51146510a8061b4d66}{}\section{src/kernel/util Directory Reference} 2 | \label{dir_bed20eb59341ae51146510a8061b4d66}\index{src/kernel/util Directory Reference@{src/kernel/util Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \end{DoxyCompactItemize} 6 | -------------------------------------------------------------------------------- /site/docs/latex/dir_c1b611b1823b20f1ef680d502aae6b4b.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_c1b611b1823b20f1ef680d502aae6b4b}{}\section{src/kernel/util/syscall Directory Reference} 2 | \label{dir_c1b611b1823b20f1ef680d502aae6b4b}\index{src/kernel/util/syscall Directory Reference@{src/kernel/util/syscall Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_c85d3e3c5052e9ad9ce18c6863244a25.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_c85d3e3c5052e9ad9ce18c6863244a25}{}\section{src/lib Directory Reference} 2 | \label{dir_c85d3e3c5052e9ad9ce18c6863244a25}\index{src/lib Directory Reference@{src/lib Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \end{DoxyCompactItemize} 6 | -------------------------------------------------------------------------------- /site/docs/latex/dir_c86603f79b902ad390ffc2674fbc4470.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_c86603f79b902ad390ffc2674fbc4470}{}\section{src/gfx Directory Reference} 2 | \label{dir_c86603f79b902ad390ffc2674fbc4470}\index{src/gfx Directory Reference@{src/gfx Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \end{DoxyCompactItemize} 6 | -------------------------------------------------------------------------------- /site/docs/latex/dir_cbd7f246bdf7dc0a50281a272327e6ed.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_cbd7f246bdf7dc0a50281a272327e6ed}{}\section{src/kernel Directory Reference} 2 | \label{dir_cbd7f246bdf7dc0a50281a272327e6ed}\index{src/kernel Directory Reference@{src/kernel Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | directory \hyperlink{dir_aee9ab6fedb00380c94a3a6c6b09f99a}{drivers} 7 | \item 8 | directory \hyperlink{dir_bed20eb59341ae51146510a8061b4d66}{util} 9 | \end{DoxyCompactItemize} 10 | -------------------------------------------------------------------------------- /site/docs/latex/dir_cfe76dcdaf9f369e9e9723b4e01306cb.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_cfe76dcdaf9f369e9e9723b4e01306cb}{}\section{src/user/extern/shell/lib/iberty Directory Reference} 2 | \label{dir_cfe76dcdaf9f369e9e9723b4e01306cb}\index{src/user/extern/shell/lib/iberty Directory Reference@{src/user/extern/shell/lib/iberty Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_d1bcc236dc106e41ecfd0ed09b4c7e77.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_d1bcc236dc106e41ecfd0ed09b4c7e77}{}\section{src/kernel/util/multitasking Directory Reference} 2 | \label{dir_d1bcc236dc106e41ecfd0ed09b4c7e77}\index{src/kernel/util/multitasking Directory Reference@{src/kernel/util/multitasking Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \end{DoxyCompactItemize} 6 | -------------------------------------------------------------------------------- /site/docs/latex/dir_d93a1d4020dea85bb71b237545b5e722.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_d93a1d4020dea85bb71b237545b5e722}{}\section{src/tests Directory Reference} 2 | \label{dir_d93a1d4020dea85bb71b237545b5e722}\index{src/tests Directory Reference@{src/tests Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_db8fb8b1f0b6471ce3b8420d03b2f92d.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_db8fb8b1f0b6471ce3b8420d03b2f92d}{}\section{src/kernel/util/paging Directory Reference} 2 | \label{dir_db8fb8b1f0b6471ce3b8420d03b2f92d}\index{src/kernel/util/paging Directory Reference@{src/kernel/util/paging Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_e44d38ef5b41655e44130ee638668425.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_e44d38ef5b41655e44130ee638668425}{}\section{src/kernel/drivers/rtc Directory Reference} 2 | \label{dir_e44d38ef5b41655e44130ee638668425}\index{src/kernel/drivers/rtc Directory Reference@{src/kernel/drivers/rtc Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_e6a4798784ba0abaa651298c0f6010cf.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_e6a4798784ba0abaa651298c0f6010cf}{}\section{src/kernel/drivers/vga Directory Reference} 2 | \label{dir_e6a4798784ba0abaa651298c0f6010cf}\index{src/kernel/drivers/vga Directory Reference@{src/kernel/drivers/vga Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_ea39ebf78c831526a651c285e9c01a63.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_ea39ebf78c831526a651c285e9c01a63}{}\section{src/kernel/util/ffs Directory Reference} 2 | \label{dir_ea39ebf78c831526a651c285e9c01a63}\index{src/kernel/util/ffs Directory Reference@{src/kernel/util/ffs Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_eb168930ba9048cd1d3eee0abf44b5d7.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_eb168930ba9048cd1d3eee0abf44b5d7}{}\section{src/kernel/drivers/ide Directory Reference} 2 | \label{dir_eb168930ba9048cd1d3eee0abf44b5d7}\index{src/kernel/drivers/ide Directory Reference@{src/kernel/drivers/ide Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_ee2f8627e30e92ecb86206ab51d12ec8.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_ee2f8627e30e92ecb86206ab51d12ec8}{}\section{src/user/shell/programs/snake Directory Reference} 2 | \label{dir_ee2f8627e30e92ecb86206ab51d12ec8}\index{src/user/shell/programs/snake Directory Reference@{src/user/shell/programs/snake Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_f21a48f78eea9287cfd4f05d116b9b45.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_f21a48f78eea9287cfd4f05d116b9b45}{}\section{src/user/shell Directory Reference} 2 | \label{dir_f21a48f78eea9287cfd4f05d116b9b45}\index{src/user/shell Directory Reference@{src/user/shell Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_f499df0936c48bf1c7a6ea79096bbb05.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_f499df0936c48bf1c7a6ea79096bbb05}{}\section{src/user/shell/programs/asmjit Directory Reference} 2 | \label{dir_f499df0936c48bf1c7a6ea79096bbb05}\index{src/user/shell/programs/asmjit Directory Reference@{src/user/shell/programs/asmjit Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_f762610fd4b281b6d2510dea981b94a1.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_f762610fd4b281b6d2510dea981b94a1}{}\section{src/kernel/util/unistd Directory Reference} 2 | \label{dir_f762610fd4b281b6d2510dea981b94a1}\index{src/kernel/util/unistd Directory Reference@{src/kernel/util/unistd Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_f8f278e8e7b27c47fa36f2fbda6fdcd5.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_f8f278e8e7b27c47fa36f2fbda6fdcd5}{}\section{src/kernel/drivers/pci Directory Reference} 2 | \label{dir_f8f278e8e7b27c47fa36f2fbda6fdcd5}\index{src/kernel/drivers/pci Directory Reference@{src/kernel/drivers/pci Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_f96bd62c0b4564514ea400b0d63944b7.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_f96bd62c0b4564514ea400b0d63944b7}{}\section{src/kernel/util/stackprotect Directory Reference} 2 | \label{dir_f96bd62c0b4564514ea400b0d63944b7}\index{src/kernel/util/stackprotect Directory Reference@{src/kernel/util/stackprotect Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/dir_fe9004854c8f0f3cfbfe7f330be58a96.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_fe9004854c8f0f3cfbfe7f330be58a96}{}\section{src/std Directory Reference} 2 | \label{dir_fe9004854c8f0f3cfbfe7f330be58a96}\index{src/std Directory Reference@{src/std Directory Reference}} 3 | -------------------------------------------------------------------------------- /site/docs/latex/struct__nj__code.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{struct__nj__code}{}\section{\+\_\+nj\+\_\+code Struct Reference} 2 | \label{struct__nj__code}\index{\+\_\+nj\+\_\+code@{\+\_\+nj\+\_\+code}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{struct__nj__code_aac5b8811db82de408d43a13f06190287}\label{struct__nj__code_aac5b8811db82de408d43a13f06190287}} 7 | unsigned char {\bfseries bits} 8 | \item 9 | \mbox{\Hypertarget{struct__nj__code_aaa938bd21227ffa58de73e34e0f1d569}\label{struct__nj__code_aaa938bd21227ffa58de73e34e0f1d569}} 10 | unsigned char {\bfseries code} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/user/programs/jpeg.\+c\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/struct_vec2d.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{struct_vec2d}{}\section{Vec2d Struct Reference} 2 | \label{struct_vec2d}\index{Vec2d@{Vec2d}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{struct_vec2d_a2f2289c32bb0ae9c85facaf6b4643fa8}\label{struct_vec2d_a2f2289c32bb0ae9c85facaf6b4643fa8}} 7 | double {\bfseries x} 8 | \item 9 | \mbox{\Hypertarget{struct_vec2d_aa314dea89fb8f30bc110f184d0a2813c}\label{struct_vec2d_aa314dea89fb8f30bc110f184d0a2813c}} 10 | double {\bfseries y} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/gfx/lib/gfx.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structarray__l.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structarray__l}{}\section{array\+\_\+l Struct Reference} 2 | \label{structarray__l}\index{array\+\_\+l@{array\+\_\+l}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structarray__l_aab2031b1a5135c0ccb5eb8b26814b835}\label{structarray__l_aab2031b1a5135c0ccb5eb8b26814b835}} 7 | \hyperlink{structarray__l__item}{array\+\_\+l\+\_\+item} $\ast$ {\bfseries head} 8 | \item 9 | \mbox{\Hypertarget{structarray__l_a97a1764e4a900b47850c7eb25e96319d}\label{structarray__l_a97a1764e4a900b47850c7eb25e96319d}} 10 | int32\+\_\+t {\bfseries size} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/std/array\+\_\+l.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structarray__l__item.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structarray__l__item}{}\section{array\+\_\+l\+\_\+item Struct Reference} 2 | \label{structarray__l__item}\index{array\+\_\+l\+\_\+item@{array\+\_\+l\+\_\+item}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structarray__l__item_aed7f7a5042205f8d85ddf00e9db75893}\label{structarray__l__item_aed7f7a5042205f8d85ddf00e9db75893}} 7 | type\+\_\+t {\bfseries item} 8 | \item 9 | \mbox{\Hypertarget{structarray__l__item_a9141bfd734d8a54f624ba25bf42e558c}\label{structarray__l__item_a9141bfd734d8a54f624ba25bf42e558c}} 10 | struct \hyperlink{structarray__l__item}{array\+\_\+l\+\_\+item} $\ast$ {\bfseries next} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/std/array\+\_\+l.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structcircle.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structcircle}{}\section{circle Struct Reference} 2 | \label{structcircle}\index{circle@{circle}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structcircle_affff22b8a8d7c15591f425e5b77cff86}\label{structcircle_affff22b8a8d7c15591f425e5b77cff86}} 7 | \hyperlink{structcoordinate}{Point} {\bfseries center} 8 | \item 9 | \mbox{\Hypertarget{structcircle_a21c7b675591358ef27b64af21fae7b18}\label{structcircle_a21c7b675591358ef27b64af21fae7b18}} 10 | int {\bfseries radius} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/gfx/lib/shapes.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structcolor.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structcolor}{}\section{color Struct Reference} 2 | \label{structcolor}\index{color@{color}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structcolor_a39141ffb9f9627e663bbd14e27feb15d}\label{structcolor_a39141ffb9f9627e663bbd14e27feb15d}} 7 | uint8\+\_\+t {\bfseries val} \mbox{[}4\mbox{]} 8 | \end{DoxyCompactItemize} 9 | 10 | 11 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 12 | \item 13 | src/gfx/lib/color.\+h\end{DoxyCompactItemize} 14 | -------------------------------------------------------------------------------- /site/docs/latex/structcoordinate.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structcoordinate}{}\section{coordinate Struct Reference} 2 | \label{structcoordinate}\index{coordinate@{coordinate}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structcoordinate_a8480dda1b2992713d4b0750bbdf1ee4e}\label{structcoordinate_a8480dda1b2992713d4b0750bbdf1ee4e}} 7 | int {\bfseries x} 8 | \item 9 | \mbox{\Hypertarget{structcoordinate_a1f90088affc8f61daa374403f148eeb7}\label{structcoordinate_a1f90088affc8f61daa374403f148eeb7}} 10 | int {\bfseries y} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/gfx/lib/point.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structdirent.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structdirent}{}\section{dirent Struct Reference} 2 | \label{structdirent}\index{dirent@{dirent}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structdirent_abb2093f2917192e693a5651c50f555d5}\label{structdirent_abb2093f2917192e693a5651c50f555d5}} 7 | char {\bfseries name} \mbox{[}128\mbox{]} 8 | \item 9 | \mbox{\Hypertarget{structdirent_ac825d54b4201eb1f4d683bb3432514a6}\label{structdirent_ac825d54b4201eb1f4d683bb3432514a6}} 10 | uint32\+\_\+t {\bfseries ino} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/kernel/util/vfs/fs.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structelf__rel.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structelf__rel}{}\section{elf\+\_\+rel Struct Reference} 2 | \label{structelf__rel}\index{elf\+\_\+rel@{elf\+\_\+rel}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structelf__rel_a851b6bbc921cd711690e1841ac477c1c}\label{structelf__rel_a851b6bbc921cd711690e1841ac477c1c}} 7 | uint32\+\_\+t {\bfseries offset} 8 | \item 9 | \mbox{\Hypertarget{structelf__rel_a87d78c0c27491912f9aadb5dbf14c146}\label{structelf__rel_a87d78c0c27491912f9aadb5dbf14c146}} 10 | uint32\+\_\+t {\bfseries info} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/kernel/util/elf/elf.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structfd__entry.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structfd__entry}{}\section{fd\+\_\+entry Struct Reference} 2 | \label{structfd__entry}\index{fd\+\_\+entry@{fd\+\_\+entry}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structfd__entry_adc372a641a1e091acd7038e15dadc615}\label{structfd__entry_adc372a641a1e091acd7038e15dadc615}} 7 | descriptor\+\_\+type {\bfseries type} 8 | \item 9 | \mbox{\Hypertarget{structfd__entry_aea54ec085013370e769e12b7bdab4fa1}\label{structfd__entry_aea54ec085013370e769e12b7bdab4fa1}} 10 | void $\ast$ {\bfseries payload} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/kernel/util/multitasking/fd\+\_\+entry.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structgdt__ptr__struct.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structgdt__ptr__struct}{}\section{gdt\+\_\+ptr\+\_\+struct Struct Reference} 2 | \label{structgdt__ptr__struct}\index{gdt\+\_\+ptr\+\_\+struct@{gdt\+\_\+ptr\+\_\+struct}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structgdt__ptr__struct_abf557ff0ca1cf3e130e8ab0086ab4ce6}\label{structgdt__ptr__struct_abf557ff0ca1cf3e130e8ab0086ab4ce6}} 7 | uint16\+\_\+t {\bfseries limit} 8 | \item 9 | \mbox{\Hypertarget{structgdt__ptr__struct_a9b351f31bc261f3c2c3a87252350fb9c}\label{structgdt__ptr__struct_a9b351f31bc261f3c2c3a87252350fb9c}} 10 | uint32\+\_\+t {\bfseries base} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/kernel/util/paging/descriptor\+\_\+tables.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structgradient.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structgradient}{}\section{gradient Struct Reference} 2 | \label{structgradient}\index{gradient@{gradient}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structgradient_a77a8d652c1ce0bd0f72fb23a966798ca}\label{structgradient_a77a8d652c1ce0bd0f72fb23a966798ca}} 7 | \hyperlink{structcolor}{Color} {\bfseries from} 8 | \item 9 | \mbox{\Hypertarget{structgradient_a1ed8669bbea23155dd0236e63e0f0607}\label{structgradient_a1ed8669bbea23155dd0236e63e0f0607}} 10 | \hyperlink{structcolor}{Color} {\bfseries to} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/gfx/lib/color.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structidt__ptr__struct.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structidt__ptr__struct}{}\section{idt\+\_\+ptr\+\_\+struct Struct Reference} 2 | \label{structidt__ptr__struct}\index{idt\+\_\+ptr\+\_\+struct@{idt\+\_\+ptr\+\_\+struct}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structidt__ptr__struct_a0401a63eb17ed7519442b1e828510acc}\label{structidt__ptr__struct_a0401a63eb17ed7519442b1e828510acc}} 7 | uint16\+\_\+t {\bfseries limit} 8 | \item 9 | \mbox{\Hypertarget{structidt__ptr__struct_a1d3ba4d284df0cea7c7b2d1a22a7d9fb}\label{structidt__ptr__struct_a1d3ba4d284df0cea7c7b2d1a22a7d9fb}} 10 | uint32\+\_\+t {\bfseries base} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/kernel/util/paging/descriptor\+\_\+tables.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structinitrd__header__t.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structinitrd__header__t}{}\section{initrd\+\_\+header\+\_\+t Struct Reference} 2 | \label{structinitrd__header__t}\index{initrd\+\_\+header\+\_\+t@{initrd\+\_\+header\+\_\+t}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structinitrd__header__t_a2e2fd2fb49ad436c5b01439cb5c491d5}\label{structinitrd__header__t_a2e2fd2fb49ad436c5b01439cb5c491d5}} 7 | uint32\+\_\+t {\bfseries nfiles} 8 | \end{DoxyCompactItemize} 9 | 10 | 11 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 12 | \item 13 | src/kernel/util/vfs/initrd.\+h\end{DoxyCompactItemize} 14 | -------------------------------------------------------------------------------- /site/docs/latex/structline.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structline}{}\section{line Struct Reference} 2 | \label{structline}\index{line@{line}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structline_ac4031f4171a4cf89c64db6003a8d17ca}\label{structline_ac4031f4171a4cf89c64db6003a8d17ca}} 7 | \hyperlink{structcoordinate}{Point} {\bfseries p1} 8 | \item 9 | \mbox{\Hypertarget{structline_a512b6973cb5e6962d6306efd9519bc57}\label{structline_a512b6973cb5e6962d6306efd9519bc57}} 10 | \hyperlink{structcoordinate}{Point} {\bfseries p2} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/gfx/lib/shapes.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structlist__s.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structlist__s}{}\section{list\+\_\+s Struct Reference} 2 | \label{structlist__s}\index{list\+\_\+s@{list\+\_\+s}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structlist__s_ae22634607fa636cd4130bfee49249785}\label{structlist__s_ae22634607fa636cd4130bfee49249785}} 7 | unsigned int {\bfseries size} 8 | \item 9 | \mbox{\Hypertarget{structlist__s_ac0cbf2cf20ad6060fb10219b91703773}\label{structlist__s_ac0cbf2cf20ad6060fb10219b91703773}} 10 | \hyperlink{structlist__node__s}{list\+\_\+node} $\ast$ {\bfseries head} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/std/list.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structload__command.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structload__command}{}\section{load\+\_\+command Struct Reference} 2 | \label{structload__command}\index{load\+\_\+command@{load\+\_\+command}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structload__command_a5c9d9e0db5e52a3538da897464ae9a80}\label{structload__command_a5c9d9e0db5e52a3538da897464ae9a80}} 7 | uint32\+\_\+t {\bfseries cmd} 8 | \item 9 | \mbox{\Hypertarget{structload__command_a2619cd99f42f7734867e4c42d20bf48d}\label{structload__command_a2619cd99f42f7734867e4c42d20bf48d}} 10 | uint32\+\_\+t {\bfseries cmdsize} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/kernel/util/macho/macho.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structlock__t.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structlock__t}{}\section{lock\+\_\+t Struct Reference} 2 | \label{structlock__t}\index{lock\+\_\+t@{lock\+\_\+t}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structlock__t_a795b473d834087dd24f90f0fcbcc5077}\label{structlock__t_a795b473d834087dd24f90f0fcbcc5077}} 7 | int {\bfseries flag} 8 | \end{DoxyCompactItemize} 9 | 10 | 11 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 12 | \item 13 | src/kernel/util/mutex/mutex.\+h\end{DoxyCompactItemize} 14 | -------------------------------------------------------------------------------- /site/docs/latex/structpage__table.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structpage__table}{}\section{page\+\_\+table Struct Reference} 2 | \label{structpage__table}\index{page\+\_\+table@{page\+\_\+table}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structpage__table_a48867fe3c6d8599eff21b790260d55b4}\label{structpage__table_a48867fe3c6d8599eff21b790260d55b4}} 7 | \hyperlink{structpage}{page\+\_\+t} {\bfseries pages} \mbox{[}1024\mbox{]} 8 | \end{DoxyCompactItemize} 9 | 10 | 11 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 12 | \item 13 | src/kernel/util/paging/paging.\+h\end{DoxyCompactItemize} 14 | -------------------------------------------------------------------------------- /site/docs/latex/structrect.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structrect}{}\section{rect Struct Reference} 2 | \label{structrect}\index{rect@{rect}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structrect_a4cceb76c3facd05d499f359e27bcc7fd}\label{structrect_a4cceb76c3facd05d499f359e27bcc7fd}} 7 | \hyperlink{structcoordinate}{Point} {\bfseries origin} 8 | \item 9 | \mbox{\Hypertarget{structrect_a9a58d00345dd47ee16a4e4947edc4a14}\label{structrect_a9a58d00345dd47ee16a4e4947edc4a14}} 10 | \hyperlink{structsize}{Size} {\bfseries size} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/gfx/lib/rect.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structsize.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structsize}{}\section{size Struct Reference} 2 | \label{structsize}\index{size@{size}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structsize_afd8efe4755a96dfc77d03cb9bc02eb62}\label{structsize_afd8efe4755a96dfc77d03cb9bc02eb62}} 7 | int {\bfseries width} 8 | \item 9 | \mbox{\Hypertarget{structsize_a0ce404630bf4cf87ce2d02f2db8b6c93}\label{structsize_a0ce404630bf4cf87ce2d02f2db8b6c93}} 10 | int {\bfseries height} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/gfx/lib/size.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structsnake__player.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structsnake__player}{}\section{snake\+\_\+player Struct Reference} 2 | \label{structsnake__player}\index{snake\+\_\+player@{snake\+\_\+player}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structsnake__player_a6dd233a59dfcbdf30e33e5aefc445a24}\label{structsnake__player_a6dd233a59dfcbdf30e33e5aefc445a24}} 7 | uint8\+\_\+t {\bfseries length} 8 | \item 9 | \mbox{\Hypertarget{structsnake__player_a1e5b768ab2bdc57aad6d55ac590c8943}\label{structsnake__player_a1e5b768ab2bdc57aad6d55ac590c8943}} 10 | int {\bfseries is\+\_\+alive} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/user/shell/programs/snake/snake.\+h\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structstd__stream.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structstd__stream}{}\section{std\+\_\+stream Struct Reference} 2 | \label{structstd__stream}\index{std\+\_\+stream@{std\+\_\+stream}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structstd__stream_a567ff945793ce26d6b429269cb9cee3f}\label{structstd__stream_a567ff945793ce26d6b429269cb9cee3f}} 7 | \hyperlink{structcircular__buffer}{circular\+\_\+buffer} $\ast$ {\bfseries buf} 8 | \end{DoxyCompactItemize} 9 | 10 | 11 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 12 | \item 13 | src/kernel/util/multitasking/std\+\_\+stream.\+h\end{DoxyCompactItemize} 14 | -------------------------------------------------------------------------------- /site/docs/latex/structterm__cell__color.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structterm__cell__color}{}\section{term\+\_\+cell\+\_\+color Struct Reference} 2 | \label{structterm__cell__color}\index{term\+\_\+cell\+\_\+color@{term\+\_\+cell\+\_\+color}} 3 | \subsection*{Public Attributes} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | \mbox{\Hypertarget{structterm__cell__color_a186530d74322134d8ffc9ee611444ec3}\label{structterm__cell__color_a186530d74322134d8ffc9ee611444ec3}} 7 | term\+\_\+color {\bfseries fg} 8 | \item 9 | \mbox{\Hypertarget{structterm__cell__color_a2cb1bf76296ac4924b47505281b459cb}\label{structterm__cell__color_a2cb1bf76296ac4924b47505281b459cb}} 10 | term\+\_\+color {\bfseries bg} 11 | \end{DoxyCompactItemize} 12 | 13 | 14 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 15 | \item 16 | src/kernel/drivers/terminal/terminal.\+c\end{DoxyCompactItemize} 17 | -------------------------------------------------------------------------------- /site/docs/latex/structterm__scroll__state.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structterm__scroll__state}{}\section{term\+\_\+scroll\+\_\+state Struct Reference} 2 | \label{structterm__scroll__state}\index{term\+\_\+scroll\+\_\+state@{term\+\_\+scroll\+\_\+state}} 3 | 4 | 5 | Internal scroll state. 6 | 7 | 8 | \subsection*{Public Attributes} 9 | \begin{DoxyCompactItemize} 10 | \item 11 | \mbox{\Hypertarget{structterm__scroll__state_aa110afe7bcbddb1c8f6c07da287a51ff}\label{structterm__scroll__state_aa110afe7bcbddb1c8f6c07da287a51ff}} 12 | int {\bfseries height} 13 | \end{DoxyCompactItemize} 14 | 15 | 16 | \subsection{Detailed Description} 17 | Internal scroll state. 18 | 19 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 20 | \item 21 | src/kernel/drivers/terminal/terminal.\+c\end{DoxyCompactItemize} 22 | -------------------------------------------------------------------------------- /site/screenshots/awm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/screenshots/awm.png -------------------------------------------------------------------------------- /site/screenshots/desktop1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/screenshots/desktop1.png -------------------------------------------------------------------------------- /site/screenshots/desktop2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/screenshots/desktop2.png -------------------------------------------------------------------------------- /site/screenshots/doom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/screenshots/doom.jpg -------------------------------------------------------------------------------- /site/screenshots/pci_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/screenshots/pci_tree.png -------------------------------------------------------------------------------- /site/screenshots/quick-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/screenshots/quick-edit.png -------------------------------------------------------------------------------- /site/screenshots/task_manager_with_cpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codyd51/axle/1c84aa0293c45ef187e819a3199f24de63745af0/site/screenshots/task_manager_with_cpu.png --------------------------------------------------------------------------------