Fixed Interrupts bug:
It was a problem about ports(cpu/ports.asm) functions.
This commit is contained in:
parent
3a0d674985
commit
ba9feaba18
10
README.md
10
README.md
@ -20,12 +20,13 @@ Then you can run those commands:
|
||||
iceOS already have/will have the following features:
|
||||
- [x] Bare metal booting;
|
||||
- [x] VGA driver;
|
||||
- [ ] Interrupts implementation;
|
||||
- [x] Interrupts implementation;
|
||||
- [ ] PIC & PIT implementation;
|
||||
- [ ] PS2 driver;
|
||||
- [ ] Support for x86 architecture;
|
||||
- [x] GRUB as bootloader.
|
||||
|
||||
- [x] Support for x86 architecture;
|
||||
- [x] GRUB as bootloader;
|
||||
- [ ] Paging;
|
||||
- [ ] Dynamic memory allocation(heap).
|
||||
|
||||
## Resources
|
||||
This project is made with different kind of resources and different kind of knowledges, before starting it i read/studied the following resources:
|
||||
@ -34,5 +35,6 @@ This project is made with different kind of resources and different kind of know
|
||||
- [Operating System Concepts - Silberschatz (2016)](https://www.amazon.it/Sistemi-operativi-Concetti-ed-esempi/dp/8865183713/ref=pd_lpo_sbs_14_img_1?_encoding=UTF8&psc=1&refRID=4A5T2C7KKH7RA0K1T7RV)
|
||||
- [The Art Of Electronics - Horowitz (2015)](https://www.amazon.it/gp/product/0521809266/ref=ppx_od_dt_b_asin_title_s00?ie=UTF8&psc=1)
|
||||
- [OSDev wiki](https://wiki.osdev.org/Main_Page)
|
||||
- [The Little Book About OS Development](https://littleosbook.github.io/)
|
||||
## License
|
||||
iceOS is released under GPLv3, you can obtain a copy of this license by cloning the repository or by visiting [this](https://opensource.org/licenses/GPL-3.0) page.
|
7
isodir/boot/grub/grub.cfg
Normal file
7
isodir/boot/grub/grub.cfg
Normal file
@ -0,0 +1,7 @@
|
||||
set timeout = 0
|
||||
set default = 0
|
||||
|
||||
menuentry "iceOS" {
|
||||
multiboot2 /boot/iceOS.bin
|
||||
boot
|
||||
}
|
BIN
isodir/boot/iceOS.bin
Executable file
BIN
isodir/boot/iceOS.bin
Executable file
Binary file not shown.
@ -10,7 +10,7 @@ global outb ; Output from port
|
||||
global inb ; Input to port
|
||||
|
||||
outb:
|
||||
mov al, [esp + 3]
|
||||
mov al, [esp + 8]
|
||||
mov dx, [esp + 4]
|
||||
out dx, al
|
||||
ret
|
||||
|
@ -97,7 +97,7 @@ static void init_idt() {
|
||||
__asm__ __volatile__ ("sti");
|
||||
}
|
||||
|
||||
// Taken here: http://wiki.osdev.org/8259_PIC
|
||||
// Taken from: http://wiki.osdev.org/8259_PIC
|
||||
static void pic_remap(uint8_t offset1, uint8_t offset2) {
|
||||
uint8_t a1, a2;
|
||||
|
||||
|
@ -56,7 +56,8 @@ void isr_handler(registers_t regs) {
|
||||
isr_t handler = interrupt_handler[regs.int_num];
|
||||
handler(regs);
|
||||
} else {
|
||||
kprint_c((uint8_t*)"Received interrupt: ", 20, LIGHT_BROWN, BLACK);
|
||||
uint8_t *buf = (uint8_t*)"\nReceived interrupt: ";
|
||||
kprint_c((uint8_t*)buf,strlen(buf), LIGHT_BROWN, BLACK);
|
||||
kprint_c(interrupts_messages[(uint8_t)regs.int_num],
|
||||
strlen(interrupts_messages[(uint8_t)regs.int_num]),
|
||||
WHITE,
|
||||
|
@ -4,10 +4,17 @@
|
||||
#include "libc/stdio.h"
|
||||
|
||||
void kernel_main() {
|
||||
clear_prompt();
|
||||
init_prompt(); // Initialize frame buffer
|
||||
gdt_setup(); // Setup Global Descriptor Table
|
||||
idt_setup(); // Setup Interrupt Descriptor Table
|
||||
|
||||
clear_prompt();
|
||||
init_prompt(); // Initialize frame buffer
|
||||
puts("Hello World!");
|
||||
|
||||
/*
|
||||
// Testing some interrupts
|
||||
asm("int $0"); // Division by zero
|
||||
asm("int $4"); // Stack overflow
|
||||
asm("int $1"); // Page fault
|
||||
*/
|
||||
}
|
Loading…
Reference in New Issue
Block a user