You are not logged in.


#1 2005-06-08 04:23:26

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

IDT whoas...

Hi All,

I have finally caved in and am implementing my IDT. But alas I am having a problem... So you are aware, I have remaped the PIC, then disabled IRQs, I have setup an ISR for INT 30h (along with all exceptions et al). I load the IDT. I turn on interrupts with STI. If I don't call an INT 30h, the system runs forever, no sweat. But as soon as I INT 30h, the system reboots. It is late, so I'm heading to bed, but I will post some of the offending code for your thoughts later tomorrow (today, damn, it's past midnight). Any words of wisdom or thoughts?


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#2 2005-06-08 13:13:09

bubach
Administrator
From: Trollhättan, Sweden
Registered: 2005-02-15
Posts: 367
PM  Website

Re: IDT whoas...

My words of wisdom: You've screwed up.. tongue
Seriously... Much can go wrong in your IDT, to give any real tip, I'm gonna need to see some code.

Offline

 

#3 2005-06-08 17:51:31

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: IDT whoas...

bubach wrote:

My words of wisdom: You've screwed up.. tongue
Seriously... Much can go wrong in your IDT, to give any real tip, I'm gonna need to see some code.

ROTFLMAO! Thanks...yeah, I'm sure I screwed something up. It was late last night. Here is a file with the combined information needed. Notice I used your code for reprgramming the PIC and disabling IRQs. In addition I used your convention for loading the addresses into the IDT. Following the partial IDT (everthing after 30h is redundant as far as entries) are the called ISRs. Withn them are functions that work under conditions without the INT 30h called.

To reiterate, if I comment out INT 30h from teh PMDOE.ASM file, everthing works correctly. The procedure DisplayBootTime uses the CMOS time to update the screen with the current time and is my version of JMP $.

I have tried looking at Barry Brey's book without anything that is glaring at me. I will re-look at the docs you have on-line but I can not recall anything else I could be doing wrong.

The error I receive from Bochs 2.2 is:

Code:

00066869982p[CPU0 ] >>PANIC<< fetch_raw_descriptor: LDTR.valid=0

Not know for certain what this means, other than I suspect LDTR is the local descriptor register, I am not using a local descriptor table. I am using a global descriptor table. Perhaps I need to use one? Looking at your code I couldn't find  reference to using LDT so I'm at a loss.


Attachments:
Attachment Icon Together.asm, Size: 28,353 bytes, Downloads: 1,972

- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#4 2005-06-09 00:50:34

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: IDT whoas...

Wow, what a bunch of poop... I figured it out. My code selector variable, which I was using from the label in my GDT was some memory location way far away, probably in Star Wars III. wink So, suffice it to say, when I changed the variable to 08h, everything worked as it should:

Code:

Version 1.00.00.000000A2
CPU: Pentium or equivelent
A20 Gate: Initializing; A20 gate enabled...
E820: 1,073,741,824 bytes.
E801: 1,073,741,824 bytes.
88xx: 16,777,216 bytes.
CMOS: 67,108,864 bytes.
Entering UnReal Mode...
Probe: 1,073,741,824 bytes.
Mapping Memory 1: 1,073,741,824 installed: E820:
Mapping Memory 2: Bitmap Initialized at 14MB: 1,056,964,608 bytes free for use.
Looking for FLOPPY.SYS in root...Found! Loading FLOPPY.SYS 20,480 bytes.
The next file can be loaded at: 01005000h
Looking for ATA.SYS in root...Found! Loading ATA.SYS 95,360 bytes.
The next file can be loaded at: 0101C600h
Looking for KEYBOARD.SYS in root...Found! Loading KEYBOARD.SYS 24,576 bytes.
The next file can be loaded at: 01022600h
Looking for VENDORS.TXT in root...Found! Loading VENDORS.TXT 198,196 bytes.
The next file can be loaded at: 01052E00h
BIOS32 Entry Found at: 000F9D90h Revision: 0
PCI32 BIOS Found at: 000F9DD0h
PCIIRQ Table found: 000FA030h  Slots: 6 Bus: 0 Device: 01h  Function: 00h
PCI IRQ Slot: 0 Bus: 0 Device: 01h  INT A#: 60h
PCI IRQ Slot: 1 Bus: 0 Device: 02h  INT A#: 61h
PCI IRQ Slot: 2 Bus: 0 Device: 03h  INT A#: 62h
PCI IRQ Slot: 3 Bus: 0 Device: 04h  INT A#: 63h
PCI IRQ Slot: 4 Bus: 0 Device: 05h  INT A#: 60h
PCI IRQ Slot: 5 Bus: 0 Device: 06h  INT A#: 61h
About to cook VENDORS.TXT file for use in enumeration.
The first pass completed:
This file was created on: Mon Jun  6 00:15:01 PDT 2005
Creating database of 891,224 bytes: VendorID, DeviceID, VendorString, DeviceString.
Reducing required information size to items only currently installed.
8086 1237 Intel Corporation - 82440LX/EX PCI & Memory
8086 7000 Intel Corporation - 82371SB PIIX3 PCI-to-ISA Bridge (Triton II)
8086 7010 Intel Corporation - 82371SB PIIX3 IDE Interface (Triton II)
Start     End       Size (bytes)  Type Owner/Description
--------- --------- ------------- ---  -----------------
00000000h 000003FFh         1,024 02h  Interrupt Vector Table (IVT)
00000400h 000004FFh           256 02h  BIOS Data Area (BDA)
00000500h 000005FFh           256 02h  smiddyOS Data Area (OSDA)
00000600h 0009FBFFh       652,800 02h  smiddyOS code
0009FC00h 0009FFFFh         1,024 02h  Extended BIOS Data Area (EBDA)
000A0000h 000BFFFFh       131,072 02h  VGA Buffer Area
000C0000h 000FFFFFh       262,144 02h  ROM/BIOS Area
00100000h 00FFFFFFh    15,728,640 02h  smiddyOS code
01000000h 01004FFFh        20,480 02h  FLOPPY  SYS
01005000h 0101C5FFh        95,744 02h  ATA     SYS
0101C600h 010225FFh        24,576 02h  KEYBOARDSYS
01022600h 010226BFh           192 02h  PCI Vendors and Devices Information (Reduced)
010226C0h 01052DFFh       198,464 01h  <Free Useable Memory>
01052E00h 0112C757h       891,224 02h  PCI Vendors and Devices Information (Cooking)
0112C758h 3FFFFFFFh 1,055,733,928 01h  <Free Useable Memory>
40000000h FFFFFFFFh 3,221,225,472 02h  Unuseable addressable memory area
ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
º                º
º Unhandled INT! º
º                º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Boot up time> 20:49:42 System Time> 20:49:48 Current Time> 20:51:26

So now I have interrupts, NICE!


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

#5 2005-06-09 06:34:02

bubach
Administrator
From: Trollhättan, Sweden
Registered: 2005-02-15
Posts: 367
PM  Website

Re: IDT whoas...

I'm a bit late to this post.. smile
Anyway nice to hear that it worked out (and that you find my source usefull).
BTW cool "screenshot", looks like you got some drivers since last one.. tongue

Offline

 

#6 2005-06-09 09:49:12

smiddy
Active member
Registered: 2005-02-15
Posts: 183
PM

Re: IDT whoas...

Those are just stubs for now...I am working on the timer driver now and will use it for testing device installation, after I've gotten it working within the kernel first.


- [color=red]s[/color][color=blue]m[/color][color=red]i[/color][color=blue]d[/color][color=red]d[/color][color=blue]y[/color]

Offline

 

 

Board footer

Powered by PunBB
BOS homepage © Copyright 2005 Christoffer Bubach
Strict XHTML and valid CSS.