+ fixed compilation of unit 'time' on win16

git-svn-id: trunk@37652 -
This commit is contained in:
nickysn 2017-12-01 20:42:41 +00:00
parent f1b14555b1
commit 7af8cb4015

View File

@ -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;