home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
325.lha
/
keys
/
keys.i
< prev
next >
Wrap
Text File
|
1989-12-26
|
11KB
|
519 lines
; Please forgive me for the presence of include files here. I started just
; to copy intuition.i because MetaComco's assembler choked on it, but then
; I got carried away. I developed this on a 512k floppy system and I got
; impatient...
EXEC_TYPES_I SET 1
STRUCTURE MACRO
\1 SET 0
SOFFSET SET \2
ENDM
SHORT MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+1
ENDM
BYTE MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+1
ENDM
UBYTE MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+1
ENDM
WORD MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+2
ENDM
UWORD MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+2
ENDM
LONG MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+4
ENDM
ULONG MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+4
ENDM
APTR MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+4
ENDM
STRUCT MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+\2
ENDM
BPTR MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+4
ENDM
BSTR MACRO
\1 EQU SOFFSET
SOFFSET SET SOFFSET+4
ENDM
LABEL MACRO
\1 EQU SOFFSET
ENDM
BITDEF MACRO * prefix,&name,&bitnum
BITDEF0 \1,\2,B_,\3
\@BITDEF SET 1<<\3
BITDEF0 \1,\2,F_,\@BITDEF
ENDM
BITDEF0 MACRO * prefix,&name,&type,&value
\1\3\2 EQU \4
ENDM
MODE_OLDFILE EQU 1005
MODE_NEWFILE EQU 1006
BITDEF MEM,PUBLIC,0
BITDEF MEM,CHIP,1
BITDEF MEM,FAST,2
BITDEF MEM,CLEAR,16
IECLASS_RAWKEY EQU $01
IEQUALIFIER_LCOMMAND EQU $0040
IEQUALIFIERB_LCOMMAND EQU 6
HELPKEY EQU $5f
BACKSPACE EQU $8
RETURN EQU $0d
STRUCTURE InputEvent,0
APTR ie_NextEvent
UBYTE ie_Class
UBYTE ie_SubClass
UWORD ie_Code
UWORD ie_Qualifier
LABEL ie_EventAddress
WORD ie_X
WORD ie_Y
STRUCT ie_TimeStamp,8
LABEL ie_SIZEOF
STRUCTURE LN,0
APTR LN_SUCC
APTR LN_PRED
UBYTE LN_TYPE
BYTE LN_PRI
APTR LN_NAME
LABEL LN_SIZE
STRUCTURE IS,LN_SIZE
APTR IS_DATA
APTR IS_CODE
LABEL IS_SIZE
STRUCTURE MN,LN_SIZE
APTR MN_REPLYPORT
UWORD MN_LENGTH
LABEL MN_SIZE
STRUCTURE IO,MN_SIZE
APTR IO_DEVICE
APTR IO_UNIT
UWORD IO_COMMAND
UBYTE IO_FLAGS
BYTE IO_ERROR
LABEL IO_SIZE
ULONG IO_ACTUAL
ULONG IO_LENGTH
APTR IO_DATA
ULONG IO_OFFSET
LABEL IOSTD_SIZE
BITDEF IO,QUICK,0
DEVINIT MACRO
IFC '\1',''
CMD_COUNT SET CMD_NONSTD
ENDC
IFNC '\1',''
CMD_COUNT SET \1
ENDC
ENDM
DEVCMD MACRO * cmdname
\1 EQU CMD_COUNT
CMD_COUNT SET CMD_COUNT+1
ENDM
DEVINIT 0
DEVCMD CMD_INVALID
DEVCMD CMD_RESET
DEVCMD CMD_READ
DEVCMD CMD_WRITE
DEVCMD CMD_UPDATE
DEVCMD CMD_CLEAR
DEVCMD CMD_STOP
DEVCMD CMD_START
DEVCMD CMD_FLUSH
DEVCMD CMD_NONSTD
DEVINIT
DEVCMD IND_ADDHANDLER
DEVCMD IND_REMHANDLER
DEVCMD IND_WRITEEVENT
DEVCMD IND_SETTHRESH
DEVCMD IND_SETPERIOD
DEVCMD IND_SETMPORT
DEVCMD IND_SETMTYPE
DEVCMD IND_SETMTRIG
STRUCTURE LH,0
APTR LH_HEAD
APTR LH_TAIL
APTR LH_TAILPRED
UBYTE LH_TYPE
UBYTE LH_pad
LABEL LH_SIZE
STRUCTURE MP,LN_SIZE
UBYTE MP_FLAGS
UBYTE MP_SIGBIT
APTR MP_SIGTASK
STRUCT MP_MSGLIST,LH_SIZE
LABEL MP_SIZE
STRUCTURE LIB,LN_SIZE
UBYTE LIB_FLAGS
UBYTE LIB_pad
UWORD LIB_NEGSIZE
UWORD LIB_POSSIZE
UWORD LIB_VERSION
UWORD LIB_REVISION
APTR LIB_IDSTRING
ULONG LIB_SUM
UWORD LIB_OPENCNT
LABEL LIB_SIZE
WINDOWSIZING equ $0001
WINDOWDRAG equ $0002
WINDOWDEPTH equ $0004
WINDOWCLOSE equ $0008
SMART_REFRESH equ $0000
ACTIVATE equ $1000
; === NewWindow ==
STRUCTURE NewWindow,0
WORD nw_LeftEdge
WORD nw_TopEdge
WORD nw_Width
WORD nw_Height
BYTE nw_DetailPen
BYTE nw_BlockPen
ULONG nw_IDCMPFlags
LONG nw_Flags
APTR nw_FirstGadget
APTR nw_CheckMark
APTR nw_Title
APTR nw_Screen
APTR nw_BitMap
WORD nw_MinWidth
WORD nw_MinHeight
WORD nw_MaxWidth
WORD nw_MaxHeight
WORD nw_Type
LABEL nw_SIZE
STRUCTURE View,0
LONG v_ViewPort
LONG v_LOFCprList
LONG v_SHFCprList
WORD v_DyOffset
WORD v_DxOffset
WORD v_Modes
LABEL v_SIZEOF
STRUCTURE IntuitionBase,0
STRUCT ib_LibNode,LIB_SIZE
STRUCT ib_ViewLord,v_SIZEOF
APTR ib_ActiveWindow
APTR ib_ActiveScreen
APTR ib_FirstScreen
LABEL ib_SIZEOF
; === Screen ===
; Be aware that this structure is truncated!
STRUCTURE Screen,0
APTR sc_NextScreen
APTR sc_FirstWindow
WORD sc_LeftEdge
WORD sc_TopEdge
WORD sc_Width
WORD sc_Height
WORD sc_MouseY
WORD sc_MouseX
WORD sc_Flags
LABEL sc_SIZEOF
WBENCHSCREEN equ $0001
CUSTOMSCREEN equ $000F
; === Window ==
STRUCTURE Window,0
APTR wd_NextWindow
WORD wd_LeftEdge
WORD wd_TopEdge
WORD wd_Width
WORD wd_Height
WORD wd_MouseY
WORD wd_MouseX
WORD wd_MinWidth
WORD wd_MinHeight
WORD wd_MaxWidth
WORD wd_MaxHeight
LONG wd_Flags
APTR wd_MenuStrip
APTR wd_Title
APTR wd_FirstRequest
APTR wd_DMRequest
WORD wd_ReqCount
APTR wd_WScreen
APTR wd_RPort
BYTE wd_BorderLeft
BYTE wd_BorderTop
BYTE wd_BorderRight
BYTE wd_BorderBottom
APTR wd_BorderRPort
APTR wd_FirstGadget
APTR wd_Parent
APTR wd_Descendant
APTR wd_Pointer
BYTE wd_PtrHeight
BYTE wd_PtrWidth
BYTE wd_XOffset
BYTE wd_YOffset
ULONG wd_IDCMPFlags
APTR wd_UserPort
APTR wd_WindowPort
APTR wd_MessageKey
BYTE wd_DetailPen
BYTE wd_BlockPen
APTR wd_CheckMark
APTR wd_ScreenTitle
SHORT wd_GZZMouseX
SHORT wd_GZZMouseY
SHORT wd_GZZWidth
SHORT wd_GZZHeight
APTR wd_ExtData
APTR wd_UserData
APTR wd_WLayer
LABEL wd_Size
STRUCTURE IV,0
APTR IV_DATA
APTR IV_CODE
APTR IV_NODE
LABEL IV_SIZE
BITDEF S,SAR,15
BITDEF S,TQE,14
BITDEF S,SINT,13
STRUCTURE SH,LH_SIZE
UWORD SH_PAD
LABEL SH_SIZE
; Note that the following structure is truncated!
STRUCTURE ExecBase,LIB_SIZE
UWORD SoftVer
WORD LowMemChkSum
ULONG ChkBase
APTR ColdCapture
APTR CoolCapture
APTR WarmCapture
APTR SysStkUpper
APTR SysStkLower
ULONG MaxLocMem
APTR DebugEntry
APTR DebugData
APTR AlertData
APTR RsvdExt
WORD ChkSum
LABEL IntVects
STRUCT IVTBE,IV_SIZE
STRUCT IVDSKBLK,IV_SIZE
STRUCT IVSOFTINT,IV_SIZE
STRUCT IVPORTS,IV_SIZE
STRUCT IVCOPER,IV_SIZE
STRUCT IVVERTB,IV_SIZE
STRUCT IVBLIT,IV_SIZE
STRUCT IVAUD0,IV_SIZE
STRUCT IVAUD1,IV_SIZE
STRUCT IVAUD2,IV_SIZE
STRUCT IVAUD3,IV_SIZE
STRUCT IVRBF,IV_SIZE
STRUCT IVDSKSYNC,IV_SIZE
STRUCT IVEXTER,IV_SIZE
STRUCT IVINTEN,IV_SIZE
STRUCT IVNMI,IV_SIZE
APTR ThisTask
LABEL SYSBASESIZE
STRUCTURE TC,LN_SIZE
UBYTE TC_FLAGS
UBYTE TC_STATE
BYTE TC_IDNESTCNT
BYTE TC_TDNESTCNT
ULONG TC_SIGALLOC
ULONG TC_SIGWAIT
ULONG TC_SIGRECVD
ULONG TC_SIGEXCEPT
UWORD TC_TRAPALLOC
UWORD TC_TRAPABLE
APTR TC_EXCEPTDATA
APTR TC_EXCEPTCODE
APTR TC_TRAPDATA
APTR TC_TRAPCODE
APTR TC_SPREG
APTR TC_SPLOWER
APTR TC_SPUPPER
APTR TC_SWITCH
APTR TC_LAUNCH
STRUCT TC_MEMENTRY,LH_SIZE
APTR TC_Userdata
LABEL TC_SIZE
STRUCTURE CommandLineInterface,0
LONG cli_Result2
BSTR cli_SetName
BPTR cli_CommandDir
LONG cli_ReturnCode
BSTR cli_CommandName
LONG cli_FailLevel
BSTR cli_Prompt
BPTR cli_StandardInput
BPTR cli_CurrentInput
BSTR cli_CommandFile
LONG cli_Interactive
LONG cli_Background
BPTR cli_CurrentOutput
LONG cli_DefaultStack
BPTR cli_StandardOutput
BPTR cli_Module
LABEL cli_SIZEOF
STRUCTURE Process,0
STRUCT pr_Task,TC_SIZE
STRUCT pr_MsgPort,MP_SIZE
WORD pr_Pad
BPTR pr_SegList
LONG pr_StackSize
APTR pr_GlobVec
LONG pr_TaskNum
BPTR pr_StackBase
LONG pr_Result2
BPTR pr_CurrentDir
BPTR pr_CIS
BPTR pr_COS
APTR pr_ConsoleTask
APTR pr_FileSystemTask
BPTR pr_CLI
APTR pr_ReturnAddr
APTR pr_PktWait
APTR pr_WindowPtr
LABEL pr_SIZEOF
NEWLIST MACRO * list
MOVE.L \1,(\1)
ADDQ.L #LH_TAIL,(\1)
CLR.L LH_TAIL(\1)
MOVE.L \1,(LH_TAIL+LN_PRED)(\1)
ENDM
NT_MSGPORT EQU 4
NT_MESSAGE EQU 5
PA_SIGNAL EQU 0
DosF MACRO
move.l _DOSBase,a6
jsr _LVO\1(A6)
ENDM
ExecF MACRO Same as CALL except, call exec
move.L _SysBase,A6 lib instead of dos lib....
jsr _LVO\1(A6)
ENDM
LibF macro
jsr _LVO\1(a6)
endm
IntF macro
move.l _IntuitionBase,a6
jsr _LVO\1(A6)
endm
Ucase macro
andi.b #%01011111,\1
endm
_LVOOpenDevice equ -444
_LVOOpenLibrary equ -552
_LVOCloseDevice equ -450
_LVODoIO equ -456
_LVOSignal equ -324
_LVOFindTask equ -294
_LVOAllocSignal equ -330
_LVOWait equ -318
_LVOOpenWindow equ -204
_LVOCloseWindow equ -72
_LVOAllocMem equ -198
_LVOUnLoadSeg equ -156
_LVOCreateProc equ -138
_LVOCloseLibrary equ -414
_LVOFreeSignal equ -336
_LVOFreeMem equ -210
_LVOSetWindowTitles equ -276
_LVOPermit equ -138
_LVOForbid equ -132
_LVOSizeWindow equ -288
_LVOCurrentDir equ -126
DOCMD equ 1
DOMAC equ 2
NOMEM equ 101
NOSIG equ 102
NOINPUT equ 103
NOCONSOLE equ 104
ClearWindow macro
lea ClrWindowStr(pc),a0
bsr ConWriteLine
endm
UhOh macro
lea \1(pc),a0
bra ProcessError
endm
STRUCTURE KeyRec,0
APTR kr_Next ; Next record
APTR kr_Prev ; Previous record
UWORD kr_Qual ; Key qualifier
UWORD kr_Key ; Key
STRUCT kr_MacStr,80 ; Definiton of key
STRUCT kr_KeyStr,20 ; Key description.
LABEL kr_SIZEOF
Debug set 0
;------ Bit positions for key qualifiers
L_SHIFT equ 0
R_SHIFT equ 1
CLOCK equ 2
CONTROL equ 3
L_ALT equ 4
R_ALT equ 5
L_AMIGA equ 6
R_AMIGA equ 7
KPAD equ 8