home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / dev / tbsource.lha / TBSource / VoiceShell / Comm.asm next >
Assembly Source File  |  1993-12-21  |  4KB  |  213 lines

  1. ;
  2. ; Comm v1.00. Written by S.Klemola at 24.7.
  3. ;
  4. ; (C)1993 SH-Ware, Inc. All Rights Reserved.
  5. ;
  6.  
  7.       include "Macros"
  8.       include "exec/execbase.i"
  9.       include "libraries/commodities.i"
  10.  
  11. Error MACRO * errnum
  12.       moveq #\1,d0
  13.       bra Err
  14.       ENDM
  15.  
  16. ELib MACRO * routinename
  17.       xref _LVO\1
  18.       movea.l d6,a6
  19.       jsr _LVO\1(a6)
  20.       ENDM
  21.  
  22. SLib MACRO * routinename
  23.       xref _LVO\1
  24.       movea.l d7,a6
  25.       jsr _LVO\1(a6)
  26.       ENDM
  27.  
  28.       movea.l 4,a6
  29.       lea NewBr(pc),a2
  30.       lea CxPrt(pc),a3
  31.       move.l ThisTask(a6),MP_SIGTASK(a3)
  32.       moveq #-1,d0
  33.       Lib AllocSignal
  34.       move.b d0,MP_SIGBIT(a3)
  35.       movea.l a3,a1
  36.       Lib AddPort
  37.       move.l a6,d6
  38.       OpenLib sh,d7
  39.       beq CJmp1
  40.       movea.l d7,a6
  41.       lea MP_MSGLIST(a3),a0
  42.       Lib InitList
  43.       movea.l d6,a6
  44.       OpenLib comm,a6,36
  45.       move.l a6,d5
  46.       bne Jump1
  47.       Error 0
  48.  
  49. Jump1 movea.l a2,a0
  50.       clr.l d0
  51.       Lib CxBroker        ;Create broker
  52.       move.l d0,d4
  53.       beq ClnUp
  54.  
  55.       lea Filts(pc),a0        ;Create filter object
  56.       suba.l a1,a1
  57.       moveq #CX_FILTER,d0
  58.       Lib CreateCxObj
  59.       move.l d0,d3
  60.  
  61.       movea.l d4,a0        ;Broker as headobj
  62.       movea.l d0,a1
  63.       Lib AttachCxObj
  64.  
  65.       movea.l a3,a0        ;Create send object
  66.       suba.l a1,a1        ;a3=Port
  67.       moveq #CX_SEND,d0
  68.       Lib CreateCxObj
  69.  
  70.       movea.l d3,a0        ;Previous obj as headobj
  71.       move.l d0,d3
  72.       movea.l d0,a1
  73.       Lib AttachCxObj
  74.  
  75.       suba.l a0,a0        ;Create translate object
  76.       suba.l a1,a1
  77.       moveq #CX_TRANSLATE,d0
  78.       Lib CreateCxObj
  79.  
  80.       movea.l d3,a0
  81.       movea.l d0,a1
  82.       Lib AttachCxObj
  83.  
  84.       movea.l d4,a0        ;Activate Broker
  85.       moveq #1,d0
  86.       Lib ActivateCxObj
  87.       movea.l d7,a6
  88.       Print Inits
  89.  
  90. Main  movea.l d6,a6        ;Wait for messages
  91.       movea.l a3,a0
  92.       Lib WaitPort
  93.  
  94.       movea.l a3,a0
  95.       Lib GetMsg        ;Get message
  96.       movea.l d0,a4
  97.  
  98.       movea.l d5,a6
  99.       movea.l a4,a0
  100.       Lib CxMsgType        ;What type of message is it?
  101.       move.l d0,d2
  102.  
  103.       movea.l a4,a0
  104.       Lib CxMsgID        ;What are we told to do?
  105.       move.l d0,d3
  106.  
  107.       movea.l a4,a1
  108.       Lib ReplyMsg,d6        ;Give a polite answer
  109.  
  110.       movea.l d7,a6
  111.       cmpi.l #CXM_COMMAND,d2    ;d2 = Message type
  112.       beq Jump3
  113. Jump2 Print Text1                   ; APPEAR
  114.       bra Main
  115. Jump3 cmpi.l #CXCMD_APPEAR,d3    ;d3 = Command given
  116.       beq Jump2
  117.       cmpi.l #CXCMD_DISAPPEAR,d3
  118.       bne Jump4
  119.       Print Text2                   ; DISAPPEAR
  120.       bra Main
  121. Jump4 cmpi.l #CXCMD_KILL,d3
  122.       beq Jump5
  123.       cmpi.l #CXCMD_UNIQUE,d3
  124.       bne Jump6
  125. Jump5 Print Text3                   ; KILL
  126.       bra ClnUp
  127. Jump6 cmpi.l #CXCMD_ENABLE,d3
  128.       bne Jump7
  129.  
  130.       movea.l d4,a0                 ; ENABLE
  131.       moveq #1,d0
  132.       Lib ActivateCxObj,d5
  133.       movea.l d7,a6
  134.       Print Text5
  135.       bra Main
  136. Jump7 cmpi.l #CXCMD_DISABLE,d3
  137.       bne Jump8
  138.  
  139.       movea.l d4,a0                 ; DISABLE
  140.       clr.l d0
  141.       Lib ActivateCxObj,d5
  142.       movea.l d7,a6
  143.       Print Text6
  144.       bra Main
  145.  
  146. Jump8 Print Text4        ;Unknown command
  147.       bra Main
  148.  
  149. ClnUp tst.l d4
  150.       beq CJmp2
  151.       movea.l d4,a0
  152.       Lib DeleteCxObjAll,d5
  153. CJmp2 movea.l d6,a6
  154.       tst.l d5
  155.       beq CJmp1
  156.       CloseLib d5
  157. CJmp1 movea.l a3,a1
  158.       Lib RemPort
  159.       clr.l d0
  160.       move.b MP_SIGBIT(a3),d0
  161.       Lib FreeSignal
  162.       clr.l d0
  163.       rts
  164.  
  165. Err   lea Alert(pc),a0
  166.       lea Errst(pc),a1
  167.       lsl.l #2,d0
  168.       movea.l 0(a1,d0),a1
  169.       clr.l d0
  170.       SLib ShowAlert
  171.       bra ClnUp
  172.  
  173. NewBr dc.b NB_VERSION,0
  174.       dc.l Name,Title,Descr
  175.       dc.w NBU_UNIQUE!NBU_NOTIFY,COF_SHOW_HIDE
  176.       dc.b 0,0
  177.       dc.l CxPrt
  178.       dc.w 0
  179.  
  180. CxPrt dc.l 0,0
  181.       dc.b NT_MSGPORT,0
  182.       dc.l PName
  183.       dc.b PA_SIGNAL,0
  184.       ds.l 4
  185.       dc.b NT_MESSAGE,0
  186.  
  187. Errst dc.l  Errs1
  188.  
  189. Alert dc.b 'Comm Failed',0
  190.  
  191. Errs1 dc.b 'Unable to open commodities.library',0
  192.  
  193. sh    dc.b 'sh.library',0
  194. comm  dc.b 'commodities.library',0
  195.  
  196. Name  dc.b 'Comm',0
  197. Title dc.b 'Comm v1.0 by S.Klemola',0
  198. Descr dc.b 'Commodities example',0
  199.  
  200. PName dc.b 'Comm CX Port',0
  201.  
  202. Filts dc.b 'lcommand lshift help',0
  203.  
  204. Inits dc.b 'Comm installed.',10,0
  205.  
  206. Text1 dc.b 'ACTIVATION',10,0
  207. Text2 dc.b 'DEACTIVATION',10,0
  208. Text3 dc.b 'GOOD BYE',10,0
  209. Text4 dc.b 'UNKNOWN COMMAND',10,0
  210. Text5 dc.b 'ENABLED',10,0
  211. Text6 dc.b 'DISABLED',10,0
  212.  
  213.