home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / dev / tbsource.lha / TBSource / VoiceShell / VS.S < prev    next >
Text File  |  1993-12-21  |  111KB  |  5,541 lines

  1. *************************************************
  2. *                        *
  3. *         (C)opyright 1992-93        *
  4. *                        *
  5. *          by Tomi Blinnikka        *
  6. *                        *
  7. *    Don't try to understand the code    *
  8. *                        *
  9. * Version 0.01    13/06/1992-            *
  10. *     -0.99v 20/06/1992            *
  11. *                        *
  12. * Version 1.00    07/02/1993            *
  13. *                        *
  14. * Changed parser                *
  15. *                        *
  16. * Added: From option, generic sampler, timer    *
  17. *     selection, fixed lotsa bugs        *
  18. *                        *
  19. * BUGS: Loaded wrong data file on startup    *
  20. *                        *
  21. * Version 1.01    11/02/1993            *
  22. *                        *
  23. * Changed name from VShell to VoiceShell    *
  24. *                        *
  25. * BUGS:                        *
  26. *                        *
  27. * Version 1.02    14/02/1993            *
  28. *                        *
  29. * Added load gadget                *
  30. *                        *
  31. * BUGS:                        *
  32. *                        *
  33. * Version 1.03    18/05/1993            *
  34. *                        *
  35. * Fixed some font stuff                *
  36. *                        *
  37. * BUGS:                        *
  38. *                        *
  39. * Version 1.04    25/05/1993            *
  40. *                        *
  41. * Added DSS 8 support, needs voice.library,    *
  42. * version 7                    *
  43. *                        *
  44. * Added priority                *
  45. *                        *
  46. * Version 1.05    30/05/1993            *
  47. *                        *
  48. * Added priority resetting            *
  49. *                        *
  50. * Version 1.06    02/06/1993            *
  51. *                        *
  52. * Added channel select & mic/line select    *
  53. * Requires voice.library, version 8.0        *
  54. *                        *
  55. * Version 1.07    10/06/1993            *
  56. *                        *
  57. * Fixed few things in Set(Mic/Line/Right/Left).    *
  58. *                        *
  59. * Version 1.08    19/06/1993            *
  60. *                        *
  61. * Optimized and searched for voice.library 8.1    *
  62. * bug. Bug was in library, version bumped.    *
  63. *                        *
  64. * Version 1.09    21/06/1993            *
  65. *                        *
  66. * ARexx control added                *
  67. *                        *
  68. * Version 1.10    17/07/1993            *
  69. *                        *
  70. * Optimized.                    *
  71. *                        *
  72. * Version 1.11    21/07/1993            *
  73. *                        *
  74. * Implemented ARexx LOAD command. Fixed bug    *
  75. * with 'Vol Dwn' gad & Left channel.        *
  76. *                        *
  77. * Version 1.12    08/08/1993            *
  78. *                        *
  79. * Increased command string length.        *
  80. *                        *
  81. * Version 1.13    11/08/1993            *
  82. *                        *
  83. * Added ability to wedge fate Input Events    *
  84. * directly.                    *
  85. *                        *
  86. * Version 1.14    13/09/1993            *
  87. *                        *
  88. * Added PUBSCREEN tooltype and CLI option.    *
  89. *                        *
  90. * Version 1.15    19/09/1993            *
  91. *                        *
  92. * Added 'Get'-gadget into Command window.    *
  93. *                        *
  94. * Version 1.16    26/09/1993            *
  95. *                        *
  96. * Made VoiceShell a commodity.            *
  97. *                        *
  98. * Fixed some bugs that made it crash if ARexx    *
  99. * commands executed while editing.        *
  100. *                        *
  101. * Quitting made safer.                *
  102. *                        *
  103. * Version 1.17    05/10/1993            *
  104. *                        *
  105. * Localized a few internal things.        *
  106. *                        *
  107. * Added 'HIDE' & 'SHOW' ARexx commands.        *
  108. *                        *
  109. * Added CX_PRI tooltype code.            *
  110. *                        *
  111. * Version 1.18    31/10/1993            *
  112. *                        *
  113. * Fixed bug with getting font sizes etc.    *
  114. *                        *
  115. * Re-wrote a-hell-of-a-lot of code. The guy who    *
  116. * gave me the idea of making VS into a         *
  117. * commodity should be shot :)            *
  118. *                        *
  119. * STILL TO CHECK:                *
  120. *                        *
  121. * - does iconify work properly?            *
  122. * - do all the tooltypes/cli options work?    *
  123. * -                        *
  124. * -                        *
  125. * - does it still recognize words?        *
  126. *                        *
  127. *************************************************
  128.  
  129. ;    INCDIR    "INCLUDES:"
  130.     INCLUDE "JMPLibs.i"
  131.     INCLUDE "exec/memory.i"
  132.     INCLUDE "exec/io.i"
  133.     INCLUDE "exec/tasks.i"
  134.     INCLUDE "libraries/dosextens.i"
  135.     INCLUDE "libraries/dos.i"
  136.     INCLUDE "libraries/commodities.i"
  137.     INCLUDE "libraries/gadtools.i"
  138.     INCLUDE    "libraries/voice.i"
  139.     INCLUDE    "libraries/asl.i"
  140.     INCLUDE "workbench/startup.i"
  141.     INCLUDE "intuition/gadgetclass.i"
  142.     INCLUDE "dos/dostags.i"
  143.     INCLUDE    "rexx/errors.i"
  144.     INCLUDE    "rexx/storage.i"
  145.  
  146.     INCLUDE "XREF:2.0.xref"
  147.     INCLUDE "XREF:intuition.xref"
  148.     INCLUDE "XREF:exec.xref"
  149.     INCLUDE "XREF:dos.xref"
  150.     INCLUDE "XREF:icon.xref"
  151.  
  152.     XREF    _InvertString
  153.     XREF    _FreeIEvents
  154.     XREF    _HotKey
  155.  
  156.     XDEF    _DOSBase
  157.     XDEF    _SysBase
  158.     XDEF    _CxBase
  159.  
  160. DVoice        SET    1
  161. ;VS_REGISTERED    SET    1    ;Set only for registered versions!
  162.  
  163. PROGVERSION:    macro
  164.         dc.b    "1.18 (31.10.93)"
  165.         endm
  166.  
  167.  
  168. VSFileVersion:    EQU    'VS03'
  169.  
  170. ShellTop:    EQU    2
  171. OptionTop:    EQU    46
  172. VocabSIZE:    EQU    60
  173. NUMGADS:    EQU    10
  174. GADLENG1:    EQU    16
  175. GADLENG2:    EQU    256
  176. GADLENGTH:    EQU    (GADLENG1+GADLENG2)
  177.  
  178. AccVal1:    EQU    2000
  179. AccVal2:    EQU    2400
  180. AccVal3:    EQU    2700
  181. AccVal4:    EQU    3000        ;VoiceShell default
  182. AccVal5:    EQU    3500
  183. AccVal6:    EQU    4000
  184. AccVal7:    EQU    5500
  185. AccVal8:    EQU    6000
  186.  
  187. Samp1MenuN:    EQU    $0002        ;0002
  188. Samp2MenuN:    EQU    $0802        ;0802
  189. Samp3MenuN:    EQU    $1002        ;1002
  190. Samp4MenuN:    EQU    $1802        ;1802
  191. ResLoMenuN:    EQU    $0022        ;0022
  192. ResHiMenuN:    EQU    $0822        ;0822
  193.  
  194. Acc1MenuN:    EQU    $0042        ;0042
  195. Acc2MenuN:    EQU    $0842        ;0842
  196. Acc3MenuN:    EQU    $1042        ;1042
  197. Acc4MenuN:    EQU    $1842        ;1842
  198. Acc5MenuN:    EQU    $2042        ;2042
  199. Acc6MenuN:    EQU    $2842        ;2842
  200. Acc7MenuN:    EQU    $3042        ;3042
  201. Acc8MenuN:    EQU    $3842        ;3842
  202.  
  203. Chan1MenuN:    EQU    $0062        ;0062
  204. Chan2MenuN:    EQU    $0862        ;0862
  205.  
  206. Input1MenuN:    EQU    $0082        ;0082
  207. Input2MenuN:    EQU    $0882        ;0882
  208.  
  209. Timer1MenuN:    EQU    $00A2        ;00A2
  210. Timer2MenuN:    EQU    $08A2        ;08A2
  211.  
  212. TRUE:        EQU    1
  213. FALSE:        EQU    0
  214. do_ToolTypes:    EQU    $36
  215.  
  216.         section VS,CODE
  217.  
  218.         push    d2-d7/a2-a6
  219.  
  220.         sub.l    a1,a1            ;Find our task
  221.         lib    Exec,FindTask
  222.         move.l    d0,OurTask
  223.         move.l    d0,a4
  224.         move.l    pr_CLI(a4),d0
  225.         bne    OpenDos
  226.  
  227.         lea.l    pr_MsgPort(a4),a0
  228.         lib    Exec,WaitPort
  229.         lea.l    pr_MsgPort(a4),a0
  230.         lib    Exec,GetMsg
  231.         move.l    d0,WBMsg
  232.  
  233. OpenDos:    openlib Dos,NoDos        ;Keep at beginning
  234.  
  235.         tst.l    WBMsg
  236.         beq    CLIStart
  237.  
  238.         lea.l    NILName,a0
  239.         move.l    a0,d1
  240.         move.l    #MODE_OLDFILE,d2
  241.         lib    Dos,Open
  242.         move.l    d0,NILFile
  243.         beq    ShutDown
  244.         move.l    NILFile,_stdout
  245.  
  246.         openlib Icon,NoIcon
  247.  
  248.         move.l    WBMsg,a0
  249.         move.l    sm_ArgList(a0),a1
  250.         move.l    wa_Lock(a1),d1
  251.         lib    Dos,CurrentDir
  252.         move.l    d0,OldLock
  253.  
  254.         move.l    WBMsg,a0
  255.         move.l    sm_ArgList(a0),a1
  256.         move.l    wa_Name(a1),a0
  257.         lib    Icon,GetDiskObject
  258.         move.l    d0,DiskObject
  259.         beq    MainStart
  260.  
  261. DoToolType1:    move.l    DiskObject,a4
  262.         move.l    do_ToolTypes(a4),a0
  263.         lea.l    ICONIFYText1,a1
  264.         lib    Icon,FindToolType
  265.         tst.l    d0
  266.         beq    DoToolType2
  267.         move.l    d0,a0
  268.         lea.l    YESText1,a1
  269.         lib    Icon,MatchToolValue
  270.         tst.l    d0
  271.         beq    DoToolType2
  272.         move.l    #1,OptionIconify
  273.  
  274. DoToolType2:    move.l    DiskObject,a4
  275.         move.l    do_ToolTypes(a4),a0
  276.         lea.l    FROMText1,a1
  277.         lib    Icon,FindToolType
  278.         move.l    d0,FromFile
  279.  
  280.         move.l    DiskObject,a4
  281.         move.l    do_ToolTypes(a4),a0
  282.         lea.l    PUBSCREENText1,a1
  283.         lib    Icon,FindToolType
  284.         move.l    d0,OptPubScreen
  285.  
  286.         move.l    DiskObject,a4
  287.         move.l    do_ToolTypes(a4),a0
  288.         lea.l    CXPOPKEYText1,a1
  289.         lib    Icon,FindToolType
  290.         tst.l    d0
  291.         beq    DoToolType3
  292.         move.l    d0,OptCXPopKey
  293.  
  294. DoToolType3:    move.l    DiskObject,a4
  295.         move.l    do_ToolTypes(a4),a0
  296.         lea.l    CXPOPUPText1,a1
  297.         lib    Icon,FindToolType
  298.         tst.l    d0
  299.         beq    DoToolType4
  300.         move.l    d0,a0
  301.         lea.l    NOText1,a1
  302.         lib    Icon,MatchToolValue
  303.         tst.l    d0
  304.         beq    DoToolType4
  305.         clr.w    PopUp
  306.  
  307. DoToolType4:    move.l    DiskObject,a4
  308.         move.l    do_ToolTypes(a4),a0
  309.         lea.l    CXPRIText1,a1
  310.         lib    Icon,FindToolType
  311.         tst.l    d0
  312.         beq    DoToolType4
  313.         move.l    d0,a0
  314.         bsr    ConvASCII
  315.         tst.l    d0
  316.         beq    DoToolType5
  317.         move.l    d0,WBOptCXPri
  318.         lea.l    WBOptCXPri,a0
  319.         move.l    a0,OptCXPri
  320.  
  321. DoToolType5:    bra    MainStart
  322.  
  323. CLIStart:    lib    Dos,Output
  324.         move.l    d0,_stdout
  325.  
  326.         lea.l    CLTemplate1,a0
  327.         move.l    a0,d1
  328.         lea.l    CLArray1,a0
  329.         move.l    a0,d2
  330.         clr.l    d3
  331.         lib    Dos,ReadArgs
  332.         move.l    d0,RDArgs1
  333.         beq    NoRDArgs
  334.  
  335.         move.l    OptCXPopUp,a0
  336.         cmp.l    #0,a0
  337.         beq    MainStart        ;No enforcer hits, please
  338.         cmp.b    #'n',(a0)
  339.         bne    CLIStart1
  340.         clr.w    PopUp
  341. CLIStart1:    cmp.b    #'N',(a0)
  342.         bne    MainStart
  343.         clr.w    PopUp
  344.  
  345. MainStart:    openlib Intuition,NoInt
  346.         openlib    Commodities,NoCommodities
  347.         openlib    Asl,NoAsl
  348.         openlib    Utility,NoUtility
  349.  
  350.         move.l    $4,_SysBase
  351.         move.l    _DosBase,_DOSBase
  352.         move.l    _CommoditiesBase,_CxBase
  353.  
  354.         move.l    OurTask,a1
  355.         move.l    #120,d0
  356.         lib    Exec,SetTaskPri
  357.  
  358.         openlib GadTools,NoGadTools
  359.  
  360. ;Create a message port for the voice.library
  361.  
  362.         lib    Exec,CreateMsgPort
  363.         move.l    d0,VoicePort
  364.         beq    NoMsgPort
  365.  
  366. ;Create a message port for commodities.library (Exchange)
  367.  
  368.         lib    Exec,CreateMsgPort
  369.         move.l    d0,CXPort
  370.         beq    NoMsgPort
  371.         lea.l    NewBroker1,a0
  372.         move.l    d0,nb_Port(a0)
  373.  
  374. ;Get Asl_requester
  375.  
  376.         move.l    #ASL_FileRequest,d0
  377.         lea.l    AslReqTags,a0
  378.         lib    Asl,AllocAslRequest
  379.         move.l    d0,AslReq
  380.         beq    NoAslReq
  381.  
  382. ;Do CX init stuff. Create broker
  383.  
  384.         tst.l    OptCXPri
  385.         beq    SkipSetCXPri
  386.         move.l    OptCXPri,a0
  387.         move.l    (a0),d0
  388.  
  389.         tst.l    d0
  390.         bmi    SetCXPri2
  391.  
  392.         cmp.l    #127,d0
  393.         bhi    BadPriority
  394.         bra    SetCXPri3
  395.  
  396. SetCXPri2:    cmp.l    #-128,d0
  397.         bcs    BadPriority
  398.  
  399. SetCXPri3:    move.b    d0,NBPri
  400. SkipSetCXPri:    lea.l    NewBroker1,a0
  401.         clr.l    d0            ;No extra error codes wanted
  402.         lib    Commodities,CxBroker
  403.         move.l    d0,CXBroker1
  404.         beq    NoCommodity
  405.  
  406. ;Create Filter object
  407.  
  408.         move.l    OptCXPopKey,AboutTxt7.X        ;For about window
  409.  
  410.         move.l    OptCXPopKey,a0
  411.         sub.l    a1,a1
  412.         move.l    #CX_FILTER,d0
  413.         lib    Commodities,CreateCxObj
  414.         move.l    d0,d2
  415.         beq    NoCommodity
  416.  
  417. ;Attach Filter object to Broker
  418.  
  419.         move.l    CXBroker1,a0
  420.         move.l    d2,a1
  421.         lib    Commodities,AttachCxObj
  422.  
  423.         move.l    d2,a0            ;Check if valid descriptor
  424.         lib    Commodities,CxObjError
  425.         cmp.l    #COERR_BADFILTER,d0
  426.         beq    NoFilter
  427.  
  428. ;Create send object
  429.  
  430.         move.l    d2,d3
  431.         move.l    CXPort,a0
  432.         sub.l    a1,a1
  433.         move.l    #CX_SEND,d0
  434.         lib    Commodities,CreateCxObj
  435.         move.l    d0,d2
  436.         beq    NoCommodity
  437.  
  438. ;Attach Send object to Filter
  439.  
  440.         move.l    d3,a0
  441.         move.l    d2,a1
  442.         lib    Commodities,AttachCxObj
  443.  
  444. ;Create translate object
  445.  
  446.         move.l    d2,d3
  447.         sub.l    a0,a0
  448.         sub.l    a1,a1
  449.         move.l    #CX_TRANSLATE,d0
  450.         lib    Commodities,CreateCxObj
  451.         move.l    d0,d2
  452.         beq    NoCommodity
  453.  
  454. ;Attach Translate object to Send
  455.  
  456.         move.l    d3,a0
  457.         move.l    d2,a1
  458.         lib    Commodities,AttachCxObj
  459.  
  460. ;We open voice.library this late so that if we're already run the older
  461. ;copy pops up
  462.  
  463.         move.l    #8,d0
  464.         move.l    $4,a6
  465.         lea.l    _VoiceLib,a1
  466.         jsr    _LVOOpenLibrary(a6)
  467.         move.l    d0,_VoiceBase
  468.         beq    NoVoice
  469.  
  470. ;The same thing with the ARexx port...
  471.  
  472. ;Check to see if a port with our name already exists
  473.  
  474.         lib    Exec,Forbid
  475.         lea.l    ARexxPortName,a1
  476.         flib    Exec,FindPort
  477.         push    d0
  478.         flib    Exec,Permit
  479.  
  480.         pull    d0
  481.         tst.l    d0
  482.         bne    NoMsgPort2
  483.  
  484. ;Create AREXX message port
  485.  
  486.         lib    Exec,CreateMsgPort
  487.         move.l    d0,ARexxPort
  488.         beq    NoMsgPort
  489.  
  490.         move.l    ARexxPort,a1
  491.         lea.l    ARexxPortName,a0
  492.         move.l    a0,LN_NAME(a1)
  493.         lib    Exec,AddPort
  494.  
  495. ;Read preferences
  496.  
  497.         bsr    Load        ;Set voice stuff
  498.  
  499.         bsr    CXDisable    ;Turn off just in case
  500.  
  501.         tst.w    PopUp
  502.         beq    SkipOpen1
  503.  
  504.         bsr    OpenWin1
  505.         tst.l    Window1
  506.         beq    NoWindow1
  507.  
  508.         bsr    SetModes    ;Set gads/menus
  509.  
  510. SkipOpen1:    move.l    #5625242,d5    ;inform user
  511.         bsr    AddVTask
  512.  
  513. Window1IDCMP:    move.l    Window1,a0
  514.         bsr    CheckIDCMP
  515.         tst.l    d0            ;Test for CTRL_C
  516.         beq    ShutDown
  517.         cmp.l    #1,d0            ;Test for CTRL_D
  518.         beq    DoCTRL_D
  519.         cmp.l    #2,d0            ;Test for CTRL_E
  520.         beq    DoCTRL_E
  521.         cmp.l    #3,d0
  522.         beq    DoVoice            ;Do voice command
  523.         cmp.l    #4,d0
  524.         beq    Window1IDCMP        ;Already done ARexx or commodity
  525.         cmp.l    #INTUITICKS,d2
  526.         beq    DoTicks
  527.         cmp.l    #GADGETUP,d2
  528.         beq    DoGads
  529.         cmp.l    #CLOSEWINDOW,d2
  530.         beq    DoDoCXDisappear
  531.         cmp.l    #MENUPICK,d2
  532.         beq    Win1Menus
  533.         cmp.l    #VANILLAKEY,d2
  534.         beq    VanillaKeys
  535.         cmp.l    #ACTIVEWINDOW,d2
  536.         beq    ActivateGads
  537.         cmp.l    #REFRESHWINDOW,d2
  538.         beq    Refresher
  539.         bra    Window1IDCMP
  540.  
  541. Refresher:    tst.l    Window1
  542.         beq    Refresher_OUT
  543.         move.l    Window1,a0
  544.         lib    GadTools,GT_BeginRefresh
  545.         move.l    Window1,a0
  546.         move.l    #TRUE,d0
  547.         lib    GadTools,GT_EndRefresh
  548. Refresher_OUT:    bra    Window1IDCMP
  549.  
  550. VanillaKeys:    cmp.w    #$1b,d3
  551.         beq    Quit
  552.         cmp.w    #'l',d3            ;Lower case
  553.         beq    DoDataLoad
  554.         cmp.w    #'s',d3
  555.         beq    Save
  556.         cmp.w    #'q',d3
  557.         beq    Quit
  558.         cmp.w    #'u',d3
  559.         beq    DoGainUp
  560.         cmp.w    #'d',d3
  561.         beq    DoGainDown
  562.         cmp.w    #'f',d3
  563.         beq    ActivateGads
  564.         cmp.w    #'L',d3            ;Upper case
  565.         beq    DoDataLoad
  566.         cmp.w    #'S',d3
  567.         beq    Save
  568.         cmp.w    #'Q',d3
  569.         beq    Quit
  570.         cmp.w    #'U',d3
  571.         beq    DoGainUp
  572.         cmp.w    #'D',d3
  573.         beq    DoGainDown
  574.         cmp.w    #'F',d3
  575.         beq    ActivateGads
  576.         bra    Window1IDCMP
  577.  
  578. DoGads:        cmp.w    #10,$26(a5)
  579.         beq    DoOnOff
  580.         cmp.w    #1,$26(a5)
  581.         beq    ActivateGads
  582.         cmp.w    #20,$26(a5)
  583.         beq    DoGainUp
  584.         cmp.w    #30,$26(a5)
  585.         beq    DoGainDown
  586.         cmp.w    #40,$26(a5)
  587.         beq    DoDataLoad
  588.         cmp.w    #98,$26(a5)
  589.         beq    Save
  590.         cmp.w    #99,$26(a5)
  591.         beq    Quit
  592.         bra    Window1IDCMP
  593.  
  594. Win1Menus:    bsr    MenuNull
  595.         cmp.w    #$00,d6
  596.         beq    Win1Menus1
  597.         cmp.w    #$01,d6
  598.         beq    Win1Menus2
  599.         cmp.w    #$02,d6
  600.         beq    Win1Menus3
  601.         bra    Window1IDCMP
  602. Win1Menus1:    cmp.w    #$00,d5
  603.         beq    DoLoad
  604.         cmp.w    #$01,d5
  605.         beq    Save
  606.         cmp.w    #$02,d5
  607.         beq    About
  608.         cmp.w    #$04,d5
  609.         beq    Quit
  610.         bra    Window1IDCMP
  611. Win1Menus2:    cmp.w    #$00,d5
  612.         beq    EditCmds
  613.         bra    Window1IDCMP
  614. Win1Menus3:    cmp.w    #$00,d5
  615.         beq    Win1Menus3.1
  616.         cmp.w    #$01,d5
  617.         beq    Win1Menus3.2
  618.         cmp.w    #$02,d5
  619.         beq    Win1Menus3.3
  620.         cmp.w    #$03,d5
  621.         beq    Win1Menus3.4
  622.         cmp.w    #$04,d5
  623.         beq    Win1Menus3.5
  624.         cmp.w    #$05,d5
  625.         beq    Win1Menus3.6
  626.         cmp.w    #$06,d5
  627.         beq    SetPriority
  628.         bra    Window1IDCMP
  629. Win1Menus3.1:    cmp.w    #$00,d4
  630.         beq    DoSetSamp1
  631.         cmp.w    #$01,d4
  632.         beq    DoSetSamp2
  633.         cmp.w    #$02,d4
  634.         beq    DoSetSamp3
  635.         cmp.w    #$03,d4
  636.         beq    DoSetSamp4
  637.         bra    Window1IDCMP
  638. Win1Menus3.2:    cmp.w    #$00,d4
  639.         beq    DoSetResLo
  640.         cmp.w    #$01,d4
  641.         beq    DoSetResHi
  642. Win1Menus3.3:    cmp.w    #$00,d4
  643.         beq    DoSetAccLowest
  644.         cmp.w    #$01,d4
  645.         beq    DoSetAccLower
  646.         cmp.w    #$02,d4
  647.         beq    DoSetAccLow
  648.         cmp.w    #$03,d4
  649.         beq    DoSetAccNormal
  650.         cmp.w    #$04,d4
  651.         beq    DoSetAccHigh
  652.         cmp.w    #$05,d4
  653.         beq    DoSetAccHigher
  654.         cmp.w    #$06,d4
  655.         beq    DoSetAccEHigher
  656.         cmp.w    #$07,d4
  657.         beq    DoSetAccMaximum
  658. Win1Menus3.4:    cmp.w    #$00,d4
  659.         beq    DoSetLeft
  660.         cmp.w    #$01,d4
  661.         beq    DoSetRight
  662. Win1Menus3.5:    cmp.w    #$00,d4
  663.         beq    DoSetMic
  664.         cmp.w    #$01,d4
  665.         beq    DoSetLine
  666. Win1Menus3.6:    cmp.w    #$00,d4
  667.         beq    DoSetTimerA
  668.         cmp.w    #$01,d4
  669.         beq    DoSetTimerB
  670.         bra    Window1IDCMP
  671.  
  672. DoTicks:    add.w    #1,TickCount
  673.         cmp.w    #20,TickCount
  674.         bne    Window1IDCMP
  675.         clr.w    TickCount
  676.         tst.w    TaskOn
  677.         beq    DoTicks2
  678.         lea.l    ReadyText1,a0
  679.         bsr    GetLength
  680.         bsr    Inform
  681.         bra    Window1IDCMP
  682. DoTicks2:    lea.l    InactiveText1,a0
  683.         bsr    GetLength
  684.         bsr    Inform
  685.         bra    Window1IDCMP
  686.  
  687. EditCmds:    clr.w    Saved
  688.         move.w    #1,DisActive        ;Can't turn on/off
  689.         bsr    RemVTask1
  690.         bsr    SleepPointer
  691.         bsr    MenusOff
  692.         bsr    RemGads
  693.  
  694.         bsr    OpenWin2
  695.         tst.l    d0
  696.         beq    NoWindow1
  697.         bsr    RemGads2
  698.         bsr    SetStrGads
  699.         bsr    AddGads2
  700.  
  701.         bsr    ActGad2
  702.  
  703. Window2IDCMP:    move.l    Window2,a0
  704.         bsr    CheckIDCMP
  705.  
  706.         tst.l    d0
  707.         beq    ShutDown
  708.         cmp.l    #4,d0
  709.         beq    Window2IDCMP
  710.         cmp.l    #GADGETUP,d2
  711.         beq    ActivateGads2
  712.         cmp.l    #GADGETDOWN,d2
  713.         beq    GetGadAddr2
  714.         cmp.l    #CLOSEWINDOW,d2
  715.         beq    EditCmds_OUT
  716.         cmp.l    #MENUPICK,d2
  717.         beq    Win2Menus
  718.         cmp.l    #VANILLAKEY,d2
  719.         beq    EditKeys
  720.         cmp.l    #REFRESHWINDOW,d2
  721.         beq    Refresher2
  722.         bra    Window2IDCMP
  723.  
  724. Refresher2:    move.l    Window2,a0
  725.         lib    GadTools,GT_BeginRefresh
  726.         move.l    Window2,a0
  727.         move.l    #TRUE,d0
  728.         lib    GadTools,GT_EndRefresh
  729.         bra    Window2IDCMP
  730.  
  731. Win2Menus:    bsr    MenuNull
  732.         cmp.w    #$00,d6
  733.         beq    Win2Menus1
  734.         bra    Window2IDCMP
  735. Win2Menus1:    cmp.w    #$00,d5
  736.         beq    DoPage1
  737.         cmp.w    #$01,d5
  738.         beq    DoPage2
  739.         cmp.w    #$02,d5
  740.         beq    DoPage3
  741.         cmp.w    #$03,d5
  742.         beq    DoPage4
  743.         cmp.w    #$04,d5
  744.         beq    DoPage5
  745.         cmp.w    #$05,d5
  746.         beq    DoPage6
  747.         cmp.w    #$07,d5
  748.         beq    EditCmds_OUT
  749.         bra    Window2IDCMP
  750.  
  751. DoPage1:    bsr    SaveStrGads
  752.         bsr    RemGads2
  753.         move.w    #0,Page
  754.         bsr    SetStrGads
  755.         bsr    AddGads2
  756.         bra    Window2IDCMP
  757.  
  758. DoPage2:    bsr    SaveStrGads
  759.         bsr    RemGads2
  760.         move.w    #1,Page
  761.         bsr    SetStrGads
  762.         bsr    AddGads2
  763.         bsr    ActGad2
  764.         bra    Window2IDCMP
  765.  
  766. DoPage3:    bsr    SaveStrGads
  767.         bsr    RemGads2
  768.         move.w    #2,Page
  769.         bsr    SetStrGads
  770.         bsr    AddGads2
  771.         bsr    ActGad2
  772.         bra    Window2IDCMP
  773.  
  774. DoPage4:    bsr    SaveStrGads
  775.         bsr    RemGads2
  776.         move.w    #3,Page
  777.         bsr    SetStrGads
  778.         bsr    AddGads2
  779.         bsr    ActGad2
  780.         bra    Window2IDCMP
  781.  
  782. DoPage5:    bsr    SaveStrGads
  783.         bsr    RemGads2
  784.         move.w    #4,Page
  785.         bsr    SetStrGads
  786.         bsr    AddGads2
  787.         bsr    ActGad2
  788.         bra    Window2IDCMP
  789.  
  790. DoPage6:    bsr    SaveStrGads
  791.         bsr    RemGads2
  792.         move.w    #5,Page
  793.         bsr    SetStrGads
  794.         bsr    AddGads2
  795.         bsr    ActGad2
  796.         bra    Window2IDCMP
  797.  
  798. SaveStrGads:    lea.l    CmdList,a2
  799.         move.w    Page,d0
  800.         mulu.w    #NUMGADS*GADLENGTH,d0
  801.         add.l    d0,a2            ;a2=start of strings
  802.  
  803.         move.l    StrGadBuf1,a0
  804.         move.l    a2,a1
  805.         move.l    #GADLENG1,d0
  806.         add.l    d0,a2
  807.         lib    Exec,CopyMem
  808.  
  809.         move.l    StrGadBuf2,a0
  810.         move.l    a2,a1
  811.         move.l    #GADLENG2,d0
  812.         add.l    d0,a2
  813.         lib    Exec,CopyMem
  814.  
  815.         move.l    StrGadBuf3,a0
  816.         move.l    a2,a1
  817.         move.l    #GADLENG1,d0
  818.         add.l    d0,a2
  819.         lib    Exec,CopyMem
  820.  
  821.         move.l    StrGadBuf4,a0
  822.         move.l    a2,a1
  823.         move.l    #GADLENG2,d0
  824.         add.l    d0,a2
  825.         lib    Exec,CopyMem
  826.  
  827.         move.l    StrGadBuf5,a0
  828.         move.l    a2,a1
  829.         move.l    #GADLENG1,d0
  830.         add.l    d0,a2
  831.         lib    Exec,CopyMem
  832.  
  833.         move.l    StrGadBuf6,a0
  834.         move.l    a2,a1
  835.         move.l    #GADLENG2,d0
  836.         add.l    d0,a2
  837.         lib    Exec,CopyMem
  838.  
  839.         move.l    StrGadBuf7,a0
  840.         move.l    a2,a1
  841.         move.l    #GADLENG1,d0
  842.         add.l    d0,a2
  843.         lib    Exec,CopyMem
  844.  
  845.         move.l    StrGadBuf8,a0
  846.         move.l    a2,a1
  847.         move.l    #GADLENG2,d0
  848.         add.l    d0,a2
  849.         lib    Exec,CopyMem
  850.  
  851.         move.l    StrGadBuf9,a0
  852.         move.l    a2,a1
  853.         move.l    #GADLENG1,d0
  854.         add.l    d0,a2
  855.         lib    Exec,CopyMem
  856.  
  857.         move.l    StrGadBuf10,a0
  858.         move.l    a2,a1
  859.         move.l    #GADLENG2,d0
  860.         add.l    d0,a2
  861.         lib    Exec,CopyMem
  862.  
  863.         move.l    StrGadBuf11,a0
  864.         move.l    a2,a1
  865.         move.l    #GADLENG1,d0
  866.         add.l    d0,a2
  867.         lib    Exec,CopyMem
  868.  
  869.         move.l    StrGadBuf12,a0
  870.         move.l    a2,a1
  871.         move.l    #GADLENG2,d0
  872.         add.l    d0,a2
  873.         lib    Exec,CopyMem
  874.  
  875.         move.l    StrGadBuf13,a0
  876.         move.l    a2,a1
  877.         move.l    #GADLENG1,d0
  878.         add.l    d0,a2
  879.         lib    Exec,CopyMem
  880.  
  881.         move.l    StrGadBuf14,a0
  882.         move.l    a2,a1
  883.         move.l    #GADLENG2,d0
  884.         add.l    d0,a2
  885.         lib    Exec,CopyMem
  886.  
  887.         move.l    StrGadBuf15,a0
  888.         move.l    a2,a1
  889.         move.l    #GADLENG1,d0
  890.         add.l    d0,a2
  891.         lib    Exec,CopyMem
  892.  
  893.         move.l    StrGadBuf16,a0
  894.         move.l    a2,a1
  895.         move.l    #GADLENG2,d0
  896.         add.l    d0,a2
  897.         lib    Exec,CopyMem
  898.  
  899.         move.l    StrGadBuf17,a0
  900.         move.l    a2,a1
  901.         move.l    #GADLENG1,d0
  902.         add.l    d0,a2
  903.         lib    Exec,CopyMem
  904.  
  905.         move.l    StrGadBuf18,a0
  906.         move.l    a2,a1
  907.         move.l    #GADLENG2,d0
  908.         add.l    d0,a2
  909.         lib    Exec,CopyMem
  910.  
  911.         move.l    StrGadBuf19,a0
  912.         move.l    a2,a1
  913.         move.l    #GADLENG1,d0
  914.         add.l    d0,a2
  915.         lib    Exec,CopyMem
  916.  
  917.         move.l    StrGadBuf20,a0
  918.         move.l    a2,a1
  919.         move.l    #GADLENG2,d0
  920.         add.l    d0,a2
  921.         lib    Exec,CopyMem
  922.         rts
  923.  
  924. SetStrGads:    lea.l    CmdList,a2
  925.         move.w    Page,d0
  926.         mulu.w    #NUMGADS*GADLENGTH,d0
  927.         add.l    d0,a2            ;a2=start of strings
  928.  
  929.         move.l    a2,a0
  930.         move.l    StrGadBuf1,a1
  931.         move.l    #GADLENG1,d0
  932.         add.l    d0,a2
  933.         lib    Exec,CopyMem
  934.  
  935.         move.l    a2,a0
  936.         move.l    StrGadBuf2,a1
  937.         move.l    #GADLENG2,d0
  938.         add.l    d0,a2
  939.         lib    Exec,CopyMem
  940.  
  941.         move.l    a2,a0
  942.         move.l    StrGadBuf3,a1
  943.         move.l    #GADLENG1,d0
  944.         add.l    d0,a2
  945.         lib    Exec,CopyMem
  946.  
  947.         move.l    a2,a0
  948.         move.l    StrGadBuf4,a1
  949.         move.l    #GADLENG2,d0
  950.         add.l    d0,a2
  951.         lib    Exec,CopyMem
  952.  
  953.         move.l    a2,a0
  954.         move.l    StrGadBuf5,a1
  955.         move.l    #GADLENG1,d0
  956.         add.l    d0,a2
  957.         lib    Exec,CopyMem
  958.  
  959.         move.l    a2,a0
  960.         move.l    StrGadBuf6,a1
  961.         move.l    #GADLENG2,d0
  962.         add.l    d0,a2
  963.         lib    Exec,CopyMem
  964.  
  965.         move.l    a2,a0
  966.         move.l    StrGadBuf7,a1
  967.         move.l    #GADLENG1,d0
  968.         add.l    d0,a2
  969.         lib    Exec,CopyMem
  970.  
  971.         move.l    a2,a0
  972.         move.l    StrGadBuf8,a1
  973.         move.l    #GADLENG2,d0
  974.         add.l    d0,a2
  975.         lib    Exec,CopyMem
  976.  
  977.         move.l    a2,a0
  978.         move.l    StrGadBuf9,a1
  979.         move.l    #GADLENG1,d0
  980.         add.l    d0,a2
  981.         lib    Exec,CopyMem
  982.  
  983.         move.l    a2,a0
  984.         move.l    StrGadBuf10,a1
  985.         move.l    #GADLENG2,d0
  986.         add.l    d0,a2
  987.         lib    Exec,CopyMem
  988.  
  989.         move.l    a2,a0
  990.         move.l    StrGadBuf11,a1
  991.         move.l    #GADLENG1,d0
  992.         add.l    d0,a2
  993.         lib    Exec,CopyMem
  994.  
  995.         move.l    a2,a0
  996.         move.l    StrGadBuf12,a1
  997.         move.l    #GADLENG2,d0
  998.         add.l    d0,a2
  999.         lib    Exec,CopyMem
  1000.  
  1001.         move.l    a2,a0
  1002.         move.l    StrGadBuf13,a1
  1003.         move.l    #GADLENG1,d0
  1004.         add.l    d0,a2
  1005.         lib    Exec,CopyMem
  1006.  
  1007.         move.l    a2,a0
  1008.         move.l    StrGadBuf14,a1
  1009.         move.l    #GADLENG2,d0
  1010.         add.l    d0,a2
  1011.         lib    Exec,CopyMem
  1012.  
  1013.         move.l    a2,a0
  1014.         move.l    StrGadBuf15,a1
  1015.         move.l    #GADLENG1,d0
  1016.         add.l    d0,a2
  1017.         lib    Exec,CopyMem
  1018.  
  1019.         move.l    a2,a0
  1020.         move.l    StrGadBuf16,a1
  1021.         move.l    #GADLENG2,d0
  1022.         add.l    d0,a2
  1023.         lib    Exec,CopyMem
  1024.  
  1025.         move.l    a2,a0
  1026.         move.l    StrGadBuf17,a1
  1027.         move.l    #GADLENG1,d0
  1028.         add.l    d0,a2
  1029.         lib    Exec,CopyMem
  1030.  
  1031.         move.l    a2,a0
  1032.         move.l    StrGadBuf18,a1
  1033.         move.l    #GADLENG2,d0
  1034.         add.l    d0,a2
  1035.         lib    Exec,CopyMem
  1036.  
  1037.         move.l    a2,a0
  1038.         move.l    StrGadBuf19,a1
  1039.         move.l    #GADLENG1,d0
  1040.         add.l    d0,a2
  1041.         lib    Exec,CopyMem
  1042.  
  1043.         move.l    a2,a0
  1044.         move.l    StrGadBuf20,a1
  1045.         move.l    #GADLENG2,d0
  1046.         add.l    d0,a2
  1047.         lib    Exec,CopyMem
  1048.         rts
  1049.  
  1050. EditCmds_OUT:    bsr    SaveStrGads
  1051.         bsr    AddVTask
  1052.         bsr    CloseWin2
  1053.         clr.w    DisActive    ;Can turn on/off
  1054.         bsr    AddGads
  1055.         bsr    MenusOn
  1056.         bsr    NormalPointer
  1057.         bra    Window1IDCMP
  1058.  
  1059. EditKeys:    cmp.w    #$1b,d3
  1060.         beq    EditCmds_OUT
  1061.         cmp.w    #'g',d3
  1062.         beq    Get
  1063.         cmp.w    #'G',d3
  1064.         beq    Get
  1065.         bra    Window2IDCMP
  1066.  
  1067. GetGadAddr2:    cmp.w    #2,$26(a5)
  1068.         beq    GetGadAddr2.1
  1069.         clr.l    LastGad
  1070.         move.l    GetGad1,a0
  1071.         move.l    Window2,a1
  1072.         sub.l    a2,a2
  1073.         lea.l    DisabledTags,a3
  1074.         lib    GadTools,GT_SetGadgetAttrsA
  1075.         bra    Window2IDCMP
  1076. GetGadAddr2.1:    move.l    a5,LastGad
  1077.         move.l    GetGad1,a0
  1078.         move.l    Window2,a1
  1079.         sub.l    a2,a2
  1080.         lea.l    EnabledTags,a3
  1081.         lib    GadTools,GT_SetGadgetAttrsA
  1082.         bra    Window2IDCMP
  1083.  
  1084. Get:        tst.l    LastGad
  1085.         beq    Get_OUT2
  1086.  
  1087.         move.l    AslReq,a0
  1088.         lea.l    GetReqTags,a1
  1089.         lib    Asl,AslRequest
  1090.         tst.l    d0
  1091.         beq    Get_OUT1
  1092.  
  1093.         move.l    LastGad,a5
  1094.         bsr    RemGads2
  1095.         bsr    MakeCmd
  1096.         bsr    AddGads2
  1097.  
  1098. Get_OUT1:    move.l    LastGad,a0
  1099.         move.l    Window2,a1
  1100.         sub.l    a2,a2
  1101.         lib    Intuition,ActivateGadget
  1102.  
  1103. Get_OUT2:    bra    Window2IDCMP
  1104.  
  1105. SetPriority:    move.w    #1,DisActive        ;Can't turn on/off
  1106.         bsr    RemVTask1
  1107.         bsr    SleepPointer
  1108.         bsr    MenusOff
  1109.         bsr    RemGads
  1110.  
  1111.         bsr    OpenWin3
  1112.         tst.l    d0
  1113.         beq    NoWindow1
  1114.  
  1115. Window3IDCMP:    move.l    Window3,a0
  1116.         bsr    CheckIDCMP
  1117.  
  1118.         tst.l    d0
  1119.         beq    ShutDown
  1120.         cmp.l    #4,d0
  1121.         beq    Window3IDCMP
  1122.         cmp.l    #GADGETUP,d2
  1123.         beq    SetPriority2
  1124.         cmp.l    #CLOSEWINDOW,d2
  1125.         beq    SetPri_OUT
  1126.         cmp.l    #VANILLAKEY,d2
  1127.         beq    SetPriKeys
  1128.         cmp.l    #ACTIVEWINDOW,d2
  1129.         beq    GoActGads3
  1130.         cmp.l    #REFRESHWINDOW,d2
  1131.         beq    Refresher3
  1132.         bra    Window3IDCMP
  1133.  
  1134. Refresher3:    move.l    Window3,a0
  1135.         lib    GadTools,GT_BeginRefresh
  1136.         move.l    Window3,a0
  1137.         move.l    #TRUE,d0
  1138.         lib    GadTools,GT_EndRefresh
  1139.         bra    Window3IDCMP
  1140.  
  1141. SetPriority2:    move.l    StrGadInt21,a0
  1142.         move.l    (a0),d0
  1143.  
  1144.         tst.l    d0
  1145.         bmi    SetPriority2.1
  1146.  
  1147.         cmp.l    #127,d0
  1148.         bhi    SetPriority3
  1149.  
  1150.         move.l    d0,PrefsPriority
  1151.         bra    SetPri_OUT
  1152.  
  1153. SetPriority2.1:    cmp.l    #-128,d0
  1154.         bcs    SetPriority3
  1155.  
  1156.         move.l    d0,PrefsPriority
  1157.         bra    SetPri_OUT
  1158.  
  1159. SetPriority3:    sub.l    a0,a0
  1160.         lib    Intuition,DisplayBeep
  1161.  
  1162.         move.l    StrGad21,a0
  1163.         move.l    Window3,a1
  1164.         sub.l    a2,a2
  1165.         lea.l    StrGadTagList3,a3
  1166.         lib    GadTools,GT_SetGadgetAttrsA
  1167.         bra    GoActGads3
  1168.  
  1169. SetPri_OUT:    bsr    CloseWin3
  1170.         bsr    AddVTask
  1171.         clr.w    DisActive        ;Can turn on/off
  1172.         bsr    AddGads
  1173.         bsr    MenusOn
  1174.         bsr    NormalPointer
  1175.         bra    Window1IDCMP
  1176.  
  1177. GoActGads3:    bsr    ActGad3
  1178.         bra    Window3IDCMP
  1179.  
  1180. SetPriKeys:    cmp.w    #$1b,d3
  1181.         beq    SetPri_OUT
  1182.         bra    Window3IDCMP
  1183.  
  1184. DoVoice:    cmp.w    #-1,d3
  1185.         beq    VoiceUnknown
  1186.         cmp.w    #-2,d3
  1187.         beq    VoiceClip
  1188.         cmp.w    #-3,d3
  1189.         beq    VoiceLow
  1190.         cmp.w    #-4,d3
  1191.         beq    VoiceNoisy
  1192.  
  1193.         cmp.w    PrefsScore,a4
  1194.         bcs    VoiceUnknown
  1195.  
  1196.         lea.l    CmdList,a2
  1197.         move.w    d3,d0
  1198.         mulu.w    #GADLENGTH,d0
  1199.         add.l    d0,a2            ;a2=start of strings
  1200.  
  1201.         move.l    a2,a0
  1202.  
  1203.         push    a2
  1204.         bsr    GetLength
  1205.         bsr    Inform
  1206.         pull    a2
  1207.  
  1208.         clr.w    TickCount
  1209.  
  1210.         add.l    #GADLENG1,a2
  1211.         cmp.l    #0,(a2)
  1212.         beq    DoVoice2
  1213.  
  1214.         cmp.b    #'~',(a2)
  1215.         beq    DoSpecial
  1216.  
  1217.         move.l    a2,d1            ;execute command
  1218.         clr.l    d2
  1219.         lib    Dos,SystemTagList
  1220.  
  1221.         cmp.l    #-1,d0
  1222.         beq    DoVoice3
  1223.         bra    Window1IDCMP
  1224.  
  1225. DoSpecial:    add.l    #1,a2
  1226.         cmp.b    #'K',(a2)
  1227.         beq    DoSpecial2
  1228.         bra    DoVoice2        ;No Command
  1229.  
  1230. DoSpecial2:    add.l    #2,a2            ;Skip shortcut and space
  1231.         move.l    a2,a0
  1232.         lea.l    StringBuffer,a1
  1233.         bsr    CopyStrs
  1234.  
  1235.         bsr    SendEvents
  1236.         move.l    #4,d2
  1237.         tst.l    IEvents
  1238.         beq    DoVoice3        ;Command failed
  1239.         clr.l    IEvents
  1240.         bra    Window1IDCMP
  1241.  
  1242. DoVoice2:    lea.l    NoCMDText1,a0
  1243.         bsr    GetLength
  1244.         bsr    Inform
  1245.         clr.w    TickCount
  1246.         bra    Window1IDCMP
  1247. DoVoice3:    lea.l    CMDFailText1,a0
  1248.         bsr    GetLength
  1249.         bsr    Inform
  1250.         clr.w    TickCount
  1251.         bra    Window1IDCMP
  1252.  
  1253. VoiceUnknown:    lea.l    NoMatchText1,a0
  1254.         bsr    GetLength
  1255.         bsr    Inform
  1256.         clr.w    TickCount
  1257.         bra    Window1IDCMP
  1258. VoiceClip:    lea.l    ClippingText1,a0
  1259.         bsr    GetLength
  1260.         bsr    Inform
  1261.         clr.w    TickCount
  1262.         bra    Window1IDCMP
  1263. VoiceLow:    lea.l    LowVolText1,a0
  1264.         bsr    GetLength
  1265.         bsr    Inform
  1266.         clr.w    TickCount
  1267.         bra    Window1IDCMP
  1268. VoiceNoisy:    lea.l    NoisyText1,a0
  1269.         bsr    GetLength
  1270.         bsr    Inform
  1271.         clr.w    TickCount
  1272.         bra    Window1IDCMP
  1273.  
  1274. CX:        cmp.l    #CXM_COMMAND,d2
  1275.         beq    DoCXCommand
  1276.         cmp.l    #CXM_IEVENT,d2
  1277.         beq    DoCXAppear
  1278.         move.l    #4,d0
  1279.         rts                ;Unknown command
  1280.  
  1281. DoCXCommand:    cmp.l    #CXCMD_APPEAR,d3
  1282.         beq    DoCXAppear
  1283.         cmp.l    #CXCMD_DISAPPEAR,d3
  1284.         beq    DoCXDisappear
  1285.         cmp.l    #CXCMD_KILL,d3
  1286.         beq    DoCXKill
  1287.         cmp.l    #CXCMD_UNIQUE,d3
  1288.         beq    DoCXAppear
  1289.         cmp.l    #CXCMD_ENABLE,d3
  1290.         beq    DoCXEnable
  1291.         cmp.l    #CXCMD_DISABLE,d3
  1292.         beq    DoCXDisable
  1293.         move.l    #4,d0
  1294.         rts                ;Unknown message
  1295.  
  1296. DoCXKill:    clr.l    d0
  1297.         rts
  1298.  
  1299. DoCXAppear:    tst.l    Window1
  1300.         bne    DoCXAppear_OUT
  1301.         tst.w    DisActive
  1302.         bne    DoCXDisap_OUT
  1303.         clr.l    OptionIconify
  1304.         bsr    OpenWin1
  1305.         bsr    SetModes
  1306.         tst.l    Window1
  1307.         bne    DoCXAppear_OUT
  1308.         sub.l    a0,a0
  1309.         lib    Intuition,DisplayBeep    ;Beep on error
  1310. DoCXAppear_OUT:    move.l    #4,d0
  1311.         rts
  1312.  
  1313. DoDoCXDisappear: bsr    DoCXDisappear
  1314.         bra    Window1IDCMP
  1315.  
  1316. DoCXDisappear:    tst.l    Window1
  1317.         beq    DoCXDisap_OUT
  1318.         tst.w    DisActive
  1319.         bne    DoCXDisap_OUT
  1320.         bsr    CheckModes
  1321.         bsr    CloseWin1
  1322. DoCXDisap_OUT:    move.l    #4,d0
  1323.         rts
  1324.  
  1325. DoCXEnable:    tst.w    DisActive
  1326.         bne    DoCXEnable1
  1327.         bsr    CLITypeOn
  1328. DoCXEnable_OUT:    move.l    #4,d0
  1329.         rts
  1330. DoCXEnable1:    bsr    CXDisable        ;Can't turn on
  1331.         bra    DoCXEnable_OUT
  1332.  
  1333. DoCXDisable:    tst.w    DisActive
  1334.         bne    DoCXDisable1
  1335.         bsr    CLITypeOff
  1336. DoCXDis_OUT:    move.l    #4,d0
  1337.         rts
  1338. DoCXDisable1:    bsr    CXEnable        ;Can't turn off
  1339.         bra    DoCXDis_OUT
  1340.  
  1341. CXEnable:    move.l    CXBroker1,a0
  1342.         move.l    #TRUE,d0
  1343.         lib    Commodities,ActivateCxObj
  1344.         rts
  1345.  
  1346. CXDisable:    move.l    CXBroker1,a0
  1347.         move.l    #FALSE,d0
  1348.         lib    Commodities,ActivateCxObj
  1349.         rts
  1350.  
  1351. DoSetResLo:    bsr    SetResLo
  1352.         bra    Window1IDCMP
  1353.  
  1354. DoSetResHi:    bsr    SetResHi
  1355.         bra    Window1IDCMP
  1356.  
  1357. SetResLo:    bsr    RemVTask1
  1358.         move.b    #RES_LO,PrefsSampRes
  1359.         bsr    AddVTask
  1360.         rts
  1361. SetResHi:    bsr    RemVTask1
  1362.         move.b    #RES_HI,PrefsSampRes
  1363.         bsr    AddVTask
  1364.         rts
  1365.  
  1366. DoSetAccLowest:    bsr    SetAccLowest
  1367.         bra    Window1IDCMP
  1368.  
  1369. DoSetAccLower:    bsr    SetAccLower
  1370.         bra    Window1IDCMP
  1371.  
  1372. DoSetAccLow:    bsr    SetAccLow
  1373.         bra    Window1IDCMP
  1374.  
  1375. DoSetAccNormal:    bsr    SetAccNormal
  1376.         bra    Window1IDCMP
  1377.  
  1378. DoSetAccHigh:    bsr    SetAccHigh
  1379.         bra    Window1IDCMP
  1380.  
  1381. DoSetAccHigher:    bsr    SetAccHigher
  1382.         bra    Window1IDCMP
  1383.  
  1384. DoSetAccEHigher: bsr    SetAccEHigher
  1385.         bra    Window1IDCMP
  1386.  
  1387. DoSetAccMaximum: bsr    SetAccMaximum
  1388.         bra    Window1IDCMP
  1389.  
  1390.  
  1391. SetAccLowest:    move.w    #AccVal1,PrefsScore
  1392.         rts
  1393.  
  1394. SetAccLower:    move.w    #AccVal2,PrefsScore
  1395.         rts
  1396.  
  1397. SetAccLow:    move.w    #AccVal3,PrefsScore
  1398.         rts
  1399.  
  1400. SetAccNormal:    move.w    #AccVal4,PrefsScore
  1401.         rts
  1402.  
  1403. SetAccHigh:    move.w    #AccVal5,PrefsScore
  1404.         rts
  1405.  
  1406. SetAccHigher:    move.w    #AccVal6,PrefsScore
  1407.         rts
  1408.  
  1409. SetAccEHigher:    move.w    #AccVal7,PrefsScore
  1410.         rts
  1411.  
  1412. SetAccMaximum:    move.w    #AccVal8,PrefsScore
  1413.         rts
  1414.  
  1415. DoSetLeft:    bsr    SetLeft
  1416.         bra    Window1IDCMP
  1417.  
  1418. DoSetRight:    bsr    SetRight
  1419.         bra    Window1IDCMP
  1420.  
  1421. DoCTRL_D:    tst.w    DisActive
  1422.         bne    DoCTRL_D_OUT
  1423.         bsr    CLITypeOff
  1424. DoCTRL_D_OUT:    bra    Window1IDCMP
  1425.  
  1426. DoCTRL_E:    tst.w    DisActive
  1427.         bne    DoCTRL_E_OUT
  1428.         bsr    CLITypeOn
  1429. DoCTRL_E_OUT:    bra    Window1IDCMP
  1430.  
  1431. CLITypeOff:    bsr    RemGads
  1432.         move.l    OnOffGad1,a0
  1433.         and.w    #~SELECTED,gg_Flags(a0)
  1434.         move.l    #5625242,d5        ;inform user
  1435.         bsr    RemVTask1
  1436.         bsr    AddGads
  1437.         rts
  1438.  
  1439. CLITypeOn:    bsr    RemGads
  1440.         move.l    OnOffGad1,a0
  1441.         or.w    #SELECTED,gg_Flags(a0)
  1442.         move.l    #5625242,d5        ;inform user
  1443.         bsr    AddVTask1
  1444.         bsr    AddGads
  1445.         rts
  1446.  
  1447. SetLeft:    move.b    #CHANNEL_LEFT,PrefsChannel
  1448.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1449.         beq    SetLeft_OUT
  1450.         bsr    RemVTask1
  1451.         move.l    #CHANNEL_LEFT,d0
  1452.         lib    Voice,PickChannel
  1453.         bsr    AddVTask
  1454. SetLeft_OUT:    rts
  1455.  
  1456. SetRight:    move.b    #CHANNEL_RIGHT,PrefsChannel
  1457.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1458.         beq    SetRight_OUT
  1459.         bsr    RemVTask1
  1460.         move.l    #CHANNEL_RIGHT,d0
  1461.         lib    Voice,PickChannel
  1462.         bsr    AddVTask
  1463. SetRight_OUT:    rts
  1464.  
  1465. DoSetMic:    bsr    SetMic
  1466.         bra    Window1IDCMP
  1467.  
  1468. DoSetLine:    bsr    SetLine
  1469.         bra    Window1IDCMP
  1470.  
  1471. SetMic:        move.b    #INPUT_MIC,PrefsInput
  1472.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1473.         beq    SetMic_OUT
  1474.         bsr    RemVTask1
  1475.         move.l    #INPUT_MIC,d0
  1476.         lib    Voice,PickInput
  1477.         bsr    AddVTask
  1478. SetMic_OUT:    rts
  1479.  
  1480. SetLine:    move.b    #INPUT_LINE,PrefsInput
  1481.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1482.         beq    SetLine_OUT
  1483.         bsr    RemVTask1
  1484.         move.l    #INPUT_LINE,d0
  1485.         lib    Voice,PickInput
  1486.         bsr    AddVTask
  1487. SetLine_OUT:    rts
  1488.  
  1489. DoSetSamp1:    bsr    SetSamp1
  1490.         bra    Window1IDCMP
  1491. DoSetSamp2:    bsr    SetSamp2
  1492.         bra    Window1IDCMP
  1493. DoSetSamp3:    bsr    SetSamp3
  1494.         bra    Window1IDCMP
  1495. DoSetSamp4:    bsr    SetSamp4
  1496.         bra    Window1IDCMP
  1497.  
  1498. SetSamp1:    bsr    RemVTask1
  1499.         move.b    #SAMP_PERFSND,PrefsSampType        ;PerfectSound
  1500.         move.l    #SAMP_PERFSND,d0
  1501.         clr.l    d1
  1502.         lib    Voice,PickSampler
  1503.         bsr    RemGads
  1504.         move.l    GainUGad1,a0
  1505.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1506.         move.l    GainDGad1,a0
  1507.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1508.         bsr    AddGads
  1509.         bsr    AddVTask
  1510.         rts
  1511. SetSamp2:    bsr    RemVTask1
  1512.         move.b    #SAMP_SNDMSTR,PrefsSampType        ;SoundMaster
  1513.         move.l    #SAMP_SNDMSTR,d0
  1514.         clr.l    d1
  1515.         lib    Voice,PickSampler
  1516.         bsr    RemGads
  1517.         move.l    GainUGad1,a0
  1518.         or.w    #GADGDISABLED,gg_Flags(a0)
  1519.         move.l    GainDGad1,a0
  1520.         or.w    #GADGDISABLED,gg_Flags(a0)
  1521.         bsr    AddGads
  1522.         bsr    AddVTask
  1523.         rts
  1524. SetSamp3:    bsr    RemVTask1
  1525.         move.b    #SAMP_DSS8,PrefsSampType        ;DSS8
  1526.         move.l    #SAMP_DSS8,d0
  1527.         clr.l    d1
  1528.         move.b    PrefsGain,d1
  1529.         lib    Voice,PickSampler
  1530.         bsr    RemGads
  1531.         move.l    GainUGad1,a0
  1532.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1533.         move.l    GainDGad1,a0
  1534.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1535.         bsr    AddGads
  1536.         bsr    AddVTask
  1537.         rts
  1538. SetSamp4:    bsr    RemVTask1
  1539.         move.b    #SAMP_GENERIC,PrefsSampType        ;Generic
  1540.         move.l    #SAMP_GENERIC,d0
  1541.         clr.l    d1
  1542.         lib    Voice,PickSampler
  1543.         bsr    RemGads
  1544.         move.l    GainUGad1,a0
  1545.         or.w    #GADGDISABLED,gg_Flags(a0)
  1546.         move.l    GainDGad1,a0
  1547.         or.w    #GADGDISABLED,gg_Flags(a0)
  1548.         bsr    AddGads
  1549.         bsr    AddVTask
  1550.         rts
  1551.  
  1552. DoSetTimerA:    bsr    SetTimerA
  1553.         bra    Window1IDCMP
  1554.  
  1555. DoSetTimerB:    bsr    SetTimerB
  1556.         bra    Window1IDCMP
  1557.  
  1558. SetTimerA:    bsr    RemVTask1
  1559.         move.b    #TIMER_A,PrefsTimer        ;Timer A=1
  1560.         move.l    #TIMER_A,d0
  1561.         lib    Voice,PickTimer
  1562.         bsr    AddVTask
  1563.         rts
  1564.  
  1565. SetTimerB:    bsr    RemVTask1
  1566.         move.b    #TIMER_B,PrefsTimer        ;Timer B=0
  1567.         move.l    #TIMER_B,d0
  1568.         lib    Voice,PickTimer
  1569.         bsr    AddVTask
  1570.         rts
  1571.  
  1572. ToFront:    tst.l    Window1
  1573.         beq    ToFront_OUT
  1574.         move.l    Window1,a0
  1575.         lib    Intuition,WindowToFront
  1576. ToFront_OUT:    rts
  1577.  
  1578. ToBack:        tst.l    Window
  1579.         beq    ToBack_OUT
  1580.         move.l    Window1,a0
  1581.         lib    Intuition,WindowToBack
  1582. ToBack_OUT:    rts
  1583.  
  1584. Zoom:        tst.l    Window1
  1585.         beq    Zoom_OUT
  1586.         move.l    Window1,a0
  1587.         lib    Intuition,ZipWindow
  1588. Zoom_OUT:    rts
  1589.  
  1590. DoLoad:        bsr    Load            ;RemVTask1 in Load
  1591.         bsr    AddVTask
  1592.         move.l    #5,d1
  1593.         lib    Dos,Delay
  1594.         bra    ActivateGads
  1595.  
  1596. DoDataLoad:    bsr    RemGads                ;RemVTask1 in Load
  1597.         bsr    Load2.1
  1598.         bsr    AddVTask
  1599.         bsr    AddGads            ;Keep Add/RemGads (Load2.1)
  1600.         move.l    #5,d1
  1601.         lib    Dos,Delay
  1602.         bra    Window1IDCMP
  1603.  
  1604. DoOnOff:    move.l    #5625242,d5        ;inform user
  1605.         bsr    AddVTask        ;one or the other
  1606.         bsr    RemVTask        ;will respond
  1607.         bra    Window1IDCMP
  1608.  
  1609. DoGainUp:    bsr    GainUp
  1610.         bra    Window1IDCMP
  1611. DoGainDown:    bsr    GainDown
  1612.         bra    Window1IDCMP
  1613.  
  1614. GainUp:        lib    Voice,GainUp
  1615.         cmp.b    #SAMP_DSS8,PrefsSampType
  1616.         bne    GainUp_OUT
  1617.         lib    Voice,WhatGain
  1618.         move.b    d0,PrefsGain
  1619.         move.l    d0,GainPointer
  1620.  
  1621.         tst.l    Window1
  1622.         beq    GainUp_OUT
  1623.         move.l    GainGad1,a0
  1624.         move.l    Window1,a1
  1625.         sub.l    a2,a2
  1626.         lea.l    GainGadTagList,a3
  1627.         lib    GadTools,GT_SetGadgetAttrsA
  1628. GainUp_OUT:    rts
  1629.  
  1630. GainDown:    lib    Voice,GainDown
  1631.         cmp.b    #SAMP_DSS8,PrefsSampType
  1632.         bne    GainDown_OUT
  1633.         lib    Voice,WhatGain
  1634.         move.b    d0,PrefsGain
  1635.         move.l    d0,GainPointer
  1636.  
  1637.         tst.l    Window1
  1638.         beq    GainDown_OUT
  1639.         move.l    GainGad1,a0
  1640.         move.l    Window1,a1
  1641.         sub.l    a2,a2
  1642.         lea.l    GainGadTagList,a3
  1643.         lib    GadTools,GT_SetGadgetAttrsA
  1644. GainDown_OUT:    rts
  1645.  
  1646. ActivateGads:    tst.l    Window1
  1647.         beq    ActivateGs_OUT
  1648.         move.l    DatStrGad1,a0
  1649.         move.l    Window1,a1
  1650.         sub.l    a2,a2
  1651.         lib    Intuition,ActivateGadget
  1652. ActivateGs_OUT:    bra    Window1IDCMP
  1653.  
  1654. ActGad:        tst.l    Window1
  1655.         beq    ActGad_OUT
  1656.         move.l    DatStrGad1,a0
  1657.         move.l    Window1,a1
  1658.         sub.l    a2,a2
  1659.         lib    Intuition,ActivateGadget
  1660. ActGad_OUT:    rts
  1661.  
  1662. ActivateGads2:    cmp.w    #55,$26(a5)
  1663.         beq    Get
  1664.         cmp.w    #1,$26(a5)
  1665.         beq    Learn
  1666.         cmp.w    #2,$26(a5)
  1667.         bne    Window2IDCMP
  1668.         cmp.l    #$00,(a5)
  1669.         beq    ActivateGads2.01
  1670.         move.l    (a5),a0
  1671.         move.l    StrGad20,a1
  1672.         cmp.l    a5,a1
  1673.         bne    ActivateGads2.1
  1674. ActivateGads2.01: move.l StrGad1,a0
  1675. ActivateGads2.1: move.l Window2,a1
  1676.         sub.l    a2,a2
  1677.         lib    Intuition,ActivateGadget
  1678.         bra    Window2IDCMP
  1679.  
  1680. ActGad2:    move.l    StrGad1,a0
  1681.         move.l    Window2,a1
  1682.         sub.l    a2,a2
  1683.         lib    Intuition,ActivateGadget
  1684.         rts
  1685.  
  1686. ActGad3:    move.l    StrGad21,a0
  1687.         move.l    Window3,a1
  1688.         sub.l    a2,a2
  1689.         lib    Intuition,ActivateGadget
  1690.         rts
  1691.  
  1692. Learn:        move.w    Page,d0
  1693.         mulu.w    #NUMGADS,d0
  1694.         move.l    $22(a5),a0
  1695.         move.l    (a0),a0
  1696.         cmp.l    StrGadBuf1,a0
  1697.         bne    Learn1
  1698.         add.w    #1,d0
  1699.         bra    Learn10
  1700. Learn1:        cmp.l    StrGadBuf3,a0
  1701.         bne    Learn2
  1702.         add.w    #2,d0
  1703.         bra    Learn10
  1704. Learn2:        cmp.l    StrGadBuf5,a0
  1705.         bne    Learn3
  1706.         add.w    #3,d0
  1707.         bra    Learn10
  1708. Learn3:        cmp.l    StrGadBuf7,a0
  1709.         bne    Learn4
  1710.         add.w    #4,d0
  1711.         bra    Learn10
  1712. Learn4:        cmp.l    StrGadBuf9,a0
  1713.         bne    Learn5
  1714.         add.w    #5,d0
  1715.         bra    Learn10
  1716. Learn5:        cmp.l    StrGadBuf11,a0
  1717.         bne    Learn6
  1718.         add.w    #6,d0
  1719.         bra    Learn10
  1720. Learn6:        cmp.l    StrGadBuf13,a0
  1721.         bne    Learn7
  1722.         add.w    #7,d0
  1723.         bra    Learn10
  1724. Learn7:        cmp.l    StrGadBuf15,a0
  1725.         bne    Learn8
  1726.         add.w    #8,d0
  1727.         bra    Learn10
  1728. Learn8:        cmp.l    StrGadBuf17,a0
  1729.         bne    Learn9
  1730.         add.w    #9,d0
  1731.         bra    Learn10
  1732. Learn9:        cmp.l    StrGadBuf19,a0
  1733.         bne    Learn10
  1734.         add.w    #10,d0
  1735.  
  1736. Learn10:    sub.w    #1,d0
  1737.         lea.l    MapBuffer,a0
  1738.         move.l    $22(a5),a1
  1739.         move.l    (a1),a1
  1740.         sub.l    a2,a2        ;screen
  1741.         move.l    #220,d1
  1742.         move.l    #42,d2
  1743.         lib    Voice,Learn
  1744.         move.l    (a5),a0
  1745.         bra    ActivateGads2.1
  1746.  
  1747. Load:        bsr    RemVTask1
  1748.  
  1749.         move.l    FromFile,d1        ;If set to something else
  1750.         bne    Load1
  1751.         lea.l    PrefsName,a0
  1752.         move.l    a0,d1
  1753. Load1:        move.l    #MODE_OLDFILE,d2
  1754.         lib    Dos,Open
  1755.         move.l    d0,PrefsFile
  1756.         beq    Load_ERR1
  1757.  
  1758.         move.l    PrefsFile,d1
  1759.         lea.l    Prefs,a0
  1760.         move.l    a0,d2
  1761.         move.l    #4,d3
  1762.         lib    Dos,Read
  1763.         cmp.l    #4,d0
  1764.         bne    Load_ERR2
  1765.  
  1766.         cmp.l    #VSFileVersion,Prefs
  1767.         bne    Load_ERR3
  1768.  
  1769.         move.l    PrefsFile,d1
  1770.         add.l    #4,d2
  1771.         move.l    #PrefsSize-4,d3
  1772.         lib    Dos,Read
  1773.         cmp.l    #PrefsSize-4,d0
  1774.         bne    Load_ERR2
  1775.  
  1776. Load2:        bsr    SetModes        ;fixes startup datafile bug
  1777. Load2.1:    move.l    DatStrGadBuf1,d1    ;jump here to load data file
  1778.         move.l    #MODE_OLDFILE,d2
  1779.         lib    Dos,Open
  1780.         move.l    d0,DataFile
  1781.         beq    Load_ERR1.1
  1782.  
  1783.         move.l    DataFile,d1
  1784.         lea.l    MapBuffer,a0
  1785.         move.l    a0,d2
  1786.         move.l    #DataSize,d3
  1787.         lib    Dos,Read
  1788.         cmp.l    #DataSize,d0
  1789.         bne    Load_ERR2
  1790.  
  1791.         move.w    #1,Saved
  1792.  
  1793. Load_OUT:    move.l    DataFile,d1
  1794.         beq    Load_OUT0.1
  1795.         lib    Dos,Close
  1796.         clr.l    DataFile
  1797. Load_OUT0.1:    move.l    PrefsFile,d1
  1798.         beq    Load_OUT1
  1799.         lib    Dos,Close
  1800.         clr.l    PrefsFile
  1801.  
  1802. Load_OUT1:    rts
  1803.  
  1804. Load_ERR1:    lea.l    File_ERRTxt1,a1
  1805.         sub.l    a2,a2
  1806.         lea.l    OKTxt,a3
  1807.         bsr    DoAutoRequest
  1808.         bra    Load2
  1809.  
  1810. Load_ERR1.1:    lea.l    File_ERRTxt4,a1
  1811.         sub.l    a2,a2
  1812.         lea.l    OKTxt,a3
  1813.         bsr    DoAutoRequest
  1814.         bra    Load_OUT
  1815.  
  1816. Load_ERR2:    lea.l    File_ERRTxt2,a1
  1817.         sub.l    a2,a2
  1818.         lea.l    OKTxt,a3
  1819.         bsr    DoAutoRequest
  1820.         bra    Load2
  1821.  
  1822. Load_ERR3:    lea.l    File_ERRTxt3,a1
  1823.         sub.l    a2,a2
  1824.         lea.l    OKTxt,a3
  1825.         bsr    DoAutoRequest
  1826.         bra    Load2
  1827.  
  1828. Save:        bsr    CheckModes
  1829.  
  1830.         move.l    FromFile,d1        ;If set to something else
  1831.         bne    Save1
  1832.         lea.l    PrefsName,a0
  1833.         move.l    a0,d1
  1834. Save1:        move.l    #MODE_NEWFILE,d2
  1835.         lib    Dos,Open
  1836.         move.l    d0,PrefsFile
  1837.         beq    Save_ERR1
  1838.  
  1839.         move.l    #VSFileVersion,Prefs
  1840.  
  1841.         move.l    PrefsFile,d1
  1842.         lea.l    Prefs,a0
  1843.         move.l    a0,d2
  1844.         move.l    #PrefsSize,d3
  1845.         lib    Dos,Write
  1846.         cmp.l    #PrefsSize,d0
  1847.         bne    Save_ERR2
  1848.  
  1849. Save2:        move.l    DatStrGadBuf1,d1
  1850.         move.l    #MODE_NEWFILE,d2
  1851.         lib    Dos,Open
  1852.         move.l    d0,DataFile
  1853.         beq    Save_ERR1.1
  1854.  
  1855.         move.l    DataFile,d1
  1856.         lea.l    MapBuffer,a0
  1857.         move.l    a0,d2
  1858.         move.l    #DataSize,d3
  1859.         lib    Dos,Write
  1860.         cmp.l    #DataSize,d0
  1861.         bne    Save_ERR2
  1862.  
  1863.         move.w    #1,Saved
  1864.  
  1865. Save_OUT:    move.l    DataFile,d1
  1866.         beq    Save_OUT0.1
  1867.         lib    Dos,Close
  1868.         clr.l    DataFile
  1869. Save_OUT0.1:    move.l    PrefsFile,d1
  1870.         beq    Save_OUT1
  1871.         lib    Dos,Close
  1872.         clr.l    PrefsFile
  1873. Save_OUT1:    bra    ActivateGads
  1874.  
  1875. Save_ERR1:    lea.l    File_ERRTxt1,a1
  1876.         move.l    #$00,a2
  1877.         lea.l    OKTxt,a3
  1878.         bsr    DoAutoRequest
  1879.         clr.w    Saved
  1880.         bra    Save2
  1881.  
  1882. Save_ERR1.1:    lea.l    File_ERRTxt4,a1
  1883.         move.l    #$00,a2
  1884.         lea.l    OKTxt,a3
  1885.         bsr    DoAutoRequest
  1886.         clr.w    Saved
  1887.         bra    Save_OUT
  1888.  
  1889. Save_ERR2:    lea.l    File_ERRTxt2,a1
  1890.         move.l    #$00,a2
  1891.         lea.l    OKTxt,a3
  1892.         bsr    DoAutoRequest
  1893.         clr.w    Saved
  1894.         bra    Save_OUT
  1895.  
  1896. About:        move.w    #-1,DisActive
  1897.         bsr    RemVTask1
  1898.         bsr    SleepPointer
  1899.         bsr    MenusOff
  1900.         bsr    RemGads
  1901.  
  1902.         move.l    Window1,a0
  1903.         lea.l    AboutTxt1,a1
  1904.         sub.l    a2,a2        ;positive text
  1905.         lea.l    OKTxt,a3    ;a bit the wrong way around but...
  1906.         clr.l    d0
  1907.         clr.l    d1
  1908.         move.l    #320,d2
  1909.         move.l    #$50,d3
  1910.         lib    Intuition,AutoRequest
  1911.         clr.w    DisActive
  1912.         bsr    AddGads
  1913.         bsr    MenusOn
  1914.         bsr    NormalPointer
  1915.         bsr    AddVTask
  1916.         bra    Window1IDCMP
  1917.  
  1918. ;This is an emergency exit.
  1919.  
  1920. Break:        lea.l    BreakText1,a0
  1921.         bsr    Printer
  1922.         clr.l    d0
  1923.         rts
  1924.  
  1925. AddVTask:    tst.l    Window1            ;BUG: Turns on anyway
  1926.         beq    AddVTask1        ;Window not open
  1927.         move.l    OnOffGad1,a0
  1928.         move.w    gg_Flags(a0),d0
  1929.         and.w    #SELECTED,d0
  1930.         cmp.w    #SELECTED,d0
  1931.         bne    AddVTask_OUT        ;Already active
  1932. AddVTask1:    tst.w    TaskOn
  1933.         bne    AddVTask_OUT
  1934.         lea.l    MapBuffer,a0
  1935.         move.l    VoicePort,a1
  1936.         clr.l    d0
  1937.         clr.l    d1
  1938.         move.w    #VocabSIZE,d0
  1939.         move.b    PrefsSampRes,d1
  1940.         lib    Voice,AddVoiceTask
  1941.  
  1942.         move.l    PrefsPriority,d0
  1943.         lib    Voice,SetVoicePri
  1944.  
  1945.         move.w    #1,TaskOn
  1946.  
  1947.         cmp.l    #5625242,d5
  1948.         bne    AddVTask_OUT
  1949.         lea.l    TaskOnText1,a0
  1950.         bsr    GetLength
  1951.         bsr    Inform
  1952.         bsr    CXEnable
  1953.         clr.l    d5
  1954. AddVTask_OUT:    rts
  1955.  
  1956. RemVTask:    tst.l    Window1            ;BUG: Turns off anyway?
  1957.         beq    RemVTask1        ;Window not open
  1958.         move.l    #5625242,d5
  1959.         move.l    OnOffGad1,a0
  1960.         move.w    gg_Flags(a0),d0
  1961.         and.w    #SELECTED,d0
  1962.         cmp.w    #SELECTED,d0
  1963.         beq    RemVTask_OUT
  1964. RemVTask1:    tst.w    TaskOn
  1965.         beq    RemVTask_OUT
  1966.  
  1967.         lib    Exec,Forbid
  1968.         bsr    C3GetMsg1        ;Clear messages
  1969.         lib    Exec,Permit
  1970.         lib    Voice,RemVoiceTask
  1971.  
  1972.         clr.w    TaskOn
  1973.         cmp.l    #5625242,d5
  1974.         bne    RemVTask_OUT
  1975.         lea.l    TaskOffText1,a0
  1976.         bsr    GetLength
  1977.         bsr    Inform
  1978.         bsr    CXDisable
  1979. RemVTask_OUT:    rts
  1980.  
  1981. SetModes:    tst.l    Window1
  1982.         beq    SetModes_OUT2
  1983.  
  1984.         bsr    RemGads
  1985.  
  1986.         clr.l    GainPointer
  1987.         move.b    PrefsGain,GainPointer+3
  1988.  
  1989.         move.l    OnOffGad1,a0
  1990.         and.w    #~SELECTED,gg_Flags(a0)
  1991.  
  1992.         move.l    OnOffGad1,a0
  1993.         tst.b    PrefsOnOff
  1994.         beq    SetModes1
  1995.         or.w    #SELECTED,gg_Flags(a0)
  1996.  
  1997. SetModes1:    move.l    mlist,a0            ;UnCheck SampType1
  1998.         move.l    #Samp1MenuN,d0
  1999.         lib    Intuition,ItemAddress
  2000.         move.l    d0,a0
  2001.         and.w    #~CHECKED,$c(a0)
  2002.  
  2003.         move.l    mlist,a0            ;UnCheck SampType2
  2004.         move.l    #Samp2MenuN,d0
  2005.         lib    Intuition,ItemAddress
  2006.         move.l    d0,a0
  2007.         and.w    #~CHECKED,$c(a0)
  2008.  
  2009.         move.l    mlist,a0            ;UnCheck SampType3
  2010.         move.l    #Samp3MenuN,d0
  2011.         lib    Intuition,ItemAddress
  2012.         move.l    d0,a0
  2013.         and.w    #~CHECKED,$c(a0)
  2014.  
  2015.         move.l    mlist,a0            ;UnCheck SampType4
  2016.         move.l    #Samp4MenuN,d0
  2017.         lib    Intuition,ItemAddress
  2018.         move.l    d0,a0
  2019.         and.w    #~CHECKED,$c(a0)
  2020.  
  2021.         cmp.b    #SAMP_PERFSND,PrefsSampType        ;PerfectSound
  2022.         bne    SetModes2
  2023.         move.l    mlist,a0
  2024.         move.l    #Samp1MenuN,d0
  2025.         lib    Intuition,ItemAddress
  2026.         move.l    d0,a0
  2027.         or.w    #CHECKED,$c(a0)
  2028.         move.l    GainUGad1,a0
  2029.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2030.         move.l    GainDGad1,a0
  2031.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2032.  
  2033. SetModes2:    cmp.b    #SAMP_SNDMSTR,PrefsSampType        ;SoundMaster
  2034.         bne    SetModes2.1
  2035.         move.l    mlist,a0
  2036.         move.l    #Samp2MenuN,d0
  2037.         lib    Intuition,ItemAddress
  2038.         move.l    d0,a0
  2039.         or.w    #CHECKED,$c(a0)
  2040.         move.l    GainUGad1,a0
  2041.         or.w    #GADGDISABLED,gg_Flags(a0)
  2042.         move.l    GainDGad1,a0
  2043.         or.w    #GADGDISABLED,gg_Flags(a0)
  2044.  
  2045. SetModes2.1:    cmp.b    #SAMP_DSS8,PrefsSampType        ;DSS 8
  2046.         bne    SetModes2.2
  2047.         move.l    mlist,a0
  2048.         move.l    #Samp3MenuN,d0
  2049.         lib    Intuition,ItemAddress
  2050.         move.l    d0,a0
  2051.         or.w    #CHECKED,$c(a0)
  2052.         move.l    GainUGad1,a0
  2053.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2054.         move.l    GainDGad1,a0
  2055.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2056.  
  2057. SetModes2.2:    cmp.b    #SAMP_GENERIC,PrefsSampType        ;Generic
  2058.         bne    SetModes3
  2059.         move.l    mlist,a0
  2060.         move.l    #Samp4MenuN,d0
  2061.         lib    Intuition,ItemAddress
  2062.         move.l    d0,a0
  2063.         or.w    #CHECKED,$c(a0)
  2064.         move.l    GainUGad1,a0
  2065.         or.w    #GADGDISABLED,gg_Flags(a0)
  2066.         move.l    GainDGad1,a0
  2067.         or.w    #GADGDISABLED,gg_Flags(a0)
  2068.  
  2069. SetModes3:    move.l    mlist,a0            ;UnCheck ResLo
  2070.         move.l    #ResLoMenuN,d0
  2071.         lib    Intuition,ItemAddress
  2072.         move.l    d0,a0
  2073.         and.w    #~CHECKED,$c(a0)
  2074.  
  2075.         move.l    mlist,a0            ;UnCheck ResHi
  2076.         move.l    #ResHiMenuN,d0
  2077.         lib    Intuition,ItemAddress
  2078.         move.l    d0,a0
  2079.         and.w    #~CHECKED,$c(a0)
  2080.  
  2081.         cmp.b    #1,PrefsSampRes
  2082.         bne    SetModes4
  2083.         move.l    mlist,a0
  2084.         move.l    #ResLoMenuN,d0
  2085.         lib    Intuition,ItemAddress
  2086.         move.l    d0,a0
  2087.         or.w    #CHECKED,$c(a0)
  2088.  
  2089. SetModes4:    tst.b    PrefsSampRes
  2090.         bne    SetModes5
  2091.         move.l    mlist,a0
  2092.         move.l    #ResHiMenuN,d0
  2093.         lib    Intuition,ItemAddress
  2094.         move.l    d0,a0
  2095.         or.w    #CHECKED,$c(a0)
  2096.  
  2097. SetModes5:    move.l    mlist,a0            ;UnCheck Lowest
  2098.         move.l    #Acc1MenuN,d0
  2099.         lib    Intuition,ItemAddress
  2100.         move.l    d0,a0
  2101.         and.w    #~CHECKED,$c(a0)
  2102.  
  2103.         move.l    mlist,a0            ;UnCheck Lower
  2104.         move.l    #Acc2MenuN,d0
  2105.         lib    Intuition,ItemAddress
  2106.         move.l    d0,a0
  2107.         and.w    #~CHECKED,$c(a0)
  2108.  
  2109.         move.l    mlist,a0            ;UnCheck Low
  2110.         move.l    #Acc3MenuN,d0
  2111.         lib    Intuition,ItemAddress
  2112.         move.l    d0,a0
  2113.         and.w    #~CHECKED,$c(a0)
  2114.  
  2115.         move.l    mlist,a0            ;UnCheck Normal
  2116.         move.l    #Acc4MenuN,d0
  2117.         lib    Intuition,ItemAddress
  2118.         move.l    d0,a0
  2119.         and.w    #~CHECKED,$c(a0)
  2120.  
  2121.         move.l    mlist,a0            ;UnCheck High
  2122.         move.l    #Acc5MenuN,d0
  2123.         lib    Intuition,ItemAddress
  2124.         move.l    d0,a0
  2125.         and.w    #~CHECKED,$c(a0)
  2126.  
  2127.         move.l    mlist,a0            ;UnCheck Higher
  2128.         move.l    #Acc6MenuN,d0
  2129.         lib    Intuition,ItemAddress
  2130.         move.l    d0,a0
  2131.         and.w    #~CHECKED,$c(a0)
  2132.  
  2133.         move.l    mlist,a0            ;UnCheck Even higher
  2134.         move.l    #Acc7MenuN,d0
  2135.         lib    Intuition,ItemAddress
  2136.         move.l    d0,a0
  2137.         and.w    #~CHECKED,$c(a0)
  2138.  
  2139.         move.l    mlist,a0            ;UnCheck Maximum
  2140.         move.l    #Acc8MenuN,d0
  2141.         lib    Intuition,ItemAddress
  2142.         move.l    d0,a0
  2143.         and.w    #~CHECKED,$c(a0)
  2144.  
  2145.         cmp.w    #AccVal1,PrefsScore
  2146.         bne    SetModes7
  2147.         move.l    mlist,a0
  2148.         move.l    #Acc1MenuN,d0
  2149.         lib    Intuition,ItemAddress
  2150.         move.l    d0,a0
  2151.         or.w    #CHECKED,$c(a0)
  2152.  
  2153. SetModes7:    cmp.w    #AccVal2,PrefsScore
  2154.         bne    SetModes8
  2155.         move.l    mlist,a0
  2156.         move.l    #Acc2MenuN,d0
  2157.         lib    Intuition,ItemAddress
  2158.         move.l    d0,a0
  2159.         or.w    #CHECKED,$c(a0)
  2160.  
  2161. SetModes8:    cmp.w    #AccVal3,PrefsScore
  2162.         bne    SetModes9
  2163.         move.l    mlist,a0
  2164.         move.l    #Acc3MenuN,d0
  2165.         lib    Intuition,ItemAddress
  2166.         move.l    d0,a0
  2167.         or.w    #CHECKED,$c(a0)
  2168.  
  2169. SetModes9:    cmp.w    #AccVal4,PrefsScore
  2170.         bne    SetModes10
  2171.         move.l    mlist,a0
  2172.         move.l    #Acc4MenuN,d0
  2173.         lib    Intuition,ItemAddress
  2174.         move.l    d0,a0
  2175.         or.w    #CHECKED,$c(a0)
  2176.  
  2177. SetModes10:    cmp.w    #AccVal5,PrefsScore
  2178.         bne    SetModes11
  2179.         move.l    mlist,a0
  2180.         move.l    #Acc5MenuN,d0
  2181.         lib    Intuition,ItemAddress
  2182.         move.l    d0,a0
  2183.         or.w    #CHECKED,$c(a0)
  2184.  
  2185. SetModes11:    cmp.w    #AccVal6,PrefsScore
  2186.         bne    SetModes12
  2187.         move.l    mlist,a0
  2188.         move.l    #Acc6MenuN,d0
  2189.         lib    Intuition,ItemAddress
  2190.         move.l    d0,a0
  2191.         or.w    #CHECKED,$c(a0)
  2192.  
  2193. SetModes12:    cmp.w    #AccVal7,PrefsScore
  2194.         bne    SetModes13
  2195.         move.l    mlist,a0
  2196.         move.l    #Acc7MenuN,d0
  2197.         lib    Intuition,ItemAddress
  2198.         move.l    d0,a0
  2199.         or.w    #CHECKED,$c(a0)
  2200.  
  2201. SetModes13:    cmp.w    #AccVal8,PrefsScore
  2202.         bne    SetModes14
  2203.         move.l    mlist,a0
  2204.         move.l    #Acc8MenuN,d0
  2205.         lib    Intuition,ItemAddress
  2206.         move.l    d0,a0
  2207.         or.w    #CHECKED,$c(a0)
  2208.  
  2209. SetModes14:    move.l    mlist,a0            ;UnCheck Left
  2210.         move.l    #Chan1MenuN,d0
  2211.         lib    Intuition,ItemAddress
  2212.         move.l    d0,a0
  2213.         and.w    #~CHECKED,$c(a0)
  2214.  
  2215.         move.l    mlist,a0            ;UnCheck Right
  2216.         move.l    #Chan2MenuN,d0
  2217.         lib    Intuition,ItemAddress
  2218.         move.l    d0,a0
  2219.         and.w    #~CHECKED,$c(a0)
  2220.  
  2221.         move.l    mlist,a0            ;UnCheck Mic
  2222.         move.l    #Input1MenuN,d0
  2223.         lib    Intuition,ItemAddress
  2224.         move.l    d0,a0
  2225.         and.w    #~CHECKED,$c(a0)
  2226.  
  2227.         move.l    mlist,a0            ;UnCheck Line
  2228.         move.l    #Input2MenuN,d0
  2229.         lib    Intuition,ItemAddress
  2230.         move.l    d0,a0
  2231.         and.w    #~CHECKED,$c(a0)
  2232.  
  2233.         cmp.b    #CHANNEL_LEFT,PrefsChannel
  2234.         bne    SetModes15
  2235.         move.l    mlist,a0
  2236.         move.l    #Chan1MenuN,d0
  2237.         lib    Intuition,ItemAddress
  2238.         move.l    d0,a0
  2239.         or.w    #CHECKED,$c(a0)
  2240.  
  2241. SetModes15:    cmp.b    #CHANNEL_RIGHT,PrefsChannel
  2242.         bne    SetModes16
  2243.         move.l    mlist,a0
  2244.         move.l    #Chan2MenuN,d0
  2245.         lib    Intuition,ItemAddress
  2246.         move.l    d0,a0
  2247.         or.w    #CHECKED,$c(a0)
  2248.  
  2249. SetModes16:    cmp.b    #INPUT_MIC,PrefsInput
  2250.         bne    SetModes17
  2251.         move.l    mlist,a0
  2252.         move.l    #Input1MenuN,d0
  2253.         lib    Intuition,ItemAddress
  2254.         move.l    d0,a0
  2255.         or.w    #CHECKED,$c(a0)
  2256.  
  2257. SetModes17:    cmp.b    #INPUT_LINE,PrefsInput
  2258.         bne    SetModes18
  2259.         move.l    mlist,a0
  2260.         move.l    #Input2MenuN,d0
  2261.         lib    Intuition,ItemAddress
  2262.         move.l    d0,a0
  2263.         or.w    #CHECKED,$c(a0)
  2264.  
  2265. SetModes18:    move.l    mlist,a0            ;UnCheck Timer A
  2266.         move.l    #Timer1MenuN,d0
  2267.         lib    Intuition,ItemAddress
  2268.         move.l    d0,a0
  2269.         and.w    #~CHECKED,$c(a0)
  2270.  
  2271.         move.l    mlist,a0            ;UnCheck Timer B
  2272.         move.l    #Timer2MenuN,d0
  2273.         lib    Intuition,ItemAddress
  2274.         move.l    d0,a0
  2275.         and.w    #~CHECKED,$c(a0)
  2276.  
  2277.         cmp.b    #TIMER_A,PrefsTimer
  2278.         bne    SetModes19
  2279.         move.l    mlist,a0
  2280.         move.l    #Timer1MenuN,d0
  2281.         lib    Intuition,ItemAddress
  2282.         move.l    d0,a0
  2283.         or.w    #CHECKED,$c(a0)
  2284.  
  2285. SetModes19:    cmp.b    #TIMER_B,PrefsTimer
  2286.         bne    SetModes20
  2287.         move.l    mlist,a0
  2288.         move.l    #Timer2MenuN,d0
  2289.         lib    Intuition,ItemAddress
  2290.         move.l    d0,a0
  2291.         or.w    #CHECKED,$c(a0)
  2292.  
  2293. SetModes20:    lea.l    DatBuffer,a0
  2294.         move.l    DatStrGadBuf1,a1
  2295.         move.l    #32,d0
  2296.         lib    Exec,CopyMem
  2297.  
  2298.         tst.l    Window1
  2299.         beq    SetModes21
  2300.         tst.l    OptionIconify
  2301.         beq    SetModes21
  2302.         move.l    Window1,a0
  2303.         move.w    Alt1XPos,d0
  2304.         move.w    Alt1YPos,d1
  2305.         move.w    wd_Width(a0),d2
  2306.         move.w    wd_Height(a0),d3
  2307.         lib    Intuition,ChangeWindowBox
  2308.         bra    SetModes22
  2309. SetModes21:    move.l    Alt1XPos,NewWindow1
  2310.  
  2311. ;None of the below are allowed the assume the window is open, it might not
  2312. ;be!
  2313.  
  2314. SetModes22:    cmp.b    #SAMP_PERFSND,PrefsSampType        ;PerfectSound
  2315.         bne    SetModes23
  2316.  
  2317.         move.l    #SAMP_PERFSND,d0
  2318.         clr.l    d1
  2319.         lib    Voice,PickSampler
  2320.  
  2321. SetModes23:    cmp.b    #SAMP_SNDMSTR,PrefsSampType        ;SoundMaster
  2322.         bne    SetModes24
  2323.  
  2324.         move.l    #SAMP_SNDMSTR,d0
  2325.         clr.l    d1
  2326.         lib    Voice,PickSampler
  2327.  
  2328. SetModes24:    cmp.b    #SAMP_DSS8,PrefsSampType        ;DSS 8
  2329.         bne    SetModes25
  2330.  
  2331.         move.l    #SAMP_DSS8,d0
  2332.         clr.l    d1
  2333.         move.b    PrefsGain,d1
  2334.         lib    Voice,PickSampler
  2335.  
  2336. SetModes25:    cmp.b    #SAMP_GENERIC,PrefsSampType        ;Generic
  2337.         bne    SetModes26
  2338.  
  2339.         move.l    #SAMP_GENERIC,d0
  2340.         clr.l    d1
  2341.         lib    Voice,PickSampler
  2342.  
  2343. SetModes26:    cmp.b    #CHANNEL_LEFT,PrefsChannel
  2344.         bne    SetModes27
  2345.  
  2346.         move.l    #CHANNEL_LEFT,d0
  2347.         lib    Voice,PickChannel
  2348.  
  2349. SetModes27:    cmp.b    #CHANNEL_RIGHT,PrefsChannel
  2350.         bne    SetModes28
  2351.  
  2352.         move.l    #CHANNEL_RIGHT,d0
  2353.         lib    Voice,PickChannel
  2354.  
  2355. SetModes28:    cmp.b    #INPUT_MIC,PrefsInput
  2356.         bne    SetModes29
  2357.  
  2358.         move.l    #INPUT_MIC,d0
  2359.         lib    Voice,PickInput
  2360.  
  2361. SetModes29:    cmp.b    #INPUT_LINE,PrefsInput
  2362.         bne    SetModes30
  2363.  
  2364.         move.l    #INPUT_LINE,d0
  2365.         lib    Voice,PickInput
  2366.  
  2367. SetModes30:    cmp.b    #TIMER_A,PrefsTimer
  2368.         bne    SetModes31
  2369.  
  2370.         move.l    #TIMER_A,d0
  2371.         lib    Voice,PickTimer
  2372.  
  2373. SetModes31:    cmp.b    #TIMER_B,PrefsTimer
  2374.         bne    SetModes32
  2375.  
  2376.         move.l    #TIMER_B,d0
  2377.         lib    Voice,PickTimer
  2378.  
  2379. SetModes32:
  2380.  
  2381. SetModes_OUT:    bsr    AddGads
  2382.         rts
  2383.  
  2384. ;Here we do some 'patches' when the window isn't open and then do the
  2385. ;normal stuff that needs to be done.
  2386.  
  2387. SetModes_OUT2:    lea.l    DatBuffer,a0
  2388.         move.l    a0,DatStrGadBuf1
  2389.         bra    SetModes22
  2390.  
  2391. CheckModes:    tst.l    Window1
  2392.         beq    CheckModes_OUT
  2393.         move.l    OnOffGad1,a0
  2394.         move.w    gg_Flags(a0),d0
  2395.         clr.b    PrefsOnOff
  2396.         and.w    #SELECTED,d0
  2397.         cmp.w    #SELECTED,d0
  2398.         bne    CheckModes1
  2399.         move.b    #$01,PrefsOnOff
  2400.  
  2401. CheckModes1:    move.l    DatStrGadBuf1,a0
  2402.         lea.l    DatBuffer,a1
  2403.         move.l    #32,d0
  2404.         lib    Exec,CopyMem
  2405.  
  2406.         tst.l    Window1
  2407.         beq    CheckModes_OUT
  2408.         move.l    Window1,a0
  2409.         move.l    wd_LeftEdge(a0),Alt1XY
  2410. CheckModes_OUT:    rts
  2411.  
  2412. RemGads:    tst.l    Window1
  2413.         beq    RemGads_OUT
  2414.         move.l    Window1,a0
  2415.         lea.l    glist,a1
  2416.         sub.l    a2,a2
  2417.         move.l    #-1,d0
  2418.         lib    Intuition,RemoveGList
  2419. RemGads_OUT:    rts
  2420.  
  2421. AddGads:    tst.l    Window1
  2422.         beq    AddGads_OUT
  2423.         move.l    Window1,a0
  2424.         lea.l    glist,a1
  2425.         sub.l    a2,a2
  2426.         move.l    #-1,d0
  2427.         move.l    #-1,d1
  2428.         lib    Intuition,AddGList
  2429.  
  2430.         lea.l    glist,a0
  2431.         move.l    Window1,a1
  2432.         sub.l    a2,a2
  2433.         move.l    #-1,d0
  2434.         lib    Intuition,RefreshGList
  2435.  
  2436.         move.l    GainGad1,a0
  2437.         move.l    Window1,a1
  2438.         sub.l    a2,a2
  2439.         lea.l    GainGadTagList,a3
  2440.         lib    GadTools,GT_SetGadgetAttrsA
  2441.  
  2442.         move.l    Window1,a0
  2443.         sub.l    a1,a1
  2444.         lib    GadTools,GT_RefreshWindow
  2445. AddGads_OUT:    rts
  2446.  
  2447. RemGads2:    move.l    Window2,a0
  2448.         lea.l    glist2,a1
  2449.         sub.l    a2,a2
  2450.         move.l    #-1,d0
  2451.         lib    Intuition,RemoveGList
  2452.         rts
  2453.  
  2454. AddGads2:    move.l    Window2,a0
  2455.         lea.l    glist2,a1
  2456.         sub.l    a2,a2
  2457.         move.l    #-1,d0
  2458.         move.l    #-1,d1
  2459.         lib    Intuition,AddGList
  2460.  
  2461.         lea.l    glist2,a0
  2462.         move.l    Window2,a1
  2463.         sub.l    a2,a2
  2464.         move.l    #-1,d0
  2465.         lib    Intuition,RefreshGList
  2466.  
  2467.         move.l    Window2,a0
  2468.         sub.l    a1,a1
  2469.         lib    GadTools,GT_RefreshWindow
  2470.         rts
  2471.  
  2472. Quit:        tst.w    Saved
  2473.         bne    ShutDown
  2474.         bsr    RemVTask1
  2475.         bsr    SleepPointer
  2476.         bsr    MenusOff
  2477.         bsr    RemGads
  2478.  
  2479.         lea.l    QuitTxt1,a1
  2480.         lea.l    OKTxt,a2
  2481.         lea.l    CancelTxt,a3
  2482.         bsr    DoAutoRequest
  2483.         tst.l    d0
  2484.         bne    Quit2
  2485.         bsr    AddGads
  2486.         bsr    MenusOn
  2487.         bsr    NormalPointer
  2488.         bsr    AddVTask
  2489.         bra    Window1IDCMP
  2490.  
  2491. Quit2:        bsr    MenusOn
  2492.         bsr    NormalPointer
  2493.         bsr    AddGads
  2494.         bsr    AddVTask
  2495.         bra    ShutDown
  2496.  
  2497. ShutDown:    bsr    RemVTask1
  2498.         tst.l    PubScreen
  2499.         beq    ShutDown9000
  2500.         sub.l    a0,a0
  2501.         move.l    PubScreen,a1
  2502.         lib    Intuition,UnlockPubScreen
  2503.         clr.l    PubScreen
  2504.  
  2505. ShutDown9000:    tst.l    CXBroker1
  2506.         beq    ShutDown8800
  2507.  
  2508.         lib    Exec,Forbid            ;Remove all
  2509.         move.l    CXPort,a2            ;pending messages
  2510.  
  2511. ClearCX1:    move.l    a2,a0
  2512.         flib    Exec,GetMsg
  2513.         tst.l    d0
  2514.         beq    ClearCX2
  2515.         move.l    d0,a1
  2516.         flib    Exec,ReplyMsg
  2517.         bra    ClearCX1
  2518. ClearCX2:    move.l    CXBroker1,a0
  2519.         lib    Commodities,DeleteCxObjAll
  2520.         lib    Exec,Permit
  2521.  
  2522. ShutDown8800:    bsr    CloseWin1
  2523.         bsr    CloseWin2
  2524.         bsr    CloseWin3
  2525.         bsr    Clean2.0Magic
  2526.  
  2527. ShutDown8000:    move.l    PrefsFile,d1
  2528.         beq    ShutDown7000
  2529.         lib    Dos,Close
  2530.  
  2531. ShutDown7000:    tst.l    NILFile
  2532.         beq    ShutDown6000
  2533.         move.l    NILFile,d1
  2534.         lib    Dos,Close
  2535.  
  2536. ShutDown6000:    tst.l    DiskObject
  2537.         beq    ShutDown5000
  2538.         move.l    DiskObject,a0
  2539.         lib    Icon,FreeDiskObject
  2540.  
  2541. ShutDown5000:    move.l    OldLock,d1
  2542.         beq    ShutDown4050
  2543.         lib    Dos,CurrentDir
  2544.  
  2545. ShutDown4050:    move.l    WBMsg,d2
  2546.         beq    ShutDown3000
  2547.         lib    Exec,Forbid
  2548.         move.l    d2,a1
  2549.         flib    Exec,ReplyMsg
  2550.  
  2551. ShutDown3000:    move.l    RDArgs1,d1
  2552.         beq    ShutDown2500
  2553.         lib    Dos,FreeArgs
  2554.  
  2555. ShutDown2500:    tst.l    AslReq
  2556.         beq    ShutDown2000
  2557.         move.l    AslReq,a0
  2558.         lib    Asl,FreeFileRequest
  2559.  
  2560. ShutDown2000:    move.l    VoicePort,a0        ;Messages cleared earlier
  2561.         lib    Exec,DeleteMsgPort
  2562.  
  2563.         move.l    CXPort,a0        ;Messages cleared earlier
  2564.         lib    Exec,DeleteMsgPort
  2565.  
  2566.         move.l    ARexxPort,a1            ;Remove possible
  2567.         cmp.l    #$00,a1                ;ports from lists
  2568.         beq    ShutDown1000            ;and then delete
  2569.         lib    Exec,RemPort            ;the ports
  2570.  
  2571.         flib    Exec,Forbid            ;Remove all
  2572.         move.l    ARexxPort,a2            ;pending messages
  2573.  
  2574. ClearARexx1:    move.l    a2,a0
  2575.         flib    Exec,GetMsg
  2576.         tst.l    d0
  2577.         beq    ClearARexx2
  2578.         move.l    d0,a1
  2579.         move.l    #RC_FATAL,RESULT1(a1)        ;Fail all requests
  2580.         flib    Exec,ReplyMsg
  2581.         bra    ClearARexx1
  2582. ClearARexx2:    move.l    ARexxPort,a0
  2583.         flib    Exec,DeleteMsgPort
  2584.         flib    Exec,Permit
  2585.  
  2586. ShutDown1000:    closlib Voice
  2587.         closlib    Commodities
  2588.         closlib Icon
  2589.         closlib Intuition
  2590.         closlib GadTools
  2591.         closlib    Asl
  2592.         closlib    Utility
  2593.         closlib Dos
  2594.  
  2595.         move.l    OurTask,a1        ;reset task pri after
  2596.         clr.l    d0            ;voice.lib has been
  2597.         lib    Exec,SetTaskPri        ;opened and closed
  2598.  
  2599.         pull    d2-d7/a2-a6
  2600.         clr.l    d0
  2601.         rts
  2602.  
  2603. ;CheckIDCMP gets messages from keyboard (CTRL_C/D/E), Intuition and
  2604. ;voice.library, commodities.library and ARexx
  2605. ;
  2606. ;Give it the window structure in a0
  2607.  
  2608. CheckIDCMP:    clr.l    d1
  2609.         clr.l    d0
  2610.         cmp.l    #0,a0            ;Window open?
  2611.         beq    CheckIDCMP1        ;Nope ->
  2612.         move.l    $56(a0),a2        ;Get window's port
  2613.         move.b    MP_SIGBIT(a2),d1    ;IntuiMessages signals
  2614.         bset.l    d1,d0
  2615. CheckIDCMP1:    clr.l    d1            ;Set signals for
  2616.         move.l    VoicePort,a0        ;voice.library
  2617.         move.b    MP_SIGBIT(a0),d1
  2618.         bset.l    d1,d0
  2619.         clr.l    d1
  2620.         move.l    CXPort,a0        ;commodities.library
  2621.         move.b    MP_SIGBIT(a0),d1
  2622.         bset.l    d1,d0
  2623.         clr.l    d1
  2624.         move.l    ARexxPort,a0        ;ARexx
  2625.         move.b    MP_SIGBIT(a0),d1
  2626.         bset.l    d1,d0
  2627.         bset.l    #SIGBREAKB_CTRL_C,d0    ;and CTRL_C
  2628.         bset.l    #SIGBREAKB_CTRL_D,d0    ;and CTRL_D
  2629.         bset.l    #SIGBREAKB_CTRL_E,d0    ;and CTRL_E
  2630.         lib    Exec,Wait
  2631.  
  2632.         cmp.l    #SIGBREAKF_CTRL_C,d0    ;If CTRL_C
  2633.         beq    Break            ;go break
  2634.         cmp.l    #SIGBREAKF_CTRL_D,d0    ;If CTRL_D
  2635.         bne    CheckIDCMP2        ;inform about it
  2636.         move.l    #1,d0
  2637.         rts
  2638. CheckIDCMP2:    cmp.l    #SIGBREAKF_CTRL_E,d0    ;If CTRL_E
  2639.         bne    CheckIDCMP3        ;inform about it
  2640.         move.l    #2,d0
  2641.         rts
  2642. CheckIDCMP3:    move.l    VoicePort,a0        ;If voice.library
  2643.         move.b    MP_SIGBIT(a0),d1
  2644.         btst    d1,d0
  2645.         bne    C3GetMsg1
  2646.  
  2647.         move.l    CXPort,a0        ;If commodities.library
  2648.         move.b    MP_SIGBIT(a0),d1
  2649.         btst    d1,d0
  2650.         bne    C4GetMsg1
  2651.  
  2652.         move.l    ARexxPort,a0        ;If ARexx
  2653.         move.b    MP_SIGBIT(a0),d1
  2654.         btst    d1,d0
  2655.         beq    C2GetMsg1
  2656.  
  2657.         bsr    DoARexx            ;Go do ARexx magic
  2658.         rts
  2659.  
  2660. C2GetMsg1:    move.l    a2,a0            ;If Intuition
  2661.         lib    GadTools,GT_GetIMsg
  2662.         tst.l    d0
  2663.         beq    C2GetMsg2
  2664.     
  2665.         move.l    d0,a1 
  2666.         move.l    im_Class(a1),d2        ;answers with Class in d2,
  2667.         move.w    im_Code(a1),d3        ;Code in d3 and
  2668.         move.w    im_Qualifier(a1),a4    ;Qualifier in a4
  2669.         move.l    im_IAddress(a1),a5    ;IAddress in a5
  2670.         lib    GadTools,GT_ReplyIMsg
  2671.         bra    C2GetMsg1
  2672. C2GetMsg2:    move.l    #-1,d0
  2673.         rts
  2674.  
  2675. C3GetMsg1:    move.l    VoicePort,a0
  2676.         lib    Exec,GetMsg
  2677.         tst.l    d0
  2678.         beq    C3GetMsg2
  2679.     
  2680.         move.l    d0,a1
  2681.         move.l    im_Class(a1),d2        ;Class in d2 and
  2682.         move.w    im_Code(a1),d3        ;Code in d3
  2683.         move.w    im_Qualifier(a1),a4    ;Qualifier in a4
  2684.  
  2685.         lib    Exec,ReplyMsg
  2686.         bra    C3GetMsg1
  2687. C3GetMsg2:    move.l    #3,d0
  2688.         rts
  2689.  
  2690. C4GetMsg1:    move.l    CXPort,a0
  2691.         lib    Exec,GetMsg
  2692.         tst.l    d0
  2693.         beq    C4GetMsg_OUT
  2694.  
  2695.         move.l    d0,a2            ;Message in a2
  2696.  
  2697.         move.l    a2,a0
  2698.         lib    Commodities,CxMsgType
  2699.         move.l    d0,d2            ;Type in d2
  2700.  
  2701.         move.l    a2,a0
  2702.         lib    Commodities,CxMsgID
  2703.         move.l    d0,d3            ;ID in d3
  2704.  
  2705.         move.l    a2,a1
  2706.         lib    Exec,ReplyMsg
  2707.  
  2708.         bsr    CX        ;Go do magic stuff
  2709.         tst.l    d0
  2710.         bne    C4GetMsg1    ;Loop all messages
  2711.         rts
  2712.  
  2713. C4GetMsg_OUT:    move.l    #4,d0            ;Return as CX
  2714.         rts
  2715.  
  2716. ;Newer MenuNull subroutine
  2717.  
  2718. MenuNull:    move.w    d3,d0
  2719.         and.w    #$1f,d0
  2720.         move.w    d0,d6
  2721.         move.w    d3,d0
  2722.         lsr.w    #5,d0
  2723.         move.w    d0,d1
  2724.         and.w    #$3f,d0
  2725.         move.w    d0,d5
  2726.         lsr.w    #6,d1
  2727.         move.w    d1,d4
  2728.         rts
  2729.  
  2730. ;ARexx interface
  2731.  
  2732. DoARexx:    move.l    ARexxPort,a0
  2733.         lib    Exec,GetMsg
  2734.  
  2735.         move.l    #4,d2            ;answer to Window1IDCMP
  2736.         tst.l    d0
  2737.         beq    DoARexx_OUT
  2738.  
  2739.         move.l    d0,a5
  2740.         cmp.l    #RXCOMM,ACTION(a5)
  2741.         bne    DoARexxReply
  2742.  
  2743.         tst.l    Window2        ;Don't do ARexx while other
  2744.         bne    DoARexxFail    ;windows are open!
  2745.         tst.l    Window3
  2746.         bne    DoARexxFail
  2747.  
  2748.         lea.l    RexxFront,a0
  2749.         move.l    ARG0(a5),a1
  2750.         bsr    CmpStrings
  2751.         bne    DoRexxFront
  2752.  
  2753.         lea.l    RexxBack,a0
  2754.         move.l    ARG0(a5),a1
  2755.         bsr    CmpStrings
  2756.         bne    DoRexxBack
  2757.  
  2758.         lea.l    RexxZoom,a0
  2759.         move.l    ARG0(a5),a1
  2760.         bsr    CmpStrings
  2761.         bne    DoRexxZoom
  2762.  
  2763.         lea.l    RexxHide,a0
  2764.         move.l    ARG0(a5),a1
  2765.         bsr    CmpStrings
  2766.         bne    DoRexxHide
  2767.  
  2768.         lea.l    RexxShow,a0
  2769.         move.l    ARG0(a5),a1
  2770.         bsr    CmpStrings
  2771.         bne    DoRexxShow
  2772.  
  2773.         lea.l    RexxOn,a0
  2774.         move.l    ARG0(a5),a1
  2775.         bsr    CmpStrings
  2776.         bne    DoRexxOn
  2777.  
  2778.         lea.l    RexxOff,a0
  2779.         move.l    ARG0(a5),a1
  2780.         bsr    CmpStrings
  2781.         bne    DoRexxOff
  2782.  
  2783.         lea.l    RexxQuit,a0
  2784.         move.l    ARG0(a5),a1
  2785.         bsr    CmpStrings
  2786.         bne    DoRexxQuit
  2787.  
  2788.         lea.l    RexxPerfSnd,a0
  2789.         move.l    ARG0(a5),a1
  2790.         bsr    CmpStrings
  2791.         bne    DoRexxPerfSnd
  2792.  
  2793.         lea.l    RexxSndMstr,a0
  2794.         move.l    ARG0(a5),a1
  2795.         bsr    CmpStrings
  2796.         bne    DoRexxSndMstr
  2797.  
  2798.         lea.l    RexxDSS8,a0
  2799.         move.l    ARG0(a5),a1
  2800.         bsr    CmpStrings
  2801.         bne    DoRexxDSS8
  2802.  
  2803.         lea.l    RexxGeneric,a0
  2804.         move.l    ARG0(a5),a1
  2805.         bsr    CmpStrings
  2806.         bne    DoRexxGeneric
  2807.  
  2808.         lea.l    RexxResLo,a0
  2809.         move.l    ARG0(a5),a1
  2810.         bsr    CmpStrings
  2811.         bne    DoRexxResLo
  2812.  
  2813.         lea.l    RexxResHi,a0
  2814.         move.l    ARG0(a5),a1
  2815.         bsr    CmpStrings
  2816.         bne    DoRexxResHi
  2817.  
  2818.         lea.l    RexxLowest,a0
  2819.         move.l    ARG0(a5),a1
  2820.         bsr    CmpStrings
  2821.         bne    DoRexxLowest
  2822.  
  2823.         lea.l    RexxLower,a0
  2824.         move.l    ARG0(a5),a1
  2825.         bsr    CmpStrings
  2826.         bne    DoRexxLower
  2827.  
  2828.         lea.l    RexxLow,a0
  2829.         move.l    ARG0(a5),a1
  2830.         bsr    CmpStrings
  2831.         bne    DoRexxLow
  2832.  
  2833.         lea.l    RexxNormal,a0
  2834.         move.l    ARG0(a5),a1
  2835.         bsr    CmpStrings
  2836.         bne    DoRexxNormal
  2837.  
  2838.         lea.l    RexxHigh,a0
  2839.         move.l    ARG0(a5),a1
  2840.         bsr    CmpStrings
  2841.         bne    DoRexxHigh
  2842.  
  2843.         lea.l    RexxHigher,a0
  2844.         move.l    ARG0(a5),a1
  2845.         bsr    CmpStrings
  2846.         bne    DoRexxHigher
  2847.  
  2848.         lea.l    RexxEHigher,a0
  2849.         move.l    ARG0(a5),a1
  2850.         bsr    CmpStrings
  2851.         bne    DoRexxEHigher
  2852.  
  2853.         lea.l    RexxMaximum,a0
  2854.         move.l    ARG0(a5),a1
  2855.         bsr    CmpStrings
  2856.         bne    DoRexxMaximum
  2857.  
  2858.         lea.l    RexxLeft,a0
  2859.         move.l    ARG0(a5),a1
  2860.         bsr    CmpStrings
  2861.         bne    DoRexxLeft
  2862.  
  2863.         lea.l    RexxRight,a0
  2864.         move.l    ARG0(a5),a1
  2865.         bsr    CmpStrings
  2866.         bne    DoRexxRight
  2867.  
  2868.         lea.l    RexxLine,a0
  2869.         move.l    ARG0(a5),a1
  2870.         bsr    CmpStrings
  2871.         bne    DoRexxLine
  2872.  
  2873.         lea.l    RexxMic,a0
  2874.         move.l    ARG0(a5),a1
  2875.         bsr    CmpStrings
  2876.         bne    DoRexxMic
  2877.  
  2878.         lea.l    RexxGainUp,a0
  2879.         move.l    ARG0(a5),a1
  2880.         bsr    CmpStrings
  2881.         bne    DoRexxGainUp
  2882.  
  2883.         lea.l    RexxGainDown,a0
  2884.         move.l    ARG0(a5),a1
  2885.         bsr    CmpStrings
  2886.         bne    DoRexxGainDown
  2887.  
  2888.         lea.l    RexxTimerA,a0
  2889.         move.l    ARG0(a5),a1
  2890.         bsr    CmpStrings
  2891.         bne    DoRexxTimerA
  2892.  
  2893.         lea.l    RexxTimerB,a0
  2894.         move.l    ARG0(a5),a1
  2895.         bsr    CmpStrings
  2896.         bne    DoRexxTimerB
  2897.  
  2898.         move.l    ARG0(a5),a1
  2899.         cmp.b    #'K',(a1)+
  2900.         bne    DoARexx2
  2901.         cmp.b    #'E',(a1)+
  2902.         bne    DoARexx2
  2903.         cmp.b    #'Y',(a1)+
  2904.         bne    DoARexx2
  2905.         cmp.b    #' ',(a1)+
  2906.         beq    DoRexxKeyInput
  2907.  
  2908. DoARexx2:    move.l    ARG0(a5),a1
  2909.         cmp.b    #'L',(a1)+
  2910.         bne    DoARexxFail
  2911.         cmp.b    #'O',(a1)+
  2912.         bne    DoARexxFail
  2913.         cmp.b    #'A',(a1)+
  2914.         bne    DoARexxFail
  2915.         cmp.b    #'D',(a1)+
  2916.         bne    DoARexxFail
  2917.         cmp.b    #' ',(a1)+
  2918.         beq    DoRexxLoad
  2919.  
  2920. DoARexxFail:    move.l    #RC_FATAL,RESULT1(a5)
  2921.         move.l    #4,d2
  2922.         bra    DoARexxReply
  2923.  
  2924. DoARexxOK:    move.l    #RC_OK,RESULT1(a5)
  2925. DoARexxReply:    move.l    a5,a1
  2926.         lib    Exec,ReplyMsg
  2927. DoARexx_OUT:    move.l    d2,d0
  2928.         rts
  2929.  
  2930.  
  2931. DoRexxFront:    bsr    ToFront
  2932.         move.l    #4,d2
  2933.         bra    DoARexxOK
  2934.  
  2935. DoRexxBack:    bsr    ToBack
  2936.         move.l    #4,d2
  2937.         bra    DoARexxOK
  2938.  
  2939. DoRexxZoom:    bsr    Zoom
  2940.         move.l    #4,d2
  2941.         bra    DoARexxOK
  2942.  
  2943. DoRexxHide:    bsr    DoCXDisappear
  2944.         move.l    #4,d2
  2945.         bra    DoARexxOK
  2946.  
  2947. DoRexxShow:    bsr    DoCXAppear
  2948.         move.l    #4,d2
  2949.         bra    DoARexxOK
  2950.  
  2951. DoRexxOn:    tst.w    DisActive
  2952.         bne    DoARexxFail
  2953.         push    a5
  2954.         bsr    CLITypeOn
  2955.         pull    a5
  2956.         move.l    #4,d2
  2957.         bra    DoARexxOK
  2958.  
  2959. DoRexxOff:    tst.w    DisActive
  2960.         bne    DoARexxFail
  2961.         push    a5
  2962.         bsr    CLITypeOff
  2963.         pull    a5
  2964.         move.l    #4,d2
  2965.         bra    DoARexxOK
  2966.  
  2967. DoRexxQuit:    clr.l    d2
  2968.         bra    DoARexxOK
  2969.  
  2970. DoRexxPerfSnd:    push    a5
  2971.         bsr    SetSamp1
  2972.         bsr    SetModes
  2973.         pull    a5
  2974.         move.l    #4,d2
  2975.         bra    DoARexxOK
  2976.  
  2977. DoRexxSndMstr:    push    a5
  2978.         bsr    SetSamp2
  2979.         bsr    SetModes
  2980.         pull    a5
  2981.         move.l    #4,d2
  2982.         bra    DoARexxOK
  2983.  
  2984. DoRexxDSS8:    push    a5
  2985.         bsr    SetSamp3
  2986.         bsr    SetModes
  2987.         pull    a5
  2988.         move.l    #4,d2
  2989.         bra    DoARexxOK
  2990.  
  2991. DoRexxGeneric:    push    a5
  2992.         bsr    SetSamp4
  2993.         bsr    SetModes
  2994.         pull    a5
  2995.         move.l    #4,d2
  2996.         bra    DoARexxOK
  2997.  
  2998. DoRexxResLo:    push    a5
  2999.         bsr    SetResLo
  3000.         bsr    SetModes
  3001.         pull    a5
  3002.         move.l    #4,d2
  3003.         bra    DoARexxOK
  3004.  
  3005. DoRexxResHi:    push    a5
  3006.         bsr    SetResHi
  3007.         bsr    SetModes
  3008.         pull    a5
  3009.         move.l    #4,d2
  3010.         bra    DoARexxOK
  3011.  
  3012. DoRexxLowest:    push    a5
  3013.         bsr    SetAccLowest
  3014.         bsr    SetModes
  3015.         pull    a5
  3016.         move.l    #4,d2
  3017.         bra    DoARexxOK
  3018.  
  3019. DoRexxLower:    push    a5
  3020.         bsr    SetAccLower
  3021.         bsr    SetModes
  3022.         pull    a5
  3023.         move.l    #4,d2
  3024.         bra    DoARexxOK
  3025.  
  3026. DoRexxLow:    push    a5
  3027.         bsr    SetAccLow
  3028.         bsr    SetModes
  3029.         pull    a5
  3030.         move.l    #4,d2
  3031.         bra    DoARexxOK
  3032.  
  3033. DoRexxNormal:    push    a5
  3034.         bsr    SetAccNormal
  3035.         bsr    SetModes
  3036.         pull    a5
  3037.         move.l    #4,d2
  3038.         bra    DoARexxOK
  3039.  
  3040. DoRexxHigh:    push    a5
  3041.         bsr    SetAccHigh
  3042.         bsr    SetModes
  3043.         pull    a5
  3044.         move.l    #4,d2
  3045.         bra    DoARexxOK
  3046.  
  3047. DoRexxHigher:    push    a5
  3048.         bsr    SetAccHigher
  3049.         bsr    SetModes
  3050.         pull    a5
  3051.         move.l    #4,d2
  3052.         bra    DoARexxOK
  3053.  
  3054. DoRexxEHigher:    push    a5
  3055.         bsr    SetAccEHigher
  3056.         bsr    SetModes
  3057.         pull    a5
  3058.         move.l    #4,d2
  3059.         bra    DoARexxOK
  3060.  
  3061. DoRexxMaximum:    push    a5
  3062.         bsr    SetAccMaximum
  3063.         bsr    SetModes
  3064.         pull    a5
  3065.         move.l    #4,d2
  3066.         bra    DoARexxOK
  3067.  
  3068. DoRexxLeft:    push    a5
  3069.         bsr    SetLeft
  3070.         bsr    SetModes
  3071.         pull    a5
  3072.         move.l    #4,d2
  3073.         bra    DoARexxOK
  3074.  
  3075. DoRexxRight:    push    a5
  3076.         bsr    SetRight
  3077.         bsr    SetModes
  3078.         pull    a5
  3079.         move.l    #4,d2
  3080.         bra    DoARexxOK
  3081.  
  3082. DoRexxLine:    push    a5
  3083.         bsr    SetLine
  3084.         bsr    SetModes
  3085.         pull    a5
  3086.         move.l    #4,d2
  3087.         bra    DoARexxOK
  3088.  
  3089. DoRexxMic:    push    a5
  3090.         bsr    SetMic
  3091.         bsr    SetModes
  3092.         pull    a5
  3093.         move.l    #4,d2
  3094.         bra    DoARexxOK
  3095.  
  3096. DoRexxGainUp:    push    a5
  3097.         bsr    GainUp
  3098.         pull    a5
  3099.         move.l    #4,d2
  3100.         bra    DoARexxOK
  3101.  
  3102. DoRexxGainDown:    push    a5
  3103.         bsr    GainDown
  3104.         pull    a5
  3105.         move.l    #4,d2
  3106.         bra    DoARexxOK
  3107.  
  3108. DoRexxTimerA:    push    a5
  3109.         bsr    SetTimerA
  3110.         bsr    SetModes
  3111.         pull    a5
  3112.         move.l    #4,d2
  3113.         bra    DoARexxOK
  3114.  
  3115. DoRexxTimerB:    push    a5
  3116.         bsr    SetTimerB
  3117.         bsr    SetModes
  3118.         pull    a5
  3119.         move.l    #4,d2
  3120.         bra    DoARexxOK
  3121.  
  3122. DoRexxLoad:    push    a5
  3123.  
  3124.         move.l    a1,FromFile    ;Fake CLI Input :)
  3125.         bsr    Load
  3126.         bsr    AddVTask
  3127.  
  3128.         pull    a5
  3129.         move.l    #4,d2
  3130.         bra    DoARexxOK
  3131.  
  3132. DoRexxKeyInput:    move.l    a1,a0
  3133.         lea.l    StringBuffer,a1
  3134.         bsr    CopyStrs
  3135.  
  3136.         bsr    SendEvents
  3137.         move.l    #4,d2
  3138.         tst.l    IEvents
  3139.         beq    DoARexxFail
  3140.         clr.l    IEvents
  3141.         bra    DoARexxOK
  3142.  
  3143. ;SendEvents converts ARexx string to lower case and converts it into input
  3144. ;events and merges these events into the input chain.
  3145. ;
  3146. ;Inputs    StringBuffer = String to send
  3147.  
  3148. SendEvents:    lea.l    StringBuffer,a2
  3149.         bsr    MakeLowerCase
  3150.  
  3151. ;Convert string into Input Events
  3152.  
  3153.         move.l    #0,-(sp)
  3154.         pea    StringBuffer
  3155.         jsr    _InvertString
  3156.         add.l    #8,sp
  3157.         move.l    d0,IEvents
  3158.         beq    SendEvents2
  3159.  
  3160. ;Send Input Events
  3161.  
  3162.         move.l    IEvents,a0
  3163.         lib    Commodities,AddIEvents
  3164.  
  3165. ;Free Input Events
  3166.  
  3167.         move.l    IEvents,-(sp)
  3168.         jsr    _FreeIEvents
  3169.         add.l    #4,sp
  3170. SendEvents2:    rts
  3171.  
  3172. ;Compares two strings.
  3173. ;
  3174. ;INPUT
  3175. ;
  3176. ;A0 String 1
  3177. ;A1 String 2
  3178. ;
  3179. ;OUTPUT
  3180. ;
  3181. ;D0 = 0 if not same
  3182. ;
  3183. ;BUGS
  3184. ;
  3185. ;String 1 has to have NULL at end!
  3186. ;
  3187.  
  3188. CmpStrings:    bsr    GetLength
  3189.         move.l    d0,d4        ;length of string1 to d4
  3190.         push    a0
  3191.         move.l    a1,a0
  3192.         bsr    GetLength
  3193.         pull    a0
  3194.         cmp.l    d4,d0        ;length of string2 in d3
  3195.         bne    CmpStrings1.1
  3196. CmpStrings1:    tst.b    (a0)
  3197.         beq    CmpStrings2
  3198.         cmp.b    (a0)+,(a1)+
  3199.         beq    CmpStrings1
  3200. CmpStrings1.1:    clr.l    d0
  3201.         rts
  3202. CmpStrings2:    move.l    #-1,d0
  3203.         rts
  3204.  
  3205. ;Get length of text in given address
  3206. ;
  3207. ;Input a0 = Address of null terminated text string
  3208. ;
  3209. ;Result d0 = Length
  3210.  
  3211. GetLength:    push    a0
  3212.         clr.l    d0
  3213.         cmp.l    #$00,a0        ;fixes enforcer hit
  3214.         beq    GetLength_OUT
  3215. GetLength2:    add.l    #1,d0
  3216.         tst.b    (a0)+
  3217.         bne    GetLength2
  3218.         sub.l    #1,d0        ;don't include NULL
  3219. GetLength_OUT:    pull    a0
  3220.         rts
  3221.  
  3222. ;Inputs    a0 = ASCII number
  3223. ;Output    d0 = Hexadecimal number
  3224.  
  3225. ConvASCII:    clr.l    d0
  3226.         clr.l    d1
  3227.         cmp.b    #' ',(a0)
  3228.         bne    ConvASCII2
  3229.         add.l    #1,a0
  3230. ConvASCII2:    move.b    (a0),d1
  3231.         cmp.b    #'0',d1
  3232.         bcs    ConvASCII_OUT
  3233.         cmp.b    #'9',d1
  3234.         bhi    ConvASCII_OUT
  3235.         sub.b    #'0',d1
  3236.         mulu.w    #10,d0
  3237.         add.l    d1,d0
  3238.         add.l    #1,a0
  3239.         bra    ConvASCII2
  3240. ConvASCII_OUT:    rts
  3241.  
  3242. ;Inputs    a2 = Pointer to NULL terminated string to convert
  3243.  
  3244. MakeLowerCase:    tst.b    (a2)
  3245.         beq    MakeLowerCase3
  3246.         move.b    (a2),d0
  3247.         lib    Utility,ToLower
  3248.         move.b    d0,(a2)
  3249.  
  3250. MakeLowerCase2:    add.l    #1,a2
  3251.         bra    MakeLowerCase
  3252.  
  3253. MakeLowerCase3: rts
  3254.  
  3255. ;Copies bytes from a0 to a1 until NULL is reached or maximum amount of 
  3256. ;255 bytes is copied. Destination will include NULL
  3257. ;
  3258. ;Inputs    a0 = Source
  3259. ;    a1 = Destination
  3260.  
  3261. CopyStrs:    move.l    #255,d0
  3262.  
  3263. CopyStrs1:    tst.b    (a0)
  3264.         beq    CopyStrs_OUT
  3265.         move.b    (a0)+,(a1)+
  3266.         sub.l    #1,d0
  3267.         beq    CopyStrs_OUT
  3268.         bra    CopyStrs1
  3269. CopyStrs_OUT:    clr.b    (a1)
  3270.         rts
  3271.  
  3272. ;Joins path and filename together from ASL Requester.
  3273.  
  3274. MakeCmd:    move.l    AslReq,a0
  3275.         move.l    rf_Dir(a0),a1        ;Source 1
  3276.         move.l    rf_File(a0),a2        ;Source 2
  3277.  
  3278.         move.l    $22(a5),a0
  3279.         move.l    (a0),a3            ;Destination
  3280.  
  3281.         clr.l    d0
  3282.  
  3283. MakeCmd1:    tst.b    (a1)
  3284.         beq    MakeCmd2
  3285.         cmp.l    #GADLENG2-1,d0
  3286.         bcc    MakeCmd2
  3287.         move.b    (a1)+,(a3)+
  3288.         add.l    #1,d0
  3289.         bra    MakeCmd1
  3290.  
  3291. MakeCmd2:    cmp.b    #':',-1(a3)
  3292.         beq    MakeCmd3
  3293.         tst.b    -1(a3)
  3294.         beq    MakeCmd3
  3295.         move.b    #'/',(a3)+
  3296.  
  3297. MakeCmd3:    tst.b    (a2)
  3298.         beq    MakeCmd4
  3299.         cmp.l    #GADLENG2-1,d0
  3300.         bcc    MakeCmd3
  3301.         move.b    (a2)+,(a3)+
  3302.         add.l    #1,d0
  3303.         bra    MakeCmd3
  3304.  
  3305. MakeCmd4:    clr.b    (a3)        ;Add NULL to destination
  3306.         rts
  3307.  
  3308. SleepPointer:    tst.l    Window1
  3309.         beq    SleepPoint_OUT
  3310.         move.l    Window1,a0
  3311.         lea.l    ClockPointer1,a1
  3312.         move.l    #16,d0
  3313.         move.l    #16,d1            ;WHAT-THE-HECK IS THIS FOR?
  3314.         move.l    #-6,d2
  3315.         move.l    #0,d3
  3316.         lib    Intuition,SetPointer
  3317. SleepPoint_OUT:    rts
  3318.  
  3319. NormalPointer:    tst.l    Window1
  3320.         beq    NormPoint_OUT
  3321.         move.l    Window1,a0
  3322.         lib    Intuition,ClearPointer
  3323. NormPoint_OUT:    rts
  3324.  
  3325. MenusOn:    tst.l    Window1
  3326.         beq    MenusOn_OUT
  3327.         move.l    Window1,a0
  3328.         move.l    mlist,a1
  3329.         lib    Intuition,SetMenuStrip
  3330. MenusOn_OUT:    rts
  3331.  
  3332. MenusOff:    tst.l    Window1
  3333.         beq    MenusOff_OUT
  3334.         move.l    Window1,a0
  3335.         lib    Intuition,ClearMenuStrip
  3336. MenusOff_OUT:    rts
  3337.  
  3338. ;Lock PublicScreen
  3339.  
  3340. LockPubScr:    move.l    OptPubScreen,a0
  3341.         lib    Intuition,LockPubScreen
  3342.         move.l    d0,PubScreen
  3343.         beq    LockPubScr_OUT
  3344.  
  3345. ;Set default sizes
  3346.  
  3347.         move.w    #62,Win1YSize
  3348.         move.w    #138,Win2YSize
  3349.         move.w    #30,Win3YSize
  3350.  
  3351. ;Get some sizes
  3352.  
  3353.         move.l    PubScreen,a0
  3354.         move.b    sc_BarHeight(a0),d0
  3355.         add.b    #1,d0
  3356.         move.b    d0,BHeight+1
  3357.         move.w    BHeight,d5
  3358.         add.w    d5,SmallYSize
  3359.         add.w    d5,Win1YSize
  3360.         add.w    d5,Win2YSize
  3361.         add.w    d5,Win3YSize
  3362. LockPubScr_OUT: rts
  3363.  
  3364. UnLockPubScr:    tst.l    PubScreen
  3365.         beq    UnLPubScr_OUT
  3366.  
  3367.         sub.l    a0,a0
  3368.         move.l    PubScreen,a1
  3369.         lib    Intuition,UnlockPubScreen
  3370.         clr.l    PubScreen
  3371. UnLPubScr_OUT:    rts
  3372.  
  3373. DoLayOut:    bsr    UnLockPubScr
  3374.  
  3375.         bsr    LockPubScr
  3376.         tst.l    PubScreen
  3377.         beq    NoPubScreen
  3378.  
  3379. ;Get visualinfo
  3380.  
  3381.         move.l    PubScreen,a0
  3382.         sub.l    a1,a1
  3383.         lib    GadTools,GetVisualInfoA
  3384.         move.l    d0,vi
  3385.  
  3386. ;Make gadget stuff
  3387.  
  3388.         lea.l    glist,a0
  3389.         lib    GadTools,CreateContext
  3390.         move.l    d0,ContextGad
  3391.         beq    NoContextGad
  3392.  
  3393.         move.l    glist,a0
  3394.         lea.l    NGOnOffGad1,a1
  3395.         move.w    #ShellTop,gng_TopEdge(a1)
  3396.         add.w    d5,gng_TopEdge(a1)
  3397.         move.l    #CHECKBOX_KIND,d0
  3398.         move.l    vi,gng_VisualInfo(a1)
  3399.         lea.l    GadTagList,a2
  3400.         lib    GadTools,CreateGadgetA
  3401.  
  3402.         move.l    d0,OnOffGad1
  3403.         move.l    d0,a0
  3404.  
  3405.         lea.l    NGGainUGad,a1
  3406.         move.w    #ShellTop+1*(10+INTERHEIGHT),gng_TopEdge(a1)
  3407.         add.w    d5,gng_TopEdge(a1)
  3408.         move.l    #BUTTON_KIND,d0
  3409.         move.l    vi,gng_VisualInfo(a1)
  3410.         lea.l    GadTagList,a2
  3411.         lib    GadTools,CreateGadgetA
  3412.  
  3413.         move.l    d0,a0
  3414.         move.l    a0,GainUGad1
  3415.  
  3416.         lea.l    NGGainDGad,a1
  3417.         move.w    #ShellTop+2*(10+INTERHEIGHT),gng_TopEdge(a1)
  3418.         add.w    d5,gng_TopEdge(a1)
  3419.         move.l    #BUTTON_KIND,d0
  3420.         move.l    vi,gng_VisualInfo(a1)
  3421.         lea.l    GadTagList,a2
  3422.         lib    GadTools,CreateGadgetA
  3423.  
  3424.         move.l    d0,a0
  3425.         move.l    a0,GainDGad1
  3426.  
  3427.         lea.l    NGGainGad,a1
  3428.         move.w    #ShellTop+2*(10+INTERHEIGHT),gng_TopEdge(a1)
  3429.         add.w    d5,gng_TopEdge(a1)
  3430.         move.l    #NUMBER_KIND,d0
  3431.         move.l    vi,gng_VisualInfo(a1)
  3432.         lea.l    GainGadTagList,a2
  3433.         lib    GadTools,CreateGadgetA
  3434.  
  3435.         move.l    d0,a0
  3436.         move.l    a0,GainGad1
  3437.  
  3438.         lea.l    NGSaveGad,a1
  3439.         move.w    #OptionTop,gng_TopEdge(a1)
  3440.         add.w    d5,gng_TopEdge(a1)
  3441.         move.l    #BUTTON_KIND,d0
  3442.         move.l    vi,gng_VisualInfo(a1)
  3443.         lea.l    GadTagList,a2
  3444.         lib    GadTools,CreateGadgetA
  3445.  
  3446.         move.l    d0,a0
  3447.         move.l    a0,SaveGad1
  3448.  
  3449.         lea.l    NGQuitGad,a1
  3450.         move.w    #OptionTop,gng_TopEdge(a1)
  3451.         add.w    d5,gng_TopEdge(a1)
  3452.         move.l    #BUTTON_KIND,d0
  3453.         move.l    vi,gng_VisualInfo(a1)
  3454.         lea.l    GadTagList,a2
  3455.         lib    GadTools,CreateGadgetA
  3456.  
  3457.         move.l    d0,a0
  3458.         move.l    a0,QuitGad1
  3459.         or.w    #GRELRIGHT,gg_Flags(a0)
  3460.  
  3461.         lea.l    NGDatStrGad1,a1
  3462.         move.w    #ShellTop+28,gng_TopEdge(a1)
  3463.         add.w    d5,gng_TopEdge(a1)
  3464.         move.l    #STRING_KIND,d0
  3465.         move.l    vi,gng_VisualInfo(a1)
  3466.         lea.l    DatStrGadTagList,a2
  3467.         lib    GadTools,CreateGadgetA
  3468.  
  3469.         move.l    d0,DatStrGad1
  3470.         move.l    d0,a0
  3471.         move.l    $22(a0),a1
  3472.         move.l    (a1),DatStrGadBuf1
  3473.  
  3474.         lea.l    NGStatusGad,a1
  3475.         move.w    #ShellTop,gng_TopEdge(a1)
  3476.         add.w    d5,gng_TopEdge(a1)
  3477.         move.l    #TEXT_KIND,d0
  3478.         move.l    vi,gng_VisualInfo(a1)
  3479.         lea.l    StatGadTagList,a2
  3480.         lib    GadTools,CreateGadgetA
  3481.  
  3482.         move.l    d0,a0
  3483.         move.l    a0,StatusGad1
  3484.  
  3485.         lea.l    NGLoadGad,a1
  3486.         move.w    #ShellTop+28,gng_TopEdge(a1)
  3487.         add.w    d5,gng_TopEdge(a1)
  3488.         move.l    #BUTTON_KIND,d0
  3489.         move.l    vi,gng_VisualInfo(a1)
  3490.         lea.l    GadTagList,a2
  3491.         lib    GadTools,CreateGadgetA
  3492.  
  3493.         move.l    d0,a0
  3494.         move.l    a0,LoadGad1
  3495.         or.w    #GRELRIGHT,gg_Flags(a0)
  3496.  
  3497.         lea.l    glist2,a0
  3498.         lib    GadTools,CreateContext
  3499.         move.l    d0,ContextGad2
  3500.         beq    NoContextGad
  3501.  
  3502.         move.l    glist2,a0
  3503.         lea.l    NGStrGad1,a1
  3504.         move.w    #ShellTop+15,gng_TopEdge(a1)
  3505.         add.w    d5,gng_TopEdge(a1)
  3506.         move.l    #STRING_KIND,d0
  3507.         move.l    vi,gng_VisualInfo(a1)
  3508.         lea.l    StrGadTagList1,a2
  3509.         lib    GadTools,CreateGadgetA
  3510.  
  3511.         move.l    d0,StrGad1
  3512.         move.l    d0,a0
  3513.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3514.         move.l    gg_SpecialInfo(a0),a1
  3515.         move.l    (a1),StrGadBuf1
  3516.  
  3517.         lea.l    NGStrGad2,a1
  3518.         move.w    #ShellTop+15,gng_TopEdge(a1)
  3519.         add.w    d5,gng_TopEdge(a1)
  3520.         move.l    #STRING_KIND,d0
  3521.         move.l    vi,gng_VisualInfo(a1)
  3522.         lea.l    StrGadTagList2,a2
  3523.         lib    GadTools,CreateGadgetA
  3524.  
  3525.         move.l    d0,StrGad2
  3526.         move.l    d0,a0
  3527.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3528.         move.l    gg_SpecialInfo(a0),a1
  3529.         move.l    (a1),StrGadBuf2
  3530.  
  3531.         lea.l    NGStrGad3,a1
  3532.         move.w    #ShellTop+25,gng_TopEdge(a1)
  3533.         add.w    d5,gng_TopEdge(a1)
  3534.         move.l    #STRING_KIND,d0
  3535.         move.l    vi,gng_VisualInfo(a1)
  3536.         lea.l    StrGadTagList1,a2
  3537.         lib    GadTools,CreateGadgetA
  3538.  
  3539.         move.l    d0,StrGad3
  3540.         move.l    d0,a0
  3541.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3542.         move.l    gg_SpecialInfo(a0),a1
  3543.         move.l    (a1),StrGadBuf3
  3544.  
  3545.         lea.l    NGStrGad4,a1
  3546.         move.w    #ShellTop+25,gng_TopEdge(a1)
  3547.         add.w    d5,gng_TopEdge(a1)
  3548.         move.l    #STRING_KIND,d0
  3549.         move.l    vi,gng_VisualInfo(a1)
  3550.         lea.l    StrGadTagList2,a2
  3551.         lib    GadTools,CreateGadgetA
  3552.  
  3553.         move.l    d0,StrGad4
  3554.         move.l    d0,a0
  3555.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3556.         move.l    gg_SpecialInfo(a0),a1
  3557.         move.l    (a1),StrGadBuf4
  3558.  
  3559.         lea.l    NGStrGad5,a1
  3560.         move.w    #ShellTop+35,gng_TopEdge(a1)
  3561.         add.w    d5,gng_TopEdge(a1)
  3562.         move.l    #STRING_KIND,d0
  3563.         move.l    vi,gng_VisualInfo(a1)
  3564.         lea.l    StrGadTagList1,a2
  3565.         lib    GadTools,CreateGadgetA
  3566.  
  3567.         move.l    d0,StrGad5
  3568.         move.l    d0,a0
  3569.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3570.         move.l    gg_SpecialInfo(a0),a1
  3571.         move.l    (a1),StrGadBuf5
  3572.  
  3573.         lea.l    NGStrGad6,a1
  3574.         move.w    #ShellTop+35,gng_TopEdge(a1)
  3575.         add.w    d5,gng_TopEdge(a1)
  3576.         move.l    #STRING_KIND,d0
  3577.         move.l    vi,gng_VisualInfo(a1)
  3578.         lea.l    StrGadTagList2,a2
  3579.         lib    GadTools,CreateGadgetA
  3580.  
  3581.         move.l    d0,StrGad6
  3582.         move.l    d0,a0
  3583.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3584.         move.l    gg_SpecialInfo(a0),a1
  3585.         move.l    (a1),StrGadBuf6
  3586.  
  3587.         lea.l    NGStrGad7,a1
  3588.         move.w    #ShellTop+45,gng_TopEdge(a1)
  3589.         add.w    d5,gng_TopEdge(a1)
  3590.         move.l    #STRING_KIND,d0
  3591.         move.l    vi,gng_VisualInfo(a1)
  3592.         lea.l    StrGadTagList1,a2
  3593.         lib    GadTools,CreateGadgetA
  3594.  
  3595.         move.l    d0,StrGad7
  3596.         move.l    d0,a0
  3597.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3598.         move.l    gg_SpecialInfo(a0),a1
  3599.         move.l    (a1),StrGadBuf7
  3600.  
  3601.         lea.l    NGStrGad8,a1
  3602.         move.w    #ShellTop+45,gng_TopEdge(a1)
  3603.         add.w    d5,gng_TopEdge(a1)
  3604.         move.l    #STRING_KIND,d0
  3605.         move.l    vi,gng_VisualInfo(a1)
  3606.         lea.l    StrGadTagList2,a2
  3607.         lib    GadTools,CreateGadgetA
  3608.  
  3609.         move.l    d0,StrGad8
  3610.         move.l    d0,a0
  3611.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3612.         move.l    gg_SpecialInfo(a0),a1
  3613.         move.l    (a1),StrGadBuf8
  3614.  
  3615.         lea.l    NGStrGad9,a1
  3616.         move.w    #ShellTop+55,gng_TopEdge(a1)
  3617.         add.w    d5,gng_TopEdge(a1)
  3618.         move.l    #STRING_KIND,d0
  3619.         move.l    vi,gng_VisualInfo(a1)
  3620.         lea.l    StrGadTagList1,a2
  3621.         lib    GadTools,CreateGadgetA
  3622.  
  3623.         move.l    d0,StrGad9
  3624.         move.l    d0,a0
  3625.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3626.         move.l    gg_SpecialInfo(a0),a1
  3627.         move.l    (a1),StrGadBuf9
  3628.  
  3629.         lea.l    NGStrGad10,a1
  3630.         move.w    #ShellTop+55,gng_TopEdge(a1)
  3631.         add.w    d5,gng_TopEdge(a1)
  3632.         move.l    #STRING_KIND,d0
  3633.         move.l    vi,gng_VisualInfo(a1)
  3634.         lea.l    StrGadTagList2,a2
  3635.         lib    GadTools,CreateGadgetA
  3636.  
  3637.         move.l    d0,StrGad10
  3638.         move.l    d0,a0
  3639.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3640.         move.l    gg_SpecialInfo(a0),a1
  3641.         move.l    (a1),StrGadBuf10
  3642.  
  3643.         lea.l    NGStrGad11,a1
  3644.         move.w    #ShellTop+65,gng_TopEdge(a1)
  3645.         add.w    d5,gng_TopEdge(a1)
  3646.         move.l    #STRING_KIND,d0
  3647.         move.l    vi,gng_VisualInfo(a1)
  3648.         lea.l    StrGadTagList1,a2
  3649.         lib    GadTools,CreateGadgetA
  3650.  
  3651.         move.l    d0,StrGad11
  3652.         move.l    d0,a0
  3653.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3654.         move.l    gg_SpecialInfo(a0),a1
  3655.         move.l    (a1),StrGadBuf11
  3656.  
  3657.         lea.l    NGStrGad12,a1
  3658.         move.w    #ShellTop+65,gng_TopEdge(a1)
  3659.         add.w    d5,gng_TopEdge(a1)
  3660.         move.l    #STRING_KIND,d0
  3661.         move.l    vi,gng_VisualInfo(a1)
  3662.         lea.l    StrGadTagList2,a2
  3663.         lib    GadTools,CreateGadgetA
  3664.  
  3665.         move.l    d0,StrGad12
  3666.         move.l    d0,a0
  3667.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3668.         move.l    gg_SpecialInfo(a0),a1
  3669.         move.l    (a1),StrGadBuf12
  3670.  
  3671.         lea.l    NGStrGad13,a1
  3672.         move.w    #ShellTop+75,gng_TopEdge(a1)
  3673.         add.w    d5,gng_TopEdge(a1)
  3674.         move.l    #STRING_KIND,d0
  3675.         move.l    vi,gng_VisualInfo(a1)
  3676.         lea.l    StrGadTagList1,a2
  3677.         lib    GadTools,CreateGadgetA
  3678.  
  3679.         move.l    d0,StrGad13
  3680.         move.l    d0,a0
  3681.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3682.         move.l    gg_SpecialInfo(a0),a1
  3683.         move.l    (a1),StrGadBuf13
  3684.  
  3685.         lea.l    NGStrGad14,a1
  3686.         move.w    #ShellTop+75,gng_TopEdge(a1)
  3687.         add.w    d5,gng_TopEdge(a1)
  3688.         move.l    #STRING_KIND,d0
  3689.         move.l    vi,gng_VisualInfo(a1)
  3690.         lea.l    StrGadTagList2,a2
  3691.         lib    GadTools,CreateGadgetA
  3692.  
  3693.         move.l    d0,StrGad14
  3694.         move.l    d0,a0
  3695.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3696.         move.l    gg_SpecialInfo(a0),a1
  3697.         move.l    (a1),StrGadBuf14
  3698.  
  3699.         lea.l    NGStrGad15,a1
  3700.         move.w    #ShellTop+85,gng_TopEdge(a1)
  3701.         add.w    d5,gng_TopEdge(a1)
  3702.         move.l    #STRING_KIND,d0
  3703.         move.l    vi,gng_VisualInfo(a1)
  3704.         lea.l    StrGadTagList1,a2
  3705.         lib    GadTools,CreateGadgetA
  3706.  
  3707.         move.l    d0,StrGad15
  3708.         move.l    d0,a0
  3709.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3710.         move.l    gg_SpecialInfo(a0),a1
  3711.         move.l    (a1),StrGadBuf15
  3712.  
  3713.         lea.l    NGStrGad16,a1
  3714.         move.w    #ShellTop+85,gng_TopEdge(a1)
  3715.         add.w    d5,gng_TopEdge(a1)
  3716.         move.l    #STRING_KIND,d0
  3717.         move.l    vi,gng_VisualInfo(a1)
  3718.         lea.l    StrGadTagList2,a2
  3719.         lib    GadTools,CreateGadgetA
  3720.  
  3721.         move.l    d0,StrGad16
  3722.         move.l    d0,a0
  3723.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3724.         move.l    gg_SpecialInfo(a0),a1
  3725.         move.l    (a1),StrGadBuf16
  3726.  
  3727.         lea.l    NGStrGad17,a1
  3728.         move.w    #ShellTop+95,gng_TopEdge(a1)
  3729.         add.w    d5,gng_TopEdge(a1)
  3730.         move.l    #STRING_KIND,d0
  3731.         move.l    vi,gng_VisualInfo(a1)
  3732.         lea.l    StrGadTagList1,a2
  3733.         lib    GadTools,CreateGadgetA
  3734.  
  3735.         move.l    d0,StrGad17
  3736.         move.l    d0,a0
  3737.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3738.         move.l    gg_SpecialInfo(a0),a1
  3739.         move.l    (a1),StrGadBuf17
  3740.  
  3741.         lea.l    NGStrGad18,a1
  3742.         move.w    #ShellTop+95,gng_TopEdge(a1)
  3743.         add.w    d5,gng_TopEdge(a1)
  3744.         move.l    #STRING_KIND,d0
  3745.         move.l    vi,gng_VisualInfo(a1)
  3746.         lea.l    StrGadTagList2,a2
  3747.         lib    GadTools,CreateGadgetA
  3748.  
  3749.         move.l    d0,StrGad18
  3750.         move.l    d0,a0
  3751.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3752.         move.l    gg_SpecialInfo(a0),a1
  3753.         move.l    (a1),StrGadBuf18
  3754.  
  3755.         lea.l    NGStrGad19,a1
  3756.         move.w    #ShellTop+105,gng_TopEdge(a1)
  3757.         add.w    d5,gng_TopEdge(a1)
  3758.         move.l    #STRING_KIND,d0
  3759.         move.l    vi,gng_VisualInfo(a1)
  3760.         lea.l    StrGadTagList1,a2
  3761.         lib    GadTools,CreateGadgetA
  3762.  
  3763.         move.l    d0,StrGad19
  3764.         move.l    d0,a0
  3765.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3766.         move.l    gg_SpecialInfo(a0),a1
  3767.         move.l    (a1),StrGadBuf19
  3768.  
  3769.         lea.l    NGStrGad20,a1
  3770.         move.w    #ShellTop+105,gng_TopEdge(a1)
  3771.         add.w    d5,gng_TopEdge(a1)
  3772.         move.l    #STRING_KIND,d0
  3773.         move.l    vi,gng_VisualInfo(a1)
  3774.         lea.l    StrGadTagList2,a2
  3775.         lib    GadTools,CreateGadgetA
  3776.  
  3777.         move.l    d0,StrGad20
  3778.         move.l    d0,a0
  3779.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  3780.         move.l    gg_SpecialInfo(a0),a1
  3781.         move.l    (a1),StrGadBuf20
  3782.  
  3783.         lea.l    NGDesc1Gad,a1
  3784.         move.w    #ShellTop,gng_TopEdge(a1)
  3785.         add.w    d5,gng_TopEdge(a1)
  3786.         move.l    #TEXT_KIND,d0
  3787.         move.l    vi,gng_VisualInfo(a1)
  3788.         lea.l    DescGadTagList,a2
  3789.         lib    GadTools,CreateGadgetA
  3790.  
  3791.         move.l    d0,a0
  3792.  
  3793.         lea.l    NGDesc2Gad,a1
  3794.         move.w    #ShellTop,gng_TopEdge(a1)
  3795.         add.w    d5,gng_TopEdge(a1)
  3796.         move.l    #TEXT_KIND,d0
  3797.         move.l    vi,gng_VisualInfo(a1)
  3798.         lea.l    DescGadTagList,a2
  3799.         lib    GadTools,CreateGadgetA
  3800.  
  3801.         move.l    d0,a0
  3802.         lea.l    NGGetGad1,a1
  3803.         move.w    #ShellTop+120,gng_TopEdge(a1)
  3804.         add.w    d5,gng_TopEdge(a1)
  3805.         move.l    #BUTTON_KIND,d0
  3806.         move.l    vi,gng_VisualInfo(a1)
  3807.         lea.l    GadTagList,a2
  3808.         lib    GadTools,CreateGadgetA
  3809.  
  3810.         move.l    d0,a0
  3811.         move.l    a0,GetGad1
  3812.  
  3813.         lea.l    glist3,a0
  3814.         lib    GadTools,CreateContext
  3815.         move.l    d0,ContextGad3
  3816.         beq    NoContextGad
  3817.  
  3818.         move.l    glist3,a0
  3819.         lea.l    NGStrGad21,a1
  3820.         move.w    #ShellTop,gng_TopEdge(a1)
  3821.         add.w    d5,gng_TopEdge(a1)
  3822.         move.l    #INTEGER_KIND,d0
  3823.         move.l    vi,gng_VisualInfo(a1)
  3824.         lea.l    StrGadTagList3,a2
  3825.         lib    GadTools,CreateGadgetA
  3826.  
  3827.         move.l    d0,StrGad21
  3828.         move.l    d0,a0
  3829.         move.l    gg_SpecialInfo(a0),a1
  3830.         add.l    #si_LongInt,a1
  3831.         move.l    a1,StrGadInt21
  3832.  
  3833.         move.b    #1,GadMagic        ;Make worked OK
  3834.  
  3835. ;New style menu stuff
  3836.  
  3837.         lea.l    MNProjectMenu1,a0
  3838.         lea.l    MenuTagList,a1
  3839.         lib    GadTools,CreateMenusA
  3840.         move.l    d0,mlist
  3841.         beq    NoMenus
  3842.  
  3843.         move.l    mlist,a0
  3844.         move.l    vi,a1
  3845.         lea.l    MenuTagList,a2
  3846.         lib    GadTools,LayoutMenusA
  3847.  
  3848.         lea.l    MNPageMenu1,a0
  3849.         lea.l    MenuTagList2,a1
  3850.         lib    GadTools,CreateMenusA
  3851.         move.l    d0,mlist2
  3852.         beq    NoMenus
  3853.  
  3854.         move.l    mlist2,a0
  3855.         move.l    vi,a1
  3856.         lea.l    MenuTagList2,a2
  3857.         lib    GadTools,LayoutMenusA
  3858.         tst.l    d0
  3859.         beq    NoMenus
  3860.         move.b    #1,MenuMagic
  3861.         move.l    #-1,d0
  3862.         rts
  3863.  
  3864. ;Open Window 1
  3865.  
  3866. OpenWin1:    tst.l    Window1
  3867.         bne    OpenWin1_OUT
  3868.  
  3869.         bsr    DoLayOut
  3870.         tst.l    d0
  3871.         beq    OpenWin1_ERR1
  3872.  
  3873.         move.l    OptPubScreen,Win1TagList.1
  3874.         tst.l    OptionIconify
  3875.         beq    OpenWin1.01
  3876.         lea.l    NewWindow1,a0
  3877.         and.l    #~ACTIVATE,nw_Flags(a0)
  3878.         move.l    NewWindow1,ZoomXY
  3879.         move.l    NewWindow1+4,ZoomXY+4
  3880.         move.l    Alt1XY,nw_LeftEdge(a0)
  3881.         move.w    #160,nw_Width(a0)
  3882.         move.w    BHeight,nw_Height(a0)
  3883. OpenWin1.01:    lea.l    NewWindow1,a0
  3884.         lea.l    Win1TagList,a1
  3885.         lib    Intuition,OpenWindowTagList
  3886.         move.l    d0,Window1
  3887.         beq    OpenWin1_ERR1
  3888.         move.l    Window1,AslReqTags+4
  3889.         bsr    AddGads            ;Window refreshed here
  3890.         move.l    Window1,a0
  3891.         move.l    $32(a0),RP
  3892.         move.l    mlist,a1
  3893.         lib    Intuition,SetMenuStrip
  3894.         bsr    ActGad
  3895.         bsr    UnLockPubScr
  3896. OpenWin1_OUT:    move.l    #-1,d0
  3897.         rts
  3898. OpenWin1_ERR1:    clr.l    d0
  3899.         rts        
  3900.  
  3901. CloseWin1:    tst.l    Window1
  3902.         beq    CloseWin1_OUT
  3903. CloseWin1.1:    move.l    Window1,a0
  3904.         lib    Intuition,ClearMenuStrip
  3905.         move.l    Window1,a3
  3906.         bsr    ClearMSGs
  3907. CloseWin1_OUT:    clr.l    Window1
  3908.         rts
  3909.  
  3910. ;Open Window 2 (Edit commands)
  3911.  
  3912. OpenWin2:    move.l    OptPubScreen,Win2TagList.1
  3913.         lea.l    NewWindow2,a0
  3914.         lea.l    Win2TagList,a1
  3915.         lib    Intuition,OpenWindowTagList
  3916.         move.l    d0,Window2
  3917.         beq    OpenWin2_ERR1
  3918.         move.l    Window2,a0
  3919.         move.l    mlist2,a1
  3920.         lib    Intuition,SetMenuStrip
  3921.         bsr    AddGads2        ;Window refreshed here
  3922.         move.l    #-1,d0
  3923.         rts
  3924. OpenWin2_ERR1:    clr.l    d0
  3925.         rts        
  3926.  
  3927. CloseWin2:    tst.l    Window2
  3928.         beq    CloseWin2_OUT
  3929.         move.l    Window2,a0
  3930.         lib    Intuition,ClearMenuStrip
  3931.         move.l    Window2,a3
  3932.         bsr    ClearMSGs
  3933. CloseWin2_OUT:    clr.l    Window2
  3934.         rts
  3935.  
  3936. ;Open Window 3 (Priority requester)
  3937.  
  3938. OpenWin3:    lea.l    NewWindow3,a0
  3939.         lea.l    glist3,a1
  3940.         move.l    a1,nw_FirstGadget(a0)
  3941.         lea.l    Win2TagList,a1        ;Yes, use Win2's tags...
  3942.         lib    Intuition,OpenWindowTagList
  3943.         move.l    d0,Window3
  3944.         beq    OpenWin3_ERR1
  3945.  
  3946.         move.l    Window3,a0
  3947.         sub.l    a1,a1
  3948.         lib    GadTools,GT_RefreshWindow
  3949.         move.l    #-1,d0
  3950.         rts
  3951. OpenWin3_ERR1:    clr.l    d0
  3952.         rts        
  3953.  
  3954. CloseWin3:    tst.l    Window3
  3955.         beq    CloseWin3_OUT
  3956.         move.l    Window3,a3
  3957.         bsr    ClearMSGs
  3958. CloseWin3_OUT:    clr.l    Window3
  3959.         rts
  3960.  
  3961. ;ClearMsgs subroutine
  3962. ;a3 = window structure
  3963.  
  3964. ClearMSGs:    lib    Exec,Forbid
  3965.         move.l    $56(a3),a2
  3966. ClearMsg1:    move.l    a2,a0
  3967.         lib    GadTools,GT_GetIMsg
  3968.         tst.l    d0
  3969.         beq    ClearMsg2
  3970.         move.l    d0,a1
  3971.         flib    GadTools,GT_ReplyIMsg
  3972.         bra    ClearMsg1
  3973. ClearMsg2:    move.l    a3,a0
  3974.         lib    Intuition,CloseWindow
  3975.         lib    Exec,Permit
  3976. ClearMsg3:    rts
  3977.  
  3978. Clean2.0Magic:    tst.b    GadMagic
  3979.         beq    Clean2.0M2
  3980.         move.l    glist,a0
  3981.         lib    GadTools,FreeGadgets
  3982.         move.l    glist2,a0
  3983.         lib    GadTools,FreeGadgets
  3984.         move.l    glist3,a0
  3985.         lib    GadTools,FreeGadgets
  3986.  
  3987. Clean2.0M2:    tst.b    MenuMagic
  3988.         beq    Clean2.0M3
  3989.         move.l    mlist,a0
  3990.         lib    GadTools,FreeMenus
  3991.         move.l    mlist2,a0
  3992.         lib    GadTools,FreeMenus
  3993.  
  3994. Clean2.0M3:    tst.l    vi
  3995.         beq    Clean2.0_OUT
  3996.         move.l    vi,a0
  3997.         lib    GadTools,FreeVisualInfo
  3998.  
  3999. Clean2.0_OUT:    rts
  4000.  
  4001. ;Error etc. messages
  4002.  
  4003. NoRDArgs:    lib    Dos,IoErr
  4004.         move.l    d0,d1
  4005.         clr.l    d2
  4006.         lib    Dos,PrintFault
  4007.         bra    ShutDown
  4008.  
  4009. NoMsgPort:    lea.l    NoMsgPortText1,a0
  4010.         bsr    Printer
  4011.         bra    ShutDown
  4012.  
  4013. NoMsgPort2:    lea.l    NoMsgPortText2,a0
  4014.         bsr    Printer
  4015.         bra    ShutDown
  4016.  
  4017. NoDos:        pull    d2-d7/a2-a6
  4018.         move.l    #RETURN_FAIL,d0
  4019.         rts
  4020.  
  4021. NoInt:        lea.l    NoIntText1,a0
  4022.         bsr    Printer
  4023.         bra    ShutDown
  4024.  
  4025. NoCommodities:    lea.l    NoCommoText1,a0
  4026.         bsr    Printer
  4027.         bra    ShutDown
  4028.  
  4029. NoAsl:        lea.l    NoAslText1,a0
  4030.         bsr    Printer
  4031.         bra    ShutDown
  4032.  
  4033. NoAslReq:    lea.l    NoAslReqText1,a0
  4034.         bsr    Printer
  4035.         bra    ShutDown
  4036.  
  4037. NoUtility:    lea.l    NoUtilityText1,a0
  4038.         bsr    Printer
  4039.         bra    ShutDown
  4040.  
  4041. NoVoice:    lea.l    NoVoiceText1,a0
  4042.         bsr    Printer
  4043.         bra    ShutDown
  4044.  
  4045. NoGadTools:    lea.l    NoGTText1,a0
  4046.         bsr    Printer
  4047.         bra    ShutDown
  4048.  
  4049. NoIcon:        lea.l    NoIconText1,a0
  4050.         bsr    Printer
  4051.         bra    ShutDown
  4052.  
  4053. NoPubScreen:    lea.l    NoPubScrText1,a0
  4054.         bsr    Printer
  4055.         clr.l    d0
  4056.         rts
  4057.  
  4058. NoWindow1:    lea.l    NoWindowText1,a0
  4059.         bsr    Printer
  4060.         bra    ShutDown
  4061.  
  4062. NoContextGad:    lea.l    NoContextText1,a0
  4063.         bsr    Printer
  4064.         clr.l    d0
  4065.         rts
  4066.  
  4067. NoMenus:    lea.l    NoMenusText1,a0
  4068.         bsr    Printer
  4069.         clr.l    d0
  4070.         rts
  4071.  
  4072. NoCommodity:    lea.l    NoCommodityText1,a0
  4073.         bsr    Printer
  4074.         bra    ShutDown
  4075.  
  4076. NoFilter:    lea.l    BadPopKeyText1,a0
  4077.         bsr    Printer
  4078.         bra    NoCommodity
  4079.  
  4080. BadPriority:    lea.l    BadPriorityText1,a0
  4081.         bsr    Printer
  4082.         bra    NoCommodity
  4083.  
  4084. Printer:    printa    a0,_stdout
  4085.         rts
  4086.  
  4087. Inform:        tst.l    Window1
  4088.         beq    Inform_OUT
  4089.         push    a0
  4090.         move.l    a0,SGTL2
  4091.         move.l    StatusGad1,a0
  4092.         move.l    Window1,a1
  4093.         sub.l    a2,a2
  4094.         lea.l    StatGadTagList2,a3
  4095.         lib    GadTools,GT_SetGadgetAttrsA
  4096.  
  4097.         pull    a1
  4098.         bsr    SetTitle
  4099. Inform_OUT:    rts
  4100.  
  4101. ;Give this the title pointer in a1
  4102.  
  4103. SetTitle:    tst.l    Window1
  4104.         beq    SetTitle_OUT
  4105.         push    a2
  4106.         move.l    Window1,a0
  4107.         move.l    #-1,a2
  4108.         lib    Intuition,SetWindowTitles
  4109.         pull    a2
  4110. SetTitle_OUT:    rts
  4111.  
  4112. ;Does a normal AutoRequest
  4113. ;
  4114. ;INPUT
  4115. ;
  4116. ;a1 = Main text body
  4117. ;a2 = Pos text
  4118. ;a3 = Neg text
  4119.  
  4120. DoAutoRequest:    clr.l    d0
  4121.         clr.l    d1
  4122.         clr.l    d2
  4123.         clr.l    d3
  4124.         sub.l    a0,a0        ;No win, cos' might be here b4 anything open
  4125.         lib    Intuition,AutoRequest
  4126.         rts
  4127.  
  4128. ;Reservations
  4129.  
  4130.         libnames
  4131.  
  4132. _SysBase:    dc.l    0
  4133. _DOSBase:    dc.l    0
  4134. _CxBase:    dc.l    0
  4135.  
  4136. ;Options
  4137.  
  4138. RDArgs1:    dc.l    0
  4139.  
  4140. CLArray1:
  4141. FromFile:    dc.l    0        ;A pointer to filename of PREFS!
  4142. OptionIconify:    dc.l    0
  4143. OptPubScreen:    dc.l    0        ;A pointer to pubscreen name
  4144. OptCXPri:    dc.l    0
  4145. OptCXPopKey:    dc.l    DefaultPopKey    ;A pointer to popkey string
  4146. OptCXPopUp:    dc.l    0        ;A pointer to 'Yes'/'No'
  4147. WBOptCXPri:    dc.l    0
  4148.  
  4149. ;ASL Stuff
  4150.  
  4151. AslReq:        dc.l    0
  4152.  
  4153. ;GadTools stuff
  4154.  
  4155. vi:        dc.l    0        ;Visual Info
  4156. mlist:        dc.l    0
  4157. mlist2:        dc.l    0
  4158. ContextGad:    dc.l    0
  4159. ContextGad2:    dc.l    0
  4160. ContextGad3:    dc.l    0
  4161. GadMagic:    dc.b    0
  4162. MenuMagic:    dc.b    0
  4163.  
  4164. ;Gadgets
  4165.  
  4166. OnOffGad1:    dc.l    0
  4167. GainUGad1:    dc.l    0
  4168. GainDGad1:    dc.l    0
  4169. GainGad1:    dc.l    0        ;Gain number
  4170. SaveGad1:    dc.l    0
  4171. QuitGad1:    dc.l    0
  4172. DatStrGad1:    dc.l    0
  4173. DatStrGadBuf1:    dc.l    0        ;Only a pointer!
  4174. StatusGad1:    dc.l    0
  4175. LoadGad1:    dc.l    0
  4176. GetGad1:    dc.l    0
  4177.  
  4178. StrGad1:    dc.l    0
  4179. StrGadBuf1:    dc.l    0        ;Only a pointer!
  4180. StrGad2:    dc.l    0
  4181. StrGadBuf2:    dc.l    0        ;Only a pointer!
  4182. StrGad3:    dc.l    0
  4183. StrGadBuf3:    dc.l    0        ;Only a pointer!
  4184. StrGad4:    dc.l    0
  4185. StrGadBuf4:    dc.l    0        ;Only a pointer!
  4186. StrGad5:    dc.l    0
  4187. StrGadBuf5:    dc.l    0        ;Only a pointer!
  4188. StrGad6:    dc.l    0
  4189. StrGadBuf6:    dc.l    0        ;Only a pointer!
  4190. StrGad7:    dc.l    0
  4191. StrGadBuf7:    dc.l    0        ;Only a pointer!
  4192. StrGad8:    dc.l    0
  4193. StrGadBuf8:    dc.l    0        ;Only a pointer!
  4194. StrGad9:    dc.l    0
  4195. StrGadBuf9:    dc.l    0        ;Only a pointer!
  4196. StrGad10:    dc.l    0
  4197. StrGadBuf10:    dc.l    0        ;Only a pointer!
  4198. StrGad11:    dc.l    0
  4199. StrGadBuf11:    dc.l    0        ;Only a pointer!
  4200. StrGad12:    dc.l    0
  4201. StrGadBuf12:    dc.l    0        ;Only a pointer!
  4202. StrGad13:    dc.l    0
  4203. StrGadBuf13:    dc.l    0        ;Only a pointer!
  4204. StrGad14:    dc.l    0
  4205. StrGadBuf14:    dc.l    0        ;Only a pointer!
  4206. StrGad15:    dc.l    0
  4207. StrGadBuf15:    dc.l    0        ;Only a pointer!
  4208. StrGad16:    dc.l    0
  4209. StrGadBuf16:    dc.l    0        ;Only a pointer!
  4210. StrGad17:    dc.l    0
  4211. StrGadBuf17:    dc.l    0        ;Only a pointer!
  4212. StrGad18:    dc.l    0
  4213. StrGadBuf18:    dc.l    0        ;Only a pointer!
  4214. StrGad19:    dc.l    0
  4215. StrGadBuf19:    dc.l    0        ;Only a pointer!
  4216. StrGad20:    dc.l    0
  4217. StrGadBuf20:    dc.l    0        ;Only a pointer!
  4218. StrGad21:    dc.l    0
  4219. StrGadInt21:    dc.l    0        ;Only a pointer!
  4220.  
  4221. ;display stuff
  4222.  
  4223. PubScreen:    dc.l    0
  4224. Window1:    dc.l    0
  4225. Window2:    dc.l    0
  4226. Window3:    dc.l    0
  4227. BHeight:    dc.w    0
  4228. RP:        dc.l    0
  4229.  
  4230.  
  4231.         ds.w    0
  4232.  
  4233. ;Other stuff, part I
  4234.  
  4235. OurTask:    dc.l    0
  4236. PrefsFile:    dc.l    0
  4237. DataFile:    dc.l    0
  4238. NILFile:    dc.l    0
  4239. _stdout:    dc.l    0
  4240. WBMsg:        dc.l    0
  4241. DiskObject:    dc.l    0
  4242. OldLock:    dc.l    0
  4243. TaskOn:        dc.w    0        ;0=Off, 1=On
  4244. TickCount:    dc.w    10        ;Delay Status update
  4245. Page:        dc.w    0        ;What page are we on ?
  4246. Saved:        dc.w    1        ;0=No, 1=Yes
  4247. PopUp:        dc.w    1        ;0=No, 1=Yes
  4248. DisActive:    dc.w    0        ;0=Yes, 1=No. Can we turn on/off?
  4249. VoicePort:    dc.l    0        ;Message port for voice.library
  4250. ARexxPort:    dc.l    0        ;Our ARexx port
  4251. CXPort:        dc.l    0        ;Message port for commodities
  4252. IEvents:    dc.l    0        ;List of Input Events to add
  4253. LastGad:    dc.l    0        ;Last active string gadget
  4254. CXBroker1:    dc.l    0        ;Our commodities broker list
  4255.  
  4256. ;Strings, error & other info
  4257.  
  4258. BreakText1:    dc.b    "***Break: VoiceShell",13,10,0
  4259. NoMsgPortText1: dc.b    "ERROR: Couldn't open message port!",13,10,0
  4260. NoMsgPortText2: dc.b    "ERROR: An ARexx port with the name 'VOICESHELL' already exists!",13,10,0
  4261. NoIntText1:    dc.b    "ERROR: Couldn't open intuition.library!",13,10,0
  4262. NoCommoText1:    dc.b    "ERROR: Couldn't open commodities.library!",13,10,0
  4263. NoAslText1:    dc.b    "ERROR: Couldn't open asl.library!",13,10,0
  4264. NoAslReqText1:    dc.b    "ERROR: Couldn't allocate ASL requester!",13,10,0
  4265. NoUtilityText1:    dc.b    "ERROR: Couldn't open utility.library!",13,10,0
  4266. NoVoiceText1:    dc.b    "ERROR: Couldn't open voice.library, version 8.2!",13,10,13,10
  4267.         dc.b    "CHECK: 1. Is the parallel port available?",13,10
  4268.         dc.b    "       2. Is another program using the voice.library?",13,10,0
  4269. NoGTText1:    dc.b    "ERROR: Couldn't open gadtools.library!",13,10,0
  4270. NoIconText1:    dc.b    "ERROR: Couldn't open icon.library!",13,10,0
  4271. NoPubScrText1:    dc.b    "ERROR: Couldn't lock PublicScreen!",13,10,0
  4272. NoContextText1: dc.b    "ERROR: Couldn't create context gadget!",13,10,0
  4273. NoMenusText1:    dc.b    "ERROR: Couldn't allocate menus structure!",13,10,0
  4274. NoWindowText1:    dc.b    "ERROR: Couldn't open window!",13,10,0
  4275. NoCommodityText1: dc.b    "ERROR: Couldn't create commodity!",13,10
  4276.         dc.b    "       Another copy of VoiceShell is probably running.",13,10,0
  4277. BadPopKeyText1:    dc.b    "ERROR: Bad hotkey setting!",13,10,0
  4278. BadPriorityText1: dc.b    "ERROR: Bad priority value!",13,10,0
  4279. File_ERRText1:    dc.b    "Couldn't open preferences file!",0
  4280. File_ERRText2:    dc.b    "File error!",0
  4281. File_ERRText3:    dc.b    "Incorrect file type or version!",0
  4282. File_ERRText4:    dc.b    "Couldn't open data file!",0
  4283. NoMatchText1:    dc.b    "No Match",0
  4284. LowVolText1:    dc.b    "Low Volume",0
  4285. ClippingText1:    dc.b    "Too Loud",0
  4286. NoisyText1:    dc.b    "Too Noisy",0
  4287. TaskOnText1:    dc.b    "Turned On",0
  4288. TaskOffText1:    dc.b    "Turned Off",0
  4289. ReadyText1:    dc.b    "Ready",0
  4290. InactiveText1:    dc.b    "Inactive",0
  4291. NoCMDText1:    dc.b    "No Command!",0
  4292. CMDFailText1:    dc.b    "Command Failed!",0
  4293.  
  4294. ;Strings, names
  4295.  
  4296. CLTemplate1:    dc.b    "FROM/K,I=ICONIFY/S,PS=PUBSCREEN/K,"    ;Cont'd
  4297.         dc.b    "PRI=CX_PRIORITY/N/K,PK=CX_POPKEY/K,PU=CX_POPUP/K",0
  4298. VSVersion:    dc.b    "$VER: VoiceShell "
  4299.         PROGVERSION
  4300.         dc.b    " (c) Copyright Tomi Blinnikka 1993",0
  4301. OKText1:    dc.b    "OK",0
  4302. CancelText1:    dc.b    "Cancel",0
  4303. PrefsName:    dc.b    "ENVARC:VoiceShell.PREFS",0
  4304. NILName:    dc.b    "CON:0/10/500/70/VoiceShell_Error/CLOSE/AUTO/WAIT",0
  4305. ICONIFYText1:    dc.b    "ICONIFY",0
  4306. PUBSCREENText1:    dc.b    "PUBSCREEN",0
  4307. CXPOPUPText1:    dc.b    "CX_POPUP",0
  4308. CXPOPKEYText1:    dc.b    "CX_POPKEY",0
  4309. CXPRIText1:    dc.b    "CX_PRIORITY",0
  4310. DefaultPopKey:    dc.b    "ctrl alt v",0
  4311. YESText1:    dc.b    "YES",0
  4312. NOText1:    dc.b    "NO",0
  4313. FROMText1:    dc.b    "FROM",0
  4314. AboutText1:    dc.b    "Name   : VoiceShell",0
  4315. AboutText2:    dc.b    "Version: "
  4316.         PROGVERSION
  4317.         dc.b    0
  4318. AboutText3:    dc.b    "Author : Tomi Blinnikka",0
  4319. AboutText4:    dc.b    "  (c) Copyright  1993",0
  4320.  
  4321.         IFD    VS_REGISTERED
  4322. AboutText5:    dc.b    "NOTE: Registered version",0
  4323.         ENDC
  4324.  
  4325.         IFND    VS_REGISTERED
  4326. AboutText5:    dc.b    "NOTE: Unregistered version",0
  4327.         ENDC
  4328. AboutText6:    dc.b    "Hotkey: ",0
  4329.  
  4330. QuitText1:    dc.b    "The data file has not been saved!",0
  4331. QuitText2:    dc.b    "Are you sure you want to quit?",0
  4332. VSName1:    dc.b    "VoiceShell",0
  4333. VSName2:    dc.b    "VoiceShell: Edit & Learn",0
  4334. VSName3:    dc.b    "Please enter:",0
  4335. VSTitle:    dc.b    "Voice recognition:",0
  4336. VSDesc:        dc.b    "Start programs with voice commands",0
  4337. GetText1:    dc.b    "Command to run",0
  4338.  
  4339. ;ARexx strings
  4340.  
  4341. ARexxPortName:    dc.b    "VOICESHELL",0
  4342.  
  4343. ;Window control
  4344.  
  4345. RexxFront:    dc.b    "FRONT",0
  4346. RexxBack:    dc.b    "BACK",0
  4347. RexxZoom:    dc.b    "ZOOM",0
  4348. RexxHide:    dc.b    "HIDE",0
  4349. RexxShow:    dc.b    "SHOW",0
  4350.  
  4351. ;Misc
  4352.  
  4353. RexxOn:        dc.b    "ON",0
  4354. RexxOff:    dc.b    "OFF",0
  4355. RexxQuit:    dc.b    "QUIT",0
  4356.  
  4357. ;Sampler settings
  4358.  
  4359. RexxPerfSnd:    dc.b    "PERFSND",0
  4360. RexxSndMstr:    dc.b    "SNDMSTR",0
  4361. RexxDSS8:    dc.b    "DSS8",0
  4362. RexxGeneric:    dc.b    "GENERIC",0
  4363.  
  4364. ;Resolution
  4365.  
  4366. RexxResLo:    dc.b    "RESLO",0
  4367. RexxResHi:    dc.b    "RESHI",0
  4368.  
  4369. ;Accuracy
  4370.  
  4371. RexxLowest:    dc.b    "LOWEST",0
  4372. RexxLower:    dc.b    "LOWER",0
  4373. RexxLow:    dc.b    "LOW",0
  4374. RexxNormal:    dc.b    "NORMAL",0
  4375. RexxHigh:    dc.b    "HIGH",0
  4376. RexxHigher:    dc.b    "HIGHER",0
  4377. RexxEHigher:    dc.b    "EVENHIGHER",0
  4378. RexxMaximum:    dc.b    "MAXIMUM",0
  4379.  
  4380. ;Channel
  4381.  
  4382. RexxLeft:    dc.b    "LEFT",0
  4383. RexxRight:    dc.b    "RIGHT",0
  4384.  
  4385. ;Input gain
  4386.  
  4387. RexxLine:    dc.b    "LINE",0
  4388. RexxMic:    dc.b    "MIC",0
  4389.  
  4390. RexxGainUp:    dc.b    "GAINUP",0
  4391. RexxGainDown:    dc.b    "GAINDOWN",0
  4392.  
  4393. RexxTimerA:    dc.b    "TIMERA",0
  4394. RexxTimerB:    dc.b    "TIMERB",0
  4395.  
  4396. ;Others not defined here:
  4397. ;
  4398. ;    LOAD
  4399. ;    KEY
  4400. ;
  4401.  
  4402.         ds.w    0
  4403.  
  4404. ;New screen & new window structures
  4405.  
  4406. NewWindow1:    dc.w    200,31            ;X,Y POS
  4407.         dc.w    320            ;WIDTH
  4408. Win1YSize:    dc.w    0            ;HEIGHT
  4409.         dc.b    0,1            ;PENS
  4410.         dc.l    REFRESHWINDOW!INTUITICKS!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP    ;IDCMP FLAGS
  4411.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  4412.         dc.l    0,0            ;GADGETS, CHECKMARK
  4413.         dc.l    VSName1            ;TITLE
  4414.         dc.l    0            ;SCREEN ADDRESS
  4415.         dc.l    0            ;BITMAP            
  4416.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  4417.         dc.w    PUBLICSCREEN        ;TYPE
  4418.  
  4419. Win1TagList:    dc.l    WA_AutoAdjust,TRUE
  4420.         dc.l    WA_PubScreenName
  4421. Win1TagList.1:    dc.l    0
  4422.         dc.l    WA_Zoom,ZoomXY
  4423.         dc.l    TAG_DONE,0
  4424.  
  4425. ZoomXY:
  4426. SmallXPos:    dc.w    10
  4427. SmallYPos:    dc.w    21
  4428. SmallXSize:    dc.w    160
  4429. SmallYSize:    dc.w    0
  4430.  
  4431. NewWindow2:    dc.w    100,42            ;X,Y POS
  4432.         dc.w    430            ;WIDTH
  4433. Win2YSize:    dc.w    0            ;HEIGHT
  4434.         dc.b    0,1            ;PENS
  4435.         dc.l    REFRESHWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP!GADGETDOWN    ;IDCMP FLAGS
  4436.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  4437.         dc.l    0,0            ;GADGETS, CHECKMARK
  4438.         dc.l    VSName2            ;TITLE
  4439.         dc.l    0            ;SCREEN ADDRESS
  4440.         dc.l    0            ;BITMAP            
  4441.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  4442.         dc.w    PUBLICSCREEN        ;TYPE
  4443.  
  4444. Win2TagList:    dc.l    WA_AutoAdjust,TRUE
  4445.         dc.l    WA_PubScreenName
  4446. Win2TagList.1:    dc.l    0
  4447.         dc.l    TAG_DONE,0
  4448.  
  4449. NewWindow3:    dc.w    220,42            ;X,Y POS
  4450.         dc.w    200            ;WIDTH
  4451. Win3YSize:    dc.w    0            ;HEIGHT
  4452.         dc.b    0,1            ;PENS
  4453.         dc.l    REFRESHWINDOW!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!GADGETUP    ;IDCMP FLAGS
  4454.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  4455.         dc.l    0,0            ;GADGETS, CHECKMARK
  4456.         dc.l    VSName3            ;TITLE
  4457.         dc.l    0            ;SCREEN ADDRESS
  4458.         dc.l    0            ;BITMAP
  4459.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  4460.         dc.w    PUBLICSCREEN        ;TYPE
  4461.  
  4462.  
  4463. ;Fonts
  4464.  
  4465. Topaz:        dc.l    TopazName
  4466.         dc.w    8
  4467.         dc.b    0
  4468.         dc.b    0
  4469. TopazName:    dc.b    "topaz.font",0
  4470.         ds.w    0
  4471.  
  4472.  
  4473. ;ASL stuff
  4474.  
  4475. AslReqTags:    dc.l    ASL_Window
  4476.         dc.l    0            ;Move window pointer here!
  4477.         dc.l    TAG_DONE,0
  4478. GetReqTags:    dc.l    ASL_Hail,GetText1
  4479.         dc.l    ASL_Dir,0
  4480.         dc.l    ASL_File,0
  4481.         dc.l    ASL_FuncFlags,0
  4482.         dc.l    TAG_DONE,0
  4483.  
  4484. ;ITextStructures
  4485.  
  4486. OKTxt:        dc.b    1,2            ;PENS
  4487.         dc.w    0            ;MODE
  4488.         dc.w    0,0            ;LEFT+TOPEDGE
  4489.         dc.l    0            ;FONT
  4490.         dc.l    OKText1            ;TEXT
  4491.         dc.l    0            ;NEXTTEXT
  4492.  
  4493. CancelTxt:    dc.b    1,2            ;PENS
  4494.         dc.w    0            ;MODE
  4495.         dc.w    0,0            ;LEFT+TOPEDGE
  4496.         dc.l    0            ;FONT
  4497.         dc.l    CancelText1        ;TEXT
  4498.         dc.l    0            ;NEXTTEXT
  4499.  
  4500. File_ERRTxt1:    dc.b    1,2            ;PENS
  4501.         dc.w    0            ;MODE
  4502.         dc.w    10,10            ;LEFT+TOPEDGE
  4503.         dc.l    0            ;FONT
  4504.         dc.l    File_ERRText1        ;TEXT
  4505.         dc.l    0            ;NEXTTEXT
  4506.  
  4507. File_ERRTxt2:    dc.b    1,2            ;PENS
  4508.         dc.w    0            ;MODE
  4509.         dc.w    10,10            ;LEFT+TOPEDGE
  4510.         dc.l    0            ;FONT
  4511.         dc.l    File_ERRText2        ;TEXT
  4512.         dc.l    0            ;NEXTTEXT
  4513.  
  4514. File_ERRTxt3:    dc.b    1,2            ;PENS
  4515.         dc.w    0            ;MODE
  4516.         dc.w    10,10            ;LEFT+TOPEDGE
  4517.         dc.l    0            ;FONT
  4518.         dc.l    File_ERRText3        ;TEXT
  4519.         dc.l    0            ;NEXTTEXT
  4520.  
  4521. File_ERRTxt4:    dc.b    1,2            ;PENS
  4522.         dc.w    0            ;MODE
  4523.         dc.w    10,10            ;LEFT+TOPEDGE
  4524.         dc.l    0            ;FONT
  4525.         dc.l    File_ERRText4        ;TEXT
  4526.         dc.l    0            ;NEXTTEXT
  4527.  
  4528. AboutTxt1:    dc.b    1,2            ;PENS
  4529.         dc.w    0            ;MODE
  4530.         dc.w    0,0            ;LEFT+TOPEDGE
  4531.         dc.l    Topaz            ;FONT
  4532.         dc.l    AboutText1        ;TEXT
  4533.         dc.l    AboutTxt2        ;NEXTTEXT
  4534.  
  4535. AboutTxt2:    dc.b    1,2            ;PENS
  4536.         dc.w    0            ;MODE
  4537.         dc.w    0,10            ;LEFT+TOPEDGE
  4538.         dc.l    Topaz            ;FONT
  4539.         dc.l    AboutText2        ;TEXT
  4540.         dc.l    AboutTxt3        ;NEXTTEXT
  4541.  
  4542. AboutTxt3:    dc.b    1,2            ;PENS
  4543.         dc.w    0            ;MODE
  4544.         dc.w    0,20            ;LEFT+TOPEDGE
  4545.         dc.l    Topaz            ;FONT
  4546.         dc.l    AboutText3        ;TEXT
  4547.         dc.l    AboutTxt4        ;NEXTTEXT
  4548.  
  4549. AboutTxt4:    dc.b    1,2            ;PENS
  4550.         dc.w    0            ;MODE
  4551.         dc.w    0,30            ;LEFT+TOPEDGE
  4552.         dc.l    Topaz            ;FONT
  4553.         dc.l    AboutText4        ;TEXT
  4554.         dc.l    AboutTxt5        ;NEXTTEXT
  4555.  
  4556. AboutTxt5:    dc.b    1,2            ;PENS
  4557.         dc.w    0            ;MODE
  4558.         dc.w    0,50            ;LEFT+TOPEDGE
  4559.         dc.l    Topaz            ;FONT
  4560.         dc.l    AboutText5        ;TEXT
  4561.         dc.l    AboutTxt6        ;NEXTTEXT
  4562.  
  4563. AboutTxt6:    dc.b    1,2            ;PENS
  4564.         dc.w    0            ;MODE
  4565.         dc.w    0,70            ;LEFT+TOPEDGE
  4566.         dc.l    Topaz            ;FONT
  4567.         dc.l    AboutText6        ;TEXT
  4568.         dc.l    AboutTxt7        ;NEXTTEXT
  4569.  
  4570. AboutTxt7:    dc.b    1,2            ;PENS
  4571.         dc.w    0            ;MODE
  4572.         dc.w    0,80            ;LEFT+TOPEDGE
  4573.         dc.l    Topaz            ;FONT
  4574. AboutTxt7.X:    dc.l    0            ;TEXT
  4575.         dc.l    0 ;AboutTxt8        ;NEXTTEXT
  4576.  
  4577. QuitTxt1:    dc.b    1,2            ;PENS
  4578.         dc.w    0            ;MODE
  4579.         dc.w    0,0            ;LEFT+TOPEDGE
  4580.         dc.l    Topaz            ;FONT
  4581.         dc.l    QuitText1        ;TEXT
  4582.         dc.l    QuitTxt2        ;NEXTTEXT
  4583.  
  4584. QuitTxt2:    dc.b    1,2            ;PENS
  4585.         dc.w    0            ;MODE
  4586.         dc.w    0,20            ;LEFT+TOPEDGE
  4587.         dc.l    Topaz            ;FONT
  4588.         dc.l    QuitText2        ;TEXT
  4589.         dc.l    0 ;QuitTxt3        ;NEXTTEXT
  4590.  
  4591. ;Gadgets
  4592.  
  4593. OnOffGadText1:    dc.b    "On/Off",0
  4594. GainUGadText1:    dc.b    "Vol _Up",0
  4595. GainDGadText1:    dc.b    "Vol _Dwn",0
  4596. SaveGadText1:    dc.b    "_Save",0
  4597. QuitGadText1:    dc.b    "_Quit",0
  4598. DatGadText1:    dc.b    "Data _file",0
  4599. StatGadText1:    dc.b    "Status",0
  4600. LoadGadText1:    dc.b    "_Load",0
  4601. DescGadText1:    dc.b    "Description",0
  4602. DescGadText2:    dc.b    "Command to run",0
  4603. GetGadText1:    dc.b    "_Get",0
  4604. PriGadText1:    dc.b    "Priority",0
  4605.         ds.w    0
  4606.  
  4607. glist:        dcb.b    gg_SIZEOF,0
  4608. glist2:        dcb.b    gg_SIZEOF,0
  4609. glist3:        dcb.b    gg_SIZEOF,0
  4610.  
  4611. NGOnOffGad1:    dc.w    10        ;gng_LeftEdge
  4612.         dc.w    0        ;gng_TopEdge
  4613.         dc.w    0        ;gng_Width
  4614.         dc.w    13        ;gng_Height
  4615.         dc.l    OnOffGadText1    ;gng_GadgetText
  4616.         dc.l    Topaz        ;gng_TextAttr
  4617.         dc.w    10        ;gng_GadgetID
  4618.         dc.l    PLACETEXT_RIGHT ;gng_Flags
  4619.         dc.l    0        ;gng_VisualInfo
  4620.         dc.l    0        ;gng_UserData
  4621.  
  4622. NGGainUGad:    dc.w    10        ;gng_LeftEdge
  4623.         dc.w    0        ;gng_TopEdge
  4624.         dc.w    60        ;gng_Width
  4625.         dc.w    12        ;gng_Height
  4626.         dc.l    GainUGadText1    ;gng_GadgetText
  4627.         dc.l    Topaz        ;gng_TextAttr
  4628.         dc.w    20        ;gng_GadgetID
  4629.         dc.l    PLACETEXT_IN    ;gng_Flags
  4630.         dc.l    0        ;gng_VisualInfo
  4631.         dc.l    0        ;gng_UserData
  4632.  
  4633. NGGainDGad:    dc.w    10        ;gng_LeftEdge
  4634.         dc.w    0        ;gng_TopEdge
  4635.         dc.w    60        ;gng_Width
  4636.         dc.w    12        ;gng_Height
  4637.         dc.l    GainDGadText1    ;gng_GadgetText
  4638.         dc.l    Topaz        ;gng_TextAttr
  4639.         dc.w    30        ;gng_GadgetID
  4640.         dc.l    PLACETEXT_IN    ;gng_Flags
  4641.         dc.l    0        ;gng_VisualInfo
  4642.         dc.l    0        ;gng_UserData
  4643.  
  4644. NGGainGad:    dc.w    10+60+INTERWIDTH-3    ;gng_LeftEdge
  4645.         dc.w    0        ;gng_TopEdge
  4646.         dc.w    20        ;gng_Width
  4647.         dc.w    12        ;gng_Height
  4648.         dc.l    0        ;gng_GadgetText
  4649.         dc.l    Topaz        ;gng_TextAttr
  4650.         dc.w    0        ;gng_GadgetID
  4651.         dc.l    0        ;gng_Flags
  4652.         dc.l    0        ;gng_VisualInfo
  4653.         dc.l    0        ;gng_UserData
  4654.  
  4655. NGSaveGad:    dc.w    10        ;gng_LeftEdge
  4656.         dc.w    0        ;gng_TopEdge
  4657.         dc.w    60        ;gng_Width
  4658.         dc.w    12        ;gng_Height
  4659.         dc.l    SaveGadText1    ;gng_GadgetText
  4660.         dc.l    Topaz        ;gng_TextAttr
  4661.         dc.w    98        ;gng_GadgetID
  4662.         dc.l    PLACETEXT_IN    ;gng_Flags
  4663.         dc.l    0        ;gng_VisualInfo
  4664.         dc.l    0        ;gng_UserData
  4665.  
  4666. NGQuitGad:    dc.w    -70        ;gng_LeftEdge
  4667.         dc.w    0        ;gng_TopEdge
  4668.         dc.w    60        ;gng_Width
  4669.         dc.w    12        ;gng_Height
  4670.         dc.l    QuitGadText1    ;gng_GadgetText
  4671.         dc.l    Topaz        ;gng_TextAttr
  4672.         dc.w    99        ;gng_GadgetID
  4673.         dc.l    PLACETEXT_IN    ;gng_Flags
  4674.         dc.l    0        ;gng_VisualInfo
  4675.         dc.l    0        ;gng_UserData
  4676.  
  4677. NGDatStrGad1:    dc.w    100        ;gng_LeftEdge
  4678.         dc.w    ShellTop+28    ;gng_TopEdge
  4679.         dc.w    135        ;gng_Width
  4680.         dc.w    12        ;gng_Height
  4681.         dc.l    DatGadText1    ;gng_GadgetText
  4682.         dc.l    Topaz        ;gng_TextAttr
  4683.         dc.w    1        ;gng_GadgetID
  4684.         dc.l    PLACETEXT_BELOW ;gng_Flags
  4685.         dc.l    0        ;gng_VisualInfo
  4686.         dc.l    0        ;gng_UserData
  4687.  
  4688. NGStatusGad:    dc.w    100        ;gng_LeftEdge
  4689.         dc.w    0        ;gng_TopEdge
  4690.         dc.w    199        ;gng_Width
  4691.         dc.w    12        ;gng_Height
  4692.         dc.l    StatGadText1    ;gng_GadgetText
  4693.         dc.l    Topaz        ;gng_TextAttr
  4694.         dc.w    0        ;gng_GadgetID
  4695.         dc.l    PLACETEXT_BELOW ;gng_Flags
  4696.         dc.l    0        ;gng_VisualInfo
  4697.         dc.l    0        ;gng_UserData
  4698.  
  4699. NGLoadGad:    dc.w    -70        ;gng_LeftEdge
  4700.         dc.w    0        ;gng_TopEdge
  4701.         dc.w    60        ;gng_Width
  4702.         dc.w    12        ;gng_Height
  4703.         dc.l    LoadGadText1    ;gng_GadgetText
  4704.         dc.l    Topaz        ;gng_TextAttr
  4705.         dc.w    40        ;gng_GadgetID
  4706.         dc.l    PLACETEXT_IN    ;gng_Flags
  4707.         dc.l    0        ;gng_VisualInfo
  4708.         dc.l    0        ;gng_UserData
  4709.  
  4710. ;Gadget TagLists
  4711.  
  4712. GadTagList:    dc.l    GT_Underscore,'_'
  4713.         dc.l    TAG_DONE,0
  4714.  
  4715. GainGadTagList:    dc.l    GTNM_Border,TRUE
  4716.         dc.l    GTNM_Number
  4717. GainPointer:    dc.l    0
  4718.         dc.l    TAG_DONE,0
  4719.  
  4720. StatGadTagList: dc.l    GTTX_Border,TRUE
  4721.         dc.l    TAG_DONE,0
  4722.  
  4723. StatGadTagList2: dc.l    GTTX_Border,TRUE
  4724.         dc.l    GTTX_Text
  4725. SGTL2:        dc.l    0
  4726.         dc.l    TAG_DONE,0
  4727.  
  4728. DatStrGadTagList: dc.l    GTST_String,DatBuffer
  4729.         dc.l    GT_Underscore,'_'
  4730.         dc.l    GTST_MaxChars,32
  4731.         dc.l    TAG_DONE,0
  4732.  
  4733. DisabledTags:    dc.l    GA_DISABLED,TRUE
  4734.         dc.l    TAG_DONE,0
  4735.  
  4736. EnabledTags:    dc.l    GA_DISABLED,FALSE
  4737.         dc.l    TAG_DONE,0
  4738.  
  4739. ;Gadgets for edit window
  4740.  
  4741. NGDesc1Gad:    dc.w    10        ;gng_LeftEdge
  4742.         dc.w    0        ;gng_TopEdge
  4743.         dc.w    100        ;gng_Width
  4744.         dc.w    12        ;gng_Height
  4745.         dc.l    DescGadText1    ;gng_GadgetText
  4746.         dc.l    Topaz        ;gng_TextAttr
  4747.         dc.w    0        ;gng_GadgetID
  4748.         dc.l    PLACETEXT_IN    ;gng_Flags
  4749.         dc.l    0        ;gng_VisualInfo
  4750.         dc.l    0        ;gng_UserData
  4751.  
  4752. NGDesc2Gad:    dc.w    120        ;gng_LeftEdge
  4753.         dc.w    0        ;gng_TopEdge
  4754.         dc.w    300        ;gng_Width
  4755.         dc.w    12        ;gng_Height
  4756.         dc.l    DescGadText2    ;gng_GadgetText
  4757.         dc.l    Topaz        ;gng_TextAttr
  4758.         dc.w    0        ;gng_GadgetID
  4759.         dc.l    PLACETEXT_IN    ;gng_Flags
  4760.         dc.l    0        ;gng_VisualInfo
  4761.         dc.l    0        ;gng_UserData
  4762.  
  4763. NGStrGad1:    dc.w    10        ;gng_LeftEdge
  4764.         dc.w    0        ;gng_TopEdge
  4765.         dc.w    100        ;gng_Width
  4766.         dc.w    12        ;gng_Height
  4767.         dc.l    0        ;gng_GadgetText
  4768.         dc.l    Topaz        ;gng_TextAttr
  4769.         dc.w    1        ;gng_GadgetID
  4770.         dc.l    0        ;gng_Flags
  4771.         dc.l    0        ;gng_VisualInfo
  4772.         dc.l    0        ;gng_UserData
  4773.  
  4774. NGStrGad2:    dc.w    120        ;gng_LeftEdge
  4775.         dc.w    0        ;gng_TopEdge
  4776.         dc.w    300        ;gng_Width
  4777.         dc.w    12        ;gng_Height
  4778.         dc.l    0        ;gng_GadgetText
  4779.         dc.l    Topaz        ;gng_TextAttr
  4780.         dc.w    2        ;gng_GadgetID
  4781.         dc.l    0        ;gng_Flags
  4782.         dc.l    0        ;gng_VisualInfo
  4783.         dc.l    0        ;gng_UserData
  4784.  
  4785. NGStrGad3:    dc.w    10        ;gng_LeftEdge
  4786.         dc.w    0        ;gng_TopEdge
  4787.         dc.w    100        ;gng_Width
  4788.         dc.w    12        ;gng_Height
  4789.         dc.l    0        ;gng_GadgetText
  4790.         dc.l    Topaz        ;gng_TextAttr
  4791.         dc.w    1        ;gng_GadgetID
  4792.         dc.l    0        ;gng_Flags
  4793.         dc.l    0        ;gng_VisualInfo
  4794.         dc.l    0        ;gng_UserData
  4795.  
  4796. NGStrGad4:    dc.w    120        ;gng_LeftEdge
  4797.         dc.w    0        ;gng_TopEdge
  4798.         dc.w    300        ;gng_Width
  4799.         dc.w    12        ;gng_Height
  4800.         dc.l    0        ;gng_GadgetText
  4801.         dc.l    Topaz        ;gng_TextAttr
  4802.         dc.w    2        ;gng_GadgetID
  4803.         dc.l    0        ;gng_Flags
  4804.         dc.l    0        ;gng_VisualInfo
  4805.         dc.l    0        ;gng_UserData
  4806.  
  4807. NGStrGad5:    dc.w    10        ;gng_LeftEdge
  4808.         dc.w    0        ;gng_TopEdge
  4809.         dc.w    100        ;gng_Width
  4810.         dc.w    12        ;gng_Height
  4811.         dc.l    0        ;gng_GadgetText
  4812.         dc.l    Topaz        ;gng_TextAttr
  4813.         dc.w    1        ;gng_GadgetID
  4814.         dc.l    0        ;gng_Flags
  4815.         dc.l    0        ;gng_VisualInfo
  4816.         dc.l    0        ;gng_UserData
  4817.  
  4818. NGStrGad6:    dc.w    120        ;gng_LeftEdge
  4819.         dc.w    0        ;gng_TopEdge
  4820.         dc.w    300        ;gng_Width
  4821.         dc.w    12        ;gng_Height
  4822.         dc.l    0        ;gng_GadgetText
  4823.         dc.l    Topaz        ;gng_TextAttr
  4824.         dc.w    2        ;gng_GadgetID
  4825.         dc.l    0        ;gng_Flags
  4826.         dc.l    0        ;gng_VisualInfo
  4827.         dc.l    0        ;gng_UserData
  4828.  
  4829. NGStrGad7:    dc.w    10        ;gng_LeftEdge
  4830.         dc.w    0        ;gng_TopEdge
  4831.         dc.w    100        ;gng_Width
  4832.         dc.w    12        ;gng_Height
  4833.         dc.l    0        ;gng_GadgetText
  4834.         dc.l    Topaz        ;gng_TextAttr
  4835.         dc.w    1        ;gng_GadgetID
  4836.         dc.l    0        ;gng_Flags
  4837.         dc.l    0        ;gng_VisualInfo
  4838.         dc.l    0        ;gng_UserData
  4839.  
  4840. NGStrGad8:    dc.w    120        ;gng_LeftEdge
  4841.         dc.w    0        ;gng_TopEdge
  4842.         dc.w    300        ;gng_Width
  4843.         dc.w    12        ;gng_Height
  4844.         dc.l    0        ;gng_GadgetText
  4845.         dc.l    Topaz        ;gng_TextAttr
  4846.         dc.w    2        ;gng_GadgetID
  4847.         dc.l    0        ;gng_Flags
  4848.         dc.l    0        ;gng_VisualInfo
  4849.         dc.l    0        ;gng_UserData
  4850.  
  4851. NGStrGad9:    dc.w    10        ;gng_LeftEdge
  4852.         dc.w    0        ;gng_TopEdge
  4853.         dc.w    100        ;gng_Width
  4854.         dc.w    12        ;gng_Height
  4855.         dc.l    0        ;gng_GadgetText
  4856.         dc.l    Topaz        ;gng_TextAttr
  4857.         dc.w    1        ;gng_GadgetID
  4858.         dc.l    0        ;gng_Flags
  4859.         dc.l    0        ;gng_VisualInfo
  4860.         dc.l    0        ;gng_UserData
  4861.  
  4862. NGStrGad10:    dc.w    120        ;gng_LeftEdge
  4863.         dc.w    0        ;gng_TopEdge
  4864.         dc.w    300        ;gng_Width
  4865.         dc.w    12        ;gng_Height
  4866.         dc.l    0        ;gng_GadgetText
  4867.         dc.l    Topaz        ;gng_TextAttr
  4868.         dc.w    2        ;gng_GadgetID
  4869.         dc.l    0        ;gng_Flags
  4870.         dc.l    0        ;gng_VisualInfo
  4871.         dc.l    0        ;gng_UserData
  4872.  
  4873. NGStrGad11:    dc.w    10        ;gng_LeftEdge
  4874.         dc.w    0        ;gng_TopEdge
  4875.         dc.w    100        ;gng_Width
  4876.         dc.w    12        ;gng_Height
  4877.         dc.l    0        ;gng_GadgetText
  4878.         dc.l    Topaz        ;gng_TextAttr
  4879.         dc.w    1        ;gng_GadgetID
  4880.         dc.l    0        ;gng_Flags
  4881.         dc.l    0        ;gng_VisualInfo
  4882.         dc.l    0        ;gng_UserData
  4883.  
  4884. NGStrGad12:    dc.w    120        ;gng_LeftEdge
  4885.         dc.w    0        ;gng_TopEdge
  4886.         dc.w    300        ;gng_Width
  4887.         dc.w    12        ;gng_Height
  4888.         dc.l    0        ;gng_GadgetText
  4889.         dc.l    Topaz        ;gng_TextAttr
  4890.         dc.w    2        ;gng_GadgetID
  4891.         dc.l    0        ;gng_Flags
  4892.         dc.l    0        ;gng_VisualInfo
  4893.         dc.l    0        ;gng_UserData
  4894.  
  4895. NGStrGad13:    dc.w    10        ;gng_LeftEdge
  4896.         dc.w    0        ;gng_TopEdge
  4897.         dc.w    100        ;gng_Width
  4898.         dc.w    12        ;gng_Height
  4899.         dc.l    0        ;gng_GadgetText
  4900.         dc.l    Topaz        ;gng_TextAttr
  4901.         dc.w    1        ;gng_GadgetID
  4902.         dc.l    0        ;gng_Flags
  4903.         dc.l    0        ;gng_VisualInfo
  4904.         dc.l    0        ;gng_UserData
  4905.  
  4906. NGStrGad14:    dc.w    120        ;gng_LeftEdge
  4907.         dc.w    0        ;gng_TopEdge
  4908.         dc.w    300        ;gng_Width
  4909.         dc.w    12        ;gng_Height
  4910.         dc.l    0        ;gng_GadgetText
  4911.         dc.l    Topaz        ;gng_TextAttr
  4912.         dc.w    2        ;gng_GadgetID
  4913.         dc.l    0        ;gng_Flags
  4914.         dc.l    0        ;gng_VisualInfo
  4915.         dc.l    0        ;gng_UserData
  4916.  
  4917. NGStrGad15:    dc.w    10        ;gng_LeftEdge
  4918.         dc.w    0        ;gng_TopEdge
  4919.         dc.w    100        ;gng_Width
  4920.         dc.w    12        ;gng_Height
  4921.         dc.l    0        ;gng_GadgetText
  4922.         dc.l    Topaz        ;gng_TextAttr
  4923.         dc.w    1        ;gng_GadgetID
  4924.         dc.l    0        ;gng_Flags
  4925.         dc.l    0        ;gng_VisualInfo
  4926.         dc.l    0        ;gng_UserData
  4927.  
  4928. NGStrGad16:    dc.w    120        ;gng_LeftEdge
  4929.         dc.w    0        ;gng_TopEdge
  4930.         dc.w    300        ;gng_Width
  4931.         dc.w    12        ;gng_Height
  4932.         dc.l    0        ;gng_GadgetText
  4933.         dc.l    Topaz        ;gng_TextAttr
  4934.         dc.w    2        ;gng_GadgetID
  4935.         dc.l    0        ;gng_Flags
  4936.         dc.l    0        ;gng_VisualInfo
  4937.         dc.l    0        ;gng_UserData
  4938.  
  4939. NGStrGad17:    dc.w    10        ;gng_LeftEdge
  4940.         dc.w    0        ;gng_TopEdge
  4941.         dc.w    100        ;gng_Width
  4942.         dc.w    12        ;gng_Height
  4943.         dc.l    0        ;gng_GadgetText
  4944.         dc.l    Topaz        ;gng_TextAttr
  4945.         dc.w    1        ;gng_GadgetID
  4946.         dc.l    0        ;gng_Flags
  4947.         dc.l    0        ;gng_VisualInfo
  4948.         dc.l    0        ;gng_UserData
  4949.  
  4950. NGStrGad18:    dc.w    120        ;gng_LeftEdge
  4951.         dc.w    0        ;gng_TopEdge
  4952.         dc.w    300        ;gng_Width
  4953.         dc.w    12        ;gng_Height
  4954.         dc.l    0        ;gng_GadgetText
  4955.         dc.l    Topaz        ;gng_TextAttr
  4956.         dc.w    2        ;gng_GadgetID
  4957.         dc.l    0        ;gng_Flags
  4958.         dc.l    0        ;gng_VisualInfo
  4959.         dc.l    0        ;gng_UserData
  4960.  
  4961. NGStrGad19:    dc.w    10        ;gng_LeftEdge
  4962.         dc.w    0        ;gng_TopEdge
  4963.         dc.w    100        ;gng_Width
  4964.         dc.w    12        ;gng_Height
  4965.         dc.l    0        ;gng_GadgetText
  4966.         dc.l    Topaz        ;gng_TextAttr
  4967.         dc.w    1        ;gng_GadgetID
  4968.         dc.l    0        ;gng_Flags
  4969.         dc.l    0        ;gng_VisualInfo
  4970.         dc.l    0        ;gng_UserData
  4971.  
  4972. NGStrGad20:    dc.w    120        ;gng_LeftEdge
  4973.         dc.w    0        ;gng_TopEdge
  4974.         dc.w    300        ;gng_Width
  4975.         dc.w    12        ;gng_Height
  4976.         dc.l    0        ;gng_GadgetText
  4977.         dc.l    Topaz        ;gng_TextAttr
  4978.         dc.w    2        ;gng_GadgetID
  4979.         dc.l    0        ;gng_Flags
  4980.         dc.l    0        ;gng_VisualInfo
  4981.         dc.l    0        ;gng_UserData
  4982.  
  4983. NGGetGad1:    dc.w    185        ;gng_LeftEdge
  4984.         dc.w    0        ;gng_TopEdge
  4985.         dc.w    60        ;gng_Width
  4986.         dc.w    12        ;gng_Height
  4987.         dc.l    GetGadText1    ;gng_GadgetText
  4988.         dc.l    Topaz        ;gng_TextAttr
  4989.         dc.w    55        ;gng_GadgetID
  4990.         dc.l    PLACETEXT_IN    ;gng_Flags
  4991.         dc.l    0        ;gng_VisualInfo
  4992.         dc.l    0        ;gng_UserData
  4993.  
  4994. DescGadTagList: dc.l    GTTX_Border,1
  4995.         dc.l    TAG_DONE,0
  4996.  
  4997. StrGadTagList1: dc.l    GTST_MaxChars,GADLENG1-1
  4998.         dc.l    TAG_DONE,0
  4999. StrGadTagList2: dc.l    GTST_MaxChars,GADLENG2-1
  5000.         dc.l    TAG_DONE,0
  5001. StrGadTagList3: dc.l    GTIN_Number,120
  5002.         dc.l    TAG_DONE,0
  5003.  
  5004. NGStrGad21:    dc.w    60        ;gng_LeftEdge
  5005.         dc.w    0        ;gng_TopEdge
  5006.         dc.w    80        ;gng_Width
  5007.         dc.w    12        ;gng_Height
  5008.         dc.l    PriGadText1    ;gng_GadgetText
  5009.         dc.l    Topaz        ;gng_TextAttr
  5010.         dc.w    0        ;gng_GadgetID
  5011.         dc.l    PLACETEXT_BELOW ;gng_Flags
  5012.         dc.l    0        ;gng_VisualInfo
  5013.         dc.l    0        ;gng_UserData
  5014.  
  5015.  
  5016. ;Menus
  5017.  
  5018. Menu1Name:    dc.b    "Project",0
  5019. Menu2Name:    dc.b    "Commands",0
  5020. Menu3Name:    dc.b    "Setup",0
  5021.  
  5022. LoadMenuText1:    dc.b    "Load",0
  5023. LoadCommKey:    dc.b    "L",0
  5024. SaveMenuText1:    dc.b    "Save",0
  5025. SaveCommKey:    dc.b    "S",0
  5026. AboutMenuText1: dc.b    "About...",0
  5027. AboutCommKey:    dc.b    "?",0
  5028. QuitMenuText1:    dc.b    "Quit",0
  5029. QuitCommKey:    dc.b    "Q",0
  5030. EditMenuText1:    dc.b    "Edit/Learn",0
  5031. EditCommKey:    dc.b    "E",0
  5032.  
  5033. TypeMenuText1:    dc.b    "Sampler",0
  5034. PerfSMenuText1: dc.b    "PerfectSound",0
  5035. Type1CommKey:    dc.b    "1",0
  5036. SoundMMenuText1: dc.b    "SoundMaster",0
  5037. Type2CommKey:    dc.b    "2",0
  5038. DSSMenuText1:    dc.b    "GVP DSS 8",0
  5039. Type3CommKey:    dc.b    "3",0
  5040. GenericMenuText1: dc.b    "Generic",0
  5041. Type4CommKey:    dc.b    "4",0
  5042.  
  5043. ResMenuText1:    dc.b    "Resolution",0
  5044. ResLoMenuText1: dc.b    "Low",0
  5045. Res1CommKey:    dc.b    "-",0
  5046. ResHiMenuText1: dc.b    "High",0
  5047. Res2CommKey:    dc.b    "+",0
  5048.  
  5049. AccMenuText1:    dc.b    "Accuracy",0
  5050. AccLo1MenuText1: dc.b    "Lowest",0
  5051. Acc1CommKey:    dc.b    "T",0
  5052. AccLo2MenuText1: dc.b    "Lower",0
  5053. Acc2CommKey:    dc.b    "W",0
  5054. AccLo3MenuText1: dc.b    "Low",0
  5055. Acc3CommKey:    dc.b    "O",0
  5056. AccNoMenuText1: dc.b    "Normal",0
  5057. Acc4CommKey:    dc.b    "N",0
  5058. AccHi1MenuText1: dc.b    "High",0
  5059. Acc5CommKey:    dc.b    "H",0
  5060. AccHi2MenuText1: dc.b    "Higher",0
  5061. Acc6CommKey:    dc.b    "I",0
  5062. AccHi3MenuText1: dc.b    "Even higher",0
  5063. Acc7CommKey:    dc.b    "G",0
  5064. AccHi4MenuText1: dc.b    "Maximum",0
  5065. Acc8CommKey:    dc.b    "M",0
  5066.  
  5067. ChanMenuText1:    dc.b    "Channel",0
  5068. Chan1MenuText1: dc.b    "Left",0
  5069. Chan1CommKey:    dc.b    ",",0
  5070. Chan2MenuText1: dc.b    "Right",0
  5071. Chan2CommKey:    dc.b    ".",0
  5072.  
  5073. InputMenuText1:    dc.b    "Input level",0
  5074. Input1MenuText1: dc.b    "Microphone",0
  5075. Input1CommKey:    dc.b    "/",0
  5076. Input2MenuText1: dc.b    "Line",0
  5077. Input2CommKey:    dc.b    "*",0
  5078.  
  5079. TimerMenuText1: dc.b    "CIA Timer",0
  5080. TimerAMenuText1: dc.b    "Timer A",0
  5081. TimerACommKey:    dc.b    "A",0
  5082. TimerBMenuText1: dc.b    "Timer B",0
  5083. TimerBCommKey:    dc.b    "B",0
  5084.  
  5085. PriMenuText1:    dc.b    "Priority...",0
  5086. PriCommKey:    dc.b    "P",0
  5087.  
  5088. Menu1Name2:    dc.b    "Page",0
  5089. EditMenu1Text1: dc.b    "Commands  1-10",0
  5090. Edit1CommKey:    dc.b    "1",0
  5091. EditMenu2Text1: dc.b    "Commands 11-20",0
  5092. Edit2CommKey:    dc.b    "2",0
  5093. EditMenu3Text1: dc.b    "Commands 21-30",0
  5094. Edit3CommKey:    dc.b    "3",0
  5095. EditMenu4Text1: dc.b    "Commands 31-40",0
  5096. Edit4CommKey:    dc.b    "4",0
  5097. EditMenu5Text1: dc.b    "Commands 41-50",0
  5098. Edit5CommKey:    dc.b    "5",0
  5099. EditMenu6Text1: dc.b    "Commands 51-60",0
  5100. Edit6CommKey:    dc.b    "6",0
  5101.         ds.l    0
  5102.  
  5103. MNProjectMenu1: dc.b    NM_TITLE        ;gnm_Type
  5104.         dc.b    0            ;gnm_Pad
  5105.         dc.l    Menu1Name        ;gnm_Label
  5106.         dc.l    0            ;gnm_CommKey
  5107.         dc.w    0            ;gnm_Flags
  5108.         dc.l    0            ;gnm_MutualExclude
  5109.         dc.l    0            ;gnm_UserData
  5110.  
  5111. MNLoad1:    dc.b    NM_ITEM            ;gnm_Type
  5112.         dc.b    0            ;gnm_Pad
  5113.         dc.l    LoadMenuText1        ;gnm_Label
  5114.         dc.l    LoadCommKey        ;gnm_CommKey
  5115.         dc.w    0            ;gnm_Flags
  5116.         dc.l    0            ;gnm_MutualExclude
  5117.         dc.l    0            ;gnm_UserData
  5118.  
  5119. MNSave1:    dc.b    NM_ITEM            ;gnm_Type
  5120.         dc.b    0            ;gnm_Pad
  5121.         dc.l    SaveMenuText1        ;gnm_Label
  5122.         dc.l    SaveCommKey        ;gnm_CommKey
  5123.         dc.w    0            ;gnm_Flags
  5124.         dc.l    0            ;gnm_MutualExclude
  5125.         dc.l    0            ;gnm_UserData
  5126.  
  5127. MNAbout1:    dc.b    NM_ITEM            ;gnm_Type
  5128.         dc.b    0            ;gnm_Pad
  5129.         dc.l    AboutMenuText1        ;gnm_Label
  5130.         dc.l    AboutCommKey        ;gnm_CommKey
  5131.         dc.w    0            ;gnm_Flags
  5132.         dc.l    0            ;gnm_MutualExclude
  5133.         dc.l    0            ;gnm_UserData
  5134.  
  5135. MNP1SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  5136.         dc.b    0            ;gnm_Pad
  5137.         dc.l    NM_BARLABEL        ;gnm_Label
  5138.         dc.l    0            ;gnm_CommKey
  5139.         dc.w    0            ;gnm_Flags
  5140.         dc.l    0            ;gnm_MutualExclude
  5141.         dc.l    0            ;gnm_UserData
  5142.  
  5143. MNQuit1:    dc.b    NM_ITEM            ;gnm_Type
  5144.         dc.b    0            ;gnm_Pad
  5145.         dc.l    QuitMenuText1        ;gnm_Label
  5146.         dc.l    QuitCommKey        ;gnm_CommKey
  5147.         dc.w    0            ;gnm_Flags
  5148.         dc.l    0            ;gnm_MutualExclude
  5149.         dc.l    0            ;gnm_UserData
  5150.  
  5151. MNCmdMenu1:    dc.b    NM_TITLE        ;gnm_Type
  5152.         dc.b    0            ;gnm_Pad
  5153.         dc.l    Menu2Name        ;gnm_Label
  5154.         dc.l    0            ;gnm_CommKey
  5155.         dc.w    0            ;gnm_Flags
  5156.         dc.l    0            ;gnm_MutualExclude
  5157.         dc.l    0            ;gnm_UserData
  5158.  
  5159. MNEdit1:    dc.b    NM_ITEM            ;gnm_Type
  5160.         dc.b    0            ;gnm_Pad
  5161.         dc.l    EditMenuText1        ;gnm_Label
  5162.         dc.l    EditCommKey        ;gnm_CommKey
  5163.         dc.w    0            ;gnm_Flags
  5164.         dc.l    0            ;gnm_MutualExclude
  5165.         dc.l    0            ;gnm_UserData
  5166.  
  5167. MNSetUpMenu1:    dc.b    NM_TITLE        ;gnm_Type
  5168.         dc.b    0            ;gnm_Pad
  5169.         dc.l    Menu3Name        ;gnm_Label
  5170.         dc.l    0            ;gnm_CommKey
  5171.         dc.w    0            ;gnm_Flags
  5172.         dc.l    0            ;gnm_MutualExclude
  5173.         dc.l    0            ;gnm_UserData
  5174.  
  5175. MNType1:    dc.b    NM_ITEM            ;gnm_Type
  5176.         dc.b    0            ;gnm_Pad
  5177.         dc.l    TypeMenuText1        ;gnm_Label
  5178.         dc.l    0            ;gnm_CommKey
  5179.         dc.w    0            ;gnm_Flags
  5180.         dc.l    0            ;gnm_MutualExclude
  5181.         dc.l    0            ;gnm_UserData
  5182.  
  5183. MNTypeSub1:    dc.b    NM_SUB            ;gnm_Type
  5184.         dc.b    0            ;gnm_Pad
  5185.         dc.l    PerfSMenuText1        ;gnm_Label
  5186.         dc.l    Type1CommKey        ;gnm_CommKey
  5187.         dc.w    CHECKIT            ;gnm_Flags
  5188.         dc.l    ~1            ;gnm_MutualExclude
  5189.         dc.l    0            ;gnm_UserData
  5190.  
  5191. MNTypeSub2:    dc.b    NM_SUB            ;gnm_Type
  5192.         dc.b    0            ;gnm_Pad
  5193.         dc.l    SoundMMenuText1        ;gnm_Label
  5194.         dc.l    Type2CommKey        ;gnm_CommKey
  5195.         dc.w    CHECKIT            ;gnm_Flags
  5196.         dc.l    ~2            ;gnm_MutualExclude
  5197.         dc.l    0            ;gnm_UserData
  5198.  
  5199. MNTypeSub3:    dc.b    NM_SUB            ;gnm_Type
  5200.         dc.b    0            ;gnm_Pad
  5201.         dc.l    DSSMenuText1        ;gnm_Label
  5202.         dc.l    Type3CommKey        ;gnm_CommKey
  5203.         dc.w    CHECKIT            ;gnm_Flags
  5204.         dc.l    ~4            ;gnm_MutualExclude
  5205.         dc.l    0            ;gnm_UserData
  5206.  
  5207. MNTypeSub4:    dc.b    NM_SUB            ;gnm_Type
  5208.         dc.b    0            ;gnm_Pad
  5209.         dc.l    GenericMenuText1    ;gnm_Label
  5210.         dc.l    Type4CommKey        ;gnm_CommKey
  5211.         dc.w    CHECKIT            ;gnm_Flags
  5212.         dc.l    ~8            ;gnm_MutualExclude
  5213.         dc.l    0            ;gnm_UserData
  5214.  
  5215. MNRes1:        dc.b    NM_ITEM            ;gnm_Type
  5216.         dc.b    0            ;gnm_Pad
  5217.         dc.l    ResMenuText1        ;gnm_Label
  5218.         dc.l    0            ;gnm_CommKey
  5219.         dc.w    0            ;gnm_Flags
  5220.         dc.l    0            ;gnm_MutualExclude
  5221.         dc.l    0            ;gnm_UserData
  5222.  
  5223. MNResSub1:    dc.b    NM_SUB            ;gnm_Type
  5224.         dc.b    0            ;gnm_Pad
  5225.         dc.l    ResLoMenuText1        ;gnm_Label
  5226.         dc.l    Res1CommKey        ;gnm_CommKey
  5227.         dc.w    CHECKIT            ;gnm_Flags
  5228.         dc.l    ~1            ;gnm_MutualExclude
  5229.         dc.l    0            ;gnm_UserData
  5230.  
  5231. MNResSub2:    dc.b    NM_SUB            ;gnm_Type
  5232.         dc.b    0            ;gnm_Pad
  5233.         dc.l    ResHiMenuText1        ;gnm_Label
  5234.         dc.l    Res2CommKey        ;gnm_CommKey
  5235.         dc.w    CHECKIT            ;gnm_Flags
  5236.         dc.l    ~2            ;gnm_MutualExclude
  5237.         dc.l    0            ;gnm_UserData
  5238.  
  5239. MNAccuracy1:    dc.b    NM_ITEM            ;gnm_Type
  5240.         dc.b    0            ;gnm_Pad
  5241.         dc.l    AccMenuText1        ;gnm_Label
  5242.         dc.l    0            ;gnm_CommKey
  5243.         dc.w    0            ;gnm_Flags
  5244.         dc.l    0            ;gnm_MutualExclude
  5245.         dc.l    0            ;gnm_UserData
  5246.  
  5247. MNAccurarySub1:    dc.b    NM_SUB            ;gnm_Type
  5248.         dc.b    0            ;gnm_Pad
  5249.         dc.l    AccLo1MenuText1        ;gnm_Label
  5250.         dc.l    Acc1CommKey        ;gnm_CommKey
  5251.         dc.w    CHECKIT            ;gnm_Flags
  5252.         dc.l    ~1            ;gnm_MutualExclude
  5253.         dc.l    0            ;gnm_UserData
  5254.  
  5255. MNAccurarySub2:    dc.b    NM_SUB            ;gnm_Type
  5256.         dc.b    0            ;gnm_Pad
  5257.         dc.l    AccLo2MenuText1        ;gnm_Label
  5258.         dc.l    Acc2CommKey        ;gnm_CommKey
  5259.         dc.w    CHECKIT            ;gnm_Flags
  5260.         dc.l    ~2            ;gnm_MutualExclude
  5261.         dc.l    0            ;gnm_UserData
  5262.  
  5263. MNAccurarySub3:    dc.b    NM_SUB            ;gnm_Type
  5264.         dc.b    0            ;gnm_Pad
  5265.         dc.l    AccLo3MenuText1        ;gnm_Label
  5266.         dc.l    Acc3CommKey        ;gnm_CommKey
  5267.         dc.w    CHECKIT            ;gnm_Flags
  5268.         dc.l    ~4            ;gnm_MutualExclude
  5269.         dc.l    0            ;gnm_UserData
  5270.  
  5271. MNAccurarySub4:    dc.b    NM_SUB            ;gnm_Type
  5272.         dc.b    0            ;gnm_Pad
  5273.         dc.l    AccNoMenuText1        ;gnm_Label
  5274.         dc.l    Acc4CommKey        ;gnm_CommKey
  5275.         dc.w    CHECKIT            ;gnm_Flags
  5276.         dc.l    ~8            ;gnm_MutualExclude
  5277.         dc.l    0            ;gnm_UserData
  5278.  
  5279. MNAccuracySub5:    dc.b    NM_SUB            ;gnm_Type
  5280.         dc.b    0            ;gnm_Pad
  5281.         dc.l    AccHi1MenuText1        ;gnm_Label
  5282.         dc.l    Acc5CommKey        ;gnm_CommKey
  5283.         dc.w    CHECKIT            ;gnm_Flags
  5284.         dc.l    ~16            ;gnm_MutualExclude
  5285.         dc.l    0            ;gnm_UserData
  5286.  
  5287. MNAccuracySub6:    dc.b    NM_SUB            ;gnm_Type
  5288.         dc.b    0            ;gnm_Pad
  5289.         dc.l    AccHi2MenuText1        ;gnm_Label
  5290.         dc.l    Acc6CommKey        ;gnm_CommKey
  5291.         dc.w    CHECKIT            ;gnm_Flags
  5292.         dc.l    ~32            ;gnm_MutualExclude
  5293.         dc.l    0            ;gnm_UserData
  5294.  
  5295. MNAccuracySub7:    dc.b    NM_SUB            ;gnm_Type
  5296.         dc.b    0            ;gnm_Pad
  5297.         dc.l    AccHi3MenuText1        ;gnm_Label
  5298.         dc.l    Acc7CommKey        ;gnm_CommKey
  5299.         dc.w    CHECKIT            ;gnm_Flags
  5300.         dc.l    ~64            ;gnm_MutualExclude
  5301.         dc.l    0            ;gnm_UserData
  5302.  
  5303. MNAccuracySub8:    dc.b    NM_SUB            ;gnm_Type
  5304.         dc.b    0            ;gnm_Pad
  5305.         dc.l    AccHi4MenuText1        ;gnm_Label
  5306.         dc.l    Acc8CommKey        ;gnm_CommKey
  5307.         dc.w    CHECKIT            ;gnm_Flags
  5308.         dc.l    ~128            ;gnm_MutualExclude
  5309.         dc.l    0            ;gnm_UserData
  5310.  
  5311. MNChannel1:    dc.b    NM_ITEM            ;gnm_Type
  5312.         dc.b    0            ;gnm_Pad
  5313.         dc.l    ChanMenuText1        ;gnm_Label
  5314.         dc.l    0            ;gnm_CommKey
  5315.         dc.w    0            ;gnm_Flags
  5316.         dc.l    0            ;gnm_MutualExclude
  5317.         dc.l    0            ;gnm_UserData
  5318.  
  5319. MNChanSub1:    dc.b    NM_SUB            ;gnm_Type
  5320.         dc.b    0            ;gnm_Pad
  5321.         dc.l    Chan1MenuText1        ;gnm_Label
  5322.         dc.l    Chan1CommKey        ;gnm_CommKey
  5323.         dc.w    CHECKIT            ;gnm_Flags
  5324.         dc.l    ~1            ;gnm_MutualExclude
  5325.         dc.l    0            ;gnm_UserData
  5326.  
  5327. MNChanSub2:    dc.b    NM_SUB            ;gnm_Type
  5328.         dc.b    0            ;gnm_Pad
  5329.         dc.l    Chan2MenuText1        ;gnm_Label
  5330.         dc.l    Chan2CommKey        ;gnm_CommKey
  5331.         dc.w    CHECKIT            ;gnm_Flags
  5332.         dc.l    ~2            ;gnm_MutualExclude
  5333.         dc.l    0            ;gnm_UserData
  5334.  
  5335. MNInput1:    dc.b    NM_ITEM            ;gnm_Type
  5336.         dc.b    0            ;gnm_Pad
  5337.         dc.l    InputMenuText1        ;gnm_Label
  5338.         dc.l    0            ;gnm_CommKey
  5339.         dc.w    0            ;gnm_Flags
  5340.         dc.l    0            ;gnm_MutualExclude
  5341.         dc.l    0            ;gnm_UserData
  5342.  
  5343. MNInputSub1:    dc.b    NM_SUB            ;gnm_Type
  5344.         dc.b    0            ;gnm_Pad
  5345.         dc.l    Input1MenuText1        ;gnm_Label
  5346.         dc.l    Input1CommKey        ;gnm_CommKey
  5347.         dc.w    CHECKIT            ;gnm_Flags
  5348.         dc.l    ~1            ;gnm_MutualExclude
  5349.         dc.l    0            ;gnm_UserData
  5350.  
  5351. MNInputSub2:    dc.b    NM_SUB            ;gnm_Type
  5352.         dc.b    0            ;gnm_Pad
  5353.         dc.l    Input2MenuText1        ;gnm_Label
  5354.         dc.l    Input2CommKey        ;gnm_CommKey
  5355.         dc.w    CHECKIT            ;gnm_Flags
  5356.         dc.l    ~2            ;gnm_MutualExclude
  5357.         dc.l    0            ;gnm_UserData
  5358.  
  5359. MNTimer1:    dc.b    NM_ITEM            ;gnm_Type
  5360.         dc.b    0            ;gnm_Pad
  5361.         dc.l    TimerMenuText1        ;gnm_Label
  5362.         dc.l    0            ;gnm_CommKey
  5363.         dc.w    0            ;gnm_Flags
  5364.         dc.l    0            ;gnm_MutualExclude
  5365.         dc.l    0            ;gnm_UserData
  5366.  
  5367. MNTimerSub1:    dc.b    NM_SUB            ;gnm_Type
  5368.         dc.b    0            ;gnm_Pad
  5369.         dc.l    TimerAMenuText1        ;gnm_Label
  5370.         dc.l    TimerACommKey        ;gnm_CommKey
  5371.         dc.w    CHECKIT            ;gnm_Flags
  5372.         dc.l    ~1            ;gnm_MutualExclude
  5373.         dc.l    0            ;gnm_UserData
  5374.  
  5375. MNTimerSub2:    dc.b    NM_SUB            ;gnm_Type
  5376.         dc.b    0            ;gnm_Pad
  5377.         dc.l    TimerBMenuText1        ;gnm_Label
  5378.         dc.l    TimerBCommKey        ;gnm_CommKey
  5379.         dc.w    CHECKIT            ;gnm_Flags
  5380.         dc.l    ~2            ;gnm_MutualExclude
  5381.         dc.l    0            ;gnm_UserData
  5382.  
  5383. MNPriority:    dc.b    NM_ITEM            ;gnm_Type
  5384.         dc.b    0            ;gnm_Pad
  5385.         dc.l    PriMenuText1        ;gnm_Label
  5386.         dc.l    PriCommKey        ;gnm_CommKey
  5387.         dc.w    0 ;NM_ITEMDISABLED        ;gnm_Flags
  5388.         dc.l    0            ;gnm_MutualExclude
  5389.         dc.l    0            ;gnm_UserData
  5390.  
  5391.         dc.w    0            ;NM_END?
  5392.  
  5393. ;Menu TagList(s)
  5394.  
  5395. MenuTagList:    dc.l    GTMN_Menu,MNProjectMenu1
  5396.         dc.l    TAG_DONE,0
  5397.  
  5398. MNPageMenu1:    dc.b    NM_TITLE        ;gnm_Type
  5399.         dc.b    0            ;gnm_Pad
  5400.         dc.l    Menu1Name2        ;gnm_Label
  5401.         dc.l    0            ;gnm_CommKey
  5402.         dc.w    0            ;gnm_Flags
  5403.         dc.l    0            ;gnm_MutualExclude
  5404.         dc.l    0            ;gnm_UserData
  5405.  
  5406. MNPage1:    dc.b    NM_ITEM            ;gnm_Type
  5407.         dc.b    0            ;gnm_Pad
  5408.         dc.l    EditMenu1Text1        ;gnm_Label
  5409.         dc.l    Edit1CommKey        ;gnm_CommKey
  5410.         dc.w    CHECKIT!CHECKED        ;gnm_Flags
  5411.         dc.l    ~1            ;gnm_MutualExclude
  5412.         dc.l    0            ;gnm_UserData
  5413.  
  5414. MNPage2:    dc.b    NM_ITEM            ;gnm_Type
  5415.         dc.b    0            ;gnm_Pad
  5416.         dc.l    EditMenu2Text1        ;gnm_Label
  5417.         dc.l    Edit2CommKey        ;gnm_CommKey
  5418.         dc.w    CHECKIT            ;gnm_Flags
  5419.         dc.l    ~2            ;gnm_MutualExclude
  5420.         dc.l    0            ;gnm_UserData
  5421.  
  5422. MNPage3:    dc.b    NM_ITEM            ;gnm_Type
  5423.         dc.b    0            ;gnm_Pad
  5424.         dc.l    EditMenu3Text1        ;gnm_Label
  5425.         dc.l    Edit3CommKey        ;gnm_CommKey
  5426.         dc.w    CHECKIT            ;gnm_Flags
  5427.         dc.l    ~4            ;gnm_MutualExclude
  5428.         dc.l    0            ;gnm_UserData
  5429.  
  5430. MNPage4:    dc.b    NM_ITEM            ;gnm_Type
  5431.         dc.b    0            ;gnm_Pad
  5432.         dc.l    EditMenu4Text1        ;gnm_Label
  5433.         dc.l    Edit4CommKey        ;gnm_CommKey
  5434.         dc.w    CHECKIT            ;gnm_Flags
  5435.         dc.l    ~8            ;gnm_MutualExclude
  5436.         dc.l    0            ;gnm_UserData
  5437.  
  5438. MNPage5:    dc.b    NM_ITEM            ;gnm_Type
  5439.         dc.b    0            ;gnm_Pad
  5440.         dc.l    EditMenu5Text1        ;gnm_Label
  5441.         dc.l    Edit5CommKey        ;gnm_CommKey
  5442.         dc.w    CHECKIT            ;gnm_Flags
  5443.         dc.l    ~16            ;gnm_MutualExclude
  5444.         dc.l    0            ;gnm_UserData
  5445.  
  5446. MNPage6:    dc.b    NM_ITEM            ;gnm_Type
  5447.         dc.b    0            ;gnm_Pad
  5448.         dc.l    EditMenu6Text1        ;gnm_Label
  5449.         dc.l    Edit6CommKey        ;gnm_CommKey
  5450.         dc.w    CHECKIT            ;gnm_Flags
  5451.         dc.l    ~32            ;gnm_MutualExclude
  5452.         dc.l    0            ;gnm_UserData
  5453.  
  5454. MNP2SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  5455.         dc.b    0            ;gnm_Pad
  5456.         dc.l    NM_BARLABEL        ;gnm_Label
  5457.         dc.l    0            ;gnm_CommKey
  5458.         dc.w    0            ;gnm_Flags
  5459.         dc.l    0            ;gnm_MutualExclude
  5460.         dc.l    0            ;gnm_UserData
  5461.  
  5462. MNQuit2:    dc.b    NM_ITEM            ;gnm_Type
  5463.         dc.b    0            ;gnm_Pad
  5464.         dc.l    QuitMenuText1        ;gnm_Label
  5465.         dc.l    QuitCommKey        ;gnm_CommKey
  5466.         dc.w    0            ;gnm_Flags
  5467.         dc.l    0            ;gnm_MutualExclude
  5468.         dc.l    0            ;gnm_UserData
  5469.  
  5470.         dc.w    0            ;NM_END?
  5471.  
  5472. ;Menu TagList(s) for Edit window
  5473.  
  5474. MenuTagList2:    dc.l    GTMN_Menu,MNPageMenu1
  5475.         dc.l    TAG_DONE,0
  5476.  
  5477. ;Commodities stuff (Brokers etc..)
  5478.  
  5479. NewBroker1:    dc.b NB_VERSION,0        ;Version, Reserved 1
  5480.         dc.l VSName1,VSTitle,VSDesc    ;Name, Title, Description
  5481.         dc.w NBU_UNIQUE!NBU_NOTIFY,COF_SHOW_HIDE    ;Uniq, Flags
  5482. NBPri:        dc.b 0,0            ;Priority, Reserved 2
  5483.         dc.l 0                ;Port
  5484.         dc.w 0                ;Reserved channel
  5485.  
  5486. PREFS_START:
  5487.  
  5488. Prefs:        dc.l    VSFileVersion
  5489. PrefsOnOff:    dc.b    0        ;0=Off, 1=On
  5490. PrefsSampType:    dc.b    SAMP_GENERIC    ;0=Perf.Snd, 1=SndMstr, 2=Generic, 3=DSS8
  5491. PrefsSampRes:    dc.b    RES_HI        ;0=High, 1=Low
  5492. PrefsTimer    dc.b    TIMER_B        ;0=Timer B, 1=Timer A
  5493. PrefsGain:    dc.b    0        ;DSS gain
  5494. PrefsChannel:    dc.b    CHANNEL_LEFT    ;0=right, 1=left
  5495. PrefsInput:    dc.b    INPUT_LINE    ;0=mic, 1=line
  5496. Pad1:        dc.b    0
  5497. PrefsPriority:    dc.l    120        ;Priority
  5498. PrefsScore:    dc.w    AccVal4        ;Score needed
  5499. Future1:    dc.l    0
  5500. Future2:    dc.l    0
  5501. Future3:    dc.l    0
  5502. Future4:    dc.l    0
  5503.  
  5504. Alt1XY:
  5505. Alt1XPos:    dc.w    200
  5506. Alt1YPos:    dc.w    31
  5507.  
  5508. DatBuffer:    dc.b    "S:VoiceShell.DAT"
  5509.         dcb.b    34-12,0
  5510.  
  5511. PREFS_END:    dc.l    0,0
  5512.  
  5513. PrefsSize:    EQU    (PREFS_END-PREFS_START)
  5514.  
  5515.         Section VS,BSS
  5516.  
  5517. DATA_START:
  5518.  
  5519. MapBuffer:    ds.b    (VocabSIZE*304)        ;64 words
  5520.  
  5521. CmdList:    ds.b    (VocabSIZE*GADLENGTH)
  5522.  
  5523. DATA_END:    ds.l    1
  5524.  
  5525. DataSize:    EQU    (DATA_END-DATA_START)
  5526.  
  5527. StringBuffer:    ds.b    256
  5528.  
  5529.         Section VS,DATA,CHIP
  5530.  
  5531.         ds.w    0
  5532.  
  5533. ClockPointer1:    dc.w    $0000,$0000
  5534.         dc.w    $0400,$07C0,$0000,$07C0,$0100,$0380,$0000,$07E0
  5535.         dc.w    $07C0,$1FF8,$1FF0,$3FEC,$3FF8,$7FDE,$3FF8,$7FBE
  5536.         dc.w    $7FFC,$FF7F,$7EFC,$FFFF,$7FFC,$FFFF,$3FF8,$7FFE
  5537.         dc.w    $3FF8,$7FFE,$1FF0,$3FFC,$07C0,$1FF8,$0000,$07E0
  5538.         dc.w    $0000,$0000
  5539.  
  5540.         end
  5541.