home *** CD-ROM | disk | FTP | other *** search
/ MACD 4 / MACD4.iso / Emulatory / v2600 / source.lha / source / amiga_keyb.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-27  |  5.8 KB  |  173 lines

  1. /*****************************************************************************
  2. Author     : Matthew Stroup
  3. Description: Amiga keyboard driver for v2600 Atari emulator
  4. Version    : 1.0 Jan 22, 1997
  5. ******************************************************************************/
  6.  
  7. /* The keyboard and mouse interface. */
  8. #include <stdio.h>
  9. #include "config.h"
  10. #include "options.h"
  11. #include "types.h"
  12. #include "address.h"
  13. #include "vmachine.h"
  14. #include "macro.h"
  15. #include "extern.h"
  16. #include "memory.h"
  17. #include "realjoy.h"
  18. #include "display.h"
  19. #include "kmap.h"
  20. #include <exec/types.h>
  21. #include <hardware/cia.h>
  22. #include <stdio.h>
  23.  
  24. enum control {STICK, PADDLE, KEYPAD};
  25.  
  26. extern int mouse_x, mouse_y, mouse_but;
  27.  
  28. extern int keymap[103];
  29.  
  30. #define CIAA 0xBFE001
  31.  
  32. struct CIA *cia = (struct CIA *) CIAA;
  33.  
  34. /* Update the current keyboard state. */
  35. void keybdrv_update (void)
  36. {
  37. }
  38.  
  39. /* Is this key presssed? */
  40. int keybdrv_pressed(int key)
  41. {
  42. UBYTE code;
  43.  
  44.     //Here's an evil hardware-banging keyboard routine...
  45.     /* Get a copy of the SDR value and invert it: */
  46.     code = cia->ciasdr ^ 0xFF;
  47.   
  48.     /* Shift all bits one step to the right, and put the bit that is */
  49.     /* pushed out last: 76543210 -> 07654321                         */
  50.     code = code & 0x01 ? (code>>1)+0x80 : code>>1;
  51.  
  52.     /* Return the Raw Key Code Value: */
  53.     return(code==keymap[key]);
  54. }
  55.  
  56. /* Defines the keyboard mappings */
  57. void keybdrv_setmap(void)
  58. {
  59.   keymap[  kmapSYSREQ              ]=0x5c;
  60.   keymap[  kmapCAPSLOCK            ]=0x62;
  61.   keymap[  kmapNUMLOCK             ]=0x5a;
  62.   keymap[  kmapSCROLLLOCK          ]=0x5b;
  63.   keymap[  kmapLEFTCTRL            ]=0x63;
  64.   keymap[  kmapLEFTALT             ]=0x64;
  65.   keymap[  kmapLEFTSHIFT           ]=0x60;
  66.   keymap[  kmapRIGHTCTRL           ]=0x63;
  67.   keymap[  kmapRIGHTALT            ]=0x65;
  68.   keymap[  kmapRIGHTSHIFT          ]=0x61;
  69.   keymap[  kmapESC                 ]=0x45;
  70.   keymap[  kmapBACKSPACE           ]=0x41;
  71.   keymap[  kmapENTER               ]=0x44;
  72.   keymap[  kmapSPACE               ]=0x40;
  73.   keymap[  kmapTAB                 ]=0x42;
  74.   keymap[  kmapF1                  ]=0x50;
  75.   keymap[  kmapF2                  ]=0x51;
  76.   keymap[  kmapF3                  ]=0x52;
  77.   keymap[  kmapF4                  ]=0x53;
  78.   keymap[  kmapF5                  ]=0x54;
  79.   keymap[  kmapF6                  ]=0x55;
  80.   keymap[  kmapF7                  ]=0x56;
  81.   keymap[  kmapF8                  ]=0x57;
  82.   keymap[  kmapF9                  ]=0x58;
  83.   keymap[  kmapF10                 ]=0x59;
  84.   keymap[  kmapF11                 ]=0x59;
  85.   keymap[  kmapF12                 ]=0x59;
  86.   keymap[  kmapA                   ]=0x20;
  87.   keymap[  kmapB                   ]=0x35;
  88.   keymap[  kmapC                   ]=0x33;
  89.   keymap[  kmapD                   ]=0x22;
  90.   keymap[  kmapE                   ]=0x12;
  91.   keymap[  kmapF                   ]=0x23;
  92.   keymap[  kmapG                   ]=0x24;
  93.   keymap[  kmapH                   ]=0x25;
  94.   keymap[  kmapI                   ]=0x17;
  95.   keymap[  kmapJ                   ]=0x26;
  96.   keymap[  kmapK                   ]=0x27;
  97.   keymap[  kmapL                   ]=0x28;
  98.   keymap[  kmapM                   ]=0x37;
  99.   keymap[  kmapN                   ]=0x36;
  100.   keymap[  kmapO                   ]=0x18;
  101.   keymap[  kmapP                   ]=0x19;
  102.   keymap[  kmapQ                   ]=0x10;
  103.   keymap[  kmapR                   ]=0x13;
  104.   keymap[  kmapS                   ]=0x21;
  105.   keymap[  kmapT                   ]=0x14;
  106.   keymap[  kmapU                   ]=0x16;
  107.   keymap[  kmapV                   ]=0x34;
  108.   keymap[  kmapW                   ]=0x11;
  109.   keymap[  kmapX                   ]=0x32;
  110.   keymap[  kmapY                   ]=0x15;
  111.   keymap[  kmapZ                   ]=0x31;
  112.   keymap[  kmap1                   ]=0x1;
  113.   keymap[  kmap2                   ]=0x2;
  114.   keymap[  kmap3                   ]=0x3;
  115.   keymap[  kmap4                   ]=0x4;
  116.   keymap[  kmap5                   ]=0x5;
  117.   keymap[  kmap6                   ]=0x6;
  118.   keymap[  kmap7                   ]=0x7;
  119.   keymap[  kmap8                   ]=0x8;
  120.   keymap[  kmap9                   ]=0x9;
  121.   keymap[  kmap0                   ]=0xa;
  122.   keymap[  kmapMINUS               ]=0xb;
  123.   keymap[  kmapEQUAL               ]=0xc;
  124.   keymap[  kmapLBRACKET            ]=0x1a;
  125.   keymap[  kmapRBRACKET            ]=0x1b;
  126.   keymap[  kmapSEMICOLON           ]=0x29;
  127.   keymap[  kmapTICK                ]=0x0;
  128.   keymap[  kmapAPOSTROPHE          ]=0x2a;
  129.   keymap[  kmapBACKSLASH           ]=0xd;
  130.   keymap[  kmapCOMMA               ]=0x38;
  131.   keymap[  kmapPERIOD              ]=0x39;
  132.   keymap[  kmapSLASH               ]=0x3a;
  133.   keymap[  kmapINS                 ]=0xf;
  134.   keymap[  kmapDEL                 ]=0x46;
  135.   keymap[  kmapHOME                ]=0x3d;
  136.   keymap[  kmapEND                 ]=0x1d;
  137.   keymap[  kmapPGUP                ]=0x3f;
  138.   keymap[  kmapPGDN                ]=0x1f;
  139.   keymap[  kmapLARROW              ]=0x4f;
  140.   keymap[  kmapRARROW              ]=0x4e;
  141.   keymap[  kmapUARROW              ]=0x4c;
  142.   keymap[  kmapDARROW              ]=0x4d;
  143.   keymap[  kmapKEYPAD0             ]=0xf;
  144.   keymap[  kmapKEYPAD1             ]=0x1d;
  145.   keymap[  kmapKEYPAD2             ]=0x1e;
  146.   keymap[  kmapKEYPAD3             ]=0x1f;
  147.   keymap[  kmapKEYPAD4             ]=0x2d;
  148.   keymap[  kmapKEYPAD5             ]=0x2e;
  149.   keymap[  kmapKEYPAD6             ]=0x2f;
  150.   keymap[  kmapKEYPAD7             ]=0x3d;
  151.   keymap[  kmapKEYPAD8             ]=0x3e;
  152.   keymap[  kmapKEYPAD9             ]=0x3f;
  153.   keymap[  kmapKEYPADDEL           ]=0x3c;
  154.   keymap[  kmapKEYPADSTAR          ]=0x5d;
  155.   keymap[  kmapKEYPADMINUS         ]=0x4a;
  156.   keymap[  kmapKEYPADPLUS          ]=0x5e;
  157.   keymap[  kmapKEYPADENTER         ]=0x43;
  158.   keymap[  kmapCTRLPRTSC           ]=0x5d;
  159.   keymap[  kmapSHIFTPRTSC          ]=0x5d;
  160.   keymap[  kmapKEYPADSLASH         ]=0x5c;
  161. }
  162.  
  163. /* Zeros the keyboard array, and installs event handlers. */
  164. int keybdrv_init (void)
  165. {
  166.     return 0;
  167. }
  168.  
  169. /* Close the keyboard and tidy up */
  170. void keybdrv_close (void)
  171. {
  172. }
  173.