home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 325.lha / keys / keys.i < prev    next >
Text File  |  1989-12-26  |  11KB  |  519 lines

  1. ; Please forgive me for the presence of include files here. I started just
  2. ; to copy intuition.i because MetaComco's assembler choked on it, but then
  3. ; I got carried away. I developed this on a 512k floppy system and I got
  4. ; impatient...
  5.  
  6. EXEC_TYPES_I SET 1
  7.  
  8. STRUCTURE   MACRO
  9. \1          SET     0 
  10. SOFFSET     SET     \2
  11.             ENDM
  12. SHORT        MACRO
  13. \1        EQU        SOFFSET
  14. SOFFSET        SET        SOFFSET+1
  15.         ENDM
  16. BYTE        MACRO
  17. \1          EQU     SOFFSET
  18. SOFFSET     SET     SOFFSET+1
  19.             ENDM
  20. UBYTE       MACRO
  21. \1          EQU     SOFFSET
  22. SOFFSET     SET     SOFFSET+1
  23.             ENDM
  24. WORD        MACRO
  25. \1          EQU     SOFFSET
  26. SOFFSET     SET     SOFFSET+2
  27.             ENDM
  28. UWORD       MACRO
  29. \1          EQU     SOFFSET
  30. SOFFSET     SET     SOFFSET+2
  31.             ENDM
  32. LONG        MACRO
  33. \1          EQU     SOFFSET
  34. SOFFSET     SET     SOFFSET+4
  35.             ENDM
  36. ULONG       MACRO
  37. \1          EQU     SOFFSET
  38. SOFFSET     SET     SOFFSET+4
  39.             ENDM
  40. APTR        MACRO
  41. \1          EQU     SOFFSET
  42. SOFFSET     SET     SOFFSET+4
  43.             ENDM
  44. STRUCT      MACRO
  45. \1          EQU     SOFFSET
  46. SOFFSET     SET     SOFFSET+\2
  47.             ENDM
  48. BPTR        MACRO                      
  49. \1        EQU        SOFFSET
  50. SOFFSET        SET        SOFFSET+4
  51.         ENDM
  52. BSTR        MACRO
  53. \1        EQU        SOFFSET
  54. SOFFSET     SET        SOFFSET+4
  55.         ENDM
  56. LABEL       MACRO
  57. \1          EQU     SOFFSET
  58.             ENDM
  59.  
  60. BITDEF      MACRO   * prefix,&name,&bitnum
  61.             BITDEF0 \1,\2,B_,\3
  62. \@BITDEF    SET     1<<\3
  63.             BITDEF0 \1,\2,F_,\@BITDEF
  64.             ENDM
  65.  
  66. BITDEF0     MACRO   * prefix,&name,&type,&value
  67. \1\3\2      EQU     \4
  68.             ENDM
  69.  
  70.  
  71. MODE_OLDFILE         EQU   1005   
  72. MODE_NEWFILE         EQU   1006   
  73.  
  74.     BITDEF  MEM,PUBLIC,0
  75.     BITDEF  MEM,CHIP,1
  76.     BITDEF  MEM,FAST,2
  77.     BITDEF  MEM,CLEAR,16
  78.  
  79. IECLASS_RAWKEY          EQU   $01
  80. IEQUALIFIER_LCOMMAND    EQU   $0040
  81. IEQUALIFIERB_LCOMMAND   EQU   6
  82. HELPKEY            EQU   $5f
  83. BACKSPACE        EQU   $8
  84. RETURN            EQU   $0d
  85.  
  86.  
  87.  STRUCTURE  InputEvent,0
  88.    APTR    ie_NextEvent
  89.    UBYTE   ie_Class
  90.    UBYTE   ie_SubClass
  91.    UWORD   ie_Code
  92.    UWORD   ie_Qualifier
  93.    LABEL   ie_EventAddress
  94.    WORD    ie_X
  95.    WORD    ie_Y
  96.    STRUCT  ie_TimeStamp,8
  97.    LABEL   ie_SIZEOF
  98.  
  99.  STRUCTURE  LN,0
  100.     APTR    LN_SUCC
  101.     APTR    LN_PRED
  102.     UBYTE   LN_TYPE
  103.     BYTE    LN_PRI
  104.     APTR    LN_NAME
  105.     LABEL   LN_SIZE
  106.  
  107.  STRUCTURE  IS,LN_SIZE
  108.     APTR    IS_DATA
  109.     APTR    IS_CODE
  110.     LABEL   IS_SIZE
  111.  
  112.  STRUCTURE  MN,LN_SIZE
  113.     APTR    MN_REPLYPORT
  114.     UWORD   MN_LENGTH
  115.     LABEL   MN_SIZE
  116.  
  117.  STRUCTURE  IO,MN_SIZE
  118.     APTR    IO_DEVICE
  119.     APTR    IO_UNIT
  120.     UWORD   IO_COMMAND
  121.     UBYTE   IO_FLAGS
  122.     BYTE    IO_ERROR
  123.     LABEL   IO_SIZE
  124.     ULONG   IO_ACTUAL
  125.     ULONG   IO_LENGTH
  126.     APTR    IO_DATA
  127.     ULONG   IO_OFFSET
  128.     LABEL   IOSTD_SIZE
  129.     BITDEF  IO,QUICK,0
  130. DEVINIT     MACRO
  131.          IFC       '\1',''
  132. CMD_COUNT   SET     CMD_NONSTD
  133.          ENDC
  134.          IFNC    '\1',''
  135. CMD_COUNT   SET       \1
  136.          ENDC
  137.             ENDM
  138.  
  139. DEVCMD      MACRO   * cmdname
  140. \1          EQU      CMD_COUNT
  141. CMD_COUNT   SET       CMD_COUNT+1
  142.         ENDM
  143.  
  144.        DEVINIT 0
  145.        DEVCMD  CMD_INVALID
  146.        DEVCMD  CMD_RESET
  147.        DEVCMD  CMD_READ
  148.        DEVCMD  CMD_WRITE
  149.        DEVCMD  CMD_UPDATE
  150.        DEVCMD  CMD_CLEAR
  151.        DEVCMD  CMD_STOP
  152.        DEVCMD  CMD_START
  153.        DEVCMD  CMD_FLUSH
  154.        DEVCMD  CMD_NONSTD
  155.  
  156.    DEVINIT
  157.    DEVCMD       IND_ADDHANDLER
  158.    DEVCMD       IND_REMHANDLER
  159.    DEVCMD       IND_WRITEEVENT
  160.    DEVCMD       IND_SETTHRESH
  161.    DEVCMD       IND_SETPERIOD
  162.    DEVCMD       IND_SETMPORT
  163.    DEVCMD       IND_SETMTYPE
  164.    DEVCMD       IND_SETMTRIG
  165.  
  166.  STRUCTURE  LH,0
  167.     APTR    LH_HEAD
  168.     APTR    LH_TAIL
  169.     APTR    LH_TAILPRED
  170.     UBYTE   LH_TYPE
  171.     UBYTE   LH_pad
  172.     LABEL   LH_SIZE
  173.  
  174.  STRUCTURE  MP,LN_SIZE
  175.     UBYTE   MP_FLAGS
  176.     UBYTE   MP_SIGBIT
  177.     APTR    MP_SIGTASK
  178.     STRUCT  MP_MSGLIST,LH_SIZE
  179.     LABEL   MP_SIZE
  180.  
  181.  STRUCTURE LIB,LN_SIZE
  182.     UBYTE   LIB_FLAGS
  183.     UBYTE   LIB_pad
  184.     UWORD   LIB_NEGSIZE
  185.     UWORD   LIB_POSSIZE
  186.     UWORD   LIB_VERSION
  187.     UWORD   LIB_REVISION
  188.     APTR    LIB_IDSTRING
  189.     ULONG   LIB_SUM
  190.     UWORD   LIB_OPENCNT
  191.     LABEL   LIB_SIZE
  192.  
  193.  
  194. WINDOWSIZING   equ $0001
  195. WINDOWDRAG     equ $0002
  196. WINDOWDEPTH    equ $0004
  197. WINDOWCLOSE    equ $0008
  198. SMART_REFRESH  equ $0000
  199. ACTIVATE equ $1000
  200.  
  201.  
  202. ; === NewWindow ==
  203.  STRUCTURE NewWindow,0
  204.     WORD nw_LeftEdge
  205.     WORD nw_TopEdge
  206.     WORD nw_Width
  207.     WORD nw_Height
  208.     BYTE nw_DetailPen
  209.     BYTE nw_BlockPen
  210.     ULONG nw_IDCMPFlags
  211.     LONG nw_Flags
  212.     APTR nw_FirstGadget
  213.     APTR nw_CheckMark
  214.     APTR nw_Title
  215.     APTR nw_Screen
  216.     APTR nw_BitMap
  217.     WORD nw_MinWidth
  218.     WORD nw_MinHeight
  219.     WORD nw_MaxWidth
  220.     WORD nw_MaxHeight
  221.     WORD nw_Type
  222.     LABEL nw_SIZE
  223.  
  224.    STRUCTURE View,0
  225.    LONG    v_ViewPort
  226.    LONG    v_LOFCprList
  227.    LONG    v_SHFCprList
  228.    WORD    v_DyOffset
  229.    WORD    v_DxOffset
  230.    WORD    v_Modes
  231.    LABEL   v_SIZEOF
  232.  
  233.  STRUCTURE IntuitionBase,0
  234.     STRUCT    ib_LibNode,LIB_SIZE
  235.     STRUCT    ib_ViewLord,v_SIZEOF
  236.     APTR    ib_ActiveWindow
  237.     APTR    ib_ActiveScreen
  238.     APTR    ib_FirstScreen
  239.     LABEL    ib_SIZEOF
  240.  
  241. ; === Screen ===
  242. ; Be aware that this structure is truncated!
  243.  STRUCTURE Screen,0
  244.     APTR sc_NextScreen
  245.     APTR sc_FirstWindow
  246.     WORD sc_LeftEdge
  247.     WORD sc_TopEdge
  248.     WORD sc_Width
  249.     WORD sc_Height
  250.     WORD sc_MouseY
  251.     WORD sc_MouseX
  252.     WORD sc_Flags
  253.     LABEL sc_SIZEOF
  254.  
  255. WBENCHSCREEN   equ   $0001
  256. CUSTOMSCREEN   equ   $000F
  257.  
  258. ; === Window ==
  259.  STRUCTURE Window,0
  260.     APTR wd_NextWindow
  261.     WORD wd_LeftEdge
  262.     WORD wd_TopEdge
  263.     WORD wd_Width
  264.     WORD wd_Height
  265.     WORD wd_MouseY
  266.     WORD wd_MouseX
  267.     WORD wd_MinWidth
  268.     WORD wd_MinHeight
  269.     WORD wd_MaxWidth
  270.     WORD wd_MaxHeight
  271.     LONG wd_Flags
  272.     APTR wd_MenuStrip
  273.     APTR wd_Title
  274.     APTR wd_FirstRequest
  275.     APTR wd_DMRequest
  276.     WORD wd_ReqCount
  277.     APTR wd_WScreen
  278.     APTR wd_RPort
  279.     BYTE wd_BorderLeft
  280.     BYTE wd_BorderTop
  281.     BYTE wd_BorderRight
  282.     BYTE wd_BorderBottom
  283.     APTR wd_BorderRPort
  284.     APTR wd_FirstGadget
  285.     APTR wd_Parent
  286.     APTR wd_Descendant
  287.     APTR wd_Pointer
  288.     BYTE wd_PtrHeight
  289.     BYTE wd_PtrWidth
  290.     BYTE wd_XOffset
  291.     BYTE wd_YOffset
  292.     ULONG wd_IDCMPFlags
  293.     APTR wd_UserPort
  294.     APTR wd_WindowPort
  295.     APTR wd_MessageKey
  296.     BYTE wd_DetailPen
  297.     BYTE wd_BlockPen
  298.     APTR wd_CheckMark
  299.     APTR wd_ScreenTitle
  300.     SHORT wd_GZZMouseX
  301.     SHORT wd_GZZMouseY
  302.     SHORT wd_GZZWidth
  303.     SHORT wd_GZZHeight
  304.     APTR wd_ExtData
  305.     APTR wd_UserData
  306.     APTR wd_WLayer
  307.     LABEL wd_Size
  308.  
  309.  STRUCTURE  IV,0
  310.     APTR    IV_DATA
  311.     APTR    IV_CODE
  312.     APTR    IV_NODE
  313.     LABEL   IV_SIZE
  314.     BITDEF  S,SAR,15
  315.     BITDEF  S,TQE,14
  316.     BITDEF  S,SINT,13
  317.  STRUCTURE  SH,LH_SIZE
  318.     UWORD   SH_PAD
  319.     LABEL   SH_SIZE
  320.  
  321. ; Note that the following structure is truncated!
  322.  
  323.  STRUCTURE  ExecBase,LIB_SIZE
  324.   UWORD SoftVer
  325.   WORD  LowMemChkSum
  326.   ULONG ChkBase
  327.   APTR  ColdCapture
  328.   APTR  CoolCapture
  329.   APTR  WarmCapture
  330.   APTR  SysStkUpper
  331.   APTR  SysStkLower
  332.   ULONG MaxLocMem
  333.   APTR DebugEntry
  334.   APTR DebugData
  335.   APTR AlertData
  336.   APTR RsvdExt
  337.   WORD  ChkSum
  338.   LABEL  IntVects
  339.   STRUCT   IVTBE,IV_SIZE
  340.   STRUCT   IVDSKBLK,IV_SIZE
  341.   STRUCT   IVSOFTINT,IV_SIZE
  342.   STRUCT   IVPORTS,IV_SIZE
  343.   STRUCT   IVCOPER,IV_SIZE
  344.   STRUCT   IVVERTB,IV_SIZE
  345.   STRUCT   IVBLIT,IV_SIZE
  346.   STRUCT   IVAUD0,IV_SIZE
  347.   STRUCT   IVAUD1,IV_SIZE
  348.   STRUCT   IVAUD2,IV_SIZE
  349.   STRUCT   IVAUD3,IV_SIZE
  350.   STRUCT   IVRBF,IV_SIZE
  351.   STRUCT   IVDSKSYNC,IV_SIZE
  352.   STRUCT   IVEXTER,IV_SIZE
  353.   STRUCT   IVINTEN,IV_SIZE
  354.   STRUCT   IVNMI,IV_SIZE
  355.   APTR  ThisTask
  356.   LABEL SYSBASESIZE
  357.  
  358.  STRUCTURE  TC,LN_SIZE
  359.     UBYTE   TC_FLAGS
  360.     UBYTE   TC_STATE
  361.     BYTE    TC_IDNESTCNT
  362.     BYTE    TC_TDNESTCNT
  363.     ULONG   TC_SIGALLOC
  364.     ULONG   TC_SIGWAIT
  365.     ULONG   TC_SIGRECVD
  366.     ULONG   TC_SIGEXCEPT
  367.     UWORD   TC_TRAPALLOC
  368.     UWORD   TC_TRAPABLE
  369.     APTR    TC_EXCEPTDATA
  370.     APTR    TC_EXCEPTCODE
  371.     APTR    TC_TRAPDATA
  372.     APTR    TC_TRAPCODE
  373.     APTR    TC_SPREG
  374.     APTR    TC_SPLOWER
  375.     APTR    TC_SPUPPER
  376.     APTR    TC_SWITCH
  377.     APTR    TC_LAUNCH
  378.     STRUCT  TC_MEMENTRY,LH_SIZE
  379.     APTR    TC_Userdata
  380.     LABEL   TC_SIZE
  381.  
  382.  STRUCTURE CommandLineInterface,0
  383.     LONG   cli_Result2         
  384.     BSTR   cli_SetName         
  385.     BPTR   cli_CommandDir      
  386.     LONG   cli_ReturnCode      
  387.     BSTR   cli_CommandName     
  388.     LONG   cli_FailLevel       
  389.     BSTR   cli_Prompt          
  390.     BPTR   cli_StandardInput   
  391.     BPTR   cli_CurrentInput    
  392.     BSTR   cli_CommandFile     
  393.     LONG   cli_Interactive     
  394.     LONG   cli_Background      
  395.     BPTR   cli_CurrentOutput   
  396.     LONG   cli_DefaultStack    
  397.     BPTR   cli_StandardOutput  
  398.     BPTR   cli_Module          
  399.     LABEL  cli_SIZEOF          
  400.  
  401.  STRUCTURE Process,0
  402.     STRUCT  pr_Task,TC_SIZE
  403.     STRUCT  pr_MsgPort,MP_SIZE  
  404.     WORD    pr_Pad              
  405.     BPTR    pr_SegList          
  406.     LONG    pr_StackSize        
  407.     APTR    pr_GlobVec          
  408.     LONG    pr_TaskNum          
  409.     BPTR    pr_StackBase        
  410.     LONG    pr_Result2          
  411.     BPTR    pr_CurrentDir       
  412.     BPTR    pr_CIS              
  413.     BPTR    pr_COS              
  414.     APTR    pr_ConsoleTask      
  415.     APTR    pr_FileSystemTask   
  416.     BPTR    pr_CLI              
  417.     APTR    pr_ReturnAddr       
  418.     APTR    pr_PktWait          
  419.     APTR    pr_WindowPtr        
  420.     LABEL   pr_SIZEOF           
  421.  
  422. NEWLIST      MACRO   * list
  423.           MOVE.L  \1,(\1)
  424.           ADDQ.L  #LH_TAIL,(\1)
  425.           CLR.L   LH_TAIL(\1)
  426.           MOVE.L  \1,(LH_TAIL+LN_PRED)(\1)
  427.           ENDM
  428.  
  429. NT_MSGPORT      EQU     4
  430. NT_MESSAGE      EQU     5
  431. PA_SIGNAL       EQU  0
  432.  
  433. DosF    MACRO
  434.         move.l  _DOSBase,a6
  435.         jsr     _LVO\1(A6)
  436.         ENDM
  437.  
  438. ExecF    MACRO                   Same as CALL except, call exec
  439.         move.L  _SysBase,A6    lib instead of dos lib....
  440.         jsr     _LVO\1(A6)
  441.         ENDM
  442.  
  443. LibF    macro
  444.     jsr    _LVO\1(a6)
  445.     endm
  446.  
  447. IntF    macro
  448.     move.l    _IntuitionBase,a6
  449.     jsr    _LVO\1(A6)
  450.     endm
  451.  
  452.  
  453. Ucase    macro
  454.     andi.b    #%01011111,\1
  455.     endm
  456.  
  457. _LVOOpenDevice                    equ    -444
  458. _LVOOpenLibrary                   equ    -552
  459. _LVOCloseDevice                   equ    -450
  460. _LVODoIO                          equ    -456
  461. _LVOSignal                        equ    -324
  462. _LVOFindTask                      equ    -294
  463. _LVOAllocSignal                   equ    -330
  464. _LVOWait                          equ    -318
  465. _LVOOpenWindow                    equ    -204
  466. _LVOCloseWindow                   equ    -72
  467. _LVOAllocMem                      equ    -198
  468. _LVOUnLoadSeg                     equ    -156
  469. _LVOCreateProc                    equ    -138
  470. _LVOCloseLibrary                  equ    -414
  471. _LVOFreeSignal                    equ    -336
  472. _LVOFreeMem                       equ    -210
  473. _LVOSetWindowTitles               equ    -276
  474. _LVOPermit                        equ    -138
  475. _LVOForbid                        equ    -132
  476. _LVOSizeWindow                    equ    -288
  477. _LVOCurrentDir                    equ    -126
  478.  
  479. DOCMD        equ    1
  480. DOMAC        equ    2
  481. NOMEM        equ    101
  482. NOSIG        equ    102
  483. NOINPUT        equ    103
  484. NOCONSOLE    equ    104
  485.  
  486.  
  487. ClearWindow    macro
  488.     lea    ClrWindowStr(pc),a0
  489.     bsr    ConWriteLine
  490.     endm
  491.  
  492. UhOh    macro    
  493.     lea    \1(pc),a0
  494.     bra    ProcessError
  495.     endm
  496.  
  497.  
  498.  STRUCTURE KeyRec,0
  499.      APTR    kr_Next            ; Next record
  500.     APTR    kr_Prev            ; Previous record
  501.     UWORD    kr_Qual            ; Key qualifier
  502.     UWORD    kr_Key            ; Key 
  503.     STRUCT    kr_MacStr,80        ; Definiton of key
  504.     STRUCT  kr_KeyStr,20        ; Key description.
  505.     LABEL    kr_SIZEOF
  506.  
  507. Debug    set    0
  508.  
  509. ;------ Bit positions for key qualifiers
  510. L_SHIFT        equ    0
  511. R_SHIFT        equ    1
  512. CLOCK        equ    2
  513. CONTROL        equ    3
  514. L_ALT        equ    4
  515. R_ALT        equ    5
  516. L_AMIGA        equ    6
  517. R_AMIGA        equ    7
  518. KPAD        equ    8
  519.