Implement Basic FDD Detection, Begin Implementing Floppy Driver, Bugfixes And More!
This commit is contained in:
parent
93b72e5a1e
commit
ba9d1fae90
@ -7,4 +7,5 @@ They should be seperated via commas **WITHOUT ANY SPACES!**
|
|||||||
|
|
||||||
- `quietkb` : Makes Keyboard Driver NOT Auto Output pressed keys to Video
|
- `quietkb` : Makes Keyboard Driver NOT Auto Output pressed keys to Video
|
||||||
|
|
||||||
## NOTE: THIS IS NOT CURRENTLY FULLY IMPLEMENTED!
|
## NOTE: THIS IS NOT CURRENTLY FULLY IMPLEMENTED!
|
||||||
|
(or Really At all For now... Need to make the damn disk calls)
|
||||||
@ -1,6 +1,6 @@
|
|||||||
/*----------------*\
|
/*----------------*\
|
||||||
|Nanite OS |
|
|Nanite OS |
|
||||||
|Copyright (C) 2024|
|
|Copyright (C) 2025|
|
||||||
|Tyler McGurrin |
|
|Tyler McGurrin |
|
||||||
\*----------------*/
|
\*----------------*/
|
||||||
#include "x86.h"
|
#include "x86.h"
|
||||||
@ -29,8 +29,8 @@ void Memory_Detect(MemoryInfo* memoryInfo)
|
|||||||
g_MemRegions[g_MemRegionCount].ACPI = block.ACPI;
|
g_MemRegions[g_MemRegionCount].ACPI = block.ACPI;
|
||||||
++g_MemRegionCount;
|
++g_MemRegionCount;
|
||||||
|
|
||||||
printf("E820: base=0x%llx length=0x%llx type=0x%x\n", block.Base, block.Length, block.Type);
|
// printf("E820: base=0x%llx length=0x%llx type=0x%x\n", block.Base, block.Length, block.Type);
|
||||||
|
// MAKE IT SHUT THE FUCK UP
|
||||||
ret = x86_E820GetNextBlock(&block, &continuation);
|
ret = x86_E820GetNextBlock(&block, &continuation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
12
src/kernel/dri/cmos.c
Normal file
12
src/kernel/dri/cmos.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/*----------------*\
|
||||||
|
|Nanite OS |
|
||||||
|
|Copyright (C) 2025|
|
||||||
|
|Tyler McGurrin |
|
||||||
|
\*----------------*/
|
||||||
|
#include "cmos.h"
|
||||||
|
|
||||||
|
|
||||||
|
void CMOS_RTC_Handler()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
8
src/kernel/dri/cmos.h
Normal file
8
src/kernel/dri/cmos.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/*----------------*\
|
||||||
|
|Nanite OS |
|
||||||
|
|Copyright (C) 2025|
|
||||||
|
|Tyler McGurrin |
|
||||||
|
\*----------------*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
void CMOS_RTC_Handler();
|
||||||
37
src/kernel/dri/disk/floppy.c
Normal file
37
src/kernel/dri/disk/floppy.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*----------------*\
|
||||||
|
|Nanite OS |
|
||||||
|
|Copyright (C) 2025|
|
||||||
|
|Tyler McGurrin |
|
||||||
|
\*----------------*/
|
||||||
|
#include "floppy.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <util/binary.h>
|
||||||
|
#include <arch/i686/io.h>
|
||||||
|
#include <arch/i686/irq.h>
|
||||||
|
|
||||||
|
#define PORT_FLOPPY_TYPE 0x10
|
||||||
|
|
||||||
|
int Master_FDD_Detect()
|
||||||
|
{
|
||||||
|
int Buffer;
|
||||||
|
int FDDType;
|
||||||
|
/* FDD Drive Values
|
||||||
|
Value: Drive Type:
|
||||||
|
00h no drive
|
||||||
|
01h 360 KB 5.25 Drive
|
||||||
|
02h 1.2 MB 5.25 Drive
|
||||||
|
03h 720 KB 3.5 Drive
|
||||||
|
04h 1.44 MB 3.5 Drive
|
||||||
|
05h 2.88 MB 3.5 drive*/
|
||||||
|
Buffer = i686_inb(PORT_FLOPPY_TYPE);
|
||||||
|
|
||||||
|
int bit = Byte_Parse(Buffer, 0);
|
||||||
|
int i = 1;
|
||||||
|
while(i < 4) {
|
||||||
|
FDDType = bit & bit;
|
||||||
|
bit = Byte_Parse(Buffer, i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return FDDType;
|
||||||
|
}
|
||||||
8
src/kernel/dri/disk/floppy.h
Normal file
8
src/kernel/dri/disk/floppy.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/*----------------*\
|
||||||
|
|Nanite OS |
|
||||||
|
|Copyright (C) 2025|
|
||||||
|
|Tyler McGurrin |
|
||||||
|
\*----------------*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
int Master_FDD_Detect();
|
||||||
@ -11,6 +11,10 @@
|
|||||||
#include <arch/i686/irq.h>
|
#include <arch/i686/irq.h>
|
||||||
#include <arch/i686/basicfunc.h>
|
#include <arch/i686/basicfunc.h>
|
||||||
#include <dri/keyboard.h>
|
#include <dri/keyboard.h>
|
||||||
|
#include <dri/cmos.h>
|
||||||
|
#include <dri/fat.h>
|
||||||
|
#include <dri/disk/floppy.h>
|
||||||
|
#include <dri/disk/ata.h>
|
||||||
#include <util/param.h>
|
#include <util/param.h>
|
||||||
#include "../libs/version.h"
|
#include "../libs/version.h"
|
||||||
#include "../libs/boot/bootparams.h"
|
#include "../libs/boot/bootparams.h"
|
||||||
@ -20,12 +24,14 @@
|
|||||||
extern uint8_t __bss_start;
|
extern uint8_t __bss_start;
|
||||||
extern uint8_t __end;
|
extern uint8_t __end;
|
||||||
|
|
||||||
|
int masterFDDType;
|
||||||
|
|
||||||
int uptime;
|
int uptime;
|
||||||
void timer(Registers* regs)
|
void timer(Registers* regs)
|
||||||
{
|
{
|
||||||
uptime++;
|
uptime++;
|
||||||
printf("%d", uptime);
|
// printf("%d", uptime);
|
||||||
movecursorpos(8,14);
|
// movecursorpos(8,14);
|
||||||
}
|
}
|
||||||
|
|
||||||
int keyboard_scancode;
|
int keyboard_scancode;
|
||||||
@ -49,12 +55,18 @@ void __attribute__((section(".entry"))) start(BootParams* bootParams) {
|
|||||||
HAL_Initialize();
|
HAL_Initialize();
|
||||||
movecursorpos(19, 8);
|
movecursorpos(19, 8);
|
||||||
printf("Done!\n\n\n\n\n");
|
printf("Done!\n\n\n\n\n");
|
||||||
|
|
||||||
i686_IRQ_RegisterHandler(0, timer);
|
i686_IRQ_RegisterHandler(0, timer);
|
||||||
|
i686_IRQ_RegisterHandler(8, CMOS_RTC_Handler);
|
||||||
|
|
||||||
|
// Begin Loading Basic Drivers
|
||||||
printf("Load Keyboard Driver...");
|
printf("Load Keyboard Driver...");
|
||||||
i686_IRQ_RegisterHandler(1, keyboard);
|
i686_IRQ_RegisterHandler(1, keyboard);
|
||||||
printf("Done!\n");
|
printf("Done!\n");
|
||||||
printf("Uptime: ");
|
|
||||||
|
printf("Load Basic Storage Drivers...");
|
||||||
|
masterFDDType = Master_FDD_Detect();
|
||||||
|
printf("Done!\n");
|
||||||
|
printf("Master FDD Type: %d", masterFDDType);
|
||||||
|
|
||||||
|
|
||||||
// Debug Info for Memory :3 i REALLY need to make a like serial debug output thingy
|
// Debug Info for Memory :3 i REALLY need to make a like serial debug output thingy
|
||||||
|
|||||||
15
src/kernel/util/binary.c
Normal file
15
src/kernel/util/binary.c
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*----------------*\
|
||||||
|
|Nanite OS |
|
||||||
|
|Copyright (C) 2025|
|
||||||
|
|Tyler McGurrin |
|
||||||
|
\*----------------*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
int Byte_Parse(int8_t byteFlag, int whichBit)
|
||||||
|
{
|
||||||
|
if (whichBit > 0 && whichBit <= 8)
|
||||||
|
return (byteFlag & (1<<(whichBit-1)));
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@ -1,9 +1,11 @@
|
|||||||
/*----------------*\
|
/*----------------*\
|
||||||
|Nanite OS |
|
|Nanite OS |
|
||||||
|Copyright (C) 2024|
|
|Copyright (C) 2025|
|
||||||
|Tyler McGurrin |
|
|Tyler McGurrin |
|
||||||
\*----------------*/
|
\*----------------*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define FLAG_SET(x, flag) x |= (flag)
|
#define FLAG_SET(x, flag) x |= (flag)
|
||||||
#define FLAG_UNSET(x, flag) x &= ~(flag)
|
#define FLAG_UNSET(x, flag) x &= ~(flag)
|
||||||
|
|
||||||
|
int Byte_Parse(int8_t byteFlag, int whichBit);
|
||||||
@ -6,5 +6,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
// Version Info MUST stay on line 9! (it gets incremented on build!)
|
// Version Info MUST stay on line 9! (it gets incremented on build!)
|
||||||
#define LOGO " _ _____ _ __________________\n / | / / | / | / / _/_ __/ ____/\n / |/ / /| | / |/ // / / / / __/ \n / /| / ___ |/ /| // / / / / /___ \n/_/ |_/_/ |_/_/ |_/___/ /_/ /_____/ \n"
|
#define LOGO " _ _____ _ __________________\n / | / / | / | / / _/_ __/ ____/\n / |/ / /| | / |/ // / / / / __/ \n / /| / ___ |/ /| // / / / / /___ \n/_/ |_/_/ |_/_/ |_/___/ /_/ /_____/ \n"
|
||||||
#define VERSION "RD-00004"
|
#define VERSION "RD-00008"
|
||||||
#define BOOTLOGO " _ ______ ____ ____ ______\n / | / / __ )/ __ \\/ __ /_ __/\n / |/ / __ / / / / / / // / \n / /| / /_/ / /_/ / /_/ // / \n/_/ |_/_____/\\____/\\____//_/ \n"
|
#define BOOTLOGO " _ ______ ____ ____ ______\n / | / / __ )/ __ \\/ __ /_ __/\n / |/ / __ / / / / / / // / \n / /| / /_/ / /_/ / /_/ // / \n/_/ |_/_____/\\____/\\____//_/ \n"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user