|
@@ -278,6 +278,19 @@ PROCEDURE SetTime (Hour, Minute, Second, Sec100: Word);
|
|
|
END;
|
|
|
{$ENDIF}
|
|
|
{$ENDIF}
|
|
|
+{$IFDEF OS_WIN16} { 16 BIT WINDOWS CODE }
|
|
|
+ ASSEMBLER;
|
|
|
+ ASM
|
|
|
+ MOV CH, BYTE PTR Hour; { Fetch hour }
|
|
|
+ MOV CL, BYTE PTR Minute; { Fetch minute }
|
|
|
+ MOV DH, BYTE PTR Second; { Fetch second }
|
|
|
+ MOV DL, BYTE PTR Sec100; { Fetch hundredths }
|
|
|
+ MOV AX, $2D00; { Set function id }
|
|
|
+ PUSH BP; { Safety save register }
|
|
|
+ INT $21; { Set the time }
|
|
|
+ POP BP; { Restore register }
|
|
|
+ END;
|
|
|
+{$ENDIF}
|
|
|
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
|
|
{$IFDEF BIT_16} { 16 BIT WINDOWS CODE }
|
|
|
ASSEMBLER;
|
|
@@ -393,6 +406,55 @@ PROCEDURE GetTime (Var Hour, Minute, Second, Sec100: Word);
|
|
|
END;
|
|
|
{$ENDIF}
|
|
|
{$ENDIF}
|
|
|
+{$IFDEF OS_WIN16} { 16 BIT WINDOWS CODE }
|
|
|
+ {$IFDEF FPC_X86_DATA_NEAR}
|
|
|
+ ASSEMBLER;
|
|
|
+ ASM
|
|
|
+ MOV AX, $2C00; { Set function id }
|
|
|
+ PUSH BP; { Safety save register }
|
|
|
+ INT $21; { System get time }
|
|
|
+ POP BP; { Restore register }
|
|
|
+ XOR AH, AH; { Clear register }
|
|
|
+ CLD; { Strings go forward }
|
|
|
+ MOV AL, DL; { Transfer register }
|
|
|
+ PUSH DS
|
|
|
+ POP ES
|
|
|
+ MOV DI, Sec100; { ES:DI -> hundredths }
|
|
|
+ STOSW; { Return hundredths }
|
|
|
+ MOV AL, DH; { Transfer register }
|
|
|
+ MOV DI, Second; { ES:DI -> seconds }
|
|
|
+ STOSW; { Return seconds }
|
|
|
+ MOV AL, CL; { Transfer register }
|
|
|
+ MOV DI, Minute; { ES:DI -> minutes }
|
|
|
+ STOSW; { Return minutes }
|
|
|
+ MOV AL, CH; { Transfer register }
|
|
|
+ MOV DI, Hour; { ES:DI -> hours }
|
|
|
+ STOSW; { Return hours }
|
|
|
+ END;
|
|
|
+ {$ELSE FPC_X86_DATA_NEAR}
|
|
|
+ ASSEMBLER;
|
|
|
+ ASM
|
|
|
+ MOV AX, $2C00; { Set function id }
|
|
|
+ PUSH BP; { Safety save register }
|
|
|
+ INT $21; { System get time }
|
|
|
+ POP BP; { Restore register }
|
|
|
+ XOR AH, AH; { Clear register }
|
|
|
+ CLD; { Strings go forward }
|
|
|
+ MOV AL, DL; { Transfer register }
|
|
|
+ LES DI, Sec100; { ES:DI -> hundredths }
|
|
|
+ STOSW; { Return hundredths }
|
|
|
+ MOV AL, DH; { Transfer register }
|
|
|
+ LES DI, Second; { ES:DI -> seconds }
|
|
|
+ STOSW; { Return seconds }
|
|
|
+ MOV AL, CL; { Transfer register }
|
|
|
+ LES DI, Minute; { ES:DI -> minutes }
|
|
|
+ STOSW; { Return minutes }
|
|
|
+ MOV AL, CH; { Transfer register }
|
|
|
+ LES DI, Hour; { ES:DI -> hours }
|
|
|
+ STOSW; { Return hours }
|
|
|
+ END;
|
|
|
+ {$ENDIF}
|
|
|
+{$ENDIF}
|
|
|
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
|
|
{$IFDEF BIT_16} { 16 BIT WINDOWS CODE }
|
|
|
ASSEMBLER;
|