• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 207
  • Last Modified:

what code cannot?

Hi experts:
    Would you plz tell me what  assembly code cannot run under WindowXX?

    I try this code but I fail .Program crashed:
    mov ax , 13h
    int 10h
Above I want to switch to mode 13h to draw pixel .

Btw: What interrupt is it : 800*600*256 ?
I know 13h is 320x200x256.

Thank you!!
 
0
Babyworship
Asked:
Babyworship
  • 10
  • 3
1 Solution
 
BabyworshipAuthor Commented:
I feel strange.Does the video card's memory(VRAM) is mapped into the 32bit memory address?
0
 
nils pipenbrinckCommented:
simple answer:

Under windows the video bios is not available. You can't use int 10h to set a video mode.

I guess you're trying to run a old dos graphics code under windows. Well.. it won't work.

You have two options: either go down to dos and use a dos compiler. In a dos-window int 10h will work quite nice (at least under win98 and win95. I don't know about nt and win2k).

The modern way would be to use some c-code and do a directdraw init. Then you can switch into any videomode supported by your hardware and fool around with the pixels.

Nils
0
 
daittCommented:
I think it's fine to run your program as a DOS application (under a DOS session of Windows). But you cannot run a Window application and then call int 10h, because Windows doesn't allow you to access video device that way.
Just want to hear other ideas.
BTW: if you want 800x600*256 you may have to program VESA BIOS (for VESA-compatible video card). For different cards they have different interrupts to control the hardware. It's in DOS only.
In Windows you should have a look at DirectX. Windows doesn't like you to direct access the video memory as well as other devices.
0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
BabyworshipAuthor Commented:
Thanks nil and does the video card's memory(VRAM) is mapped into the 32bit memory address in windows?

And can you tell me a general rule ? What code cannot run under window-system window which can under dos?Otherwise,i'm afraind futhur quesiton like this.

Thank you

0
 
BabyworshipAuthor Commented:
Thanks daitt very much!!
0
 
BabyworshipAuthor Commented:
Adjusted points from 50 to 60
0
 
BabyworshipAuthor Commented:
Adjusted points from 60 to 70
0
 
BabyworshipAuthor Commented:
>Windows doesn't like you to direct >access the video memory as well as >other devices

Sorry,daitt.sorry for my stupidity.
Would you tell me what "direct access" means in fact? It means what in code?

Thanks a lot!!
0
 
BabyworshipAuthor Commented:
Are you there?!!!!!!!???
0
 
BabyworshipAuthor Commented:
nils ,would  you tell me what can not I do under windows?
0
 
daittCommented:
I'm sorry my email account didn't work well. Direct access I meant calling the Interrupts to perform an action on the device, or changing mapped memory .. In Windows you should control devices through APIs, not through interrupts.
If you want to program graphics in Windows (real Windows application), you should have a look at DirectX. But if you don't have expereince in Windows programming (APIs, Interfaces...) you should learn it first.
Anyway I think you're still able to call some video interrupts under a DOS session in Windows. I saw many games for DOS can run in Full-Screen mode in Windows and they're using mode 13H. If I have time I will write a small program to test that.
Best regards
0
 
BabyworshipAuthor Commented:
Adjusted points from 70 to 100
0
 
BabyworshipAuthor Commented:
Thanks,daitt
So , in windows ,why interupts still there ,who use it ? the VxD?

Thanks!!!!!!!!!!!
0
 
daittCommented:
I think the kernel and the drivers can use them - actually interrupts are not the only way to control devices (we write to and read from ports and mapped memory). Interrupts are still there I think because the DOS applications still need them and interrupts are part of the machine's language, so nobody can get rid of them. But some interrupts cannot be used safely in Windows because it will conflict with what the drivers doing. The procedure to make the device do something (for example to change to another screen mode) becomes complex (you must call this interrupt .. then call that .. the write this to the port .. and so on) so if you call an interrupt when the device is calling another, you break the procedure. It's not a problem in DOS, because DOS is single tasking. Another thing is that when you change the screen mode, you must do some actions to inform other components in Windows to get the system use your new screen mode. Otherwise everything will be messed up. So programming applications in Windows is calling functions through the interface - API(a contract between you and the device driver(DD) - the DD gives you this function. You call it with some parameters and the DD will finish the task for you. You don't have to understand how the DD access hardware resources (actually each device has its own method to control and there's no standard interrupt for advanced functions of the devices). How to change to a new screen mode is defined by the manufactures. How to inform Windows about new screen mode is defined by the kernel. You can do all of them manually with your code, but there's no official documents for these things, so your program might not be able to run when the user change their hardware or upgrade the operating system.
I don't know which action is legal in windows .. which is not. I think the files interrupts are ok. I/O interrupts are not. Anyway .. there's no reason to use interrupts in a real Windows application. Everything you want to do (and you're allowed to do) should be implemented already in the APIs.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 10
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now