5 Black = $00; DGray = $08;
\r
6 Blue = $01; LBlue = $09;
\r
7 Green = $02; LGreen = $0a;
\r
8 Cyan = $03; LCyan = $0b;
\r
9 Red = $04; LRed = $0c;
\r
10 Magenta = $05; LMagenta = $0d;
\r
11 Brown = $06; Yellow = $0e;
\r
12 LGray = $07; White = $0f;
\r
15 procedure ShowStr(var dest; x,y: Byte; str: String; attr: Byte);
\r
16 procedure ShowVStr(var dest; x,y: Byte; str: String; attr: Byte);
\r
17 procedure ShowCStr(var dest; x,y: Byte; str: String; atr1,atr2: Byte);
\r
18 procedure ShowVCStr(var dest; x,y: Byte; str: String; atr1,atr2: Byte);
\r
19 procedure ShowC3Str(var dest; x,y: Byte; str: String; atr1,atr2,atr3: Byte);
\r
20 procedure ShowVC3Str(var dest; x,y: Byte; str: String; atr1,atr2,atr3: Byte);
\r
21 function CStrLen(str: String): Byte;
\r
22 function AbsPos(x,y: Byte): Word;
\r
23 function Color(fgnd,bgnd: Byte): Byte;
\r
24 procedure CleanScreen(var dest);
\r
25 procedure initialize;
\r
28 tCUSTOM_VIDEO_MODE = 0..52;
\r
30 procedure SetCustomVideoMode(vmode: tCUSTOM_VIDEO_MODE);
\r
33 tFRAME_SETTING = Record
\r
37 update_area: Boolean;
\r
40 fr_setting: tFRAME_SETTING =
\r
41 (shadow_enabled: TRUE;
\r
42 wide_range_type: FALSE;
\r
43 zooming_enabled: FALSE;
\r
46 procedure Frame(var dest; x1,y1,x2,y2,atr1: Byte;
\r
47 title: String; atr2: Byte; border: String);
\r
51 solid2 = 'ÛßÛÛÛÛÜÛ';
\r
52 single = 'ÚÄ¿³³ÀÄÙ';
\r
53 double = 'ÉÍ»ººÈͼ';
\r
54 dbside = 'ÖÄ·ººÓĽ';
\r
59 work_maxln,work_maxcol: Byte;
\r
60 area_x1,area_y1,area_x2,area_y2: Byte;
\r
63 v_seg,v_ofs: Longint;
\r
66 function iEGA: Boolean;
\r
67 function iVGA: Boolean;
\r
68 function iPS2: Boolean;
\r
69 function iMDA: Boolean;
\r
70 function iCGA: Boolean;
\r
71 function iMCGA: Boolean;
\r
73 function WhereX: Byte;
\r
74 function WhereY: Byte;
\r
75 procedure GotoXY(x,y: Byte);
\r
76 procedure ResetMode;
\r
78 function GetCursor: Longint;
\r
79 procedure SetCursor(cursor: Longint);
\r
80 procedure ThinCursor;
\r
81 procedure WideCursor;
\r
82 procedure HideCursor;
\r
83 function GetCursorShape: Word;
\r
84 procedure SetCursorShape(shape: Word);
\r
87 tVIDEO_STATE = Record
\r
90 MaxLn,MaxCol,v_mode: Byte;
\r
92 screen: array[0..PRED(8192)] of Byte;
\r
93 data: array[0..PRED(4096)] of Byte;
\r
96 procedure GetVideoState(var data: tVIDEO_STATE);
\r
97 procedure SetVideoState(var data: tVIDEO_STATE; restore_screen: Boolean);
\r
98 procedure GetRGBitem(color: Byte; var red,green,blue: Byte);
\r
99 procedure SetRGBitem(color: Byte; red,green,blue: Byte);
\r
100 procedure WaitRetrace;
\r
101 procedure GetPalette(var pal; first,last: Word);
\r
102 procedure SetPalette(var pal; first,last: Word);
\r
105 tFADE = (first,fadeOut,fadeIn);
\r
106 tDELAY = (fast,delayed);
\r
111 pal0: array[0..255] of Record r,g,b: Byte end;
\r
112 pal1: array[0..255] of Record r,g,b: Byte end;
\r
116 fade_speed: Byte = 63;
\r
118 procedure VgaFade(var data: tFADE_BUF; fade: tFADE; delay: tDELAY);
\r
119 procedure RefreshEnable;
\r
120 procedure RefreshDisable;
\r
121 procedure Split2Static;
\r
122 procedure SplitScr(line: Integer);
\r
123 procedure SetSize(columns,lines: Integer);
\r
124 procedure SetTextDisp(x,y: Integer);
\r
130 absolute_pos: Word;
\r
132 procedure DupChar; assembler;
\r
134 pushad { IN/ al -column }
\r
135 xor ebx,ebx { ah -line }
\r
136 xchg ax,bx { dl -character }
\r
137 xor eax,eax { dh -attribute }
\r
138 xchg ax,bx { ecx -count }
\r
139 mov bl,al { edi -ptr. to write }
\r
152 @@1: mov absolute_pos,ax
\r
156 procedure ShowStr(var dest; x,y: Byte; str: String; attr: Byte); assembler;
\r
165 mov dx,absolute_pos
\r
177 procedure ShowVStr(var dest; x,y: Byte; str: String; attr: Byte); assembler;
\r
193 mov dx,absolute_pos
\r
206 procedure ShowCStr(var dest; x,y: Byte; str: String; atr1,atr2: Byte); assembler;
\r
220 mov dx,absolute_pos
\r
236 procedure ShowVCStr(var dest; x,y: Byte; str: String; atr1,atr2: Byte); assembler;
\r
256 mov dx,absolute_pos
\r
274 procedure ShowC3Str(var dest; x,y: Byte; str: String; atr1,atr2,atr3: Byte); assembler;
\r
288 mov dx,absolute_pos
\r
310 procedure ShowVC3Str(var dest; x,y: Byte; str: String; atr1,atr2,atr3: Byte); assembler;
\r
330 mov dx,absolute_pos
\r
354 function CStrLen(str: String): Byte; assembler;
\r
370 function AbsPos(x,y: Byte): Word; assembler;
\r
376 mov ax,absolute_pos
\r
379 function Color(fgnd,bgnd: Byte): Byte; assembler;
\r
388 procedure CleanScreen(var dest); assembler;
\r
404 procedure Frame(var dest; x1,y1,x2,y2,atr1: Byte;
\r
405 title: String; atr2: Byte; border: String); assembler;
\r
407 xexp1,xexp2,xexp3,yexp1,yexp2: Byte;
\r
411 cmp fr_setting.update_area,1
\r
421 @@0: mov bl,fr_setting.wide_range_type
\r
422 mov bh,fr_setting.shadow_enabled
\r
543 mov ax,absolute_pos
\r
565 mov ax,absolute_pos
\r
590 mov ax,absolute_pos
\r
608 function iEGA: Boolean; assembler;
\r
622 function iVGA: Boolean; assembler;
\r
638 function iPS2: Boolean; assembler;
\r
660 function iMDA: Boolean; assembler;
\r
670 function iCGA: Boolean; assembler;
\r
687 function iMCGA: Boolean; assembler;
\r
704 function WhereX: Byte; assembler;
\r
713 function WhereY: Byte; assembler;
\r
722 procedure GotoXY(x,y: Byte); assembler;
\r
733 procedure ResetMode; assembler;
\r
741 function GetCursor: Longint; assembler;
\r
750 call GetCursorShape
\r
757 procedure SetCursor(cursor: Longint); assembler;
\r
760 mov ax,word ptr [cursor]
\r
762 call SetCursorShape
\r
763 mov dx,word ptr [cursor+2]
\r
769 procedure ThinCursor; assembler;
\r
794 call SetCursorShape
\r
797 procedure WideCursor; assembler;
\r
822 call SetCursorShape
\r
825 procedure HideCursor; assembler;
\r
830 call SetCursorShape
\r
833 function GetCursorShape: Word; assembler;
\r
850 procedure SetCursorShape(shape: Word); assembler;
\r
857 mov ah,BYTE(shape)[1]
\r
866 mov ah,BYTE(shape)[0]
\r
872 procedure initialize;
\r
882 If (MEM[0:$449] = 7) then
\r
889 MaxLn := SUCC(MEM[0:$484]);
\r
892 v_ofs := MEM[0:$44e];
\r
893 MaxCol := MEM[0:$44a];
\r
895 work_MaxLn := MaxLn;
\r
896 work_MaxCol := MaxCol;
\r
898 If iCGA then CheckSnow := TRUE
\r
899 else CheckSnow := FALSE;
\r
904 bios_data_backup: array[0..167] of Byte;
\r
907 procedure GetVideoState(var data: tVIDEO_STATE);
\r
909 Move(Ptr(v_seg,v_ofs)^,data.screen,SizeOf(data.screen));
\r
910 data.cursor := GetCursor;
\r
911 data.font := MEMW[0:$0485];
\r
912 data.v_mode := v_mode;
\r
913 data.MaxLn := MaxLn;
\r
914 data.MaxCol := MaxCol;
\r
915 data.v_ofs := v_ofs;
\r
916 Move(MEM[$40:0],bios_data_backup,168);
\r
917 dos_seg := DosMemoryAlloc(SizeOf(tVIDEO_STATE(data).data));
\r
920 regs.es := dos_seg;
\r
922 RealModeInt($10,regs);
\r
923 Move(bios_data_backup,MEM[$40:0],168);
\r
924 Move(POINTER(DWORD(dos_seg)*16)^,tVIDEO_STATE(data).data,
\r
925 SizeOf(tVIDEO_STATE(data).data));
\r
926 DosMemoryFree(dos_seg);
\r
929 procedure SetVideoState(var data: tVIDEO_STATE; restore_screen: Boolean);
\r
931 v_mode := data.v_mode;
\r
933 Move(MEM[$40:0],bios_data_backup,168);
\r
934 dos_seg := DosMemoryAlloc(SizeOf(tVIDEO_STATE(data).data));
\r
935 Move(tVIDEO_STATE(data).data,POINTER(DWORD(dos_seg)*16)^,
\r
936 SizeOf(tVIDEO_STATE(data).data));
\r
939 regs.es := dos_seg;
\r
941 RealModeInt($10,regs);
\r
942 DosMemoryFree(dos_seg);
\r
943 Move(bios_data_backup,MEM[$40:0],168);
\r
945 MEM[0:$44e] := data.v_ofs;
\r
946 MEM[0:$484] := PRED(data.MaxLn);
\r
947 MEM[0:$44a] := data.MaxCol;
\r
950 8: asm mov ax,1112h; xor bl,bl; int 10h end;
\r
951 14: asm mov ax,1111h; xor bl,bl; int 10h end;
\r
952 else asm mov ax,1114h; xor bl,bl; int 10h end;
\r
956 SetCursor(data.cursor);
\r
957 If restore_screen then
\r
958 Move(data.screen,Ptr(v_seg,v_ofs)^,SizeOf(data.screen));
\r
961 procedure GetRGBitem(color: Byte; var red,green,blue: Byte);
\r
963 PORT[$3c7] := color;
\r
965 green := PORT[$3c9];
\r
966 blue := PORT[$3c9];
\r
969 procedure SetRGBitem(color: Byte; red,green,blue: Byte);
\r
971 PORT[$3c8] := color;
\r
973 PORT[$3c9] := green;
\r
974 PORT[$3c9] := blue;
\r
977 procedure WaitRetrace; assembler;
\r
988 procedure GetPalette(var pal; first,last: Word); assembler;
\r
1009 procedure SetPalette(var pal; first,last: Word); assembler;
\r
1035 fade_first: Byte = 0;
\r
1036 fade_last: Byte = 255;
\r
1038 procedure wait_ms; assembler;
\r
1040 @@1: mov di,-1*1193*2
\r
1058 procedure VgaFade(var data: tFADE_BUF; fade: tFADE; delay: tDELAY);
\r
1064 If (fade = fadeOut) and (data.action in [first,fadeIn]) then
\r
1066 GetPalette(data.pal0,fade_first,fade_last);
\r
1067 If delay = delayed then
\r
1068 For i := fade_speed downto 0 do
\r
1070 For j := fade_first to fade_last do
\r
1072 data.pal1[j].r := data.pal0[j].r * i DIV fade_speed;
\r
1073 data.pal1[j].g := data.pal0[j].g * i DIV fade_speed;
\r
1074 data.pal1[j].b := data.pal0[j].b * i DIV fade_speed;
\r
1076 SetPalette(data.pal1,fade_first,fade_last);
\r
1081 FillChar(data.pal1,SizeOf(data.pal1),0);
\r
1082 SetPalette(data.pal1,fade_first,fade_last);
\r
1084 data.action := fadeOut;
\r
1087 If (fade = fadeIn) and (data.action = fadeOut) then
\r
1089 If delay = delayed then
\r
1090 For i := 0 to fade_speed do
\r
1092 For j := fade_first to fade_last do
\r
1094 data.pal1[j].r := data.pal0[j].r * i DIV fade_speed;
\r
1095 data.pal1[j].g := data.pal0[j].g * i DIV fade_speed;
\r
1096 data.pal1[j].b := data.pal0[j].b * i DIV fade_speed;
\r
1098 SetPalette(data.pal1,fade_first,fade_last);
\r
1102 SetPalette(data.pal0,fade_first,fade_last);
\r
1103 data.action := fadeIn;
\r
1107 procedure RefreshEnable; assembler;
\r
1108 asm mov ax,1200h; mov bl,36h; int 10h end;
\r
1110 procedure RefreshDisable; assembler;
\r
1111 asm mov ax,1201h; mov bl,36h; int 10h end;
\r
1113 procedure Split2Static;
\r
1119 temp := PORT[$3da];
\r
1120 PORT[$3c0] := $10 OR $20;
\r
1121 PORT[$3c0] := PORT[$3c1] OR $20;
\r
1124 procedure SplitScr(line: Integer);
\r
1130 PORT[$3d4] := $18;
\r
1131 PORT[$3d5] := LO(line);
\r
1132 PORT[$3d4] := $07;
\r
1133 temp := PORT[$3d5];
\r
1135 If (line < $100) then temp := temp AND $0ef
\r
1136 else temp := temp OR $10;
\r
1138 PORT[$3d5] := temp;
\r
1139 PORT[$3d4] := $09;
\r
1140 temp := PORT[$3d5];
\r
1142 If (line < $200) then temp := temp AND $0bf
\r
1143 else temp := temp OR $40;
\r
1145 PORT[$3d5] := temp;
\r
1148 procedure SetSize(columns,lines: Integer);
\r
1150 PORT[$3d4] := $13;
\r
1151 PORT[$3d5] := columns SHR 1;
\r
1152 MEMW[$0000:$44a] := columns;
\r
1153 MEMW[$0000:$484] := lines-1;
\r
1154 MEMW[$0000:$44c] := columns*lines;
\r
1157 procedure SetTextDisp(x,y: Integer);
\r
1163 While (PORT[$3da] AND 1 = 1) do ;
\r
1164 While (PORT[$3da] AND 1 <> 1) do ;
\r
1166 PORT[$3d4] := $0c;
\r
1167 PORT[$3d5] := HI((y SHR 4)*MaxCol+(x DIV 9));
\r
1168 PORT[$3d4] := $0d;
\r
1169 PORT[$3d5] := LO((y SHR 4)*MaxCol+(x DIV 9));
\r
1170 PORT[$3d4] := $08;
\r
1171 PORT[$3d5] := (PORT[$3d5] AND $0e0) OR (y AND $0f);
\r
1172 temp := PORT[$3da];
\r
1173 PORT[$3c0] := $13 OR $20;
\r
1174 PORT[$3c0] := (x+9) MOD 9;
\r
1177 procedure SetCustomVideoMode(vmode: tCUSTOM_VIDEO_MODE);
\r
1180 vmode_data: array[0..52,0..63] of Byte = (
\r
1182 { 1..5 - BIOS variables,
\r
1184 10 - Miscellaneous Output,
\r
1186 36..55 - Attribute,
\r
1187 56..64 - Graphics }
\r
1189 { 0, Text 36x14, 9x14, complete }
\r
1190 ( 36, 13, 14, 0, 4, 8, 3, 0, 2, 99,
\r
1191 40, 35, 36,138, 38,192,183, 31, 0,205, 11, 12, 0, 0, 0,
\r
1192 0,148,134,135, 18, 31,142,177,163,255, 0, 1, 2, 3, 4,
\r
1193 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1194 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1196 { 1, Text 40x14, 8x14, complete }
\r
1197 ( 40, 13, 14, 0, 5, 9, 3, 0, 2, 99,
\r
1198 45, 39, 40,144, 43,160,183, 31, 0,205, 11, 12, 0, 0, 0,
\r
1199 0,148,134,135, 20, 31,142,177,163,255, 0, 1, 2, 3, 4,
\r
1200 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1201 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1203 { 2, Text 40x14, 9x14, complete }
\r
1204 ( 40, 13, 14, 0, 5, 8, 3, 0, 2, 103,
\r
1205 45, 39, 40,144, 43,160,183, 31, 0,205, 11, 12, 0, 0, 0,
\r
1206 0,148,134,135, 20, 31,142,177,163,255, 0, 1, 2, 3, 4,
\r
1207 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1208 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1210 { 3, Text 46x14, 8x14, complete }
\r
1211 ( 46, 13, 14, 0, 6, 9, 3, 0, 2, 103,
\r
1212 52, 45, 46,151, 50,150,183, 31, 0,205, 11, 12, 0, 0, 0,
\r
1213 0,148,134,135, 23, 31,142,177,163,255, 0, 1, 2, 3, 4,
\r
1214 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1215 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1218 { 4, Text 36x15, 9x16, complete }
\r
1219 ( 36, 14, 16, 0, 5, 8, 3, 0, 2, 227,
\r
1220 40, 35, 36,138, 38,192, 11, 62, 0,207, 13, 14, 0, 0, 0,
\r
1221 0,234,172,223, 18, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1222 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1223 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1225 { 5, Text 40x15, 8x16, complete }
\r
1226 ( 40, 14, 16, 0, 5, 9, 3, 0, 2, 227,
\r
1227 45, 39, 40,144, 43,160, 11, 62, 0,207, 13, 14, 0, 0, 0,
\r
1228 0,234,172,223, 20, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1229 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1230 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1232 { 6, Text 40x15, 9x16, complete }
\r
1233 ( 40, 14, 16, 0, 5, 8, 3, 0, 2, 231,
\r
1234 45, 39, 40,144, 43,160, 11, 62, 0,207, 13, 14, 0, 0, 0,
\r
1235 0,234,172,223, 20, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1236 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1237 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1239 { 7, Text 46x15, 8x16, complete }
\r
1240 ( 46, 14, 16, 0, 6, 9, 3, 0, 2, 231,
\r
1241 52, 45, 46,151, 50,150, 11, 62, 0,207, 13, 14, 0, 0, 0,
\r
1242 0,234,172,223, 23, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1243 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1244 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1247 { 8, Text 36x17, 9x14, complete }
\r
1248 ( 36, 16, 14, 0, 5, 8, 3, 0, 2, 227,
\r
1249 40, 35, 36,138, 38,192, 7, 62, 0,205, 11, 12, 0, 0, 0,
\r
1250 0,230,168,219, 18, 31,227, 2,163,255, 0, 1, 2, 3, 4,
\r
1251 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1252 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1254 { 9, Text 40x17, 8x14, complete }
\r
1255 ( 40, 16, 14, 0, 6, 9, 3, 0, 2, 227,
\r
1256 45, 39, 40,144, 43,160, 7, 62, 0,205, 11, 12, 0, 0, 0,
\r
1257 0,230,168,219, 20, 31,227, 2,163,255, 0, 1, 2, 3, 4,
\r
1258 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1259 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1261 { 10, Text 40x17, 9x14, complete }
\r
1262 ( 40, 16, 14, 0, 6, 8, 3, 0, 2, 231,
\r
1263 45, 39, 40,144, 43,160, 7, 62, 0,205, 11, 12, 0, 0, 0,
\r
1264 0,230,168,219, 20, 31,227, 2,163,255, 0, 1, 2, 3, 4,
\r
1265 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1266 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1268 { 11, Text 46x17, 9x14, complete }
\r
1269 ( 46, 16, 14, 0, 7, 9, 3, 0, 2, 231,
\r
1270 52, 45, 46,151, 50,150, 7, 62, 0,205, 11, 12, 0, 0, 0,
\r
1271 0,230,168,219, 23, 31,227, 2,163,255, 0, 1, 2, 3, 4,
\r
1272 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1273 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1276 { 12, Text 36x22, 9x16, complete }
\r
1277 ( 36, 21, 16, 0, 7, 8, 3, 0, 2, 163,
\r
1278 40, 35, 36,138, 38,192,193, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1279 0,133,165, 95, 18, 31,101,187,163,255, 0, 1, 2, 3, 4,
\r
1280 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1281 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1283 { 13, Text 40x22, 8x16, complete }
\r
1284 ( 40, 21, 16, 0, 7, 9, 3, 0, 2, 163,
\r
1285 45, 39, 40,144, 43,160,193, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1286 0,133,165, 95, 20, 31,101,187,163,255, 0, 1, 2, 3, 4,
\r
1287 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1288 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1290 { 14, Text 40x22, 9x16, complete }
\r
1291 ( 40, 21, 16, 0, 7, 8, 3, 0, 2, 167,
\r
1292 45, 39, 40,144, 43,160,193, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1293 0,133,165, 95, 20, 31,101,187,163,255, 0, 1, 2, 3, 4,
\r
1294 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1295 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1297 { 15, Text 46x22, 8x16, complete }
\r
1298 ( 46, 21, 16, 0, 8, 9, 3, 0, 2, 167,
\r
1299 52, 45, 46,151, 50,150,193, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1300 0,133,165, 95, 23, 31,101,187,163,255, 0, 1, 2, 3, 4,
\r
1301 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1302 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1304 { 16, Text 70x22, 9x16, complete }
\r
1305 ( 70, 21, 16, 0,13, 0, 3, 0, 2, 163,
\r
1306 83, 69, 70,150, 75, 21,193, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1307 0,133,165, 95, 35, 31,101,187,163,255, 0, 1, 2, 3, 4,
\r
1308 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1309 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1311 { 17, Text 80x22, 8x16, complete }
\r
1312 ( 80, 21, 16, 0,14, 1, 3, 0, 2, 163,
\r
1313 95, 79, 80,130, 85,129,193, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1314 0,133,165, 95, 40, 31,101,187,163,255, 0, 1, 2, 3, 4,
\r
1315 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1316 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1318 { 18, Text 80x22, 9x16, complete }
\r
1319 ( 80, 21, 16, 0,14, 0, 3, 0, 2, 167,
\r
1320 95, 79, 80,130, 85,129,193, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1321 0,133,165, 95, 40, 31,101,187,163,255, 0, 1, 2, 3, 4,
\r
1322 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1323 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1325 { 19, Text 90x22, 8x16, complete }
\r
1326 ( 90, 21, 16, 0,16, 1, 3, 0, 2, 167,
\r
1327 107, 89, 90,142, 95,138,193, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1328 0,133,165, 95, 45, 31,101,187,163,255, 0, 1, 2, 3, 4,
\r
1329 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1330 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1333 { 20, Text 36x25, 9x16, complete }
\r
1334 ( 36, 24, 16, 0, 8, 8, 3, 0, 2, 99,
\r
1335 40, 35, 36,138, 38,192,191, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1336 0,156,142,143, 18, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1337 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1338 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1340 { 21, Text 40x25, 8x16, complete }
\r
1341 ( 40, 24, 16, 0, 8, 9, 3, 0, 2, 99,
\r
1342 45, 39, 40,144, 43,160,191, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1343 0,156,142,143, 20, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1344 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1345 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1347 { 22, Text 40x25, 9x16, complete }
\r
1348 ( 40, 24, 16, 0, 8, 8, 3, 0, 2, 103,
\r
1349 45, 39, 40,144, 43,160,191, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1350 0,156,142,143, 20, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1351 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1352 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1354 { 23, Text 46x25, 8x16, complete }
\r
1355 ( 46, 24, 16, 0,10, 9, 3, 0, 2, 103,
\r
1356 52, 45, 46,151, 50,150,191, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1357 0,156,142,143, 23, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1358 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1359 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1361 { 24, Text 70x25, 9x16, complete }
\r
1362 ( 70, 24, 16, 0,14, 0, 3, 0, 2, 99,
\r
1363 83, 69, 70,150, 75, 21,191, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1364 0,156,142,143, 35, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1365 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1366 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1368 { 25, Text 80x25, 8x16, complete }
\r
1369 ( 80, 24, 16, 0,16, 1, 3, 0, 2, 99,
\r
1370 95, 79, 80,130, 85,129,191, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1371 0,156,142,143, 40, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1372 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1373 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1375 { 26, Text 80x25, 9x16, standard }
\r
1376 ( 80, 24, 16, 0,16, 0, 3, 0, 2, 103,
\r
1377 95, 79, 80,130, 85,129,191, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1378 0,156,142,143, 40, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1379 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1380 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1382 { 27, Text 90x25, 8x16, complete }
\r
1383 ( 90, 24, 16, 0, 18 , 1, 3, 0, 2, 103,
\r
1384 107, 89, 90,142, 95,138,191, 31, 0, 79, 13, 14, 0, 0, 0,
\r
1385 0,156,142,143, 45, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1386 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1387 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1390 { 28, Text 46x29, 8x16, complete }
\r
1391 ( 46, 28, 14, 0,11, 9, 3, 0, 2, 103,
\r
1392 52, 45, 46,151, 50,150,193, 31, 0, 77, 11, 12, 0, 0, 0,
\r
1393 0,159,145,149, 23, 31,155,185,163,255, 0, 1, 2, 3, 4,
\r
1394 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1395 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1397 { 29, Text 70x29, 9x14, complete }
\r
1398 ( 70, 28, 14, 0, 16 , 0, 3, 0, 2, 99,
\r
1399 83, 69, 70,150, 75, 21,193, 31, 0, 77, 11, 12, 0, 0, 0,
\r
1400 0,159,145,149, 35, 31,155,185,163,255, 0, 1, 2, 3, 4,
\r
1401 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 8,
\r
1402 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1404 { 30, Text 80x29, 8x14, complete }
\r
1405 ( 80, 28, 14, 0, 19 , 1, 3, 0, 2, 99,
\r
1406 95, 79, 80,130, 85,129,193, 31, 0, 77, 11, 12, 0, 0, 0,
\r
1407 0,159,145,149, 40, 31,155,185,163,255, 0, 1, 2, 3, 4,
\r
1408 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1409 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1411 { 31, Text 80x29, 9x14, complete }
\r
1412 ( 80, 28, 14, 0, 19 , 0, 3, 0, 2, 103,
\r
1413 95, 79, 80,130, 85,129,193, 31, 0, 77, 11, 12, 0, 0, 0,
\r
1414 0,159,145,149, 40, 31,155,185,163,255, 0, 1, 2, 3, 4,
\r
1415 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 8,
\r
1416 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1418 { 32, Text 90x29, 8x14, complete }
\r
1419 ( 90, 28, 14, 0, 21 , 1, 3, 0, 2, 103,
\r
1420 107, 89, 90,142, 95,138,193, 31, 0, 77, 11, 12, 0, 0, 0,
\r
1421 0,159,145,149, 45, 31,155,185,163,255, 0, 1, 2, 3, 4,
\r
1422 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1423 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1426 { 33, Text 70x30, 9x16, complete }
\r
1427 ( 70, 29, 16, 0, 17 , 0, 3, 0, 2, 227,
\r
1428 83, 69, 70,150, 75, 21, 11, 62, 0, 79, 13, 14, 0, 0, 0,
\r
1429 0,234,172,223, 35, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1430 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 8,
\r
1431 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1433 { 34, Text 80x30, 8x16, complete }
\r
1434 ( 80, 29, 16, 0, 19 , 1, 3, 0, 2, 227,
\r
1435 95, 79, 80,130, 85,129, 11, 62, 0, 79, 13, 14, 0, 0, 0,
\r
1436 0,234,172,223, 40, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1437 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1438 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1440 { 35, Text 80x30, 9x16, complete }
\r
1441 ( 80, 29, 16, 0, 19 , 0, 3, 0, 2, 231,
\r
1442 95, 79, 80,130, 85,129, 11, 62, 0, 79, 13, 14, 0, 0, 0,
\r
1443 0,234,172,223, 40, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1444 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 8,
\r
1445 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1447 { 36, Text 90x30, 8x16 ,complete }
\r
1448 ( 90, 29, 16, 0, 22 , 1, 3, 0, 2, 231,
\r
1449 107, 89, 90,142, 95,138, 11, 62, 0, 79, 13, 14, 0, 0, 0,
\r
1450 0,234,172,223, 45, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1451 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1452 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1455 { 37, Text 70x34, 9x14, complete }
\r
1456 ( 70, 33, 14, 0, 19 , 0, 3, 0, 2, 227,
\r
1457 83, 69, 70,150, 75, 21, 7, 62, 0, 77, 11, 12, 0, 0, 0,
\r
1458 0,230,168,219, 35, 31,227, 2,163,255, 0, 1, 2, 3, 4,
\r
1459 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 8,
\r
1460 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1462 { 38, Text 80x34, 8x14, complete }
\r
1463 ( 80, 33, 14, 0, 22 , 1, 3, 0, 2, 227,
\r
1464 95, 79, 80,130, 85,129, 7, 62, 0, 77, 11, 12, 0, 0, 0,
\r
1465 0,230,168,219, 40, 31,227, 2,163,255, 0, 1, 2, 3, 4,
\r
1466 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1467 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1469 { 39, Text 80x34, 9x14, complete }
\r
1470 ( 80, 33, 14, 0, 22 , 0, 3, 0, 2, 231,
\r
1471 95, 79, 80,130, 85,129, 7, 62, 0, 77, 11, 12, 0, 0, 0,
\r
1472 0,230,168,219, 40, 31,227, 2,163,255, 0, 1, 2, 3, 4,
\r
1473 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 8,
\r
1474 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1476 { 40, Text 90x34, 8x14, complete }
\r
1477 ( 90, 33, 14, 0, 24 , 1, 3, 0, 2, 231,
\r
1478 107, 89, 90,142, 95,138, 7, 62, 0, 77, 11, 12, 0, 0, 0,
\r
1479 0,230,168,219, 45, 31,227, 2,163,255, 0, 1, 2, 3, 4,
\r
1480 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1481 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1484 { 41, Text 70x44, 9x8, complete }
\r
1485 ( 70, 43, 8, 0,25, 0, 3, 0, 2, 163,
\r
1486 83, 69, 70,150, 75, 21,193, 31, 0, 71, 6, 7, 0, 0, 0,
\r
1487 0,133,135, 95, 35, 15,101,187,163,255, 0, 1, 2, 3, 4,
\r
1488 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1489 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1491 { 42, Text 80x44, 8x8, complete }
\r
1492 ( 80, 43, 8, 0,28, 1, 3, 0, 2, 163,
\r
1493 95, 79, 80,130, 85,129,193, 31, 0, 71, 6, 7, 0, 0, 0,
\r
1494 0,133,135, 95, 40, 15,101,187,163,255, 0, 1, 2, 3, 4,
\r
1495 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1496 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1498 { 43, Text 80x44, 9x8, complete }
\r
1499 ( 80, 43, 8, 0,28, 0, 3, 0, 2, 167,
\r
1500 95, 79, 80,130, 85,129,193, 31, 0, 71, 6, 7, 0, 0, 0,
\r
1501 0,133,135, 95, 40, 15,101,187,163,255, 0, 1, 2, 3, 4,
\r
1502 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1503 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1505 { 44, Text 90x44, 8x8, complete }
\r
1506 ( 90, 43, 8, 0,31, 1, 3, 0, 2, 167,
\r
1507 107, 89, 90,142, 95,138,193, 31, 0, 71, 6, 7, 0, 0, 0,
\r
1508 0,133,135, 95, 45, 15,101,187,163,255, 0, 1, 2, 3, 4,
\r
1509 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1510 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1513 { 45, Text 70x50, 9x8, complete }
\r
1514 ( 70, 49, 8, 0,28, 0, 3, 0, 2, 99,
\r
1515 83, 69, 70,150, 75, 21,191, 31, 0, 71, 6, 7, 0, 0, 0,
\r
1516 0,156,142,143, 35, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1517 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1518 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1520 { 46, Text 80x50, 8x8, complete }
\r
1521 ( 80, 49, 8, 0,32, 1, 3, 0, 2, 99,
\r
1522 95, 79, 80,130, 85,129,191, 31, 0, 71, 6, 7, 0, 0, 0,
\r
1523 0,156,142,143, 40, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1524 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 0,
\r
1525 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1527 { 47, Text 80x50, 9x8, standard }
\r
1528 ( 80, 49, 8, 0,32, 0, 3, 0, 2, 103,
\r
1529 95, 79, 80,130, 85,129,191, 31, 0, 71, 6, 7, 0, 0, 0,
\r
1530 0,156,142,143, 40, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1531 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 12, 0, 15, 8,
\r
1532 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1534 { 48, Text 90x50, 8x8, complete }
\r
1535 ( 90, 49, 8, 0, 36 , 1, 3, 0, 2, 103,
\r
1536 107, 89, 90,142, 95,138,191, 31, 0, 71, 6, 7, 0, 0, 0,
\r
1537 0,156,142,143, 45, 31,150,185,163,255, 0, 1, 2, 3, 4,
\r
1538 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1539 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1542 { 49, Text 70x60, 9x8, complete }
\r
1543 ( 70, 59, 8, 0, 33 , 0, 3, 0, 2, 227,
\r
1544 83, 69, 70,150, 75, 21, 11, 62, 0, 71, 6, 7, 0, 0, 0,
\r
1545 0,234,172,223, 35, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1546 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 8,
\r
1547 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1549 { 50, Text 80x60, 8x8, complete }
\r
1550 ( 80, 59, 8, 0, 38 , 1, 3, 0, 2, 227,
\r
1551 95, 79, 80,130, 85,129, 11, 62, 0, 71, 6, 7, 0, 0, 0,
\r
1552 0,234,172,223, 40, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1553 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1554 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1556 { 51, Text 80x60, 9x8, complete }
\r
1557 ( 80, 59, 8, 0, 38 , 0, 3, 0, 2, 231,
\r
1558 95, 79, 80,130, 85,129, 11, 62, 0, 71, 6, 7, 0, 0, 0,
\r
1559 0,234,172,223, 40, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1560 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 8,
\r
1561 0, 0, 0, 0, 0, 16, 14, 0, 255),
\r
1563 { 52, Text 90x60, 8x8, complete }
\r
1564 ( 90, 59, 8,128, 42 , 1, 3, 0, 2, 231,
\r
1565 107, 89, 90,142, 95,138, 11, 62, 0, 71, 6, 7, 0, 0, 0,
\r
1566 0,234,172,223, 45, 31,231, 6,163,255, 0, 1, 2, 3, 4,
\r
1567 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63, 8, 0, 15, 0,
\r
1568 0, 0, 0, 0, 0, 16, 14, 0, 255)
\r
1576 lea esi,[vmode_data]
\r
1614 @@3: movzx edi,SEG0040
\r
1660 MEM[SEG0040:$4a] := vmode_data[vmode,0];
\r
1661 MEM[SEG0040:$84] := vmode_data[vmode,1];
\r
1662 MEM[SEG0040:$85] := vmode_data[vmode,2];
\r
1663 MEM[SEG0040:$4c] := vmode_data[vmode,3];
\r
1664 MEM[SEG0040:$4d] := vmode_data[vmode,4];
\r
1665 FillChar(MEM[SEG0040:$4e],17,0);
\r
1667 MEM[SEG0040:$60] := vmode_data[vmode,20];
\r
1668 MEM[SEG0040:$61] := vmode_data[vmode,21];
\r
1669 MEM[SEG0040:$62] := 0;
\r
1671 Case vmode_data[vmode,2] of
\r
1672 8: asm mov ah,11h; mov al,2; xor bx,bx; int 10h end;
\r
1673 14: asm mov ah,11h; mov al,1; xor bx,bx; int 10h end;
\r
1674 16: asm mov ah,11h; mov al,4; xor bx,bx; int 10h end;
\r
1678 CleanScreen(Ptr(v_seg,v_ofs)^);
\r