Annotation of hatari/src/includes/ikbd.h, revision 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.