summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/config.h4
-rw-r--r--kernel/floppy.c10
-rw-r--r--kernel/floppy.h1
-rw-r--r--kernel/kernel.c19
4 files changed, 26 insertions, 8 deletions
diff --git a/kernel/config.h b/kernel/config.h
index 7af5c03..02ba57c 100644
--- a/kernel/config.h
+++ b/kernel/config.h
@@ -1,4 +1,2 @@
-#define FOOLOS_COMPILE_FLOPPY
-#define FOOLOS_TEST_FLOPPY_READ
-//#define FOOLOS_TEST_FLOPPY_WRITE
+//#define FOOLOS_COMPILE_FLOPPY
diff --git a/kernel/floppy.c b/kernel/floppy.c
index 5f34c56..1dbe137 100644
--- a/kernel/floppy.c
+++ b/kernel/floppy.c
@@ -308,9 +308,11 @@ void flpydsk_reset()
flpydsk_calibrate ( _CurrentDrive );
}
-void int_floppy()
+void int_floppy_handler()
{
+ X86_IRQ_BEGIN
_FloppyDiskIRQ=1;
+ X86_IRQ_END
}
void flpydsk_wait_irq()
@@ -563,9 +565,9 @@ void floppy_init()
flpydsk_reset ();
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"test write (sector: 100)");
- flpydsk_write_sector(100);
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"finished writing");
+// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"test write (sector: 100)");
+// flpydsk_write_sector(100);
+// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"finished writing");
}
diff --git a/kernel/floppy.h b/kernel/floppy.h
new file mode 100644
index 0000000..c149a3a
--- /dev/null
+++ b/kernel/floppy.h
@@ -0,0 +1 @@
+void int_floppy_handler();
diff --git a/kernel/kernel.c b/kernel/kernel.c
index a6322f0..0b87b64 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -1,4 +1,5 @@
#define FOOLOS_MODULE_NAME "kernel"
+#include "config.h"
#include "lib/logger/log.h"
#include "lib/int/stdint.h"
@@ -6,12 +7,16 @@
#include "smp.h"
#include "time.h"
+#ifdef FOOLOS_COMPILE_FLOPPY
+#include "floppy.h"
+#endif
+
///////
// interrupt handler prototypes
// todo: move somewhere else!?
void int_clock_handler();
void int_kb_handler();
-void int_floppy_handler();
+
uint32_t read_eip();
uint32_t c1,c2,c3;
@@ -66,6 +71,11 @@ void kernel_main(uint32_t initial_stack, int mp)
dest[i]=source[i];
}
+
+
+ /////////////////// BULLSHIT ABOVE THIS LINE: TODO: CLEANUP
+
+
//
// We want to get output to the screen as fast as possible!
//
@@ -90,6 +100,9 @@ void kernel_main(uint32_t initial_stack, int mp)
uint32_t vesa_physbase=vesa_init(0x8300,0x8400,0x80000);
+ char *ramdisk=0x80400;
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"ramdisk: %s",ramdisk);
+
//
// Print initial address of the esp stack pointer
//
@@ -133,8 +146,10 @@ void kernel_main(uint32_t initial_stack, int mp)
// install keyboard interrupt handler (irq 1 => 33)
int_install_ir(33, 0b10001110, 0x08,&int_kb_handler);
+#ifdef FOOLOS_COMPILE_FLOPPY
// install floppy interrupt handler (irq 6 => 38)
int_install_ir(38, 0b10001110, 0x08,&int_floppy_handler);
+#endif
// now we can enable interrupts back again
x86_int_enable();
@@ -183,7 +198,9 @@ void kernel_main(uint32_t initial_stack, int mp)
// Initialize Floppy Disk
//
+ #ifdef FOOLOS_COMPILE_FLOPPY
floppy_init();
+ #endif
//