misc/TIMESLIC.PAS
1.9 KB
7e3baaeb3454d628…
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
uses crt,dos;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Var
Tasker : byte;
MultiTaskerName : string[15];
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Function FindTasker : Byte; Assembler;
Asm
MOV AX, $3001
INT $21
CMP AL, $14
JE @SETOS2
MOV AX, $160A
INT $2F
CMP AX, $00
JE @SETWIN
MOV AX, $2B01
MOV CX, $4445
MOV DX, $5351
INT $21
CMP AL, $FF
JNE @SETDVX
MOV AX, $7A00
INT $2F
CMP AL, $FF
JE @SETNOV
MOV TASKER, 0
JMP @EXIT
@SETOS2:
MOV TASKER, 2
JMP @EXIT
@SETWIN:
MOV TASKER, 3
JMP @EXIT
@SETDVX:
MOV TASKER, 1
JMP @EXIT
@SETNOV:
MOV TASKER, 4
@EXIT:
MOV AL, TASKER
End;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure CheckTasking;
begin
Case FindTasker OF
0: MultiTaskerName := 'dOs [yeah!]';
1: MultiTaskerName := 'deskview';
2: MultiTaskerName := 'os.too';
3: MultiTaskerName := 'windoze';
4: MultiTaskerName := 'novell';
End;
End;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
Procedure TimeSlice; Assembler;
Asm
CMP TASKER, 0
JE @GIVEDOS
CMP TASKER, 1
JE @GIVEDVX
CMP TASKER, 2
JE @GOS2WIN
CMP TASKER, 3
JE @GOS2WIN
MOV BX,$000A
INT $7A
JMP @DONE
@GIVEDOS:
INT $28
JMP @DONE
@GIVEDVX:
MOV AX, $1000
INT $15
JMP @DONE
@GOS2WIN:
MOV AX, $1680
INT $2F
@DONE:
End;
{:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::}
begin
CheckTasking;
While not KeyPressed do TimeSlice;
end.