[Back to DESQVIEW SWAG index] [Back to Main SWAG index] [Original]
{
From: FRED COHEN
Time Slices...
looking for routines for giving up time slices to
various multi-taskers, mainly DV and OS/2. Please either
post them if they are small enough, or tell me where I can
You will need turbo pascal 6.0+ for this to compile. It is easy to
convert over to regular pascal though.
}
Const
MDOS = 0; { DOS }
OS2 = 1; { OS/2 is installed }
WIN = 2; { Windoze }
DV = 3; { DesqView }
Var
Ops : Byte; { Operating System OS/2/DOS/WIN/DV}
PROCEDURE giveslice; Assembler; {Gives up remainder of clock cycle
under dos, windows, os/2 }
asm
CMP ops,MDos { Compare to DOS }
JE @MSDOS { Jump if = }
CMP ops,Dv { Compare to Desqview }
JE @DESQVIEW { Jump if = }
CMP ops, Win { Compare to Windows }
JE @WINOS2 { Jump if = }
CMP ops, OS2 { Compart OS/2 }
JE @WINOS2 { Jump if = }
JMP @NONE { None found, Jump to End }
@MSDOS:
INT 28h { Interupt 28h }
JMP @NONE { Jump to the end }
@DESQVIEW:
MOV ax,1000h { AX = 1000h }
INT 15h { Call Interupt 15h }
JMP @NONE { Jump to the end }
@WINOS2:
MOV AX, 1680h { AX = 1680h }
INT 2Fh { Call Interupt 2Fh for Win-OS/2 TimeSlice }
@NONE:
end; {GiveSlice}
{***********}
PROCEDURE checkos; Assembler;
{ Currently Supports DesqView, Microsoft Windows and IBM's OS/2 }
asm
mov ops, MDos { Default DOS }
mov ah, 30h { AH = 30h }
int 21h { dos version }
cmp al, 14h
jae @IBMOS2 { Jump if >= to 20 }
mov ax,2B01h
mov cx,4445h
mov dx,5351h
int 21h { Desqview Installed? }
cmp al, 255
jne @DesqView { Jump if AL <> 255 }
mov ax,160Ah
int 2Fh { Windows Install?}
cmp ax, 0h
je @Windows { If = Jump to Windows }
jmp @Finish { Nothing found, go to the end }
@IBMOS2:
mov Ops, Os2 { Set OS Value }
jmp @Finish
@DesqView:
mov ops, Dv { Set OS Value }
jmp @Finish
@Windows:
mov ops, win { Set OS Value }
jmp @Finish
@FINISH:
end; { checkos }
{*********** MORE ********}
procedure GiveTimeSlice; ASSEMBLER;
asm { GiveTimeSlice }
cmp MultiTasker, DesqView
je @DVwait
cmp MultiTasker, Windows
je @WinOS2wait
cmp MultiTasker, OS2
je @WinOS2wait
cmp MultiTasker, NetWare
je @Netwarewait
cmp MultiTasker, DoubleDOS
je @DoubleDOSwait
@Doswait:
int $28
jmp @WaitDone
@DVwait:
mov AX, $1000
int $15
jmp @WaitDone
@DoubleDOSwait:
mov AX, $EE01
int $21
jmp @WaitDone
@WinOS2wait:
mov AX, $1680
int $2F
jmp @WaitDone
@Netwarewait:
mov BX, $000A
int $7A
@WaitDone:
end; { TimeSlice }
[Back to DESQVIEW SWAG index] [Back to Main SWAG index] [Original]