OSDN Git Service

Add Graphic Mode Base
authorvosystems <doradora.motochan@gmail.com>
Sat, 11 Oct 2014 11:18:24 +0000 (20:18 +0900)
committervosystems <doradora.motochan@gmail.com>
Sat, 11 Oct 2014 11:18:24 +0000 (20:18 +0900)
Kernel/Kernel.vsb
Kernel/Makefile
Kernel/Vane.S
Kernel/boot.c
Kernel/load.S~ [deleted file]
include/VaneOS.h
include/VaneOS.h~

index 05e4db2..75ebcea 100755 (executable)
Binary files a/Kernel/Kernel.vsb and b/Kernel/Kernel.vsb differ
index b6115d8..67cfa6f 100644 (file)
@@ -33,9 +33,10 @@ ASM_INTERRUPT_S=ASM_Interrupt.S
 SCANCODE_C=scancode.c
 MEMMAN_C=memory.c
 FAT_C=FAT.c
+GRAPHIC_C=Graphical.c
 
 #オブジェクト
-BOOT_OBJ=${BOOT_S:.S=.o} ${BOOT_C:.c=.o} ${VANE_S:.S=.o} ${KEYBOARD_C:.c=.o} ${STDIO_C:.c=.o} ${GDT_IDT_C:.c=.o} ${INTERRUPT_C:.c=.o} ${STRING_C:.c=.o} ${ASM_INTERRUPT_S:.S=.o} ${SCANCODE_C:.c=.o} ${MEMMAN_C:.c=.o} ${FAT_C:.c=.o}
+BOOT_OBJ=${BOOT_S:.S=.o} ${BOOT_C:.c=.o} ${VANE_S:.S=.o} ${KEYBOARD_C:.c=.o} ${STDIO_C:.c=.o} ${GDT_IDT_C:.c=.o} ${INTERRUPT_C:.c=.o} ${STRING_C:.c=.o} ${ASM_INTERRUPT_S:.S=.o} ${SCANCODE_C:.c=.o} ${MEMMAN_C:.c=.o} ${FAT_C:.c=.o} ${GRAPHIC_C:.c=.o}
 
 kernel: ${BOOT_OBJ}
        ${LD} ${TARGET} ${BOOT_OBJ}
index b5fd419..fa583a7 100644 (file)
@@ -3,7 +3,13 @@
 .text
 .intel_syntax noprefix
 
-.global clear_state,asm_move_cursol,hlt
+.global clear_state,asm_move_cursol,hlt,vane_io_cli,vane_io_sti,write_mem8
+
+write_mem8:
+       MOV ECX,[ESP+4]
+       MOV AL,[ESP+8]
+       MOV [ECX],AL
+       RET
 
 hlt:
        HLT
@@ -36,3 +42,11 @@ asm_move_cursol:
        MOV EAX,0
        
        RET
+
+vane_io_cli:
+       CLI
+       RET
+
+vane_io_sti:
+       STI
+       RET
index 7df971f..82ee0b9 100644 (file)
@@ -21,6 +21,7 @@
 #include<stdio.h>
 #include<scancode.h>
 #include<memory.h>
+#include<Graphic.h>
 
 /*PROTOTYPE*/
 void outPortByte( unsigned short address, unsigned char value );
@@ -135,7 +136,18 @@ void cstart(unsigned long magic, unsigned long addr)
        puts("KernelShell/Root/>");
        scanf("%s",&cmd);
        printf("%s",cmd);
-       if(strcmp(cmd,"halt")==0)return;
+       
+       ClearScreen_Graphic();
+       ClearScreen();
+       
+       int vram_addr;
+       
+       for(vram_addr=0xa0000;vram_addr<0xaffff;vram_addr++)
+       {
+               write_mem8(vram_addr,15/*vram_addr & 0x0f*/);
+               //*vram_addr=(unsigned char)vram_addr & 0x0f;
+       }
+       
        while(1)hlt();
        return;
 }
diff --git a/Kernel/load.S~ b/Kernel/load.S~
deleted file mode 100644 (file)
index e89a902..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/* boot.S - bootstrap the kernel */
-/* Copyright (C) 1999, 2001  Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-#define ASM_FILE       1
-#include <multiboot.h>
-
-/* C symbol format. HAVE_ASM_USCORE is defined by configure.  */
-#ifdef HAVE_ASM_USCORE
-# define EXT_C(sym)                    _ ## sym
-#else
-# define EXT_C(sym)                    sym
-#endif
-
-/* The size of our stack (16KB).  */
-#define STACK_SIZE                     0x4000
-
-/* The flags for the Multiboot header.  */
-#ifdef __ELF__
-# define MULTIBOOT_HEADER_FLAGS                0x00000003
-#else
-# define MULTIBOOT_HEADER_FLAGS                0x00010003
-#endif
-       
-       .text
-
-       .globl  start, _start
-start:
-_start:
-       jmp     multiboot_entry
-
-       /* Align 32 bits boundary.  */
-       .align  4
-
-       /* Multiboot header.  */
-multiboot_header:
-       /* magic */
-       .long   MULTIBOOT_HEADER_MAGIC
-       /* flags */
-       .long   MULTIBOOT_HEADER_FLAGS
-       /* checksum */
-       .long   -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
-#ifndef __ELF__
-       /* header_addr */
-       .long   multiboot_header
-       /* load_addr */
-       .long   _start
-       /* load_end_addr */
-       .long   _edata
-       /* bss_end_addr */
-       .long   _end
-       /* entry_addr */
-       .long   multiboot_entry
-#endif /* ! __ELF__ */
-
-multiboot_entry:
-       /* Initialize the stack pointer.  */
-       movl    $(stack + STACK_SIZE), %esp
-
-       /* Reset EFLAGS.  */
-       pushl   $0
-       popf
-
-       /* Push the pointer to the Multiboot information structure.  */
-       pushl   %ebx
-       /* Push the magic value.  */
-       pushl   %eax
-
-       /* Now enter the C main function...  */
-       call    EXT_C(cstart)
-       RET
-       /* Halt.  */
-       pushl   $halt_message
-       call    EXT_C(printf)
-       
-loop:  hlt
-       jmp     loop
-
-halt_message:
-       .asciz  "Halted."
-
-       /* Our stack area.  */
-       .comm   stack, STACK_SIZE
index 7b91f3d..fb171b3 100644 (file)
@@ -8,11 +8,20 @@
 #ifndef VANEOS_H
 #define VANEOS_H
 
+vane_io_cli();
+vane_io_sti();
+write_mem_8();
+
 /*DEFINE COMMON*/
 typedef unsigned char  BYTE;
 typedef unsigned short WORD;
 typedef unsigned long  DWORD;
 
+typedef unsigned long long u_int8_t;
+typedef unsigned int u_int4_t;
+typedef unsigned short u_int2_t;
+typedef unsigned short u_int1_t;
+
 #define ADR_BOOTINFO   0x00000ff0
 #define ADR_DISKIMG            0x00100000
 #define FAT_DISK_PLASE 0x00020000
index 577dee5..8326220 100644 (file)
@@ -8,18 +8,26 @@
 #ifndef VANEOS_H
 #define VANEOS_H
 
+vane_io_cli();
+vane_io_sti();
+
 /*DEFINE COMMON*/
 typedef unsigned char  BYTE;
 typedef unsigned short WORD;
 typedef unsigned long  DWORD;
 
+typedef unsigned long long u_int8_t;
+typedef unsigned int u_int4_t;
+typedef unsigned short u_int2_t;
+typedef unsigned short u_int1_t;
+
 #define ADR_BOOTINFO   0x00000ff0
 #define ADR_DISKIMG            0x00100000
 #define FAT_DISK_PLASE 0x00020000
 #define BPB_SECTOR             63
 #define SECTOR_SIZE            512
 
-#define EX_CHAR-SHORT(source)  (unsigned short)(*source++ <<8) | *source++
+#define EX_CHAR_SHORT(source)  (unsigned short)(*source++ <<8) | *source++
 
 typedef struct
 {