[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]
{ other thing: Can I Detect: -OS/2? -Windows? -DeskView?
Try this:
}
Unit TimeTask;
INTERFACE
{
TaskRec.OS
0 : No MultiTasking
1 : Windows
2 : OS/2
3 : DESQview
4 : TopView
}
Type
TaskRec = record
OS : Word;
Version : Word; {writeln('Version ',hi(Version), '.', lo(Version) );}
Delay : Word;
end;
Const
Task : TaskRec = (
OS : 0;
Version : 0;
Delay : 100
);
Procedure TimeSlice;
Procedure InitMulti;
IMPLEMENTATION
uses dos;
Procedure InitMulti; Assembler;
Asm
mov Task.OS, 0
mov Task.Version, 0
mov Ah, 30h
mov Al, 01h
int 21h
cmp Al, 20
je @OS2
mov Ax, 160Ah
int 2Fh
cmp Ax, 0
je @Windows
mov Ax, 1022h
mov Bx, 0000h
int 15h
cmp Bx, 0
jne @DESQview
mov Ah, 2Bh
mov Al, 01h
mov Cx, 4445h
mov Dx, 5351h
int 21h
cmp Al, $FF
jne @TopView
jmp @Fin
@Windows:
Mov Task.OS, 1
Mov Task.Version, BX
jmp @Fin
@OS2:
Mov Task.OS, 2
Mov Bh, Ah
Xor Ah, Ah
Mov Cl, 10
Div Cl
Mov Ah, Bh
Xchg Ah, Al
Mov Task.Version, AX
jmp @Fin
@DESQview:
mov Task.OS, 3
jmp @Fin
@TopView:
mov Task.OS, 4
@Fin:
End;
Procedure TimeSlice; Assembler;
Asm
cmp Task.OS, 0
je @Fin
cmp Task.OS, 1
je @Win_OS2
cmp Task.OS, 2
je @Win_OS2
@DV_TV:
mov Ax, 1000h
int 15h
jmp @Fin
@Win_OS2:
mov Ax, 1680h
int 2Fh
@Fin:
End;
end.
[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]