summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/floppy.c44
1 files changed, 20 insertions, 24 deletions
diff --git a/kernel/floppy.c b/kernel/floppy.c
index 557df2a..f5af4df 100644
--- a/kernel/floppy.c
+++ b/kernel/floppy.c
@@ -1,3 +1,4 @@
+
/*
* Fool OS Simple Floppy Driver.
*
@@ -20,7 +21,6 @@
#include "../lib/logger/log.h" // logger facilities
#define FOOLOS_MODULE_NAME "floppy"
-
#define FLPY_SECTORS_PER_TRACK 18
static volatile int _CurrentDrive=0;
@@ -160,7 +160,7 @@ void sleep(int i)
void flpydsk_motor_on()
{
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"starting motor...");
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"starting motor...");
//x86_outb (FLPYDSK_DOR, FLPYDSK_DOR_MASK_DRIVE0_MOTOR | FLPYDSK_DOR_MASK_RESET);
x86_outb (FLPYDSK_DOR, 0x1c);
sleep(20);
@@ -168,7 +168,7 @@ void flpydsk_motor_on()
}
void flpydsk_motor_off()
{
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"stopping motor...");
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"stopping motor...");
x86_outb (FLPYDSK_DOR, 0x0c);
//x86_outb (FLPYDSK_DOR,FLPYDSK_DOR_MASK_RESET);
scr_put_string_nl("ok");
@@ -191,7 +191,7 @@ int flpydsk_calibrate (uint32_t drive) {
int i;
for (i = 0; i < 10; i++) {
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"calibrating");
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"calibrating");
//! send command
flpydsk_send_command ( FDC_CMD_CALIBRATE );
flpydsk_send_command ( drive );
@@ -275,7 +275,7 @@ void flpydsk_reset()
uint32_t st0, cyl;
//! reset the controller
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"reset controller");
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"reset controller");
flpydsk_disable_controller ();
flpydsk_enable_controller ();
flpydsk_wait_irq ();
@@ -304,7 +304,6 @@ void int_floppy_handler()
{
X86_IRQ_BEGIN
-// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"handling interrupt");
_FloppyDiskIRQ=1;
X86_IRQ_END
@@ -312,10 +311,10 @@ void int_floppy_handler()
void flpydsk_wait_irq()
{
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"waiting for irq6");
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"waiting for irq6");
while ( _FloppyDiskIRQ == 0);
_FloppyDiskIRQ = 0;
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"irq6 received");
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"irq6 received");
}
void flpydsk_check_int (uint32_t* st0, uint32_t* cyl) {
@@ -333,7 +332,7 @@ void flpydsk_write_sector_imp (uint8_t head, uint8_t track, uint8_t sector) {
flpydsk_dma_write ();
//flpydsk_drive_data (13, 1, 0xf, 0);
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"writing head/track/sector");
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"writing head/track/sector");
uint32_t st0, cyl;
@@ -375,7 +374,7 @@ void flpydsk_read_sector_imp (uint8_t head, uint8_t track, uint8_t sector) {
flpydsk_dma_read ();
//flpydsk_drive_data (13, 1, 0xf, 0);
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"reading head/track/sector");
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"reading head/track/sector");
uint32_t st0, cyl;
@@ -425,7 +424,7 @@ int flpydsk_seek ( uint32_t cyl, uint32_t head )
int i;
for (i = 0; i < 10; i++ ) {
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"seeking cyl: %d, head: %d",cyl,head);
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"seeking cyl: %d, head: %d",cyl,head);
//! send the command
flpydsk_send_command (FDC_CMD_SEEK);
@@ -461,7 +460,7 @@ void flpydsk_lba_to_chs (int lba,int *head,int *track,int *sector) {
uint8_t* flpydsk_read_sector (int sectorLBA) {
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"reading sector: %d",sectorLBA);
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"reading sector: %d",sectorLBA);
if (_CurrentDrive >= 4)
@@ -492,7 +491,7 @@ uint8_t* flpydsk_read_sector (int sectorLBA) {
uint8_t* flpydsk_write_sector (int sectorLBA) {
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"writing sector: %d",sectorLBA);
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"writing sector: %d",sectorLBA);
if (_CurrentDrive >= 4)
return 0;
@@ -531,27 +530,24 @@ void floppy_init()
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"driver init");
flpydsk_reset ();
-// flpydsk_drive_data (13, 1, 0xf, 0);
- // flpydsk_drive_data (3,16,240,0);
- //
- //
-
- //
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"test read (sector: 1)");
- flpydsk_read_sector(1);
+
+#ifdef FOOLOS_TEST_FLOPPY
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"test read (sector: 0)");
+ flpydsk_read_sector(0);
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"finished reading");
uint16_t *dma=0xb000;
int i;
for(i=0;i<10;i++)
{
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"test read 0x%04x ",dma[i]);
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"test read 0x%04x ",dma[i]);
}
-/*
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"test write (sector: 100)");
flpydsk_write_sector(100);
- */
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"finished writing");
+#endif
}