99
1010#include <freeldr.h>
1111#include <drivers/pc98/video.h>
12+ #include "../../vgafont.h"
1213
13- extern UCHAR BitmapFont8x16 [];
1414extern BOOLEAN HiResoMachine ;
1515
1616/* GLOBALS ********************************************************************/
@@ -21,9 +21,6 @@ extern BOOLEAN HiResoMachine;
2121UCHAR TextCols ;
2222UCHAR TextLines ;
2323
24- #define CHAR_WIDTH 8
25- #define CHAR_HEIGHT 16
26-
2724#define SCREEN_WIDTH 640
2825#define SCREEN_HEIGHT 400
2926#define BYTES_PER_SCANLINE (SCREEN_WIDTH / 8)
@@ -321,7 +318,7 @@ Pc98VideoPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y)
321318 UCHAR R = (Attr & 0x40 ) ? 0xFF : 0 ;
322319 UCHAR I = (Attr & 0x80 ) ? 0xFF : 0 ;
323320 ULONG VramOffset = X + (Y * CHAR_HEIGHT ) * BYTES_PER_SCANLINE ;
324- PUCHAR FontPtr = BitmapFont8x16 + Ch * 16 ;
321+ const UCHAR * FontPtr = BitmapFont8x16 + Ch * CHAR_HEIGHT ;
325322 BOOLEAN CGFont = UseCGFont && (Ch != LIGHT_FILL && Ch != MEDIUM_FILL && Ch != DARK_FILL );
326323
327324 if (CGFont )
@@ -347,34 +344,35 @@ Pc98VideoPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y)
347344
348345 for (Line = 0 ; Line < CHAR_HEIGHT ; Line ++ )
349346 {
347+ UCHAR CharLine = FontPtr [Line ];
350348 if (CGFont )
351349 {
352350 if (CGAccelDraw )
353351 {
354352 /* Character is already displayed by GDC (Text RAM),
355353 * so display only background for it. */
356- FontPtr [ Line ] = 0 ;
354+ CharLine = 0 ;
357355 }
358356 else
359357 {
360358 /* Obtain glyph data from CG Window */
361359 WRITE_PORT_UCHAR ((PUCHAR )KCG_IO_o_LINE , Line | 0x20 );
362- FontPtr [ Line ] = READ_PORT_UCHAR ((PUCHAR )KCG_IO_i_PATTERN );
360+ CharLine = READ_PORT_UCHAR ((PUCHAR )KCG_IO_i_PATTERN );
363361 }
364362 }
365363 if (Attr & 0x0F )
366364 {
367- * (PUCHAR )(VramPlaneB + VramOffset + Line * BYTES_PER_SCANLINE ) = B | ((Attr & 0x01 ) ? FontPtr [ Line ] : 0 );
368- * (PUCHAR )(VramPlaneG + VramOffset + Line * BYTES_PER_SCANLINE ) = G | ((Attr & 0x02 ) ? FontPtr [ Line ] : 0 );
369- * (PUCHAR )(VramPlaneR + VramOffset + Line * BYTES_PER_SCANLINE ) = R | ((Attr & 0x04 ) ? FontPtr [ Line ] : 0 );
370- * (PUCHAR )(VramPlaneI + VramOffset + Line * BYTES_PER_SCANLINE ) = I | ((Attr & 0x08 ) ? FontPtr [ Line ] : 0 );
365+ * (PUCHAR )(VramPlaneB + VramOffset + Line * BYTES_PER_SCANLINE ) = B | ((Attr & 0x01 ) ? CharLine : 0 );
366+ * (PUCHAR )(VramPlaneG + VramOffset + Line * BYTES_PER_SCANLINE ) = G | ((Attr & 0x02 ) ? CharLine : 0 );
367+ * (PUCHAR )(VramPlaneR + VramOffset + Line * BYTES_PER_SCANLINE ) = R | ((Attr & 0x04 ) ? CharLine : 0 );
368+ * (PUCHAR )(VramPlaneI + VramOffset + Line * BYTES_PER_SCANLINE ) = I | ((Attr & 0x08 ) ? CharLine : 0 );
371369 }
372370 else
373371 {
374- * (PUCHAR )(VramPlaneB + VramOffset + Line * BYTES_PER_SCANLINE ) = B & ~FontPtr [ Line ] ;
375- * (PUCHAR )(VramPlaneG + VramOffset + Line * BYTES_PER_SCANLINE ) = G & ~FontPtr [ Line ] ;
376- * (PUCHAR )(VramPlaneR + VramOffset + Line * BYTES_PER_SCANLINE ) = R & ~FontPtr [ Line ] ;
377- * (PUCHAR )(VramPlaneI + VramOffset + Line * BYTES_PER_SCANLINE ) = I & ~FontPtr [ Line ] ;
372+ * (PUCHAR )(VramPlaneB + VramOffset + Line * BYTES_PER_SCANLINE ) = B & ~CharLine ;
373+ * (PUCHAR )(VramPlaneG + VramOffset + Line * BYTES_PER_SCANLINE ) = G & ~CharLine ;
374+ * (PUCHAR )(VramPlaneR + VramOffset + Line * BYTES_PER_SCANLINE ) = R & ~CharLine ;
375+ * (PUCHAR )(VramPlaneI + VramOffset + Line * BYTES_PER_SCANLINE ) = I & ~CharLine ;
378376 }
379377 }
380378}
0 commit comments