flat assembler
Message board for the users of flat assembler.
![]() Goto page Previous 1, 2, 3, 4 Next |
Author |
|
edfed 16 Nov 2007, 13:08
of course, the goal is to make it works
![]() |
|||
![]() |
|
rhyno_dagreat 16 Nov 2007, 14:46
In the end, all it will come down to is a lot of trial and error. Hopefully a lot more trial than error though.
![]() |
|||
![]() |
|
edfed 16 Nov 2007, 15:58
error is the out of workin' space.
the intelligence is, in fact, the capacity to focus on non error space like a regulation, electronic error corrector, or other transfert functions if i didn't made any int coding, it's because i make all the theory before writing the first line i've tested a long time ago to code int for real mode i saw it works well but i didn't possess the knoledge to make the others parts of the os, so i focused all my brain on learning the X86-32 µP features crossing the references, making abstraction of each component of the system as INT can be disabled for an infinite time, i will write them after the boot design. INTs are the more complex things to do for GPF for exemple, can you imagine a code that corrects the instruction that causes it? for DIV/0 i want to make a function thats return an infinite value 1/0 = infinite ( 7FFFh) -1/0 = -infinite (8000h) and let the code running normally with the infinite value depending on the use of this value there are a lot of things to do DMA, aPIC, PIT, 8242, FDC, HDC, all these chips are the components the more hard to code. cauz they are external of the X86 arch DMA & UDMA are my worst problems i don't understand how to make a DMA transfert from I/O to MEM, MEM to I/O, MEM to MEM can the DMA chip access the full 32 address space? i don't see any doc that precise it! can the DMA channels programmed to make a DMA transfert of PORT 60h (keyboard) or generally, a transfert from Xport to Ymemory? MY life IS full of questions??? |
|||
![]() |
|
rhyno_dagreat 16 Nov 2007, 16:07
Truth be told, I haven't dug much into DMA. From what I hear it's a very bad setup and in all honesty, I'm trying to avoid it for as long as possible
![]() |
|||
![]() |
|
edfed 16 Nov 2007, 16:29
me not, because of SB programing and CPU time economy
|
|||
![]() |
|
rhyno_dagreat 16 Nov 2007, 17:43
SB = SoundBlaster?
|
|||
![]() |
|
edfed 16 Nov 2007, 18:10
no it's Sally & Billy
Of course it's Sound Blaster and generally Sound Boards because there is not only Sound Blaster, there are , non exaustive list, OPL3 , AC97, ESS, Analog Devices, Trident, Nforce, and others the goal is to be like windows, supporting all Sound Boards with the same protocol! i don't know anything about others cards than SB but i know they all have the 220 port address and a DMA channel |
|||
![]() |
|
rhyno_dagreat 16 Nov 2007, 18:29
Ah, I see. But don't you need to access them through the PCI bus?
Aslo, not sure if you know this or not, but do Graphics cards have generally the same layout or is it completely different and more complicated? |
|||
![]() |
|
edfed 16 Nov 2007, 19:13
all graphic cards have the same basic functions
they just differ in advanced layout ( 3D, BLITTER, etc...) but the vesa standard and all the bios modes are supposed to be supported i hope it's the same for sound cards but my hopeness will not change what it is in reality it's like the keyboards, they all have the same layout (8242) the mouses too i think the problem is to support components that are differents i don't have exemple but for power management, all mother board constructors have their own layout. computer world is full of shit, that's why i want to live in the forest with animals |
|||
![]() |
|
Dex4u 17 Nov 2007, 13:24
DMA is not that hard.
Last edited by Dex4u on 17 Nov 2007, 16:12; edited 1 time in total |
|||
![]() |
|
vid 17 Nov 2007, 13:35
Quote: for GPF for exemple, can you imagine a code that corrects the instruction that causes it? I can't imagine code that would fix falty program Quote: for DIV/0 i want to make a function thats return an infinite value bad idea IMO. Can you demonstrate some case where this would be useful? |
|||
![]() |
|
edfed 19 Nov 2007, 09:20
for digital signal processing
this div/0 permittivitty will act as an analog saturation, reference of this idea come from electronical operational amplifiers applications. for memory addressing it can be used to access a real tmp memory location. a global location that is used by kernel as a debug semaphore or something like this. me too i cannot imagine a code that corrects GPF but i think it is possible to do. if dma is not hard, it's a good thing, i'll told you my real opinion when i'll code for dma ![]() |
|||
![]() |
|
tom tobias 19 Nov 2007, 13:33
edfed wrote: ...if dma is not hard, it's a good thing,... |
|||
![]() |
|
edfed 19 Nov 2007, 14:32
UDMA 33 is at 33 MHz
and i think there is also a UDMA XX that is faster why do they continue the implementation of DMA on bridge if it is really bad? for USB devices, a data transfert of Giga bytes brings the system to be really slow if there is a long IO latency, with UDMA redirected to USB it can increase the quality of the system. the lack of free official documents about UDMA and all domestic hardware is bad!! |
|||
![]() |
|
LocoDelAssembly 19 Nov 2007, 15:38
I don't know if it works at 5 MHz tom, but you are right it is slow (well, I think
![]() You can see at the Windows' Device Manager that the floppy controller uses a DMA channel (at least my computer uses DMA 02), but your HDD controller will use no channel but still has DMA enabled, this is because it does not uses the DMA controller but the mechanisms provided by the PCI bus instead. |
|||
![]() |
|
edfed 10 Dec 2007, 02:00
excuse me for the poor question, but i need a precision.
what means exactlly 'ctrl break', speaking about keyboard. |
|||
![]() |
|
tom tobias 10 Dec 2007, 14:13
edfed wrote: ...
|
|||
![]() |
|
edfed 10 Dec 2007, 22:13
so, it need's to execute a sub int9:
when scancode is a key push key set/reset key when scancode is not a key: don't push key don't set key remember code when scancode is extended: translate scancode return extendedcode jmp to scancode=key when resulting code is a system code: don't push key don't set key call systemfunc remembercode strange, but, when it's a soft int, param are in al/ax/eax... with hard int, param come from port in al/ax/eax... all these shemes are exemples. it's hard to code the irq1 .. :-s |
|||
![]() |
|
dosin 11 Dec 2007, 04:09
are you in Protected mode and enabled the timer-irq0?
did you enable it with? 0xFE? Code: mov al,0xFE ; IRQ0 [timer] disables keyboard out 0x21,al if this is not a problem for you I just wanted to add that if you use 0xFE it will disable the Keyboard irq1. Code: mov al,0xFC ; IRQ0 [timer] enable keyboard/timer out 0x21,al since this is before multitasking you can just add: Code: irq0: mov al,0x20 out 0x20,al iret irq1: ;read key stuff goes here mov al,0x20 out 0x20,al iret I did this and took a while and a lot of net searching to find out why in pmode my irq0 was firing but not the irq1... hope this helps someone programming the keyboard! Last edited by dosin on 11 Dec 2007, 04:18; edited 1 time in total |
|||
![]() |
|
Goto page Previous 1, 2, 3, 4 Next < Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.