home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / M2V11-1.LHA / modula / amiga / LowLevel.def < prev    next >
Encoding:
Text File  |  1993-11-10  |  8.5 KB  |  265 lines

  1. DEFINITION FOR LIBRARY MODULE LowLevel ;
  2.  
  3. FROM SYSTEM    IMPORT ADDRESS, LONGSET ;
  4. FROM Utility    IMPORT TAG_USER, Tag, TagItemPtr ;
  5. FROM Timer    IMPORT EClockValPtr ;
  6. FROM Exec    IMPORT LibraryPtr ;
  7.  
  8. (*===========================================================================*)
  9.  
  10. (* structure for use with QueryKeys() *)
  11.  
  12. TYPE
  13.   KeyQueryPtr =  POINTER TO KeyQuery ;
  14.   KeyQuery = RECORD
  15.     kq_KeyCode : CARDINAL ;
  16.     kq_Pressed : CARDINAL ;
  17.   END ;
  18.  
  19. (*============================================================================*)
  20.  
  21. CONST
  22. (* bits in the return value of GetKey() *)
  23.   LLKB_LSHIFT    = 16 ;  LLKF_LSHIFT    = {LLKB_LSHIFT} ;
  24.   LLKB_RSHIFT    = 17 ;  LLKF_RSHIFT    = {LLKB_RSHIFT} ;
  25.   LLKB_CAPSLOCK    = 18 ;  LLKF_CAPSLOCK    = {LLKB_CAPSLOCK} ;
  26.   LLKB_CONTROL    = 19 ;  LLKF_CONTROL    = {LLKB_CONTROL} ;
  27.   LLKB_LALT    = 20 ;  LLKF_LALT    = {LLKB_LALT} ;
  28.   LLKB_RALT    = 21 ;  LLKF_RALT    = {LLKB_RALT} ;
  29.   LLKB_LAMIGA    = 22 ;  LLKF_LAMIGA    = {LLKB_LAMIGA} ;
  30.   LLKB_RAMIGA    = 23 ;  LLKF_RAMIGA    = {LLKB_RAMIGA} ;
  31.  
  32. (*============================================================================*)
  33.  
  34. (* Tags for SetJoyPortAttrs() *)
  35.   SJA_Dummy       = TAG_USER+0C00100H ;
  36.   SJA_Type       = SJA_Dummy+1 ; (* force type to mouse, joy, game cntrlr *)
  37.   SJA_Reinitialize = SJA_Dummy+2 ; (* free potgo bits, reset to autosense   *)
  38.  
  39. (* Controller types for SJA_Type tag *)
  40.   SJA_TYPE_AUTOSENSE = 0 ;
  41.   SJA_TYPE_GAMECTLR  = 1 ;
  42.   SJA_TYPE_MOUSE     = 2 ;
  43.   SJA_TYPE_JOYSTK    = 3 ;
  44.  
  45. (*============================================================================*)
  46.  
  47. (* ReadJoyPort() return value definitions *)
  48.  
  49. (* Port types *)
  50.   JP_TYPE_NOTAVAIL    = 0            ; (* port data unavailable    *)
  51.   JP_TYPE_GAMECTLR    = LONGINT({28})        ; (* port has game controller *)
  52.   JP_TYPE_MOUSE        = LONGINT({29})        ; (* port has mouse          *)
  53.   JP_TYPE_JOYSTK    = LONGINT({28,29})  ; (* port has joystick      *)
  54.   JP_TYPE_UNKNOWN      = LONGINT({30})        ; (* port has unknown device  *)
  55.   JP_TYPE_MASK        = LONGINT({28..31}) ; (* controller type      *)
  56.  
  57. (* Button types, valid for all types except JP_TYPE_NOTAVAIL *)
  58.   JPB_BUTTON_BLUE    = 23 ; (* Blue - Stop; Right Mouse               *)
  59.   JPB_BUTTON_RED     = 22 ; (* Red - Select; Left Mouse; Joystick Fire *)
  60.   JPB_BUTTON_YELLOW  = 21 ; (* Yellow - Repeat                   *)
  61.   JPB_BUTTON_GREEN   = 20 ; (* Green - Shuffle                   *)
  62.   JPB_BUTTON_FORWARD = 19 ; (* Charcoal - Forward               *)
  63.   JPB_BUTTON_REVERSE = 18 ; (* Charcoal - Reverse               *)
  64.   JPB_BUTTON_PLAY    = 17 ; (* Grey - Play/Pause; Middle Mouse           *)
  65.  
  66.   JPF_BUTTON_BLUE    = {JPB_BUTTON_BLUE} ;
  67.   JPF_BUTTON_RED     = {JPB_BUTTON_RED} ;
  68.   JPF_BUTTON_YELLOW  = {JPB_BUTTON_YELLOW} ;
  69.   JPF_BUTTON_GREEN   = {JPB_BUTTON_GREEN} ;
  70.   JPF_BUTTON_FORWARD = {JPB_BUTTON_FORWARD} ;
  71.   JPF_BUTTON_REVERSE = {JPB_BUTTON_REVERSE} ;
  72.   JPF_BUTTON_PLAY    = {JPB_BUTTON_PLAY} ;
  73.   JP_BUTTON_MASK     = JPF_BUTTON_BLUE+JPF_BUTTON_RED+JPF_BUTTON_YELLOW
  74.               +JPF_BUTTON_GREEN+JPF_BUTTON_FORWARD+JPF_BUTTON_REVERSE
  75.               +JPF_BUTTON_PLAY ;
  76.  
  77. (* Direction types, valid for JP_TYPE_GAMECTLR and JP_TYPE_JOYSTK *)
  78.   JPB_JOY_UP        = 3 ;
  79.   JPB_JOY_DOWN        = 2 ;
  80.   JPB_JOY_LEFT        = 1 ;
  81.   JPB_JOY_RIGHT        = 0 ;
  82.   JPF_JOY_UP        = {JPB_JOY_UP} ;
  83.   JPF_JOY_DOWN        = {JPB_JOY_DOWN} ;
  84.   JPF_JOY_LEFT        = {JPB_JOY_LEFT} ;
  85.   JPF_JOY_RIGHT        = {JPB_JOY_RIGHT} ;
  86.   JP_DIRECTION_MASK = JPF_JOY_UP+JPF_JOY_DOWN+JPF_JOY_LEFT+JPF_JOY_RIGHT ;
  87.  
  88. (* Mouse position reports, valid for JP_TYPE_MOUSE *)
  89.   JP_MHORZ_MASK    = {0..7} ;    (* horzizontal position *)
  90.   JP_MVERT_MASK    = {8..15} ;    (* vertical position    *)
  91.   JP_MOUSE_MASK    = JP_MHORZ_MASK+JP_MVERT_MASK ;
  92.  
  93. (* Obsolete ReadJoyPort() definitions,here for source code compatibility only *)
  94. (* Please do NOT use in new code.                          *)
  95.  
  96. CONST
  97.   JPB_BTN1  = JPB_BUTTON_BLUE ;
  98.   JPF_BTN1  = JPF_BUTTON_BLUE ;
  99.   JPB_BTN2  = JPB_BUTTON_RED ;
  100.   JPF_BTN2  = JPF_BUTTON_RED ;
  101.   JPB_BTN3  = JPB_BUTTON_YELLOW ;
  102.   JPF_BTN3  = JPF_BUTTON_YELLOW ;
  103.   JPB_BTN4  = JPB_BUTTON_GREEN ;
  104.   JPF_BTN4  = JPF_BUTTON_GREEN ;
  105.   JPB_BTN5  = JPB_BUTTON_FORWARD ;
  106.   JPF_BTN5  = JPF_BUTTON_FORWARD ;
  107.   JPB_BTN6  = JPB_BUTTON_REVERSE ;
  108.   JPF_BTN6  = JPF_BUTTON_REVERSE ;
  109.   JPB_BTN7  = JPB_BUTTON_PLAY ;
  110.   JPF_BTN7  = JPF_BUTTON_PLAY ;
  111.   JPB_UP    = JPB_JOY_UP ;
  112.   JPF_UP    = JPF_JOY_UP ;
  113.   JPB_DOWN  = JPB_JOY_DOWN ;
  114.   JPF_DOWN  = JPF_JOY_DOWN ;
  115.   JPB_LEFT  = JPB_JOY_LEFT ;
  116.   JPF_LEFT  = JPF_JOY_LEFT ;
  117.   JPB_RIGHT = JPB_JOY_RIGHT ;
  118.   JPF_RIGHT = JPF_JOY_RIGHT ;
  119.  
  120. (*============================================================================*)
  121.  
  122. (* Tags for SystemControl() *)
  123.   SCON_Dummy        = TAG_USER+000C00000H ;
  124.   SCON_TakeOverSys    = SCON_Dummy+0 ;
  125.   SCON_KillReq        = SCON_Dummy+1 ;
  126.   SCON_CDReboot        = SCON_Dummy+2 ;
  127.   SCON_StopInput    = SCON_Dummy+3 ;
  128.   SCON_AddCreateKeys    = SCON_Dummy+4 ;
  129.   SCON_RemCreateKeys    = SCON_Dummy+5 ;
  130.  
  131. (* Reboot control values for use with SCON_CDReboot tag *)
  132.   CDReboot_On        = 1 ;
  133.   CDReboot_Off        = 0 ;
  134.   CDReboot_Default    = 2 ;
  135.  
  136. (*============================================================================*)
  137.  
  138. (* Rawkey codes returned when using SCON_AddCreateKeys with SystemControl() *)
  139.  
  140. CONST
  141.   RAWKEY_PORT0_BUTTON_BLUE    = 072H ;
  142.   RAWKEY_PORT0_BUTTON_RED    = 078H ;
  143.   RAWKEY_PORT0_BUTTON_YELLOW    = 077H ;
  144.   RAWKEY_PORT0_BUTTON_GREEN    = 076H ;
  145.   RAWKEY_PORT0_BUTTON_FORWARD    = 075H ;
  146.   RAWKEY_PORT0_BUTTON_REVERSE    = 074H ;
  147.   RAWKEY_PORT0_BUTTON_PLAY    = 073H ;
  148.   RAWKEY_PORT0_JOY_UP        = 079H ;
  149.   RAWKEY_PORT0_JOY_DOWN        = 07AH ;
  150.   RAWKEY_PORT0_JOY_LEFT        = 07CH ;
  151.   RAWKEY_PORT0_JOY_RIGHT    = 07BH ;
  152.  
  153.   RAWKEY_PORT1_BUTTON_BLUE    = 0172H ;
  154.   RAWKEY_PORT1_BUTTON_RED    = 0178H ;
  155.   RAWKEY_PORT1_BUTTON_YELLOW    = 0177H ;
  156.   RAWKEY_PORT1_BUTTON_GREEN    = 0176H ;
  157.   RAWKEY_PORT1_BUTTON_FORWARD    = 0175H ;
  158.   RAWKEY_PORT1_BUTTON_REVERSE    = 0174H ;
  159.   RAWKEY_PORT1_BUTTON_PLAY    = 0173H ;
  160.   RAWKEY_PORT1_JOY_UP        = 0179H ;
  161.   RAWKEY_PORT1_JOY_DOWN        = 017AH ;
  162.   RAWKEY_PORT1_JOY_LEFT        = 017CH ;
  163.   RAWKEY_PORT1_JOY_RIGHT    = 017BH ;
  164.  
  165.   RAWKEY_PORT2_BUTTON_BLUE    = 0272H ;
  166.   RAWKEY_PORT2_BUTTON_RED    = 0278H ;
  167.   RAWKEY_PORT2_BUTTON_YELLOW    = 0277H ;
  168.   RAWKEY_PORT2_BUTTON_GREEN    = 0276H ;
  169.   RAWKEY_PORT2_BUTTON_FORWARD    = 0275H ;
  170.   RAWKEY_PORT2_BUTTON_REVERSE    = 0274H ;
  171.   RAWKEY_PORT2_BUTTON_PLAY    = 0273H ;
  172.   RAWKEY_PORT2_JOY_UP        = 0279H ;
  173.   RAWKEY_PORT2_JOY_DOWN        = 027AH ;
  174.   RAWKEY_PORT2_JOY_LEFT        = 027CH ;
  175.   RAWKEY_PORT2_JOY_RIGHT    = 027BH ;
  176.  
  177.   RAWKEY_PORT3_BUTTON_BLUE    = 0372H ;
  178.   RAWKEY_PORT3_BUTTON_RED    = 0378H ;
  179.   RAWKEY_PORT3_BUTTON_YELLOW    = 0377H ;
  180.   RAWKEY_PORT3_BUTTON_GREEN    = 0376H ;
  181.   RAWKEY_PORT3_BUTTON_FORWARD    = 0375H ;
  182.   RAWKEY_PORT3_BUTTON_REVERSE    = 0374H ;
  183.   RAWKEY_PORT3_BUTTON_PLAY    = 0373H ;
  184.   RAWKEY_PORT3_JOY_UP        = 0379H ;
  185.   RAWKEY_PORT3_JOY_DOWN        = 037AH ;
  186.   RAWKEY_PORT3_JOY_LEFT        = 037CH ;
  187.   RAWKEY_PORT3_JOY_RIGHT    = 037BH ;
  188.  
  189. (*============================================================================*)
  190.  
  191. (* Return values for GetLanguageSelection() *)
  192. CONST
  193.   LANG_UNKNOWN      =  0 ;
  194.   LANG_AMERICAN      =  1 ; (* American English *)
  195.   LANG_ENGLISH      =  2 ; (* British English  *)
  196.   LANG_GERMAN      =  3 ;
  197.   LANG_FRENCH      =  4 ;
  198.   LANG_SPANISH      =  5 ;
  199.   LANG_ITALIAN      =  6 ;
  200.   LANG_PORTUGUESE =  7 ;
  201.   LANG_DANISH      =  8 ;
  202.   LANG_DUTCH      =  9 ;
  203.   LANG_NORWEGIAN  = 10 ;
  204.   LANG_FINNISH      = 11 ;
  205.   LANG_SWEDISH      = 12 ;
  206.   LANG_JAPANESE      = 13 ;
  207.   LANG_CHINESE      = 14 ;
  208.   LANG_ARABIC      = 15 ;
  209.   LANG_GREEK      = 16 ;
  210.   LANG_HEBREW      = 17 ;
  211.   LANG_KOREAN      = 18 ;
  212.  
  213. (*============================================================================*)
  214.  
  215. VAR
  216.   LowLevelBase : LibraryPtr ;
  217.  
  218. (*--- functions in V40 or higher (Release 3.1) ---*)
  219.  
  220. (* CONTROLLER HANDLING *)
  221.  
  222. PROCEDURE ReadJoyPort( port : LONGINT ) : LONGINT ;
  223.  
  224. (* LANGUAGE HANDLING *)
  225.  
  226. PROCEDURE GetLanguageSelection( ) : SHORTINT ;
  227.  
  228. (* KEYBOARD HANDLING *)
  229.  
  230. PROCEDURE GetKey( ) : LONGSET ;
  231. PROCEDURE QueryKeys( queryArray : KeyQueryPtr ; arraySize : LONGINT ) ;
  232. PROCEDURE AddKBInt( intRoutine , intData : ADDRESS ) : ADDRESS ;
  233. PROCEDURE RemKBInt( intHandle : ADDRESS  );
  234.  
  235. (* SYSTEM HANDLING *)
  236.  
  237. PROCEDURE SystemControlA( tagList : TagItemPtr ) : LONGINT ;
  238. PROCEDURE SystemControl( firstTag : Tag ; .. ) : LONGINT ;
  239.  
  240. (* TIMER HANDLING *)
  241.  
  242. PROCEDURE AddTimerInt( intRoutine : ADDRESS ; intData : ADDRESS ) : ADDRESS ;
  243. PROCEDURE RemTimerInt( intHandle : ADDRESS ) ;
  244. PROCEDURE StopTimerInt( intHandle : ADDRESS ) ;
  245. PROCEDURE StartTimerInt( intHandle : ADDRESS ;
  246.              timeInterval : LONGINT ;
  247.              continuous : LONGINT );
  248.  
  249. PROCEDURE ElapsedTime( context : EClockValPtr ) : LONGINT ;
  250.  
  251. (* VBLANK HANDLING *)
  252.  
  253. PROCEDURE AddVBlankInt( intRoutine, intData : ADDRESS ) : ADDRESS ;
  254. PROCEDURE RemVBlankInt( intHandle : ADDRESS ) ;
  255.  
  256. (* MORE CONTROLLER HANDLING *)
  257.  
  258. PROCEDURE SetJoyPortAttrsA( portNumber : LONGINT ;
  259.                 tagList : TagItemPtr ) : BOOLEAN ;
  260.  
  261. PROCEDURE SetJoyPortAttrs( portNumber : LONGINT ;
  262.                firstTag : Tag ; .. ) : BOOLEAN ;
  263.  
  264. END LowLevel.
  265.