Diff for /np2/io/serial.c between versions 1.12 and 1.18

version 1.12, 2004/02/18 03:24:48 version 1.18, 2004/03/31 11:59:18
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   #include        "cpucore.h"
 #include        "commng.h"  #include        "commng.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
Line 9 Line 10
   
 static void keyboard_int(BOOL absolute) {  static void keyboard_int(BOOL absolute) {
   
         if (keybrd.buffers) {          if ((keybrd.ctrls) || (keybrd.buffers)) {
                 if (!(keybrd.status & 2)) {                  if (!(keybrd.status & 2)) {
                         keybrd.status |= 2;                          keybrd.status |= 2;
                         keybrd.data = keybrd.buf[keybrd.pos];                          if (keybrd.ctrls) {
                         keybrd.pos = (keybrd.pos + 1) & KB_BUFMASK;                                  keybrd.ctrls--;
                         keybrd.buffers--;                                  keybrd.data = keybrd.ctr[keybrd.ctrpos];
                                   keybrd.ctrpos = (keybrd.ctrpos + 1) & KB_CTRMASK;
                           }
                           else if (keybrd.buffers) {
                                   keybrd.buffers--;
                                   keybrd.data = keybrd.buf[keybrd.bufpos];
                                   keybrd.bufpos = (keybrd.bufpos + 1) & KB_BUFMASK;
                           }
                           TRACEOUT(("recv -> %02x", keybrd.data));
                 }                  }
                 pic_setirq(1);                  pic_setirq(1);
                 nevent_set(NEVENT_KEYBOARD, keybrd.xferclock,                  nevent_set(NEVENT_KEYBOARD, keybrd.xferclock,
Line 31  void keyboard_callback(NEVENTITEM item)  Line 40  void keyboard_callback(NEVENTITEM item) 
   
 static void IOOUTCALL keyboard_o41(UINT port, REG8 dat) {  static void IOOUTCALL keyboard_o41(UINT port, REG8 dat) {
   
         keybrd.mode = dat;          if (keybrd.cmd & 1) {
                   TRACEOUT(("send -> %02x", dat));
                   keystat_ctrlsend(dat);
           }
         (void)port;          (void)port;
 }  }
   
 static void IOOUTCALL keyboard_o43(UINT port, REG8 dat) {  static void IOOUTCALL keyboard_o43(UINT port, REG8 dat) {
   
           TRACEOUT(("out43 -> %02x %.4x:%.8x", dat, CPU_CS, CPU_EIP));
         if ((!(dat & 0x08)) && (keybrd.cmd & 0x08)) {          if ((!(dat & 0x08)) && (keybrd.cmd & 0x08)) {
                 keyboard_resetsignal();                  keyboard_resetsignal();
         }          }
Line 51  static REG8 IOINPCALL keyboard_i41(UINT  Line 64  static REG8 IOINPCALL keyboard_i41(UINT 
   
         (void)port;          (void)port;
         keybrd.status &= ~2;          keybrd.status &= ~2;
           TRACEOUT(("in41 -> %02x %.4x:%.8x", keybrd.data, CPU_CS, CPU_EIP));
         return(keybrd.data);          return(keybrd.data);
 }  }
   
 static REG8 IOINPCALL keyboard_i43(UINT port) {  static REG8 IOINPCALL keyboard_i43(UINT port) {
   
         (void)port;          (void)port;
         return(keybrd.status);          TRACEOUT(("in43 -> %02x %.4x:%.8x", keybrd.status, CPU_CS, CPU_EIP));
           return(keybrd.status | 0x85);
 }  }
   
   
Line 74  void keyboard_reset(void) { Line 89  void keyboard_reset(void) {
   
         ZeroMemory(&keybrd, sizeof(keybrd));          ZeroMemory(&keybrd, sizeof(keybrd));
         keybrd.data = 0xff;          keybrd.data = 0xff;
         keybrd.mode = 0x5e;  
 }  }
   
 void keyboard_bind(void) {  void keyboard_bind(void) {
Line 86  void keyboard_bind(void) { Line 100  void keyboard_bind(void) {
   
 void keyboard_resetsignal(void) {  void keyboard_resetsignal(void) {
   
         keybrd.mode = 0x5e;  
         keybrd.cmd = 0;          keybrd.cmd = 0;
         keybrd.status = 0;          keybrd.status = 0;
           keybrd.ctrls = 0;
         keybrd.buffers = 0;          keybrd.buffers = 0;
         keybrd.pos = 0;          keystat_ctrlreset();
         keystat_resendstat();          keystat_resendstat();
 }  }
   
   void keyboard_ctrl(REG8 data) {
   
           if ((data == 0xfa) || (data == 0xfc)) {
                   keybrd.ctrls = 0;
           }
           if (keybrd.ctrls < KB_CTR) {
                   keybrd.ctr[(keybrd.ctrpos + keybrd.ctrls) & KB_CTRMASK] = data;
                   keybrd.ctrls++;
                   if (!nevent_iswork(NEVENT_KEYBOARD)) {
                           keyboard_int(NEVENT_ABSOLUTE);
                   }
           }
   }
   
 void keyboard_send(REG8 data) {  void keyboard_send(REG8 data) {
   
         if (keybrd.buffers < KB_BUF) {          if (keybrd.buffers < KB_BUF) {
                 keybrd.buf[(keybrd.pos + keybrd.buffers) & KB_BUFMASK] = data;                  keybrd.buf[(keybrd.bufpos + keybrd.buffers) & KB_BUFMASK] = data;
                 keybrd.buffers++;                  keybrd.buffers++;
                 if (!nevent_iswork(NEVENT_KEYBOARD)) {                  if (!nevent_iswork(NEVENT_KEYBOARD)) {
                         keyboard_int(NEVENT_ABSOLUTE);                          keyboard_int(NEVENT_ABSOLUTE);
Line 242  static void IOOUTCALL rs232c_o32(UINT po Line 270  static void IOOUTCALL rs232c_o32(UINT po
                         break;                          break;
   
                 case 0x02:                      // cmd                  case 0x02:                      // cmd
                           sysport.c &= ~7;
                           sysport.c |= (dat & 7);
                         rs232c.pos++;                          rs232c.pos++;
                         break;                          break;
         }          }

Removed from v.1.12  
changed lines
  Added in v.1.18


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