home *** CD-ROM | disk | FTP | other *** search
- unit Commodities;
-
- INTERFACE
- uses Exec, Input, Keymap;
-
-
- type
- PFL = pointer;
- pInputXpression = ^tInputXpression;
- tInputXpression = record
- ix_Version: byte;
- ix_Class: byte;
- ix_Code: word;
- ix_CodeMask: word;
- ix_Qualifier: word;
- ix_QualMask: word;
- ix_QualSame: word;
- end;
-
- IX = tInputXpression;
- CxObj = LongInt;
- CxMsg = LongInt;
- pNewBroker = ^tNewBroker;
- tNewBroker = record
- nb_Version: shortint;
- nb_Name: pshortint;
- nb_Title: pshortint;
- nb_Descr: pshortint;
- nb_Unique: integer;
- nb_Flags: integer;
- nb_Pri: shortint;
- nb_Port: pMsgPort;
- nb_ReservedChannel: integer;
- end;
-
- pCxObj = ^CxObj;
- pCxMsg = ^CxMsg;
- pIX = ^IX;
-
-
- var
- CxBase: pLibrary;
-
-
- const
- CBD_NAMELEN = $18;
- CBERR_VERSION = 3;
- CX_DEBUG = 7;
- CBERR_OK = 0;
- COERR_NULLATTACH = 2;
- CX_TYPEFILTER = 2;
- CXCMD_DISAPPEAR = $15;
- COERR_BADFILTER = 4;
- CX_CUSTOM = 8;
- IXSYM_ALTMASK = $30;
- IXSYM_ALT = 4;
- CXCMD_UNIQUE = $19;
- CMDE_OK = 0;
- CX_TRANSLATE = 5;
- CXM_COMMAND = $40;
- COERR_ISNULL = 1;
- CBERR_SYSERR = 1;
- CX_SEND = 3;
- CMDE_NOMEM = $FFFFFFFD;
- CMDE_NOPORT = $FFFFFFFE;
- CXCMD_DISABLE = $F;
- CXCMD_KILL = $17;
- CX_INVALID = 0;
- CX_ZERO = 9;
- CXCMD_LIST_CHG = $1B;
- IXSYM_SHIFTMASK = 3;
- CXCMD_ENABLE = $11;
- CMDE_NOBROKER = $FFFFFFFF;
- CXM_IEVENT = $20;
- IXSYM_SHIFT = 1;
- CBD_DESCRLEN = $28;
- NB_VERSION = 5;
- NBU_DUPLICATE = 0;
- COERR_BADTYPE = 8;
- CBERR_DUP = 2;
- NBU_UNIQUE = 1;
- NBU_NOTIFY = 2;
- CX_SIGNAL = 4;
- IXSYM_CAPSMASK = 7;
- CXM_UNIQUE = $10;
- IXSYM_CAPS = 2;
- IX_NORMALQUALS = $7FFF;
- CXCMD_APPEAR = $13;
- CBD_TITLELEN = $28;
- CX_BROKER = 6;
- CX_FILTER = 1;
- IX_VERSION = 2;
- COF_SHOW_HIDE = 4;
-
-
- function CreateCxObj
- (type_: long;
- arg1: longint;
- arg2: longint): pCxObj;
-
- function CxBroker
- (nb: pNewBroker;
- error: plongint): pCxObj;
-
- function ActivateCxObj
- (co: pCxObj;
- true_: longint): longint;
-
- procedure DeleteCxObj (co: pCxObj);
- procedure DeleteCxObjAll (co: pCxObj);
- function CxObjType (co: pCxObj): long;
- function CxObjError (co: pCxObj): longint;
- procedure ClearCxObjError (co: pCxObj);
- procedure SetCxObjPri
- (co: pCxObj;
- pri: longint);
-
- procedure AttachCxObj
- (headObj: pCxObj;
- co: pCxObj);
-
- procedure EnqueueCxObj
- (headObj: pCxObj;
- co: pCxObj);
-
- procedure InsertCxObj
- (headObj: pCxObj;
- co: pCxObj;
- pred: pCxObj);
-
- procedure RemoveCxObj (co: pCxObj);
- procedure SetTranslate
- (translator: pCxObj;
- events: pInputEvent);
-
- procedure SetFilter
- (filter: pCxObj;
- text_: STRPTR);
-
- procedure SetFilterIX
- (filter: pCxObj;
- ix: pIX);
-
- function ParseIX
- (description: STRPTR;
- ix: pIX): longint;
-
- function CxMsgType (cxm: pCxMsg): long;
- function CxMsgData (cxm: pCxMsg): pointer;
- function CxMsgID (cxm: pCxMsg): longint;
- procedure DivertCxMsg
- (cxm: pCxMsg;
- headobj: pCxObj;
- ret: pCxObj);
-
- procedure RouteCxMsg
- (cxm: pCxMsg;
- co: pCxObj);
-
- procedure DisposeCxMsg (cxm: pCxMsg);
- function InvertKeyMap
- (ansicode: long;
- event: pInputEvent;
- km: pKeyMap): boolean;
-
- procedure AddIEvents (events: pInputEvent);
-
-
- (* Amiga.lib Commodities support *)
- procedure FreeIEvents (events: pInputEvent);
- function CxCustom
- (action: pointer;
- id: longint): pCxObj;
-
- function CxDebug (id: long): pCxObj;
- function CxFilter (d: STRPTR): pCxObj;
- function CxSender
- (port: pMsgPort;
- id: longint): pCxObj;
-
- function CxSignal
- (task: pTask;
- sig: byte): pCxObj;
-
- function CxTranslate (ie: pInputEvent): pCxObj;
-
-
- IMPLEMENTATION
- procedure FreeIEvents (events: pInputEvent);
- begin
- while events <> NIL do
- begin
- FreeMem (events, sizeof (tInputEvent));
- events := events^.ie_NextEvent
- end
- end;
-
- function CxCustom;
- begin
- CxCustom := CreateCxObj(CX_CUSTOM, longint(action), id)
- end;
-
- function CxDebug;
- begin
- CxDebug := CreateCxObj(CX_DEBUG, id, 0)
- end;
-
- function CxFilter;
- begin
- CxFilter := CreateCxObj(CX_FILTER, longint(d), 0)
- end;
-
- function CxSender;
- begin
- CxSender := CreateCxObj(CX_SEND, longint(port), id)
- end;
-
- function CxSignal;
- begin
- CxSignal:= CreateCxObj(CX_SIGNAL, longint(task), sig)
- end;
-
- function CxTranslate;
- begin
- CxTranslate := CreateCxObj(CX_TRANSLATE, longint(ie), 0)
- end;
-
- function CreateCxObj; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l (a6)+,d0
- move.l CxBase,a6
- jsr -$1E(a6)
- move.l d0,$14(sp)
- move.l (sp)+,a6
- end;
-
- function CxBroker; xassembler;
- asm
- move.l a6,-(sp)
- movem.l 8(sp),d0/a0
- move.l CxBase,a6
- jsr -$24(a6)
- move.l d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- function ActivateCxObj; xassembler;
- asm
- move.l a6,-(sp)
- movem.l 8(sp),d0/a0
- move.l CxBase,a6
- jsr -$2A(a6)
- move.l d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- procedure DeleteCxObj; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$30(a6)
- move.l (sp)+,a6
- end;
-
- procedure DeleteCxObjAll; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$36(a6)
- move.l (sp)+,a6
- end;
-
- function CxObjType; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$3C(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function CxObjError; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$42(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- procedure ClearCxObjError; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$48(a6)
- move.l (sp)+,a6
- end;
-
- procedure SetCxObjPri; xassembler;
- asm
- move.l a6,-(sp)
- movem.l 8(sp),d0/a0
- move.l CxBase,a6
- jsr -$4E(a6)
- move.l (sp)+,a6
- end;
-
- procedure AttachCxObj; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l CxBase,a6
- jsr -$54(a6)
- move.l (sp)+,a6
- end;
-
- procedure EnqueueCxObj; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l CxBase,a6
- jsr -$5A(a6)
- move.l (sp)+,a6
- end;
-
- procedure InsertCxObj; xassembler;
- asm
- movem.l a2/a6,-(sp)
- lea $C(sp),a6
- move.l (a6)+,a2
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l CxBase,a6
- jsr -$60(a6)
- movem.l (sp)+,a2/a6
- end;
-
- procedure RemoveCxObj; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$66(a6)
- move.l (sp)+,a6
- end;
-
- procedure SetTranslate; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l CxBase,a6
- jsr -$72(a6)
- move.l (sp)+,a6
- end;
-
- procedure SetFilter; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l CxBase,a6
- jsr -$78(a6)
- move.l (sp)+,a6
- end;
-
- procedure SetFilterIX; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l CxBase,a6
- jsr -$7E(a6)
- move.l (sp)+,a6
- end;
-
- function ParseIX; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l CxBase,a6
- jsr -$84(a6)
- move.l d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- function CxMsgType; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$8A(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function CxMsgData; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$90(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function CxMsgID; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$96(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- procedure DivertCxMsg; xassembler;
- asm
- movem.l a2/a6,-(sp)
- lea $C(sp),a6
- move.l (a6)+,a2
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l CxBase,a6
- jsr -$9C(a6)
- movem.l (sp)+,a2/a6
- end;
-
- procedure RouteCxMsg; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l CxBase,a6
- jsr -$A2(a6)
- move.l (sp)+,a6
- end;
-
- procedure DisposeCxMsg; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$A8(a6)
- move.l (sp)+,a6
- end;
-
- function InvertKeyMap; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,a1
- move.l (a6)+,a0
- move.l (a6)+,d0
- move.l CxBase,a6
- jsr -$AE(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$14(sp)
- move.l (sp)+,a6
- end;
-
- procedure AddIEvents; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),a0
- move.l CxBase,a6
- jsr -$B4(a6)
- move.l (sp)+,a6
- end;
-
- end.
-