Diff for /np2/bios/bios18.c between versions 1.1 and 1.5

version 1.1, 2003/10/16 17:58:20 version 1.5, 2003/11/29 00:36:00
Line 3 Line 3
 #include        "memory.h"  #include        "memory.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "font.h"  
 #include        "bios.h"  #include        "bios.h"
 #include        "biosmem.h"  #include        "biosmem.h"
   #include        "font.h"
   
   
 static  int             sti_waiting = 0;  static  int             sti_waiting = 0;
Line 223  void bios0x18(void) { Line 223  void bios0x18(void) {
                         }                          }
                         else {                          else {
                                 I286_IP--;                                  I286_IP--;
                                 nevent.remainclock = -1;                                  I286_REMCLOCK = -1;
                                 break;                                  break;
                         }                          }
                         break;                          break;
Line 357  void bios0x18(void) { Line 357  void bios0x18(void) {
                                 pos = I286_CX;                                  pos = I286_CX;
                                 p = gdc.m.para + GDC_SCROLL + (I286_DH << 2);                                  p = gdc.m.para + GDC_SCROLL + (I286_DH << 2);
                                 while((i--) && (p < (gdc.m.para + GDC_SCROLL + 0x10))) {                                  while((i--) && (p < (gdc.m.para + GDC_SCROLL + 0x10))) {
                                         tmp = i286_memword_read(I286_BX, pos);                                          REG16 t;
                                         tmp >>= 1;                                          t = i286_memword_read(I286_BX, pos);
                                         STOREINTELWORD(p, tmp);                                          t >>= 1;
                                         tmp = i286_memword_read(I286_BX, pos + 2);                                          STOREINTELWORD(p, t);
                                           t = i286_memword_read(I286_BX, pos + 2);
                                         if (!(mem[MEMB_CRT_STS_FLAG] & 1)) {    // 25                                          if (!(mem[MEMB_CRT_STS_FLAG] & 1)) {    // 25
                                                 tmp *= (16 * 16);                                                  t *= (16 * 16);
                                         }                                          }
                                         else {                                                                  // 20                                          else {                                                                  // 20
                                                 tmp *= (20 * 16);                                                  t *= (20 * 16);
                                         }                                          }
                                         if (!(mem[MEMB_CRT_STS_FLAG] & 0x80)) {                 // ver0.29                                          if (!(mem[MEMB_CRT_STS_FLAG] & 0x80)) {                 // ver0.29
                                                 tmp >>= 1;                                                  t >>= 1;
                                         }                                          }
                                         STOREINTELWORD(p + 2, tmp);                                          STOREINTELWORD(p + 2, t);
                                         pos += 4;                                          pos += 4;
                                         p += 4;                                          p += 4;
                                 }                                  }
Line 437  void bios0x18(void) { Line 438  void bios0x18(void) {
                                 case 0x00:                      // 8x8                                  case 0x00:                      // 8x8
                                         i286_memword_write(I286_BX, I286_CX, 0x0101);                                          i286_memword_write(I286_BX, I286_CX, 0x0101);
                                         i286_memstr_write(I286_BX, I286_CX+2,                                          i286_memstr_write(I286_BX, I286_CX+2,
                                                                                 &font[0x82000 + (I286_DL << 3)], 8);                                                                  fontrom + 0x82000 + (I286_DL << 3), 8);
                                         break;                                          break;
   
                                 case 0x28:                      // 8x16 KANJI                                  case 0x28:                      // 8x16 KANJI
Line 446  void bios0x18(void) { Line 447  void bios0x18(void) {
                                 case 0x2b:                                  case 0x2b:
                                         i286_memword_write(I286_BX, I286_CX, 0x0102);                                          i286_memword_write(I286_BX, I286_CX, 0x0102);
                                         i286_memstr_write(I286_BX, I286_CX+2,                                          i286_memstr_write(I286_BX, I286_CX+2,
                                                 &font[((I286_DL & 0x7f) << 12)                                                                  fontrom + ((I286_DL & 0x7f) << 12)
                                                                 + ((I286_DH - 0x20) << 4)], 16);                                                                                  + ((I286_DH - 0x20) << 4), 16);
                                         break;                                          break;
   
                                 case 0x80:                      // 8x16 ANK                                  case 0x80:                      // 8x16 ANK
                                         i286_memword_write(I286_BX, I286_CX, 0x0102);                                          i286_memword_write(I286_BX, I286_CX, 0x0102);
                                         i286_memstr_write(I286_BX, I286_CX+2,                                          i286_memstr_write(I286_BX, I286_CX+2,
                                                                         &font[0x80000 + (I286_DL << 4)], 16);                                                                  fontrom + 0x80000 + (I286_DL << 4), 16);
                                         break;                                          break;
   
                                 default:                                  default:
                                         buf[0] = 0x02;                                          buf[0] = 0x02;
                                         buf[1] = 0x02;                                          buf[1] = 0x02;
                                         p = &font[((I286_DL & 0x7f) << 12)                                          p = fontrom + ((I286_DL & 0x7f) << 12)
                                                                 + (((I286_DH - 0x20) & 0x7f) << 4)];                                                                  + (((I286_DH - 0x20) & 0x7f) << 4);
                                         for (i=1; i<17; i++, p++) {                                          for (i=1; i<17; i++, p++) {
                                                 buf[i*2+0] = *p;                                                  buf[i*2+0] = *p;
                                                 buf[i*2+1] = *(p+0x800);                                                  buf[i*2+1] = *(p+0x800);
Line 491  void bios0x18(void) { Line 492  void bios0x18(void) {
                 case 0x1a:                                              // ユーザー文字の定義                  case 0x1a:                                              // ユーザー文字の定義
                         if ((I286_DH & 0x7e) == 0x76) {                          if ((I286_DH & 0x7e) == 0x76) {
                                 i286_memstr_read(I286_BX, I286_CX+2, buf, 32);                                  i286_memstr_read(I286_BX, I286_CX+2, buf, 32);
                                 p = &font[((I286_DL & 0x7f) << 12)                                  p = fontrom + ((I286_DL & 0x7f) << 12)
                                                                 + (((I286_DH - 0x20) & 0x7f) << 4)];                                                          + (((I286_DH - 0x20) & 0x7f) << 4);
                                 for (i=0; i<16; i++, p++) {                                  for (i=0; i<16; i++, p++) {
                                         *p = buf[i*2+0];                                          *p = buf[i*2+0];
                                         *(p+0x800) = buf[i*2+1];                                          *(p+0x800) = buf[i*2+1];

Removed from v.1.1  
changed lines
  Added in v.1.5


RetroPC.NET-CVS <cvs@retropc.net>