Well, here is a way to implement the _doint in TASM.
Code:
__doint proc
ARGS intvectnum:WORD
int [intvectnum]
ret
__doint endp
I'm not sure if this code will work or not. Currently I'm not near my Intel manuals so I cannot guarantee that the instruction INT can take an operand such as the one I used. If not, you might be able to place a value in AX and then do INT ax, but again this looks suspect. Really easy concept, but the code actually got me thinking there for a bit. I will do some more research when I get home. But thinking about this logically I'm sure that Intel designed the INT instruction to be able to take a memory or register operand expressly for this purpose. Otherwise you would have to write a lot of code to do 255 interrupts (check the value - compare - jump to the correct spot in the function - generate the correct interrupt)
Here is a possible implementation of the poke function.
Offset is a reserved keyword in TASM so I used offst instead.
Code:
__poke proc
ARGS segment:WORD,offst:WORD,value:BYTE
mov ax,[segment]
mov es,ax
mov dx,[offst]
mov [es:dx],value
ret
__poke endp
Again, no testing done here so it might not work as is - I just wrote it off the top of my head. It should give you an idea on how to convert these.
The new equivs for __doint would be:
int86(int intvectum, REGS inregs,REGS outregs);
int86x(int vectnum,REGS inregs,REGS outregs,SREGS sregs);
geninterrupt(int intvectum);----->>(don't use this one)
It should be easy to find an equiv for poke - C has quite a few poke and peek functions and I don't remember them right off hand.
I'm also assuming that you are in real-mode here based on the age of your code and based on the fact that it is generating 8086 software interrupts.