Solved

How to use _dos_setvect

Posted on 2000-03-22
6
1,084 Views
Last Modified: 2012-06-27
Hello,

I want to install an ISR for interrupt 5, how to write the code using _dos_setvect in Visual C++ 1.5?

In BC++, it needs to add 8 to it, that means, _setvect(0xD), is it the same in VC++?

Thanks
zouying
0
Comment
Question by:zouying
6 Comments
 

Expert Comment

by:asrik
Comment Utility
try using the method
   _dos_setvect(0x5,<functionname>)
0
 
LVL 4

Expert Comment

by:nils pipenbrinck
Comment Utility
I haven't ever written code with VC 1.5, but it should be the same as for other dos compilers.

You write, that you want to install a ISR for interrupt 5.. I think you don't mean the interrupt 5 but the Hardware IRQ line 5. That's a different thing.

When the IRQ lines 5 (for example) signal an interrupt not interrupt 5 will be called but interrupt 5+8 (as you already said). That's a little bit strange, and I don't know the reason for it. My guess is, that the first 8 interrupts are reserved for the cpu.

so in summary interrupt 0x0d will be called when IRQ5 is raised.

Nils
0
 

Author Comment

by:zouying
Comment Utility
I don't think it is reasonable.

0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Expert Comment

by:nisa
Comment Utility
Hi,
 Yes it is the same concept.. that is you have to add 8 to actual interrupt number .. for example standard IRQ line for keyboard is IRQ 1 but software wise you have to add 8.


Example for int 5:



#define INT13    0x0D //5+8


//the pointer to function that will point to your ISR

void (interrupt far *myIntPtr)(void);


void main()
{
  ..
   myIntPtr = myInt13;
   _dos_setvect( INT13, myIntPtr);

  ..
}


void interrupt far myInt13( void )
{
     .......
}


Hope this helps

Best Regards,

Nisa.


0
 
LVL 2

Accepted Solution

by:
xLs earned 100 total points
Comment Utility
*GRRINNNN* you guys when are you moving over to win32, where no Interrupts are allowed , whats the use of NE (16bit)executables :)


cheers..

just though i could give you some hints :)
0
 

Expert Comment

by:nisa
Comment Utility
Hi Xls,
Although DOS seems to be obsolete to some applications .. but it remains important to many embedded systems (ie there are some realtime kernel coexist with dos to make it "multitasking capable").


Regards,
Nisa.
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
This is a short and sweet, but (hopefully) to the point article. There seems to be some fundamental misunderstanding about the function prototype for the "main" function in C and C++, more specifically what type this function should return. I see so…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.
The goal of this video is to provide viewers with basic examples to understand how to create, access, and change arrays in the C programming language.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now