;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;; Miguel's FoolOS Helper Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Global Descriptor Table ; we have the null descriptor and a code and data block for a start ; ; 0x08 code segment ; 0x10 data segment ; ; this file contains pure data ; ; ; ; global gdt_descriptor global gdt_start gdt_start: gdt_null: ;null descriptor (2 x 4 bytes) dd 0x0 dd 0x0 gdt_code: ; flags: ; present: 1 / privilege: 00 / type: 1 ; code: 1 / conforming: 0 / readable: 1 / accessed: 0 ; granularity: 1 / 16-bit default: 1 / 64-bit seg: 0 / AVL: 0 dw 0xffff ;limit dw 0x0 ;base db 0x0 ;base db 10011010b ;flags db 11001111b ;flags & seg.limit db 0x0 ;base gdt_data: ; flags: ; code: 0 / expand down: 0 / writable: 1 / accessed: 0 dw 0xffff dw 0x0 db 0x0 db 10010010b db 11001111b db 0x0 gdt16_code: ; flags: ; present: 1 / privilege: 00 / type: 1 ; code: 1 / conforming: 0 / readable: 1 / accessed: 0 ; granularity: 1 / 16-bit default: 1 / 64-bit seg: 0 / AVL: 0 dw 0xffff ;limit dw 0x0 ;base db 0x0 ;base db 10011010b ;flags db 10001111b ;flags & seg.limit db 0x0 ;base gdt16_data: ; flags: ; code: 0 / expand down: 0 / writable: 1 / accessed: 0 dw 0xffff dw 0x0 db 0x0 db 10010010b db 10001111b db 0x0 gdt_end: gdt_descriptor: dw gdt_end-gdt_start-1 dd gdt_start CODE_SEG equ gdt_code - gdt_start DATA_SEG equ gdt_data - gdt_start CODE16_SEG equ gdt16_code - gdt_start DATA16_SEG equ gdt16_data - gdt_start