Diff for /np2/io/serial.c between versions 1.1.1.1 and 1.4

version 1.1.1.1, 2003/10/16 17:57:57 version 1.4, 2003/10/23 18:33:13
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "dosio.h"  
 #include        "commng.h"  #include        "commng.h"
 #include        "memory.h"  
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
   
Line 112  void keystat_senddata(BYTE data) { Line 110  void keystat_senddata(BYTE data) {
         }          }
         else {          else {
                 if ((np2cfg.XSHIFT) &&                  if ((np2cfg.XSHIFT) &&
                         ((key == 0x70) && (np2cfg.XSHIFT & 1)) ||                          (((key == 0x70) && (np2cfg.XSHIFT & 1)) ||
                         ((key == 0x74) && (np2cfg.XSHIFT & 2)) ||                          ((key == 0x74) && (np2cfg.XSHIFT & 2)) ||
                         ((key == 0x73) && (np2cfg.XSHIFT & 4))) {                          ((key == 0x73) && (np2cfg.XSHIFT & 4)))) {
                         if (data & 0x80) {                          if (data & 0x80) {
                                 return;                                  return;
                         }                          }
Line 156  void keystat_resetcopyhelp(void) { Line 154  void keystat_resetcopyhelp(void) {
         }          }
 }  }
   
   void keystat_allrelease(void) {
   
           UINT    i;
   
           for (i=0; i<0x80; i++) {
                   if (keystat[i] & 0x80) {
                           keystat[i] &= ~0x80;
                           keyb_out((BYTE)(i + 0x80));
                   }
           }
   }
   
 void keystat_forcerelease(BYTE value) {  void keystat_forcerelease(BYTE value) {
   
         if (keystat[value & 0x7f] & 0x80) {          if (keystat[value & 0x7f] & 0x80) {
Line 178  void keystat_resetjoykey(void) { Line 188  void keystat_resetjoykey(void) {
         }          }
 }  }
   
 BYTE keystat_getjoy(void) {  
   
         BYTE    ret = 0xff;  // ----
         BYTE    *p = (BYTE *)joykeytable;  
   typedef struct {
           BYTE    joysync;
           BYTE    joylast;
           BYTE    mouselast;
           BYTE    padding;
           BYTE    d_up;
           BYTE    d_dn;
           BYTE    d_lt;
           BYTE    d_rt;
   } KEYEXT;
   
   static  KEYEXT  keyext;
   static const BYTE mousedelta[] = {1, 1, 1, 1,
                                                                           2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4};
   #define MOUSESTEPMAX ((sizeof(mousedelta) / sizeof(BYTE)) - 1)
   
   void keyext_flash(void) {
   
           keyext.joysync = 0;
   }
   
   BYTE keyext_getjoy(void) {
   
           BYTE    flg;
   const BYTE      *p;
         BYTE    bit;          BYTE    bit;
   
         for (bit=0x20; bit; bit>>=1, p+=2) {          if (!keyext.joysync) {
                 if ((keystat[*p] & 0x80) || (keystat[*(p+1)] & 0x80)) {                  keyext.joysync = 1;
                         ret &= ~bit;                  flg = 0xff;
                   p = joykeytable;
                   for (bit=0x20; bit; bit>>=1) {
                           if ((keystat[p[0]] & 0x80) || (keystat[p[1]] & 0x80)) {
                                   flg ^= bit;
                           }
                           p += 2;
                 }                  }
                   keyext.joylast = flg;
           }
           return(keyext.joylast);
   }
   
   BYTE keyext_getmouse(SINT16 *x, SINT16 *y) {
   
           BYTE    btn;
           BYTE    acc;
           SINT16  tmp;
           BYTE    ret;
   
           btn = keyext_getjoy();
           acc = btn | keyext.mouselast;
           keyext.mouselast = btn;
           tmp = 0;
           if (!(btn & 1)) {
                   tmp -= mousedelta[keyext.d_up];
         }          }
           if (!(acc & 1)) {
                   if (keyext.d_up < MOUSESTEPMAX) {
                           keyext.d_up++;
                   }
           }
           else {
                   keyext.d_up = 0;
           }
           if (!(btn & 2)) {
                   tmp += mousedelta[keyext.d_dn];
           }
           if (!(acc & 2)) {
                   if (keyext.d_dn < MOUSESTEPMAX) {
                           keyext.d_dn++;
                   }
           }
           else {
                   keyext.d_dn = 0;
           }
           *y += tmp;
   
           tmp = 0;
           if (!(btn & 4)) {
                   tmp -= mousedelta[keyext.d_lt];
           }
           if (!(acc & 4)) {
                   if (keyext.d_lt < MOUSESTEPMAX) {
                           keyext.d_lt++;
                   }
           }
           else {
                   keyext.d_lt = 0;
           }
           if (!(btn & 8)) {
                   tmp += mousedelta[keyext.d_rt];
           }
           if (!(acc & 8)) {
                   if (keyext.d_rt < MOUSESTEPMAX) {
                           keyext.d_rt++;
                   }
           }
           else {
                   keyext.d_rt = 0;
           }
           *x += tmp;
   
           ret = 0x5f;
           ret += (btn & 0x10) << 3;
           ret += (btn & 0x20);
         return(ret);          return(ret);
 }  }
   
Line 288  void rs232c_callback(void) { Line 395  void rs232c_callback(void) {
   
         BOOL    interrupt;          BOOL    interrupt;
   
           interrupt = FALSE;
         if ((cm_rs232c) && (cm_rs232c->read(cm_rs232c, &rs232c.data))) {          if ((cm_rs232c) && (cm_rs232c->read(cm_rs232c, &rs232c.data))) {
                 rs232c.result |= 2;                  rs232c.result |= 2;
                 if (sysport.c & 1) {                  if (sysport.c & 1) {

Removed from v.1.1.1.1  
changed lines
  Added in v.1.4


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