Annotation of hatari/src/includes/ikbd.h, revision 1.1.1.1

1.1       root        1: /*
                      2:   Hatari
                      3: */
                      4: 
                      5: // Keyboard Command
                      6: typedef struct {
                      7:   unsigned char Command;
                      8:   unsigned char NumParameters;
                      9:   void *pCallFunction;
                     10: } IKBD_COMMAND_PARAMS;
                     11: 
                     12: // Keyboard processor details
                     13: typedef struct {
                     14:   int X,Y;                      // Relative position of mouse
                     15:   int PrevX,PrevY;              // Previous position
                     16: } REL_MOUSE;
                     17: 
                     18: typedef struct {
                     19:   int X,Y;                      // Position of mouse
                     20:   int MaxX,MaxY;                // Max limits of mouse
                     21:   unsigned char PrevReadAbsMouseButtons;    // Previous button mask for 'IKBD_Cmd_ReadAbsMousePos'
                     22: } ABS_MOUSE;
                     23: 
                     24: typedef struct {
                     25:   int DeltaX,DeltaY;              // XY mouse position delta after scale according to resoution
                     26:   int XScale,YScale;              // Scale of mouse
                     27:   int XThreshold,YThreshold;      // Threshold
                     28:   unsigned char KeyCodeDeltaX,KeyCodeDeltaY;  // Delta X,Y for mouse keycode mode
                     29:   int YAxis;                      // Y-Axis direction
                     30:   unsigned char Action;           // Bit 0-Report abs position of press, Bit 1-Report abs on release
                     31: } MOUSE;
                     32: 
                     33: typedef struct {
                     34:   unsigned char JoyData[2];       // Joystick details
                     35:   unsigned char PrevJoyData[2];   // Previous joystick details, used to check for 'IKBD_SelAutoJoysticks'
                     36: } JOY;
                     37: 
                     38: typedef struct {
                     39:   REL_MOUSE  Rel;
                     40:   ABS_MOUSE  Abs;
                     41:   MOUSE    Mouse;
                     42:   JOY      Joy;
                     43:   int MouseMode;                  // AUTOMODE_xxxx
                     44:   int JoystickMode;               // AUTOMODE_xxxx
                     45:   BOOL bReset;                    // Set to TRUE is keyboard 'RESET' and now active
                     46: } KEYBOARD_PROCESSOR;
                     47: 
                     48: // Keyboard state
                     49: #define SIZE_KEYBOARD_BUFFER    1024            // Allow this many bytes to be stored in buffer(waiting to send to ACIA)
                     50: #define KEYBOARD_BUFFER_MASK    (SIZE_KEYBOARD_BUFFER-1)
                     51: #define SIZE_KEYBOARDINPUT_BUFFER  8
                     52: typedef struct {
                     53:   unsigned char KeyStates[256];                 // State of PC's keys, TRUE is down
                     54:   unsigned char Buffer[SIZE_KEYBOARD_BUFFER];   // Keyboard buffer
                     55:   int BufferHead,BufferTail;                    // Pointers into above buffer
                     56:   unsigned char InputBuffer[SIZE_KEYBOARDINPUT_BUFFER];  // Buffer for data send from CPU to keyboard processor(commands)
                     57:   int nBytesInInputBuffer;                      // Number of command bytes in above buffer
                     58: 
                     59:   int bLButtonDown,bRButtonDown;                // Mouse states in emulation system, BUTTON_xxxx
                     60:   int bOldLButtonDown,bOldRButtonDown;
                     61:   int LButtonDblClk,RButtonDblClk;
                     62:   int LButtonHistory,RButtonHistory;
                     63: } KEYBOARD;
                     64: 
                     65: // Button states, a bit mask so can mimick joystick/right mouse button duplication
                     66: #define BUTTON_NULL      0x00    // Button states, so can OR together mouse/joystick buttons
                     67: #define BUTTON_MOUSE    0x01
                     68: #define BUTTON_JOYSTICK    0x02
                     69: 
                     70: // Mouse/Joystick modes
                     71: #define AUTOMODE_OFF      0
                     72: #define AUTOMODE_MOUSEREL    1
                     73: #define AUTOMODE_MOUSEABS    2
                     74: #define AUTOMODE_MOUSECURSOR  3
                     75: #define AUTOMODE_JOYSTICK    4
                     76: 
                     77: // 0xfffc00(read status from ACIA)
                     78: #define ACIA_STATUS_REGISTER__RX_BUFFER_FULL  0x01
                     79: #define ACIA_STATUS_REGISTER__TX_BUFFER_EMPTY  0x02
                     80: #define ACIA_STATUS_REGISTER__OVERRUN_ERROR    0x40
                     81: #define ACIA_STATUS_REGISTER__INTERRUPT_REQUEST  0x80
                     82: 
                     83: extern unsigned char ACIAControlRegister;
                     84: extern unsigned char ACIAStatusRegister;
                     85: extern unsigned char ACIAByte;
                     86: 
                     87: extern KEYBOARD_PROCESSOR KeyboardProcessor;
                     88: extern KEYBOARD Keyboard;
                     89: 
                     90: extern void IKBD_Reset(BOOL bCold);
                     91: extern void IKBD_MemorySnapShot_Capture(BOOL bSave);
                     92: extern void IKBD_SendAutoKeyboardCommands();
                     93: extern void IKBD_InterruptHandler_ResetTimer(void);
                     94: 
                     95: extern void IKBD_Cmd_NullFunction(void);
                     96: extern void IKBD_Cmd_Reset(void);
                     97: extern void IKBD_Cmd_MouseAction(void);
                     98: extern void IKBD_Cmd_RelMouseMode(void);
                     99: extern void IKBD_Cmd_AbsMouseMode(void);
                    100: extern void IKBD_Cmd_MouseCursorKeycodes(void);
                    101: extern void IKBD_Cmd_SetMouseThreshold(void);
                    102: extern void IKBD_Cmd_SetMouseScale(void);
                    103: extern void IKBD_Cmd_ReadAbsMousePos(void);
                    104: extern void IKBD_Cmd_SetInternalMousePos(void);
                    105: extern void IKBD_Cmd_SetYAxisDown(void);
                    106: extern void IKBD_Cmd_SetYAxisUp(void);
                    107: extern void IKBD_Cmd_StartKeyboardTransfer(void);
                    108: extern void IKBD_Cmd_TurnMouseOff(void);
                    109: extern void IKBD_Cmd_StopKeyboardTransfer(void);
                    110: extern void IKBD_Cmd_ReturnJoystickAuto(void);
                    111: extern void IKBD_Cmd_StopJoystick(void);
                    112: extern void IKBD_Cmd_ReturnJoystick(void);
                    113: extern void IKBD_Cmd_SetJoystickDuration(void);
                    114: extern void IKBD_Cmd_SetJoystickFireDuration(void);
                    115: extern void IKBD_Cmd_SetCursorForJoystick(void);
                    116: extern void IKBD_Cmd_DisableJoysticks(void);
                    117: extern void IKBD_Cmd_SetClock(void);
                    118: extern void IKBD_Cmd_ReadClock(void);
                    119: extern void IKBD_Cmd_LoadMemory(void);
                    120: extern void IKBD_Cmd_ReadMemory(void);
                    121: extern void IKBD_Cmd_Execute(void);
                    122: 
                    123: extern void IKBD_SendByteToKeyboardProcessor(unsigned short bl);
                    124: extern unsigned short IKBD_GetByteFromACIA(void);
                    125: extern void IKBD_InterruptHandler_ACIA(void);
                    126: extern void IKBD_SendByteToACIA(void);
                    127: extern void IKBD_AddKeyToKeyboardBuffer(unsigned char Data);
                    128: extern void IKBD_PressSTKey(unsigned char ScanCode,BOOL bPress);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.