Nanite/src/kernel/dri/disk/floppy.h
2025-06-04 07:00:28 -04:00

57 lines
1.5 KiB
C

/*----------------*\
|Nanite OS |
|Copyright (C) 2025|
|Tyler McGurrin |
\*----------------*/
#pragma once
#include <stdint.h>
typedef struct {
uint8_t id;
uint16_t cylinders;
uint16_t sectors;
uint16_t heads;
} FLOPPY_DISK;
void Floppy_Handler();
void Floppy_Drive_Init(uint8_t drive);
/* When i Said i was Rewriting this POS i meant it */
enum FLOPPY_IO {
FLOPPY_DOR = 0x3f2,
FLOPPY_MSR = 0x3f4,
FLOPPY_FIFO = 0x3f5, //data register
FLOPPY_CTRL = 0x3f7
};
enum FLOPPY_DOR_MASK {
FLOPPY_DOR_MASK_DRIVE0 = 0, //00000000 = here for completeness sake
FLOPPY_DOR_MASK_DRIVE1 = 1, //00000001
FLOPPY_DOR_MASK_DRIVE2 = 2, //00000010
FLOPPY_DOR_MASK_DRIVE3 = 3, //00000011
FLOPPY_DOR_MASK_RESET = 4, //00000100
FLOPPY_DOR_MASK_DMA = 8, //00001000
FLOPPY_DOR_MASK_DRIVE0_MOTOR = 16, //00010000
FLOPPY_DOR_MASK_DRIVE1_MOTOR = 32, //00100000
FLOPPY_DOR_MASK_DRIVE2_MOTOR = 64, //01000000
FLOPPY_DOR_MASK_DRIVE3_MOTOR = 128 //10000000
};
enum FLOPPY_MSR_MASK {
FLOPPY_MSR_MASK_DRIVE1_POS_MODE = 1, //00000001
FLOPPY_MSR_MASK_DRIVE2_POS_MODE = 2, //00000010
FLOPPY_MSR_MASK_DRIVE3_POS_MODE = 4, //00000100
FLOPPY_MSR_MASK_DRIVE4_POS_MODE = 8, //00001000
FLOPPY_MSR_MASK_BUSY = 16, //00010000
FLOPPY_MSR_MASK_DMA = 32, //00100000
FLOPPY_MSR_MASK_DATAIO = 64, //01000000
FLOPPY_MSR_MASK_DATAREG = 128 //10000000
};