⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defs.asm

📁 The main purpose of this project is to add a new scheduling algorithm to GeekOS and to implement a s
💻 ASM
字号:
; Definitions for use in GeekOS boot code; Copyright (c) 2001, David H. Hovemeyer <daveho@cs.umd.edu>; $Revision: 1.7 $; This is free software.  You are permitted to use,; redistribute, and modify it as specified in the file "COPYING".; A lot of this code is adapted from Kernel Toolkit 0.2; and Linux version 2.2.x, so the following copyrights apply:; Copyright (C) 1991, 1992 Linus Torvalds; modified by Drew Eckhardt; modified by Bruce Evans (bde); adapted for Kernel Toolkit by Luigi Sgro%ifndef DEFS_ASM%define DEFS_ASM; BIOS loads the boot sector at offset 0 in this segmentBOOTSEG equ 0x07C0; We'll move the boot sector up to higher memory.; Note that the "ISA hole" begins at segment 0xA000 == 640K.INITSEG equ 0x9000; Put the setup code here, just after the boot sector.SETUPSEG equ 0x9020; Load our "Kernel" at this segment, which starts at 64K.; The number of sectors in the kernel, NUM_KERN_SECTORS,; will be passed on the command line.KERNSEG equ 0x1000; Size of PFAT boot record.; Keep up to date with <geekos/pfat.h>.PFAT_BOOT_RECORD_SIZE equ 28; Offset of BIOS signature word in boot sector.BIOS_SIGNATURE_OFFSET equ 510; Offset of PFAT boot record in boot sector.PFAT_BOOT_RECORD_OFFSET equ BIOS_SIGNATURE_OFFSET - PFAT_BOOT_RECORD_SIZE; Video memory segmentVIDSEG equ 0xb800; The following information is correct for a 1.44M floppy.; Yes, I'm hard coding this.SECTORS_PER_TRACK equ 18HEADS equ 2CYLINDERS equ 80; 8259A PIC initialization codes.; Source: Linux bootsect.S, and Intel 8259A datasheet; The most important reason why we reprogram the PICs is to; route the hardware interrupts through vectors *above*; those reserved by Intel.  The BIOS (for historical reasons :-); routes them such that they conflict with internal processor-generated; interrupts.ICW1 equ 0x11		; ICW1 - ICW4 needed, cascade mode, interval=8,			;   edge triggered. (I think interval is irrelevant			;   for x86.)ICW2_MASTER equ 0x20	; put IRQs 0-7 at 0x20 (above Intel reserved ints)ICW2_SLAVE equ 0x28	; put IRQs 8-15 at 0x28ICW3_MASTER equ 0x04	; IR2 connected to slaveICW3_SLAVE equ 0x02	; slave has id 2ICW4 equ 0x01		; 8086 mode, no auto-EOI, non-buffered mode,			;   not special fully nested mode; Kernel code and data segment selectors.; Keep these up to date with defs.h.KERNEL_CS equ 1<<3	; kernel code segment is GDT entry 1KERNEL_DS equ 2<<3	; kernel data segment is GDT entry 2; Pages for context object and stack for initial kernel thread -; the one we construct for Main().  Keep these up to date with defs.h.; We put them at 1MB, for no particular reason.KERN_THREAD_OBJ equ (1024*1024)KERN_STACK equ KERN_THREAD_OBJ + 4096%endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -