返回
{***************************************************************}
{*** FVision Unit Version1.0 ***}
{*** 蓝蚂蚁工作室 ***}
{***************************************************************}
{*** VGA ModeX支持单元 ***}
{***************************************************************}
Unit Modex;
Interface
{ Mode Setting Routines }
Function SET_VGA_MODEX (Mode,MaxXpos,MaxYpos,Pages : integer) : integer;
Function SET_MODEX (Mode:integer) : Integer;
{ Graphics Primitives }
Procedure CLEAR_VGA_SCREEN (Color:integer);
Procedure SET_POINT (Xpos,Ypos,Color : integer);
Function READ_POINT (Xpos,Ypos:integer) : integer;
Procedure FILL_BLOCK (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer);
Procedure DRAW_LINE (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer);
{ VGA DAC Routines }
Procedure SET_DAC_REGISTER (RegNo,Red,Green,Blue:integer);
Procedure GET_DAC_REGISTER (RegNo,Red,Green,Blue:integer);
{ Page and Window Control Routines }
Procedure SET_ACTIVE_PAGE (PageNo:integer);
Function GET_ACTIVE_PAGE : integer;
Procedure SET_DISPLAY_PAGE (PageNo:integer);
Function GET_DISPLAY_PAGE : integer;
Procedure SET_WINDOW (DisplayPage,XOffset,YOffset : integer);
Function GET_X_OFFSET : integer;
Function GET_Y_OFFSET : integer;
Procedure SYNC_DISPLAY;
{ Text Display Routines }
Procedure GPRINTC (CharNum,Xpos,Ypos,ColorF,ColorB:integer);
Procedure TGPRINTC ( CharNum,Xpos,Ypos,ColorF : integer);
Procedure PRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF,ColorB:integer);
Procedure TPRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF:integer);
Procedure SET_DISPLAY_FONT (Var FontData;FontNumber:integer);
{ Sprite and VGA memory -> Vga memory Copy Routines }
Procedure DRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer);
Procedure TDRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer);
Procedure COPY_PAGE (SourcePage,DestPage:integer);
Procedure COPY_BITMAP (SourcePage,X1,Y1,X2,Y2,DestPage,DestX1,DestY1:integer);
Procedure CloseGraph;
Procedure Print_Text(s : string; X,Y,BColor,FColor : integer);
Procedure TPrint_Text(s : string; X,Y,Color : integer);
Implementation
{$L modex.obj} { This file is the external ModeX Library .OBJ }
{$F+}
{ Mode Setting Routines }
Function SET_VGA_MODEX (Mode,MaxXpos,MaxYpos,Pages : integer) : integer; external;
Function SET_MODEX (Mode:integer) : Integer; external;
{ Graphics Primitives }
Procedure CLEAR_VGA_SCREEN (Color:integer); external;
Procedure SET_POINT (Xpos,Ypos,Color : integer); external;
Function READ_POINT (Xpos,Ypos:integer) : integer; external;
Procedure FILL_BLOCK (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer); external;
Procedure DRAW_LINE (Xpos1,Ypos1,Xpos2,Ypos2,Color:integer); external;
{ VGA DAC Routines }
Procedure SET_DAC_REGISTER (RegNo,Red,Green,Blue:integer); external;
Procedure GET_DAC_REGISTER (RegNo,Red,Green,Blue:integer); external;
{ Page and Window Control Routines }
Procedure SET_ACTIVE_PAGE (PageNo:integer); external;
Function GET_ACTIVE_PAGE : integer; external;
Procedure SET_DISPLAY_PAGE (PageNo:integer); external;
Function GET_DISPLAY_PAGE : integer; external;
Procedure SET_WINDOW (DisplayPage,XOffset,YOffset : integer); external;
Function GET_X_OFFSET : integer; external;
Function GET_Y_OFFSET : integer; external;
Procedure SYNC_DISPLAY; external;
{ Text Display Routines }
Procedure GPRINTC (CharNum,Xpos,Ypos,ColorF,ColorB:integer); external;
Procedure TGPRINTC ( CharNum,Xpos,Ypos,ColorF : integer); external;
Procedure PRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF,ColorB:integer); external;
Procedure TPRINT_STR (Var Text;MaxLen,Xpos,Ypos,ColorF:integer); external;
Procedure SET_DISPLAY_FONT (Var FontData;FontNumber:integer); external;
{ Sprite and VGA memory -> Vga memory Copy Routines }
Procedure DRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer); external;
Procedure TDRAW_BITMAP (Var Image;Xpos,Ypos,Width,Height:integer); external;
Procedure COPY_PAGE (SourcePage,DestPage:integer); external;
Procedure COPY_BITMAP (SourcePage,X1,Y1,X2,Y2,DestPage,DestX1,DestY1:integer); external;
{$F-}
Procedure CloseGraph;assembler;
Asm
mov ah,0
mov al,3
int 10h
end;
{ Routine to Print a PASCAL string using Print_Str }
Procedure Print_Text(s : string; X,Y,BColor,FColor : integer);
Var
s1 : Array[1..135] of Char;
i : byte;
Begin
For i := 1 to Length(s) DO
s1[i] := s[i];
Print_Str(s1,Length(s),X,Y,BColor,FColor);
End;
{ Routine to Transparently Print a PASCAL string using TPrint_Str }
Procedure TPrint_Text(s : string; X,Y,Color : integer);
Var
s1 : Array[1..135] of Char;
i : byte;
Begin
For i := 1 to Length(s) DO
s1[i] := s[i];
TPrint_Str(s1,Length(s),X,Y,Color);
End;
end.