Import backup from 2004-05-23
This commit is contained in:
parent
a982312d2c
commit
6d941b7b16
@ -54,7 +54,6 @@ C_Kernel:
|
|||||||
$(CPP) $(CPP_FLAGS) -c sys/pic.cpp -o pic.o
|
$(CPP) $(CPP_FLAGS) -c sys/pic.cpp -o pic.o
|
||||||
$(CPP) $(CPP_FLAGS) -c sys/io.cpp -o io.o
|
$(CPP) $(CPP_FLAGS) -c sys/io.cpp -o io.o
|
||||||
$(CPP) $(CPP_FLAGS) -c sys/cmos.cpp -o cmos.o
|
$(CPP) $(CPP_FLAGS) -c sys/cmos.cpp -o cmos.o
|
||||||
$(CPP) $(CPP_FLAGS) -c lang/string.cpp -o string.o
|
|
||||||
$(CPP) $(CPP_FLAGS) -c video/stdfont.cpp -o stdfont.o
|
$(CPP) $(CPP_FLAGS) -c video/stdfont.cpp -o stdfont.o
|
||||||
$(CPP) $(CPP_FLAGS) -c video/video.cpp -o video.o
|
$(CPP) $(CPP_FLAGS) -c video/video.cpp -o video.o
|
||||||
$(CPP) $(CPP_FLAGS) -c block/fdc.cpp -o fdc.o
|
$(CPP) $(CPP_FLAGS) -c block/fdc.cpp -o fdc.o
|
||||||
@ -63,6 +62,7 @@ C_Kernel:
|
|||||||
$(CPP) $(CPP_FLAGS) -c mm/mm.cpp -o mm.o
|
$(CPP) $(CPP_FLAGS) -c mm/mm.cpp -o mm.o
|
||||||
$(CPP) $(CPP_FLAGS) -c mm/vmm.cpp -o vmm.o
|
$(CPP) $(CPP_FLAGS) -c mm/vmm.cpp -o vmm.o
|
||||||
$(CPP) $(CPP_FLAGS) -c hos_defines.cpp -o hos_defines.o
|
$(CPP) $(CPP_FLAGS) -c hos_defines.cpp -o hos_defines.o
|
||||||
|
$(CPP) $(CPP_FLAGS) -c lang/string.cpp -o string.o
|
||||||
$(CPP) $(CPP_FLAGS) -c fs/vfs.cpp -o vfs.o
|
$(CPP) $(CPP_FLAGS) -c fs/vfs.cpp -o vfs.o
|
||||||
|
|
||||||
#################################################
|
#################################################
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "hos_defines.h"
|
#include "hos_defines.h"
|
||||||
#include "fs/vfs.h"
|
#include "fs/vfs.h"
|
||||||
#include "mm/vmm.h"
|
#include "mm/vmm.h"
|
||||||
#include "string/string.h"
|
#include "lang/string.h"
|
||||||
|
|
||||||
//From Microsoft's FAT32 File System Specification
|
//From Microsoft's FAT32 File System Specification
|
||||||
DSKSZTOSECPERCLUS DskTableFAT16 [] =
|
DSKSZTOSECPERCLUS DskTableFAT16 [] =
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
// Date: 03/11/04
|
// Date: 03/11/04
|
||||||
// Modified: 03/16/04
|
// Modified: 03/16/04
|
||||||
|
|
||||||
#include "hos_defines.h"
|
|
||||||
#include "vfs.h"
|
#include "vfs.h"
|
||||||
//#include "fs/vfat.h"
|
//#include "fs/vfat.h"
|
||||||
|
#include "hos_defines.h"
|
||||||
//#include "block/rd.h"
|
//#include "block/rd.h"
|
||||||
//#include "block/loop.h"
|
//#include "block/loop.h"
|
||||||
#include "lang/LinkedList.h"
|
#include "lang/LinkedList.h"
|
||||||
@ -13,7 +13,27 @@
|
|||||||
|
|
||||||
void vfs_init()
|
void vfs_init()
|
||||||
{
|
{
|
||||||
|
LinkedList<int> test;
|
||||||
|
for (int i = 0; i < 100; i++)
|
||||||
|
test.insert(i/2, i);
|
||||||
|
printf("num: %d\t", test.numElements());
|
||||||
|
for (int i = 0; i < test.numElements(); i++)
|
||||||
|
printf("%d\t", test[i]);
|
||||||
|
while (test.numElements())
|
||||||
|
test.pop_back();
|
||||||
|
printf("\n");
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
test.push_back(i << 1);
|
||||||
|
for (int i = 0; i < test.numElements(); i++)
|
||||||
|
printf("%d\t", test[i]);
|
||||||
|
printf("\nnum: %d\t", test.numElements());
|
||||||
|
while (test.numElements())
|
||||||
|
{
|
||||||
|
test.remove(0);
|
||||||
|
for (int i = 0; i < test.numElements(); i++)
|
||||||
|
printf("%d\t", test[i]);
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ static inline void disable_ints()
|
|||||||
//Restarts the computer
|
//Restarts the computer
|
||||||
static inline void restart()
|
static inline void restart()
|
||||||
{
|
{
|
||||||
enable_ints();
|
/* enable_ints();
|
||||||
byte temp;
|
byte temp;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -37,8 +37,13 @@ static inline void restart()
|
|||||||
inportb(0x60);
|
inportb(0x60);
|
||||||
} while(temp & 2);
|
} while(temp & 2);
|
||||||
|
|
||||||
|
outportb(0x64, 0xD4); //send command to mouse, not kbd
|
||||||
|
outportb(0x60, 0xF5); //disable data reporting
|
||||||
|
|
||||||
|
outportb(0x64, 0xA7); //disable mouse port
|
||||||
|
*/
|
||||||
|
outportb(0x64, 0xfe); //restart
|
||||||
|
|
||||||
outportb (0x64, 0xfe);
|
|
||||||
for (;;) {}
|
for (;;) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Author: Josh Holtrop
|
// Author: Josh Holtrop
|
||||||
// Date: 08/13/03
|
// Date: 08/13/03
|
||||||
// Holtrop's Operating System - Version 0.13
|
// Holtrop's Operating System - Version 0.13
|
||||||
// Modified: 03/08/04
|
// Modified: 05/21/04
|
||||||
|
|
||||||
#include "hos_defines.h" //#DEFINE's for kernel
|
#include "hos_defines.h" //#DEFINE's for kernel
|
||||||
|
|
||||||
@ -11,22 +11,22 @@
|
|||||||
#include "kio.h" //kernel input/output functions
|
#include "kio.h" //kernel input/output functions
|
||||||
#include "mm/mm.h" //physical memory management functions
|
#include "mm/mm.h" //physical memory management functions
|
||||||
#include "mm/vmm.h" //virtual memory management & paging functions
|
#include "mm/vmm.h" //virtual memory management & paging functions
|
||||||
|
#include "block/fdc.h" //Floppy Disk Controller
|
||||||
#include "char/keyboard.h" //generic keyboard driver & functions
|
#include "char/keyboard.h" //generic keyboard driver & functions
|
||||||
#include "char/mouse.h" //generic ps/2 mouse driver & functions
|
#include "char/mouse.h" //generic ps/2 mouse driver & functions
|
||||||
#include "block/fdc.h" //Floppy Disk Controller functions
|
|
||||||
#include "sys/cmos.h" //CMOS interface functions
|
#include "sys/cmos.h" //CMOS interface functions
|
||||||
#include "sys/io.h" //port i/o functions
|
#include "sys/io.h" //port i/o functions
|
||||||
#include "sys/pic.h" //Programmable Interrupt Controller functions
|
#include "sys/pic.h" //Programmable Interrupt Controller functions
|
||||||
#include "sys/rtc.h" //Real Time Clock functions
|
#include "sys/rtc.h" //Real Time Clock functions
|
||||||
#include "video/video.h" //video functions
|
#include "video/video.h" //video functions
|
||||||
#include "fs/vfs.h"
|
#include "fs/vfs.h" //Virtual File System
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
void isr(dword num);
|
void isr(dword num);
|
||||||
void k_init();
|
void k_init();
|
||||||
|
|
||||||
dword timer = 0;
|
dword timer;
|
||||||
|
|
||||||
//Main kernel initialization method
|
//Main kernel initialization method
|
||||||
void k_init()
|
void k_init()
|
||||||
@ -43,8 +43,11 @@ void k_init()
|
|||||||
mouse_init();
|
mouse_init();
|
||||||
pic_mask1(0); //unmask IRQ's 0-7
|
pic_mask1(0); //unmask IRQ's 0-7
|
||||||
pic_mask2(0); //unmask IRQ's 8-15
|
pic_mask2(0); //unmask IRQ's 8-15
|
||||||
|
timer = 0;
|
||||||
|
|
||||||
enable_ints();
|
enable_ints();
|
||||||
kbd_resetLEDs(); //after enabling interrupts!!
|
kbd_resetLEDs(); //after enabling interrupts!!
|
||||||
|
// vfs_init();
|
||||||
if (video_Mode())
|
if (video_Mode())
|
||||||
{
|
{
|
||||||
int w = video_getWidth(), h = video_getHeight();
|
int w = video_getWidth(), h = video_getHeight();
|
||||||
@ -68,8 +71,6 @@ void k_init()
|
|||||||
printf("Built on %s at %s\n", __DATE__, __TIME__);
|
printf("Built on %s at %s\n", __DATE__, __TIME__);
|
||||||
printf("%b/%b/%b %b:%b:%b\n", rtc_readMonth(), rtc_readDay(), rtc_readYear(), rtc_readHour(), rtc_readMinute(), rtc_readSecond());
|
printf("%b/%b/%b %b:%b:%b\n", rtc_readMonth(), rtc_readDay(), rtc_readYear(), rtc_readHour(), rtc_readMinute(), rtc_readSecond());
|
||||||
|
|
||||||
vfs_init();
|
|
||||||
|
|
||||||
dword key = 0;
|
dword key = 0;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@ -89,7 +90,7 @@ void isr(dword num)
|
|||||||
halt();
|
halt();
|
||||||
break;
|
break;
|
||||||
case 0x20: // IRQ0 - timer interrupt
|
case 0x20: // IRQ0 - timer interrupt
|
||||||
timer++;
|
/*timer++;
|
||||||
(*(byte *)(0xc00b8000))++;
|
(*(byte *)(0xc00b8000))++;
|
||||||
if (!(timer % 100))
|
if (!(timer % 100))
|
||||||
{
|
{
|
||||||
@ -97,7 +98,7 @@ void isr(dword num)
|
|||||||
kio_writeCursorPosition(72);
|
kio_writeCursorPosition(72);
|
||||||
printf("%b:%b:%b\n", rtc_readHour(), rtc_readMinute(), rtc_readSecond());
|
printf("%b:%b:%b\n", rtc_readHour(), rtc_readMinute(), rtc_readSecond());
|
||||||
kio_writeCursorPosition(curPos);
|
kio_writeCursorPosition(curPos);
|
||||||
}
|
}*/
|
||||||
pic_eoi();
|
pic_eoi();
|
||||||
break;
|
break;
|
||||||
case 0x21: // IRQ1 - keyboard interrupt
|
case 0x21: // IRQ1 - keyboard interrupt
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
#include "asmfuncs.h"
|
#include "asmfuncs.h"
|
||||||
#include "video/video.h"
|
#include "video/video.h"
|
||||||
|
|
||||||
dword graphical;
|
|
||||||
dword cursorPosition; //Caches the current cursor position
|
dword cursorPosition; //Caches the current cursor position
|
||||||
word console_memory[2000]; //holds a copy of the console's memory
|
word console_memory[2000]; //holds a copy of the console's memory
|
||||||
|
|
||||||
@ -18,9 +17,14 @@ extern "C" {
|
|||||||
|
|
||||||
void kio_init()
|
void kio_init()
|
||||||
{
|
{
|
||||||
graphical = video_Mode();
|
|
||||||
cursorPosition = 0;
|
cursorPosition = 0;
|
||||||
writeCursorPosition(0);
|
writeCursorPosition(0);
|
||||||
|
word *vidmem = (word *)0xC00B8000;
|
||||||
|
for (int i = 0; i < 2000; i++)
|
||||||
|
{
|
||||||
|
console_memory[i] = 0x0720;
|
||||||
|
vidmem[i] = 0x0720;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void printf(char *fmt, ...)
|
void printf(char *fmt, ...)
|
||||||
@ -104,7 +108,7 @@ void putc(dword chr)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (graphical)
|
if (video_Mode())
|
||||||
{
|
{
|
||||||
console_memory[cursorPosition] = charac | 0x0700;
|
console_memory[cursorPosition] = charac | 0x0700;
|
||||||
kio_drawConsoleChar(cursorPosition);
|
kio_drawConsoleChar(cursorPosition);
|
||||||
@ -121,7 +125,7 @@ void putc(dword chr)
|
|||||||
kio_console_scroll();
|
kio_console_scroll();
|
||||||
cursorPosition = 2000-80;
|
cursorPosition = 2000-80;
|
||||||
}
|
}
|
||||||
if (!graphical)
|
if (!video_Mode())
|
||||||
writeCursorPosition(cursorPosition);
|
writeCursorPosition(cursorPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,7 +162,7 @@ void kio_console_scroll()
|
|||||||
{
|
{
|
||||||
memcpyd(console_memory, console_memory + 80, 960);
|
memcpyd(console_memory, console_memory + 80, 960);
|
||||||
memsetw(console_memory + 1920, 0x0720, 80);
|
memsetw(console_memory + 1920, 0x0720, 80);
|
||||||
if (graphical)
|
if (video_Mode())
|
||||||
kio_drawConsole();
|
kio_drawConsole();
|
||||||
else
|
else
|
||||||
memcpyd((void *)0xC00B8000, console_memory, 1000);
|
memcpyd((void *)0xC00B8000, console_memory, 1000);
|
||||||
@ -168,7 +172,7 @@ void kio_console_scroll()
|
|||||||
void kio_console_cls()
|
void kio_console_cls()
|
||||||
{
|
{
|
||||||
memsetw(console_memory, 0x0720, 2000);
|
memsetw(console_memory, 0x0720, 2000);
|
||||||
if (graphical)
|
if (video_Mode())
|
||||||
kio_drawConsole();
|
kio_drawConsole();
|
||||||
else
|
else
|
||||||
memcpyd((void *)0xC00B8000, console_memory, 1000);
|
memcpyd((void *)0xC00B8000, console_memory, 1000);
|
||||||
@ -219,9 +223,9 @@ dword kio_getCursorPosition()
|
|||||||
void kio_writeCursorPosition(dword position)
|
void kio_writeCursorPosition(dword position)
|
||||||
{
|
{
|
||||||
cursorPosition = position;
|
cursorPosition = position;
|
||||||
if (!graphical)
|
|
||||||
writeCursorPosition(position);
|
writeCursorPosition(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3
kernel/lang/LinkedList.cpp
Normal file
3
kernel/lang/LinkedList.cpp
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
#include "LinkedList.h"
|
||||||
|
|
@ -106,7 +106,7 @@ LinkedList<T>::LinkedList()
|
|||||||
template <typename Element>
|
template <typename Element>
|
||||||
LinkedList<Element> & LinkedList<Element>::insert(int index, Element e)
|
LinkedList<Element> & LinkedList<Element>::insert(int index, Element e)
|
||||||
{
|
{
|
||||||
if (index == count)
|
if (index == count-1)
|
||||||
push_back(e);
|
push_back(e);
|
||||||
else if (index >= 0 && index < count)
|
else if (index >= 0 && index < count)
|
||||||
{
|
{
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
//The total amount of physical memory available (bytes, 1 bit per page)
|
//The total amount of physical memory available (bytes, 1 bit per page)
|
||||||
#define BITMAP_SIZE 0x20000
|
#define BITMAP_SIZE 0x20000
|
||||||
dword mm_totalmem = 0;
|
dword mm_totalmem;
|
||||||
dword mm_megabytes = 0;
|
dword mm_megabytes;
|
||||||
byte page_bitmap[BITMAP_SIZE]; //used to store a bit for each page that is used, 0 if available
|
byte page_bitmap[BITMAP_SIZE]; //used to store a bit for each page that is used, 0 if available
|
||||||
//0x20000*(8 bits/byte)=0x100000 pages in 4gb total
|
//0x20000*(8 bits/byte)=0x100000 pages in 4gb total
|
||||||
|
|
||||||
@ -17,6 +17,7 @@ byte page_bitmap[BITMAP_SIZE]; //used to store a bit for each page that is used,
|
|||||||
// memory areas returned by bios interrupt 0x8E20
|
// memory areas returned by bios interrupt 0x8E20
|
||||||
void mm_init()
|
void mm_init()
|
||||||
{
|
{
|
||||||
|
mm_totalmem = mm_megabytes = 0;
|
||||||
dword memmap_entries = *(dword *)BOOT_MEMMAP_ENTRIES;
|
dword memmap_entries = *(dword *)BOOT_MEMMAP_ENTRIES;
|
||||||
memmap_entry *maps = (memmap_entry *) BOOT_FIRST_MEMMAP;
|
memmap_entry *maps = (memmap_entry *) BOOT_FIRST_MEMMAP;
|
||||||
dword a;
|
dword a;
|
||||||
|
@ -8,18 +8,18 @@
|
|||||||
#include "vmm.h"
|
#include "vmm.h"
|
||||||
#include "asmfuncs.h"
|
#include "asmfuncs.h"
|
||||||
#include "mm/mm.h"
|
#include "mm/mm.h"
|
||||||
|
#include "video/video.h"
|
||||||
|
|
||||||
HeapEntry *firstHeapEntry = (HeapEntry *)0xD0000000; //this is where heap memory starts
|
HeapEntry *firstHeapEntry = (HeapEntry *)0xD0000000; //this is where heap memory starts
|
||||||
|
|
||||||
// This is the initialization procedure for the Virtual Memory Manager
|
// This is the initialization procedure for the Virtual Memory Manager
|
||||||
// It sets up the final page directory/page table setup and maps video memory, if present
|
// It sets up the final page directory/page table setup
|
||||||
void vmm_init()
|
void vmm_init()
|
||||||
{
|
{
|
||||||
unsigned int *pageTables = (unsigned int *)0xC0104000; //this is the location of the page directory
|
unsigned int *pageTables = (unsigned int *)0xC0104000; //this is the location of the page directory
|
||||||
pageTables[0x3FF] = 0x104000|0x03; //the last page directory entry points to the page directory itself
|
pageTables[0x3FF] = 0x104000|0x03; //the last page directory entry points to the page directory itself
|
||||||
pageTables[0] = 0;
|
pageTables[0] = 0;
|
||||||
invlpg_(0);
|
invlpg_(0);
|
||||||
|
|
||||||
unsigned int firstHeapEntryBlock = (unsigned int)mm_palloc();
|
unsigned int firstHeapEntryBlock = (unsigned int)mm_palloc();
|
||||||
vmm_map1((unsigned int)firstHeapEntry, firstHeapEntryBlock);
|
vmm_map1((unsigned int)firstHeapEntry, firstHeapEntryBlock);
|
||||||
HeapEntryBlock *heb = (HeapEntryBlock *)firstHeapEntry;
|
HeapEntryBlock *heb = (HeapEntryBlock *)firstHeapEntry;
|
||||||
@ -30,6 +30,13 @@ void vmm_init()
|
|||||||
heb->entry[1].base = (unsigned int)firstHeapEntry+4096; //this is the start of the rest of the kernel's heap memory
|
heb->entry[1].base = (unsigned int)firstHeapEntry+4096; //this is the start of the rest of the kernel's heap memory
|
||||||
heb->entry[1].size = 0x10000000-4096; //the rest of the kernel's heap memory: 256mb - 4kb
|
heb->entry[1].size = 0x10000000-4096; //the rest of the kernel's heap memory: 256mb - 4kb
|
||||||
heb->entry[1].attributes = VMM_HE_HOLE; //this is a hole - an unmapped section of heap memory
|
heb->entry[1].attributes = VMM_HE_HOLE; //this is a hole - an unmapped section of heap memory
|
||||||
|
|
||||||
|
unsigned int vidPages = video_getWidth() * video_getHeight() * (video_getBitsPerPixel() >> 3);
|
||||||
|
if (vidPages % 4096)
|
||||||
|
vidPages = (vidPages >> 12) + 1;
|
||||||
|
else
|
||||||
|
vidPages = (vidPages >> 12);
|
||||||
|
vmm_mapn(0xF0000000, video_getPhysBasePtr(), vidPages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -122,7 +129,7 @@ void *malloc(unsigned int bytes)
|
|||||||
void *vmm_getFreeChunk(unsigned int bytes)
|
void *vmm_getFreeChunk(unsigned int bytes)
|
||||||
{
|
{
|
||||||
HeapEntry *he = firstHeapEntry;
|
HeapEntry *he = firstHeapEntry;
|
||||||
for (;;)
|
while (he)
|
||||||
{
|
{
|
||||||
if (he->attributes == VMM_HE_FREE)
|
if (he->attributes == VMM_HE_FREE)
|
||||||
{
|
{
|
||||||
@ -143,8 +150,6 @@ void *vmm_getFreeChunk(unsigned int bytes)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
he = (HeapEntry *)he->link;
|
he = (HeapEntry *)he->link;
|
||||||
if (!he)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -161,7 +166,7 @@ void vmm_coalesceHeapEntry(HeapEntry *he)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HeapEntry *hec = firstHeapEntry;
|
HeapEntry *hec = firstHeapEntry;
|
||||||
for (;;)
|
while (hec)
|
||||||
{
|
{
|
||||||
if (hec->attributes == he->attributes)
|
if (hec->attributes == he->attributes)
|
||||||
{
|
{
|
||||||
@ -178,8 +183,6 @@ void vmm_coalesceHeapEntry(HeapEntry *he)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
hec = (HeapEntry *)hec->link;
|
hec = (HeapEntry *)hec->link;
|
||||||
if (!hec)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,12 +262,9 @@ void vmm_addHeapEntryBlock()
|
|||||||
HeapEntry *vmm_getLastHeapEntry()
|
HeapEntry *vmm_getLastHeapEntry()
|
||||||
{
|
{
|
||||||
HeapEntry *he = firstHeapEntry;
|
HeapEntry *he = firstHeapEntry;
|
||||||
for (;;)
|
while (he)
|
||||||
{
|
|
||||||
if (he->link == 0)
|
|
||||||
return he;
|
|
||||||
he = (HeapEntry *)he->link;
|
he = (HeapEntry *)he->link;
|
||||||
}
|
return he;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -272,13 +272,11 @@ HeapEntry *vmm_getLastHeapEntry()
|
|||||||
HeapEntry *vmm_getFirstHoleHeapEntry(unsigned int minBytes)
|
HeapEntry *vmm_getFirstHoleHeapEntry(unsigned int minBytes)
|
||||||
{
|
{
|
||||||
HeapEntry *he = firstHeapEntry;
|
HeapEntry *he = firstHeapEntry;
|
||||||
for (;;)
|
while (he)
|
||||||
{
|
{
|
||||||
if ((he->attributes == VMM_HE_HOLE) && (he->size >= minBytes))
|
if ((he->attributes == VMM_HE_HOLE) && (he->size >= minBytes))
|
||||||
return he;
|
return he;
|
||||||
he = (HeapEntry *)he->link;
|
he = (HeapEntry *)he->link;
|
||||||
if (!he)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -288,13 +286,11 @@ HeapEntry *vmm_getFirstHoleHeapEntry(unsigned int minBytes)
|
|||||||
HeapEntry *vmm_getFirstUnusedHeapEntry()
|
HeapEntry *vmm_getFirstUnusedHeapEntry()
|
||||||
{
|
{
|
||||||
HeapEntry *he = firstHeapEntry;
|
HeapEntry *he = firstHeapEntry;
|
||||||
for (;;)
|
while (he)
|
||||||
{
|
{
|
||||||
if (he->attributes == VMM_HE_UNUSED)
|
if (he->attributes == VMM_HE_UNUSED)
|
||||||
return he;
|
return he;
|
||||||
he = (HeapEntry *)he->link;
|
he = (HeapEntry *)he->link;
|
||||||
if (!he)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -305,13 +301,11 @@ unsigned int vmm_heapEntriesLeft()
|
|||||||
{
|
{
|
||||||
HeapEntry *he = firstHeapEntry;
|
HeapEntry *he = firstHeapEntry;
|
||||||
unsigned int entries = 0;
|
unsigned int entries = 0;
|
||||||
for (;;)
|
while (he)
|
||||||
{
|
{
|
||||||
if (he->attributes == VMM_HE_UNUSED)
|
if (he->attributes == VMM_HE_UNUSED)
|
||||||
entries++;
|
entries++;
|
||||||
he = (HeapEntry *)he->link;
|
he = (HeapEntry *)he->link;
|
||||||
if (!he)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
@ -333,13 +327,11 @@ int free(void *ptr)
|
|||||||
HeapEntry *vmm_getHeapEntryByBase(unsigned int base)
|
HeapEntry *vmm_getHeapEntryByBase(unsigned int base)
|
||||||
{
|
{
|
||||||
HeapEntry *he = firstHeapEntry;
|
HeapEntry *he = firstHeapEntry;
|
||||||
for (;;)
|
while (he)
|
||||||
{
|
{
|
||||||
if (he->base == base)
|
if (he->base == base)
|
||||||
return he;
|
return he;
|
||||||
he = (HeapEntry *)he->link;
|
he = (HeapEntry *)he->link;
|
||||||
if (!he)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include "mm/vmm.h"
|
#include "mm/vmm.h"
|
||||||
|
|
||||||
ModeInfoBlock video_mode;
|
ModeInfoBlock video_mode;
|
||||||
dword videoMode = 0; //what video mode # we are in, 0 for console mode
|
dword videoMode; //what video mode # we are in, 0 for console mode
|
||||||
word *vid_ptr16 = (word *)0xF0000000;
|
word *vid_ptr16 = (word *)0xF0000000;
|
||||||
byte *vid_ptr24 = (byte *)0xF0000000;
|
byte *vid_ptr24 = (byte *)0xF0000000;
|
||||||
dword *vid_ptr32 = (dword *)0xF0000000;
|
dword *vid_ptr32 = (dword *)0xF0000000;
|
||||||
@ -36,13 +36,13 @@ void video_init()
|
|||||||
video_psetp = &video_psetp32;
|
video_psetp = &video_psetp32;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int vidPages = video_mode.XResolution * video_mode.YResolution * (video_mode.BitsPerPixel >> 3);
|
/* unsigned int vidPages = video_mode.XResolution * video_mode.YResolution * (video_mode.BitsPerPixel >> 3);
|
||||||
if (vidPages % 4096)
|
if (vidPages % 4096)
|
||||||
vidPages = (vidPages >> 12) + 1;
|
vidPages = (vidPages >> 12) + 1;
|
||||||
else
|
else
|
||||||
vidPages = (vidPages >> 12);
|
vidPages = (vidPages >> 12);
|
||||||
vmm_mapn(0xF0000000, video_mode.PhysBasePtr, vidPages);
|
vmm_mapn(0xF0000000, video_mode.PhysBasePtr, vidPages);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
//Renders a character using stdfont[] as a bitmask
|
//Renders a character using stdfont[] as a bitmask
|
||||||
|
Loading…
x
Reference in New Issue
Block a user