Diff for /xmil/io/memio.c between versions 1.1 and 1.6

version 1.1, 2004/08/05 04:53:15 version 1.6, 2008/06/02 20:07:31
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   #include        "dosio.h"
 #include        "z80core.h"  #include        "z80core.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
   #include        "defipl.res"
   
   
           UINT8   biosmem[0x8000];
   #if defined(SUPPORT_BANKMEM)
           UINT8   bankmem[16][0x8000];
   #endif
   
   
 void memio_update(void) {  void memio_update(void) {
   
         if (memio.ems & 0x10) {  #if defined(SUPPORT_BANKMEM)
                 if (!memio.ram) {          if (iocore.s.bankmem & 0x10) {
                         RAM0r = mBIOS;  #endif
                         RAM0w = mMAIN;                  if (!(iocore.s.ppib & 0x10)) {
                           z80core.e.memread = biosmem;
                 }                  }
                 else {                  else {
                         RAM0r = RAM0w = mMAIN;                          z80core.e.memread = mainmem;
                 }                  }
                   z80core.e.memwrite = mainmem;
   #if defined(SUPPORT_BANKMEM)
         }          }
         else {          else {
                 RAM0r = RAM0w = mBANK[memio.ems & 15];                  z80core.e.memread = bankmem[iocore.s.bankmem & 15];
                   z80core.e.memwrite = bankmem[iocore.s.bankmem & 15];
         }          }
   #endif
 }  }
   
 void IOOUTCALL memio_ems_o(UINT port, REG8 dat) {  #if defined(SUPPORT_BANKMEM)
   void IOOUTCALL memio_bank_o(UINT port, REG8 dat) {
   
         memio.ems = dat;          iocore.s.bankmem = dat;
         memio_update();          memio_update();
         (void)port;          (void)port;
 }  }
   
 REG8 IOINPCALL memio_ems_i(UINT port) {  REG8 IOINPCALL memio_bank_i(UINT port) {
   
         (void)port;          (void)port;
         return(memio.ems);          return(iocore.s.bankmem);
 }  }
   #endif
   
 void IOOUTCALL memio_rom(UINT port, REG8 dat) {  void IOOUTCALL memio_rom(UINT port, REG8 dat) {
   
         memio.ram = 0x00;          iocore.s.ppib &= ~0x10;
         if (memio.ems & 0x10) {  #if defined(SUPPORT_BANKMEM)
                 RAM0r = mBIOS;          if (iocore.s.bankmem & 0x10) {
   #endif
                   z80core.e.memread = biosmem;
   #if defined(SUPPORT_BANKMEM)
         }          }
   #endif
         (void)port;          (void)port;
         (void)dat;          (void)dat;
 }  }
   
 void IOOUTCALL memio_ram(UINT port, REG8 dat) {  void IOOUTCALL memio_ram(UINT port, REG8 dat) {
   
         memio.ram = 0x10;          iocore.s.ppib |= 0x10;
         if (memio.ems & 0x10) {  #if defined(SUPPORT_BANKMEM)
                 RAM0r = mMAIN;          if (iocore.s.bankmem & 0x10) {
   #endif
                   z80core.e.memread = mainmem;
   #if defined(SUPPORT_BANKMEM)
         }          }
   #endif
         (void)port;          (void)port;
         (void)dat;          (void)dat;
 }  }
   
   
 // ----  /* ---- */
   
   static const OEMCHAR iplromx1[] = OEMTEXT("IPLROM.X1");
   static const OEMCHAR iplromx1t[] = OEMTEXT("IPLROM.X1T");
   
 void memio_reset(void) {  void memio_reset(void) {
   
         memio.ram = 0x00;  const OEMCHAR   *iplfile;
         memio.ems = 0x78;          UINT            iplsize;
           FILEH           fh;
   
           ZeroMemory(biosmem, 0x8000);
           CopyMemory(biosmem, defaultiplrom, sizeof(defaultiplrom));
           if (pccore.ROM_TYPE >= 1) {
                   if (pccore.ROM_TYPE >= 2) {
                           iplfile = iplromx1t;
                           iplsize = 0x8000;
                   }
                   else {
                           iplfile = iplromx1;
                           iplsize = 0x8000;
                   }
                   fh = file_open_rb_c(iplfile);
                   if (fh != FILEH_INVALID) {
                           file_read(fh, biosmem, iplsize);
                           file_close(fh);
                   }
           }
   
   #if defined(SUPPORT_BANKMEM)
           iocore.s.bankmem = 0x78;
   #endif
         memio_update();          memio_update();
 }  }
   

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


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