Discussion:
Writing an intterupt procedure: info needed
(too old to reply)
Ruud Baltissen
2014-06-01 12:53:34 UTC
Permalink
Hallo allemaal,


Linux is mainly written in C. So I wanted to write an OS written in Turbo pascal. Just for fun and to see if it could be done at all. To be honest, I was suprised how quickly I could manage to get 'A:\>' on the screen.

But to the subject. I need to implement the DOS routines, INT $21, the routines that handles commands like VER, TIME and DATE. One way I can do it is in assembler like:


procedure INT21; assembler;
asm
cmp ah,30h { get the DOS version}
jne @next

call DosVersion
jmp @end

@next:
.....

@end:
iret
end;


But I prefer an all Turbo Pascal solution, thus:


{$F+}
procedure INT21; interrupt;
begin
.....
end;
{$F-}


As you can see, just dots. I need to check AH in one or anothe way and I have no idea how. Using REGISTERS doesn't work, I tried in various ways. So how can I check the value of register AH (and all the others of course)?

Thank you in advance!


Kind regards, Ruud Baltissen
www.Baltissen.org
Dwayne
2014-06-03 16:08:38 UTC
Permalink
Ruud,

I can send you LIBR.PAS
which contains some INT routines
to get DATE TIME, etc.

Shalom
Dwayne
Post by Ruud Baltissen
Hallo allemaal,
Linux is mainly written in C. So I wanted to write an OS written in Turbo pascal. Just for fun and to see if it could be done at all. To be honest, I was suprised how quickly I could manage to get 'A:\>' on the screen.
procedure INT21; assembler;
asm
cmp ah,30h { get the DOS version}
call DosVersion
.....
iret
end;
{$F+}
procedure INT21; interrupt;
begin
.....
end;
{$F-}
As you can see, just dots. I need to check AH in one or anothe way and I have no idea how. Using REGISTERS doesn't work, I tried in various ways. So how can I check the value of register AH (and all the others of course)?
Thank you in advance!
Kind regards, Ruud Baltissen
www.Baltissen.org
Loading...