Ruud Baltissen
2014-06-01 12:53:34 UTC
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
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