From 8d0e6de040e5efdeb5611780e70733273b426cf9 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 8 Mar 2004 22:00:00 -0500 Subject: [PATCH] Import backup from 2004-03-08 --- Makefile | 116 +++++++++++++++ {src/boot => boot}/Makefile | 0 {src/boot => boot}/bootdef.inc | 0 {src/boot => boot}/stage1.asm | 0 {src/boot => boot}/stage2.asm | 0 kernel/Makefile | 71 +++++++++ {src/kernel => kernel}/asmfuncs.asm | 0 {src/kernel => kernel}/asmfuncs.h | 0 {src/kernel => kernel}/block/fdc.c | 0 {src/kernel => kernel}/block/fdc.h | 2 + {src/kernel => kernel}/char/keyboard.c | 0 {src/kernel => kernel}/char/keyboard.h | 0 {src/kernel => kernel}/char/mouse.c | 0 {src/kernel => kernel}/char/mouse.h | 0 {src/kernel => kernel}/functions.c | 0 {src/kernel => kernel}/functions.h | 5 +- {src/kernel => kernel}/gdt.inc | 2 +- {src/kernel => kernel}/hos_defines.h | 0 {src/kernel => kernel}/idt.inc | 0 {src/kernel => kernel}/kernel.asm | 0 {src/kernel => kernel}/kernel.c | 10 +- {src/kernel => kernel}/kio.c | 6 +- {src/kernel => kernel}/kio.h | 0 {src/kernel => kernel}/link.ld | 0 {src/kernel => kernel}/mm/mm.c | 16 ++- {src/kernel => kernel}/mm/mm.h | 7 +- {src/kernel => kernel}/mm/vmm.c | 0 {src/kernel => kernel}/mm/vmm.h | 0 kernel/search.bat | 1 + {src/kernel => kernel}/string/string.c | 0 {src/kernel => kernel}/string/string.h | 0 {src/kernel => kernel}/sys/cmos.c | 0 {src/kernel => kernel}/sys/cmos.h | 0 {src/kernel => kernel}/sys/io.c | 0 {src/kernel => kernel}/sys/io.h | 4 +- {src/kernel => kernel}/sys/pic.c | 0 {src/kernel => kernel}/sys/pic.h | 0 {src/kernel => kernel}/sys/rtc.c | 0 {src/kernel => kernel}/sys/rtc.h | 0 {src/kernel => kernel}/video/stdfont.c | 0 {src/kernel => kernel}/video/stdfont.h | 0 {src/kernel => kernel}/video/video.c | 17 ++- {src/kernel => kernel}/video/video.h | 9 +- src/readme.txt => readme.txt | 4 +- src/Makefile | 192 ------------------------- 45 files changed, 243 insertions(+), 219 deletions(-) create mode 100644 Makefile rename {src/boot => boot}/Makefile (100%) rename {src/boot => boot}/bootdef.inc (100%) rename {src/boot => boot}/stage1.asm (100%) rename {src/boot => boot}/stage2.asm (100%) create mode 100644 kernel/Makefile rename {src/kernel => kernel}/asmfuncs.asm (100%) rename {src/kernel => kernel}/asmfuncs.h (100%) rename {src/kernel => kernel}/block/fdc.c (100%) rename {src/kernel => kernel}/block/fdc.h (86%) rename {src/kernel => kernel}/char/keyboard.c (100%) rename {src/kernel => kernel}/char/keyboard.h (100%) rename {src/kernel => kernel}/char/mouse.c (100%) rename {src/kernel => kernel}/char/mouse.h (100%) rename {src/kernel => kernel}/functions.c (100%) rename {src/kernel => kernel}/functions.h (98%) rename {src/kernel => kernel}/gdt.inc (99%) rename {src/kernel => kernel}/hos_defines.h (100%) rename {src/kernel => kernel}/idt.inc (100%) rename {src/kernel => kernel}/kernel.asm (100%) rename {src/kernel => kernel}/kernel.c (91%) rename {src/kernel => kernel}/kio.c (97%) rename {src/kernel => kernel}/kio.h (100%) rename {src/kernel => kernel}/link.ld (100%) rename {src/kernel => kernel}/mm/mm.c (95%) rename {src/kernel => kernel}/mm/mm.h (83%) rename {src/kernel => kernel}/mm/vmm.c (100%) rename {src/kernel => kernel}/mm/vmm.h (100%) create mode 100755 kernel/search.bat rename {src/kernel => kernel}/string/string.c (100%) rename {src/kernel => kernel}/string/string.h (100%) rename {src/kernel => kernel}/sys/cmos.c (100%) rename {src/kernel => kernel}/sys/cmos.h (100%) rename {src/kernel => kernel}/sys/io.c (100%) rename {src/kernel => kernel}/sys/io.h (100%) rename {src/kernel => kernel}/sys/pic.c (100%) rename {src/kernel => kernel}/sys/pic.h (100%) rename {src/kernel => kernel}/sys/rtc.c (100%) rename {src/kernel => kernel}/sys/rtc.h (100%) rename {src/kernel => kernel}/video/stdfont.c (100%) rename {src/kernel => kernel}/video/stdfont.h (100%) rename {src/kernel => kernel}/video/video.c (95%) rename {src/kernel => kernel}/video/video.h (94%) rename src/readme.txt => readme.txt (96%) delete mode 100644 src/Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4e4315b --- /dev/null +++ b/Makefile @@ -0,0 +1,116 @@ +##################################################################### +# Author: Benjamen R. Meyer # +# Date: 2004-2-15 # +# Purpose: To build Josh Holtrop's OS (HOS) using GNU make # +# Note: This makefile is for use on Linux & other Unix-like systems # +##################################################################### + +############## +# Variables: # +############## + +# Information for creating a floppy image +# Note: FLOPPY_FS and FLOPPY_FAT_SIZE are related fields. +# FLOPPY_FAT_SIZE should be either 12 or 16, +# depending on if FLOPPY_FS is FAT12 or FAT16, respectively. +MKDOSFS_PROG=/sbin/mkdosfs +FLOPPY_IMAGE=floppy.img +FLOPPY_BLOCK_COUNT=1440 +FLOPPY_FS=FAT12 +FLOPPY_FAT_SIZE=12 +FLOPPY_MOUNT=./floppy_image + +# Floppy images are good for programs like VMware and Bochs Pentium Emulator. ;-) + +# Program for copying +COPY_BIN=cp + +########################################## +# Build the IPL (Boot Loader) and Kernel # +########################################## +all: + # A word of warning to users :-> And a little helpful information ;-) + @echo "Installation must be done as root." + @echo "Type 'make install' to install to a floppy in drive '/dev/fd0'" + @echo "Type 'make install_img' to create a floppy image and install to it." + + cd boot; make + cd kernel; make + +################################################# +# Clean up the source directory of any binaries # +################################################# +clean: + cd boot; make clean + cd kernel; make clean + + + +########################################### +# The following is for the floppy drive # +# Note: This must be done on *nix as root # +########################################### + +########################## +# Make install to floppy # +########################## +install: Install_IPL File_Copy + +############################################ +# Write the Stage 1 IPL to the boot sector # +############################################ +Install_IPL: + $(MKDOSFS_PROG) /dev/fd0 + dd if=boot/stage1.bin of=/dev/fd0 + +################################# +# Copy the files onto the drive # +################################# +File_Copy: + mkdir floppy_mount + @echo "Mounting floppy to ./floppy_mount..." + mount /dev/fd0 ./floppy_mount + + @echo "Copying stage 2 bootloader to the floppy..." + $(COPY_BIN) boot/stage2.bin ./floppy_mount + + @echo "Copying kernel to the floppy..." + $(COPY_BIN) kernel/kernel.bin ./floppy_mount + + @echo "Unmounting floppy..." + umount ./floppy_mount + rm -rf floppy_mount + + +############################################ +# The following is for the floppy image. # +# Note: This must be done on *nix as root. # +############################################ + +###################################### +# Create and Format the floppy image # +###################################### +install_img: $(FLOPPY_IMAGE) + $(MKDOSFS_PROG) -C -F $(FLOPPY_FAT_SIZE) -r 112 $(FLOPPY_IMAGE) $(FLOPPY_BLOCK_COUNT) + +############################################ +# Write the Stage 1 IPL to the boot sector # +############################################ + @echo "Writing boot sector to image..." + dd if=stage1.bin of=$(FLOPPY_IMAGE) seek=0 + + @echo "Mounting floppy image..." + mount $(FLOPPY_IMAGE) $(FLOPPY_MOUNT) -o loop + +################################# +# Copy the files onto the image # +################################# + @echo "Copying stage 2 bootloader to the floppy image..." + $(COPY_BIN) stage2.bin $(FLOPPY_MOUNT) + @echo "Copying kernel to the floppy image..." + $(COPY_BIN) kernel.bin $(FLOPPY_MOUNT) + + @echo "Unmounting floppy image..." + mount $(FLOPPY_IMAGE) $(FLOPPY_MOUNT) -o loop + + diff --git a/src/boot/Makefile b/boot/Makefile similarity index 100% rename from src/boot/Makefile rename to boot/Makefile diff --git a/src/boot/bootdef.inc b/boot/bootdef.inc similarity index 100% rename from src/boot/bootdef.inc rename to boot/bootdef.inc diff --git a/src/boot/stage1.asm b/boot/stage1.asm similarity index 100% rename from src/boot/stage1.asm rename to boot/stage1.asm diff --git a/src/boot/stage2.asm b/boot/stage2.asm similarity index 100% rename from src/boot/stage2.asm rename to boot/stage2.asm diff --git a/kernel/Makefile b/kernel/Makefile new file mode 100644 index 0000000..0d95674 --- /dev/null +++ b/kernel/Makefile @@ -0,0 +1,71 @@ +##################################################################### +# Author: Benjamen R. Meyer # +# Date: 2004-2-15 # +# Purpose: To build Josh Holtrop's OS (HOS) using GNU make # +# Note: This makefile is for use on Linux & other Unix-like systems # +##################################################################### + +############## +# Variables: # +############## + +# Format of kernel object files: +# Do not change unless you know what you are doing +KERNEL_FORMAT=aout + +# Assembler information: +NASM_BIN=nasm +NASM_FLAGS=-f $(KERNEL_FORMAT) + +# C Compile Information: +CC=gcc +CC_FLAGS=-ffreestanding -fno-builtin -nostdlib -nodefaultlibs -I. + +# Linker Information: +LD=ld +LD_FLAGS=-nodefaultlibs -nostdlib -T link.ld + + +############################### +# Linking the kernel together # +############################### +all: Asm_Kernel Asm_Functions C_Kernel + $(LD) $(LD_FLAGS) -o kernel.bin -Map ./lst/LDout.doc ks.o fdc.o functions.o kernel.o keyboard.o kio.o mm.o mouse.o stdfont.o video.o vmm.o asmfuncs.o + +########################## +# Assembly Kernel Loader # +########################## +Asm_Kernel: kernel.asm + $(NASM_BIN) $(NASM_FLAGS) -o ks.o -l ./lst/kernel.lst kernel.asm + +################################# +# Assembly Functions for Kernel # +################################# +Asm_Functions: asmfuncs.asm + $(NASM_BIN) $(NASM_FLAGS) -o asmfuncs.o -l ./lst/asmfuncs.lst asmfuncs.asm + +############ +# C Kernel # +############ +C_Kernel: + $(CC) $(CC_FLAGS) -c kernel.c -o kernel.o + $(CC) $(CC_FLAGS) -c kio.c -o kio.o + $(CC) $(CC_FLAGS) -c functions.c -o functions.o + $(CC) $(CC_FLAGS) -c sys/rtc.c -o rtc.o + $(CC) $(CC_FLAGS) -c sys/pic.c -o pic.o + $(CC) $(CC_FLAGS) -c sys/io.c -o io.o + $(CC) $(CC_FLAGS) -c sys/cmos.c -o cmos.o + $(CC) $(CC_FLAGS) -c string/string.c -o string.o + $(CC) $(CC_FLAGS) -c video/stdfont.c -o stdfont.o + $(CC) $(CC_FLAGS) -c video/video.c -o video.o + $(CC) $(CC_FLAGS) -c block/fdc.c -o fdc.o + $(CC) $(CC_FLAGS) -c char/keyboard.c -o keyboard.o + $(CC) $(CC_FLAGS) -c char/mouse.c -o mouse.o + $(CC) $(CC_FLAGS) -c mm/mm.c -o mm.o + $(CC) $(CC_FLAGS) -c mm/vmm.c -o vmm.o + +################################################# +# Clean up the source directory of any binaries # +################################################# +clean: + - rm *.o ./lst/*.lst *.bin diff --git a/src/kernel/asmfuncs.asm b/kernel/asmfuncs.asm similarity index 100% rename from src/kernel/asmfuncs.asm rename to kernel/asmfuncs.asm diff --git a/src/kernel/asmfuncs.h b/kernel/asmfuncs.h similarity index 100% rename from src/kernel/asmfuncs.h rename to kernel/asmfuncs.h diff --git a/src/kernel/block/fdc.c b/kernel/block/fdc.c similarity index 100% rename from src/kernel/block/fdc.c rename to kernel/block/fdc.c diff --git a/src/kernel/block/fdc.h b/kernel/block/fdc.h similarity index 86% rename from src/kernel/block/fdc.h rename to kernel/block/fdc.h index e0028f4..874f431 100644 --- a/src/kernel/block/fdc.h +++ b/kernel/block/fdc.h @@ -6,6 +6,8 @@ #ifndef __HOS_FDC__ #define __HOS_FDC__ __HOS_FDC__ +#include "sys/io.h" + #define FDC_DOR 0x3f2 #define FDC_MSR 0x3f4 diff --git a/src/kernel/char/keyboard.c b/kernel/char/keyboard.c similarity index 100% rename from src/kernel/char/keyboard.c rename to kernel/char/keyboard.c diff --git a/src/kernel/char/keyboard.h b/kernel/char/keyboard.h similarity index 100% rename from src/kernel/char/keyboard.h rename to kernel/char/keyboard.h diff --git a/src/kernel/char/mouse.c b/kernel/char/mouse.c similarity index 100% rename from src/kernel/char/mouse.c rename to kernel/char/mouse.c diff --git a/src/kernel/char/mouse.h b/kernel/char/mouse.h similarity index 100% rename from src/kernel/char/mouse.h rename to kernel/char/mouse.h diff --git a/src/kernel/functions.c b/kernel/functions.c similarity index 100% rename from src/kernel/functions.c rename to kernel/functions.c diff --git a/src/kernel/functions.h b/kernel/functions.h similarity index 98% rename from src/kernel/functions.h rename to kernel/functions.h index c0c1db9..d4c5393 100644 --- a/src/kernel/functions.h +++ b/kernel/functions.h @@ -3,11 +3,12 @@ //for HOS //Modified: 02/26/04 -#include "hos_defines.h" - #ifndef __HOS_FUNCTIONS__ #define __HOS_FUNCTIONS__ __HOS_FUNCTIONS__ +#include "hos_defines.h" +#include "sys/io.h" + extern dword _code; extern dword _bss; extern dword _end; diff --git a/src/kernel/gdt.inc b/kernel/gdt.inc similarity index 99% rename from src/kernel/gdt.inc rename to kernel/gdt.inc index dcc5fec..c63db67 100644 --- a/src/kernel/gdt.inc +++ b/kernel/gdt.inc @@ -65,7 +65,7 @@ VIDEO_GRAPHICS equ $-gdt db 0x92 ;access ([P][DPL][1][Executable][Direction/Conforming][Writable/Readable][A]) db 0x40 ;flags ([G][D/B][0][0]) / limit 19:16 db 0x00 ;base 31:24 -dt_end: +gdt_end: diff --git a/src/kernel/hos_defines.h b/kernel/hos_defines.h similarity index 100% rename from src/kernel/hos_defines.h rename to kernel/hos_defines.h diff --git a/src/kernel/idt.inc b/kernel/idt.inc similarity index 100% rename from src/kernel/idt.inc rename to kernel/idt.inc diff --git a/src/kernel/kernel.asm b/kernel/kernel.asm similarity index 100% rename from src/kernel/kernel.asm rename to kernel/kernel.asm diff --git a/src/kernel/kernel.c b/kernel/kernel.c similarity index 91% rename from src/kernel/kernel.c rename to kernel/kernel.c index 6735628..6f051c3 100644 --- a/src/kernel/kernel.c +++ b/kernel/kernel.c @@ -2,7 +2,7 @@ // Author: Josh Holtrop // Date: 08/13/03 // Holtrop's Operating System - Version 0.13 -// Modified: 03/02/04 +// Modified: 03/08/04 #include "hos_defines.h" //#DEFINE's for kernel @@ -41,22 +41,20 @@ void k_init() mouse_init(); pic1_mask(0); //unmask IRQ's 0-7 pic2_mask(0); //unmask IRQ's 8-15 - vfs_init(); enable_ints(); kbd_resetLEDs(); //after enabling interrupts!! - if (videoMode) + if (video_Mode()) { - int p = video_mode.XResolution*video_mode.YResolution-1; + int p = video_getWidth()*video_getHeight()-1; for (; p >= 0; p--) video_psetp(p, 0x00000077); video_drawConsole(); } printf("HOS 0.13 - Kernel File Size: %u kb\tData Size: %u bytes\n", kernel_size()>>10, (dword)(&_end)-(dword)(&_code)); - printf("Memory available to OS: %u MB (%u bytes)\n", mm_megabytes, mm_totalmem); + printf("Memory available to OS: %u MB (%u bytes)\n", mm_getTotalMegs(), mm_getTotalMem()); printf("Free memory: %u bytes (%u pages)\n", mm_freemem(), mm_freemem()>>12); printf("%d/%d/%d\t%d:%d:%d\n", rtc_readMonth(), rtc_readDay(), rtc_readYear(), rtc_readHour(), rtc_readMinute(), rtc_readSecond()); - printf("Root Directory: %s/\n", rootDevice->id); dword key = 0; for (;;) diff --git a/src/kernel/kio.c b/kernel/kio.c similarity index 97% rename from src/kernel/kio.c rename to kernel/kio.c index 7865c4a..12105bc 100644 --- a/src/kernel/kio.c +++ b/kernel/kio.c @@ -87,7 +87,7 @@ void putc(dword chr) } else { - if (videoMode) + if (video_Mode()) { console_memory[cursorPosition] = charac | 0x0700; video_drawConsoleChar(cursorPosition); @@ -103,10 +103,10 @@ void putc(dword chr) { console_scroll(); cursorPosition = 2000-80; - if (videoMode) + if (video_Mode()) video_drawConsole(); } - if (!videoMode) + if (!video_Mode()) writeCursorPosition(cursorPosition); } diff --git a/src/kernel/kio.h b/kernel/kio.h similarity index 100% rename from src/kernel/kio.h rename to kernel/kio.h diff --git a/src/kernel/link.ld b/kernel/link.ld similarity index 100% rename from src/kernel/link.ld rename to kernel/link.ld diff --git a/src/kernel/mm/mm.c b/kernel/mm/mm.c similarity index 95% rename from src/kernel/mm/mm.c rename to kernel/mm/mm.c index 1e79bf8..974ec71 100644 --- a/src/kernel/mm/mm.c +++ b/kernel/mm/mm.c @@ -1,7 +1,7 @@ // mm.c // Author: Josh Holtrop // Created: 09/01/03 -// Modified: 03/02/04 +// Modified: 03/08/04 #include "hos_defines.h" #include "mm.h" @@ -9,7 +9,7 @@ //The total amount of physical memory available (bytes, 1 bit per page) #define BITMAP_SIZE 0x20000 dword mm_totalmem = 0; -dword mm_megabytes; +dword mm_megabytes = 0; byte page_bitmap[BITMAP_SIZE]; //used to store a bit for each page that is used, 0 if available //0x20000*(8 bits/byte)=0x100000 pages in 4gb total @@ -113,8 +113,16 @@ dword mm_freemem() } - - +dword mm_getTotalMem() +{ + return mm_totalmem; +} + + +dword mm_getTotalMegs() +{ + return mm_megabytes; +} diff --git a/src/kernel/mm/mm.h b/kernel/mm/mm.h similarity index 83% rename from src/kernel/mm/mm.h rename to kernel/mm/mm.h index 97404e8..0cdd178 100644 --- a/src/kernel/mm/mm.h +++ b/kernel/mm/mm.h @@ -1,13 +1,12 @@ // mm.c // Author: Josh Holtrop // Created: 09/01/03 -// Modified: 03/02/04 - -#include "hos_defines.h" +// Modified: 03/08/04 #ifndef __HOS_MM__ #define __HOS_MM__ __HOS_MM__ +#include "hos_defines.h" typedef struct { qword base; @@ -21,6 +20,8 @@ void mm_pfreen(dword base, dword pages); void mm_pfree(dword base); void *mm_palloc(); dword mm_freemem(); +dword mm_getTotalMem(); +dword mm_getTotalMegs(); #endif diff --git a/src/kernel/mm/vmm.c b/kernel/mm/vmm.c similarity index 100% rename from src/kernel/mm/vmm.c rename to kernel/mm/vmm.c diff --git a/src/kernel/mm/vmm.h b/kernel/mm/vmm.h similarity index 100% rename from src/kernel/mm/vmm.h rename to kernel/mm/vmm.h diff --git a/kernel/search.bat b/kernel/search.bat new file mode 100755 index 0000000..e9311bb --- /dev/null +++ b/kernel/search.bat @@ -0,0 +1 @@ +grep -R -n -i %1 * diff --git a/src/kernel/string/string.c b/kernel/string/string.c similarity index 100% rename from src/kernel/string/string.c rename to kernel/string/string.c diff --git a/src/kernel/string/string.h b/kernel/string/string.h similarity index 100% rename from src/kernel/string/string.h rename to kernel/string/string.h diff --git a/src/kernel/sys/cmos.c b/kernel/sys/cmos.c similarity index 100% rename from src/kernel/sys/cmos.c rename to kernel/sys/cmos.c diff --git a/src/kernel/sys/cmos.h b/kernel/sys/cmos.h similarity index 100% rename from src/kernel/sys/cmos.h rename to kernel/sys/cmos.h diff --git a/src/kernel/sys/io.c b/kernel/sys/io.c similarity index 100% rename from src/kernel/sys/io.c rename to kernel/sys/io.c diff --git a/src/kernel/sys/io.h b/kernel/sys/io.h similarity index 100% rename from src/kernel/sys/io.h rename to kernel/sys/io.h index 807e22d..daa3dcf 100644 --- a/src/kernel/sys/io.h +++ b/kernel/sys/io.h @@ -3,11 +3,11 @@ // Created: 02/26/04 // Implements basic port input/output functions -#include "hos_defines.h" - #ifndef __HOS_IO__ #define __HOS_IO__ __HOS_IO__ +#include "hos_defines.h" + inline void outportb(unsigned int port, unsigned char value); inline void outportw(unsigned int port, unsigned int value); inline unsigned char inportb(unsigned short port); diff --git a/src/kernel/sys/pic.c b/kernel/sys/pic.c similarity index 100% rename from src/kernel/sys/pic.c rename to kernel/sys/pic.c diff --git a/src/kernel/sys/pic.h b/kernel/sys/pic.h similarity index 100% rename from src/kernel/sys/pic.h rename to kernel/sys/pic.h diff --git a/src/kernel/sys/rtc.c b/kernel/sys/rtc.c similarity index 100% rename from src/kernel/sys/rtc.c rename to kernel/sys/rtc.c diff --git a/src/kernel/sys/rtc.h b/kernel/sys/rtc.h similarity index 100% rename from src/kernel/sys/rtc.h rename to kernel/sys/rtc.h diff --git a/src/kernel/video/stdfont.c b/kernel/video/stdfont.c similarity index 100% rename from src/kernel/video/stdfont.c rename to kernel/video/stdfont.c diff --git a/src/kernel/video/stdfont.h b/kernel/video/stdfont.h similarity index 100% rename from src/kernel/video/stdfont.h rename to kernel/video/stdfont.h diff --git a/src/kernel/video/video.c b/kernel/video/video.c similarity index 95% rename from src/kernel/video/video.c rename to kernel/video/video.c index 68add88..4200766 100644 --- a/src/kernel/video/video.c +++ b/kernel/video/video.c @@ -1,6 +1,6 @@ // video.c // 08/13/03 Josh Holtrop -// Modified: 03/02/04 +// Modified: 03/08/04 #include "hos_defines.h" #include "video.h" @@ -186,3 +186,18 @@ void video_drawConsoleChar(dword position) } +int video_getWidth() +{ + return video_mode.XResolution; +} + +int video_getHeight() +{ + return video_mode.YResolution; +} + +dword video_Mode() +{ + return videoMode; +} + diff --git a/src/kernel/video/video.h b/kernel/video/video.h similarity index 94% rename from src/kernel/video/video.h rename to kernel/video/video.h index d2ab455..02636b1 100644 --- a/src/kernel/video/video.h +++ b/kernel/video/video.h @@ -1,12 +1,12 @@ // video.h // 08/18/03 Josh Holtrop -// Modified: 03/02/04 - -#include "hos_defines.h" +// Modified: 03/08/04 #ifndef __HOS_VIDEO__ #define __HOS_VIDEO__ __HOS_VIDEO__ +#include "hos_defines.h" + void video_init(); void video_horiz(int y, int x1, int x2, dword color); void video_vert(int x, int y1, int y2, dword color); @@ -21,6 +21,9 @@ void video_psetpnull(int pixel, dword color); void video_renderChar(int x, int y, int character, dword color); void video_drawConsole(); void video_drawConsoleChar(dword position); +int video_getWidth(); +int video_getHeight(); +dword video_Mode(); typedef struct{ diff --git a/src/readme.txt b/readme.txt similarity index 96% rename from src/readme.txt rename to readme.txt index 8d50654..455659e 100644 --- a/src/readme.txt +++ b/readme.txt @@ -7,8 +7,8 @@ It was written by me, Josh Holtrop, with help from a few others along the way. -History -------------- +Change Log +---------- 0.14 03/01/04 - Thanks to Ben Meyer for helping me get a Makefile working and building on linux to work! diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index d668369..0000000 --- a/src/Makefile +++ /dev/null @@ -1,192 +0,0 @@ -##################################################################### -# Author: Benjamen R. Meyer # -# Date: 2004-2-15 # -# Purpose: To build Josh Holtrop's OS (HOS) using GNU make # -# Note: This makefile is for use on Linux & other Unix-like systems # -##################################################################### - -############## -# Variables: # -############## - -# Format of kernel binary: -# Do not change unless you know what you are doing -# Original: -KERNEL_FORMAT=aout -# CygWin: ?? -#KERNEL_FORMAT= - -# Assembler information: -NASM_BIN=nasm -NASM_FLAGS_IPL=-f bin -NASM_FLAGS_KERNEL=-f $(KERNEL_FORMAT) - -# C Compile Information: -CC=gcc -CC_FLAGS=-ffreestanding -fno-builtin -nostdlib -nodefaultlibs -I. - -# Linker Information: -LD=ld -LD_FLAGS=-nodefaultlibs -nostdlib -T link.ld - -# Information for creating a floppy image -# Note: FLOPPY_FS and FLOPPY_FAT_SIZE are related fields. -# FLOPPY_FAT_SIZE should be either 12 or 16, -# depending on if FLOPPY_FS is FAT12 or FAT16, respectively. -MKDOSFS_PROG=/sbin/mkdosfs -FLOPPY_IMAGE=floppy.img -FLOPPY_BLOCK_COUNT=1440 -FLOPPY_FS=FAT12 -FLOPPY_FAT_SIZE=12 -FLOPPY_MOUNT=./floppy_image - -# Floppy images are good for programs like VMware and Bochs Pentium Emulator. ;-) - -# Program for copying -COPY_BIN=cp - -########################################## -# Build the IPL (Boot Loader) and Kernel # -########################################## -all: Boot Link_Kernel - # A word of warning to users :-> And a little helpful information ;-) - @echo "Installation must be done as root." - @echo "Type 'make install' to install to a floppy in drive '/dev/fd0'" - @echo "Type 'make install_img' to create a floppy image and install to it." - -################################################# -# Clean up the source directory of any binaries # -################################################# -clean: - - rm *.o ./lst/*.lst *.bin $(FLOPPY_IMAGE) - -################# -# Build the IPL # -################# -Boot: - boot/make - -############################### -# Linking the kernel together # -############################### -Link_Kernel: Asm_Kernel Asm_Functions FAT_12 FDC Functions Keyboard KIO MM Mouse RD STDFONT VFS Video VMM C_Kernel - $(LD) $(LD_FLAGS) -o kernel.bin -Map ./lst/LDout.doc ks.o fat12.o fdc.o functions.o kernel.o keyboard.o kio.o mm.o mouse.o rd.o stdfont.o vfs.o video.o vmm.o asmfuncs.o - -########################## -# Assembly Kernel Loader # -########################## -Asm_Kernel: kernel.asm - $(NASM_BIN) $(NASM_FLAGS_KERNEL) -o ks.o -l ./lst/kernel.lst kernel.asm - -################################# -# Assembly Functions for Kernel # -################################# -Asm_Functions: asmfuncs.asm - $(NASM_BIN) $(NASM_FLAGS_KERNEL) -o asmfuncs.o -l ./lst/asmfuncs.lst asmfuncs.asm - -############ -# C Kernel # -############ -FAT_12: fat12.c fat12.h k_defines.h vfs.h - $(CC) $(CC_FLAGS) -c fat12.c -o fat12.o - -FDC: fdc.c fdc.h k_defines.h - $(CC) $(CC_FLAGS) -c fdc.c -o fdc.o - -Functions: functions.c functions.h k_defines.h - $(CC) $(CC_FLAGS) -c functions.c -o functions.o - -Keyboard: keyboard.c keyboard.h k_defines.h - $(CC) $(CC_FLAGS) -c keyboard.c -o keyboard.o - -KIO: kio.c kio.h k_defines.h video.h - $(CC) $(CC_FLAGS) -c kio.c -o kio.o - -MM: mm.c mm.h k_defines.h - $(CC) $(CC_FLAGS) -c mm.c -o mm.o - -Mouse: mouse.c mouse.h k_defines.h video.h - $(CC) $(CC_FLAGS) -c mouse.c -o mouse.o - -RD: rd.c rd.h k_defines.h vfs.h - $(CC) $(CC_FLAGS) -c rd.c -o rd.o - -STDFONT: stdfont.h stdfont.c - $(CC) $(CC_FLAGS) -c stdfont.c -o stdfont.o - -VFS: vfs.c vfs.h k_defines.h - $(CC) $(CC_FLAGS) -c vfs.c -o vfs.o - -Video: video.c video.h k_defines.h stdfont.h - $(CC) $(CC_FLAGS) -c video.c -o video.o - -# Why does this rely on video.h??? -VMM: vmm.c vmm.h k_defines.h video.h - $(CC) $(CC_FLAGS) -c vmm.c -o vmm.o - -C_Kernel: kernel.c k_defines.h fat12.h fdc.h functions.h keyboard.h kio.h mm.h mouse.h rd.h vfs.h video.h vmm.h - $(CC) $(CC_FLAGS) -c kernel.c -o kernel.o - -########################################### -# The following is for the floppy drive # -# Note: This must be done on *nix as root # -########################################### - -########################## -# Make install to floppy # -########################## -install: Install_IPL File_Copy - - -############################################ -# Write the Stage 1 IPL to the boot sector # -############################################ -Install_IPL: - boot/make install - -################################# -# Copy the files onto the drive # -################################# -File_Copy: kernel.bin - @echo -n "Copying kernel to the floppy: " - cp kernel.bin /dev/fd0 - -############################################ -# The following is for the floppy image. # -# Note: This must be done on *nix as root. # -############################################ - -######################## -# Make a floppy image: # -######################## -floppy_image: image_IPL image_file_copy - -###################################### -# Create and Format the floppy image # -###################################### -install_img: $(FLOPPY_IMAGE) - $(MKDOSFS_PROG) -C -F $(FLOPPY_FAT_SIZE) -r 112 $(FLOPPY_IMAGE) $(FLOPPY_BLOCK_COUNT) - -########################################## -# Mount the floppy on a loop back device # -########################################## -floppy_mount: - @echo "Mounting a file as a drive..." - mount $(FLOPPY_IMAGE) $(FLOPPY_MOUNT) -o loop - -############################################ -# Write the Stage 1 IPL to the boot sector # -############################################ -image_IPL: stage1.bin floppy_format - @echo "Writing boot sector to image..." - dd if=stage1.bin of=$(FLOPPY_MOUNT) seek=0 - -################################# -# Copy the files onto the image # -################################# -image_file_copy: stage2.bin kernel.bin - @echo -n "Copying files onto it: " - @echo -n "IPL Stage 2 " - $(COPY_BIN) stage2.bin $(FLOPPY_MOUNT) - @echo ", HOS Kernel" - $(COPY_BIN) kernel.bin $(FLOPPY_MOUNT)