Diff for /np2/bios/bios.c between versions 1.52 and 1.55

version 1.52, 2004/03/04 16:58:57 version 1.55, 2004/03/08 14:56:47
Line 26  static const char neccheck[] = "Copyrigh Line 26  static const char neccheck[] = "Copyrigh
                                                 // 00/05/18 MS-DOS6.2 on PC-9801VX calling proc                                                  // 00/05/18 MS-DOS6.2 on PC-9801VX calling proc
 static const BYTE printmain[] = {0x90, 0x5a, 0x1f, 0xcf};  static const BYTE printmain[] = {0x90, 0x5a, 0x1f, 0xcf};
   
   typedef struct {
           UINT8   port;
           UINT8   data;
   } IODATA;
   
   static const IODATA iodata[] = {
                           // DMA
                                   {0x29, 0x00}, {0x29, 0x01}, {0x29, 0x02}, {0x29, 0x03},
                                   {0x27, 0x00}, {0x21, 0x00}, {0x23, 0x00}, {0x25, 0x00},
                                   {0x1b, 0x00}, {0x11, 0x40},
   
                           // PIT
                                   {0x77, 0x30}, {0x71, 0x00}, {0x71, 0x00},
                                   {0x77, 0x76}, {0x73, 0xcd}, {0x73, 0x04},
                                   {0x77, 0xb6},
   
                           // PIC
                                   {0x00, 0x11}, {0x02, 0x08}, {0x02, 0x80}, {0x02, 0x1d},
                                   {0x08, 0x11}, {0x0a, 0x10}, {0x0a, 0x07}, {0x0a, 0x09},
                                   {0x02, 0x7d}, {0x0a, 0x71}};
   
   static const UINT8 msw_default[8] =
                                                           {0x48, 0x05, 0x04, 0x00, 0x01, 0x00, 0x00, 0x6e};
   
   
   static void bios_itfprepare(void) {
   
   const IODATA    *p;
   const IODATA    *pterm;
   
           p = iodata;
           pterm = iodata + (sizeof(iodata) / sizeof(IODATA));
           while(p < pterm) {
                   iocore_out8(p->port, p->data);
                   p++;
           }
   
           // GDCの初期化。
           // …
   }
   
   static void bios_memclear(void) {
   
   //      ZeroMemory(mem, 0xa0000);                                       // 何が原因だ?
           ZeroMemory(mem + VRAM0_B, 0x18000);
           ZeroMemory(mem + VRAM0_E, 0x08000);
           ZeroMemory(mem + VRAM1_B, 0x18000);
           ZeroMemory(mem + VRAM1_E, 0x08000);
   }
   
 static void bios_reinitbyswitch(void) {  static void bios_reinitbyswitch(void) {
   
Line 123  static void bios_reinitbyswitch(void) { Line 172  static void bios_reinitbyswitch(void) {
         }          }
 }  }
   
 static void bios_memclear(void) {  
   
         ZeroMemory(mem, 0xa0000);  
         ZeroMemory(mem + VRAM1_B, 0x18000);  
         ZeroMemory(mem + VRAM1_E, 0x08000);  
 }  
   
 static void bios_vectorset(void) {  static void bios_vectorset(void) {
   
         UINT    i;          UINT    i;
Line 269  void bios_initialize(void) { Line 311  void bios_initialize(void) {
   
 static void bios_boot(void) {  static void bios_boot(void) {
   
           int             i;
   
         if (!(sysport.c & 0x80)) {          if (!(sysport.c & 0x80)) {
                 CPU_SP = GETBIOSMEM16(0x00404);                  CPU_SP = GETBIOSMEM16(0x00404);
                 CPU_SS = GETBIOSMEM16(0x00406);                  CPU_SS = GETBIOSMEM16(0x00406);
 //              TRACEOUT(("CPU Reset... SS:SP = %.4x:%.4x", CPU_SS, CPU_SP));  //              TRACEOUT(("CPU Reset... SS:SP = %.4x:%.4x", CPU_SS, CPU_SP));
         }          }
         else {          else {
 //              bios_memclear();                  bios_itfprepare();
                   bios_memclear();
                 bios_vectorset();                  bios_vectorset();
                 bios0x09_init();                  bios0x09_init();
                 bios_reinitbyswitch();                  bios_reinitbyswitch();
Line 292  static void bios_boot(void) { Line 337  static void bios_boot(void) {
                         SETBIOSMEM16(0x004fc, 0xffff);                          SETBIOSMEM16(0x004fc, 0xffff);
                 }                  }
                 else {                  else {
                           if (!np2cfg.ITF_WORK) {
                                   for (i=0; i<8; i++) {
                                           mem[MEMB_MSW + (i*4)] = msw_default[i];
                                   }
                           }
                         CPU_IP = 0x0002;                          CPU_IP = 0x0002;
                 }                  }
         }          }
Line 307  static void bios0x1f(void) { Line 357  static void bios0x1f(void) {
         UINT    l;          UINT    l;
   
         if (CPU_AH == 0x90) {          if (CPU_AH == 0x90) {
                 i286_memstr_read(CPU_ES, CPU_BX + 0x10, work, 0x10);                  MEML_READSTR(CPU_ES, CPU_BX + 0x10, work, 0x10);
                 src = work[2] + (work[3] << 8) + (work[4] << 16) + CPU_SI;                  src = work[2] + (work[3] << 8) + (work[4] << 16) + CPU_SI;
                 dst = work[10] + (work[11] << 8) + (work[12] << 16) + CPU_DI;                  dst = work[10] + (work[11] << 8) + (work[12] << 16) + CPU_DI;
                 leng = LOW16(CPU_CX - 1) + 1;                  leng = LOW16(CPU_CX - 1) + 1;

Removed from v.1.52  
changed lines
  Added in v.1.55


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