[Q]: Как в програмке под DOS отдавать тики OS/2? [A]: Vladimir Bogoryatskih (2:5080/14.1) 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.