gitextract_elg482xn/ ├── .gitignore ├── 00-environment/ │ └── README.md ├── 01-bootsector-barebones/ │ ├── README.md │ └── boot_sect_simple.asm ├── 02-bootsector-print/ │ ├── README.md │ └── boot_sect_hello.asm ├── 03-bootsector-memory/ │ ├── README.md │ ├── boot_sect_memory.asm │ └── boot_sect_memory_org.asm ├── 04-bootsector-stack/ │ ├── README.md │ └── boot_sect_stack.asm ├── 05-bootsector-functions-strings/ │ ├── README.md │ ├── boot_sect_main.asm │ ├── boot_sect_print.asm │ └── boot_sect_print_hex.asm ├── 06-bootsector-segmentation/ │ ├── README.md │ └── boot_sect_segmentation.asm ├── 07-bootsector-disk/ │ ├── README.md │ ├── boot_sect_disk.asm │ └── boot_sect_main.asm ├── 08-32bit-print/ │ ├── 32bit-print.asm │ └── README.md ├── 09-32bit-gdt/ │ ├── 32bit-gdt.asm │ └── README.md ├── 10-32bit-enter/ │ ├── 32bit-main.asm │ ├── 32bit-switch.asm │ └── README.md ├── 11-kernel-crosscompiler/ │ └── README.md ├── 12-kernel-c/ │ ├── README.md │ ├── function.c │ ├── functioncalls.c │ ├── localvars.c │ └── pointers.c ├── 13-kernel-barebones/ │ ├── Makefile │ ├── README.md │ ├── bootsect.asm │ ├── kernel.c │ └── kernel_entry.asm ├── 14-checkpoint/ │ ├── Makefile │ ├── README.md │ ├── boot/ │ │ ├── 32bit_print.asm │ │ ├── bootsect.asm │ │ ├── disk.asm │ │ ├── gdt.asm │ │ ├── kernel_entry.asm │ │ ├── print.asm │ │ ├── print_hex.asm │ │ └── switch_pm.asm │ └── kernel/ │ └── kernel.c ├── 15-video-ports/ │ ├── Makefile │ ├── README.md │ ├── boot/ │ │ ├── 32bit_print.asm │ │ ├── bootsect.asm │ │ ├── disk.asm │ │ ├── gdt.asm │ │ ├── kernel_entry.asm │ │ ├── print.asm │ │ ├── print_hex.asm │ │ └── switch_pm.asm │ ├── drivers/ │ │ ├── ports.c │ │ └── ports.h │ └── kernel/ │ └── kernel.c ├── 16-video-driver/ │ ├── Makefile │ ├── README.md │ ├── boot/ │ │ ├── 32bit_print.asm │ │ ├── bootsect.asm │ │ ├── disk.asm │ │ ├── gdt.asm │ │ ├── kernel_entry.asm │ │ ├── print.asm │ │ ├── print_hex.asm │ │ └── switch_pm.asm │ ├── drivers/ │ │ ├── ports.c │ │ ├── ports.h │ │ ├── screen.c │ │ └── screen.h │ └── kernel/ │ └── kernel.c ├── 17-video-scroll/ │ ├── Makefile │ ├── README.md │ ├── boot/ │ │ ├── 32bit_print.asm │ │ ├── bootsect.asm │ │ ├── disk.asm │ │ ├── gdt.asm │ │ ├── kernel_entry.asm │ │ ├── print.asm │ │ ├── print_hex.asm │ │ └── switch_pm.asm │ ├── drivers/ │ │ ├── ports.c │ │ ├── ports.h │ │ ├── screen.c │ │ └── screen.h │ └── kernel/ │ ├── kernel.c │ ├── util.c │ └── util.h ├── 18-interrupts/ │ ├── Makefile │ ├── README.md │ ├── boot/ │ │ ├── 32bit_print.asm │ │ ├── bootsect.asm │ │ ├── disk.asm │ │ ├── gdt.asm │ │ ├── kernel_entry.asm │ │ ├── print.asm │ │ ├── print_hex.asm │ │ └── switch_pm.asm │ ├── cpu/ │ │ ├── idt.c │ │ ├── idt.h │ │ ├── interrupt.asm │ │ ├── isr.c │ │ ├── isr.h │ │ └── types.h │ ├── drivers/ │ │ ├── ports.c │ │ ├── ports.h │ │ ├── screen.c │ │ └── screen.h │ └── kernel/ │ ├── kernel.c │ ├── util.c │ └── util.h ├── 19-interrupts-irqs/ │ ├── Makefile │ ├── README.md │ ├── cpu/ │ │ ├── idt.c │ │ ├── idt.h │ │ ├── interrupt.asm │ │ ├── isr.c │ │ ├── isr.h │ │ └── types.h │ └── kernel/ │ ├── kernel.c │ ├── util.c │ └── util.h ├── 20-interrupts-timer/ │ ├── Makefile │ ├── README.md │ ├── cpu/ │ │ ├── timer.c │ │ └── timer.h │ ├── drivers/ │ │ ├── keyboard.c │ │ ├── keyboard.h │ │ ├── ports.c │ │ ├── ports.h │ │ ├── screen.c │ │ └── screen.h │ └── kernel/ │ ├── kernel.c │ ├── util.c │ └── util.h ├── 21-shell/ │ ├── Makefile │ ├── README.md │ ├── cpu/ │ │ ├── idt.c │ │ ├── idt.h │ │ ├── interrupt.asm │ │ ├── isr.c │ │ ├── isr.h │ │ ├── timer.c │ │ ├── timer.h │ │ └── types.h │ ├── drivers/ │ │ ├── keyboard.c │ │ ├── keyboard.h │ │ ├── screen.c │ │ └── screen.h │ ├── kernel/ │ │ ├── kernel.c │ │ └── kernel.h │ └── libc/ │ ├── function.h │ ├── mem.c │ ├── mem.h │ ├── string.c │ └── string.h ├── 22-malloc/ │ ├── Makefile │ ├── README.md │ ├── cpu/ │ │ ├── idt.c │ │ ├── idt.h │ │ ├── interrupt.asm │ │ ├── isr.c │ │ ├── isr.h │ │ ├── ports.c │ │ ├── ports.h │ │ ├── timer.c │ │ ├── timer.h │ │ └── type.h │ ├── drivers/ │ │ ├── keyboard.c │ │ ├── keyboard.h │ │ ├── screen.c │ │ └── screen.h │ ├── kernel/ │ │ ├── kernel.c │ │ └── kernel.h │ └── libc/ │ ├── function.h │ ├── mem.c │ ├── mem.h │ ├── string.c │ └── string.h ├── 23-fixes/ │ ├── Makefile │ ├── README.md │ ├── boot/ │ │ ├── 32bit_print.asm │ │ ├── bootsect.asm │ │ ├── disk.asm │ │ ├── gdt.asm │ │ ├── kernel_entry.asm │ │ ├── print.asm │ │ ├── print_hex.asm │ │ └── switch_pm.asm │ ├── cpu/ │ │ ├── idt.c │ │ ├── idt.h │ │ ├── interrupt.asm │ │ ├── isr.c │ │ ├── isr.h │ │ ├── ports.c │ │ ├── ports.h │ │ ├── timer.c │ │ ├── timer.h │ │ └── type.h │ ├── drivers/ │ │ ├── keyboard.c │ │ ├── keyboard.h │ │ ├── screen.c │ │ └── screen.h │ ├── kernel/ │ │ ├── kernel.c │ │ └── kernel.h │ └── libc/ │ ├── function.h │ ├── mem.c │ ├── mem.h │ ├── string.c │ └── string.h ├── 24-el-capitan/ │ └── README.md ├── LICENSE └── README.md