flat assembler
Message board for the users of flat assembler.

Index > OS Construction > Messed up at interrupt priority... i guess

Author
Thread Post new topic Reply to topic
flash



Joined: 11 Mar 2006
Posts: 55
Location: Cuba
flash
Hello, i am testing some funtionalities and pc hardware at protected mode using some kind of "graphical application". I am using VESA mode 118h to put some info updated on screen by double buffering(the software one)
Basicaly it is a "navigation map" stolen from StarCraft ArtWork Wink whit fixed position "transparent windows". I use irqs 0, 1 and 8.
Things become hard when i try to update the time(irq8) at transparent window because i update all the screen at irq1 because for some reason when using irq0 the keyboard was muted Sad. Well i put even a tracker for movil object (the battlecruiser Wink) and it works fine despite some delay when using the keyboard... But the real problem is the time, i finaly use a direct access to screen but it creates a little flicker and is not udate while moving the map.
How can i use correctly interrupt priority? Better to use timer to refresh screen? How to read KeyBoard while irq0 or viceversa? There is some kind of implementing rules?
I can post the code to, if nedded, but it works as decribed.
Thank's


Description:
Filesize: 470.93 KB
Viewed: 972 Time(s)

screenshoot.png


Post 11 Nov 2012, 22:11
View user's profile Send private message Reply with quote
cod3b453



Joined: 25 Aug 2004
Posts: 619
cod3b453
It sounds like your ISRs are consuming too much time because your main code is inside these ISRs Question Since VESA access is relatively time consuming, it might be better to move this code into a normal (interruptible) process context to allow IRQ handlers to process timer/keyboard/clock events in parallel.
Post 12 Nov 2012, 00:39
View user's profile Send private message Reply with quote
flash



Joined: 11 Mar 2006
Posts: 55
Location: Cuba
flash
Mmmm... that means code outside interrupts must wait for some flags or something else... My idea was to use ints only, but you are right, the code consumes to much time moving bytes Smile
Thank's I will try it...
Post 12 Nov 2012, 04:19
View user's profile Send private message Reply with quote
flash



Joined: 11 Mar 2006
Posts: 55
Location: Cuba
flash
Oh!! i think i "found" the cause... i was using qemu with cirrus logic video card. The manual tells about it must be used in 16bit color depth Razz and recomends VMware SVGA-II for higher modes... it solves the problem. Anyway i must adjust some routines following cod3b453 recomendations and test it on real hardaware... but its hard to find a hard disk to play... Smile
Post 12 Nov 2012, 23:38
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2020, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.

Website powered by rwasa.