mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 12:23:24 +01:00 
			
		
		
		
	+ enabled compilation of the 'fv' package for i8086-msdos
git-svn-id: trunk@37744 -
This commit is contained in:
		
							parent
							
								
									a82740d7a7
								
							
						
					
					
						commit
						aebc0a74f7
					
				@ -20,7 +20,7 @@ begin
 | 
			
		||||
    P.Author := 'Leon De Boer and Pierre Mueller';
 | 
			
		||||
    P.License := 'LGPL with modification, ';
 | 
			
		||||
    P.HomepageURL := 'www.freepascal.org';
 | 
			
		||||
    P.OSes := [beos,haiku,freebsd,darwin,iphonesim,solaris,netbsd,openbsd,linux,win16,win32,win64,os2,emx,netware,netwlibc,go32v2,aix,dragonfly]+AllAmigaLikeOSes;
 | 
			
		||||
    P.OSes := [beos,haiku,freebsd,darwin,iphonesim,solaris,netbsd,openbsd,linux,win16,win32,win64,os2,emx,netware,netwlibc,go32v2,msdos,aix,dragonfly]+AllAmigaLikeOSes;
 | 
			
		||||
    P.Email := '';
 | 
			
		||||
    P.Description := 'Free Vision, a portable Turbo Vision clone.';
 | 
			
		||||
    P.NeedLibC:= false;
 | 
			
		||||
 | 
			
		||||
@ -264,18 +264,32 @@ PROCEDURE SetTime (Hour, Minute, Second, Sec100: Word);
 | 
			
		||||
   END;
 | 
			
		||||
   {$ENDIF}
 | 
			
		||||
   {$IFDEF ASM_FPC}                                   { FPC COMPATABLE ASM }
 | 
			
		||||
   BEGIN
 | 
			
		||||
   ASM
 | 
			
		||||
     MOVB Hour, %CH;                                  { Fetch hour }
 | 
			
		||||
     MOVB Minute, %CL;                                { Fetch minute }
 | 
			
		||||
     MOVB Second, %DH;                                { Fetch second }
 | 
			
		||||
     MOVB Sec100, %DL;                                { Fetch hundredths }
 | 
			
		||||
     MOVW $0x2D00, %AX;                               { Set function id }
 | 
			
		||||
     PUSHL %EBP;                                      { Save register }
 | 
			
		||||
     INT $0x21;                                       { BIOS set time }
 | 
			
		||||
     POPL %EBP;                                       { Restore register }
 | 
			
		||||
   END;
 | 
			
		||||
   END;
 | 
			
		||||
     {$IFDEF BIT_16}
 | 
			
		||||
     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;
 | 
			
		||||
     {$ELSE}
 | 
			
		||||
     BEGIN
 | 
			
		||||
     ASM
 | 
			
		||||
       MOVB Hour, %CH;                                  { Fetch hour }
 | 
			
		||||
       MOVB Minute, %CL;                                { Fetch minute }
 | 
			
		||||
       MOVB Second, %DH;                                { Fetch second }
 | 
			
		||||
       MOVB Sec100, %DL;                                { Fetch hundredths }
 | 
			
		||||
       MOVW $0x2D00, %AX;                               { Set function id }
 | 
			
		||||
       PUSHL %EBP;                                      { Save register }
 | 
			
		||||
       INT $0x21;                                       { BIOS set time }
 | 
			
		||||
       POPL %EBP;                                       { Restore register }
 | 
			
		||||
     END;
 | 
			
		||||
     END;
 | 
			
		||||
     {$ENDIF}
 | 
			
		||||
   {$ENDIF}
 | 
			
		||||
{$ENDIF}
 | 
			
		||||
{$IFDEF OS_WIN16}                                     { 16 BIT WINDOWS CODE }
 | 
			
		||||
@ -377,33 +391,83 @@ PROCEDURE GetTime (Var Hour, Minute, Second, Sec100: Word);
 | 
			
		||||
     STOSW;                                           { Return hours }
 | 
			
		||||
   END;
 | 
			
		||||
   {$ENDIF}
 | 
			
		||||
   {$IFDEF OS_GO32}                                   { FPC COMPATABLE ASM }
 | 
			
		||||
   BEGIN
 | 
			
		||||
   (* ASM
 | 
			
		||||
     MOVW $0x2C00, %AX;                               { Set function id }
 | 
			
		||||
     PUSHL %EBP;                                      { Save register }
 | 
			
		||||
     INT $0x21;                                       { System get time }
 | 
			
		||||
     POPL %EBP;                                       { Restore register }
 | 
			
		||||
     XORB %AH, %AH;                                   { Clear register }
 | 
			
		||||
     MOVB %DL, %AL;                                   { Transfer register }
 | 
			
		||||
     MOVL Sec100, %EDI;                               { EDI -> Sec100 }
 | 
			
		||||
     MOVW %AX, (%EDI);                                { Return Sec100 }
 | 
			
		||||
     MOVB %DH, %AL;                                   { Transfer register }
 | 
			
		||||
     MOVL Second, %EDI;                               { EDI -> Second }
 | 
			
		||||
     MOVW %AX, (%EDI);                                { Return Second }
 | 
			
		||||
     MOVB %CL, %AL;                                   { Transfer register }
 | 
			
		||||
     MOVL Minute, %EDI;                               { EDI -> Minute }
 | 
			
		||||
     MOVW %AX, (%EDI);                                { Return minute }
 | 
			
		||||
     MOVB %CH, %AL;                                   { Transfer register }
 | 
			
		||||
     MOVL Hour, %EDI;                                 { EDI -> Hour }
 | 
			
		||||
     MOVW %AX, (%EDI);                                { Return hour }
 | 
			
		||||
   END; *)
 | 
			
		||||
   { direct call of real interrupt seems to render the system
 | 
			
		||||
     unstable on Win2000 because some registers are not properly
 | 
			
		||||
     restored if a mouse interrupt is generated while the Dos
 | 
			
		||||
     interrupt is called... PM }
 | 
			
		||||
     Dos.GetTime(Hour,Minute,Second,Sec100);
 | 
			
		||||
   END;
 | 
			
		||||
   {$IFDEF ASM_FPC}                                   { FPC COMPATABLE ASM }
 | 
			
		||||
     {$IFDEF BIT_16}
 | 
			
		||||
       {$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}
 | 
			
		||||
     {$ELSE}
 | 
			
		||||
     BEGIN
 | 
			
		||||
     (* ASM
 | 
			
		||||
       MOVW $0x2C00, %AX;                               { Set function id }
 | 
			
		||||
       PUSHL %EBP;                                      { Save register }
 | 
			
		||||
       INT $0x21;                                       { System get time }
 | 
			
		||||
       POPL %EBP;                                       { Restore register }
 | 
			
		||||
       XORB %AH, %AH;                                   { Clear register }
 | 
			
		||||
       MOVB %DL, %AL;                                   { Transfer register }
 | 
			
		||||
       MOVL Sec100, %EDI;                               { EDI -> Sec100 }
 | 
			
		||||
       MOVW %AX, (%EDI);                                { Return Sec100 }
 | 
			
		||||
       MOVB %DH, %AL;                                   { Transfer register }
 | 
			
		||||
       MOVL Second, %EDI;                               { EDI -> Second }
 | 
			
		||||
       MOVW %AX, (%EDI);                                { Return Second }
 | 
			
		||||
       MOVB %CL, %AL;                                   { Transfer register }
 | 
			
		||||
       MOVL Minute, %EDI;                               { EDI -> Minute }
 | 
			
		||||
       MOVW %AX, (%EDI);                                { Return minute }
 | 
			
		||||
       MOVB %CH, %AL;                                   { Transfer register }
 | 
			
		||||
       MOVL Hour, %EDI;                                 { EDI -> Hour }
 | 
			
		||||
       MOVW %AX, (%EDI);                                { Return hour }
 | 
			
		||||
     END; *)
 | 
			
		||||
     { direct call of real interrupt seems to render the system
 | 
			
		||||
       unstable on Win2000 because some registers are not properly
 | 
			
		||||
       restored if a mouse interrupt is generated while the Dos
 | 
			
		||||
       interrupt is called... PM }
 | 
			
		||||
       Dos.GetTime(Hour,Minute,Second,Sec100);
 | 
			
		||||
     END;
 | 
			
		||||
     {$ENDIF}
 | 
			
		||||
   {$ENDIF}
 | 
			
		||||
{$ENDIF}
 | 
			
		||||
{$IFDEF OS_WIN16}                                     { 16 BIT WINDOWS CODE }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user