From 9d5986dcc089dec415ff5dbb6d7872248d26bcf5 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 6 Jul 2017 17:47:31 -0500 Subject: [PATCH] Initial commit of MP4. --- MP4/MP4_Sources.zip | Bin 0 -> 164645 bytes MP4/MP4_Sources/.DS_Store | Bin 0 -> 10244 bytes MP4/MP4_Sources/BIOS-bochs-latest | Bin 0 -> 131072 bytes MP4/MP4_Sources/README.TXT | 107 +++++++ MP4/MP4_Sources/VGABIOS-lgpl-latest | Bin 0 -> 38400 bytes MP4/MP4_Sources/assert.C | 45 +++ MP4/MP4_Sources/assert.H | 56 ++++ MP4/MP4_Sources/bochsrc.bxrc | 48 +++ MP4/MP4_Sources/console.C | 213 +++++++++++++ MP4/MP4_Sources/console.H | 113 +++++++ MP4/MP4_Sources/cont_frame_pool.C | 162 ++++++++++ MP4/MP4_Sources/cont_frame_pool.H | 119 +++++++ MP4/MP4_Sources/copykernel.sh | 5 + MP4/MP4_Sources/dev_kernel_grub.img | Bin 0 -> 1474560 bytes MP4/MP4_Sources/exceptions.C | 183 +++++++++++ MP4/MP4_Sources/exceptions.H | 86 +++++ MP4/MP4_Sources/gdt.C | 124 ++++++++ MP4/MP4_Sources/gdt.H | 48 +++ MP4/MP4_Sources/gdt_low.asm | 18 ++ MP4/MP4_Sources/idt.C | 108 +++++++ MP4/MP4_Sources/idt.H | 57 ++++ MP4/MP4_Sources/idt_low.asm | 279 ++++++++++++++++ MP4/MP4_Sources/interrupts.C | 172 ++++++++++ MP4/MP4_Sources/interrupts.H | 90 ++++++ MP4/MP4_Sources/irq.C | 60 ++++ MP4/MP4_Sources/irq.H | 38 +++ MP4/MP4_Sources/irq_low.asm | 136 ++++++++ MP4/MP4_Sources/kernel.C | 299 ++++++++++++++++++ MP4/MP4_Sources/linker.ld | 36 +++ MP4/MP4_Sources/machine.C | 70 ++++ MP4/MP4_Sources/machine.H | 123 +++++++ MP4/MP4_Sources/machine_low.H | 31 ++ MP4/MP4_Sources/machine_low.asm | 18 ++ MP4/MP4_Sources/makefile | 80 +++++ MP4/MP4_Sources/page_table.C | 56 ++++ MP4/MP4_Sources/page_table.H | 100 ++++++ MP4/MP4_Sources/paging_low.H | 51 +++ MP4/MP4_Sources/paging_low.asm | 32 ++ MP4/MP4_Sources/simple_keyboard.C | 79 +++++ MP4/MP4_Sources/simple_keyboard.H | 68 ++++ MP4/MP4_Sources/simple_timer.C | 100 ++++++ MP4/MP4_Sources/simple_timer.H | 70 ++++ MP4/MP4_Sources/start.asm | 110 +++++++ MP4/MP4_Sources/utils.C | 167 ++++++++++ MP4/MP4_Sources/utils.H | 62 ++++ MP4/MP4_Sources/vm_pool.C | 69 ++++ MP4/MP4_Sources/vm_pool.H | 76 +++++ MP4/__MACOSX/._MP4_Sources | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._.DS_Store | Bin 0 -> 120 bytes MP4/__MACOSX/MP4_Sources/._BIOS-bochs-latest | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._README.TXT | Bin 0 -> 239 bytes .../MP4_Sources/._VGABIOS-lgpl-latest | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._assert.C | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._assert.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._bochsout.txt | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._bochsrc.bxrc | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._console.C | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._console.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._cont_frame_pool.C | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._cont_frame_pool.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._copykernel.sh | Bin 0 -> 239 bytes .../MP4_Sources/._dev_kernel_grub.img | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._exceptions.C | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._exceptions.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._gdt.C | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._gdt.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._gdt_low.asm | Bin 0 -> 238 bytes MP4/__MACOSX/MP4_Sources/._idt.C | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._idt.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._idt_low.asm | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._interrupts.C | Bin 0 -> 447 bytes MP4/__MACOSX/MP4_Sources/._interrupts.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._irq.C | Bin 0 -> 447 bytes MP4/__MACOSX/MP4_Sources/._irq.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._irq_low.asm | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._kernel.C | Bin 0 -> 463 bytes MP4/__MACOSX/MP4_Sources/._linker.ld | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._machine.C | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._machine.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._machine_low.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._machine_low.asm | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._makefile | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._page_table.C | Bin 0 -> 527 bytes MP4/__MACOSX/MP4_Sources/._page_table.H | Bin 0 -> 511 bytes MP4/__MACOSX/MP4_Sources/._paging_low.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._paging_low.asm | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._simple_keyboard.C | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._simple_keyboard.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._simple_timer.C | Bin 0 -> 447 bytes MP4/__MACOSX/MP4_Sources/._simple_timer.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._start.asm | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._utils.C | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._utils.H | Bin 0 -> 239 bytes MP4/__MACOSX/MP4_Sources/._vm_pool.C | Bin 0 -> 447 bytes MP4/__MACOSX/MP4_Sources/._vm_pool.H | Bin 0 -> 239 bytes MP4/handout_mp4.pdf | Bin 0 -> 155851 bytes 96 files changed, 3964 insertions(+) create mode 100644 MP4/MP4_Sources.zip create mode 100644 MP4/MP4_Sources/.DS_Store create mode 100755 MP4/MP4_Sources/BIOS-bochs-latest create mode 100755 MP4/MP4_Sources/README.TXT create mode 100755 MP4/MP4_Sources/VGABIOS-lgpl-latest create mode 100755 MP4/MP4_Sources/assert.C create mode 100755 MP4/MP4_Sources/assert.H create mode 100755 MP4/MP4_Sources/bochsrc.bxrc create mode 100755 MP4/MP4_Sources/console.C create mode 100755 MP4/MP4_Sources/console.H create mode 100644 MP4/MP4_Sources/cont_frame_pool.C create mode 100755 MP4/MP4_Sources/cont_frame_pool.H create mode 100755 MP4/MP4_Sources/copykernel.sh create mode 100755 MP4/MP4_Sources/dev_kernel_grub.img create mode 100755 MP4/MP4_Sources/exceptions.C create mode 100755 MP4/MP4_Sources/exceptions.H create mode 100755 MP4/MP4_Sources/gdt.C create mode 100755 MP4/MP4_Sources/gdt.H create mode 100755 MP4/MP4_Sources/gdt_low.asm create mode 100755 MP4/MP4_Sources/idt.C create mode 100755 MP4/MP4_Sources/idt.H create mode 100755 MP4/MP4_Sources/idt_low.asm create mode 100755 MP4/MP4_Sources/interrupts.C create mode 100755 MP4/MP4_Sources/interrupts.H create mode 100755 MP4/MP4_Sources/irq.C create mode 100755 MP4/MP4_Sources/irq.H create mode 100755 MP4/MP4_Sources/irq_low.asm create mode 100755 MP4/MP4_Sources/kernel.C create mode 100755 MP4/MP4_Sources/linker.ld create mode 100755 MP4/MP4_Sources/machine.C create mode 100755 MP4/MP4_Sources/machine.H create mode 100755 MP4/MP4_Sources/machine_low.H create mode 100755 MP4/MP4_Sources/machine_low.asm create mode 100755 MP4/MP4_Sources/makefile create mode 100644 MP4/MP4_Sources/page_table.C create mode 100755 MP4/MP4_Sources/page_table.H create mode 100755 MP4/MP4_Sources/paging_low.H create mode 100755 MP4/MP4_Sources/paging_low.asm create mode 100755 MP4/MP4_Sources/simple_keyboard.C create mode 100755 MP4/MP4_Sources/simple_keyboard.H create mode 100755 MP4/MP4_Sources/simple_timer.C create mode 100755 MP4/MP4_Sources/simple_timer.H create mode 100755 MP4/MP4_Sources/start.asm create mode 100755 MP4/MP4_Sources/utils.C create mode 100755 MP4/MP4_Sources/utils.H create mode 100644 MP4/MP4_Sources/vm_pool.C create mode 100755 MP4/MP4_Sources/vm_pool.H create mode 100644 MP4/__MACOSX/._MP4_Sources create mode 100644 MP4/__MACOSX/MP4_Sources/._.DS_Store create mode 100644 MP4/__MACOSX/MP4_Sources/._BIOS-bochs-latest create mode 100644 MP4/__MACOSX/MP4_Sources/._README.TXT create mode 100644 MP4/__MACOSX/MP4_Sources/._VGABIOS-lgpl-latest create mode 100644 MP4/__MACOSX/MP4_Sources/._assert.C create mode 100644 MP4/__MACOSX/MP4_Sources/._assert.H create mode 100644 MP4/__MACOSX/MP4_Sources/._bochsout.txt create mode 100644 MP4/__MACOSX/MP4_Sources/._bochsrc.bxrc create mode 100644 MP4/__MACOSX/MP4_Sources/._console.C create mode 100644 MP4/__MACOSX/MP4_Sources/._console.H create mode 100644 MP4/__MACOSX/MP4_Sources/._cont_frame_pool.C create mode 100644 MP4/__MACOSX/MP4_Sources/._cont_frame_pool.H create mode 100644 MP4/__MACOSX/MP4_Sources/._copykernel.sh create mode 100644 MP4/__MACOSX/MP4_Sources/._dev_kernel_grub.img create mode 100644 MP4/__MACOSX/MP4_Sources/._exceptions.C create mode 100644 MP4/__MACOSX/MP4_Sources/._exceptions.H create mode 100644 MP4/__MACOSX/MP4_Sources/._gdt.C create mode 100644 MP4/__MACOSX/MP4_Sources/._gdt.H create mode 100644 MP4/__MACOSX/MP4_Sources/._gdt_low.asm create mode 100644 MP4/__MACOSX/MP4_Sources/._idt.C create mode 100644 MP4/__MACOSX/MP4_Sources/._idt.H create mode 100644 MP4/__MACOSX/MP4_Sources/._idt_low.asm create mode 100644 MP4/__MACOSX/MP4_Sources/._interrupts.C create mode 100644 MP4/__MACOSX/MP4_Sources/._interrupts.H create mode 100644 MP4/__MACOSX/MP4_Sources/._irq.C create mode 100644 MP4/__MACOSX/MP4_Sources/._irq.H create mode 100644 MP4/__MACOSX/MP4_Sources/._irq_low.asm create mode 100644 MP4/__MACOSX/MP4_Sources/._kernel.C create mode 100644 MP4/__MACOSX/MP4_Sources/._linker.ld create mode 100644 MP4/__MACOSX/MP4_Sources/._machine.C create mode 100644 MP4/__MACOSX/MP4_Sources/._machine.H create mode 100644 MP4/__MACOSX/MP4_Sources/._machine_low.H create mode 100644 MP4/__MACOSX/MP4_Sources/._machine_low.asm create mode 100644 MP4/__MACOSX/MP4_Sources/._makefile create mode 100644 MP4/__MACOSX/MP4_Sources/._page_table.C create mode 100644 MP4/__MACOSX/MP4_Sources/._page_table.H create mode 100644 MP4/__MACOSX/MP4_Sources/._paging_low.H create mode 100644 MP4/__MACOSX/MP4_Sources/._paging_low.asm create mode 100644 MP4/__MACOSX/MP4_Sources/._simple_keyboard.C create mode 100644 MP4/__MACOSX/MP4_Sources/._simple_keyboard.H create mode 100644 MP4/__MACOSX/MP4_Sources/._simple_timer.C create mode 100644 MP4/__MACOSX/MP4_Sources/._simple_timer.H create mode 100644 MP4/__MACOSX/MP4_Sources/._start.asm create mode 100644 MP4/__MACOSX/MP4_Sources/._utils.C create mode 100644 MP4/__MACOSX/MP4_Sources/._utils.H create mode 100644 MP4/__MACOSX/MP4_Sources/._vm_pool.C create mode 100644 MP4/__MACOSX/MP4_Sources/._vm_pool.H create mode 100644 MP4/handout_mp4.pdf diff --git a/MP4/MP4_Sources.zip b/MP4/MP4_Sources.zip new file mode 100644 index 0000000000000000000000000000000000000000..40455417e314d6d32cacab7fd0df84266704d355 GIT binary patch literal 164645 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 p?`RfH%DqY+}<)t2&OY$>({VPVp@@D<$p96o~2 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

M$_)7 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 Y92H(6x>>(9bkByy4dUk?6XfmtKgu1I8~^|S literal 0 HcmV?d00001 diff --git a/MP4/MP4_Sources/assert.C b/MP4/MP4_Sources/assert.C new file mode 100755 index 0000000..e85ae1d --- /dev/null +++ b/MP4/MP4_Sources/assert.C @@ -0,0 +1,45 @@ +/* + File: assert.C + + Author: R. Bettati + Department of Computer Science + Texas A&M University + + Date : 05/01/23 + + Implementation of the assert() function. + +*/ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "assert.H" + +#include "utils.H" +#include "console.H" + +/*--------------------------------------------------------------------------*/ +/* _assert() FUNCTION: gets called when assert() macro fails. */ +/*--------------------------------------------------------------------------*/ + +void _assert (const char* _file, const int _line, const char* _message ) { + /* Prints current file, line number, and failed assertion. */ + char temp[15]; + Console::puts("Assertion failed at file: "); + Console::puts(_file); + Console::puts(" line: "); + int2str(_line, temp); + Console::puts(temp); + Console::puts(" assertion: "); + Console::puts(_message); + Console::puts("\n"); + abort(); +}/* end _assert */ diff --git a/MP4/MP4_Sources/assert.H b/MP4/MP4_Sources/assert.H new file mode 100755 index 0000000..33c7a16 --- /dev/null +++ b/MP4/MP4_Sources/assert.H @@ -0,0 +1,56 @@ +/* + File: assert.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + + Date : 05/01/23 + + Header file for the "assert" macro. + + +*/ + +#ifndef __assert_H__ +#define __assert_H__ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "utils.H" + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* CONSTANTS */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* "ASSERT" MACRO */ +/*--------------------------------------------------------------------------*/ + +/* NOTE: The "assert" macros can be turned off by giving the -DNDEBUG + argument when compiling. */ + +#ifdef assert +# undef assert +#endif + +void _assert ( const char* _file, const int _line, const char* _message ); + +#ifdef NDEBUG +# define assert( m ) ( ( void ) 0 ) +#else +# define assert( m ) \ + if ( !(m) ) _assert( __FILE__, __LINE__, #m ); +#endif + +#endif diff --git a/MP4/MP4_Sources/bochsrc.bxrc b/MP4/MP4_Sources/bochsrc.bxrc new file mode 100755 index 0000000..310979c --- /dev/null +++ b/MP4/MP4_Sources/bochsrc.bxrc @@ -0,0 +1,48 @@ +############################################################### +# bochsrc.txt file for DLX Linux disk image. +############################################################### + +# how much memory the emulated machine will have +megs: 32 + +# filename of ROM images +romimage: file=BIOS-bochs-latest +vgaromimage: file=VGABIOS-lgpl-latest + +# what disk images will be used +floppya: 1_44=dev_kernel_grub.img, status=inserted +#floppyb: 1_44=floppyb.img, status=inserted + +# hard disk +#ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +#ata0-master: type=disk, path="c.img", cylinders=306, heads=4, spt=17 +# choose the boot disk. +boot: floppy + +# default config interface is textconfig. +#config_interface: textconfig +#config_interface: wx + +#display_library: x +# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga + +# where do we send log messages? +log: bochsout.txt + +# disable the mouse +mouse: enabled=0 + +# enable key mapping, using US layout as default. +# +# NOTE: In Bochs 1.4, keyboard mapping is only 100% implemented on X windows. +# However, the key mapping tables are used in the paste function, so +# in the DLX Linux example I'm enabling keyboard_mapping so that paste +# will work. Cut&Paste is currently implemented on win32 and X windows only. + +#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-us.map +#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-fr.map +#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-de.map +#keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-es.map + + +clock: sync=realtime, time0=946681200 # Sat Jan 1 00:00:00 2000 \ No newline at end of file diff --git a/MP4/MP4_Sources/console.C b/MP4/MP4_Sources/console.C new file mode 100755 index 0000000..2fc0899 --- /dev/null +++ b/MP4/MP4_Sources/console.C @@ -0,0 +1,213 @@ +/* + File: Console.C + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 09/02/2009 + +*/ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +#define CONSOLE_START_ADDRESS (unsigned short *)0xB8000 + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "console.H" + +#include "utils.H" +#include "machine.H" + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* CONSTANTS */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* FORWARDS */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* METHODS FOR CLASS C o n s o l e */ +/*--------------------------------------------------------------------------*/ + +/* -- GLOBAL VARIABLES -- */ + + int Console::attrib; /* background and foreground color */ + int Console::csr_x; /* position of cursor */ + int Console::csr_y; + unsigned short * Console::textmemptr; /* text pointer */ + +/* -- CONSTRUCTOR -- */ + +void Console::init(unsigned char _fore_color, + unsigned char _back_color) { + set_TextColor(_fore_color, _back_color); + csr_x = 0; + csr_y = 0; + textmemptr = CONSOLE_START_ADDRESS; + cls(); +} + + +void Console::scroll() { + + /* A blank is defined as a space... we need to give it + * backcolor too */ + unsigned blank = 0x20 | (attrib << 8); + + /* Row 25 is the end, this means we need to scroll up */ + if(csr_y >= 25) + { + /* Move the current text chunk that makes up the screen + * back in the buffer by a line */ + unsigned temp = csr_y - 25 + 1; + memcpy ((char*)textmemptr, (char*)(textmemptr + temp * 80), (25 - temp) * 80 * 2); + + /* Finally, we set the chunk of memory that occupies + * the last line of text to our 'blank' character */ + memsetw (textmemptr + (25 - temp) * 80, blank, 80); + csr_y = 25 - 1; + } +} + + +void Console::move_cursor() { + + /* The equation for finding the index in a linear + * chunk of memory can be represented by: + * Index = [(y * width) + x] */ + unsigned temp = csr_y * 80 + csr_x; + + /* This sends a command to indicies 14 and 15 in the + * Console Control Register of the VGA controller. These + * are the high and low bytes of the index that show + * where the hardware cursor is to be 'blinking'. To + * learn more, you should look up some VGA specific + * programming documents. A great start to graphics: + * http://www.brackeen.com/home/vga */ + Machine::outportb(0x3D4, (char)14); + //outportb(0x3D5, temp >> 8); + Machine::outportb(0x3D4, 15); + //outportb(0x3D5, (char)temp); +} + +/* Clear the screen */ +void Console::cls() { + + /* Again, we need the 'short' that will be used to + * represent a space with color */ + unsigned blank = 0x20 | (attrib << 8); + + /* Sets the entire screen to spaces in our current + * color */ + for(int i = 0; i < 25; i++) + memsetw (textmemptr + i * 80, blank, 80); + + /* Update out virtual cursor, and then move the + * hardware cursor */ + csr_x = 0; + csr_y = 0; + move_cursor(); +} + +/* Puts a single character on the screen */ +void Console::putch(const char _c){ + + + /* Handle a backspace, by moving the cursor back one space */ + if(_c == 0x08) + { + if(csr_x != 0) csr_x--; + } + /* Handles a tab by incrementing the cursor's x, but only + * to a point that will make it divisible by 8 */ + else if(_c == 0x09) + { + csr_x = (csr_x + 8) & ~(8 - 1); + } + /* Handles a 'Carriage Return', which simply brings the + * cursor back to the margin */ + else if(_c == '\r') + { + csr_x = 0; + } + /* We handle our newlines the way DOS and the BIOS do: we + * treat it as if a 'CR' was also there, so we bring the + * cursor to the margin and we increment the 'y' value */ + else if(_c == '\n') + { + csr_x = 0; + csr_y++; + } + /* Any character greater than and including a space, is a + * printable character. The equation for finding the index + * in a linear chunk of memory can be represented by: + * Index = [(y * width) + x] */ + else if(_c >= ' ') + { + unsigned short * where = textmemptr + (csr_y * 80 + csr_x); + *where = _c | (attrib << 8); /* Character AND attributes: color */ + csr_x++; + } + + /* If the cursor has reached the edge of the screen's width, we + * insert a new line in there */ + if(csr_x >= 80) + { + csr_x = 0; + csr_y++; + } + + /* Scroll the screen if needed, and finally move the cursor */ + scroll(); + move_cursor(); +} + +/* Uses the above routine to output a string... */ +void Console::puts(const char * _s) { + + for (int i = 0; i < strlen(_s); i++) { + putch(_s[i]); + } +} + +void Console::puti(const int _n) { + char foostr[15]; + + int2str(_n, foostr); + puts(foostr); +} + +void Console::putui(const unsigned int _n) { + char foostr[15]; + + uint2str(_n, foostr); + putch('<'); + puts(foostr); + putch('>'); +} + + +/* -- COLOR CONTROL -- */ +void Console::set_TextColor(const unsigned char _forecolor, + const unsigned char _backcolor) { + /* Top 4 bytes are the background, bottom 4 bytes + * are the foreground color */ + attrib = (_backcolor << 4) | (_forecolor & 0x0F); +} + diff --git a/MP4/MP4_Sources/console.H b/MP4/MP4_Sources/console.H new file mode 100755 index 0000000..aa24fda --- /dev/null +++ b/MP4/MP4_Sources/console.H @@ -0,0 +1,113 @@ +/* + File: Console.H + + Author : R. Bettati + Department of Computer Science + Texas A&M University + Date : 09/02/12 + + The class Console encapsulates the output operations ot the console + screen. Since the console is initialized at the very beginning of the + boot-up of the operating system, when no memory management is available + yet, all functions and storage for the console are static. + + The console is initialized with an "init" function instead of a + constructor. (We don't want to deal with constructors that are called + before the "main()" function.) + + By making all functions static, we can access them across all object + files without having to declare a global Console object or pass pointers + to a locally declared object. + +*/ + +#ifndef _Console_H_ // include file only once +#define _Console_H_ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none -- */ + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + +typedef enum { + BLACK = 0, + BLUE = 1, + GREEN = 2, + CYAN = 3, + RED = 4, + MAGENTA = 5, + BROWN = 6, + LIGHT_GREY = 7, + DARK_GREY = 8, + LIGHT_BLUE = 9, + LIGHT_GREEN = 10, + LIGHT_CYAN = 11, + LIGHT_RED = 12, + LIGHT_MAGENTA = 13, + LIGHT_BROWN = 14, + WHITE = 15 +} COLOR_CODE; + + +/*--------------------------------------------------------------------------*/ +/* FORWARDS */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* CLASS C o n s o l e */ +/*--------------------------------------------------------------------------*/ + +class Console { +private: + static int attrib; /* background and foreground color */ + static int csr_x; /* position of cursor */ + static int csr_y; + static unsigned short * textmemptr; /* text pointer */ +public: + + /* -- INITIALIZER (we have no constructor, there is no memory mgmt yet.) */ + static void init(unsigned char _fore_color = WHITE, + unsigned char _back_color = BLACK); + + static void scroll(); + + static void move_cursor(); + /* Update the hardware cursor. */ + + static void cls(); + /* Clear the screen. */ + + static void putch(const char _c); + /* Put a single character on the screen. */ + + static void puts(const char * _s); + /* Display a NULL-terminated string on the screen.*/ + + static void puti(const int _i); + /* Display a integer on the screen.*/ + + static void putui(const unsigned int _u); + /* Display a unsigned integer on the screen.*/ + + static void set_TextColor(unsigned char _fore_color, unsigned char _back_color); + /* Set the color of the foreground and background. */ + +}; + + +#endif + + diff --git a/MP4/MP4_Sources/cont_frame_pool.C b/MP4/MP4_Sources/cont_frame_pool.C new file mode 100644 index 0000000..f12329a --- /dev/null +++ b/MP4/MP4_Sources/cont_frame_pool.C @@ -0,0 +1,162 @@ +/* + File: ContFramePool.C + + Author: + Date : + + */ + +/*--------------------------------------------------------------------------*/ +/* + POSSIBLE IMPLEMENTATION + ----------------------- + + The class SimpleFramePool in file "simple_frame_pool.H/C" describes an + incomplete vanilla implementation of a frame pool that allocates + *single* frames at a time. Because it does allocate one frame at a time, + it does not guarantee that a sequence of frames is allocated contiguously. + This can cause problems. + + The class ContFramePool has the ability to allocate either single frames, + or sequences of contiguous frames. This affects how we manage the + free frames. In SimpleFramePool it is sufficient to maintain the free + frames. + In ContFramePool we need to maintain free *sequences* of frames. + + This can be done in many ways, ranging from extensions to bitmaps to + free-lists of frames etc. + + IMPLEMENTATION: + + One simple way to manage sequences of free frames is to add a minor + extension to the bitmap idea of SimpleFramePool: Instead of maintaining + whether a frame is FREE or ALLOCATED, which requires one bit per frame, + we maintain whether the frame is FREE, or ALLOCATED, or HEAD-OF-SEQUENCE. + The meaning of FREE is the same as in SimpleFramePool. + If a frame is marked as HEAD-OF-SEQUENCE, this means that it is allocated + and that it is the first such frame in a sequence of frames. Allocated + frames that are not first in a sequence are marked as ALLOCATED. + + NOTE: If we use this scheme to allocate only single frames, then all + frames are marked as either FREE or HEAD-OF-SEQUENCE. + + NOTE: In SimpleFramePool we needed only one bit to store the state of + each frame. Now we need two bits. In a first implementation you can choose + to use one char per frame. This will allow you to check for a given status + without having to do bit manipulations. Once you get this to work, + revisit the implementation and change it to using two bits. You will get + an efficiency penalty if you use one char (i.e., 8 bits) per frame when + two bits do the trick. + + DETAILED IMPLEMENTATION: + + How can we use the HEAD-OF-SEQUENCE state to implement a contiguous + allocator? Let's look a the individual functions: + + Constructor: Initialize all frames to FREE, except for any frames that you + need for the management of the frame pool, if any. + + get_frames(_n_frames): Traverse the "bitmap" of states and look for a + sequence of at least _n_frames entries that are FREE. If you find one, + mark the first one as HEAD-OF-SEQUENCE and the remaining _n_frames-1 as + ALLOCATED. + + release_frames(_first_frame_no): Check whether the first frame is marked as + HEAD-OF-SEQUENCE. If not, something went wrong. If it is, mark it as FREE. + Traverse the subsequent frames until you reach one that is FREE or + HEAD-OF-SEQUENCE. Until then, mark the frames that you traverse as FREE. + + mark_inaccessible(_base_frame_no, _n_frames): This is no different than + get_frames, without having to search for the free sequence. You tell the + allocator exactly which frame to mark as HEAD-OF-SEQUENCE and how many + frames after that to mark as ALLOCATED. + + needed_info_frames(_n_frames): This depends on how many bits you need + to store the state of each frame. If you use a char to represent the state + of a frame, then you need one info frame for each FRAME_SIZE frames. + + A WORD ABOUT RELEASE_FRAMES(): + + When we releae a frame, we only know its frame number. At the time + of a frame's release, we don't know necessarily which pool it came + from. Therefore, the function "release_frame" is static, i.e., + not associated with a particular frame pool. + + This problem is related to the lack of a so-called "placement delete" in + C++. For a discussion of this see Stroustrup's FAQ: + http://www.stroustrup.com/bs_faq2.html#placement-delete + + */ +/*--------------------------------------------------------------------------*/ + + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "cont_frame_pool.H" +#include "console.H" +#include "utils.H" +#include "assert.H" + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* CONSTANTS */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* FORWARDS */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* METHODS FOR CLASS C o n t F r a m e P o o l */ +/*--------------------------------------------------------------------------*/ + +ContFramePool::ContFramePool(unsigned long _base_frame_no, + unsigned long _nframes, + unsigned long _info_frame_no, + unsigned long _n_info_frames) +{ + // TODO: IMPLEMENTATION NEEEDED! + assert(false); +} + +unsigned long ContFramePool::get_frames(unsigned int _n_frames) +{ + // TODO: IMPLEMENTATION NEEEDED! + assert(false); +} + +void ContFramePool::mark_inaccessible(unsigned long _base_frame_no, + unsigned long _n_frames) +{ + // TODO: IMPLEMENTATION NEEEDED! + assert(false); +} + +void ContFramePool::release_frames(unsigned long _first_frame_no) +{ + // TODO: IMPLEMENTATION NEEEDED! + assert(false); +} + +unsigned long ContFramePool::needed_info_frames(unsigned long _n_frames) +{ + // TODO: IMPLEMENTATION NEEEDED! + assert(false); +} diff --git a/MP4/MP4_Sources/cont_frame_pool.H b/MP4/MP4_Sources/cont_frame_pool.H new file mode 100755 index 0000000..687a66f --- /dev/null +++ b/MP4/MP4_Sources/cont_frame_pool.H @@ -0,0 +1,119 @@ +/* + File: cont_frame_pool.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 17/02/04 + + Description: Management of the CONTIGUOUS Free-Frame Pool. + + As opposed to a non-contiguous free-frame pool, here we can allocate + a sequence of CONTIGUOUS frames. + + */ + +#ifndef _CONT_FRAME_POOL_H_ // include file only once +#define _CONT_FRAME_POOL_H_ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "machine.H" + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* C o n t F r a m e P o o l */ +/*--------------------------------------------------------------------------*/ + +class ContFramePool { + +private: + /* -- DEFINE YOUR CONT FRAME POOL DATA STRUCTURE(s) HERE. */ + +public: + + // The frame size is the same as the page size, duh... + static const unsigned int FRAME_SIZE = Machine::PAGE_SIZE; + + ContFramePool(unsigned long _base_frame_no, + unsigned long _n_frames, + unsigned long _info_frame_no, + unsigned long _n_info_frames); + /* + Initializes the data structures needed for the management of this + frame pool. + _base_frame_no: Number of first frame managed by this frame pool. + _n_frames: Size, in frames, of this frame pool. + EXAMPLE: If _base_frame_no is 16 and _nframes is 4, this frame pool manages + physical frames numbered 16, 17, 18 and 19. + _info_frame_no: Number of the first frame that should be used to store the + management information for the frame pool. + NOTE: If _info_frame_no is 0, the frame pool is free to + choose any frames from the pool to store management information. + _n_info_frames: If _info_frame_no is 0, this argument specifies the + number of consecutive frames needed to store the management information + for the frame pool. + EXAMPLE: If _info_frame_no is 699 and _n_info_frames is 3, + then Frames 699, 700, and 701 are used to store the management information + for the frame pool. + NOTE: This function must be called before the paging system + is initialized. + */ + + unsigned long get_frames(unsigned int _n_frames); + /* + Allocates a number of contiguous frames from the frame pool. + _n_frames: Size of contiguous physical memory to allocate, + in number of frames. + If successful, returns the frame number of the first frame. + If fails, returns 0. + */ + + void mark_inaccessible(unsigned long _base_frame_no, + unsigned long _n_frames); + /* + Marks a contiguous area of physical memory, i.e., a contiguous + sequence of frames, as inaccessible. + _base_frame_no: Number of first frame to mark as inaccessible. + _n_frames: Number of contiguous frames to mark as inaccessible. + */ + + static void release_frames(unsigned long _first_frame_no); + /* + Releases a previously allocated contiguous sequence of frames + back to its frame pool. + The frame sequence is identified by the number of the first frame. + NOTE: This function is static because there may be more than one frame pool + defined in the system, and it is unclear which one this frame belongs to. + This function must first identify the correct frame pool and then call the frame + pool's release_frame function. + */ + + static unsigned long needed_info_frames(unsigned long _n_frames); + /* + Returns the number of frames needed to manage a frame pool of size _n_frames. + The number returned here depends on the implementation of the frame pool and + on the frame size. + EXAMPLE: For FRAME_SIZE = 4096 and a bitmap with a single bit per frame + (not appropriate for contiguous allocation) one would need one frame to manage a + frame pool with up to 8 * 4096 = 32k frames = 128MB of memory! + This function would therefore return the following value: + _n_frames / 32k + (_n_frames % 32k > 0 ? 1 : 0) (always round up!) + Other implementations need a different number of info frames. + The exact number is computed in this function.. + */ +}; +#endif diff --git a/MP4/MP4_Sources/copykernel.sh b/MP4/MP4_Sources/copykernel.sh new file mode 100755 index 0000000..afd49c3 --- /dev/null +++ b/MP4/MP4_Sources/copykernel.sh @@ -0,0 +1,5 @@ +# Replace "/mnt/floppy" with the whatever directory is appropriate. +sudo mount -o loop dev_kernel_grub.img /mnt/floppy +sudo cp kernel.bin /mnt/floppy +sleep 1s +sudo umount /mnt/floppy diff --git a/MP4/MP4_Sources/dev_kernel_grub.img b/MP4/MP4_Sources/dev_kernel_grub.img new file mode 100755 index 0000000000000000000000000000000000000000..4108c01a42ff112bf28753779c1da1f9d8deec42 GIT binary patch literal 1474560 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

G#$)C4c8xEy%+MrfBP!9Nm>Q=wxy3WJ_U06Yqx z30BVumm4@Pwxpav2X$&Nc+%=gf~E1+iAqwebYorMgXsK4chEG;kDP+f&5 z2T%57Dl86Km3h`EH$H(klmqjTUx(n$V>hlxCGaesE1G7crWw&ROi2yi6`&y;T2Dh~u*~hSY8Hi< zo7a?o-1~FAwns_G77$ra$8weW0nNwwg2iTX%Phuj+z4$*2+C zKoG)NY1Pjv(@xl=cRjgJ9MzEfbn3-K6&g_W9Z^R)5614Qdhu}}6SQ#ZB{p%tkHxV( zY+JO4dLEP{J9b9kHCHlVlm4D`gH#uxR_vyN*YbjNG~oC12!x%8faMqzVm}oNh}``3 zq*Ba7Jcj47c~T9C@#=YghQ91Mm11rgo9D%J#5fahKoL&|#VknV8T9;>u=oq+Q$Pt= zoHvREa6ooKo5=#e8XG?IBqk+F6Q(wb`IM6>h770D=Lh_g(DZP;&ZWp#MIOlNVz&~gfYA*K>^pWVQ4O>cnb(jnYM3AnmGAkMpN?zHWmei2s?7_b z6mBSLq20;o0EU75o^{0`e;u|X=W6BF{JsrmDwh1^<_%MEXQx(WHI-*fsj}t2w;@GI z%ip)&qIRlpEz(kg-nq0t%j6i&?^)Z4Ltd?c1M5??%!9v#D&BX2!#Zlkic?}jV1EBc zX!g~pnLZ8dDf*;lh*1wQi~fY2tQ6Dw1Rm@@WKg?RzNI>BA(ZJa?-leiP~aLDdyX>D zYL7Mr+ksExt)e~Cy{(j4GX-zVF=Ga`-(SQF%Z-nqyujr{jD?*nJ%J9S6^rSw>yd;4 z44t^Xo4W>j!>(l#jG+0n{O)ygLwp1G=~|gtb6HJg8B<)g{2|cDnm@1}SGuY1h`OP1 zaE(m&+BX||aL6<6eMaUA770a?8JBqeJB7(37@z=x5s`o4C^$9QAcp6f`90Kcy)$W z;Krk&Ta;8JLDbPDYA5-JRx24__ZIi0UKre9P`?h*LfJ56WuQEG)m;BjTAe9)Rdo|C z!-G0L99$V!zsY}Xy)3s+!2u{!)1)OO`LAvGTpc*kuGoXoARbgQB2SDo98``mlre$cH8ape+>F+U9{$S03i=72vU^}GK zMGKH=B^ zkH-CS;9A02KUTwi*u1|h)?lqIx-LYmur!@g9`(Q^qZT~LTabbKJvUUM1&^Tx#F_75 zOX(=)cc2>pbM@T>?iYkWwv>``U%sS#h1JjI)TR^^D34CoWW1y15UOaNR07I+m#?9IBWMdGbhGARcZY!8Ixx8|c_*EwC(wU~VLB zI5BAU;eXtKYVmDOP5AD`Dlmx+&O%b&+}_cA&fv61gVTP|c{rt^n~J!C*FI_qWX~mJ(vfg)^*5AZx{WdpgrfsXn~dc68BOQn?RkXkm7upo2T9hta7LkLsM z8DBTRQVP!f;z1FQ}aQRlbtSU`AmzzC0Cs+FVf z<-V2QU7H)y%8z1yGrAr4FsPL?+UXoMA?##7;nP1`S;5NTjeRFjRQG4Xuvh=0)eXSu zQ>&E^n#$ooUsj(ME~hO}QuMUo;y=Fh{iRQ*s{6kFlsl+Z4diwSj6f^3G8WCtdj)A`ZTY~JK__;t(#`FVw^FTY(BJh(h@SH+ZRK$8 zTk6Vz;6lSOTF$S*Ik}9W`Sj@d|At2E_{`9@2nS>_yk>x;XBVtIvhj`4&r@>y)NYQs zos}c=B6QLv%4h!ga>Xt(6_g*T#b%trH4CB^dfC|w9cV(>PGh8GPhj%T5D~pR^sG@i zU5#BpVj|?tDdepW)5+*mxWxG`bt`)vHY6%8<9YMDH%1a&d`u6)-e%OE&bIKpyh}jz zxo?0jR}eW#^OMi67QG4CtJx1BZMYP5$&p~zM6K*7Dk*SU+G`^*%cVWPXi5on!YSZIENITdNpv1L81 z*h1`;K9U4~UAosq5*r zpNhlpy!PKC@`Tz8L0_1Os^e(bagfG0TzMcpn2P1s#ZYT%B^Flr?8SuY#pwa;8@YxJ zLL5}A@$9u@3wm)1wr9)?J9wbz3i_H9b{wGqw0)0{(rHCV9D;?ASHu;@c2c*pP%ZQa zm&74ZCh`gS>^P$zfC{WTW=+`lVrxAE$h98JwFqz>q)jB)>Cp>H*joYC1?N`76L%vBkZ4G9e5o$ zR!7(Bpx<~vRskRZ8nyO1Sp`7<7l8e>Z%Z4~(I~AFtuz(|j>(PxLTP|s4e$}}(ExNT zDkEynH;6ibWPyve>1t2z&N>(Aj?XZrbUwMSzB7xG4oRs#6k(a<3OjLzv4gR=Dl-N{zP^zWf zzQBr$dnS;IUQ9h1F`OC)u@4tldx0TNb`76YVrEY>Gbr(cT)rO`$#JYcf|bh-Uc;^y zF&H^+h%Y-BY1C`lSa%}a^Ad2sftVA=PlP*1hr4VP?$^hJWOOL_tr85YFb~kbt`jY% zU^ys>-YU))Bb}@dw6}$m)aH*{y>seQ{c*E*a`Y;He5xX@TZw!Q1i>fbFnLr22N#1# z(M81Bx`m0j6poTeKTkL{qvwW#i~9Ysl^bTLu_nhMH+r30bsR#GpyLq9&~)yBw6SGq zr5YB4O)MQYbu3d33~?wV*SW2Wi=`Z==y*_YP2R zN!0gwawAN_is^)K*6(MhoP>B{#Ebw2mPM)ea*r=s`? z-Z?ntf~9->vC}Z)?v0v)rFLOcpgiVhST&5L(Vl=z0-mnudvoZH9X_kzdp~eJA?|d6 z>)?#$iOr_@owZhKNF1kf=6BZVC9I+Hva6I2@;VatD2bBG=o%$>F5y2c&3~^p)mL~i z=0+g|Ct$8*zPN<;zklAda7J80Tt<)iVtxITFwiMavIq4OozXm{*)YE=QTx=;{H{dp zSQjp#dE(z`>eYvm3A;&Ps%4YY@>rL_Yh};lY(#WI=vbE#JIswYkM3y_ITQX?3wsLr z5)yA=U#&{c!m;}ai?PSk#figA_Ay#VygHt#;QW_UAIYN&L%0Y*nbblNxWi@M;#LYp zFASD(eQ>tFh!6VSQ*i$Z5|-D|iY@J^ z%8Cx1uwel-R&fop{|c>^VYh6e5;78Lpod*LQ@{~kQh{guywp(mRFw&TJn5GlkyLUA?RfK@1T$j|vY z8T*OI?w!rxLH$nrMUuTDv% zD^rqoNaQ;31GDL=yhw!{xDwy68*pzHHj*7&jB6x%6UtK9>edA9Q<(z{i>86<76$zd zg6lbsSxO<02CvTYXUIYpt39U^v3~Svg8H;b57AEzp`UoClr$SJH+To>x)gD%Q8bPF zF@e!2x43jh4Q1#KxV}gDQdmZ!W!{hBTfqfliQNFSOaytU%|OTTo}vCl9SSv{hO=o_ zoJ=X1-|hV(e`x&?-w$zz!Tah!6uag}J(j>M@0F+lC{Y)Vso1!Qu>x`ge2eI6$GX`? z{IbAFS~fW|I}fG9$=9{^6nJg8%M200Mhwma@%*lJ`aYg%AdIgxuX5SNFZJ>FxBcmy$T`i6>>kD>;oQGATzzeKzR z@!n6y_|4l&ASJjR4u@pgiV<{rR*~3Te^mDc32!pF2|j=%@Z0Nfu^c7MDgSIX zH96vtf_6Ij46j3vSxW&aXMzHB%DG9HBrwp@njP^bla>`Bm(GznkG%KZh_%icv( zx%OkAHSFOKd}!>sPsZL5faEm>I_v`(tMb@?1p-a_f@emgF9vC zu`;WHv^dQ|sG-r{z+ar41F_Wg5i+tPBy|+;{_M%Ui8)Z>LsA$`N@& zyQ|UeA{0ZdYpkN(pn7Bm@{J0CkOE;P;aFi-u+bQY6-T$EV3M<6e&lcX60Q6QAwdf) zRl;70{4Yd==->ri$z#puBo|lh_o6*ccHb{~8^Jl;S!h+Wi6zM`>iSWT0dy_$aKp8i zk^7cbJCOTM=bm!fKgR2{RjZcjgJzY-@{Ep`L)A!G+?SREcl>#9_e0e z&8pxV-BA^89c7n7{?JI7u47aY6j~}S`DrY7;(vFc48FUSGr>qW44k-rY>?bwTj&>E?#oWqLu;_6H;zc!Jl9@D2`Y-Xy` zlK}t`I1Nw%FBuw;Q^6j9IskZsBPZ99WvI=_t;OC(vTYMH5m+ulHOh_o1Y7^$7eyo- zUdg@zV-AYE7IKn$Ii~Dc)m5hHF9TZQf{oiCx1&M|Joq*$vVF_My?yk15x7UGXjVP8 z=5DymHxyU$=;l9|7Gf8DYEc|B#|_i4LY7f`)2? z+Bo(zK2A>){hiL9fVH}T1@9t#iCZQTHi`czwUhRyVQ&?!F`=DwH0ImwB-g=rwUf%S zyTuF~?W9#@+{Z!VWk%;=vrnUz+M?+cZl&;N|F#_j4ehu{v}584?Kl~8D>IDtfJuoP zhk<3ns!=R#D;$2za3nd->7Gxx^s9!oQtUD=HgL06xkW3@^3OMH(0c{VOd}IO6>v7b zc9zapEGppFDl`e^dpVAxunp*~MMt~!3>e724kr&-c`1VSt#U(6nXl2thtN$Cb z95_m;2e4vz+*JQV-tCA|#W}da1xt}7hE_Xd4JEKLUN)<_(bfgn=#o}+NpoR9S)eV+ z(Oh<U#NC#rS>p@VrZrZiP^s)g&fmKAqQrIZjn?xbS+4XiF}P(Lz*k2^FuT6h0s{3 zF+wy}*tEqtnsb^qneL$`xv}xq7*rF{V{z7rX|Ga2gFkMno6gCVp#fuycalFQdozjx zsLgA^;A~jLQ>~pJ+Zz5#^Gn?|a-xLL{3wIF`iK2o$=JOL7StQ&1Aoa2k4lzi8@+yO z{X}u~mN$id_-W(yNF`RKgr#RtE4+6FP^PFlRY+`!+Bas{I8%ME0lg46z6{aRI}z1r z(%BTowK23ps~@ceC=Ltb6dV_Pq~vR-wA2#|`uSCHLBF^%%P%g_@(&|3{Oss39vbUB zj2^>y#Q!vaB>jwCIzlQgbhi8pDXRY{Qsf;LQl_e(;X~~m^&BMcO{=wvqpJY|q|-?3 zMq}+@Iw_Za*c76>67FFO)h`+@*}+Y^=j06{X@83tsa4fA(Ak;aUDe#-HDReKl=)z5;i~% znx|9M>Cwm>dGmeVN^LsT5cHFYjWK@xl!oKKMLGN?MlbY8{{D(Y5Hq7;H)SK+MEL{2iP?dj3OEEV z38Sp>Bi*bZyt4U#S2H>(xdcfS$0 z`2L@BhrmA}h4 z4VD;!CB22XYv&;X-epvICP751Z`3wCNa?_f*cilAja33Ku3f}0g>f}jG=g06!$e8^ zwqP(sokZpG13LNU&sNOv0g}_S*9XdB5Zx_Z*y*!d$Q>kGK zNfVJ)NF>ZfSQLB^OL#`C>@E^!>`G^k0*+2`MIVI{cU!nxNb|MEK%Ev+c&$ef(x&r+ zE`8`UL8lR0fI$z%`Vv)#lfa@M8T0nw8{q-PlS|@(E0VGa)w}Euz7IojKFP?iQo2U4O&QmUgj&QM;(2w*fE8WFS z(nBgJLWU^)ronPH5$Hu-;-2sVetVTNOPpD^P&1TMeM58TE?Pcy!kSqTchx9os620y z`hbRet>>e@sD2IQOOLBMoMneLBGQuMn}QMJV0`CL#}?c={TFgix!l(;?uDEE@W zz8QLp9q9u&LVy%Do$`c8Vs;n5lph4~tV5n?8lR;+K-sq;J93U0%Sd5*0+jYMq+u!I=wnTipimco{(Bz1?UKOOe>9-H1m=JG-JhNjJI|hf&R~TIO@B`+!E=Xr+g%H7<0(a@~RvMJkkRQM48NpSy z9LpZbP70Dr0{lG6FRHjyxX=g=Zc@Z_7X`5tlPTyJ$wv&%=o2<`$V&>Z;Rr@>I;KT8 zUBUf9T^2Ti4H=W;i00_`&4;$nLTA#mC~0(4cfg347E%Z>rUF->D8I*$ljaQ~P3UjD zePIWwIQ-a~cZ#oW#G_>T>f)<~V_bC{)M^iQew-Rzi_^P(lr4l6ieMHR&lR&`Ef9BW zVPz3ZAV-}QY__J$iZTaT#V;Vx8b7?q9+Y=_4x{d1%@G%SkJpbbszT5B_uAuFNU7~h zt$Wh{nGY-ZK8!!cwfNGMe&2%g zyeZ4^REDsA8go{$KL{@Ctdj%xau$QqA^3I-Jsbka?VImW(t1*6N61)%*Eg3>wQ#0c zsb(u;yxT4pmR-`~DAFyCc|tT%koXJkIN2ot4s;B}Nwft6)iNXlY)?7Plax>$N!CP& zHDB=?uZUIf31A}5<&fm2aSC#aUdAs}Gt;NiAA&Epa5lf=tD=g%CLC3fkBMKj?c{9) zd<*8tf!7Ety3LYHff*-ZSo3IA99M%drUX@Q0ArF=E#qtgv2KOLipDH}#tVVMa|DHj zv{$jK1OlUEP7@_XGMmMV_oU3B<|k;RVoE-ia`was-}pKdYEs;LQtX^+wQ;X1Z>q@B;5Vth}9CI7eSh>u|C?$VruVc-QdVJKkFhIN^Uc0}`%AMyivT1CvX<`jSv3Lslr3`X3)DF@|{et}37=DjT=fP4zID!gtgF^Hd zwwMtT^s?%4>;M#7v@(<^2q&fRR_cCia#DsZ`x0!@!Jmb8B+f-v!`rz@csn`iQdtv$ zgspOdhnTM()RKpo|B9U0(M(jWOXt7N&`P3!ePL6?kIZFL5*Z))J$0EPivRjUZjU-( z;$l<41tM{45^eH`&}~X+2^TLqH65#}X1C)AS7bdB{6$=p&Rs?TmjdNn~pHkYJ1Q9Hw@?Ik&s> za9Zwb`CsB!+rDfee|jq|F;u&*8I#Y1AHrS=bsV-(8vW(IZ4t4@mZpVd+|T z^EZA;np%8#>GS~=fMiC`*S*~qe$N6-B5W%)|GDXZv-j@tQC8Q&|1-Hj2*HU8iWlSo zr4S7PthWf!kdOe%B_>?Fl*%NTkU(zD%y3bG;E+>>>1f(YkL@X^rqpxV)As0Tt5~a+ zfQM*nTWoqPR;$!YofxY0NR}OxrUVH7e*Is+= zy_E2#+I)*Ky6lVP3O@U9HRSz#`7a9F}WVZ9_L4~Uh@y!Pv-xpNr- z-vz@}$4ZedA)}QRs+DNu1dNplIu+VXthpMh2#s;cnOL1v1Rjt!Z~(Am?W^lK7}^zO zS(lyIB|c57`$E`60_*02P7^F~qhkb}UEd;})+{ncyiuj+u5U}IP#te#3MFiRKVdRJu zsZMSJk|WrxkVs#vvtug|0P5T{*BKy^jqqrpr0{paAg6u#_`g0A?e=^$l)nC0#G zB6!_i_R+WB@OH>#?%NqbSsz=S#_ZnBH!aj6>~1$FM#ZmyQ%M_Q8Tet@M_Fk27-a|I zqZ7e%2+nnb<+KSCd#d)uT@Qg4D;M}qFMW4p8k1j}&_Qx@LHP$V=GpG}#`dMnCPFqqXPAQUR&K_^pWt)x@iAQUoF zKUn}%y@b_U#Vp1Q2d*yp5#Sgig+D`4qC4c%Kt?V*O%{a?V}((;@Tt&+(J~al@)uodo5O0+PG3yEozaDM zbVMZfEmEnmU3lXjD|8O$YviuWiE26FSr1yl_aZyLO_ai&5-~6=qE9t#lff%As&i3r z1dxSiJ!%DyMjm@q;yxyE*A9#5lYQj8QGA3Gdpq$8A|o&NJ}my3J0(HjLacS3ijICT zZ-)e~zohg<{aW}z+dFbDTv}}5Q_+mRZrr$`#xxF^=J z2hXD5S)J+QBV)k^Tiq6gJ^)?ZnKYhv*7+}r90X;t9ZwK5nv>i8hqTC#@=ovq{>o>D za@t-(tMizAjXf>FJsonBmHe67L}Cx{{?ShPjXZV_;gQE4QvVnD?fa6<7os}^Z;>5a z`R#sKex(|bSUbLGhrCBeXWbOp@gsb?txZh3*%i-gBo^ei`(gP_i*`sU=^cW_NXI?= z7IsL^-uvDFli?1Dlrf+HMt8{P$PP)s!2;rs2|#%}*;7E+-))OM>~GRZ*if1Si5K-mJH0(uxN+WFkNfN4IffwU^3^{M6>cV zE@4tu;M^AVq15dAVW^K z%-*jc)%4#8Uzk~z8#w<5URCR?OZ!3YHZ9z{dpNs#Ff)iQ9J_t=Y!is_g?D#GNu8+$ z-6R?lD!W1{JxK<=+Gvpvq8i@Y?>2DMAYz9>fgn4Q@p5Fz%NglAwQ-dW+Fmx9&R2%h z`)0>$!4aJ^UVE{>J@6PzoWfJq}-a{kG;^F;SGq09pZGG%XxU}pDvKVjuv#=noF)O*=#}|8go8o!D z4DUNq_*!6eXFNJ6ec@|uf1zNVHE8LH_#4lk@RUQ{M87lrlXBF!O=01LbQoua+tY z&X2#%lsvVT671CSaCA(T)N-EG(mnSU7AVW7sKyx)2UYpp_*Vzz^+`4U_e5HQt2q8M{gmC5RGbLQIi;NOdh0=B@0W0-}i?p?kOz0l3q$`nPg*Q$JoK@>T43Azd zX?oww`#D6i?%a4LTOL5zp%MEzYK5S+f8wwwQL*om{N(K0eMd~pSJ<5~H0DPKG;X1i znk%vk36LsUuSqEk;srwj@lM{qxnP461>oXs}jBTTp` zls6q=FRU9M4W-1FDV)R~&vWy6iLXv>61wT#o=oYKl7Pmm7k|C<%laQ6B-aP!$3wh& zo1fTD0jDZnCbiTP(0(1du_xop2wGN2_~UV#K0v=sT6veu#9uGuU!PC!sy{+z>_)ky zDxP67;3ikc3Q^F3RV%s+5GsEIimm9*dJ5Dz#+Jh(&%vUiMbbE?wZg|U*1;wGGB1+$ z>CyJdpnZ;o4~@?hz`45&F4z5jW_aImiGFVU+SA7_<|g!%nCZkEH8^Iv$=AzZ9_f&Q zsQdkl@V*mUo|Y0Wp)8Jfq$1&`C7(;YpTB^Y86VDkOri!V`_GC$jUp`t&a}0Eie@}E z1*{;ZMLrI{F+B3Xlw2y@{eF6Q-~W`Glx;8dpO=i*vsGgVia7J=eSJj~5k8q4S`$9*p(VnpB@skRfUorK_tV1rPDT|h&hk#5*&&ti ze*PPzjVh;9)-du_xsqx2T7JGY{BC?Ns;VOlR;6MpRYb?hcMcj*EguwE#oZ~7{Srarby4I=G8B2p8*HLY zAnm&;T8=w_z(rj^)t`&k>B;cQTUQKwv*_lsI*}InTq<1 z6!l+FhcqmuwI)gv>P(cTDC>Pg%x2QOPdyho(t9lW^?Rk{nd59g!@OG7ua|0Vs^VM8 zP;wJvrHDpI04Qfj=NEXi-;pv;s8Zkq5?Z1khit!WZ3alSk%L&v&y(Eb?H z=iLt9-_V)J&zTPAeNcEDz5MZ{ULIvQ`-l?p97-8X+i_59e$E!H}4sUF&es--gi8q;D&k?xJ%L4$rWAJ}p@pYDt7+0$_X z&M%bK({U`}JA#iOEBcsxT@)QPg?<}3qW5!jyhV^UMQolq3a@O6DWI%+R3_a+0K7axvY%yZ24aeBOlp-G3Y&+xltANJjZ~k|(>rgWOCl zCVm~~z9&F*J|RiU$4P8}lP+6VWIg2VxE6{Z=n%AppO)WD*Rr1j1Z86Uk8}}ECT3R` zq|rVr-IBEx77OK?%*oGcMo{V-iLw$sDB77pVG&(mh-I8xB=;Aub#|}l*5_}c7R8d0 zN$SF^TVh);w;+Uy_~z#{PqQ#Vy4Yh9zCUAn664Z8!%tjH?iS~ov$=FxdgYu6e?q~!EfJA z4H4Tqch4g$SY!9O=(sjfoWuOQyYEe)9=x}Q?u_0m=+Q+NZJxdYNI4pl+#@k5Nzi@W zw9rVg@{)q41^<%B)oIZ16OxA&JSVkf$-daNb(P-HcP)&s6J<1e0OxM^Zi~H7=3Aea z1IKB`?uxi?uLCxwB2UZ5X`$clA5O1|<0k_)n>gXdBsBp=Vsye_lc+Pb!Q1k}MY=3| zk7J+C#!PFw7P`&bC11MZbZ55aoLZ$)FWH`xcI1%G{yUSjX|G#TJrzFZmq z3<)IC9&Uux-E+bOw|7Vdwhiwqp@9;BYQhRsq5|fGpT&Mu(hlCdyUQ~?-4P88%Wd{@ zFqrr8@?o*hW_h0(JvOrARif|D7%SaZi8THy1kcozU`p1?K>ITs>;$K1J6TwTJuOkJ z&F8ZVd-z8OcS)_OB_X=wMWJXBDJlmk3MGZNLr7T;sa;(x6WaLKe`dyMOjNA)jlTeYU&Y6= z+RwdD?fHpylD=O$#rycuUwEJTHJZB8{JQYQUhbM9MsGjoWgOZymN>lqa+gHr>r3YA zOY-%tT^R)aRKAeMf#}?fNZC`~M-D_sY0e9u@cb;YJjc5`^kVlPGb8JAW90+U#Z!8Z z#g^oHBFjfd?;M-gD}_f6Mqd2tM}Orqm#VbL@{7HXm;E9#m;E0U7Fx{XMJo0O>fF9D zZf%^1iYk1_>)m~Tcn4%>%6>k1A6fcT`qC#NW2EFK znC_RT$cBdm!h+;iuC5~Tb~`vxTJ`s zZ);PLY^f9B!hA_ZN_wVbRd0PLKQ!fPR(W3N(Y`62@k*L5a`44t(RPV})|klQkJCfB zAMW!6)3HgNB-_o!^6cY`P^M}WXKK58V>u+H*KES1Kw8D!Unsn(?-hFTE~!qJ)K2X! z#G}>1poHUm?w?9>B{9xF;8S?-$!KeS^wuenKj*#N`$n{Qv}doOi$C|ii5mE{(i>Xb zTPoxKvp-crLp)oNC0buKsu(D9?}`uxI^ezkn?RP_Zcg_*I><&wtS=cr^yHGBGBF^- zP~`w=IJD{oejSi2rbjBSOOC-k#k2T?S(H0O4zGy+rP?j+bn^|dZ|0S0p@SR- zgkh<}M1!LwP)tRB104xFUv0-$976ZWC;V7Zy&ZQ`sLO=Epf|7T zC_}?r+ZVn95Zki)mJ?_DQg+dML(SXve!Dn$QTrP=dLRE;WFbe+&ELOui}l}-G0fyo zk+K)KcyDIefsi-6@c?6l1QwRP5Tw5;3j6BFYhWQ00g_h6a_*h+YwzRtK7dwdd&byp zTeBr6^tw5l`uYT|v)<<1C7vJdea_pVRty_o7zoajyh9~U<2=eqx_kBvPs_NFgxQ;p zvX(cq?1j*!au}7jL-u`xiF(O+c|7eIr(wKXb<5a?NDC-6hi|@8Q9P&MP(|E+l5Vkg z+ktIgku>04hhM#?w<3NKAI zEMmgOS832~Uhm^8`r$4rk|n7ahWxSEiioB8-pCkXiiSIZ{LOviN#E)4(o}oG(N)?_ zPZ^3YNLY%B^y26!(D#S(jgDgc+DkcQQ@E0?I*Q!*)d-ac8Q6Aw=HX%1k_%8jp`_r7 zLTCEhlR3rlrQWz9Ge3-=M{f4Qs-qb@rtE=6l&t0kMzMO~6d z;SulsT|`OG%$K+Q-uu6-38s@^%U=bcO?e2V;XOyc`cYAkz)0^;C6t*BzlG0j^2WYu zVL#a2pVprd`PGb9>a9bNmTWpqLqu;x%w(9Do(j4Y1Rk0CxRpqXa!<&I{;8c2g)vej zaU2h>(Nma zQnCHLCq+@?osJLhwTOsmGJackDvy>~^opF+X|x#LrkK4g0wJF;IZmF2phr&C zTR^RI#Ak$}qRZAhvQYOM!z-iDJVE^<2fzA}9OV4l=vM?C-bZ?)YMBghpju;3w)Wu;6y~iP# zs`xD;ofwn;d*ntz5O93t<}tBSZWR?eOrgEuT}pamyEMxK6ZSd;STb;FrVya2Bc*Hi z{&88{^HaB07bg4D_Jzm6z&2^6M}_ud-;e^myFV}1o}RL!;h)MoV*I&EW;%xp&X)QI zXF3xbxxFe@nuQXhcehi*=JBUtz7i+C=NB4izH4Bx4u9obv^yOe#Em&;ZRWoCEZwe+sNmQ`vRmd9j_YWLVsfgE*wQEahPMis!9Jcu^Yyv`OF)i);t+Y;f|6jM96m|0E z*&Ie7x{eOE>3xMy;iBo3?9n3+>uo+%#lK980qosOJmeFRBs2M@Yam{-yS}Xfx-y>k)KGpoRO>j=aPs{W%k+m% z#tf(;{za42vx}J1x3X)HgSa zwl34dn!M2=R>nVohz)XA8svgB#yr7~_`+|F?|w7WCfOv{g+4f$H=&w) z>qna2Rn48pDgg}4QIJ%k-8dlZEGarkm6;MZP{qjWLo{rIk=iF)b_Q$Mz9Aul<_9>|+HRqOF2{q2h}8 zFY%{PjP%rdWZ$25LnxfjN@4D8V|EJuPFjOs8;Ht$YNh_XNC-$J3 zcXtUG#oJ?&vuMRsSzpK52W+^ZH4?h9f0q|`ym)|@s8++f`<#er@Q++&W8Y_>&eQ0~ zvIauAFy+NA2Hc?v#)=(Ou1-O0-+Ao)fq_z!o>o6hq6zyHSpvI3R#jY91)@q4pscXtC~3SMs-@Z? z>1S#My&c`;IG53#?NRHRVspNdQ6%2AXY~vl;O`kZIgFi8k@GkuZ^rX8W0Evb)@hnO znz1c1j1RMEdBO|316OSMtG4Cq_{Yaa$E0Cs7r~##q;Y1OOxoh5m+lnM4d5hq0e_30 zBC?&FqPIuc|&@0vEf1n=jzth?T_lKBBj(70Inf-p|YGn%Op>%l}^QKgbTw!6mQGjsNC{ zQdRQyZv7nJhZf!UJ?HbLie%BhNd(T6_#N}KG78m?-A~^8Wd*ygMJ>M<*Yn3J6$UvP=76M+F~uNtdCMkBn+v^cA~f z0wV`LIym6~hjA>AKPdckP{X}Th~Ei*&4l1#kv$WZKSr9A4JwL8 zK@*Gghhh&JA+6-H!u=c1nmOySDdZR$#XkF@PWNk-Tk2{QVIDvQIpe&$(+iJqTd7Gw zeD}mP8Cjjv5txpsWr~(PPR5DwzOmp$piVCQrL`mYW)#P^?v(}c!hPP3{~`-Ll!1Z; z5rzAMrRCvSkIlhv1>Y^)AIkc%fZe~OlNgt2j7`@(VTr|>0=Spc z>?!z)Jt#Z&`Wqd16dBtj*T@ImZ>D*7-;(x(loy?qK9G@K_*?d>g|&QOqaYMkh`O?c}uF&CfXbI;|6XP%8I~;D9}a{IbS1L2-b=!yDe+rE)l< zmR_FW%;!>1@)Qg@$iSvs1#2vf+135eLa`f9biV_{6=|{7v5`N|c%`s+V=*UBF{-V* zE_5yzV$CeeSyvDm!9`gk%X325Gp15wemeD2Dtj7>_mlP;CBO84U7LHyxn0FTLnb|-TlI%2IIlIyHnab zQ?Q|c%7nKtD>PfSN6pI!6^7SmS)osd*R$_>s-kO`!PaLTY@z1&?k*mREp90d?-@&- z?s+shqaQ+rx_%=!N*s$`EqQk3@Kacx5xP+)Ma3)_?dv{1o&!BE=7VS5IiPFCuem~O ze5kPSxpfzCPX{5{ms-w7>ggvedJ>1hy+~%?iIJr=aUwv?41yFNfWu6r0z3!7n2RW9vO^E+wLO zchxzp7bSom8NNGbAb4)yHrinO&E7qI8QhHw2MygdbK{9Xh-(W}@rFITqj;k)m+FpF zQ9PgzJSw>|{o!}ZUaS4Dth1vSZ=Ik-DH{j!_If_%l*^;hlKhJJ2Y+F)ze~HsiK@u4 z^h`--bQmxFE1!g+b|!$!0l1UFv3)X4?@WQt^s0O5E)%)DX2QpEc@JvDWNl1M#73u*oNUsHzUOR4!lX40O(S|l)_a`U zv8oX#Q(oH_;|pY>;A}@69UUX3n^r5y@NT`ChD|O5$tf{xB}iEbO3aOWI>Z`=Dq&L{ zc}(Uhk;h~*(W8?9+Md~vOp|3Y1@#~|@lt^SDv!!|HsgrXl@=q7b_q_syT@{j%MlL0 zI&MA02-fjek`Cx3AgmTSneL8iu}kSYpLCtk;w)7ip20dL(&ZF`bxOhtMW#P%(b$L< zSSGrCzW_$D5JBn2CW$O;Yh_Z)Z9ooBpO!hR<-Pwda2oIbNacqO7%C{`NShYkLgx}e$f@i` z=iH=arV&+l+#!fDINX-jfBp7B@0_#6yn+Z!JtUe^3R|us+M}YIvm$D{)z=B>GAg9l zg{TBBE4EdGB{w5-AN;mMS9)UUozmV$r3%Je0bHfpH{HIpNp4zkr1D=92<9$yg;XPb zKe?IGR0Lm_`J_~>aA}VBpZBo%7~MGq95}jKB%4vQnDWPN$vn(Oy?>7U>@ZQx+}pc* zjC>03%{+|tc*q>sp|V!hPjV-Vnzi%h;F#15?BILbA;_P-=bZgSMbJ5xi9*ql(R6fN zkyY1I#@UE;cJ4$u_9!MC$KH#Trt@<0(RP;lPQEwec@7c6(wT+V5IWg0-^NoHS^9DR z#7>T~9JcNvZZ|uW{)~KQ7i8h+>7lrHH@9xqMM58APx7%j3Hzq)Wgka=_g-Ch)5lqO zrI_tyqqEC$v&+V6F_@z~+VftlD&x_S@6|=dNpAA+Ao@k%XUFMdg2DfdaVOYPN$S=pp4NTWOs~ zz3)BwIiA~|d$0S=oX8~~&P~e=UfA_2W%snV3xDBHU!(du(ROi`f5Gayo$t~u8~B$0kAkuLA-I>_g34;F*RhtwM`_Nmd;viLiolP=4F$nwEaL95*E zXx~B4uo%GTsVoEEfGw4((x3_uJr(som10^cW{~#UScV4>KT6Xo_#xsUi8z;tQk7Dw zq6h0}Rb~j3=Dr0*&;;JqI6MJ|9#Y*u+xvJrbD`iRo8@@??EV5oo8UO^^Z_YV@!dig z`*Ql31oKu%XW|4k^^1;`QrU75IkE_ncw!K&rk>HyW^6AXIcxY@IjfPrR#9(1%#lMP zNuk?cFM+#DGq{!FOGeb)GP9y|VMT~TG33k=Zi-r)QNNND{kL^)FCTGT=`d*pGAbQb zQU8#H&qfludx{k-Gg(ckko-IcEA&3Lw9?Bd6Bx-(Zsi7Dl4evVMi-)@uDAaM?2Y(> zLpbJ~7ITe(;wWEiP(ae%8K%$?TtOfyeyc}JfsS(&1*j}^;j#WJ^6^PN_PqhsbUyhE z@9lTzSQ|5+{13e0yE7OIqjN9YC6tc*pD9nvI>e<6Tq!IsmGy@tkG14s=)V*3#A^Sg zC!(I{7>N`unLbH^cL{l#+T}zm?e2HSa%3GRVi^CnF+!O8?-iOfMK6?2nH8Ihz!5sK zEFRej)s-F7u9_2@n+q)-s)`3R^e~||(W{o#kNsBwdV4#hxIEvxd+tOE?0cWm*-2sT zIf;kiQ~+VsxGR^C?)cctyzCWqU%pw$M-y2ptHIyAp0HTPm!6S{_Wn8lkj^y=9lwU@ zazG95)6+dY+Hr&xY%d)-%frFInIZ1nqu11513>kclQ7=%b)`UwkwJ{%Zj7QtjE7B( z_Pa-BtR1sIGmTWa`!mlokLf%-d`b(QwLi0hmx2A6--E!x_cq49)N)juTZn>0O?)=2-LRK}rEtkWIgxM+@K`<^o!bGa}O zFhHFJXXHF$!!pk^oR)F!$WN5@j$w#+LYQx4uMB?Of6N+zi8r(;m6AV$d95BI&anZ8 z)ii5e4F_gZ_rjOgKhz&N;O<&7 zBT#O1#pq|`V10}*f(y7LsU6EGtO^C{NaBz=pP6oaUEUe z-j;dfD;g}6$N53=8ajMrpW2(#Rx>x|Y_6X1p~;Wy8wakIyyCZ;tmJN*OJ-gzg=`eA zEcgA!A0oeUlFH3Bp*Py^MiM-yRL>%myE*SQrInjh_q;oo5;py_$)5{A2SfaUi7ds) z_$8`?_-w+kAmEkUuHr>8>gtR{9sx1GQ&b%LsXmVG(Z`XO^>O%F9zXpdKjwO$wBQsH zT%q5Nna5G{IAR`$r%Hl*_+du+o){c>JA^kOUR}+#N52->7iMuKW<~6FPgVRzg_--< z=P@6M-*=rL*N*%y{P9hj{tMHuQJa2YDqF#^bLX14m}%Y;Z`h$RpP5J2QoATe{l%AP zVD6#~?@0(2i189aRLOjza7_bvUN%eg3< zp4Adq0sHRymqre*8ST>F?Mgtb04 zIJTVKVAB#n(Oz50=O@e+A<$g8xy2hkUcOnD;=Ioct0;FV^0TIVjVb7)!SYRGpT-dYuSh#2jd086^dopjuqx`U#mX_=N z%0^ej|Ls97vj16WeXjf9$`4NbsEl`#IfT~#y-xQ|Dj1&RAb;T^^?5t~k(YS>HHrJS z`m3Gt?zt^KhTxfHuLc+EDI>vo(J=xE=W5@#iCj3R@}`J}xcQ5`GjO%Usi!YEr;R!R z#RSB^99B@{{x9+54#5ZFGw{v2C=~6mP}(fQQ0BL0pc z3ZXKaGn8Z?Pcz*I%aY4ikFTn)mqI_(;bc0nacziX5Wn|}3I<%7r6s+ubo4Fp8pFU` z#BBXDh)G^D8ZV*!Osjg>b9&cRk^_~M<{G&AFu(Epm@v}xE=ve)bff1yDa`o^Va@&7 zPYO?d!f@mhoU+|6Al`kiCUxt{8GHgKa+8vqpmK`pmbm%%X#Gk~8R_RtTNhz{o3Lw? zwy!_Lm-sZ37hRk~DGtJ(Q$Xxd6^fizaS+bkC1A(qT<58XpGW_MRyyMoshDZ)qdmrm zx9_oG+SXd#qgve~Qr!lFM6no^8;Or~2|UFtbbXhP|F%Ud)Stx(rfSAKH1!plIzcUx zX04_{06UfhET#8W#6J>>9wo(q=J*8OWb(#ob&3gZM-G63hWPLAM+X)khvcs|Uk*Kc zzpxd|4~1iwKKea0|hDKelQNh0e`#f=yP0*9Mz@c81AkS2RYcz*kw)nG5fAX{5 zj$J^+7QU+?VMc!L^TfL2(RyQ$uZb4&UdNm&{9 zky21Y*G-}0fe%?Ej;xTXsJ3~~$2a)sK;aZ6DP2(VohpgN=lR^c$#IZ~j*P0JH}4EGID^k+!=GBAMRG(@3HrD zer>pHG$)VdlA?cEcw??5>!#$X`c)_*{yoW2*3KCvW=)tv_UF51*{| zZhcuMWQLD>JNiI?!^^!}UlnYeZ1r|5Ac_EdZ1osKlMy<^E$Xjy!+b{?A!Zn*oh z`iG?>j@5D4#)`g_PbzNym3bRjfxTyn!1>Ppbc=7tmO0#it4?I)^Ucp(bT2&FlSui~ zM9RY=VP4e9S=z%&%Mrmp zeb(7l=ylYxI%K3)NPO_b2}i5CM(0=cM9U|Ck*FX*Y);b}Tn03EsH zJL8qk?HQjgrSxN*P_a2jEvlX4hLv;=q?f&bIFq-x62@^rlpOmFVX%2x?gD>;w<}h> z;8_70?7pX^&z5EuM5+Y;f1aKipFLG&8jPKI(~%C_9~l;nl;yquY+jO_edr(% zPzpixGUMFdy96tC@{;n-crQ(#kO7JmqjEB4YE#IC250@Zm}Pt8C#)tLri5noILDg6hhbji4c1siwQt9aRC zgw04#a>VMpiBTabTK3&V|L$}TZB~ttYIHec@fFsfxY6!&+@3iw>ocK|OvZRvhF2`pROT$qIJWAeqc|ucWW2kXlWKFqq0NfsAto; zob2Rc$)+U;q~2Dfby=t}6SC#0v! z{p3fjPyzSP7Nw*KDcj)`)(XA9G8H77JDr~ta0kkcZcp2maYKo8`M*fwSLvOmCZo*k zMLOptpjW}pcEJYPvcnh+04>({`|lNiX( zWQrWzC!B-4t&POxp;cPx-1rcMgv+W~(t)LJxs{iOBy8}9O}cSW|fc9pNlYHn$3@-L0}?bKRd&}Ze_jV-=fUu|uhlS`23lLGp}$5NccbKk22iBEwIO+jC^ z`ymi)OT0~~_SNQ*aF)Pzed6Z^g8a?YU(*2OY5xSuL>o+PYN-u1`t4%dR8fBI>J34E z;7rN2mIgl!%?-h}+W(WZ0?-|kYV-B~3M=2TCIu$dUNNcGee&gw=~E}wuF!x~@1$A{ zo-(PXmgvO8)mVAfDYdL@S6UrkGMkoF3k2C5ogP~o%iSW~CgwY1gvojev$nwCGPaIK6zzs`0d z+YJFb(CV*gsB7@o(kbd4i0p=-Ex9#RH*UxWWItcpG&_OQ0NnHtQF~JD-lbwt?!GMZYo>NE8BN_n>+grMKr;BRbfS!Xpitf~)A6;{;@H!yE){#wUZv%%Nw zcvrykHB(o$`8FgX;H_?JS=Vg2*-1v4g-NW*svCVZYoOzX<~5?PJ>{>o z-q*a!RKLmJ9I|U#8e7@|1@;o~p?-VO;>v}y7f92G0{&Vd7rUv2UPP8s^Jc|}q|H|} z2_j9xdGqJaTYy`VNE>Xi>p_54Ta!s1LUv9A)P&jsWZ&9Cp9Kc!cSB3aZfSx_6PY>G zE5$T4ul2VDfytCdZ$1sI5;0LIaivI8J!wwphGae`2kJPneD1W8xf2WQ^0``_5*|PY z_pNSeY^ZS}Hv5|V066<};dWC9>{LUH)Xi|1fd6{f4-JveBjnGwwSn?&X{>ykX3Mvo zHY9>HDZ_*kinOlC~CoMJUZ}u{#p&yTW{M303)*=0$+5D>6_CkMC3xY_={KZxFeAs+jov$X9o1U4&*|U)q{DFYI(AWBZm3~3XI{0go z0&u-ODRgtby|lG85oAxH*-X3F)Hk#W_pEPe^yg_*z_Raf0jN|)F~=XMX=`W=(sZz} zwgzDVO-=sV24Bz*71gx}o3p1ld{Mg2HCIioZV2WfK`agUsu^i3XD_rW8ARFyg~%V1 z0@vGii7()H>&mN29=F<8%`LI7Fv3VSG5K5IZ(bFwCk9oq-3WM9N;wT0=QIRb8+{vK zGIaI1l}k%#P)O3yQeZ43un^t zb{7l~5nOzs=Xy(73@2yGeMIoo`@- zKwhSY$!l`VwCnx8+EYVas+1NUk|2m!-5TpTg*mK6bRvkA&0U>BXw4{;oE8h+^L#zR9 zeKV&p!b3}|&Z$ZNcd1qR3!`p#62u?5-_Zf;pFe}wcdpdx6duQoN&>H)GPu6;+v>?KReDi_%W1qI|xkX7FRQ*9PeG>L|J4GjDhvn!X( zUowC3B8CZ>!;_t<)I^hHBD#X0aFPb5UkNs12RF2eEGu1+cq!TFt0}`?)M78Js2T)! zor*bhq1Lt*$fM3j@2(xn*c=cmG>RZtNX41yIPY^PrV1_XH83k7f z=SmTS&;`Inq)+I)O|n}{mum?H?9z&*F1M2|VPHePZlQw*Rnlv0X=yF68k$-I3U3m3 z;#2txVNYiF4Ro(IUlRk{8fB5nm3{UC)xbE?w3go>0;huG@&;ckdBc(EB!XZ#I73-t z_F!@#Zm886t(qN)1-Oh_K}EnjW>?NN?QKFud$7Wt5Km=@84SC;E%&uG)7sY?X5o-% z?PTOrVbVdBY!SMlGeMd&1}A!UVmOyB?aNNi`wZI+GI`Q;<~2EyG5K7Hm=J()0*v!# z`kQYA24~=uV$8^CCR0xNDoDH93mFP!XcrpRQJLwf2mwx++QFqRZhxe*^mS+2Zn*5A zYWf=2`8EW|vSm$TnAIjW)p3dtd?m2KoW(~GG9-h5B#)5B7qAo^hTFTCaCxN)CABuf zm@9S7o-+r|Y{p|ZR;`dn6QUO}Q~9PlyQpnxo*Z;E8XM@fr&PLivUHTv#f!@4&%IM= zX9y15F<&M;s`Qaj%LP{A`hqp}6t9YaX8$^OrtgexNhTqkP9+lO%ixYF1G||$!Fi-r zf^8v}%&tTl0!X*zko=@|D4YKhH8t1NWO;%;)6W~4n9DLyIgLcZl-#rfR+cfo{Y^Z$ z6(1Tg6$t{;sg+Y8hZb^5b2xe->7q)FDY_^~O_^5!;lU30=X6T52$?@^F6l@- z0(?;wFI0kp%}m%A5YY*ZPBnualQPo@COQgzXY^O~4cZxdcJl_I3$)dNguo>VnIP9J(EA#+*VPRDAtdz&`g;o z8Z1xDw+50(vD8`jF6UWZ>4Od9I2|&=b{R5hhLLQGAm(nxdsT__VKUx*MwA9 zal}NSQxMG56hK3~HH!?4tXyD;LjDwhh6GeOlMA29=y}7dI`g9vzbaImJe)YhR}^@xfoB4=+0z_33t8p zj5#8QqXaPT%{FQ!N7T@f70IS~s!{5gp_nSP+Aa`w5=sd_wN9xa3#3z{#}hO=t3x`R znvpB9awNQ3l&L9QeoAu-5(DEnqQ`00TV(1DE$C?1#EJ=(Yf(aR7C=&3O%A(KBg9qzm)#TXy_Alh%)6A$;HULj5g?jpfXn=W6Y{tl3W2n z;ey7^Mk9ih<}QmUcNEr8AcG#!g^dwK)myZRnWi&UWJXnBNtq%;$vn*PPLqfP?zbUe zCtg$5CtQv!jgzc}=1FH$U^F+4mnbR`geMSK*V0y-$Xh%WswG-jR#k=0O{L>z<_63L zL-46a@V3T}fNA7sh)3!IH)GAzq%gA)4YOQDsjk4<%VcFp$M7=?|CC=T;)l=v^p&C{ zHA1GXgC)FJRK`ODWyLdOp*l@7XRY_IcY0reMPt|6B5SCR%(XwJPXGBJVJP65YxAym z^l+B?R5f?~AndS*&*8r;&9u>7?TIPORaO4Vxl6Wor{8;GDXFK{b8BZAgog5whR}W7_DdMaw zm@&x2Cnd$hMug9{p_P~EcD0|181Ck_Cki*#x)8Me>wQhFjj&;c6&iqOQhKvJe@>Yh zU#05IE=sHB>$|~)l9pq+VaDA-^>ha5ltfA!(t~{V${CYY#5dK3cx8;a!_jNsVM0-M zN$?P&OnI$hIB)bZ6K%0qN=yhtCi7;3cnS>;qO9a#3_PNH0y$x9LoJ(PH>`OWPV3hE&C)gG0eta|=>; zL*0fmAm9C*g7u`giiI!**(E4o7Pe)^SZ9IEbRzvyV3y9Dg|n$sWrQeVmcoqCUn?G& z=EzexwSEY;v}!o|tl$Q*vawofYc2m;mdE*#siNaAu$L~HuWQd} zvKv+j`;pdir=G4-Y)~3$809Nd`~|BD?CEw<5lV!GGY~46e#*LLGhhm_nQY9QUO;xb zDN+m!j;v~H^`|`z=iBD2v+l;pPGE~lAa+{mV9s1~8 zAi>p^2!Wb4=9SGY5dKOKGg(>GN4$86jxYE%!nNFOkMTW z#bM}AfKOHa8$wKCQ@*RV!&O_LUSulow#5=YyVT%n#Njc5+u*E_WtGpEZj~2W<=0u|*IMP*Smjq+n^L>*M>s{ zqIm@B8|s4G*W6g^*U-;};1yPFO9-8>@ta>+P;aIJO%2Akz-qK^w$@lTapu`PY#ZlV ztE_UX&YEM@T2)rSnr-=jMMnpVz6q4oEMNgB%m3F#2{Gx6;`XY*lMxn zTMgDyD`eefZLpSDK?~u-Dzp67a%-J+i}g7R<+Q1dEU#LvjiG=A+*rzC48W)afAm}E z`Ur-+{mrJx>E=ZXDztp4Y1){JS=U*NQY2z9vaSXHOf9Ty1iLlVz`7c&G%^}kS6R*| zh~*NdkyuS#iCtbzqp!)DVIfcWT3!386!{WKuewEMeN2kXBtm3Aoh;p4rd^Q_t)}}6 zwaZuLRD2Ul5P5SgKNt&qjji>*YCo$g4)@XJ+2rz;n1mQWbT$BF#3XhSZtOm^GWoVs zJ?urKzQl7;fY(6`kpy>wF2}2A#I8gTD{D3`swqy8Pb?aO(Mrfn8U{hhSIv8}fz6Ay zdm`M)HAyIHW9V-KHbY6m038C9FeoygDH;ST)k#pSDc1>C$|jwVx%r@UFJ8@;Wgn(x z^c=+m-AL_cq+5|ldWe)@CV?QNkvyCVx!p70F2B{Da;q>xr!gE!&h&ES?MzmEZL2~u zQ{41HWV4WvMyjv^YeSBY8P4bw=iL|rty;!0{u>_^97S3v}(h8Ynncip>6&K z*q0=CeaUZMzmE$$aX-L4j(ZmO9PTCDtGL6szu*|O)U2n-nkJI(G-3JHGy@z)v!3^rm)EN94X=7Q2a}^2`oeU?6_$CENU-OF;jdQ*^+B{v4 zlPJyrJbw`r|ckW^8lqLxk$)aEHr-x6xX1}4<1vXUtE zMM_stYg_yQSdLO{WU*jby}aKxS}W*@r_#Os$a8_ zk_BJM35%JsrQ**h)y@Qo_6imt+^LzSlq{2SkO4*!vAF6~>BbU<0r?@`INff}d|4;> zdlnl8(};aXDuE~?3boRUYO&|xfkxfWWTuD-zl7w;z#qWQOBdp&tPReXK0OauM0}PY z=PTL~*e=N1p!|<|3YTX@kv?Vqsu&+?#L^FT3_J2QBGU>vI&#}!R+^$%k;Z5Z1<+=m zCUa@mYUopn6DYO$oE#bEQn|CB+bvoe!ic4kdqZ<8BxV#iMi=U?E(R245x*(t%#0t6 z8H0h_DQGB}(iy=ZDKLXf0jEJttA!gd#n9$X00jyJT5frn;d~7QJM2 z3IrH|3|xselMkX4WMp#I2i=aR^--KssM_Sp3>IUSD$oz=#8x5!1~esLC~>*eAW;c$ zu#C^(cts+Wv;MF2%#=>lPJw#VF=EkPFAK)14}mqxlm{I-Hq#KAc0MN-z|$%$ozyg9 z$%Vn+pgcsCIw-_iF4l+Ifv&f$>c-YzlVABaQy{q|GfpOFePF#b;Pmw~ru%B9UvD?)Zj5}bVQY)o-H{Ugl-g8M zzT%VSM^m635U(o9&APVqHRkU!?@gGc>x#a%jgT0`BUvC}DyL$F%VkoI&6(P`7+q8- zD7^-VMXjdl_L{a0m`&6mj>!k@F#fhS*Oal%FC3k5TuL+9!UXJ<4Mn#mD|y>wZ9x$W zWJAQQ8u>O?5G9pZ-bkU$5XG`XEJ=kZ5t)?gC2y*@L6!4-lc7Qu^;|t1`nA= z3aD|VE@&p+n4u|;<;ncWZOEm~gH4BI@YJp#$Pj$}-6lw(AvrO9lC0f=&hRW3Das7A zf*oZrlncYqiT%wbw=F5Fvez^;wx|WIXtx-oS*~;S&(NGRyb5E|bytUK-1UMsH4J8M z1Op>BiZSLXV%=(KPO>Ixib=euz`D>emLIe9fj%O9BFcdzh4;r91 zM_LyPvNg6@^Vfz>$sDg4pP)}ssky^{olu*YK$%KfOPf*XwybJKizMn@wKKyslkYM* zC2ap$AzBkKu(@=PhM@+^5E}uC-{=9K;}*4p z$etxbOFFp_v%Eo>^CFa%;DV{cu{N$uxm94)_Fk75o07S>08}d0!h~9RNn%J`&DCGvCf{cuq4qfjVw8%r>02_DPi~|F4p^wuto0@%VIG|P@7T_ ztz=bLXeTwH<9E`#fXn7gr;nzr*22m)xkMI^lvvAXEf)VwUogNqP0l7r=ub7KZVNfq zB%(s9M)nP6SD--O$yldlu5NWGqTIpm}ywU z-#lp0%gfHTF2b~Qj{cUSez2?y-?Xe+T=v_><>N0;d4KK?Cj7aSuzz^Vgk9`B-L&#- zPl+e*S;X1?N6Q-bj%7W>b1YBs|DQOE_*uAPq(9>1mFwj3An#JAnUiYg;kl-npLrME zantE=HYm)t%c@FIO(L^F$|Bt}$jG9;`Lpk^7cu~_@!2k!T{Um2noo!+h0UHIT>}$Y z(&ZHh5C|lWoG7N3qNrz^!t4@hCn0O*IxVaMr|MCp=c0{gC5$b1B7m5Ay1x;%1u30m zB1^eRC9{-NBGjPx(^a8q(m$m$6+i~;NfI5w4K_0kVFOx6QS2caFszuFZb1PAz@~Bd z>LA3J7tz+a+BVT*qn2~jdg!vOS-R1J8cwRc!2+lxH)CX{NAl$~d8P*4AB_tVRWN&gVu)wuy_9}+ZfJ&BFDfzL6Zj8EETUqGqKe+ z^pt{8gquxm&PHfErAmXmLLRORv#`RhGCSf*2k$PBW}S5U9So9QhCR}nMD`M6&fBm` z=|!e`(`2w#lU~F<)6@wV&X^vPi8gwyiV2sVsdT}=DZgwzQ$;2nrvP%Mf*lAXJu-?C zC|y2fPesa3l%YsZKridhiCr7X#;Zbc$u14Zz-T`W`-1}o5eY>1Ev3#;!)KWW%Kj0D zMP^&`7nYi>NzjtDtf4K)VvW5VVIrl_6tCo@t#5$8URE2>1=ac|%9jP$nKYX3gXlpZ zSX{;?AU4X&a0uwNh|A79K(J>O%3WBhkCft0@m7g|ER|4G1Zi9~qoC?%+L1Xpi*n&K z(rD#ODs;T4awT`VEt51xXa*l)Jg5D;=#Fcf7|NzMo%X9`jWUcKv!PN|)S^!yM;R=f zc^)GcO9ZUT05Vk``gi8^y6}-mSK%0!T|XoXl|O8IsiR__RHM2N9t<<8VlZ}lpX5{RqIgD^c|S_GnI7ehPqAW08+=qgb8yNI^krtMKH9Pcs>U-*DOxHV6%%& zt|m3A5VZXap6+zR9rRNm`Mb-{wU6DJ_W#r$7<^lTawe0y3FumZi|s7fg7ImLL}0NEBkyDAeQB#HUv0 zQzkDqKpSJLyus}t(a8og4KUG$iJ!5aadJpBmx)G;nI&S0yozRJ{YbphvQ0kVR}xIc z#;N`##7!Y4b0SP)f0I-jo;hfdOAtd}a5cz+;8U|rgc$t)?|vDe&(M32v2~Sjf`gz> zl+tv$N2m*V&J3!;mnKgNOh%qh1|<7^AjpTm@#jhT?#{R5Dd9KNd91H}Q;xT`SfAw= z*NHo^%Y=!4CGMBF>W59(f8u`#cMoUbJ?ez{@E;;d`p2t0d`vLA>aXWGM)wmV79}p%dO1Xb`H3QSXnY8NXeRGS)`kfQjfd3)FI(Yue_XelEp%q*Z zCit3;e-Ck<;+ge`2^0S}aR1fju@*RC58=1DDK8cP=0{Dujrc9xJGf#e>^Jxy!X3uF z^&f-FT^96M9}*@wn2X=S<%K-flpmP<#QzXszvVg43G2pRjQhb|9;^L_CSEcAht_(m zV?3XI(uBQ>e-CciMvqnU6BB0RUwOC3`Z~{FbJe-jSNtn+b2v2kgcBzIJ%o+l?6Jl^ zZQ>2bzmo9kc8~Q(Cu{-!V#43zx%C+nuLplSu4{|Oy5y&(ZXNh7T-v?B(rv=t=Y0=u zBw-Ki9gG)0VHx{Oez)MaamVE8guRFVA>7$vkM$WRO#J^t*xnA0HT_wW_Ph9t3BU34 z9_u|P%*KC+@GtSa;Xh40@vp>9-_F@&`we`1BE%!?+%E{0n4?;hhd&!PV?vsh#WNFk zWpTQd&huE5v(7Hfus-DZKJKc^GOa)Hd>eQ5q+!;ZJb#b7=Ci}CS9rdNyY^FA)~|T( z$6a^%2>Mk^Gk|NWJlFah&lX&8$!M#I=NjCG+s0T8 zJXhgDOV6|XJZo?b^Ut?@JnzJ{EFNpE;CTnGwc-M6G0!r2zxzV#I-XN;D>hzaP39?o z*_`|~-tnVBu*Tu%ayrX5`x5H{p6BBNRpYHOJkQ0|&athtd3tem_^^-Y&q9-afVc%S^vZHIIeNQr>sBo?8nW#ezNs8&zEtNCr+_` z#q)XG%1wFJKAz_9a_h(VAH#j-o-3>$^863nUAO03kMR6HZvCxOt?%;u4z8xO!1`C7 z598J@n`Z6e*@devnQnc9=T2Pnq8Zjd@%$>TY2lUDmwDcY%b)dW>+?J};|gxL%G$uQ z6*uk1tF1j!avhmp777ImL&W|)-4JD4c4NB|3>TPgumFD zm+;TF$`bw(t0dtswQflG=UCS|{>_-|wcO{iUU=U0n`QWI=?`Cm|G!}R*F*U2PH2Az zeCI_I&%(d*%h>+#EdGrN`=a=9)em~C+X<7}FTua(E3_xi;7fz~M1Zib6PDp%Ngl5d z_ASDMr~V9oJ1+KB?1>1I{5ImZaG&`ec*bqTJ&5}r&iX#Q95)3w3s-@w#jVGE0rwE@ zN4V#3ui}p2GX5PNiOa_o-#!kxNqVjxRp2? zmxep^Pkh6*?zdm_SpSLpH(Wce5_dgr63)WC0d8N!J&t<_cc#D5r}-eUO?d90 zugP$2!o)WTKXVC*Xs7ku^-XX&8GPq?tbe~EnM;81t1f}xOn?R^Cc~Q~{#CR$M~!}6 zjvICUY6(AFM7x*L&SfUNc|Ld~{7?b(GaXuTG^bpBc7Rip7t`NJuD z6s2BZO~B|?jD5FQ-Im9*#p6lyqNc&WyQjio;iHP zS-IzoK5y*Bmym8HiKp}21M=mPfc8lSzgRCT?yavFTw8x|_|jg1@PF}ln#7E#s`MD} zRFuxQZJRbF)}E8;(#X_8AD#h^KCOW?eWnkX&l%ilE739sGW9uZV3jy^{XjMC>>183>eJK)ufy#rQ;!0gp&hm@rC-@~nNbMd>h zC~3rnj1_Nr0L3=LTV4J1TQQ5rdpO`I*hcl_B=Ou%kb#i-}@f1`yH2*(j{{I#O zPgyH-t^Ns}X^(#YqI7!A@x`~im8IMsj$e#x70#b){p4HIiI+KWZg^kDmgC>%rR{_G zE;#;A#6RRi|4FZB%xE&Mdm`7m@8ErV?mKi}{N2xyO_sHfgZZsKW;Z-md-|Bdi6^b^ zN5+%h_g&-3==-MeWcGd4c!ufyzC<40_jw7)>T5S2M)cpcI=g@E>XH3zt8@CBSC8sn zz51;FI%0bJSMr=Zt_b=i1oc=}pp4&f<-_iXg{Eq3L#qW9j*YJCO|8#!G_FvBL z1^t)tdtv`2{9e>Qmfwr}&*67me-6Kw^bg~Ae808wl40J5yx)!-s(9jrH`f|CaI5z_ z-mc-}ec@-be&zLyE3VJgI@=1w1O;NE0&%GVahU=!NrCv30x?;En4&=BDG-+{5LYM= z`3l5T1)@NKm^KKADd!CZLQXvIKWVNu0FUU%fVNEyI_ij60-xnC9BeUoBDD(cS&H=Xd941jCa zbngT5`CVdKp^GI=|9S3L+9F3Pl0!S3pdu$eI?x>-FAd?gLMr@o1)5*H@WKng|3>$_ z>7NL=H2LBGuf6*Z(xa~L0DdW#@r-9Ltp}cn%@e%PfQX3b;D9tCc`(uZI71Eui(#f1 zWJIxnP&yKd9@w1MI9985l+naEmVb)vXyJxG^pX&Q(oxj@$kggYin1mLoSK0MwDj}Y zeV)7LLe{^S=?`8v6P|s(``+(<_x0@Vv%3$w-!dH!Xn*pd$QH*vr_Fah|82f#WHMHr zo>&W_XV&2&I&VD~uLmbb_iVlV>At&~PmkQ&|E}`WsYz~pbac-cdbT2nt~-0qHX`??3e)|lT_?2bd{ z)}}cSWqY&i&W^Hx%cgzkwCE%tI|F`j;ryBUV^fZC`=SfRb}xqmt^C{D`HAWL!&4*C zFWfickbU3s!SX~k=9dTK#Yf|isQBkNo-g8%H9A9xgU#aP*y(RuKDaz*uqjRh%HfzU zrin?qiZ{iSS;=kku{7;*LoqIfPtV*P(a}LUTrE+a!W8Glf6HmRmQ>SpwBx2& z(8w>&X}5O_-y6fl~Rir|3RkUb4IohjWexS|C==UKD55@lT zaO|6oiyi9l;oOHFj(x=8b7OyZd+t(x5_R>)CtkcS>u*k#)4XD=In|n`>)hs4bW8S7 zl#ev0V$!MUN&l^5hC6e^h*{=7viuT`uJZc6TFyC_>_BvO85{Fhv&he&wZ1 zZk>qwKN8cm=N>Jt=3a~qPi2d9wq6Q581?VH;> zJv2XuZh1*p@#`2-?GIvqI=G`d%6A>;8M(g^`?ejKA2~A6_wf%$s(M!pj5ep@Q@VQM zig25|J+_6>U1P7x`tl>Iz6*C9n7gh2xE)zIx@vHGmw89@%@ZqN-`x{q$CneVp1S&5 zS#WZ-jRzr=fP-p zZYsI)C zv5xP|#rpZ}Q4*mSZ$7>%pXeDmaHJZQA5DyU>E_;8gzoHH>e4pR!|fI0#Sf0|j*l>o$XX4l8d$wKvi9be*UYl` zd~{k;EQvj2d%bNl$CuFIhWp-k8x^!-=H08$sgZ9+Zn^2h< zicD)0`eF#Tzuy+mP94ndo4NKMiyz#Xn@S!YRNH-|glGR09$|K5`#7Vmcz^UI>G{d<3} zT{6%vSy+}-ft=>V>U}v)^hBL2N&ntPSs2H)-Q{3x>qkZ&nyNmKS>vO@{d*TgdfFkn zzRA<8mv@b4%{xzs|HK+x?iJ#7<_k3zCf>)lLAjyiOR*qzBKzGei|psB*PbZO@^&_N z{>86CuQU6}V`pOz7ClZ!wwN0|+O$8>I5-^}jsx2Mt*c}88lH-ihxk-_a-a7=tUKjy zE!K|zjNvFhJtD(u7mTl(nz_YQ*^Vrmj5cOjDz|g{TV<&jWo7Q(R#|=u?cCqZE-Q1lx5^?m zo!dIQtjt{>Wv$Ppr&tu9^z?e}`cK-uaQ`OT=M3MAb+Wy^EFRy~Rc;}@9}k&WVSDm& ze}0L_%9vKgD`IOO|4@A>SKQ)oY|i7i)`!ad#&wUfI7abK9oNT6#tl^ef6Qd zictJbh90O76!?`cQe2ae0P*P#?;lY>IO-^sn`yJRU1vmZ2Zkhw=cecr3b^ z9sfyvD0WTJQ*MSHsSo82xcG909<2}MZ&SseW$0J+p*SOrPeuJ%W3+p+I`%EweNznA*Zj8~HJ?`1+(8yq54<|6K4+%tzwD@bVOe$5 zP@W67zbm%Io_prIVq^UW)`%&KM}u|zn)=Yf4BelhP4%IZGqf{9H`a$XJqJ+=rMMDqCWJx4DF84 zQQP)`+1qyCtZjQs&x`v0dZKl0KhM2mJ0B_XQb%mZebsinBv$X-j<1Uu#M=J8T-#5c zYH!C`eS158eT=>_N57`p%yT(7}t zs+n((m*SB)#^@-^QN<6Uti46$-l5g@@t9RcKO32L+c!R5?gXm6LpDD~6xpQBanjP- zJA5Yw+pT_g$GOaNYyNUa&AnC4v3F>rM;*O!T3MVpQ}uNnRUcPYJ$v6UC%*Bb75lnw ziQfftU`ZaFRYQ45l;_UXF0tH?t%;KMzN`HFdbSP4mA;YHnWx2N1w-?`~28{4)u=z``N$S6=(WSEqHQE{PtB|OgcMe8WSyx zm*UbmEQ}8$mVYuj-#QTZd>*plvZo6r17{ytJxaQMx;x4dXPkDU+AEiVJd z<l^RLY2pAqI;n@`5c^OGY7@~Z49G3JUK(_fBx z;+8E>bln&~;`PMj$sH%nPi!5UTh8mgxr0~7_i5i<TI>I zF_FLEWm8X%4Zg4OVEo%ZU9>-DU&-hEdp;PeLspbWgi+BAxptfp-^(#PlEZI{HND-Y z&U_wYwe$aVsLXHA{E0RBJRoW3zfOCJw72hp z;z!kYN_l|#y_hOLltxwIBU#DHsPO6bT#K(py82b7oZuI&30iAmIl(|o@KjZQ&F`=O zbHCKy{?0w0h_3Ojdr#aloX>+V?{Hob_lsV<@}lgl>Viufmo?X|o%fuQh4Z?qn~hpe zX36_p;(oH~>6OtX&z14C=XvqyqUejUamlrtuDLQMh`;4)*EAcK#B*g=u6b)bxw5gk zxq9uoczETSc(Ox2(mGr-KA@X8_SliX{;ZP?zYxmcwuAxie_W= z(q$`FMty76UXpjHmDA*HJny-3VcrQEJ(pgeeWK+u<=oqKT(tDU=Bi77V^!JI>A$bf ztxkQ~1-Higr7@RyDnvY7y7dgfxIr-Q?2UWx%KNeMHCs|<;!Q5Z%BokDlxhLxeNHQv zug{yts|QS!x#l~UHHXTs!s52wp{47Wt!S=`Cw1QVM;qcnVQ;DGTHJbjemqm^)W#{N zG};B{HKr%u5O=1pYHqk_xNJ3rq1PF}M%9+iIK(&1I>XY!2|OV=!4)m+zD*L>^B zi=tz**8Rd8uD)*5hI~F#Bj=Vgn<+W=?53ABZtR*~ucj9|s8(LIuF(|_(yg8`*j)Y_ zQe9n(;}*tx$Ygama@EAGav79-5JZeR<4OG9W{v7&2jJkFrHA1>;QClr*c zc|KJ#x7}IER@n#RnI;>`2bLto^dqXTj2qpq%2lws%{tf1*i@=V)kMo4x{WOFG+k@#>+7HLAA7M!z)nFXeOW z<4(rx4mEETt)8e9BiF@4_R7u>k1;NnJMRaN_QbOs;&#Tk$G6o7Yux*q_wSdFY{;kR z&YnZmyKu&PLp;bKDHfmF)#|A=7U7tqV}||+5FkK+009C7UJwG)7u|ZcH>%4Ct7Ez2 z8p&7UZSmCp)-{asisJ|4ieu|qdwG@Zthlt47a)eJDbC3&P4~~5;uGZ*vmm3S^Y5c4 z&VGN^QRDA_Wn4u*X?CV_dcy<=5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZ;DsPi{{R2wvsB9NeBwy}v;WHRJ@L5p=int_no; + + Console::puts("EXCEPTION DISPATCHER: exc_no = "); + Console::putui(exc_no); + Console::puts("\n"); + + assert((exc_no >= 0) && (exc_no < EXCEPTION_TABLE_SIZE)); + + /* -- HAS A HANDLER BEEN REGISTERED FOR THIS EXCEPTION NO? */ + ExceptionHandler * handler = handler_table[exc_no]; + + if (!handler) { + /* --- NO HANDLER HAS BEEN REGISTERED. SIMPLY RETURN AN ERROR. */ + Console::puts("NO DEFAULT EXCEPTION HANDLER REGISTERED\n"); + abort(); + } + else { + /* -- HANDLE THE EXCEPTION OR INTERRUPT */ + handler->handle_exception(_r); + } + +} + +void ExceptionHandler::register_handler(unsigned int _isr_code, + ExceptionHandler * _handler) { + + assert(_isr_code >= 0 && _isr_code < EXCEPTION_TABLE_SIZE); + + handler_table[_isr_code] = _handler; + + Console::puts("Installed exception handler at ISR "); + Console::putui(_isr_code); + Console::puts("\n"); + +} + +void ExceptionHandler::deregister_handler(unsigned int _isr_code) { + assert(_isr_code >= 0 && _isr_code < EXCEPTION_TABLE_SIZE); + + handler_table[_isr_code] = NULL; + + Console::puts("UNINSTALLED exception handler at ISR "); + Console::putui(_isr_code); + Console::puts("\n"); + +} + + diff --git a/MP4/MP4_Sources/exceptions.H b/MP4/MP4_Sources/exceptions.H new file mode 100755 index 0000000..88a683b --- /dev/null +++ b/MP4/MP4_Sources/exceptions.H @@ -0,0 +1,86 @@ +/* + File: exceptions.h + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 12/09/05 + + Description: High-level exception handling. + + CPU exceptions are caught by low-level exception and interrupt + handler stubs, which all eventually cause the high-level + exception dispatcher to be called (see 'dispatch_exception() below). + + The dispatcher then looks up the appropriate exception handler + for the given exception, and calls it. + Specific exception handlers are installed by registering an exception handler + object of a class appropriately derived from class 'ExceptionHandler'. The + functionality of the exception handler is then implemented in function + 'handle_exception(REGS * _regs)'. + + +*/ + +#ifndef _exceptions_H_ // include file only once +#define _exceptions_H_ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "assert.H" +#include "machine.H" + +/*--------------------------------------------------------------------------*/ +/* E x c e p t i o n H a n d l e r */ +/*--------------------------------------------------------------------------*/ + +class ExceptionHandler { + + private: + + /* The Exception Handler Table */ + const static int EXCEPTION_TABLE_SIZE = 32; + static ExceptionHandler * handler_table[EXCEPTION_TABLE_SIZE]; + + public: + + /* -- POPULATE DISPATCHER TABLE */ + + static void register_handler(unsigned int _isr_code, + ExceptionHandler * _handler); + /* This function allows to install an exception handler for the given + exception code. The handler is a function pointer defined above. + Interrupt handlers are installed as exception handlers as well. + The 'register_interrupt' function uses irq2isr to map the IRQ + number to the code. */ + + static void deregister_handler(unsigned int _isr_code); + + /* -- DISPATCHER */ + static void init_dispatcher(); + /* This function is called to initialize the high-level exception handling. + No high level exception handlers are installed yet. If an exception + occurs at this point, the system displays an error message and + terminates. */ + + static void dispatch_exception(REGS * _r); + /* This is the high-level exception dispatcher. It dispatches the exception + to the previously registered exception handler. + This function is called by the low-level function + "lowlevel_dispatch_exception(REGS * _r)".*/ + + /* -- MANAGE INSTANCES OF EXCEPTION HANDLERS */ + + virtual void handle_exception(REGS * _regs) { + assert(false); // sometimes pure virtual functions dont link correctly. + } + /* Different exception handlers are derived from the base class ExceptionHandler + and their functionality is implemented in this function.*/ + +}; + +#endif + + diff --git a/MP4/MP4_Sources/gdt.C b/MP4/MP4_Sources/gdt.C new file mode 100755 index 0000000..4e1cb55 --- /dev/null +++ b/MP4/MP4_Sources/gdt.C @@ -0,0 +1,124 @@ +/* + File: gdt.C + + Date : 09/03/02 + + Description: Management of the Global Descriptor Table (GDT) + + The GDT describes memory access priviledges for memory segments. + + While the table is initialized by GRUB already, it may be a good idea to + do this again in the kernel code. + + For details see Section 5 of Brandon Friesen's Tutorial + on OS Kernel Development. + URL: http://www.osdever.net/bkerndev/Docs/title.htm + +* bkerndev - Bran's Kernel Development Tutorial +* By: Brandon F. (friesenb@gmail.com) +* Desc: Interrupt Descriptor Table management +* +* Notes: No warranty expressed or implied. Use at own risk. +*/ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +//#include "assert.H" +#include "utils.H" +#include "gdt.H" + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + +/* Defines a GDT entry. We use the 'packed' directive to prevent the + compiler from optimizing by aligning structure elements at word + boundaries. */ +struct gdt_entry { + unsigned short limit_low; + unsigned short base_low; + unsigned char base_middle; + unsigned char access; + unsigned char granularity; + unsigned char base_high; +} __attribute__((packed)); + +/* Special pointer that includes the limit: The max bytes + taken up by the GDT, minus 1. Again, this NEEDS to be packed. */ +struct gdt_ptr { + unsigned short limit; + unsigned int base; +} __attribute__((packed)); + +/*--------------------------------------------------------------------------*/ +/* VARIABLES */ +/*--------------------------------------------------------------------------*/ + +static struct gdt_entry gdt[GDT::SIZE]; +struct gdt_ptr gp; + +/*--------------------------------------------------------------------------*/ +/* EXTERNS */ +/*--------------------------------------------------------------------------*/ + +/* This function is defined in 'gdt_low.asm', which in turn is included in + 'start.asm'. */ +extern "C" void gdt_flush(); + +/*--------------------------------------------------------------------------*/ +/* EXPORTED FUNCTIONS */ +/*--------------------------------------------------------------------------*/ + +/* Use this function to set up an entry in the GDT. */ +void GDT::set_gate(int num, + unsigned long base, unsigned long limit, + unsigned char access, unsigned char gran) { + + /* Setup the descriptor base address */ + gdt[num].base_low = (base & 0xFFFF); + gdt[num].base_middle = (base >> 16) & 0xFF; + gdt[num].base_high = (base >> 24) & 0xFF; + + /* Setup the descriptor limits */ + gdt[num].limit_low = (limit & 0xFFFF); + gdt[num].granularity = ((limit >> 16) & 0x0F); + + /* Finally, set up the granularity and access flags */ + gdt[num].granularity |= (gran & 0xF0); + gdt[num].access = access; +} + + +/* Installs the GDT */ +void GDT::init() { + + /* Sets up the special GDT pointer. */ + gp.limit = (sizeof (struct gdt_entry) * SIZE) - 1; + gp.base = (unsigned int)&gdt; + + /* Our NULL descriptor */ + set_gate(0, 0, 0, 0, 0); + + /* The second entry is our Code Segment. The base address + is 0, the limit is 4GByte, it uses 4kB granularity, + uses 32-bit opcodes, and is a Code Segment descriptor. + Please check the GDT section in Bran's Kernel Development + tutorial to see exactly what each value means. */ + set_gate(1, 0, 0xFFFFFFFF, 0x9a, 0xCF); + + /* The third entry is our Data Segment. It's EXACTLY the + same as the code segment, but the descriptor type in + this entry's access byte says it's a Data Segment. */ + set_gate(2, 0, 0xFFFFFFFF, 0x92, 0xCF); + + /* Flush out the old GDT, and install the new changes. */ + gdt_flush(); +} diff --git a/MP4/MP4_Sources/gdt.H b/MP4/MP4_Sources/gdt.H new file mode 100755 index 0000000..ae9eb95 --- /dev/null +++ b/MP4/MP4_Sources/gdt.H @@ -0,0 +1,48 @@ +/* + File: gdt.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 09/03/02 + + Description: Management of the Global Descriptor Table (GDT) + + The GDT describes memory access priviledges for memory segments. + + While the table is initialized by GRUB already, it may be a good idea to + do this again in the kernel code. + + For details see Section 5 of Brandon Friesen's Tutotial + on OS Kernel Development. + URL: http://www.osdever.net/bkerndev/Docs/title.htm + +*/ + +#ifndef _GDT_H_ // include file only once +#define _GDT_H_ + +/*--------------------------------------------------------------------------*/ +/* GDT */ +/*--------------------------------------------------------------------------*/ + +class GDT { + +private: + + /* Use this function to set up an entry in the GDT. */ + static void set_gate(int num, + unsigned long base, unsigned long limit, + unsigned char access, unsigned char gran); + +public: + + static const unsigned int SIZE = 3; + + static void init(); + /* Initialize the GDT to have a null segment, a code segment, + and one data segment. */ + +}; + +#endif diff --git a/MP4/MP4_Sources/gdt_low.asm b/MP4/MP4_Sources/gdt_low.asm new file mode 100755 index 0000000..0b15df0 --- /dev/null +++ b/MP4/MP4_Sources/gdt_low.asm @@ -0,0 +1,18 @@ +; This will set up our new segment registers. We need to do +; something special in order to set CS. We do what is called a +; far jump. A jump that includes a segment as well as an offset. +; This is declared in C as 'extern void gdt_flush();' +global _gdt_flush ; Allows the C code to link to this. +extern _gp ; Says that '_gp' is in another file + +_gdt_flush: + lgdt[_gp] ; Load the GDT with our '_gp', a special pointer + mov ax, 0x10 ; 0x10 is the offset in the GDT to our data segment + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax +; mov ss, ax + jmp 0x08:flush2 ; 0x08 is the offset to our code segment: FAR JUMP! +flush2: + ret ; Returns back to the C code! diff --git a/MP4/MP4_Sources/idt.C b/MP4/MP4_Sources/idt.C new file mode 100755 index 0000000..76d93ca --- /dev/null +++ b/MP4/MP4_Sources/idt.C @@ -0,0 +1,108 @@ +/* + File: idt.C + + Date : 09/03/02 + +*/ + +/* Based largely on +* bkerndev - Bran's Kernel Development Tutorial +* By: Brandon F. (friesenb@gmail.com) +* Desc: Interrupt Descriptor Table management +* +* Notes: No warranty expressed or implied. Use at own risk. */ + + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +//#include "assert.H" +#include "utils.H" +#include "idt.H" +#include "console.H" + +/*--------------------------------------------------------------------------*/ +/* EXTERNS */ +/*--------------------------------------------------------------------------*/ + +/* Used to load our IDT, defined in 'idt_low.s' */ +extern "C" void idt_load(); + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + +struct idt_entry +{ + unsigned short base_lo; + unsigned short sel; + unsigned char always0; + unsigned char flags; + unsigned short base_hi; +} __attribute__((packed)); + +struct idt_ptr +{ + unsigned short limit; + unsigned int base; +} __attribute__((packed)); + + +/*--------------------------------------------------------------------------*/ +/* VARIABLES */ +/*--------------------------------------------------------------------------*/ + + +/* Declare an IDT of IDT_SIZE entries. We use only the first 32 + entries. If any undefined IDT entry is hit, it normally + cause an "Unhandled Interrupt" exception. Any descriptor + for which the 'presence' bit is cleared will generate an + "Unhandled Interrupt" exception. */ +struct idt_entry idt[IDT::SIZE]; +struct idt_ptr idtp; + +/*--------------------------------------------------------------------------*/ +/* HOOKING UP THE LOW-LEVEL EXCEPTION HANDLER TO EXCEPTIONDISPATCHER. */ +/*--------------------------------------------------------------------------*/ + +/* Use this function to set an entry in the IDT. */ +void IDT::set_gate(unsigned char num, unsigned long base, + unsigned short sel, unsigned char flags) { + + Console::puts("Installing handler in IDT position "); + Console::puti((int)num); + Console::puts("\n"); + + /* The interrupt routine's base address */ + idt[num].base_lo = (base & 0xFFFF); + idt[num].base_hi = (base >> 16) & 0xFFFF; + + /* The segment or 'selector' that this IDT entry will use + * is set here, along with any access flags */ + idt[num].sel = sel; + idt[num].always0 = 0; + idt[num].flags = flags; + +} + +/* Installs the IDT */ +void IDT::init() { + + /* Sets the special IDT pointer up. */ + idtp.limit = (sizeof (struct idt_entry) * 256) - 1; + idtp.base = (unsigned int)&idt; + + /* Clear out the entire IDT, initializing it to zeros. */ + memset(&idt, 0, sizeof(struct idt_entry) * 256); + + + /* Points the processor's internal register to the new IDT */ + idt_load(); +} diff --git a/MP4/MP4_Sources/idt.H b/MP4/MP4_Sources/idt.H new file mode 100755 index 0000000..ee0bd54 --- /dev/null +++ b/MP4/MP4_Sources/idt.H @@ -0,0 +1,57 @@ +/* + File: idt.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 09/03/02 + + Description: the Interrupt Description Table (IDT) + + The IDT contains pointer to low-level exception and interrupt handlers. + The way the exception handling is set up, all low-level handlers route + the exception to a single exception dispatcher, which in turn + calls a high-level exception dispatcher (see file 'exceptions.H'). + + For details see Section 6 of Brandon Friesen's Tutorial + on OS Kernel Development. + URL: http://www.osdever.net/bkerndev/Docs/title.htm + +*/ + +#ifndef _IDT_H_ // include file only once +#define _IDT_H_ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +//#define IDT_SIZE 256 + +/*--------------------------------------------------------------------------*/ +/* Class IDT */ +/*--------------------------------------------------------------------------*/ + +class IDT { + + public: + + static const int SIZE = 256; + + static void init(); + /* Initialize the IDT, and fill the 32 first entries with pointers to handle + the 32 Intel-defined exceptions. After initializing the IDT, these exceptions + are routed to the exception dispatcher (see 'exceptions.H'). At this point, + no exception handlers are installed yet. + */ + + static void set_gate(unsigned char num, unsigned long base, + unsigned short sel, unsigned char flags); + /* Used to install a low-level exception handler in the IDT. For high-level + exception handlers, use the exception management framework defined in + file 'exceptions.H'. + */ + +}; + +#endif diff --git a/MP4/MP4_Sources/idt_low.asm b/MP4/MP4_Sources/idt_low.asm new file mode 100755 index 0000000..9312d38 --- /dev/null +++ b/MP4/MP4_Sources/idt_low.asm @@ -0,0 +1,279 @@ +; This is the exception de-multiplexer code. +; All low-level exception handling routines do the following: +; 1. disable interrupts +; 2. push error code on the stack (if the exception did not already +; do so! (Some exceptions automatically push the error code onto the +; stack.) +; 3. push the number of the exception onto the stack. +; 4. call the common interrupt service routine function, which then +; branches back out based on the exception number on the stack. +; (We do this because we don't want to replicate again and again the code +; to save the processor state.) +; + +; Here come the interrupt service routines for the 32 exceptions. +global _isr0 +global _isr1 +global _isr2 +global _isr3 +global _isr4 +global _isr5 +global _isr6 +global _isr7 +global _isr8 +global _isr9 +global _isr10 +global _isr11 +global _isr12 +global _isr13 +global _isr14 +global _isr15 +global _isr16 +global _isr17 +global _isr18 +global _isr19 +global _isr20 +global _isr21 +global _isr22 +global _isr23 +global _isr24 +global _isr25 +global _isr26 +global _isr27 +global _isr28 +global _isr29 +global _isr30 +global _isr31 + + +extern _promptA +extern _promptB +extern _promptC + + +; 0: Divide By Zero Exception +_isr0: + push byte 0 + push byte 0 + jmp isr_common_stub + +; 1: Debug Exception +_isr1: + push byte 0 + push byte 1 + jmp isr_common_stub + +; 2: Non Maskable Interrupt Exception +_isr2: + push byte 0 + push byte 2 + jmp isr_common_stub + +; 3: Int 3 Exception +_isr3: + push byte 0 + push byte 3 + jmp isr_common_stub + +; 4: INTO Exception +_isr4: + push byte 0 + push byte 4 + jmp isr_common_stub + +; 5: Out of Bounds Exception +_isr5: + push byte 0 + push byte 5 + jmp isr_common_stub + +; 6: Invalid Opcode Exception +_isr6: + push byte 0 + push byte 6 + jmp isr_common_stub + +; 7: Coprocessor Not Available Exception +_isr7: + push byte 0 + push byte 7 + jmp isr_common_stub + +; 8: Double Fault Exception (With Error Code!) +_isr8: + push byte 8 + jmp isr_common_stub + +; 9: Coprocessor Segment Overrun Exception +_isr9: + push byte 0 + push byte 9 + jmp isr_common_stub + +; 10: Bad TSS Exception (With Error Code!) +_isr10: + push byte 10 + jmp isr_common_stub + +; 11: Segment Not Present Exception (With Error Code!) +_isr11: + push byte 11 + jmp isr_common_stub + +; 12: Stack Fault Exception (With Error Code!) +_isr12: + push byte 12 + jmp isr_common_stub + +; 13: General Protection Fault Exception (With Error Code!) +_isr13: + push byte 13 + jmp isr_common_stub + +; 14: Page Fault Exception (With Error Code!) +_isr14: + push byte 14 + jmp isr_common_stub + +; 15: Reserved Exception +_isr15: + push byte 0 + push byte 15 + jmp isr_common_stub + +; 16: Floating Point Exception +_isr16: + push byte 0 + push byte 16 + jmp isr_common_stub + +; 17: Alignment Check Exception +_isr17: + push byte 0 + push byte 17 + jmp isr_common_stub + +; 18: Machine Check Exception +_isr18: + push byte 0 + push byte 18 + jmp isr_common_stub + +; 19: Reserved +_isr19: + push byte 0 + push byte 19 + jmp isr_common_stub + +; 20: Reserved +_isr20: + push byte 0 + push byte 20 + jmp isr_common_stub + +; 21: Reserved +_isr21: + push byte 0 + push byte 21 + jmp isr_common_stub + +; 22: Reserved +_isr22: + push byte 0 + push byte 22 + jmp isr_common_stub + +; 23: Reserved +_isr23: + push byte 0 + push byte 23 + jmp isr_common_stub + +; 24: Reserved +_isr24: + push byte 0 + push byte 24 + jmp isr_common_stub + +; 25: Reserved +_isr25: + push byte 0 + push byte 25 + jmp isr_common_stub + +; 26: Reserved +_isr26: + push byte 0 + push byte 26 + jmp isr_common_stub + +; 27: Reserved +_isr27: + push byte 0 + push byte 27 + jmp isr_common_stub + +; 28: Reserved +_isr28: + push byte 0 + push byte 28 + jmp isr_common_stub + +; 29: Reserved +_isr29: + push byte 0 + push byte 29 + jmp isr_common_stub + +; 30: Reserved +_isr30: + push byte 0 + push byte 30 + jmp isr_common_stub + +; 31: Reserved +_isr31: + push byte 0 + push byte 31 + jmp isr_common_stub + + + +; The common stub below will pun out into C. Let the +; assembler know that the function is defined in 'exceptions.C'. +extern _lowlevel_dispatch_exception + +; This is the common low-level stub for the exception handler. +; It saves the processor state, sets up for kernel mode +; segments, calls the C-level exception handler, +; and finally restores the stack frame. +isr_common_stub: + pusha + push ds + push es + push fs + push gs + + mov eax, esp ; Push us the stack + push eax + mov eax, _lowlevel_dispatch_exception + call eax ; A special call, preserves the 'eip' register + pop eax + pop gs + pop fs + pop es + pop ds + popa + add esp, 8 ; Ceans up the pushed error code and pushed ISR number + iret ; pops 5 things at once: CS, EIP, EFLAGS, SS, and ESP1 + + + +; load the IDT defined in '_idtp' into the processor. +; This is declared in C as 'extern void _idt_load();' +; In turn, the variable '_idtp' is defined in file 'idt.C'. +global _idt_load +extern _idtp +_idt_load: + lidt [_idtp] + ret diff --git a/MP4/MP4_Sources/interrupts.C b/MP4/MP4_Sources/interrupts.C new file mode 100755 index 0000000..c67fba5 --- /dev/null +++ b/MP4/MP4_Sources/interrupts.C @@ -0,0 +1,172 @@ +/* + File: interrupts.C + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 12/09/05 + +*/ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* (none) */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "assert.H" +#include "utils.H" +#include "console.H" +#include "idt.H" +#include "irq.H" +#include "exceptions.H" +#include "interrupts.H" + +/*--------------------------------------------------------------------------*/ +/* EXTERNS */ +/*--------------------------------------------------------------------------*/ + +/* The low-level functions (defined in file 'irq_low.s') that handle the + 16 PIC-generated interrupts. + These functions are actually merely stubs that put the error code and + the exception code on the stack and then call a low-level function, which + in turn calls the interrupt dispatcher. + Yes, there are more efficient ways to handle exceptions, but they require more + code replication. +*/ + +extern "C" void irq0(); +extern "C" void irq1(); +extern "C" void irq2(); +extern "C" void irq3(); +extern "C" void irq4(); +extern "C" void irq5(); +extern "C" void irq6(); +extern "C" void irq7(); +extern "C" void irq8(); +extern "C" void irq9(); +extern "C" void irq10(); +extern "C" void irq11(); +extern "C" void irq12(); +extern "C" void irq13(); +extern "C" void irq14(); +extern "C" void irq15(); + +extern "C" void lowlevel_dispatch_interrupt(REGS * _r) { + InterruptHandler::dispatch_interrupt(_r); +} + +/*--------------------------------------------------------------------------*/ +/* LOCAL VARIABLES */ +/*--------------------------------------------------------------------------*/ + +InterruptHandler * InterruptHandler::handler_table[InterruptHandler::IRQ_TABLE_SIZE]; + +/*--------------------------------------------------------------------------*/ +/* EXPORTED INTERRUPT DISPATCHER FUNCTIONS */ +/*--------------------------------------------------------------------------*/ + +void InterruptHandler::init_dispatcher() { + + /* -- INITIALIZE LOW-LEVEL INTERRUPT HANDLERS */ + /* Add any new ISRs to the IDT here using IDT::set_gate */ + IDT::set_gate( 0+ IRQ_BASE, (unsigned) irq0, 0x08, 0x8E); + IDT::set_gate( 1+ IRQ_BASE, (unsigned) irq1, 0x08, 0x8E); + IDT::set_gate( 2+ IRQ_BASE, (unsigned) irq2, 0x08, 0x8E); + IDT::set_gate( 3+ IRQ_BASE, (unsigned) irq3, 0x08, 0x8E); + IDT::set_gate( 4+ IRQ_BASE, (unsigned) irq4, 0x08, 0x8E); + IDT::set_gate( 5+ IRQ_BASE, (unsigned) irq5, 0x08, 0x8E); + IDT::set_gate( 6+ IRQ_BASE, (unsigned) irq6, 0x08, 0x8E); + IDT::set_gate( 7+ IRQ_BASE, (unsigned) irq7, 0x08, 0x8E); + + IDT::set_gate( 8+ IRQ_BASE, (unsigned) irq8, 0x08, 0x8E); + IDT::set_gate( 9+ IRQ_BASE, (unsigned) irq9, 0x08, 0x8E); + IDT::set_gate(10+ IRQ_BASE, (unsigned)irq10, 0x08, 0x8E); + IDT::set_gate(11+ IRQ_BASE, (unsigned)irq11, 0x08, 0x8E); + IDT::set_gate(12+ IRQ_BASE, (unsigned)irq12, 0x08, 0x8E); + IDT::set_gate(13+ IRQ_BASE, (unsigned)irq13, 0x08, 0x8E); + IDT::set_gate(14+ IRQ_BASE, (unsigned)irq14, 0x08, 0x8E); + IDT::set_gate(15+ IRQ_BASE, (unsigned)irq15, 0x08, 0x8E); + + /* -- INITIALIZE THE HIGH-LEVEL INTERRUPT HANDLER */ + int i; + for(i = 0; i < IRQ_TABLE_SIZE; i++) { + handler_table[i] = NULL; + } +} + +bool InterruptHandler::generated_by_slave_PIC(unsigned int int_no) { + return int_no > 7; +} + +void InterruptHandler::dispatch_interrupt(REGS * _r) { + + /* -- INTERRUPT NUMBER */ + unsigned int int_no = _r->int_no - IRQ_BASE; + + //Console::puts("INTERRUPT DISPATCHER: int_no = "); + //Console::putui(int_no); + //Console::puts("\n"); + + assert((int_no >= 0) && (int_no < IRQ_TABLE_SIZE)); + + /* -- HAS A HANDLER BEEN REGISTERED FOR THIS INTERRUPT NO? */ + + InterruptHandler * handler = handler_table[int_no]; + + if (!handler) { + /* --- NO DEFAULT HANDLER HAS BEEN REGISTERED. SIMPLY RETURN AN ERROR. */ + Console::puts("INTERRUPT NO: "); + Console::puti(int_no); + Console::puts("\n"); + Console::puts("NO DEFAULT INTERRUPT HANDLER REGISTERED\n"); + // abort(); + } + else { + /* -- HANDLE THE INTERRUPT */ + handler->handle_interrupt(_r); + } + + /* This is an interrupt that was raised by the interrupt controller. We need + to send and end-of-interrupt (EOI) signal to the controller after the + interrupt has been handled. */ + + /* Check if the interrupt was generated by the slave interrupt controller. + If so, send an End-of-Interrupt (EOI) message to the slave controller. */ + + if (generated_by_slave_PIC(int_no)) { + Machine::outportb(0xA0, 0x20); + } + + /* Send an EOI message to the master interrupt controller. */ + Machine::outportb(0x20, 0x20); + +} + +void InterruptHandler::register_handler(unsigned int _irq_code, + InterruptHandler * _handler) { + assert(_irq_code >= 0 && _irq_code < IRQ_TABLE_SIZE); + + handler_table[_irq_code] = _handler; + + Console::puts("Installed interrupt handler at IRQ "); + Console::putui(_irq_code); + Console::puts("\n"); + +} + +void InterruptHandler::deregister_handler(unsigned int _irq_code) { + + assert(_irq_code >= 0 && _irq_code < IRQ_TABLE_SIZE); + + handler_table[_irq_code] = NULL; + + Console::puts("UNINSTALLED interrupt handler at IRQ "); + Console::putui(_irq_code); + Console::puts("\n"); + +} diff --git a/MP4/MP4_Sources/interrupts.H b/MP4/MP4_Sources/interrupts.H new file mode 100755 index 0000000..fd35216 --- /dev/null +++ b/MP4/MP4_Sources/interrupts.H @@ -0,0 +1,90 @@ +/* + File: interrupts.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 11/11/10 + + Description: High-level interrupt handling. + + CPU exceptions are caught by low-level exception and interrupt + handler stubs, which all eventually cause the high-level + exception dispatcher to be called (see 'dispatch_exception() below). + + The dispatcher then looks up the appropriate exception handler + for the given exception, and calls it. + Specific exception handlers are installed by registering an exception handler + object of a class appropriately derived from class 'ExceptionHandler'. The + functionality of the exception handler is then implemented in function + 'handle_exception(REGS * _regs)'. +*/ + +#ifndef _interrupts_H_ // include file only once +#define _interrupts_H_ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "assert.H" +#include "machine.H" +#include "exceptions.H" + +/*--------------------------------------------------------------------------*/ +/* I n t e r r u p t H a n d l e r */ +/*--------------------------------------------------------------------------*/ + +class InterruptHandler { + + private: + + /* The Interrupt Handler Table */ + const static int IRQ_TABLE_SIZE = 16; + const static int IRQ_BASE = 32; + + static InterruptHandler * handler_table[IRQ_TABLE_SIZE]; + + static bool generated_by_slave_PIC(unsigned int int_no); + /* Has the particular interupt been generated by the Slave PIC? */ + + public: + + /* -- POPULATE INTERRUPT-DISPATCHER TABLE */ + static void register_handler(unsigned int _irq_code, + InterruptHandler * _handler); + /* This function allows to install an interrupt handler for the given + Interrupt code. The handler is a function pointer defined above. + Interrupt handlers are installed as Interrupt handlers as well. + The 'register_interrupt' function uses irq2isr to map the IRQ + number to the code. */ + + static void deregister_handler(unsigned int _irq_code); + + /* -- INITIALIZER */ + static void init_dispatcher(); + /* This function is called to initialize the high-level interrupt + handling. No high level interrupt handlers are installed yet. + If an interrupt occurs at this point, the system displays an error + message and terminates. */ + + static void dispatch_interrupt(REGS * _r); + /* This is the high-level interrupt dispatcher. It dispatches the interrupt + to the previously registered interrupt handler. + This function is called by the low-level function + "lowlevel_dispatch_interrupt(REGS * _r)".*/ + + /* -- MANAGE INSTANCES OF INTERRUPT HANDLERS */ + + virtual void handle_interrupt(REGS * _regs) { + assert(false); // sometimes pure virtual functions don't link correctly. + } + /* Different interrupt handlers are derived from the base class + InterruptHandler, and their functionality is implemented in + this function.*/ + +}; + +#endif + + diff --git a/MP4/MP4_Sources/irq.C b/MP4/MP4_Sources/irq.C new file mode 100755 index 0000000..44f27c0 --- /dev/null +++ b/MP4/MP4_Sources/irq.C @@ -0,0 +1,60 @@ +/* + File: irq.C + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 09/03/05 + + This code borrows heavily from Brandon Friesen's the code in Brandon + Friesen's OS Development Tutorial. +*/ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +#define IRQ_BASE 32 + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "machine.H" +#include "irq.H" + +/*--------------------------------------------------------------------------*/ +/* LOCAL FUNCTIONS . */ +/*--------------------------------------------------------------------------*/ + +/* Normally, IRQs 0 to 7 are mapped to IDT entries 8 to 15. + For a variety of reasons it is a good idea to re-map these + IRQs to different locations + We send a sequence of commands to the PICs - 8259's - in order + to have IRQ0 to IRQ15 be remapped to IDT entries 32 to 47. +*/ +static void irq_remap() +{ + Machine::outportb(0x20, 0x11); + Machine::outportb(0xA0, 0x11); + Machine::outportb(0x21, 0x20); + Machine::outportb(0xA1, 0x28); + Machine::outportb(0x21, 0x04); + Machine::outportb(0xA1, 0x02); + Machine::outportb(0x21, 0x01); + Machine::outportb(0xA1, 0x01); + Machine::outportb(0x21, 0x0); + Machine::outportb(0xA1, 0x0); +} + + +/*--------------------------------------------------------------------------*/ +/* EXPORTED FUNCTIONS . */ +/*--------------------------------------------------------------------------*/ + +void IRQ::init() { + + irq_remap(); + + +} diff --git a/MP4/MP4_Sources/irq.H b/MP4/MP4_Sources/irq.H new file mode 100755 index 0000000..0072f9b --- /dev/null +++ b/MP4/MP4_Sources/irq.H @@ -0,0 +1,38 @@ +/* + File: irq.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 09/03/02 + + Description: Interrupt Table (IRQ) + + For details see Section 7 of Brandon Friesen's Tutorial + on OS Kernel Development. + URL: http://www.osdever.net/bkerndev/Docs/title.htm + +*/ + +#ifndef _IRQ_H_ // include file only once +#define _IRQ_H_ + + +/*--------------------------------------------------------------------------*/ +/* */ +/*--------------------------------------------------------------------------*/ + +class IRQ { + +public: + + static void init(); + /* Initialize the IRQ handlers, i.e. fill 16 entries with pointers to handle + the PIC generated interrupts. These interrupts are routed to the exception + dispatcher (see 'exceptions.H'). At this point, no exception handlers are + installed yet. + */ + +}; + +#endif diff --git a/MP4/MP4_Sources/irq_low.asm b/MP4/MP4_Sources/irq_low.asm new file mode 100755 index 0000000..e94271c --- /dev/null +++ b/MP4/MP4_Sources/irq_low.asm @@ -0,0 +1,136 @@ +global _irq0 +global _irq1 +global _irq2 +global _irq3 +global _irq4 +global _irq5 +global _irq6 +global _irq7 +global _irq8 +global _irq9 +global _irq10 +global _irq11 +global _irq12 +global _irq13 +global _irq14 +global _irq15 + +; 32: IRQ0 +_irq0: + push byte 0 + push byte 32 + jmp irq_common_stub + +; 33: IRQ1 +_irq1: + push byte 0 + push byte 33 + jmp irq_common_stub + +; 34: IRQ2 +_irq2: + push byte 0 + push byte 34 + jmp irq_common_stub + +; 35: IRQ3 +_irq3: + push byte 0 + push byte 35 + jmp irq_common_stub + +; 36: IRQ4 +_irq4: + push byte 0 + push byte 36 + jmp irq_common_stub + +; 37: IRQ5 +_irq5: + push byte 0 + push byte 37 + jmp irq_common_stub + +; 38: IRQ6 +_irq6: + push byte 0 + push byte 38 + jmp irq_common_stub + +; 39: IRQ7 +_irq7: + push byte 0 + push byte 39 + jmp irq_common_stub + +; 40: IRQ8 +_irq8: + push byte 0 + push byte 40 + jmp irq_common_stub + +; 41: IRQ9 +_irq9: + push byte 0 + push byte 41 + jmp irq_common_stub + +; 42: IRQ10 +_irq10: + push byte 0 + push byte 42 + jmp irq_common_stub + +; 43: IRQ11 +_irq11: + push byte 0 + push byte 43 + jmp irq_common_stub + +; 44: IRQ12 +_irq12: + push byte 0 + push byte 44 + jmp irq_common_stub + +; 45: IRQ13 +_irq13: + push byte 0 + push byte 45 + jmp irq_common_stub + +; 46: IRQ14 +_irq14: + push byte 0 + push byte 46 + jmp irq_common_stub + +; 47: IRQ15 +_irq15: + push byte 0 + push byte 47 + jmp irq_common_stub + +extern _lowlevel_dispatch_interrupt + +irq_common_stub: + pusha + push ds + push es + push fs + push gs + + mov eax, esp + + push eax + mov eax, _lowlevel_dispatch_interrupt + call eax + pop eax + + pop gs + pop fs + pop es + pop ds + popa + add esp, 8 + iret diff --git a/MP4/MP4_Sources/kernel.C b/MP4/MP4_Sources/kernel.C new file mode 100755 index 0000000..d982ec9 --- /dev/null +++ b/MP4/MP4_Sources/kernel.C @@ -0,0 +1,299 @@ +/* + File: kernel.C + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 2017/06/20 + + + This file has the main entry point to the operating system. + +*/ + + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +#define GB * (0x1 << 30) +#define MB * (0x1 << 20) +#define KB * (0x1 << 10) +#define KERNEL_POOL_START_FRAME ((2 MB) / Machine::PAGE_SIZE) +#define KERNEL_POOL_SIZE ((2 MB) / Machine::PAGE_SIZE) +#define PROCESS_POOL_START_FRAME ((4 MB) / Machine::PAGE_SIZE) +#define PROCESS_POOL_SIZE ((28 MB) / Machine::PAGE_SIZE) +/* definition of the kernel and process memory pools */ + +#define MEM_HOLE_START_FRAME ((15 MB) / Machine::PAGE_SIZE) +#define MEM_HOLE_SIZE ((1 MB) / Machine::PAGE_SIZE) +/* we have a 1 MB hole in physical memory starting at address 15 MB */ + +#define FAULT_ADDR (4 MB) +/* used in the code later as address referenced to cause page faults. */ +#define NACCESS ((1 MB) / 4) +/* NACCESS integer access (i.e. 4 bytes in each access) are made starting at address FAULT_ADDR */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "machine.H" /* LOW-LEVEL STUFF */ +#include "console.H" +#include "gdt.H" +#include "idt.H" /* LOW-LEVEL EXCEPTION MGMT. */ +#include "irq.H" +#include "exceptions.H" +#include "interrupts.H" + +#include "simple_keyboard.H" /* SIMPLE KB DRIVER */ +#include "simple_timer.H" /* SIMPLE TIMER MANAGEMENT */ + +#include "page_table.H" +#include "paging_low.H" + +#include "vm_pool.H" + +/*--------------------------------------------------------------------------*/ +/* FORWARD REFERENCES FOR TEST CODE */ +/*--------------------------------------------------------------------------*/ + +void TestPassed(); +void TestFailed(); + +void GeneratePageTableMemoryReferences(unsigned long start_address, int n_references); +void GenerateVMPoolMemoryReferences(VMPool *pool, int size1, int size2); + +/*--------------------------------------------------------------------------*/ +/* MEMORY ALLOCATION */ +/*--------------------------------------------------------------------------*/ + +VMPool *current_pool; + +typedef unsigned int size_t; + +//replace the operator "new" +void * operator new (size_t size) { + unsigned long a = current_pool->allocate((unsigned long)size); + return (void *)a; +} + +//replace the operator "new[]" +void * operator new[] (size_t size) { + unsigned long a = current_pool->allocate((unsigned long)size); + return (void *)a; +} + +//replace the operator "delete" +void operator delete (void * p) { + current_pool->release((unsigned long)p); +} + +//replace the operator "delete[]" +void operator delete[] (void * p) { + current_pool->release((unsigned long)p); +} + +/*--------------------------------------------------------------------------*/ +/* EXCEPTION HANDLERS */ +/*--------------------------------------------------------------------------*/ + +/* -- EXAMPLE OF THE DIVISION-BY-ZERO HANDLER */ + +void dbz_handler(REGS * r) { + Console::puts("DIVISION BY ZERO\n"); + for(;;); +} + + +/*--------------------------------------------------------------------------*/ +/* MAIN ENTRY INTO THE OS */ +/*--------------------------------------------------------------------------*/ + +int main() { + + GDT::init(); + Console::init(); + IDT::init(); + ExceptionHandler::init_dispatcher(); + IRQ::init(); + InterruptHandler::init_dispatcher(); + + + /* -- EXAMPLE OF AN EXCEPTION HANDLER -- */ + + class DBZ_Handler : public ExceptionHandler { + /* We derive Division-by-Zero handler from ExceptionHandler + and overload the method handle_exception. */ + public: + virtual void handle_exception(REGS * _regs) { + Console::puts("DIVISION BY ZERO!\n"); + for(;;); + } + } dbz_handler; + + /* Register the DBZ handler for exception no.0 + with the exception dispatcher. */ + ExceptionHandler::register_handler(0, &dbz_handler); + + + /* -- INITIALIZE THE TIMER (we use a very simple timer).-- */ + + SimpleTimer timer(100); /* timer ticks every 10ms. */ + + /* ---- Register timer handler for interrupt no.0 + with the interrupt dispatcher. */ + InterruptHandler::register_handler(0, &timer); + + /* NOTE: The timer chip starts periodically firing as + soon as we enable interrupts. + It is important to install a timer handler, as we + would get a lot of uncaptured interrupts otherwise. */ + + /* -- INSTALL KEYBOARD HANDLER -- */ + SimpleKeyboard::init(); + + Console::puts("after installing keyboard handler\n"); + + /* -- ENABLE INTERRUPTS -- */ + + Machine::enable_interrupts(); + + /* -- INITIALIZE FRAME POOLS -- */ + + ContFramePool kernel_mem_pool(KERNEL_POOL_START_FRAME, + KERNEL_POOL_SIZE, + 0, + 0); + + unsigned long n_info_frames = + ContFramePool::needed_info_frames(PROCESS_POOL_SIZE); + + unsigned long process_mem_pool_info_frame = + kernel_mem_pool.get_frames(n_info_frames); + + ContFramePool process_mem_pool(PROCESS_POOL_START_FRAME, + PROCESS_POOL_SIZE, + process_mem_pool_info_frame, + n_info_frames); + + /* Take care of the hole in the memory. */ + process_mem_pool.mark_inaccessible(MEM_HOLE_START_FRAME, MEM_HOLE_SIZE); + + /* -- INITIALIZE MEMORY (PAGING) -- */ + + /* ---- INSTALL PAGE FAULT HANDLER -- */ + + class PageFault_Handler : public ExceptionHandler { + /* We derive the page fault handler from ExceptionHandler + and overload the method handle_exception. */ + public: + virtual void handle_exception(REGS * _regs) { + PageTable::handle_fault(_regs); + } + } pagefault_handler; + + /* ---- Register the page fault handler for exception no. 14 + with the exception dispatcher. */ + ExceptionHandler::register_handler(14, &pagefault_handler); + + /* ---- INITIALIZE THE PAGE TABLE -- */ + + PageTable::init_paging(&kernel_mem_pool, + &process_mem_pool, + 4 MB); + + PageTable pt1; + + pt1.load(); + + PageTable::enable_paging(); + + /* -- INITIALIZE THE TWO VIRTUAL MEMORY PAGE POOLS -- */ + + /* -- MOST OF WHAT WE NEED IS SETUP. THE KERNEL CAN START. */ + + Console::puts("Hello World!\n"); + + /* Comment out the following line to test the VM Pools */ +#define _TEST_PAGE_TABLE_ + +#ifdef _TEST_PAGE_TABLE_ + + /* WE TEST JUST THE PAGE TABLE */ + GeneratePageTableMemoryReferences(FAULT_ADDR, NACCESS); + +#else + + /* WE TEST JUST THE VM POOLS */ + + /* -- CREATE THE VM POOLS. */ + + VMPool code_pool(512 MB, 256 MB, &process_mem_pool, &pt1); + VMPool heap_pool(1 GB, 256 MB, &process_mem_pool, &pt1); + + /* -- NOW THE POOLS HAVE BEEN CREATED. */ + + Console::puts("VM Pools successfully created!\n"); + + /* -- GENERATE MEMORY REFERENCES TO THE VM POOLS */ + + Console::puts("I am starting with an extensive test\n"); + Console::puts("of the VM Pool memory allocator.\n"); + Console::puts("Please be patient...\n"); + Console::puts("Testing the memory allocation on code_pool...\n"); + GenerateVMPoolMemoryReferences(&code_pool, 50, 100); + Console::puts("Testing the memory allocation on heap_pool...\n"); + GenerateVMPoolMemoryReferences(&heap_pool, 50, 100); + +#endif + + TestPassed(); +} + +void GeneratePageTableMemoryReferences(unsigned long start_address, int n_references) { + int *foo = (int *) start_address; + + for (int i=0; iis_legitimate((unsigned long)arr) == false) { + TestFailed(); + } + for(int j=0; j=0; j--) { + if(arr[j] != j) { + TestFailed(); + } + } + delete arr; + } +} + +void TestFailed() { + Console::puts("Test Failed\n"); + Console::puts("YOU CAN TURN OFF THE MACHINE NOW.\n"); + for(;;); +} + +void TestPassed() { + Console::puts("Test Passed! Congratulations!\n"); + Console::puts("YOU CAN SAFELY TURN OFF THE MACHINE NOW.\n"); + for(;;); +} diff --git a/MP4/MP4_Sources/linker.ld b/MP4/MP4_Sources/linker.ld new file mode 100755 index 0000000..fbb9a12 --- /dev/null +++ b/MP4/MP4_Sources/linker.ld @@ -0,0 +1,36 @@ +OUTPUT_FORMAT("binary") +ENTRY(start) +phys = 0x00100000; +SECTIONS +{ + .text phys : AT(phys) { + code = .; + *(.text) + *(.gnu.linkonce.t.*) + *(.gnu.linkonce.r.*) + *(.rodata) + . = ALIGN(4096); + } + .data : AT(phys + (data - code)) + { + data = .; + *(.data) + start_ctors = .; + *(.ctor*) + end_ctors = .; + start_dtors = .; + *(.dtor*) + end_dtors = .; + *(.gnu.linkonce.d.*) + . = ALIGN(4096); + } + .bss : AT(phys + (bss - code)) + { + bss = .; + *(.bss) + *(.gnu.linkonce.b.*) + . = ALIGN(4096); + } + end = .; +} + diff --git a/MP4/MP4_Sources/machine.C b/MP4/MP4_Sources/machine.C new file mode 100755 index 0000000..2d756a7 --- /dev/null +++ b/MP4/MP4_Sources/machine.C @@ -0,0 +1,70 @@ +/* + File: machine.C + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 12/09/04 + + LOW-LEVEL MACHINE FUNCTIONS. + +*/ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "machine.H" +#include "machine_low.H" + +#include "assert.H" + +/*--------------------------------------------------------------------------*/ +/* INTERRUPTS */ +/*--------------------------------------------------------------------------*/ + +bool Machine::interrupts_enabled() { + /* We check the IF flag (INTERRUPT ENABLE) in the EFLAGS status register. */ + return get_EFLAGS() & (1 << 9); +} + +void Machine::enable_interrupts() { + assert(!interrupts_enabled()); + __asm__ __volatile__ ("sti"); +} + +void Machine::disable_interrupts() { + assert(interrupts_enabled()); + __asm__ __volatile__ ("cli"); +} + +/*--------------------------------------------------------------------------*/ +/* PORT I/O OPERATIONS */ +/*--------------------------------------------------------------------------*/ + +/* We will use this later on for reading from the I/O ports to get data +* from devices such as the keyboard. We are using what is called +* 'inline assembly' in these routines to actually do the work */ +char Machine::inportb (unsigned short _port) { + unsigned char rv; + __asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port)); + return rv; +} + +unsigned short Machine::inportw (unsigned short _port) { + unsigned short rv; + __asm__ __volatile__ ("inw %1, %0" : "=a" (rv) : "dN" (_port)); + return rv; +} + +/* We will use this to write to I/O ports to send bytes to devices. This +* will be used in the next tutorial for changing the textmode cursor +* position. Again, we use some inline assembly for the stuff that simply +* cannot be done in C */ +void Machine::outportb (unsigned short _port, char _data) { + __asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data)); +} + +void Machine::outportw (unsigned short _port, unsigned short _data) { + __asm__ __volatile__ ("outw %1, %0" : : "dN" (_port), "a" (_data)); +} diff --git a/MP4/MP4_Sources/machine.H b/MP4/MP4_Sources/machine.H new file mode 100755 index 0000000..68eb6df --- /dev/null +++ b/MP4/MP4_Sources/machine.H @@ -0,0 +1,123 @@ +/* + File: machine.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 12/09/05 + + Description: Low-level definitions for x86 architecture. + + - Register context + - Data and code segment for kernel. + - Interrupt enable/disable. + +*/ + +#ifndef _machine_H_ // include file only once +#define _machine_H_ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + +/* REGISTER CONTEXT ON THE STACK WHEN EXCEPTION/INTERRUPT REACHES EXCEPTION + DISPATCHER OR INTERRUPT DISPATCHER. + THIS IS ALSO USED IN THREAD SCHEDULING (for context switching) */ +typedef struct regs { + + /* segment descriptors */ + unsigned int gs; + unsigned int fs; + unsigned int es; + unsigned int ds; + + /* General purpose registers, managed by pusha/popa in x86. */ + unsigned int edi; + unsigned int esi; + unsigned int ebp; + unsigned int esp; + unsigned int ebx; + unsigned int edx; + unsigned int ecx; + unsigned int eax; + + /* In the low-level handlers (i.e. before we call the + exception or interrupt dispatcher) we push number + of the interrupt and error code onto the stack. */ + unsigned int int_no; + unsigned int err_code; + + /* These registers are pushed on the stack when + the exception occurs. */ + unsigned int eip; + unsigned int cs; + unsigned int eflags; + + /* These registers are pushed on the stack only when + the exception occured in user mode. + As long as you are in kernel mode, the register context + is 68 bytes long, and not 76! */ + unsigned int useresp; + unsigned int ss; +} REGS; + + +/*--------------------------------------------------------------------------*/ +/* CLASS M a c h i n e */ +/*--------------------------------------------------------------------------*/ + +class Machine { + +public: + +/*---------------------------------------------------------------*/ +/* MEMORY MANAGEMENT */ +/*---------------------------------------------------------------*/ + + static const unsigned int PAGE_SIZE = 4096; + static const unsigned int PT_ENTRIES_PER_PAGE = 1024; + +/*---------------------------------------------------------------*/ +/* INTERRUPTS */ +/*---------------------------------------------------------------*/ + + /* + This is done by checking the Interrupt Enabled flag in the + EFLAG status register and by issuing STI/CLI instructions. + (NOTE: If we have multiple threads, each has its own status register.) + */ + + static bool interrupts_enabled(); + /* Returns whether interrupts are enabled. */ + + static void enable_interrupts(); + static void disable_interrupts(); + /* Issue CLI/STI instructions. */ + +/*---------------------------------------------------------------*/ +/* PORT I/O OPERATIONS */ +/*---------------------------------------------------------------*/ + + static char inportb (unsigned short _port); + static unsigned short inportw (unsigned short _port); + /* Read data from input port _port.*/ + + static void outportb (unsigned short _port, char _data); + static void outportw (unsigned short _port, unsigned short _data); + /* Write _data to output port _port.*/ + +}; +#endif diff --git a/MP4/MP4_Sources/machine_low.H b/MP4/MP4_Sources/machine_low.H new file mode 100755 index 0000000..ff58008 --- /dev/null +++ b/MP4/MP4_Sources/machine_low.H @@ -0,0 +1,31 @@ +/* + File: machine_low.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 12/09/03 + + + Low-level CPU operations. + +*/ + +#ifndef _machine_low_H_ // include file only once +#define _machine_low_H_ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + + /* (none) */ + +/*--------------------------------------------------------------------------*/ +/* LOW-LEVER CPU OPERATIONS */ +/*--------------------------------------------------------------------------*/ + +extern "C" unsigned long get_EFLAGS(); +/* Return value of the EFLAGS status register. */ + +#endif + diff --git a/MP4/MP4_Sources/machine_low.asm b/MP4/MP4_Sources/machine_low.asm new file mode 100755 index 0000000..1d0998e --- /dev/null +++ b/MP4/MP4_Sources/machine_low.asm @@ -0,0 +1,18 @@ +; File: machine_low.asm +; +; Low level CPU handling functions. +; +; September 3, 2012 + +; ---------------------------------------------------------------------- +; get_EFLAGS() +; +; Returns value of the EFLAGS status register. +; +; ---------------------------------------------------------------------- +global _get_EFLAGS +; this function is exported. +_get_EFLAGS: + pushfd ; push eflags + pop eax ; pop contents into eax + ret \ No newline at end of file diff --git a/MP4/MP4_Sources/makefile b/MP4/MP4_Sources/makefile new file mode 100755 index 0000000..ecf4f14 --- /dev/null +++ b/MP4/MP4_Sources/makefile @@ -0,0 +1,80 @@ +CPP = gcc +CPP_OPTIONS = -m32 -nostdlib -fno-builtin -nostartfiles -nodefaultlibs -fno-exceptions -fno-rtti -fno-stack-protector -fleading-underscore -fno-asynchronous-unwind-tables + +all: kernel.bin + +clean: + rm -f *.o *.bin + +start.o: start.asm gdt_low.asm idt_low.asm irq_low.asm + nasm -f aout -o start.o start.asm + +utils.o: utils.C utils.H + $(CPP) $(CPP_OPTIONS) -c -o utils.o utils.C + +assert.o: assert.C assert.H + $(CPP) $(CPP_OPTIONS) -c -o assert.o assert.C + + +# ==== VARIOUS LOW-LEVEL STUFF ===== + +gdt.o: gdt.C gdt.H + $(CPP) $(CPP_OPTIONS) -c -o gdt.o gdt.C + +machine.o: machine.C machine.H + $(CPP) $(CPP_OPTIONS) -c -o machine.o machine.C + +machine_low.o: machine_low.asm machine_low.H + nasm -f aout -o machine_low.o machine_low.asm + +# ==== EXCEPTIONS AND INTERRUPTS ===== + +idt.o: idt.C idt.H + $(CPP) $(CPP_OPTIONS) -c -o idt.o idt.C + +irq.o: irq.C irq.H + $(CPP) $(CPP_OPTIONS) -c -o irq.o irq.C + +exceptions.o: exceptions.C exceptions.H + $(CPP) $(CPP_OPTIONS) -c -o exceptions.o exceptions.C + +interrupts.o: interrupts.C interrupts.H + $(CPP) $(CPP_OPTIONS) -c -o interrupts.o interrupts.C + +# ==== DEVICES ===== + +console.o: console.C console.H + $(CPP) $(CPP_OPTIONS) -c -o console.o console.C + +simple_timer.o: simple_timer.C simple_timer.H + $(CPP) $(CPP_OPTIONS) -c -o simple_timer.o simple_timer.C + +simple_keyboard.o: simple_keyboard.C simple_keyboard.H + $(CPP) $(CPP_OPTIONS) -c -o simple_keyboard.o simple_keyboard.C + +# ==== MEMORY ===== + +paging_low.o: paging_low.asm paging_low.H + nasm -f aout -o paging_low.o paging_low.asm + +page_table.o: page_table.C page_table.H paging_low.H + $(CPP) $(CPP_OPTIONS) -c -o page_table.o page_table.C + +cont_frame_pool.o: cont_frame_pool.C cont_frame_pool.H + $(CPP) $(CPP_OPTIONS) -c -o cont_frame_pool.o cont_frame_pool.C + +vm_pool.o: vm_pool.C vm_pool.H + $(CPP) $(CPP_OPTIONS) -c -o vm_pool.o vm_pool.C + +# ==== KERNEL MAIN FILE ===== + +kernel.o: kernel.C console.H simple_timer.H page_table.H + $(CPP) $(CPP_OPTIONS) -c -o kernel.o kernel.C + +kernel.bin: start.o utils.o kernel.o assert.o console.o gdt.o idt.o irq.o exceptions.o \ + interrupts.o simple_timer.o simple_keyboard.o paging_low.o page_table.o cont_frame_pool.o vm_pool.o machine.o \ + machine_low.o + ld -melf_i386 -T linker.ld -o kernel.bin start.o utils.o kernel.o assert.o console.o \ + gdt.o idt.o irq.o exceptions.o \ + interrupts.o simple_timer.o simple_keyboard.o paging_low.o page_table.o cont_frame_pool.o vm_pool.o machine.o \ + machine_low.o diff --git a/MP4/MP4_Sources/page_table.C b/MP4/MP4_Sources/page_table.C new file mode 100644 index 0000000..5db0877 --- /dev/null +++ b/MP4/MP4_Sources/page_table.C @@ -0,0 +1,56 @@ +#include "assert.H" +#include "exceptions.H" +#include "console.H" +#include "paging_low.H" +#include "page_table.H" + +PageTable * PageTable::current_page_table = NULL; +unsigned int PageTable::paging_enabled = 0; +ContFramePool * PageTable::kernel_mem_pool = NULL; +ContFramePool * PageTable::process_mem_pool = NULL; +unsigned long PageTable::shared_size = 0; + + +void PageTable::init_paging(ContFramePool * _kernel_mem_pool, + ContFramePool * _process_mem_pool, + const unsigned long _shared_size) +{ + assert(false); + Console::puts("Initialized Paging System\n"); +} + +PageTable::PageTable() +{ + assert(false); + Console::puts("Constructed Page Table object\n"); +} + + +void PageTable::load() +{ + assert(false); + Console::puts("Loaded page table\n"); +} + +void PageTable::enable_paging() +{ + assert(false); + Console::puts("Enabled paging\n"); +} + +void PageTable::handle_fault(REGS * _r) +{ + assert(false); + Console::puts("handled page fault\n"); +} + +void PageTable::register_pool(VMPool * _vm_pool) +{ + assert(false); + Console::puts("registered VM pool\n"); +} + +void PageTable::free_page(unsigned long _page_no) { + assert(false); + Console::puts("freed page\n"); +} diff --git a/MP4/MP4_Sources/page_table.H b/MP4/MP4_Sources/page_table.H new file mode 100755 index 0000000..7d3fbd0 --- /dev/null +++ b/MP4/MP4_Sources/page_table.H @@ -0,0 +1,100 @@ +/* + File: page_table.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 16/12/07 + + Description: Basic Paging. + + */ + +#ifndef _page_table_H_ // include file only once +#define _page_table_H_ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "machine.H" +#include "exceptions.H" +#include "cont_frame_pool.H" +#include "vm_pool.H" + +/*--------------------------------------------------------------------------*/ +/* FORWARDS */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* P A G E - T A B L E */ +/*--------------------------------------------------------------------------*/ + +class PageTable { + +private: + + /* THESE MEMBERS ARE COMMON TO ENTIRE PAGING SUBSYSTEM */ + static PageTable * current_page_table; /* pointer to currently loaded page table object */ + static unsigned int paging_enabled; /* is paging turned on (i.e. are addresses logical)? */ + static ContFramePool * kernel_mem_pool; /* Frame pool for the kernel memory */ + static ContFramePool * process_mem_pool; /* Frame pool for the process memory */ + static unsigned long shared_size; /* size of shared address space */ + + /* DATA FOR CURRENT PAGE TABLE */ + unsigned long * page_directory; /* where is page directory located? */ + +public: + static const unsigned int PAGE_SIZE = Machine::PAGE_SIZE; + /* in bytes */ + static const unsigned int ENTRIES_PER_PAGE = Machine::PT_ENTRIES_PER_PAGE; + /* in entries */ + + static void init_paging(ContFramePool * _kernel_mem_pool, + ContFramePool * _process_mem_pool, + const unsigned long _shared_size); + /* Set the global parameters for the paging subsystem. */ + + PageTable(); + /* Initializes a page table with a given location for the directory and the + page table proper. + NOTE: The PageTable object still needs to be stored somewhere! + Probably it is best to have it on the stack, as there is no + memory manager yet... + NOTE2: It may also be simpler to create the first page table *before* + paging has been enabled. + */ + + void load(); + /* Makes the given page table the current table. This must be done once during + system startup and whenever the address space is switched (e.g. during + process switching). */ + + static void enable_paging(); + /* Enable paging on the CPU. Typically, a CPU start with paging disabled, and + memory is accessed by addressing physical memory directly. After paging is + enabled, memory is addressed logically. */ + + static void handle_fault(REGS * _r); + /* The page fault handler. */ + + // -- NEW IN MP4 + + void register_pool(VMPool * _vm_pool); + /* Register a virtual memory pool with the page table. */ + + void free_page(unsigned long _page_no); + /* If page is valid, release frame and mark page invalid. */ + +}; + +#endif + diff --git a/MP4/MP4_Sources/paging_low.H b/MP4/MP4_Sources/paging_low.H new file mode 100755 index 0000000..f36603a --- /dev/null +++ b/MP4/MP4_Sources/paging_low.H @@ -0,0 +1,51 @@ +/* + File: paging_low.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 09/03/28 + + + Low-level register operations for x86 paging subsystem. + +*/ + +#ifndef _paging_low_H_ // include file only once +#define _paging_low_H_ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* -- none -- */ + +/*--------------------------------------------------------------------------*/ +/* FORWARDS */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* LOW-LEVEL PAGING ROUTINES */ +/*--------------------------------------------------------------------------*/ + +/* The low-level functions (defined in file 'paging_low.asm') that handle the + low-level function to manage the page tables. */ + + +/* -- CR0 -- */ +extern "C" unsigned long read_cr0(); +extern "C" void write_cr0(unsigned long _val); + +/* -- CR2 -- */ +extern "C" unsigned long read_cr2(); + +/* -- CR3 -- */ +extern "C" unsigned long read_cr3(); +extern "C" void write_cr3(unsigned long _val); + + +#endif + + diff --git a/MP4/MP4_Sources/paging_low.asm b/MP4/MP4_Sources/paging_low.asm new file mode 100755 index 0000000..071a775 --- /dev/null +++ b/MP4/MP4_Sources/paging_low.asm @@ -0,0 +1,32 @@ +global _read_cr0 +_read_cr0: + mov eax, cr0 + retn + +global _write_cr0 +_write_cr0: + push ebp + mov ebp, esp + mov eax, [ebp+8] + mov cr0, eax + pop ebp + retn + +global _read_cr2 +_read_cr2: + mov eax, cr2 + retn + +global _read_cr3 +_read_cr3: + mov eax, cr3 + retn + +global _write_cr3 +_write_cr3: + push ebp + mov ebp, esp + mov eax, [ebp+8] + mov cr3, eax + pop ebp + retn \ No newline at end of file diff --git a/MP4/MP4_Sources/simple_keyboard.C b/MP4/MP4_Sources/simple_keyboard.C new file mode 100755 index 0000000..f821d80 --- /dev/null +++ b/MP4/MP4_Sources/simple_keyboard.C @@ -0,0 +1,79 @@ +/* + File: simple_keyboard.C + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 2017/06/30 + + Simple control of the keyboard. + */ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* (none) */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "assert.H" +#include "machine.H" +#include "console.H" +#include "interrupts.H" +#include "simple_keyboard.H" + +/*--------------------------------------------------------------------------*/ +/* CONSTRUCTOR */ +/*--------------------------------------------------------------------------*/ + +SimpleKeyboard::SimpleKeyboard() { + key_pressed = false; +} + +/*--------------------------------------------------------------------------*/ +/* METHODS FOR CLASS S i m p l e K e y b o a r d */ +/*--------------------------------------------------------------------------*/ + +void SimpleKeyboard::handle_interrupt(REGS *_r) { + /* What to do when keyboard interrupt occurs? In this case, we update + "key_pressed". */ + + unsigned char status = Machine::inportb(STATUS_PORT); + /* lowest bit of status will be set if buffer is not empty. */ + if (status & 0x01) { + char kc = Machine::inportb(DATA_PORT); + if (kc >= 0) { + key_pressed = true; + key_code = kc; + } + } +} + +void SimpleKeyboard::wait() { + /* Loop until the user presses a key. */ + + kb.key_pressed = false; + + while(kb.key_pressed == false); + +} + +char SimpleKeyboard::read() { + /* Loop until the user presses a key, and then return the keycode. */ + kb.key_pressed = false; + + while (kb.key_pressed == false); + + return kb.key_code; +} + +SimpleKeyboard SimpleKeyboard::kb; + +void SimpleKeyboard::init() { + InterruptHandler::register_handler(1, &kb); +} + + diff --git a/MP4/MP4_Sources/simple_keyboard.H b/MP4/MP4_Sources/simple_keyboard.H new file mode 100755 index 0000000..823c09c --- /dev/null +++ b/MP4/MP4_Sources/simple_keyboard.H @@ -0,0 +1,68 @@ +/* + File: simple_keyboard.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 2017/02/17 + + Implements an interrupt handler for the keyboard. + The function is implemented in 'handle_interrupt'. + +*/ + +#ifndef _SIMPLE_KEYBOARD_H_ +#define _SIMPLE_KEYBOARD_H_ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "interrupts.H" + +/*--------------------------------------------------------------------------*/ +/* S I M P L E K E Y B O A R D */ +/*--------------------------------------------------------------------------*/ + +class SimpleKeyboard : public InterruptHandler { + +public : + + SimpleKeyboard(); + /* Initialize the simple keyboard. */ + + virtual void handle_interrupt(REGS *_r); + /* This must be installed as the interrupt handler for the keyboard + when the system gets initialized. (e.g. in "kernel.C") + */ + + static void init(); + + static void wait(); + /* Wait until keyboard is pressed. The implementation is based + on busy looping! */ + + static char read(); + /* Wait until keyboard is pressed and return the keycode. + Note: The keycode is not the same as the character! + Note2: This is a very "approximate" implementation. Not complete, + and likely not correct. Use only under duress! + The implementation is based on busy looping! */ + +private: + bool key_pressed; + char key_code; + static SimpleKeyboard kb; + + static const unsigned short STATUS_PORT = 0x64; + static const unsigned short DATA_PORT = 0x60; + +}; + +#endif diff --git a/MP4/MP4_Sources/simple_timer.C b/MP4/MP4_Sources/simple_timer.C new file mode 100755 index 0000000..61c9b1c --- /dev/null +++ b/MP4/MP4_Sources/simple_timer.C @@ -0,0 +1,100 @@ +/* + File: simple_timer.C + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 09/03/19 + + Simple control of the +*/ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "assert.H" +#include "utils.H" +#include "console.H" +#include "interrupts.H" +#include "simple_timer.H" + +/*--------------------------------------------------------------------------*/ +/* CONSTRUCTOR */ +/*--------------------------------------------------------------------------*/ + +SimpleTimer::SimpleTimer(int _hz) { + /* How long has the system been running? */ + seconds = 0; + ticks = 0; /* ticks since last "seconds" update. */ + + /* At what frequency do we update the ticks counter? */ + /* hz = 18; */ + /* Actually, by defaults it is 18.22Hz. + In this way, a 16-bit counter wraps + around every hour. */ + set_frequency(_hz); + +} + +/*--------------------------------------------------------------------------*/ +/* METHODS FOR CLASS S i m p l e T i m e r */ +/*--------------------------------------------------------------------------*/ + + +void SimpleTimer::handle_interrupt(REGS *_r) { +/* What to do when timer interrupt occurs? In this case, we update "ticks", + and maybe update "seconds". + This must be installed as the interrupt handler for the timer in the + when the system gets initialized. (e.g. in "kernel.C") */ + + /* Increment our "ticks" count */ + ticks++; + + /* Whenever a second is over, we update counter accordingly. */ + if (ticks >= hz ) + { + seconds++; + ticks = 0; + Console::puts("One second has passed\n"); + } +} + + +void SimpleTimer::set_frequency(int _hz) { +/* Set the interrupt frequency for the simple timer. + Preferably set this before installing the timer handler! */ + + hz = _hz; /* Remember the frequency. */ + int divisor = 1193180 / _hz; /* The input clock runs at 1.19MHz */ + Machine::outportb(0x43, 0x34); /* Set command byte to be 0x36. */ + Machine::outportb(0x40, divisor & 0xFF); /* Set low byte of divisor. */ + Machine::outportb(0x40, divisor >> 8); /* Set high byte of divisor. */ +} + +void SimpleTimer::current(unsigned long * _seconds, int * _ticks) { +/* Return the current "time" since the system started. */ + + *_seconds = seconds; + *_ticks = ticks; +} + +void SimpleTimer::wait(unsigned long _seconds) { +/* Wait for a particular time to be passed. This is based on busy looping! */ + + unsigned long now_seconds; + int now_ticks; + current(&now_seconds, &now_ticks); + + unsigned long then_seconds = now_seconds + _seconds; + + while((seconds <= then_seconds) && (ticks < now_ticks)); +} + + diff --git a/MP4/MP4_Sources/simple_timer.H b/MP4/MP4_Sources/simple_timer.H new file mode 100755 index 0000000..ca48a0a --- /dev/null +++ b/MP4/MP4_Sources/simple_timer.H @@ -0,0 +1,70 @@ +/* + File: simple_timer.H + + Author: R. Bettati + Department of Computer Science + Texas A&M University + Date : 09/03/19 + + This is a simple example of a hardware interrupt handler. + As an example, this implements a timer, which in turn + triggers a function to be called at the given frequency. + The function is implemented in 'handle_interrupt'. + +*/ + +#ifndef _SIMPLE_TIMER_H_ +#define _SIMPLE_TIMER_H_ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "interrupts.H" + +/*--------------------------------------------------------------------------*/ +/* S I M P L E T I M E R */ +/*--------------------------------------------------------------------------*/ + +class SimpleTimer : public InterruptHandler { + +private: + + /* How long has the system been running? */ + unsigned long seconds; + int ticks; /* ticks since last "seconds" update. */ + + /* At what frequency do we update the ticks counter? */ + int hz; /* Actually, by defaults it is 18.22Hz. + In this way, a 16-bit counter wraps + around every hour. */ + + void set_frequency(int _hz); + /* Set the interrupt frequency for the simple timer. */ + +public : + + SimpleTimer(int _hz); + /* Initialize the simple timer, and set its frequency. */ + + virtual void handle_interrupt(REGS *_r); + /* This must be installed as the interrupt handler for the timer + when the system gets initialized. (e.g. in "kernel.C") + */ + + void current(unsigned long * _seconds, int * _ticks); + /* Return the current "time" since the system started. */ + + void wait(unsigned long _seconds); + /* Wait for a particular time to be passed. The implementation is based + on busy looping! */ + +}; + +#endif diff --git a/MP4/MP4_Sources/start.asm b/MP4/MP4_Sources/start.asm new file mode 100755 index 0000000..9bbc858 --- /dev/null +++ b/MP4/MP4_Sources/start.asm @@ -0,0 +1,110 @@ +; bkerndev - Bran's Kernel Development Tutorial +; By: Brandon F. (friesenb@gmail.com) +; Desc: Kernel entry point, stack, and Interrupt Service Routines. +; +; Notes: No warranty expressed or implied. Use at own risk. +; +; This is the kernel's entry point. We could either call main here, +; or we can use this to setup the stack or other nice stuff, like +; perhaps setting up the GDT and segments. Please note that interrupts +; are disabled at this point: More on interrupts later! +[BITS 32] +global start +start: + mov esp, _sys_stack ; This points the stack to our new stack area + jmp stublet + +; This part MUST be 4byte aligned, so we solve that issue using 'ALIGN 4' +ALIGN 4 +mboot: + ; Multiboot macros to make a few lines later more readable + MULTIBOOT_PAGE_ALIGN equ 1<<0 + MULTIBOOT_MEMORY_INFO equ 1<<1 + MULTIBOOT_AOUT_KLUDGE equ 1<<16 + MULTIBOOT_HEADER_MAGIC equ 0x1BADB002 + MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | MULTIBOOT_AOUT_KLUDGE + MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS) + EXTERN code, bss, end + + ; This is the GRUB Multiboot header. A boot signature + dd MULTIBOOT_HEADER_MAGIC + dd MULTIBOOT_HEADER_FLAGS + dd MULTIBOOT_CHECKSUM + + ; AOUT kludge - must be physical addresses. Make a note of these: + ; The linker script fills in the data for these ones! + dd mboot ; header_addr: + ; address corresponding to the multiboot header + dd code ; load_addr: + ; physical address of the beginning of the text segment + dd bss ; load_end_addr: + ; physical address of the end of the data segment + ; (load_end_addr - load_addr) specifies how much data to load. + dd end ; bss_end_addr: + ; pysical address of end of bss segment. + ; boot loader initializes this area to zero, + ; and reserves the memory + dd start ; entry_addr: + ; physical address to which the boot loader should jump + ; to start running the OS + +stublet: + +; Initilization of static global objects. This goes through each object +; in the ctors section of the object file, where the global constructors +; created by C++ are put, and calls it. Normally C++ compilers add some code +; to do this, but that code is in the standard library - which we do not +; include +; See linker.ld to see where we tell the linker to put them. + extern start_ctors, end_ctors, start_dtors, end_dtors + +static_ctors_loop: + mov ebx, start_ctors + jmp .test + .body: + call [ebx] + add ebx,4 + .test: + cmp ebx, end_ctors + jb .body + +; Entering the kernel proper. + extern _main + call _main + +; Deinitialization of static global objects. This goes through each object +; in the dtors section of the object file, where the global destructors +; created by C++ are put, and calls it. Normally C++ compilers add some code +; to do this, but that code is in the standard library - which we do not include. +; See linker.ld to see where we tell the linker to put them. + +static_dtors_loop: + mov ebx, start_dtors + jmp .test + .body: + call [ebx] + add ebx,4 + .test: + cmp ebx, end_dtors + jb .body + +; Enter an endless loop here in order to stop. + jmp $ + +; Set up Global Descriptor Table +%include "gdt_low.asm" + +; Set up Low-level Exception Handling +%include "idt_low.asm" + +; Set up Low-level Interrupt Handling +%include "irq_low.asm" + +; Here is the definition of our BSS section. Right now, we'll use +; it just to store the stack. Remember that a stack actually grows +; downwards, so we declare the size of the data before declaring +; the identifier '_sys_stack' +SECTION .bss + resb 8192 ; This reserves 8KBytes of memory here +_sys_stack: + diff --git a/MP4/MP4_Sources/utils.C b/MP4/MP4_Sources/utils.C new file mode 100755 index 0000000..15fd38a --- /dev/null +++ b/MP4/MP4_Sources/utils.C @@ -0,0 +1,167 @@ +/* + File: utils.C + + Author: R. Bettati + Department of Computer Science + Texas A&M University + + Date : 09/02/12 + +*/ + +/* Some of the code comes from Brandon Friesens OS Tutorial: +* bkerndev - Bran's Kernel Development Tutorial +* By: Brandon F. (friesenb@gmail.com) +* Desc: Interrupt Descriptor Table management +* +* Notes: No warranty expressed or implied. Use at own risk. */ + + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none ) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "utils.H" + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* CONSTANTS */ +/*--------------------------------------------------------------------------*/ + + /* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* ABORT (USED e.g. IN _ASSERT() */ +/*--------------------------------------------------------------------------*/ + +void abort() { + for(;;); +} + +/*--------------------------------------------------------------------------*/ +/* MEMORY OPERATIONS */ +/*--------------------------------------------------------------------------*/ + +void *memcpy(void *dest, const void *src, int count) +{ + const char *sp = (const char *)src; + char *dp = (char *)dest; + for(; count != 0; count--) *dp++ = *sp++; + return dest; +} + +void *memset(void *dest, char val, int count) +{ + char *temp = (char *)dest; + for( ; count != 0; count--) *temp++ = val; + return dest; +} + +unsigned short *memsetw(unsigned short *dest, unsigned short val, int count) +{ + unsigned short *temp = (unsigned short *)dest; + for( ; count != 0; count--) *temp++ = val; + return dest; +} + +/*--------------------------------------------------------------------------*/ +/* STRING OPERATIONS */ +/*--------------------------------------------------------------------------*/ + + +int strlen(const char *_str) { + /* This loops through character array 'str', returning how + * many characters it needs to check before it finds a 0. + * In simple words, it returns the length in bytes of a string */ + int len = 0; + while (*_str != 0) { + _str++; + len++; + } + return len; +} +void strcpy(char* _dst, char* _src) { + while (*_src != 0) { + *_dst = *_src; + _dst++; + _src++; + } + *_dst = 0; // put terminating 0 at end. +} + +void int2str(int _num, char * _str) { + /* -- THIS IMPLEMENTATION IS ONE PRETTY BAD HACK. */ + int i; + char temp[11]; + + temp[0] = '\0'; + for(i = 1; i <= 10; i++) { + temp[i] = _num % 10 + '0'; + _num /= 10; + } + for(i = 10; temp[i] == '0'; i--); + if( i == 0 ) + i++; + while( i >= 0 ) + *_str++ = temp[i--]; +} + + +void uint2str(unsigned int _num, char * _str) { + /* -- THIS IS A BAD HACK AS WELL. */ + int i; + char temp[11]; + + temp[0] = '\0'; + for(i = 1; i <= 10; i++) { + temp[i] = _num % 10 + '0'; + _num /= 10; + } + for(i = 10; temp[i] == '0'; i--); + if( i == 0 ) + i++; + while( i >= 0 ) + *_str++ = temp[i--]; +} + +/*--------------------------------------------------------------------------*/ +/* POERT I/O OPERATIONS */ +/*--------------------------------------------------------------------------*/ + +/* We will use this later on for reading from the I/O ports to get data +* from devices such as the keyboard. We are using what is called +* 'inline assembly' in these routines to actually do the work */ +char inportb (unsigned short _port) { + unsigned char rv; + __asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port)); + return rv; +} + +unsigned short inportw (unsigned short _port) { + unsigned short rv; + __asm__ __volatile__ ("inw %1, %0" : "=a" (rv) : "dN" (_port)); + return rv; +} + +/* We will use this to write to I/O ports to send bytes to devices. This +* will be used in the next tutorial for changing the textmode cursor +* position. Again, we use some inline assembly for the stuff that simply +* cannot be done in C */ +void outportb (unsigned short _port, char _data) { + __asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data)); +} + +void outportw (unsigned short _port, unsigned short _data) { + __asm__ __volatile__ ("outw %1, %0" : : "dN" (_port), "a" (_data)); +} diff --git a/MP4/MP4_Sources/utils.H b/MP4/MP4_Sources/utils.H new file mode 100755 index 0000000..71c6c4c --- /dev/null +++ b/MP4/MP4_Sources/utils.H @@ -0,0 +1,62 @@ +/* + File : utils.H + + Author : Riccardo Bettati + Modified : 2017/05/02 + + Description : Various definitions (NULL) and + utility functions (e.g. abort, memory and + string functions). +*/ + +#ifndef _utils_h_ +#define _utils_h_ + +/*---------------------------------------------------------------*/ +/* GENERAL CONSTANTS */ +/*---------------------------------------------------------------*/ + +#ifndef NULL +# define NULL 0 +#endif + +/*---------------------------------------------------------------*/ +/* ABORT */ +/*---------------------------------------------------------------*/ + +void abort(); +/* Stop execution. */ + +/*---------------------------------------------------------------*/ +/* SIMPLE MEMORY OPERATIONS */ +/*---------------------------------------------------------------*/ + +void *memcpy(void *dest, const void *src, int count); +/* Copy _count bytes from _src to _dest. (No check for uverlapping) */ + +void *memset(void *dest, char val, int count); +/* Set _count bytes to value _val, starting from location _dest. */ + +unsigned short *memsetw(unsigned short *dest, unsigned short val, int count); +/* Same as above, but operations are 16-bit wide. */ + +/*---------------------------------------------------------------*/ +/* SIMPLE STRING OPERATIONS (STRINGS ARE NULL-TERMINATED) */ +/*---------------------------------------------------------------*/ + +int strlen(const char * _str); +/* Determine the length of null-terminated string. */ + +void strcpy(char * _dst, char * _src); +/* Copy null-terminated string from _src to _dst. */ + +void int2str(int _num, char * _str); +/* Convert int to null-terminated string. */ + +void uint2str(unsigned int _num, char * _str); +/* Convert unsigned int to null-terminated string. */ + +#endif + + + diff --git a/MP4/MP4_Sources/vm_pool.C b/MP4/MP4_Sources/vm_pool.C new file mode 100644 index 0000000..d1071c7 --- /dev/null +++ b/MP4/MP4_Sources/vm_pool.C @@ -0,0 +1,69 @@ +/* + File: vm_pool.C + + Author: + Date : + + */ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "vm_pool.H" +#include "console.H" +#include "utils.H" +#include "assert.H" +#include "simple_keyboard.H" + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* CONSTANTS */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* FORWARDS */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* METHODS FOR CLASS V M P o o l */ +/*--------------------------------------------------------------------------*/ + +VMPool::VMPool(unsigned long _base_address, + unsigned long _size, + ContFramePool *_frame_pool, + PageTable *_page_table) { + assert(false); + Console::puts("Constructed VMPool object.\n"); +} + +unsigned long VMPool::allocate(unsigned long _size) { + assert(false); + Console::puts("Allocated region of memory.\n"); +} + +void VMPool::release(unsigned long _start_address) { + assert(false); + Console::puts("Released region of memory.\n"); +} + +bool VMPool::is_legitimate(unsigned long _address) { + assert(false); + Console::puts("Checked whether address is part of an allocated region.\n"); +} + diff --git a/MP4/MP4_Sources/vm_pool.H b/MP4/MP4_Sources/vm_pool.H new file mode 100755 index 0000000..94d5369 --- /dev/null +++ b/MP4/MP4_Sources/vm_pool.H @@ -0,0 +1,76 @@ +/* + File: vm_pool.H + + Author: R. Bettati, Nikhil Gupta + Department of Computer Science + Texas A&M University + Date : 10/26/2010 + + Description: Management of the Virtual Memory Pool + + +*/ + +#ifndef _VM_POOL_H_ // include file only once +#define _VM_POOL_H_ + +/*--------------------------------------------------------------------------*/ +/* DEFINES */ +/*--------------------------------------------------------------------------*/ + +/* -- (none) -- */ + +/*--------------------------------------------------------------------------*/ +/* INCLUDES */ +/*--------------------------------------------------------------------------*/ + +#include "utils.H" +#include "cont_frame_pool.H" + +/*--------------------------------------------------------------------------*/ +/* DATA STRUCTURES */ +/*--------------------------------------------------------------------------*/ + +/* Forward declaration of class PageTable */ +/* We need this to break a circular include sequence. */ +class PageTable; + +/*--------------------------------------------------------------------------*/ +/* V M P o o l */ +/*--------------------------------------------------------------------------*/ + +class VMPool { /* Virtual Memory Pool */ +private: + /* -- DEFINE YOUR VIRTUAL MEMORY POOL DATA STRUCTURE(s) HERE. */ + +public: + VMPool(unsigned long _base_address, + unsigned long _size, + ContFramePool *_frame_pool, + PageTable *_page_table); + /* Initializes the data structures needed for the management of this + * virtual-memory pool. + * _base_address is the logical start address of the pool. + * _size is the size of the pool in bytes. + * _frame_pool points to the frame pool that provides the virtual + * memory pool with physical memory frames. + * _page_table points to the page table that maps the logical memory + * references to physical addresses. */ + + unsigned long allocate(unsigned long _size); + /* Allocates a region of _size bytes of memory from the virtual + * memory pool. If successful, returns the virtual address of the + * start of the allocated region of memory. If fails, returns 0. */ + + void release(unsigned long _start_address); + /* Releases a region of previously allocated memory. The region + * is identified by its start address, which was returned when the + * region was allocated. */ + + bool is_legitimate(unsigned long _address); + /* Returns false if the address is not valid. An address is not valid + * if it is not part of a region that is currently allocated. */ + + }; + +#endif diff --git a/MP4/__MACOSX/._MP4_Sources b/MP4/__MACOSX/._MP4_Sources new file mode 100644 index 0000000000000000000000000000000000000000..e4a93925438c80c0a21dac85518b67dc6870e886 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}u^SMB_!U6R09PRZ;$Z`hAt6CfagYwM HE_8JOM2!ci literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._BIOS-bochs-latest b/MP4/__MACOSX/MP4_Sources/._BIOS-bochs-latest new file mode 100644 index 0000000000000000000000000000000000000000..03b74d7d3d1627ee9060c604106494a32e2e8c60 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<3uQ|kU`plI%D*EQd(;eKS PqnF;g6~%BwPevO6y-7I* literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._README.TXT b/MP4/__MACOSX/MP4_Sources/._README.TXT new file mode 100644 index 0000000000000000000000000000000000000000..d90f01177287b504abfc1c5db8e3a3bf8bfca4da GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$qpeRIcyDNQM-FD-G1 Pj$V4}RuseKI+-s3_e(sc literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._assert.H b/MP4/__MACOSX/MP4_Sources/._assert.H new file mode 100644 index 0000000000000000000000000000000000000000..23336cc928078a123c7f30369cd8ab3208341cb1 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<T7j literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._bochsout.txt b/MP4/__MACOSX/MP4_Sources/._bochsout.txt new file mode 100644 index 0000000000000000000000000000000000000000..564430960f2f8428640ed72a2c7919a77d41ebf4 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<Hne@}82w?7}#%{4hEU*0`B Odg-lOQ4FWzWKsaLg*dJN literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._bochsrc.bxrc b/MP4/__MACOSX/MP4_Sources/._bochsrc.bxrc new file mode 100644 index 0000000000000000000000000000000000000000..40cc0d90fd1889e6ef6e8a4dc0ef051ffc99d022 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<BuscO)qDf1b4A#HE=2BMXY6 PqnF;g6~%D$kW3c<$m}~L literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._console.C b/MP4/__MACOSX/MP4_Sources/._console.C new file mode 100644 index 0000000000000000000000000000000000000000..8a48271d3eb5a96edf0fe9ac5571f535c62d70a8 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<@~ literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._console.H b/MP4/__MACOSX/MP4_Sources/._console.H new file mode 100644 index 0000000000000000000000000000000000000000..27a84ad0ead17f026cfe87cc4838024e849b6e06 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx< PM=!l~D~jRBMj34Y-A+2a literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._cont_frame_pool.C b/MP4/__MACOSX/MP4_Sources/._cont_frame_pool.C new file mode 100644 index 0000000000000000000000000000000000000000..2b3ee365e93bd626eedd8da92b55ad1de26ab3e1 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<Q!evl8F~5jGM6tkDQ!PvP`tT`$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<N&0e)exdJ=R-`$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<o;Nr| PM=!l~D~jQ~jLdcb?d&`G literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._gdt.H b/MP4/__MACOSX/MP4_Sources/._gdt.H new file mode 100644 index 0000000000000000000000000000000000000000..59fb8e07340644f1531dd90158c54e5a381b5862 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<K>hJO0rR^&`c1kGxby4hcX6EW+2Rl# Oz4X?tD2AglGKm1EA~=Wu literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._gdt_low.asm b/MP4/__MACOSX/MP4_Sources/._gdt_low.asm new file mode 100644 index 0000000000000000000000000000000000000000..0434894ef120b17c112dca8b102a9370c03bd6cf GIT binary patch literal 238 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@g5)s@!tV45x_AdBnYYuq+<>c!}u`W zj0kb@S`l{2*XP`cGt8Z;)24_twgw4#3pMgAko&*n1J{3-%Ug=(*PLF(G`}SM@v4&O P=%u%AMKN4jD9a51sku7! literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._idt.C b/MP4/__MACOSX/MP4_Sources/._idt.C new file mode 100644 index 0000000000000000000000000000000000000000..e4d51f12ffea43b9ead417b5427aef5a5409c9b3 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<Gcnno~i?&ope}xqRV(L;e3%5AKvi PM=!l~D~jRR8JT$i+9y0* literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._idt_low.asm b/MP4/__MACOSX/MP4_Sources/._idt_low.asm new file mode 100644 index 0000000000000000000000000000000000000000..56bbaa9db0c4128fbc8cffc25831eaf466d6fda6 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<DL!-XC)KQ-FJP P^wL|mq8JXv$>;$9%62*Y literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._interrupts.C b/MP4/__MACOSX/MP4_Sources/._interrupts.C new file mode 100644 index 0000000000000000000000000000000000000000..1a4829a43d195f449ce79ce5c71bc17afc90f202 GIT binary patch literal 447 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFfjH4X&|3*KaeH@IEI7-L6m`XFtPyI zyV0~UL&f|gE>M?ZfZ$lN@7W( zRkp8-PhwJPPP|EhnR$LrX+dH|YC&OXRe?!CMsa>=UaoN|#Ecvu6%4f}r6|83DZfH5 zv81FZGpV#BwHPQ_T9T$~VQpw^Vq|D;X<_o|RDui>pGdMn#Tuim`!A1873KfcXlIq% zBj!BWTv>=uqe?b%-M9AOLz!NGpBtoHF{_!KaItJRe@@|9;eoK_@6%GdDf@%{7HYmGl83eR)n4M^*MLq z40EUIv?(HutwBQGLXA924;9sSdz`nK&(v(QTxN5_g{~BD@yjLA(MxaLiefl1Qzj7r DlJ$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDJkFfjH4X&|3*KaeH@IEI7-L6m`XFtPyI zyV0~UL&f|gE>M?ZfZ$lN@7W( zRkp8-PhwJPPP|EhnR$LrX+dH|YC&OXRe?!CMsa>=UaoN|#Ecvu6%4f}r6|83DZfH5 zv81FZGpV#BwHPQ_T9T$~VQpw^Vq|D;X<_my`_;NBQ#1pNt9Isi-wqY;*;&$GnjiAi zv^LN*u77jX(uAc8FTI>9<8pAt@(ppkwd;z_?)*9?;nMI|H{7I0bF1I~sZ1BYbNs$I zQM^duQP}S^;rW%zoxBnvD(0*X^U^$}?{R8vt= E0Kz4O%m4rY literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._irq.H b/MP4/__MACOSX/MP4_Sources/._irq.H new file mode 100644 index 0000000000000000000000000000000000000000..2101c52b2ff229b657e8fb7c4674cd4848bae3bb GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<(|V7^JjIg*wjX%HvH45M{V6u_&mG*O PqnF;g6~%BsK!zUxy|6h` literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._irq_low.asm b/MP4/__MACOSX/MP4_Sources/._irq_low.asm new file mode 100644 index 0000000000000000000000000000000000000000..4179f832af7b51ccc285cc1857005fdb4d33eeeb GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx< PM=!l~D~jP{txO{T+AljX literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._kernel.C b/MP4/__MACOSX/MP4_Sources/._kernel.C new file mode 100644 index 0000000000000000000000000000000000000000..33dddb67dd4f6cf8431049bb7bcedd57e656b950 GIT binary patch literal 463 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFfh&q(m+1rc_2*$a103vf+z#&U}OQZ zPorsLhKlnuFo-AT=jtUE6y&7pg``%LxaKA2r)1`(gEcS;1F1{~26Kd(+|-i9l*E!m zt88BvpTwlpoOqK0GxPkM(t^Z_)Plm&ssfXOjN<&#yjP46QhtSA zVo6C+W>RTMYB5ljrxWy{R@}>daG{p=lA<3PeUU8ULNND%g21%OrQNg`c{>|-1J=` z*K7?peQ4<4ChXi6VgG&ov?3?VqPBC3eO+ZbmTYn|np!bub(ojtDSeMq>pT2UpYc5F z(|P`+zu%d_O+hQdPWk$rJ8_1&Q+3)Dk;c{_A#b5Zo~3U-F+BdGa9p6czJJA^Pm}f- Vh%4JKcZiN&dh1pc!wFrPWB`Djk+}c> literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._linker.ld b/MP4/__MACOSX/MP4_Sources/._linker.ld new file mode 100644 index 0000000000000000000000000000000000000000..23adfb8c9d892433de6d0507f37aa1aa28c23d7e GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<|i{d literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._machine.H b/MP4/__MACOSX/MP4_Sources/._machine.H new file mode 100644 index 0000000000000000000000000000000000000000..78e33ec5336967fcbf28d4ffe5daf7a8a6c1a03e GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<HhRHe6tO{z+>+Q-4Wx P^wL|mq8PTnkp2e%hzL0r literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._machine_low.H b/MP4/__MACOSX/MP4_Sources/._machine_low.H new file mode 100644 index 0000000000000000000000000000000000000000..8354a0bc1fda7813f3bf9ff5f8544b0f987141ed GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDJkFfiT)(m*~FKaeH@IEI7-L6m`XFtPwK zH<~tPh&TgKUOYKJS1+-kASYEXB()1w-vgDatQM%CFE% zEGa3yLgt(ZV@`4UBK6RU-^q#>&`eszpU)GU3YdFT3zU>n6o;} zOY@Yz$Eo!l{-@7)p7rTGf70LYOyH)V6=A1*ea@XY!`!JlZHh=^Ymkt)P$SP$2lMwy j_4bQ{;`Q^l3q5aWIQ6DLd3s57^wL|mq8JWk%2)#cqUERJ literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._page_table.H b/MP4/__MACOSX/MP4_Sources/._page_table.H new file mode 100644 index 0000000000000000000000000000000000000000..631f7d9149b1e6118b203738a6cdda63eb16470f GIT binary patch literal 511 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFfg74(m+1re;`c+a103vf+z#&U}OQZ zf1_z*hKlnuFo-AT=jtUE6y&7pg``%LxaKA2r)1`(gEcS;1F4w|4CV+mxv3?IDTyVC zR@uHTK8Z=GIq@b1X6E@hr3HxQsbHu*DMk4ON%<9e zi6tdPnMtK3sl`Ca(vmb?3u{AT6C*=&OAC`v&bb-?tUp9A<}_E5w#@vQddbZEz~`b& z0g-*o)_YRqB}MvAq-i}=Tki3pgR9mrp6TM3bXSod+jC@B8UFuf?y=;p|GH&7@3(gD zEN1T8rLlrf=G=?5a*QjbMc;KsFD&8sv(P%)zci$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<`%|Bsa1c!B}UnN{hE^K P=%u%AMKSEVFCz#5vrjpo literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._simple_keyboard.H b/MP4/__MACOSX/MP4_Sources/._simple_keyboard.H new file mode 100644 index 0000000000000000000000000000000000000000..feff2c1c6805508e73fa3eeb0b95b4c1c42692a3 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDJkFfjH4X&|3*KaeH@IEI7-L6m`XFtPyI zyV0~UL&f|gE>M?ZfZ$lN@7W( zRkp8-PhwJPPP|EhnR$LrX+dH|YC&OXRe?!CMsa>=UaoN|#Ecvu6%4f}r6|83DZfH5 zv81FZGpV#BwHPQ_T9T$~VQpw^Vq|D;X<_o|zd*dTzQ?Kc9sZ}!c%Jp?Jb%*P?@ZvPpcP@Ke0|QH zIK$kjI&F$bV{4F*w@@RGYOVNRf%MG@-#1LDIUL0NcZp4K^O+MR(a}q9-HKw^QY^gy E0Fi=+%m4rY literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._simple_timer.H b/MP4/__MACOSX/MP4_Sources/._simple_timer.H new file mode 100644 index 0000000000000000000000000000000000000000..6c7891e48a4651804ff32e3f13220b88dab682a2 GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<ryjTzFV<03_s>s1e5EKl Pdg-lOQ4D+Pr0)R$qmwyg literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._start.asm b/MP4/__MACOSX/MP4_Sources/._start.asm new file mode 100644 index 0000000000000000000000000000000000000000..8296795504c65d5b2f5c7e83ac978d42162b570c GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<qy8^c2*e?mDz(LrMJerULiq P=%u%AMKPT8l<5Tk({DQH literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._utils.H b/MP4/__MACOSX/MP4_Sources/._utils.H new file mode 100644 index 0000000000000000000000000000000000000000..4d19cdf6fd7a71a11d5f7917b15b7fcdfabb7deb GIT binary patch literal 239 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@m?SX@!tb65x_AdBnYYuq+<>c2cv0Y zM2L$g=jZCB6y+BrmXs7_CY6??76TPj%vl}grFlx<$Vqox1Ojhs@R)|o50+1L3ClDJkFfjH4X&|3*KaeH@IEI7-L6m`XFtPyI zyV0~UL&f|gE>M?ZfZ$lN@7W( zRkp8-PhwJPPP|EhnR$LrX+dH|YC&OXRe?!CMsa>=UaoN|#Ecvu6%4f}r6|83DZfH5 zv81FZGpV#BwHPQ_T9T$~VQpw^Vq|D;X<_n-ZA;xTj}J4~K3u*=`#@31w=@2l8+wo0 zZ#rjr;OAob_A{qH1+HE7seQto4?iUrns~fXKkm;tjnkVwQfKdPhbeOeZ?QhRfAEj` zWEIvuQ+guY`m%m9@9@1Wrdcs(b(ojtDSeMq>pT2UpYc5F(|P`+zu%d_O+hQdPWk$r zJ8_1&Q+3)Dk;c{_A#b5Z9@Y0u+~w1^oXOeF@tnhZJ6HMPGfv9Oi=v~K-ntdVaL8H4 F005Qrh>8FJ literal 0 HcmV?d00001 diff --git a/MP4/__MACOSX/MP4_Sources/._vm_pool.H b/MP4/__MACOSX/MP4_Sources/._vm_pool.H new file mode 100644 index 0000000000000000000000000000000000000000..3886f55f2710f20aad0917a66bb9d22338204cc1 GIT binary patch literal 239 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