callback.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Wengier: KEYBOARD support
  2. #ifndef VDOS_CALLBACK_H
  3. #define VDOS_CALLBACK_H
  4. #include "mem.h"
  5. typedef Bitu (*CallBack_Handler)(void);
  6. extern CallBack_Handler CallBack_Handlers[];
  7. enum {CB_RETF, CB_IRET, CB_IRET_STI, CB_IRET_EOI_PIC1,
  8. CB_IRQ0, CB_IRQ1, CB_IRQ1_BREAK, /*CB_IRQ9,*/ CB_IRQ12,
  9. CB_INT29, CB_INT16, CB_HOOKABLE};
  10. #define CB_MAX 128
  11. #define CB_SIZE 32
  12. #define CB_SEG 0xF000
  13. #define CB_SOFFSET 0x1000
  14. enum {CBRET_NONE=0, CBRET_STOP=1};
  15. static RealPt CALLBACK_RealPointer(Bitu callback)
  16. {
  17. return SegOff2dWord(CB_SEG, (Bit16u)(CB_SOFFSET+callback*CB_SIZE));
  18. }
  19. static PhysPt CALLBACK_PhysPointer(Bitu callback)
  20. {
  21. return SegOff2Ptr(CB_SEG, (Bit16u)(CB_SOFFSET+callback*CB_SIZE));
  22. }
  23. static PhysPt CALLBACK_GetBase(void)
  24. {
  25. return (CB_SEG<<4)+CB_SOFFSET;
  26. }
  27. Bitu CALLBACK_Allocate();
  28. void CALLBACK_Idle(void);
  29. void CALLBACK_RunRealInt(Bit8u intnum);
  30. void CALLBACK_Install(Bit8u intNo, CallBack_Handler handler, Bitu type);
  31. void CALLBACK_Setup(Bitu callback,CallBack_Handler handler,Bitu type);
  32. void CALLBACK_Setup(Bitu callback,CallBack_Handler handler,Bitu type,PhysPt addr);
  33. void CALLBACK_SetupExtra(Bitu callback, Bitu type, PhysPt physAddress);
  34. void CALLBACK_SCF(bool val);
  35. void CALLBACK_SZF(bool val);
  36. #endif