home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / util / voiceshell-1.21.lha / VoiceShell / Source / VS.S next >
Encoding:
Text File  |  1994-03-13  |  137.5 KB  |  6,950 lines

  1. *************************************************
  2. *                        *
  3. *         (C)opyright 1992-94        *
  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. * BUGS: Crashed on some machines if no prefs    *
  120. *    file available.                *
  121. *                        *
  122. * Version 1.19    24/01/1994            *
  123. *                        *
  124. * Added: Error commands.            *
  125. *                        *
  126. * Version 1.20    08/03/1994            *
  127. *                        *
  128. * Added: Confirmation and wake up command    *
  129. *                        *
  130. * Version 1.21    13/03/1994            *
  131. *                        *
  132. * Fixed bug with tooltypes            *
  133. *                        *
  134. * STILL TO CHECK:                *
  135. *                        *
  136. * -                        *
  137. * -                         *
  138. *                        *
  139. *************************************************
  140.  
  141. ;    INCDIR    "INCLUDES:"
  142.     INCLUDE "JMPLibs.i"
  143.     INCLUDE "exec/memory.i"
  144.     INCLUDE "exec/io.i"
  145.     INCLUDE "exec/tasks.i"
  146.     INCLUDE "libraries/dosextens.i"
  147.     INCLUDE "libraries/dos.i"
  148.     INCLUDE "libraries/commodities.i"
  149.     INCLUDE "libraries/gadtools.i"
  150.     INCLUDE    "libraries/voice.i"
  151.     INCLUDE    "libraries/asl.i"
  152.     INCLUDE "workbench/startup.i"
  153.     INCLUDE "intuition/gadgetclass.i"
  154.     INCLUDE "dos/dostags.i"
  155.     INCLUDE    "rexx/errors.i"
  156.     INCLUDE    "rexx/storage.i"
  157.     INCLUDE    "devices/timer.i"
  158.  
  159.     INCLUDE "XREF:2.0.xref"
  160.     INCLUDE "XREF:intuition.xref"
  161.     INCLUDE "XREF:exec.xref"
  162.     INCLUDE "XREF:dos.xref"
  163.     INCLUDE "XREF:icon.xref"
  164.  
  165.     XREF    _InvertString
  166.     XREF    _FreeIEvents
  167.     XREF    _HotKey
  168.  
  169.     XDEF    _DOSBase
  170.     XDEF    _SysBase
  171.     XDEF    _CxBase
  172.  
  173. DVoice        SET    1
  174. ;VS_REGISTERED    SET    1    ;Set only for registered versions!
  175.  
  176. PROGVERSION:    macro
  177.         dc.b    "1.21 (13.03.94)"
  178.         endm
  179.  
  180.  
  181. VSFileVersion:    EQU    'VS04'
  182.  
  183. ShellTop:    EQU    2
  184. OptionTop:    EQU    46
  185. VocabSIZE:    EQU    60
  186. NUMGADS:    EQU    10
  187. GADLENG1:    EQU    16
  188. GADLENG2:    EQU    256
  189. GADLENGTH:    EQU    (GADLENG1+GADLENG2)
  190.  
  191. AccVal1:    EQU    2000
  192. AccVal2:    EQU    2400
  193. AccVal3:    EQU    2700
  194. AccVal4:    EQU    3000        ;VoiceShell default
  195. AccVal5:    EQU    3500
  196. AccVal6:    EQU    4000
  197. AccVal7:    EQU    5500
  198. AccVal8:    EQU    6000
  199.  
  200. Samp1MenuN:    EQU    $0002        ;0002
  201. Samp2MenuN:    EQU    $0802        ;0802
  202. Samp3MenuN:    EQU    $1002        ;1002
  203. Samp4MenuN:    EQU    $1802        ;1802
  204. ResLoMenuN:    EQU    $0022        ;0022
  205. ResHiMenuN:    EQU    $0822        ;0822
  206.  
  207. Acc1MenuN:    EQU    $0042        ;0042
  208. Acc2MenuN:    EQU    $0842        ;0842
  209. Acc3MenuN:    EQU    $1042        ;1042
  210. Acc4MenuN:    EQU    $1842        ;1842
  211. Acc5MenuN:    EQU    $2042        ;2042
  212. Acc6MenuN:    EQU    $2842        ;2842
  213. Acc7MenuN:    EQU    $3042        ;3042
  214. Acc8MenuN:    EQU    $3842        ;3842
  215.  
  216. Chan1MenuN:    EQU    $0062        ;0062
  217. Chan2MenuN:    EQU    $0862        ;0862
  218.  
  219. Input1MenuN:    EQU    $0082        ;0082
  220. Input2MenuN:    EQU    $0882        ;0882
  221.  
  222. Timer1MenuN:    EQU    $00A2        ;00A2
  223. Timer2MenuN:    EQU    $08A2        ;08A2
  224.  
  225. Wake1MenuN:    EQU    $00C2        ;00C2
  226. Wake2MenuN:    EQU    $08C2        ;08C2
  227. Wake3MenuN:    EQU    $10C2        ;10C2
  228. Wake4MenuN:    EQU    $18C2        ;18C2
  229. Wake5MenuN:    EQU    $20C2        ;20C2
  230.  
  231. ConfirmMenuN:    EQU    $0102        ;00E2
  232.  
  233. TRUE:        EQU    1
  234. FALSE:        EQU    0
  235. do_ToolTypes:    EQU    $36
  236.  
  237.         section VS,CODE
  238.  
  239.         push    d2-d7/a2-a6
  240.  
  241.         sub.l    a1,a1            ;Find our task
  242.         lib    Exec,FindTask
  243.         move.l    d0,OurTask
  244.         move.l    d0,a4
  245.         move.l    pr_CLI(a4),d0
  246.         bne    OpenDos
  247.  
  248.         lea.l    pr_MsgPort(a4),a0
  249.         lib    Exec,WaitPort
  250.         lea.l    pr_MsgPort(a4),a0
  251.         lib    Exec,GetMsg
  252.         move.l    d0,WBMsg
  253.  
  254. OpenDos:    openlib Dos,NoDos        ;Keep at beginning
  255.  
  256.         tst.l    WBMsg
  257.         beq    CLIStart
  258.  
  259.         lea.l    NILName,a0
  260.         move.l    a0,d1
  261.         move.l    #MODE_OLDFILE,d2
  262.         lib    Dos,Open
  263.         move.l    d0,NILFile
  264.         beq    ShutDown
  265.         move.l    NILFile,_stdout
  266.  
  267.         openlib Icon,NoIcon
  268.  
  269.         move.l    WBMsg,a0
  270.         move.l    sm_ArgList(a0),a1
  271.         move.l    wa_Lock(a1),d1
  272.         lib    Dos,CurrentDir
  273.         move.l    d0,OldLock
  274.  
  275.         move.l    WBMsg,a0
  276.         move.l    sm_ArgList(a0),a1
  277.         move.l    wa_Name(a1),a0
  278.         lib    Icon,GetDiskObject
  279.         move.l    d0,DiskObject
  280.         beq    MainStart
  281.  
  282. DoToolType1:    move.l    DiskObject,a4
  283.         move.l    do_ToolTypes(a4),a0
  284.         lea.l    ICONIFYText1,a1
  285.         lib    Icon,FindToolType
  286.         tst.l    d0
  287.         beq    DoToolType2
  288.         move.l    d0,a0
  289.         lea.l    YESText1,a1
  290.         lib    Icon,MatchToolValue
  291.         tst.l    d0
  292.         beq    DoToolType2
  293.         move.l    #1,OptionIconify
  294.  
  295. DoToolType2:    move.l    DiskObject,a4
  296.         move.l    do_ToolTypes(a4),a0
  297.         lea.l    FROMText1,a1
  298.         lib    Icon,FindToolType
  299.         move.l    d0,FromFile
  300.  
  301.         move.l    DiskObject,a4
  302.         move.l    do_ToolTypes(a4),a0
  303.         lea.l    PUBSCREENText1,a1
  304.         lib    Icon,FindToolType
  305.         move.l    d0,OptPubScreen
  306.  
  307.         move.l    DiskObject,a4
  308.         move.l    do_ToolTypes(a4),a0
  309.         lea.l    CXPOPKEYText1,a1
  310.         lib    Icon,FindToolType
  311.         tst.l    d0
  312.         beq    DoToolType3
  313.         move.l    d0,OptCXPopKey
  314.  
  315. DoToolType3:    move.l    DiskObject,a4
  316.         move.l    do_ToolTypes(a4),a0
  317.         lea.l    CXPOPUPText1,a1
  318.         lib    Icon,FindToolType
  319.         tst.l    d0
  320.         beq    DoToolType4
  321.         move.l    d0,a0
  322.         lea.l    NOText1,a1
  323.         lib    Icon,MatchToolValue
  324.         tst.l    d0
  325.         beq    DoToolType4
  326.         clr.w    PopUp
  327.  
  328. DoToolType4:    move.l    DiskObject,a4
  329.         move.l    do_ToolTypes(a4),a0
  330.         lea.l    CXPRIText1,a1
  331.         lib    Icon,FindToolType
  332.         tst.l    d0
  333.         beq    DoToolType5
  334.         move.l    d0,a0
  335.         bsr    ConvASCII
  336.         tst.l    d0
  337.         beq    DoToolType5
  338.         move.l    d0,WBOptCXPri
  339.         lea.l    WBOptCXPri,a0
  340.         move.l    a0,OptCXPri
  341.  
  342. DoToolType5:    bra    MainStart
  343.  
  344. CLIStart:    lib    Dos,Output
  345.         move.l    d0,_stdout
  346.  
  347.         lea.l    CLTemplate1,a0
  348.         move.l    a0,d1
  349.         lea.l    CLArray1,a0
  350.         move.l    a0,d2
  351.         clr.l    d3
  352.         lib    Dos,ReadArgs
  353.         move.l    d0,RDArgs1
  354.         beq    NoRDArgs
  355.  
  356. ;If 'CXPopUp=No' then something turns VoiceShell on?
  357.  
  358.         move.l    OptCXPopUp,a0
  359.         cmp.l    #0,a0
  360.         beq    MainStart        ;No enforcer hits, please
  361.         cmp.b    #'n',(a0)
  362.         bne    CLIStart1
  363.         clr.w    PopUp
  364. CLIStart1:    cmp.b    #'N',(a0)
  365.         bne    MainStart
  366.         clr.w    PopUp
  367.  
  368. MainStart:    openlib Intuition,NoInt
  369.         openlib    Commodities,NoCommodities
  370.         openlib    Asl,NoAsl
  371.         openlib    Utility,NoUtility
  372.  
  373.         move.l    $4,_SysBase
  374.         move.l    _DosBase,_DOSBase
  375.         move.l    _CommoditiesBase,_CxBase
  376.  
  377.         move.l    OurTask,a1
  378.         move.l    #120,d0
  379.         lib    Exec,SetTaskPri
  380.  
  381.         openlib GadTools,NoGadTools
  382.  
  383. ;Create reply port for timer.device
  384.  
  385.         lib    Exec,CreateMsgPort
  386.         move.l    d0,TRPort
  387.         beq    NoMsgPort
  388.  
  389. ;Create IOReq for timer.device
  390.  
  391.         move.l    #IOTV_SIZE,d0
  392.         move.l    TRPort,a0
  393.         clr.b    LN_TYPE(a0)        ;Make sure CheckIO doesn't hang
  394.         lib    Exec,CreateIORequest
  395.         move.l    d0,TIORequest
  396.         beq    NoIOReq
  397.  
  398. ;Open timer.device
  399.  
  400.         lea.l    TimerName,a0
  401.         move.l    TIORequest,a1
  402.         move.l    #UNIT_VBLANK,d0
  403.         clr.l    d1                ;No flags
  404.         lib    Exec,OpenDevice
  405.         tst.l    d0
  406.         bne    NoTimer
  407.         move.w    #$1,TimerOpen            ;Just to tell if open
  408.  
  409.         clr.l    Time
  410.         bsr    Waiter
  411.  
  412. ;Create a message port for the voice.library
  413.  
  414.         lib    Exec,CreateMsgPort
  415.         move.l    d0,VoicePort
  416.         beq    NoMsgPort
  417.  
  418. ;Create a message port for commodities.library (Exchange)
  419.  
  420.         lib    Exec,CreateMsgPort
  421.         move.l    d0,CXPort
  422.         beq    NoMsgPort
  423.         lea.l    NewBroker1,a0
  424.         move.l    d0,nb_Port(a0)
  425.  
  426. ;Get Asl_requester
  427.  
  428.         move.l    #ASL_FileRequest,d0
  429.         lea.l    AslReqTags,a0
  430.         lib    Asl,AllocAslRequest
  431.         move.l    d0,AslReq
  432.         beq    NoAslReq
  433.  
  434. ;Do CX init stuff. Create broker
  435.  
  436.         tst.l    OptCXPri
  437.         beq    SkipSetCXPri
  438.         move.l    OptCXPri,a0
  439.         move.l    (a0),d0
  440.  
  441.         tst.l    d0
  442.         bmi    SetCXPri2
  443.  
  444.         cmp.l    #127,d0
  445.         bhi    BadPriority
  446.         bra    SetCXPri3
  447.  
  448. SetCXPri2:    cmp.l    #-128,d0
  449.         bcs    BadPriority
  450.  
  451. SetCXPri3:    move.b    d0,NBPri
  452. SkipSetCXPri:    lea.l    NewBroker1,a0
  453.         clr.l    d0            ;No extra error codes wanted
  454.         lib    Commodities,CxBroker
  455.         move.l    d0,CXBroker1
  456.         beq    NoCommodity
  457.  
  458. ;Create Filter object
  459.  
  460.         move.l    OptCXPopKey,AboutTxt7.X        ;For about window
  461.  
  462.         move.l    OptCXPopKey,a0
  463.         sub.l    a1,a1
  464.         move.l    #CX_FILTER,d0
  465.         lib    Commodities,CreateCxObj
  466.         move.l    d0,d2
  467.         beq    NoCommodity
  468.  
  469. ;Attach Filter object to Broker
  470.  
  471.         move.l    CXBroker1,a0
  472.         move.l    d2,a1
  473.         lib    Commodities,AttachCxObj
  474.  
  475.         move.l    d2,a0            ;Check if valid descriptor
  476.         lib    Commodities,CxObjError
  477.         cmp.l    #COERR_BADFILTER,d0
  478.         beq    NoFilter
  479.  
  480. ;Create Send object
  481.  
  482.         move.l    d2,d3
  483.         move.l    CXPort,a0
  484.         sub.l    a1,a1
  485.         move.l    #CX_SEND,d0
  486.         lib    Commodities,CreateCxObj
  487.         move.l    d0,d2
  488.         beq    NoCommodity
  489.  
  490. ;Attach Send object to Filter
  491.  
  492.         move.l    d3,a0
  493.         move.l    d2,a1
  494.         lib    Commodities,AttachCxObj
  495.  
  496. ;Create translate object
  497.  
  498.         move.l    d2,d3
  499.         sub.l    a0,a0
  500.         sub.l    a1,a1
  501.         move.l    #CX_TRANSLATE,d0
  502.         lib    Commodities,CreateCxObj
  503.         move.l    d0,d2
  504.         beq    NoCommodity
  505.  
  506. ;Attach Translate object to Send
  507.  
  508.         move.l    d3,a0
  509.         move.l    d2,a1
  510.         lib    Commodities,AttachCxObj
  511.  
  512. ;We open voice.library this late so that if we're already run the older
  513. ;copy pops up
  514.  
  515.         move.l    #8,d0
  516.         move.l    $4,a6
  517.         lea.l    _VoiceLib,a1
  518.         jsr    _LVOOpenLibrary(a6)
  519.         move.l    d0,_VoiceBase
  520.         beq    NoVoice
  521.  
  522. ;The same thing with the ARexx port...
  523.  
  524. ;Check to see if a port with our name already exists
  525.  
  526.         lib    Exec,Forbid
  527.         lea.l    ARexxPortName,a1
  528.         flib    Exec,FindPort
  529.         push    d0
  530.         flib    Exec,Permit
  531.  
  532.         pull    d0
  533.         tst.l    d0
  534.         bne    NoMsgPort2
  535.  
  536. ;Create AREXX message port
  537.  
  538.         lib    Exec,CreateMsgPort
  539.         move.l    d0,ARexxPort
  540.         beq    NoMsgPort
  541.  
  542.         move.l    ARexxPort,a1
  543.         lea.l    ARexxPortName,a0
  544.         move.l    a0,LN_NAME(a1)
  545.         lib    Exec,AddPort
  546.  
  547. ;Read preferences
  548.  
  549.         bsr    Load        ;Set voice stuff
  550.  
  551.         bsr    CXDisable    ;Turn off just in case
  552.  
  553.         tst.w    PopUp
  554.         beq    SkipOpen1
  555.  
  556.         bsr    OpenWin1
  557.         tst.l    Window1
  558.         beq    NoWindow1
  559.  
  560.         bsr    SetModes    ;Set gads/menus
  561.  
  562. SkipOpen1:    move.l    #5625242,d5    ;inform user
  563.         bsr    AddVTask
  564.  
  565. Window1IDCMP:    move.l    Window1,a0
  566.         bsr    CheckIDCMP
  567.         tst.l    d0            ;Test for CTRL_C
  568.         beq    ShutDown
  569.         cmp.l    #1,d0            ;Test for CTRL_D
  570.         beq    DoCTRL_D
  571.         cmp.l    #2,d0            ;Test for CTRL_E
  572.         beq    DoCTRL_E
  573.         cmp.l    #3,d0
  574.         beq    DoVoice            ;Do voice command
  575.         cmp.l    #4,d0
  576.         beq    Window1IDCMP        ;Already done ARexx or commodity
  577.         cmp.l    #INTUITICKS,d2
  578.         beq    DoTicks
  579.         cmp.l    #GADGETUP,d2
  580.         beq    DoGads
  581.         cmp.l    #CLOSEWINDOW,d2
  582.         beq    DoDoCXDisappear
  583.         cmp.l    #MENUPICK,d2
  584.         beq    Win1Menus
  585.         cmp.l    #VANILLAKEY,d2
  586.         beq    VanillaKeys
  587.         cmp.l    #ACTIVEWINDOW,d2
  588.         beq    ActivateGads
  589.         cmp.l    #REFRESHWINDOW,d2
  590.         beq    Refresher
  591.         bra    Window1IDCMP
  592.  
  593. Refresher:    tst.l    Window1
  594.         beq    Refresher_OUT
  595.         move.l    Window1,a0
  596.         lib    GadTools,GT_BeginRefresh
  597.         move.l    Window1,a0
  598.         move.l    #TRUE,d0
  599.         lib    GadTools,GT_EndRefresh
  600. Refresher_OUT:    bra    Window1IDCMP
  601.  
  602. VanillaKeys:    cmp.w    #$1b,d3
  603.         beq    Quit
  604.         cmp.w    #'l',d3            ;Lower case
  605.         beq    DoDataLoad
  606.         cmp.w    #'s',d3
  607.         beq    Save
  608.         cmp.w    #'q',d3
  609.         beq    Quit
  610.         cmp.w    #'u',d3
  611.         beq    DoGainUp
  612.         cmp.w    #'d',d3
  613.         beq    DoGainDown
  614.         cmp.w    #'f',d3
  615.         beq    ActivateGads
  616.         cmp.w    #'L',d3            ;Upper case
  617.         beq    DoDataLoad
  618.         cmp.w    #'S',d3
  619.         beq    Save
  620.         cmp.w    #'Q',d3
  621.         beq    Quit
  622.         cmp.w    #'U',d3
  623.         beq    DoGainUp
  624.         cmp.w    #'D',d3
  625.         beq    DoGainDown
  626.         cmp.w    #'F',d3
  627.         beq    ActivateGads
  628.         bra    Window1IDCMP
  629.  
  630. DoGads:        cmp.w    #10,$26(a5)
  631.         beq    DoOnOff
  632.         cmp.w    #1,$26(a5)
  633.         beq    ActivateGads
  634.         cmp.w    #20,$26(a5)
  635.         beq    DoGainUp
  636.         cmp.w    #30,$26(a5)
  637.         beq    DoGainDown
  638.         cmp.w    #40,$26(a5)
  639.         beq    DoDataLoad
  640.         cmp.w    #98,$26(a5)
  641.         beq    Save
  642.         cmp.w    #99,$26(a5)
  643.         beq    Quit
  644.         bra    Window1IDCMP
  645.  
  646. Win1Menus:    bsr    MenuNull
  647.         cmp.w    #$00,d6
  648.         beq    Win1Menus1
  649.         cmp.w    #$01,d6
  650.         beq    Win1Menus2
  651.         cmp.w    #$02,d6
  652.         beq    Win1Menus3
  653.         bra    Window1IDCMP
  654. Win1Menus1:    cmp.w    #$00,d5
  655.         beq    DoLoad
  656.         cmp.w    #$01,d5
  657.         beq    Save
  658.         cmp.w    #$02,d5
  659.         beq    About
  660.         cmp.w    #$04,d5
  661.         beq    Quit
  662.         bra    Window1IDCMP
  663. Win1Menus2:    cmp.w    #$00,d5
  664.         beq    EditCmds
  665.         cmp.w    #$01,d5
  666.         beq    ErrorCmds
  667.         bra    Window1IDCMP
  668. Win1Menus3:    cmp.w    #$00,d5
  669.         beq    Win1Menus3.1
  670.         cmp.w    #$01,d5
  671.         beq    Win1Menus3.2
  672.         cmp.w    #$02,d5
  673.         beq    Win1Menus3.3
  674.         cmp.w    #$03,d5
  675.         beq    Win1Menus3.4
  676.         cmp.w    #$04,d5
  677.         beq    Win1Menus3.5
  678.         cmp.w    #$05,d5
  679.         beq    Win1Menus3.6
  680.         cmp.w    #$06,d5
  681.         beq    Win1Menus3.7
  682.         cmp.w    #$07,d5
  683.         beq    SetPriority
  684.         cmp.w    #$08,d5
  685.         beq    DoConfirm
  686.         bra    Window1IDCMP
  687. Win1Menus3.1:    cmp.w    #$00,d4
  688.         beq    DoSetSamp1
  689.         cmp.w    #$01,d4
  690.         beq    DoSetSamp2
  691.         cmp.w    #$02,d4
  692.         beq    DoSetSamp3
  693.         cmp.w    #$03,d4
  694.         beq    DoSetSamp4
  695.         bra    Window1IDCMP
  696. Win1Menus3.2:    cmp.w    #$00,d4
  697.         beq    DoSetResLo
  698.         cmp.w    #$01,d4
  699.         beq    DoSetResHi
  700. Win1Menus3.3:    cmp.w    #$00,d4
  701.         beq    DoSetAccLowest
  702.         cmp.w    #$01,d4
  703.         beq    DoSetAccLower
  704.         cmp.w    #$02,d4
  705.         beq    DoSetAccLow
  706.         cmp.w    #$03,d4
  707.         beq    DoSetAccNormal
  708.         cmp.w    #$04,d4
  709.         beq    DoSetAccHigh
  710.         cmp.w    #$05,d4
  711.         beq    DoSetAccHigher
  712.         cmp.w    #$06,d4
  713.         beq    DoSetAccEHigher
  714.         cmp.w    #$07,d4
  715.         beq    DoSetAccMaximum
  716. Win1Menus3.4:    cmp.w    #$00,d4
  717.         beq    DoSetLeft
  718.         cmp.w    #$01,d4
  719.         beq    DoSetRight
  720. Win1Menus3.5:    cmp.w    #$00,d4
  721.         beq    DoSetMic
  722.         cmp.w    #$01,d4
  723.         beq    DoSetLine
  724. Win1Menus3.6:    cmp.w    #$00,d4
  725.         beq    DoSetTimerA
  726.         cmp.w    #$01,d4
  727.         beq    DoSetTimerB
  728.         bra    Window1IDCMP
  729. Win1Menus3.7:    cmp.w    #$00,d4
  730.         beq    DoSetWake0
  731.         cmp.w    #$01,d4
  732.         beq    DoSetWake5
  733.         cmp.w    #$02,d4
  734.         beq    DoSetWake10
  735.         cmp.w    #$03,d4
  736.         beq    DoSetWake15
  737.         cmp.w    #$04,d4
  738.         beq    DoSetWake20
  739.         bra    Window1IDCMP
  740.  
  741. DoTicks:    add.w    #1,TickCount
  742.         cmp.w    #20,TickCount
  743.         bne    Window1IDCMP
  744.         clr.w    TickCount
  745.         tst.w    TaskOn
  746.         beq    DoTicks2
  747.         lea.l    ReadyText1,a0
  748.         bsr    GetLength
  749.         bsr    Inform
  750.         bra    Window1IDCMP
  751. DoTicks2:    lea.l    InactiveText1,a0
  752.         bsr    GetLength
  753.         bsr    Inform
  754.         bra    Window1IDCMP
  755.  
  756. EditCmds:    clr.w    Saved
  757.         move.w    #1,DisActive        ;Can't turn on/off
  758.         bsr    RemVTask1
  759.         bsr    SleepPointer
  760.         bsr    MenusOff
  761.         bsr    RemGads
  762.  
  763.         bsr    OpenWin2
  764.         tst.l    d0
  765.         beq    NoWindow1
  766.         bsr    RemGads2
  767.         bsr    SetStrGads
  768.         bsr    AddGads2
  769.  
  770.         bsr    ActGad2
  771.  
  772. Window2IDCMP:    move.l    Window2,a0
  773.         bsr    CheckIDCMP
  774.  
  775.         tst.l    d0
  776.         beq    ShutDown
  777.         cmp.l    #4,d0
  778.         beq    Window2IDCMP
  779.         cmp.l    #GADGETUP,d2
  780.         beq    ActivateGads2
  781.         cmp.l    #GADGETDOWN,d2
  782.         beq    GetGadAddr2
  783.         cmp.l    #CLOSEWINDOW,d2
  784.         beq    EditCmds_OUT
  785.         cmp.l    #MENUPICK,d2
  786.         beq    Win2Menus
  787.         cmp.l    #VANILLAKEY,d2
  788.         beq    EditKeys
  789.         cmp.l    #REFRESHWINDOW,d2
  790.         beq    Refresher2
  791.         bra    Window2IDCMP
  792.  
  793. Refresher2:    move.l    Window2,a0
  794.         lib    GadTools,GT_BeginRefresh
  795.         move.l    Window2,a0
  796.         move.l    #TRUE,d0
  797.         lib    GadTools,GT_EndRefresh
  798.         bra    Window2IDCMP
  799.  
  800. Win2Menus:    bsr    MenuNull
  801.         cmp.w    #$00,d6
  802.         beq    Win2Menus1
  803.         bra    Window2IDCMP
  804. Win2Menus1:    cmp.w    #$00,d5
  805.         beq    DoPage1
  806.         cmp.w    #$01,d5
  807.         beq    DoPage2
  808.         cmp.w    #$02,d5
  809.         beq    DoPage3
  810.         cmp.w    #$03,d5
  811.         beq    DoPage4
  812.         cmp.w    #$04,d5
  813.         beq    DoPage5
  814.         cmp.w    #$05,d5
  815.         beq    DoPage6
  816.         cmp.w    #$07,d5
  817.         beq    EditCmds_OUT
  818.         bra    Window2IDCMP
  819.  
  820. DoPage1:    bsr    SaveStrGads
  821.         bsr    RemGads2
  822.         move.w    #0,Page
  823.         bsr    SetStrGads
  824.         bsr    AddGads2
  825.         bra    Window2IDCMP
  826.  
  827. DoPage2:    bsr    SaveStrGads
  828.         bsr    RemGads2
  829.         move.w    #1,Page
  830.         bsr    SetStrGads
  831.         bsr    AddGads2
  832.         bsr    ActGad2
  833.         bra    Window2IDCMP
  834.  
  835. DoPage3:    bsr    SaveStrGads
  836.         bsr    RemGads2
  837.         move.w    #2,Page
  838.         bsr    SetStrGads
  839.         bsr    AddGads2
  840.         bsr    ActGad2
  841.         bra    Window2IDCMP
  842.  
  843. DoPage4:    bsr    SaveStrGads
  844.         bsr    RemGads2
  845.         move.w    #3,Page
  846.         bsr    SetStrGads
  847.         bsr    AddGads2
  848.         bsr    ActGad2
  849.         bra    Window2IDCMP
  850.  
  851. DoPage5:    bsr    SaveStrGads
  852.         bsr    RemGads2
  853.         move.w    #4,Page
  854.         bsr    SetStrGads
  855.         bsr    AddGads2
  856.         bsr    ActGad2
  857.         bra    Window2IDCMP
  858.  
  859. DoPage6:    bsr    SaveStrGads
  860.         bsr    RemGads2
  861.         move.w    #5,Page
  862.         bsr    SetStrGads
  863.         bsr    AddGads2
  864.         bsr    ActGad2
  865.         bra    Window2IDCMP
  866.  
  867. SaveStrGads:    lea.l    CmdList,a2
  868.         move.w    Page,d0
  869.         mulu.w    #NUMGADS*GADLENGTH,d0
  870.         add.l    d0,a2            ;a2=start of strings
  871.  
  872.         move.l    StrGadBuf1,a0
  873.         move.l    a2,a1
  874.         move.l    #GADLENG1,d0
  875.         add.l    d0,a2
  876.         lib    Exec,CopyMem
  877.  
  878.         move.l    StrGadBuf2,a0
  879.         move.l    a2,a1
  880.         move.l    #GADLENG2,d0
  881.         add.l    d0,a2
  882.         lib    Exec,CopyMem
  883.  
  884.         move.l    StrGadBuf3,a0
  885.         move.l    a2,a1
  886.         move.l    #GADLENG1,d0
  887.         add.l    d0,a2
  888.         lib    Exec,CopyMem
  889.  
  890.         move.l    StrGadBuf4,a0
  891.         move.l    a2,a1
  892.         move.l    #GADLENG2,d0
  893.         add.l    d0,a2
  894.         lib    Exec,CopyMem
  895.  
  896.         move.l    StrGadBuf5,a0
  897.         move.l    a2,a1
  898.         move.l    #GADLENG1,d0
  899.         add.l    d0,a2
  900.         lib    Exec,CopyMem
  901.  
  902.         move.l    StrGadBuf6,a0
  903.         move.l    a2,a1
  904.         move.l    #GADLENG2,d0
  905.         add.l    d0,a2
  906.         lib    Exec,CopyMem
  907.  
  908.         move.l    StrGadBuf7,a0
  909.         move.l    a2,a1
  910.         move.l    #GADLENG1,d0
  911.         add.l    d0,a2
  912.         lib    Exec,CopyMem
  913.  
  914.         move.l    StrGadBuf8,a0
  915.         move.l    a2,a1
  916.         move.l    #GADLENG2,d0
  917.         add.l    d0,a2
  918.         lib    Exec,CopyMem
  919.  
  920.         move.l    StrGadBuf9,a0
  921.         move.l    a2,a1
  922.         move.l    #GADLENG1,d0
  923.         add.l    d0,a2
  924.         lib    Exec,CopyMem
  925.  
  926.         move.l    StrGadBuf10,a0
  927.         move.l    a2,a1
  928.         move.l    #GADLENG2,d0
  929.         add.l    d0,a2
  930.         lib    Exec,CopyMem
  931.  
  932.         move.l    StrGadBuf11,a0
  933.         move.l    a2,a1
  934.         move.l    #GADLENG1,d0
  935.         add.l    d0,a2
  936.         lib    Exec,CopyMem
  937.  
  938.         move.l    StrGadBuf12,a0
  939.         move.l    a2,a1
  940.         move.l    #GADLENG2,d0
  941.         add.l    d0,a2
  942.         lib    Exec,CopyMem
  943.  
  944.         move.l    StrGadBuf13,a0
  945.         move.l    a2,a1
  946.         move.l    #GADLENG1,d0
  947.         add.l    d0,a2
  948.         lib    Exec,CopyMem
  949.  
  950.         move.l    StrGadBuf14,a0
  951.         move.l    a2,a1
  952.         move.l    #GADLENG2,d0
  953.         add.l    d0,a2
  954.         lib    Exec,CopyMem
  955.  
  956.         move.l    StrGadBuf15,a0
  957.         move.l    a2,a1
  958.         move.l    #GADLENG1,d0
  959.         add.l    d0,a2
  960.         lib    Exec,CopyMem
  961.  
  962.         move.l    StrGadBuf16,a0
  963.         move.l    a2,a1
  964.         move.l    #GADLENG2,d0
  965.         add.l    d0,a2
  966.         lib    Exec,CopyMem
  967.  
  968.         move.l    StrGadBuf17,a0
  969.         move.l    a2,a1
  970.         move.l    #GADLENG1,d0
  971.         add.l    d0,a2
  972.         lib    Exec,CopyMem
  973.  
  974.         move.l    StrGadBuf18,a0
  975.         move.l    a2,a1
  976.         move.l    #GADLENG2,d0
  977.         add.l    d0,a2
  978.         lib    Exec,CopyMem
  979.  
  980.         move.l    StrGadBuf19,a0
  981.         move.l    a2,a1
  982.         move.l    #GADLENG1,d0
  983.         add.l    d0,a2
  984.         lib    Exec,CopyMem
  985.  
  986.         move.l    StrGadBuf20,a0
  987.         move.l    a2,a1
  988.         move.l    #GADLENG2,d0
  989.         add.l    d0,a2
  990.         lib    Exec,CopyMem
  991.         rts
  992.  
  993. SetStrGads:    lea.l    CmdList,a2
  994.         move.w    Page,d0
  995.         mulu.w    #NUMGADS*GADLENGTH,d0
  996.         add.l    d0,a2            ;a2=start of strings
  997.  
  998.         move.l    a2,a0
  999.         move.l    StrGadBuf1,a1
  1000.         move.l    #GADLENG1,d0
  1001.         add.l    d0,a2
  1002.         lib    Exec,CopyMem
  1003.  
  1004.         move.l    a2,a0
  1005.         move.l    StrGadBuf2,a1
  1006.         move.l    #GADLENG2,d0
  1007.         add.l    d0,a2
  1008.         lib    Exec,CopyMem
  1009.  
  1010.         move.l    a2,a0
  1011.         move.l    StrGadBuf3,a1
  1012.         move.l    #GADLENG1,d0
  1013.         add.l    d0,a2
  1014.         lib    Exec,CopyMem
  1015.  
  1016.         move.l    a2,a0
  1017.         move.l    StrGadBuf4,a1
  1018.         move.l    #GADLENG2,d0
  1019.         add.l    d0,a2
  1020.         lib    Exec,CopyMem
  1021.  
  1022.         move.l    a2,a0
  1023.         move.l    StrGadBuf5,a1
  1024.         move.l    #GADLENG1,d0
  1025.         add.l    d0,a2
  1026.         lib    Exec,CopyMem
  1027.  
  1028.         move.l    a2,a0
  1029.         move.l    StrGadBuf6,a1
  1030.         move.l    #GADLENG2,d0
  1031.         add.l    d0,a2
  1032.         lib    Exec,CopyMem
  1033.  
  1034.         move.l    a2,a0
  1035.         move.l    StrGadBuf7,a1
  1036.         move.l    #GADLENG1,d0
  1037.         add.l    d0,a2
  1038.         lib    Exec,CopyMem
  1039.  
  1040.         move.l    a2,a0
  1041.         move.l    StrGadBuf8,a1
  1042.         move.l    #GADLENG2,d0
  1043.         add.l    d0,a2
  1044.         lib    Exec,CopyMem
  1045.  
  1046.         move.l    a2,a0
  1047.         move.l    StrGadBuf9,a1
  1048.         move.l    #GADLENG1,d0
  1049.         add.l    d0,a2
  1050.         lib    Exec,CopyMem
  1051.  
  1052.         move.l    a2,a0
  1053.         move.l    StrGadBuf10,a1
  1054.         move.l    #GADLENG2,d0
  1055.         add.l    d0,a2
  1056.         lib    Exec,CopyMem
  1057.  
  1058.         move.l    a2,a0
  1059.         move.l    StrGadBuf11,a1
  1060.         move.l    #GADLENG1,d0
  1061.         add.l    d0,a2
  1062.         lib    Exec,CopyMem
  1063.  
  1064.         move.l    a2,a0
  1065.         move.l    StrGadBuf12,a1
  1066.         move.l    #GADLENG2,d0
  1067.         add.l    d0,a2
  1068.         lib    Exec,CopyMem
  1069.  
  1070.         move.l    a2,a0
  1071.         move.l    StrGadBuf13,a1
  1072.         move.l    #GADLENG1,d0
  1073.         add.l    d0,a2
  1074.         lib    Exec,CopyMem
  1075.  
  1076.         move.l    a2,a0
  1077.         move.l    StrGadBuf14,a1
  1078.         move.l    #GADLENG2,d0
  1079.         add.l    d0,a2
  1080.         lib    Exec,CopyMem
  1081.  
  1082.         move.l    a2,a0
  1083.         move.l    StrGadBuf15,a1
  1084.         move.l    #GADLENG1,d0
  1085.         add.l    d0,a2
  1086.         lib    Exec,CopyMem
  1087.  
  1088.         move.l    a2,a0
  1089.         move.l    StrGadBuf16,a1
  1090.         move.l    #GADLENG2,d0
  1091.         add.l    d0,a2
  1092.         lib    Exec,CopyMem
  1093.  
  1094.         move.l    a2,a0
  1095.         move.l    StrGadBuf17,a1
  1096.         move.l    #GADLENG1,d0
  1097.         add.l    d0,a2
  1098.         lib    Exec,CopyMem
  1099.  
  1100.         move.l    a2,a0
  1101.         move.l    StrGadBuf18,a1
  1102.         move.l    #GADLENG2,d0
  1103.         add.l    d0,a2
  1104.         lib    Exec,CopyMem
  1105.  
  1106.         move.l    a2,a0
  1107.         move.l    StrGadBuf19,a1
  1108.         move.l    #GADLENG1,d0
  1109.         add.l    d0,a2
  1110.         lib    Exec,CopyMem
  1111.  
  1112.         move.l    a2,a0
  1113.         move.l    StrGadBuf20,a1
  1114.         move.l    #GADLENG2,d0
  1115.         add.l    d0,a2
  1116.         lib    Exec,CopyMem
  1117.         rts
  1118.  
  1119. EditCmds_OUT:    bsr    SaveStrGads
  1120.         bsr    AddVTask
  1121.         bsr    CloseWin2
  1122.         clr.w    DisActive    ;Can turn on/off
  1123.         bsr    AddGads
  1124.         bsr    MenusOn
  1125.         bsr    NormalPointer
  1126.         bra    Window1IDCMP
  1127.  
  1128. EditKeys:    cmp.w    #$1b,d3
  1129.         beq    EditCmds_OUT
  1130.         cmp.w    #'g',d3
  1131.         beq    Get
  1132.         cmp.w    #'G',d3
  1133.         beq    Get
  1134.         bra    Window2IDCMP
  1135.  
  1136. GetGadAddr2:    cmp.w    #2,$26(a5)
  1137.         beq    GetGadAddr2.1
  1138.         clr.l    LastGad
  1139.         move.l    GetGad1,a0
  1140.         move.l    Window2,a1
  1141.         sub.l    a2,a2
  1142.         lea.l    DisabledTags,a3
  1143.         lib    GadTools,GT_SetGadgetAttrsA
  1144.         bra    Window2IDCMP
  1145. GetGadAddr2.1:    move.l    a5,LastGad
  1146.         move.l    GetGad1,a0
  1147.         move.l    Window2,a1
  1148.         sub.l    a2,a2
  1149.         lea.l    EnabledTags,a3
  1150.         lib    GadTools,GT_SetGadgetAttrsA
  1151.         bra    Window2IDCMP
  1152.  
  1153. Get:        tst.l    LastGad
  1154.         beq    Get1_OUT2
  1155.  
  1156.         move.l    AslReq,a0
  1157.         lea.l    GetReqTags,a1
  1158.         lib    Asl,AslRequest
  1159.         tst.l    d0
  1160.         beq    Get1_OUT1
  1161.  
  1162.         bsr    RemGads2
  1163.         move.l    LastGad,a5
  1164.         bsr    MakeCmd
  1165.         bsr    AddGads2
  1166.  
  1167. Get1_OUT1:    move.l    LastGad,a0
  1168.         move.l    Window2,a1
  1169.         sub.l    a2,a2
  1170.         lib    Intuition,ActivateGadget
  1171.  
  1172. Get1_OUT2:    bra    Window2IDCMP
  1173.  
  1174. SetPriority:    move.w    #1,DisActive        ;Can't turn on/off
  1175.         bsr    RemVTask1
  1176.         bsr    SleepPointer
  1177.         bsr    MenusOff
  1178.         bsr    RemGads
  1179.  
  1180.         bsr    OpenWin3
  1181.         tst.l    d0
  1182.         beq    NoWindow1
  1183.  
  1184. Window3IDCMP:    move.l    Window3,a0
  1185.         bsr    CheckIDCMP
  1186.  
  1187.         tst.l    d0
  1188.         beq    ShutDown
  1189.         cmp.l    #4,d0
  1190.         beq    Window3IDCMP
  1191.         cmp.l    #GADGETUP,d2
  1192.         beq    SetPriority2
  1193.         cmp.l    #CLOSEWINDOW,d2
  1194.         beq    SetPri_OUT
  1195.         cmp.l    #VANILLAKEY,d2
  1196.         beq    SetPriKeys
  1197.         cmp.l    #ACTIVEWINDOW,d2
  1198.         beq    GoActGads3
  1199.         cmp.l    #REFRESHWINDOW,d2
  1200.         beq    Refresher3
  1201.         bra    Window3IDCMP
  1202.  
  1203. Refresher3:    move.l    Window3,a0
  1204.         lib    GadTools,GT_BeginRefresh
  1205.         move.l    Window3,a0
  1206.         move.l    #TRUE,d0
  1207.         lib    GadTools,GT_EndRefresh
  1208.         bra    Window3IDCMP
  1209.  
  1210. SetPriority2:    move.l    StrGadInt21,a0
  1211.         move.l    (a0),d0
  1212.  
  1213.         tst.l    d0
  1214.         bmi    SetPriority2.1
  1215.  
  1216.         cmp.l    #127,d0
  1217.         bhi    SetPriority3
  1218.  
  1219.         move.l    d0,PrefsPriority
  1220.         bra    SetPri_OUT
  1221.  
  1222. SetPriority2.1:    cmp.l    #-128,d0
  1223.         bcs    SetPriority3
  1224.  
  1225.         move.l    d0,PrefsPriority
  1226.         bra    SetPri_OUT
  1227.  
  1228. SetPriority3:    sub.l    a0,a0
  1229.         lib    Intuition,DisplayBeep
  1230.  
  1231.         move.l    StrGad21,a0
  1232.         move.l    Window3,a1
  1233.         sub.l    a2,a2
  1234.         lea.l    StrGadTagList3,a3
  1235.         lib    GadTools,GT_SetGadgetAttrsA
  1236.         bra    GoActGads3
  1237.  
  1238. SetPri_OUT:    bsr    CloseWin3
  1239.         bsr    AddVTask
  1240.         clr.w    DisActive        ;Can turn on/off
  1241.         bsr    AddGads
  1242.         bsr    MenusOn
  1243.         bsr    NormalPointer
  1244.         bra    Window1IDCMP
  1245.  
  1246. GoActGads3:    bsr    ActGad3
  1247.         bra    Window3IDCMP
  1248.  
  1249. SetPriKeys:    cmp.w    #$1b,d3
  1250.         beq    SetPri_OUT
  1251.         bra    Window3IDCMP
  1252.  
  1253. ErrorCmds:    clr.w    Saved
  1254.         move.w    #1,DisActive        ;Can't turn on/off
  1255.         bsr    RemVTask1
  1256.         bsr    SleepPointer
  1257.         bsr    MenusOff
  1258.         bsr    RemGads
  1259.  
  1260.         bsr    OpenWin4
  1261.         tst.l    d0
  1262.         beq    NoWindow1
  1263.  
  1264. ;Move data from prefs to window
  1265.  
  1266.         bsr    RemGads4
  1267.         bsr    SetStrGads2
  1268.         bsr    AddGads4
  1269.  
  1270.         bsr    ActGad4
  1271.  
  1272. Window4IDCMP:    move.l    Window4,a0
  1273.         bsr    CheckIDCMP
  1274.  
  1275.         tst.l    d0
  1276.         beq    ShutDown
  1277.         cmp.l    #4,d0
  1278.         beq    Window4IDCMP
  1279.         cmp.l    #GADGETDOWN,d2
  1280.         beq    GetGadAddr4
  1281.         cmp.l    #GADGETUP,d2
  1282.         beq    ActivateGads4
  1283.         cmp.l    #CLOSEWINDOW,d2
  1284.         beq    ErrorCmds_OUT
  1285.         cmp.l    #VANILLAKEY,d2
  1286.         beq    ErrorKeys
  1287.         cmp.l    #REFRESHWINDOW,d2
  1288.         beq    Refresher4
  1289.         bra    Window4IDCMP
  1290.  
  1291. Refresher4:    move.l    Window4,a0
  1292.         lib    GadTools,GT_BeginRefresh
  1293.         move.l    Window2,a0
  1294.         move.l    #TRUE,d0
  1295.         lib    GadTools,GT_EndRefresh
  1296.         bra    Window4IDCMP
  1297.  
  1298. SaveStrGads2:    move.l    StrGadBuf22,a0
  1299.         lea.l    ErrCmd1,a1
  1300.         move.l    #GADLENG2,d0
  1301.         lib    Exec,CopyMem
  1302.  
  1303.         move.l    StrGadBuf23,a0
  1304.         lea.l    ErrCmd2,a1
  1305.         move.l    #GADLENG2,d0
  1306.         flib    Exec,CopyMem
  1307.  
  1308.         move.l    StrGadBuf24,a0
  1309.         lea.l    ErrCmd3,a1
  1310.         move.l    #GADLENG2,d0
  1311.         flib    Exec,CopyMem
  1312.  
  1313.         move.l    StrGadBuf25,a0
  1314.         lea.l    ErrCmd4,a1
  1315.         move.l    #GADLENG2,d0
  1316.         flib    Exec,CopyMem
  1317.  
  1318.         move.l    StrGadBuf26,a0
  1319.         lea.l    ErrCmd5,a1
  1320.         move.l    #GADLENG2,d0
  1321.         flib    Exec,CopyMem
  1322.  
  1323.         move.l    StrGadBuf27,a0
  1324.         lea.l    ErrCmd6,a1
  1325.         move.l    #GADLENG2,d0
  1326.         flib    Exec,CopyMem
  1327.  
  1328.         move.l    StrGadBuf28,a0
  1329.         lea.l    ConfCmd1,a1
  1330.         move.l    #GADLENG2,d0
  1331.         flib    Exec,CopyMem
  1332.  
  1333.         move.l    StrGadBuf29,a0
  1334.         lea.l    ConfCmd2,a1
  1335.         move.l    #GADLENG2,d0
  1336.         flib    Exec,CopyMem
  1337.  
  1338.         move.l    StrGadBuf30,a0
  1339.         lea.l    WakeCmd1,a1
  1340.         move.l    #GADLENG2,d0
  1341.         flib    Exec,CopyMem
  1342.  
  1343.         rts
  1344.  
  1345. SetStrGads2:    lea.l    ErrCmd1,a0
  1346.         move.l    StrGadBuf22,a1
  1347.         move.l    #GADLENG2,d0
  1348.         lib    Exec,CopyMem
  1349.  
  1350.         lea.l    ErrCmd2,a0
  1351.         move.l    StrGadBuf23,a1
  1352.         move.l    #GADLENG2,d0
  1353.         flib    Exec,CopyMem
  1354.  
  1355.         lea.l    ErrCmd3,a0
  1356.         move.l    StrGadBuf24,a1
  1357.         move.l    #GADLENG2,d0
  1358.         flib    Exec,CopyMem
  1359.  
  1360.         lea.l    ErrCmd4,a0
  1361.         move.l    StrGadBuf25,a1
  1362.         move.l    #GADLENG2,d0
  1363.         flib    Exec,CopyMem
  1364.  
  1365.         lea.l    ErrCmd5,a0
  1366.         move.l    StrGadBuf26,a1
  1367.         move.l    #GADLENG2,d0
  1368.         flib    Exec,CopyMem
  1369.  
  1370.         lea.l    ErrCmd6,a0
  1371.         move.l    StrGadBuf27,a1
  1372.         move.l    #GADLENG2,d0
  1373.         flib    Exec,CopyMem
  1374.  
  1375.         lea.l    ConfCmd1,a0
  1376.         move.l    StrGadBuf28,a1
  1377.         move.l    #GADLENG2,d0
  1378.         flib    Exec,CopyMem
  1379.  
  1380.         lea.l    ConfCmd2,a0
  1381.         move.l    StrGadBuf29,a1
  1382.         move.l    #GADLENG2,d0
  1383.         flib    Exec,CopyMem
  1384.  
  1385.         lea.l    WakeCmd1,a0
  1386.         move.l    StrGadBuf30,a1
  1387.         move.l    #GADLENG2,d0
  1388.         flib    Exec,CopyMem
  1389.         rts
  1390.  
  1391. ErrorKeys:    cmp.w    #$1b,d3
  1392.         beq    ErrorCmds_OUT
  1393.         cmp.w    #'g',d3
  1394.         beq    Get2
  1395.         cmp.w    #'G',d3
  1396.         beq    Get2
  1397.         bra    Window4IDCMP
  1398.  
  1399. GetGadAddr4:    cmp.w    #2,$26(a5)
  1400.         beq    GetGadAddr4.1
  1401.         clr.l    LastGad2
  1402.         bra    Window4IDCMP
  1403. GetGadAddr4.1:    move.l    a5,LastGad2
  1404.         bra    Window4IDCMP
  1405.  
  1406. Get2:        tst.l    LastGad2
  1407.         beq    Get2_OUT2
  1408.  
  1409.         move.l    AslReq,a0
  1410.         lea.l    GetReqTags,a1
  1411.         lib    Asl,AslRequest
  1412.         tst.l    d0
  1413.         beq    Get2_OUT1
  1414.  
  1415.         bsr    RemGads4
  1416.         move.l    LastGad2,a5
  1417.         bsr    MakeCmd
  1418.         bsr    AddGads4
  1419.  
  1420. Get2_OUT1:    move.l    LastGad2,a0
  1421.         move.l    Window4,a1
  1422.         sub.l    a2,a2
  1423.         lib    Intuition,ActivateGadget
  1424.  
  1425. Get2_OUT2:    bra    Window4IDCMP
  1426.  
  1427. ErrorCmds_OUT:    bsr    SaveStrGads2
  1428.         bsr    AddVTask
  1429.         bsr    CloseWin4
  1430.         clr.w    DisActive    ;Can turn on/off
  1431.         bsr    AddGads
  1432.         bsr    MenusOn
  1433.         bsr    NormalPointer
  1434.         bra    Window1IDCMP
  1435.  
  1436. DoVoice:    cmp.w    #-2,d3
  1437.         beq    VoiceClip
  1438.         cmp.w    #-3,d3
  1439.         beq    VoiceLow
  1440.         cmp.w    #-4,d3
  1441.         beq    VoiceNoisy
  1442.  
  1443.         cmp.w    PrefsScore,a4
  1444.         bcs    VoiceUnknown
  1445.  
  1446.         lea.l    CmdList,a2
  1447.         move.w    d3,d0
  1448.         mulu.w    #GADLENGTH,d0
  1449.         add.l    d0,a2            ;a2 was start of strings
  1450.  
  1451. ;Test wake up
  1452.  
  1453.         tst.b    PrefsWake
  1454.         beq    CheckConf
  1455.  
  1456.         tst.w    Awake            ;Already awake
  1457.         bne    CheckConf
  1458.  
  1459.         tst.w    d3            ;Test for first command
  1460.         bne    Window1IDCMP        ;Not wake up command
  1461.  
  1462.         move.w    #1,Awake        ;We are awake
  1463.         bsr    ClearTimer
  1464.         clr.l    d0
  1465.         move.b    PrefsWake,d0
  1466.         move.l    d0,Time
  1467.         bsr    Waiter
  1468.         lea.l    AwakeText1,a0        ;Inform and execute
  1469.         bsr    GetLength
  1470.         bsr    Inform
  1471.         lea.l    WakeCmd1,a2
  1472.         tst.b    (a2)
  1473.         beq    CheckWake2
  1474.         bsr    ExecuteCmd
  1475.         cmp.l    #-1,d0
  1476.         beq    DoVoice3
  1477. CheckWake2:    clr.w    TickCount
  1478.         bra    Window1IDCMP
  1479.  
  1480. ;Test confirm
  1481.  
  1482. CheckConf:    cmp.w    #-1,d3            ;Test this after
  1483.         beq    VoiceUnknown        ;awake command!
  1484.  
  1485.         tst.b    PrefsConfirm
  1486.         beq    DoVoice1        ;Don't confirm
  1487.  
  1488.         tst.l    ConfAddress        ;Nothing to compare with
  1489.         beq    CheckConf3
  1490.  
  1491.         cmp.l    ConfAddress,a2        ;Is it same?
  1492.         beq    DoVoice1        ;Yes, execute
  1493.  
  1494.         clr.l    ConfAddress        ;No, clear previous
  1495.         lea.l    NoConfText1,a0        ;Not confirmed, inform
  1496.         bsr    GetLength        ;and execute
  1497.         bsr    Inform
  1498.         lea.l    ConfCmd2,a2
  1499.         tst.b    (a2)
  1500.         beq    CheckConf2
  1501.         bsr    ExecuteCmd
  1502.         cmp.l    #-1,d0
  1503.         beq    DoVoice3
  1504. CheckConf2:    clr.w    TickCount
  1505.         bra    Window1IDCMP
  1506.  
  1507.  
  1508. ;Save this word to be confirmed
  1509.  
  1510. CheckConf3:    move.l    a2,ConfAddress
  1511.  
  1512.         move.l    a2,a0
  1513.         lea.l    StringBuffer,a1
  1514.         move.w    #'* ',(a1)+
  1515.         bsr    CopyStrs
  1516.  
  1517.         lea.l    StringBuffer,a0
  1518.         bsr    GetLength
  1519.         bsr    Inform
  1520.  
  1521.         lea.l    ConfCmd1,a2
  1522.         tst.b    (a2)
  1523.         beq    CheckConf_OUT
  1524.         bsr    ExecuteCmd
  1525.         cmp.l    #-1,d0
  1526.         beq    DoVoice3
  1527. CheckConf_OUT:    clr.w    TickCount
  1528.         bra    Window1IDCMP
  1529.  
  1530. DoVoice1:    move.l    a2,a0
  1531.  
  1532.         push    a2
  1533.         bsr    GetLength
  1534.         bsr    Inform
  1535.         pull    a2
  1536.  
  1537.         clr.w    TickCount
  1538.  
  1539.         add.l    #GADLENG1,a2
  1540.         cmp.l    #0,(a2)
  1541.         beq    DoVoice2
  1542.  
  1543.         cmp.b    #'~',(a2)
  1544.         beq    DoSpecial
  1545.  
  1546.         bsr    ExecuteCmd        ;Execute command
  1547.  
  1548.         clr.l    ConfAddress        ;Forget confirm
  1549.         clr.w    Awake            ;Not awake anymore
  1550.  
  1551.         cmp.l    #-1,d0
  1552.         beq    DoVoice3
  1553.         bra    Window1IDCMP
  1554.  
  1555. DoSpecial:    add.l    #1,a2
  1556.         cmp.b    #'K',(a2)
  1557.         beq    DoSpecial2
  1558.         bra    DoVoice2        ;No Command
  1559.  
  1560. DoSpecial2:    add.l    #2,a2            ;Skip shortcut and space
  1561.         move.l    a2,a0
  1562.         lea.l    StringBuffer,a1
  1563.         bsr    CopyStrs
  1564.  
  1565.         bsr    SendEvents
  1566.         move.l    #4,d2
  1567.         tst.l    IEvents
  1568.         beq    DoVoice3        ;Command failed
  1569.         clr.l    IEvents
  1570.         bra    Window1IDCMP
  1571.  
  1572. DoVoice2:    lea.l    NoCMDText1,a0
  1573.         bsr    GetLength
  1574.         bsr    Inform
  1575.         lea.l    ErrCmd1,a2
  1576.         tst.b    (a2)
  1577.         beq    DoVoice2_OUT
  1578.         bsr    ExecuteCmd
  1579.         cmp.l    #-1,d0
  1580.         beq    DoVoice3
  1581. DoVoice2_OUT:    clr.w    TickCount
  1582.         bra    Window1IDCMP
  1583. DoVoice3:    lea.l    CMDFailText1,a0        ;Doesn't check if the
  1584.         bsr    GetLength        ;command fails
  1585.         bsr    Inform
  1586.         lea.l    ErrCmd2,a2
  1587.         tst.b    (a2)
  1588.         beq    DoVoice3_OUT
  1589.         bsr    ExecuteCmd
  1590. DoVoice3_OUT:    clr.w    TickCount
  1591.         bra    Window1IDCMP
  1592.  
  1593. VoiceUnknown:    lea.l    NoMatchText1,a0
  1594.         bsr    GetLength
  1595.         bsr    Inform
  1596.         lea.l    ErrCmd3,a2
  1597.         tst.b    (a2)
  1598.         beq    VoiceUn_OUT
  1599.         bsr    ExecuteCmd
  1600.         cmp.l    #-1,d0
  1601.         beq    DoVoice3
  1602. VoiceUn_OUT:    clr.w    TickCount
  1603.         bra    Window1IDCMP
  1604. VoiceClip:    lea.l    ClippingText1,a0
  1605.         bsr    GetLength
  1606.         bsr    Inform
  1607.         lea.l    ErrCmd4,a2
  1608.         tst.b    (a2)
  1609.         beq    VoiceClip_OUT
  1610.         bsr    ExecuteCmd
  1611.         cmp.l    #-1,d0
  1612.         beq    DoVoice3
  1613. VoiceClip_OUT:    clr.w    TickCount
  1614.         bra    Window1IDCMP
  1615. VoiceLow:    lea.l    LowVolText1,a0
  1616.         bsr    GetLength
  1617.         bsr    Inform
  1618.         lea.l    ErrCmd5,a2
  1619.         tst.b    (a2)
  1620.         beq    VoiceLow_OUT
  1621.         bsr    ExecuteCmd
  1622.         cmp.l    #-1,d0
  1623.         beq    DoVoice3
  1624. VoiceLow_OUT:    clr.w    TickCount
  1625.         bra    Window1IDCMP
  1626. VoiceNoisy:    lea.l    NoisyText1,a0
  1627.         bsr    GetLength
  1628.         bsr    Inform
  1629.         lea.l    ErrCmd6,a2
  1630.         tst.b    (a2)
  1631.         beq    VoiceNoisy_OUT
  1632.         bsr    ExecuteCmd
  1633.         cmp.l    #-1,d0
  1634.         beq    DoVoice3
  1635. VoiceNoisy_OUT:    clr.w    TickCount
  1636.         bra    Window1IDCMP
  1637.  
  1638. ExecuteCmd:    move.l    a2,d1            ;Execute command
  1639.         clr.l    d2
  1640.         lib    Dos,SystemTagList
  1641.         rts
  1642.  
  1643. CX:        cmp.l    #CXM_COMMAND,d2
  1644.         beq    DoCXCommand
  1645.         cmp.l    #CXM_IEVENT,d2
  1646.         beq    DoCXAppear
  1647.         move.l    #4,d0
  1648.         rts                ;Unknown command
  1649.  
  1650. DoCXCommand:    cmp.l    #CXCMD_APPEAR,d3
  1651.         beq    DoCXAppear
  1652.         cmp.l    #CXCMD_DISAPPEAR,d3
  1653.         beq    DoCXDisappear
  1654.         cmp.l    #CXCMD_KILL,d3
  1655.         beq    DoCXKill
  1656.         cmp.l    #CXCMD_UNIQUE,d3
  1657.         beq    DoCXAppear
  1658.         cmp.l    #CXCMD_ENABLE,d3
  1659.         beq    DoCXEnable
  1660.         cmp.l    #CXCMD_DISABLE,d3
  1661.         beq    DoCXDisable
  1662.         move.l    #4,d0
  1663.         rts                ;Unknown message
  1664.  
  1665. DoCXKill:    clr.l    d0
  1666.         rts
  1667.  
  1668. DoCXAppear:    tst.l    Window1
  1669.         bne    DoCXAppear_OUT
  1670.         tst.w    DisActive
  1671.         bne    DoCXDisap_OUT
  1672.         clr.l    OptionIconify
  1673.         bsr    OpenWin1
  1674.         bsr    SetModes
  1675.         tst.l    Window1
  1676.         bne    DoCXAppear_OUT
  1677.         sub.l    a0,a0
  1678.         lib    Intuition,DisplayBeep    ;Beep on error
  1679. DoCXAppear_OUT:    move.l    #4,d0
  1680.         rts
  1681.  
  1682. DoDoCXDisappear: bsr    DoCXDisappear
  1683.         bra    Window1IDCMP
  1684.  
  1685. DoCXDisappear:    tst.l    Window1
  1686.         beq    DoCXDisap_OUT
  1687.         tst.w    DisActive
  1688.         bne    DoCXDisap_OUT
  1689.         bsr    CheckModes
  1690.         bsr    CloseWin1
  1691. DoCXDisap_OUT:    move.l    #4,d0
  1692.         rts
  1693.  
  1694. DoCXEnable:    tst.w    DisActive
  1695.         bne    DoCXEnable1
  1696.         bsr    CLITypeOn
  1697. DoCXEnable_OUT:    move.l    #4,d0
  1698.         rts
  1699. DoCXEnable1:    bsr    CXDisable        ;Can't turn on
  1700.         bra    DoCXEnable_OUT
  1701.  
  1702. DoCXDisable:    tst.w    DisActive
  1703.         bne    DoCXDisable1
  1704.         bsr    CLITypeOff
  1705. DoCXDis_OUT:    move.l    #4,d0
  1706.         rts
  1707. DoCXDisable1:    bsr    CXEnable        ;Can't turn off
  1708.         bra    DoCXDis_OUT
  1709.  
  1710. CXEnable:    move.l    CXBroker1,a0
  1711.         move.l    #TRUE,d0
  1712.         lib    Commodities,ActivateCxObj
  1713.         rts
  1714.  
  1715. CXDisable:    move.l    CXBroker1,a0
  1716.         move.l    #FALSE,d0
  1717.         lib    Commodities,ActivateCxObj
  1718.         rts
  1719.  
  1720. DoSetResLo:    bsr    SetResLo
  1721.         bra    Window1IDCMP
  1722.  
  1723. DoSetResHi:    bsr    SetResHi
  1724.         bra    Window1IDCMP
  1725.  
  1726. SetResLo:    bsr    RemVTask1
  1727.         move.b    #RES_LO,PrefsSampRes
  1728.         bsr    AddVTask
  1729.         rts
  1730. SetResHi:    bsr    RemVTask1
  1731.         move.b    #RES_HI,PrefsSampRes
  1732.         bsr    AddVTask
  1733.         rts
  1734.  
  1735. DoSetAccLowest:    bsr    SetAccLowest
  1736.         bra    Window1IDCMP
  1737.  
  1738. DoSetAccLower:    bsr    SetAccLower
  1739.         bra    Window1IDCMP
  1740.  
  1741. DoSetAccLow:    bsr    SetAccLow
  1742.         bra    Window1IDCMP
  1743.  
  1744. DoSetAccNormal:    bsr    SetAccNormal
  1745.         bra    Window1IDCMP
  1746.  
  1747. DoSetAccHigh:    bsr    SetAccHigh
  1748.         bra    Window1IDCMP
  1749.  
  1750. DoSetAccHigher:    bsr    SetAccHigher
  1751.         bra    Window1IDCMP
  1752.  
  1753. DoSetAccEHigher: bsr    SetAccEHigher
  1754.         bra    Window1IDCMP
  1755.  
  1756. DoSetAccMaximum: bsr    SetAccMaximum
  1757.         bra    Window1IDCMP
  1758.  
  1759.  
  1760. SetAccLowest:    move.w    #AccVal1,PrefsScore
  1761.         rts
  1762.  
  1763. SetAccLower:    move.w    #AccVal2,PrefsScore
  1764.         rts
  1765.  
  1766. SetAccLow:    move.w    #AccVal3,PrefsScore
  1767.         rts
  1768.  
  1769. SetAccNormal:    move.w    #AccVal4,PrefsScore
  1770.         rts
  1771.  
  1772. SetAccHigh:    move.w    #AccVal5,PrefsScore
  1773.         rts
  1774.  
  1775. SetAccHigher:    move.w    #AccVal6,PrefsScore
  1776.         rts
  1777.  
  1778. SetAccEHigher:    move.w    #AccVal7,PrefsScore
  1779.         rts
  1780.  
  1781. SetAccMaximum:    move.w    #AccVal8,PrefsScore
  1782.         rts
  1783.  
  1784. DoSetLeft:    bsr    SetLeft
  1785.         bra    Window1IDCMP
  1786.  
  1787. DoSetRight:    bsr    SetRight
  1788.         bra    Window1IDCMP
  1789.  
  1790. DoCTRL_D:    tst.w    DisActive
  1791.         bne    DoCTRL_D_OUT
  1792.         bsr    CLITypeOff
  1793. DoCTRL_D_OUT:    bra    Window1IDCMP
  1794.  
  1795. DoCTRL_E:    tst.w    DisActive
  1796.         bne    DoCTRL_E_OUT
  1797.         bsr    CLITypeOn
  1798. DoCTRL_E_OUT:    bra    Window1IDCMP
  1799.  
  1800. CLITypeOff:    bsr    RemGads
  1801.         move.l    OnOffGad1,a0
  1802.         and.w    #~SELECTED,gg_Flags(a0)
  1803.         move.l    #5625242,d5        ;inform user
  1804.         bsr    RemVTask1
  1805.         bsr    AddGads
  1806.         rts
  1807.  
  1808. CLITypeOn:    bsr    RemGads
  1809.         move.l    OnOffGad1,a0
  1810.         or.w    #SELECTED,gg_Flags(a0)
  1811.         move.l    #5625242,d5        ;inform user
  1812.         bsr    AddVTask1
  1813.         bsr    AddGads
  1814.         rts
  1815.  
  1816. SetLeft:    move.b    #CHANNEL_LEFT,PrefsChannel
  1817.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1818.         beq    SetLeft_OUT
  1819.         bsr    RemVTask1
  1820.         move.l    #CHANNEL_LEFT,d0
  1821.         lib    Voice,PickChannel
  1822.         bsr    AddVTask
  1823. SetLeft_OUT:    rts
  1824.  
  1825. SetRight:    move.b    #CHANNEL_RIGHT,PrefsChannel
  1826.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1827.         beq    SetRight_OUT
  1828.         bsr    RemVTask1
  1829.         move.l    #CHANNEL_RIGHT,d0
  1830.         lib    Voice,PickChannel
  1831.         bsr    AddVTask
  1832. SetRight_OUT:    rts
  1833.  
  1834. DoSetMic:    bsr    SetMic
  1835.         bra    Window1IDCMP
  1836.  
  1837. DoSetLine:    bsr    SetLine
  1838.         bra    Window1IDCMP
  1839.  
  1840. SetMic:        move.b    #INPUT_MIC,PrefsInput
  1841.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1842.         beq    SetMic_OUT
  1843.         bsr    RemVTask1
  1844.         move.l    #INPUT_MIC,d0
  1845.         lib    Voice,PickInput
  1846.         bsr    AddVTask
  1847. SetMic_OUT:    rts
  1848.  
  1849. SetLine:    move.b    #INPUT_LINE,PrefsInput
  1850.         cmp.b    #SAMP_GENERIC,PrefsSampType
  1851.         beq    SetLine_OUT
  1852.         bsr    RemVTask1
  1853.         move.l    #INPUT_LINE,d0
  1854.         lib    Voice,PickInput
  1855.         bsr    AddVTask
  1856. SetLine_OUT:    rts
  1857.  
  1858. DoSetSamp1:    bsr    SetSamp1
  1859.         bra    Window1IDCMP
  1860. DoSetSamp2:    bsr    SetSamp2
  1861.         bra    Window1IDCMP
  1862. DoSetSamp3:    bsr    SetSamp3
  1863.         bra    Window1IDCMP
  1864. DoSetSamp4:    bsr    SetSamp4
  1865.         bra    Window1IDCMP
  1866.  
  1867. SetSamp1:    bsr    RemVTask1
  1868.         move.b    #SAMP_PERFSND,PrefsSampType        ;PerfectSound
  1869.         move.l    #SAMP_PERFSND,d0
  1870.         clr.l    d1
  1871.         lib    Voice,PickSampler
  1872.         bsr    RemGads
  1873.         move.l    GainUGad1,a0
  1874.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1875.         move.l    GainDGad1,a0
  1876.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1877.         bsr    AddGads
  1878.         bsr    AddVTask
  1879.         rts
  1880. SetSamp2:    bsr    RemVTask1
  1881.         move.b    #SAMP_SNDMSTR,PrefsSampType        ;SoundMaster
  1882.         move.l    #SAMP_SNDMSTR,d0
  1883.         clr.l    d1
  1884.         lib    Voice,PickSampler
  1885.         bsr    RemGads
  1886.         move.l    GainUGad1,a0
  1887.         or.w    #GADGDISABLED,gg_Flags(a0)
  1888.         move.l    GainDGad1,a0
  1889.         or.w    #GADGDISABLED,gg_Flags(a0)
  1890.         bsr    AddGads
  1891.         bsr    AddVTask
  1892.         rts
  1893. SetSamp3:    bsr    RemVTask1
  1894.         move.b    #SAMP_DSS8,PrefsSampType        ;DSS8
  1895.         move.l    #SAMP_DSS8,d0
  1896.         clr.l    d1
  1897.         move.b    PrefsGain,d1
  1898.         lib    Voice,PickSampler
  1899.         bsr    RemGads
  1900.         move.l    GainUGad1,a0
  1901.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1902.         move.l    GainDGad1,a0
  1903.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1904.         bsr    AddGads
  1905.         bsr    AddVTask
  1906.         rts
  1907. SetSamp4:    bsr    RemVTask1
  1908.         move.b    #SAMP_GENERIC,PrefsSampType        ;Generic
  1909.         move.l    #SAMP_GENERIC,d0
  1910.         clr.l    d1
  1911.         lib    Voice,PickSampler
  1912.         bsr    RemGads
  1913.         move.l    GainUGad1,a0
  1914.         or.w    #GADGDISABLED,gg_Flags(a0)
  1915.         move.l    GainDGad1,a0
  1916.         or.w    #GADGDISABLED,gg_Flags(a0)
  1917.         bsr    AddGads
  1918.         bsr    AddVTask
  1919.         rts
  1920.  
  1921. DoSetTimerA:    bsr    SetTimerA
  1922.         bra    Window1IDCMP
  1923.  
  1924. DoSetTimerB:    bsr    SetTimerB
  1925.         bra    Window1IDCMP
  1926.  
  1927. SetTimerA:    bsr    RemVTask1
  1928.         move.b    #TIMER_A,PrefsTimer        ;Timer A=1
  1929.         move.l    #TIMER_A,d0
  1930.         lib    Voice,PickTimer
  1931.         bsr    AddVTask
  1932.         rts
  1933.  
  1934. SetTimerB:    bsr    RemVTask1
  1935.         move.b    #TIMER_B,PrefsTimer        ;Timer B=0
  1936.         move.l    #TIMER_B,d0
  1937.         lib    Voice,PickTimer
  1938.         bsr    AddVTask
  1939.         rts
  1940.  
  1941. DoConfirm:    bsr    Confirm
  1942.         bra    Window1IDCMP
  1943.  
  1944. Confirm:    clr.b    PrefsConfirm
  1945.         move.l    mlist,a0            ;Test menu
  1946.         move.l    #ConfirmMenuN,d0
  1947.         lib    Intuition,ItemAddress
  1948.         move.l    d0,a0
  1949.         move.w    $c(a0),d0
  1950.         and.w    #CHECKED,d0
  1951.         cmp.w    #CHECKED,d0
  1952.         bne    Confirm_OUT
  1953.         move.b    #$01,PrefsConfirm
  1954. Confirm_OUT:    rts
  1955.  
  1956. DoSetWake0:    bsr    SetWake0
  1957.         bra    Window1IDCMP
  1958.  
  1959. SetWake0:    move.b    #0,PrefsWake
  1960.         rts
  1961.  
  1962. DoSetWake5:    bsr    SetWake5
  1963.         bra    Window1IDCMP
  1964.  
  1965. SetWake5:    move.b    #5,PrefsWake
  1966.         rts
  1967.  
  1968. DoSetWake10:    bsr    SetWake10
  1969.         bra    Window1IDCMP
  1970.  
  1971. SetWake10:    move.b    #10,PrefsWake
  1972.         rts
  1973.  
  1974. DoSetWake15:    bsr    SetWake15
  1975.         bra    Window1IDCMP
  1976.  
  1977. SetWake15:    move.b    #15,PrefsWake
  1978.         rts
  1979.  
  1980. DoSetWake20:    bsr    SetWake20
  1981.         bra    Window1IDCMP
  1982.  
  1983. SetWake20:    move.b    #20,PrefsWake
  1984.         rts
  1985.  
  1986. ToFront:    tst.l    Window1
  1987.         beq    ToFront_OUT
  1988.         move.l    Window1,a0
  1989.         lib    Intuition,WindowToFront
  1990. ToFront_OUT:    rts
  1991.  
  1992. ToBack:        tst.l    Window
  1993.         beq    ToBack_OUT
  1994.         move.l    Window1,a0
  1995.         lib    Intuition,WindowToBack
  1996. ToBack_OUT:    rts
  1997.  
  1998. Zoom:        tst.l    Window1
  1999.         beq    Zoom_OUT
  2000.         move.l    Window1,a0
  2001.         lib    Intuition,ZipWindow
  2002. Zoom_OUT:    rts
  2003.  
  2004. DoLoad:        bsr    Load            ;RemVTask1 in Load
  2005.         bsr    AddVTask
  2006.         move.l    #5,d1
  2007.         lib    Dos,Delay
  2008.         bra    ActivateGads
  2009.  
  2010. DoDataLoad:    bsr    RemGads                ;RemVTask1 in Load
  2011.         bsr    Load2.1
  2012.         bsr    AddVTask
  2013.         bsr    AddGads            ;Keep Add/RemGads (Load2.1)
  2014.         move.l    #5,d1
  2015.         lib    Dos,Delay
  2016.         bra    Window1IDCMP
  2017.  
  2018. DoOnOff:    move.l    #5625242,d5        ;inform user
  2019.         bsr    AddVTask        ;one or the other
  2020.         bsr    RemVTask        ;will respond
  2021.         bra    Window1IDCMP
  2022.  
  2023. DoGainUp:    bsr    GainUp
  2024.         bra    Window1IDCMP
  2025. DoGainDown:    bsr    GainDown
  2026.         bra    Window1IDCMP
  2027.  
  2028. GainUp:        lib    Voice,GainUp
  2029.         cmp.b    #SAMP_DSS8,PrefsSampType
  2030.         bne    GainUp_OUT
  2031.         lib    Voice,WhatGain
  2032.         move.b    d0,PrefsGain
  2033.         move.l    d0,GainPointer
  2034.  
  2035.         tst.l    Window1
  2036.         beq    GainUp_OUT
  2037.         move.l    GainGad1,a0
  2038.         move.l    Window1,a1
  2039.         sub.l    a2,a2
  2040.         lea.l    GainGadTagList,a3
  2041.         lib    GadTools,GT_SetGadgetAttrsA
  2042. GainUp_OUT:    rts
  2043.  
  2044. GainDown:    lib    Voice,GainDown
  2045.         cmp.b    #SAMP_DSS8,PrefsSampType
  2046.         bne    GainDown_OUT
  2047.         lib    Voice,WhatGain
  2048.         move.b    d0,PrefsGain
  2049.         move.l    d0,GainPointer
  2050.  
  2051.         tst.l    Window1
  2052.         beq    GainDown_OUT
  2053.         move.l    GainGad1,a0
  2054.         move.l    Window1,a1
  2055.         sub.l    a2,a2
  2056.         lea.l    GainGadTagList,a3
  2057.         lib    GadTools,GT_SetGadgetAttrsA
  2058. GainDown_OUT:    rts
  2059.  
  2060. ActivateGads:    tst.l    Window1
  2061.         beq    ActivateGs_OUT
  2062.         move.l    DatStrGad1,a0
  2063.         move.l    Window1,a1
  2064.         sub.l    a2,a2
  2065.         lib    Intuition,ActivateGadget
  2066. ActivateGs_OUT:    bra    Window1IDCMP
  2067.  
  2068. ActGad:        tst.l    Window1
  2069.         beq    ActGad_OUT
  2070.         move.l    DatStrGad1,a0
  2071.         move.l    Window1,a1
  2072.         sub.l    a2,a2
  2073.         lib    Intuition,ActivateGadget
  2074. ActGad_OUT:    rts
  2075.  
  2076. ActivateGads2:    cmp.w    #55,$26(a5)
  2077.         beq    Get
  2078.         cmp.w    #1,$26(a5)
  2079.         beq    Learn
  2080.         cmp.w    #2,$26(a5)
  2081.         bne    Window2IDCMP
  2082.         cmp.l    #$00,(a5)
  2083.         beq    ActivateGads2.01
  2084.         move.l    (a5),a0
  2085.         move.l    StrGad20,a1
  2086.         cmp.l    a5,a1
  2087.         bne    ActivateGads2.1
  2088. ActivateGads2.01: move.l StrGad1,a0
  2089. ActivateGads2.1: move.l Window2,a1
  2090.         sub.l    a2,a2
  2091.         lib    Intuition,ActivateGadget
  2092.         bra    Window2IDCMP
  2093.  
  2094. ActGad2:    move.l    StrGad1,a0
  2095.         move.l    Window2,a1
  2096.         sub.l    a2,a2
  2097.         lib    Intuition,ActivateGadget
  2098.         rts
  2099.  
  2100. ActGad3:    move.l    StrGad21,a0
  2101.         move.l    Window3,a1
  2102.         sub.l    a2,a2
  2103.         lib    Intuition,ActivateGadget
  2104.         rts
  2105.  
  2106. ActivateGads4:    cmp.w    #55,$26(a5)
  2107.         beq    Get2
  2108.         cmp.w    #2,$26(a5)
  2109.         bne    Window4IDCMP
  2110.         cmp.l    #$00,(a5)
  2111.         beq    ActivateGads4.01
  2112.         move.l    (a5),a0
  2113.         move.l    StrGad30,a1
  2114.         cmp.l    a5,a1
  2115.         bne    ActivateGads4.1
  2116. ActivateGads4.01: move.l StrGad22,a0
  2117. ActivateGads4.1: move.l Window4,a1
  2118.         sub.l    a2,a2
  2119.         lib    Intuition,ActivateGadget
  2120.         bra    Window4IDCMP
  2121.  
  2122. ActGad4:    move.l    StrGad22,a0
  2123.         move.l    Window4,a1
  2124.         sub.l    a2,a2
  2125.         lib    Intuition,ActivateGadget
  2126.         rts
  2127.  
  2128. Learn:        move.w    Page,d0
  2129.         mulu.w    #NUMGADS,d0
  2130.         move.l    $22(a5),a0
  2131.         move.l    (a0),a0
  2132.         cmp.l    StrGadBuf1,a0
  2133.         bne    Learn1
  2134.         add.w    #1,d0
  2135.         bra    Learn10
  2136. Learn1:        cmp.l    StrGadBuf3,a0
  2137.         bne    Learn2
  2138.         add.w    #2,d0
  2139.         bra    Learn10
  2140. Learn2:        cmp.l    StrGadBuf5,a0
  2141.         bne    Learn3
  2142.         add.w    #3,d0
  2143.         bra    Learn10
  2144. Learn3:        cmp.l    StrGadBuf7,a0
  2145.         bne    Learn4
  2146.         add.w    #4,d0
  2147.         bra    Learn10
  2148. Learn4:        cmp.l    StrGadBuf9,a0
  2149.         bne    Learn5
  2150.         add.w    #5,d0
  2151.         bra    Learn10
  2152. Learn5:        cmp.l    StrGadBuf11,a0
  2153.         bne    Learn6
  2154.         add.w    #6,d0
  2155.         bra    Learn10
  2156. Learn6:        cmp.l    StrGadBuf13,a0
  2157.         bne    Learn7
  2158.         add.w    #7,d0
  2159.         bra    Learn10
  2160. Learn7:        cmp.l    StrGadBuf15,a0
  2161.         bne    Learn8
  2162.         add.w    #8,d0
  2163.         bra    Learn10
  2164. Learn8:        cmp.l    StrGadBuf17,a0
  2165.         bne    Learn9
  2166.         add.w    #9,d0
  2167.         bra    Learn10
  2168. Learn9:        cmp.l    StrGadBuf19,a0
  2169.         bne    Learn10
  2170.         add.w    #10,d0
  2171.  
  2172. Learn10:    sub.w    #1,d0
  2173.         lea.l    MapBuffer,a0
  2174.         move.l    $22(a5),a1
  2175.         move.l    (a1),a1
  2176.         sub.l    a2,a2        ;screen
  2177.         move.l    #220,d1
  2178.         move.l    #42,d2
  2179.         lib    Voice,Learn
  2180.         move.l    (a5),a0
  2181.         bra    ActivateGads2.1
  2182.  
  2183. Load:        bsr    RemVTask1
  2184.  
  2185.         move.l    FromFile,d1        ;If set to something else
  2186.         bne    Load1
  2187.         lea.l    PrefsName,a0
  2188.         move.l    a0,d1
  2189. Load1:        move.l    #MODE_OLDFILE,d2
  2190.         lib    Dos,Open
  2191.         move.l    d0,PrefsFile
  2192.         beq    Load_ERR1
  2193.  
  2194.         move.l    PrefsFile,d1
  2195.         lea.l    Prefs,a0
  2196.         move.l    a0,d2
  2197.         move.l    #4,d3
  2198.         lib    Dos,Read
  2199.         cmp.l    #4,d0
  2200.         bne    Load_ERR2
  2201.  
  2202.         cmp.l    #VSFileVersion,Prefs
  2203.         bne    Load_ERR3
  2204.  
  2205.         move.l    PrefsFile,d1
  2206.         add.l    #4,d2
  2207.         move.l    #PrefsSize-4,d3
  2208.         lib    Dos,Read
  2209.         cmp.l    #PrefsSize-4,d0
  2210.         bne    Load_ERR2
  2211.  
  2212. Load2:        bsr    SetModes        ;fixes startup datafile bug
  2213. Load2.1:    move.l    DatStrGadBuf1,d1    ;jump here to load data file
  2214.         move.l    #MODE_OLDFILE,d2
  2215.         lib    Dos,Open
  2216.         move.l    d0,DataFile
  2217.         beq    Load_ERR1.1
  2218.  
  2219.         move.l    DataFile,d1
  2220.         lea.l    MapBuffer,a0
  2221.         move.l    a0,d2
  2222.         move.l    #DataSize,d3
  2223.         lib    Dos,Read
  2224.         cmp.l    #DataSize,d0
  2225.         bne    Load_ERR4
  2226.  
  2227.         move.w    #1,Saved
  2228.  
  2229. Load_OUT:    move.l    DataFile,d1
  2230.         beq    Load_OUT0.1
  2231.         lib    Dos,Close
  2232.         clr.l    DataFile
  2233. Load_OUT0.1:    move.l    PrefsFile,d1
  2234.         beq    Load_OUT1
  2235.         lib    Dos,Close
  2236.         clr.l    PrefsFile
  2237.  
  2238. Load_OUT1:    rts
  2239.  
  2240. Load_ERR1:    lea.l    File_ERRTxt1,a1
  2241.         sub.l    a2,a2
  2242.         lea.l    OKTxt,a3
  2243.         bsr    DoAutoRequest
  2244.         bra    Load2
  2245.  
  2246. Load_ERR1.1:    lea.l    File_ERRTxt4,a1
  2247.         sub.l    a2,a2
  2248.         lea.l    OKTxt,a3
  2249.         bsr    DoAutoRequest
  2250.         bra    Load_OUT
  2251.  
  2252. Load_ERR2:    lea.l    File_ERRTxt2,a1
  2253.         sub.l    a2,a2
  2254.         lea.l    OKTxt,a3
  2255.         bsr    DoAutoRequest
  2256.         bra    Load2
  2257.  
  2258. Load_ERR3:    lea.l    File_ERRTxt3,a1
  2259.         sub.l    a2,a2
  2260.         lea.l    OKTxt,a3
  2261.         bsr    DoAutoRequest
  2262.         bra    Load2
  2263.  
  2264. Load_ERR4:    lea.l    File_ERRTxt2,a1
  2265.         sub.l    a2,a2
  2266.         lea.l    OKTxt,a3
  2267.         bsr    DoAutoRequest
  2268.         bra    Load_OUT
  2269.  
  2270. Save:        bsr    CheckModes
  2271.  
  2272.         move.l    FromFile,d1        ;If set to something else
  2273.         bne    Save1
  2274.         lea.l    PrefsName,a0
  2275.         move.l    a0,d1
  2276. Save1:        move.l    #MODE_NEWFILE,d2
  2277.         lib    Dos,Open
  2278.         move.l    d0,PrefsFile
  2279.         beq    Save_ERR1
  2280.  
  2281.         move.l    #VSFileVersion,Prefs
  2282.  
  2283.         move.l    PrefsFile,d1
  2284.         lea.l    Prefs,a0
  2285.         move.l    a0,d2
  2286.         move.l    #PrefsSize,d3
  2287.         lib    Dos,Write
  2288.         cmp.l    #PrefsSize,d0
  2289.         bne    Save_ERR2
  2290.  
  2291. Save2:        move.l    DatStrGadBuf1,d1
  2292.         move.l    #MODE_NEWFILE,d2
  2293.         lib    Dos,Open
  2294.         move.l    d0,DataFile
  2295.         beq    Save_ERR1.1
  2296.  
  2297.         move.l    DataFile,d1
  2298.         lea.l    MapBuffer,a0
  2299.         move.l    a0,d2
  2300.         move.l    #DataSize,d3
  2301.         lib    Dos,Write
  2302.         cmp.l    #DataSize,d0
  2303.         bne    Save_ERR2
  2304.  
  2305.         move.w    #1,Saved
  2306.  
  2307. Save_OUT:    move.l    DataFile,d1
  2308.         beq    Save_OUT0.1
  2309.         lib    Dos,Close
  2310.         clr.l    DataFile
  2311. Save_OUT0.1:    move.l    PrefsFile,d1
  2312.         beq    Save_OUT1
  2313.         lib    Dos,Close
  2314.         clr.l    PrefsFile
  2315. Save_OUT1:    bra    ActivateGads
  2316.  
  2317. Save_ERR1:    lea.l    File_ERRTxt1,a1
  2318.         move.l    #$00,a2
  2319.         lea.l    OKTxt,a3
  2320.         bsr    DoAutoRequest
  2321.         clr.w    Saved
  2322.         bra    Save2
  2323.  
  2324. Save_ERR1.1:    lea.l    File_ERRTxt4,a1
  2325.         move.l    #$00,a2
  2326.         lea.l    OKTxt,a3
  2327.         bsr    DoAutoRequest
  2328.         clr.w    Saved
  2329.         bra    Save_OUT
  2330.  
  2331. Save_ERR2:    lea.l    File_ERRTxt2,a1
  2332.         move.l    #$00,a2
  2333.         lea.l    OKTxt,a3
  2334.         bsr    DoAutoRequest
  2335.         clr.w    Saved
  2336.         bra    Save_OUT
  2337.  
  2338. About:        move.w    #1,DisActive
  2339.         bsr    RemVTask1
  2340.         bsr    SleepPointer
  2341.         bsr    MenusOff
  2342.         bsr    RemGads
  2343.  
  2344.         move.l    Window1,a0
  2345.         lea.l    AboutTxt1,a1
  2346.         sub.l    a2,a2        ;positive text
  2347.         lea.l    OKTxt,a3    ;a bit the wrong way around but...
  2348.         clr.l    d0
  2349.         clr.l    d1
  2350.         move.l    #320,d2
  2351.         move.l    #$50,d3
  2352.         lib    Intuition,AutoRequest
  2353.         clr.w    DisActive
  2354.         bsr    AddGads
  2355.         bsr    MenusOn
  2356.         bsr    NormalPointer
  2357.         bsr    AddVTask
  2358.         bra    Window1IDCMP
  2359.  
  2360. ;This is an emergency exit.
  2361.  
  2362. Break:        lea.l    BreakText1,a0
  2363.         bsr    Printer
  2364.         clr.l    d0
  2365.         rts
  2366.  
  2367. AddVTask:    tst.l    Window1            ;BUG: Turns on anyway
  2368.         beq    AddVTask1        ;Window not open
  2369.         move.l    OnOffGad1,a0
  2370.         move.w    gg_Flags(a0),d0
  2371.         and.w    #SELECTED,d0
  2372.         cmp.w    #SELECTED,d0
  2373.         bne    AddVTask_OUT        ;Already active
  2374. AddVTask1:    tst.w    TaskOn
  2375.         bne    AddVTask_OUT
  2376.         lea.l    MapBuffer,a0
  2377.         move.l    VoicePort,a1
  2378.         clr.l    d0
  2379.         clr.l    d1
  2380.         move.w    #VocabSIZE,d0
  2381.         move.b    PrefsSampRes,d1
  2382.         lib    Voice,AddVoiceTask
  2383.  
  2384.         move.l    PrefsPriority,d0
  2385.         lib    Voice,SetVoicePri
  2386.  
  2387.         move.w    #1,TaskOn
  2388.         move.b    #1,PrefsOnOff
  2389.  
  2390.         cmp.l    #5625242,d5
  2391.         bne    AddVTask_OUT
  2392.         lea.l    TaskOnText1,a0
  2393.         bsr    GetLength
  2394.         bsr    Inform
  2395.         bsr    CXEnable
  2396.         clr.l    d5
  2397. AddVTask_OUT:    rts
  2398.  
  2399. RemVTask:    tst.l    Window1            ;BUG: Turns off anyway?
  2400.         beq    RemVTask1        ;Window not open
  2401.         move.l    #5625242,d5
  2402.         move.l    OnOffGad1,a0
  2403.         move.w    gg_Flags(a0),d0
  2404.         and.w    #SELECTED,d0
  2405.         cmp.w    #SELECTED,d0
  2406.         beq    RemVTask_OUT
  2407. RemVTask1:    tst.w    TaskOn
  2408.         beq    RemVTask_OUT
  2409.  
  2410.         lib    Exec,Forbid
  2411.         bsr    C3GetMsg1        ;Clear messages
  2412.         lib    Exec,Permit
  2413.         lib    Voice,RemVoiceTask
  2414.  
  2415.         clr.w    TaskOn
  2416.         clr.b    PrefsOnOff
  2417.         cmp.l    #5625242,d5
  2418.         bne    RemVTask_OUT
  2419.         lea.l    TaskOffText1,a0
  2420.         bsr    GetLength
  2421.         bsr    Inform
  2422.         bsr    CXDisable
  2423. RemVTask_OUT:    rts
  2424.  
  2425. SetModes:    tst.l    Window1
  2426.         beq    SetModes_OUT2
  2427.  
  2428.         bsr    RemGads
  2429.  
  2430.         clr.l    GainPointer
  2431.         move.b    PrefsGain,GainPointer+3
  2432.  
  2433.         move.l    OnOffGad1,a0
  2434.         and.w    #~SELECTED,gg_Flags(a0)
  2435.  
  2436.         move.l    OnOffGad1,a0
  2437.         tst.b    PrefsOnOff
  2438.         beq    SetModes1
  2439.         or.w    #SELECTED,gg_Flags(a0)
  2440.  
  2441. SetModes1:    move.l    mlist,a0            ;UnCheck SampType1
  2442.         move.l    #Samp1MenuN,d0
  2443.         lib    Intuition,ItemAddress
  2444.         move.l    d0,a0
  2445.         and.w    #~CHECKED,$c(a0)
  2446.  
  2447.         move.l    mlist,a0            ;UnCheck SampType2
  2448.         move.l    #Samp2MenuN,d0
  2449.         lib    Intuition,ItemAddress
  2450.         move.l    d0,a0
  2451.         and.w    #~CHECKED,$c(a0)
  2452.  
  2453.         move.l    mlist,a0            ;UnCheck SampType3
  2454.         move.l    #Samp3MenuN,d0
  2455.         lib    Intuition,ItemAddress
  2456.         move.l    d0,a0
  2457.         and.w    #~CHECKED,$c(a0)
  2458.  
  2459.         move.l    mlist,a0            ;UnCheck SampType4
  2460.         move.l    #Samp4MenuN,d0
  2461.         lib    Intuition,ItemAddress
  2462.         move.l    d0,a0
  2463.         and.w    #~CHECKED,$c(a0)
  2464.  
  2465.         cmp.b    #SAMP_PERFSND,PrefsSampType        ;PerfectSound
  2466.         bne    SetModes2
  2467.         move.l    mlist,a0
  2468.         move.l    #Samp1MenuN,d0
  2469.         lib    Intuition,ItemAddress
  2470.         move.l    d0,a0
  2471.         or.w    #CHECKED,$c(a0)
  2472.         move.l    GainUGad1,a0
  2473.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2474.         move.l    GainDGad1,a0
  2475.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2476.  
  2477. SetModes2:    cmp.b    #SAMP_SNDMSTR,PrefsSampType        ;SoundMaster
  2478.         bne    SetModes2.1
  2479.         move.l    mlist,a0
  2480.         move.l    #Samp2MenuN,d0
  2481.         lib    Intuition,ItemAddress
  2482.         move.l    d0,a0
  2483.         or.w    #CHECKED,$c(a0)
  2484.         move.l    GainUGad1,a0
  2485.         or.w    #GADGDISABLED,gg_Flags(a0)
  2486.         move.l    GainDGad1,a0
  2487.         or.w    #GADGDISABLED,gg_Flags(a0)
  2488.  
  2489. SetModes2.1:    cmp.b    #SAMP_DSS8,PrefsSampType        ;DSS 8
  2490.         bne    SetModes2.2
  2491.         move.l    mlist,a0
  2492.         move.l    #Samp3MenuN,d0
  2493.         lib    Intuition,ItemAddress
  2494.         move.l    d0,a0
  2495.         or.w    #CHECKED,$c(a0)
  2496.         move.l    GainUGad1,a0
  2497.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2498.         move.l    GainDGad1,a0
  2499.         and.w    #~GADGDISABLED,gg_Flags(a0)
  2500.  
  2501. SetModes2.2:    cmp.b    #SAMP_GENERIC,PrefsSampType        ;Generic
  2502.         bne    SetModes3
  2503.         move.l    mlist,a0
  2504.         move.l    #Samp4MenuN,d0
  2505.         lib    Intuition,ItemAddress
  2506.         move.l    d0,a0
  2507.         or.w    #CHECKED,$c(a0)
  2508.         move.l    GainUGad1,a0
  2509.         or.w    #GADGDISABLED,gg_Flags(a0)
  2510.         move.l    GainDGad1,a0
  2511.         or.w    #GADGDISABLED,gg_Flags(a0)
  2512.  
  2513. SetModes3:    move.l    mlist,a0            ;UnCheck ResLo
  2514.         move.l    #ResLoMenuN,d0
  2515.         lib    Intuition,ItemAddress
  2516.         move.l    d0,a0
  2517.         and.w    #~CHECKED,$c(a0)
  2518.  
  2519.         move.l    mlist,a0            ;UnCheck ResHi
  2520.         move.l    #ResHiMenuN,d0
  2521.         lib    Intuition,ItemAddress
  2522.         move.l    d0,a0
  2523.         and.w    #~CHECKED,$c(a0)
  2524.  
  2525.         cmp.b    #1,PrefsSampRes
  2526.         bne    SetModes4
  2527.         move.l    mlist,a0
  2528.         move.l    #ResLoMenuN,d0
  2529.         lib    Intuition,ItemAddress
  2530.         move.l    d0,a0
  2531.         or.w    #CHECKED,$c(a0)
  2532.  
  2533. SetModes4:    tst.b    PrefsSampRes
  2534.         bne    SetModes5
  2535.         move.l    mlist,a0
  2536.         move.l    #ResHiMenuN,d0
  2537.         lib    Intuition,ItemAddress
  2538.         move.l    d0,a0
  2539.         or.w    #CHECKED,$c(a0)
  2540.  
  2541. SetModes5:    move.l    mlist,a0            ;UnCheck Lowest
  2542.         move.l    #Acc1MenuN,d0
  2543.         lib    Intuition,ItemAddress
  2544.         move.l    d0,a0
  2545.         and.w    #~CHECKED,$c(a0)
  2546.  
  2547.         move.l    mlist,a0            ;UnCheck Lower
  2548.         move.l    #Acc2MenuN,d0
  2549.         lib    Intuition,ItemAddress
  2550.         move.l    d0,a0
  2551.         and.w    #~CHECKED,$c(a0)
  2552.  
  2553.         move.l    mlist,a0            ;UnCheck Low
  2554.         move.l    #Acc3MenuN,d0
  2555.         lib    Intuition,ItemAddress
  2556.         move.l    d0,a0
  2557.         and.w    #~CHECKED,$c(a0)
  2558.  
  2559.         move.l    mlist,a0            ;UnCheck Normal
  2560.         move.l    #Acc4MenuN,d0
  2561.         lib    Intuition,ItemAddress
  2562.         move.l    d0,a0
  2563.         and.w    #~CHECKED,$c(a0)
  2564.  
  2565.         move.l    mlist,a0            ;UnCheck High
  2566.         move.l    #Acc5MenuN,d0
  2567.         lib    Intuition,ItemAddress
  2568.         move.l    d0,a0
  2569.         and.w    #~CHECKED,$c(a0)
  2570.  
  2571.         move.l    mlist,a0            ;UnCheck Higher
  2572.         move.l    #Acc6MenuN,d0
  2573.         lib    Intuition,ItemAddress
  2574.         move.l    d0,a0
  2575.         and.w    #~CHECKED,$c(a0)
  2576.  
  2577.         move.l    mlist,a0            ;UnCheck Even higher
  2578.         move.l    #Acc7MenuN,d0
  2579.         lib    Intuition,ItemAddress
  2580.         move.l    d0,a0
  2581.         and.w    #~CHECKED,$c(a0)
  2582.  
  2583.         move.l    mlist,a0            ;UnCheck Maximum
  2584.         move.l    #Acc8MenuN,d0
  2585.         lib    Intuition,ItemAddress
  2586.         move.l    d0,a0
  2587.         and.w    #~CHECKED,$c(a0)
  2588.  
  2589.         cmp.w    #AccVal1,PrefsScore
  2590.         bne    SetModes7
  2591.         move.l    mlist,a0
  2592.         move.l    #Acc1MenuN,d0
  2593.         lib    Intuition,ItemAddress
  2594.         move.l    d0,a0
  2595.         or.w    #CHECKED,$c(a0)
  2596.  
  2597. SetModes7:    cmp.w    #AccVal2,PrefsScore
  2598.         bne    SetModes8
  2599.         move.l    mlist,a0
  2600.         move.l    #Acc2MenuN,d0
  2601.         lib    Intuition,ItemAddress
  2602.         move.l    d0,a0
  2603.         or.w    #CHECKED,$c(a0)
  2604.  
  2605. SetModes8:    cmp.w    #AccVal3,PrefsScore
  2606.         bne    SetModes9
  2607.         move.l    mlist,a0
  2608.         move.l    #Acc3MenuN,d0
  2609.         lib    Intuition,ItemAddress
  2610.         move.l    d0,a0
  2611.         or.w    #CHECKED,$c(a0)
  2612.  
  2613. SetModes9:    cmp.w    #AccVal4,PrefsScore
  2614.         bne    SetModes10
  2615.         move.l    mlist,a0
  2616.         move.l    #Acc4MenuN,d0
  2617.         lib    Intuition,ItemAddress
  2618.         move.l    d0,a0
  2619.         or.w    #CHECKED,$c(a0)
  2620.  
  2621. SetModes10:    cmp.w    #AccVal5,PrefsScore
  2622.         bne    SetModes11
  2623.         move.l    mlist,a0
  2624.         move.l    #Acc5MenuN,d0
  2625.         lib    Intuition,ItemAddress
  2626.         move.l    d0,a0
  2627.         or.w    #CHECKED,$c(a0)
  2628.  
  2629. SetModes11:    cmp.w    #AccVal6,PrefsScore
  2630.         bne    SetModes12
  2631.         move.l    mlist,a0
  2632.         move.l    #Acc6MenuN,d0
  2633.         lib    Intuition,ItemAddress
  2634.         move.l    d0,a0
  2635.         or.w    #CHECKED,$c(a0)
  2636.  
  2637. SetModes12:    cmp.w    #AccVal7,PrefsScore
  2638.         bne    SetModes13
  2639.         move.l    mlist,a0
  2640.         move.l    #Acc7MenuN,d0
  2641.         lib    Intuition,ItemAddress
  2642.         move.l    d0,a0
  2643.         or.w    #CHECKED,$c(a0)
  2644.  
  2645. SetModes13:    cmp.w    #AccVal8,PrefsScore
  2646.         bne    SetModes14
  2647.         move.l    mlist,a0
  2648.         move.l    #Acc8MenuN,d0
  2649.         lib    Intuition,ItemAddress
  2650.         move.l    d0,a0
  2651.         or.w    #CHECKED,$c(a0)
  2652.  
  2653. SetModes14:    move.l    mlist,a0            ;UnCheck Left
  2654.         move.l    #Chan1MenuN,d0
  2655.         lib    Intuition,ItemAddress
  2656.         move.l    d0,a0
  2657.         and.w    #~CHECKED,$c(a0)
  2658.  
  2659.         move.l    mlist,a0            ;UnCheck Right
  2660.         move.l    #Chan2MenuN,d0
  2661.         lib    Intuition,ItemAddress
  2662.         move.l    d0,a0
  2663.         and.w    #~CHECKED,$c(a0)
  2664.  
  2665.         move.l    mlist,a0            ;UnCheck Mic
  2666.         move.l    #Input1MenuN,d0
  2667.         lib    Intuition,ItemAddress
  2668.         move.l    d0,a0
  2669.         and.w    #~CHECKED,$c(a0)
  2670.  
  2671.         move.l    mlist,a0            ;UnCheck Line
  2672.         move.l    #Input2MenuN,d0
  2673.         lib    Intuition,ItemAddress
  2674.         move.l    d0,a0
  2675.         and.w    #~CHECKED,$c(a0)
  2676.  
  2677.         cmp.b    #CHANNEL_LEFT,PrefsChannel
  2678.         bne    SetModes15
  2679.         move.l    mlist,a0
  2680.         move.l    #Chan1MenuN,d0
  2681.         lib    Intuition,ItemAddress
  2682.         move.l    d0,a0
  2683.         or.w    #CHECKED,$c(a0)
  2684.  
  2685. SetModes15:    cmp.b    #CHANNEL_RIGHT,PrefsChannel
  2686.         bne    SetModes16
  2687.         move.l    mlist,a0
  2688.         move.l    #Chan2MenuN,d0
  2689.         lib    Intuition,ItemAddress
  2690.         move.l    d0,a0
  2691.         or.w    #CHECKED,$c(a0)
  2692.  
  2693. SetModes16:    cmp.b    #INPUT_MIC,PrefsInput
  2694.         bne    SetModes17
  2695.         move.l    mlist,a0
  2696.         move.l    #Input1MenuN,d0
  2697.         lib    Intuition,ItemAddress
  2698.         move.l    d0,a0
  2699.         or.w    #CHECKED,$c(a0)
  2700.  
  2701. SetModes17:    cmp.b    #INPUT_LINE,PrefsInput
  2702.         bne    SetModes18
  2703.         move.l    mlist,a0
  2704.         move.l    #Input2MenuN,d0
  2705.         lib    Intuition,ItemAddress
  2706.         move.l    d0,a0
  2707.         or.w    #CHECKED,$c(a0)
  2708.  
  2709. SetModes18:    move.l    mlist,a0            ;UnCheck Timer A
  2710.         move.l    #Timer1MenuN,d0
  2711.         lib    Intuition,ItemAddress
  2712.         move.l    d0,a0
  2713.         and.w    #~CHECKED,$c(a0)
  2714.  
  2715.         move.l    mlist,a0            ;UnCheck Timer B
  2716.         move.l    #Timer2MenuN,d0
  2717.         lib    Intuition,ItemAddress
  2718.         move.l    d0,a0
  2719.         and.w    #~CHECKED,$c(a0)
  2720.  
  2721.         cmp.b    #TIMER_A,PrefsTimer
  2722.         bne    SetModes19
  2723.         move.l    mlist,a0
  2724.         move.l    #Timer1MenuN,d0
  2725.         lib    Intuition,ItemAddress
  2726.         move.l    d0,a0
  2727.         or.w    #CHECKED,$c(a0)
  2728.  
  2729. SetModes19:    cmp.b    #TIMER_B,PrefsTimer
  2730.         bne    SetModes20
  2731.         move.l    mlist,a0
  2732.         move.l    #Timer2MenuN,d0
  2733.         lib    Intuition,ItemAddress
  2734.         move.l    d0,a0
  2735.         or.w    #CHECKED,$c(a0)
  2736.  
  2737. SetModes20:    move.l    mlist,a0            ;UnCheck Confirm
  2738.         move.l    #ConfirmMenuN,d0
  2739.         lib    Intuition,ItemAddress
  2740.         move.l    d0,a0
  2741.         and.w    #~CHECKED,$c(a0)
  2742.  
  2743.         cmp.b    #1,PrefsConfirm
  2744.         bne    SetModes20.1
  2745.         move.l    mlist,a0
  2746.         move.l    #ConfirmMenuN,d0
  2747.         lib    Intuition,ItemAddress
  2748.         move.l    d0,a0
  2749.         or.w    #CHECKED,$c(a0)
  2750.  
  2751. SetModes20.1:    move.l    mlist,a0            ;UnCheck Wake0
  2752.         move.l    #Wake1MenuN,d0
  2753.         lib    Intuition,ItemAddress
  2754.         move.l    d0,a0
  2755.         and.w    #~CHECKED,$c(a0)
  2756.  
  2757.         move.l    mlist,a0            ;UnCheck Wake5
  2758.         move.l    #Wake2MenuN,d0
  2759.         lib    Intuition,ItemAddress
  2760.         move.l    d0,a0
  2761.         and.w    #~CHECKED,$c(a0)
  2762.  
  2763.         move.l    mlist,a0            ;UnCheck Wake10
  2764.         move.l    #Wake3MenuN,d0
  2765.         lib    Intuition,ItemAddress
  2766.         move.l    d0,a0
  2767.         and.w    #~CHECKED,$c(a0)
  2768.  
  2769.         move.l    mlist,a0            ;UnCheck Wake15
  2770.         move.l    #Wake4MenuN,d0
  2771.         lib    Intuition,ItemAddress
  2772.         move.l    d0,a0
  2773.         and.w    #~CHECKED,$c(a0)
  2774.  
  2775.         move.l    mlist,a0            ;UnCheck Wake20
  2776.         move.l    #Wake5MenuN,d0
  2777.         lib    Intuition,ItemAddress
  2778.         move.l    d0,a0
  2779.         and.w    #~CHECKED,$c(a0)
  2780.  
  2781.         cmp.b    #0,PrefsWake
  2782.         bne    SetModes20.2
  2783.         move.l    mlist,a0
  2784.         move.l    #Wake1MenuN,d0
  2785.         lib    Intuition,ItemAddress
  2786.         move.l    d0,a0
  2787.         or.w    #CHECKED,$c(a0)
  2788.  
  2789. SetModes20.2:    cmp.b    #5,PrefsWake
  2790.         bne    SetModes20.3
  2791.         move.l    mlist,a0
  2792.         move.l    #Wake2MenuN,d0
  2793.         lib    Intuition,ItemAddress
  2794.         move.l    d0,a0
  2795.         or.w    #CHECKED,$c(a0)
  2796.  
  2797. SetModes20.3:    cmp.b    #10,PrefsWake
  2798.         bne    SetModes20.4
  2799.         move.l    mlist,a0
  2800.         move.l    #Wake3MenuN,d0
  2801.         lib    Intuition,ItemAddress
  2802.         move.l    d0,a0
  2803.         or.w    #CHECKED,$c(a0)
  2804.  
  2805. SetModes20.4:    cmp.b    #15,PrefsWake
  2806.         bne    SetModes20.5
  2807.         move.l    mlist,a0
  2808.         move.l    #Wake4MenuN,d0
  2809.         lib    Intuition,ItemAddress
  2810.         move.l    d0,a0
  2811.         or.w    #CHECKED,$c(a0)
  2812.  
  2813. SetModes20.5:    cmp.b    #20,PrefsWake
  2814.         bne    SetModes20.9
  2815.         move.l    mlist,a0
  2816.         move.l    #Wake5MenuN,d0
  2817.         lib    Intuition,ItemAddress
  2818.         move.l    d0,a0
  2819.         or.w    #CHECKED,$c(a0)
  2820.  
  2821. SetModes20.9:    lea.l    DatBuffer,a0
  2822.         move.l    DatStrGadBuf1,a1
  2823.         move.l    #32,d0
  2824.         lib    Exec,CopyMem
  2825.  
  2826.         tst.l    Window1
  2827.         beq    SetModes21
  2828.         tst.l    OptionIconify
  2829.         beq    SetModes21
  2830.         move.l    Window1,a0
  2831.         move.w    Alt1XPos,d0
  2832.         move.w    Alt1YPos,d1
  2833.         move.w    wd_Width(a0),d2
  2834.         move.w    wd_Height(a0),d3
  2835.         lib    Intuition,ChangeWindowBox
  2836.         bra    SetModes22
  2837. SetModes21:    move.l    Alt1XPos,NewWindow1
  2838.  
  2839. ;None of the below are allowed to assume the window is open, it might not
  2840. ;be!
  2841.  
  2842. SetModes22:    cmp.b    #SAMP_PERFSND,PrefsSampType        ;PerfectSound
  2843.         bne    SetModes23
  2844.  
  2845.         move.l    #SAMP_PERFSND,d0
  2846.         clr.l    d1
  2847.         lib    Voice,PickSampler
  2848.  
  2849. SetModes23:    cmp.b    #SAMP_SNDMSTR,PrefsSampType        ;SoundMaster
  2850.         bne    SetModes24
  2851.  
  2852.         move.l    #SAMP_SNDMSTR,d0
  2853.         clr.l    d1
  2854.         lib    Voice,PickSampler
  2855.  
  2856.  
  2857. SetModes24:    cmp.b    #SAMP_DSS8,PrefsSampType        ;DSS 8
  2858.         bne    SetModes25
  2859.  
  2860.         move.l    #SAMP_DSS8,d0
  2861.         clr.l    d1
  2862.         move.b    PrefsGain,d1
  2863.         lib    Voice,PickSampler
  2864.  
  2865. SetModes25:    cmp.b    #SAMP_GENERIC,PrefsSampType        ;Generic
  2866.         bne    SetModes26
  2867.  
  2868.         move.l    #SAMP_GENERIC,d0
  2869.         clr.l    d1
  2870.         lib    Voice,PickSampler
  2871.  
  2872. SetModes26:    cmp.b    #CHANNEL_LEFT,PrefsChannel
  2873.         bne    SetModes27
  2874.  
  2875.         move.l    #CHANNEL_LEFT,d0
  2876.         lib    Voice,PickChannel
  2877.  
  2878. SetModes27:    cmp.b    #CHANNEL_RIGHT,PrefsChannel
  2879.         bne    SetModes28
  2880.  
  2881.         move.l    #CHANNEL_RIGHT,d0
  2882.         lib    Voice,PickChannel
  2883.  
  2884. SetModes28:    cmp.b    #INPUT_MIC,PrefsInput
  2885.         bne    SetModes29
  2886.  
  2887.         move.l    #INPUT_MIC,d0
  2888.         lib    Voice,PickInput
  2889.  
  2890. SetModes29:    cmp.b    #INPUT_LINE,PrefsInput
  2891.         bne    SetModes30
  2892.  
  2893.         move.l    #INPUT_LINE,d0
  2894.         lib    Voice,PickInput
  2895.  
  2896. SetModes30:    cmp.b    #TIMER_A,PrefsTimer
  2897.         bne    SetModes31
  2898.  
  2899.         move.l    #TIMER_A,d0
  2900.         lib    Voice,PickTimer
  2901.  
  2902. SetModes31:    cmp.b    #TIMER_B,PrefsTimer
  2903.         bne    SetModes32
  2904.  
  2905.         move.l    #TIMER_B,d0
  2906.         lib    Voice,PickTimer
  2907.  
  2908. SetModes32:
  2909.  
  2910. SetModes_OUT:    bsr    AddGads
  2911.         rts
  2912.  
  2913. ;Here we do some 'patches' when the window isn't open and then do the
  2914. ;normal stuff that needs to be done.
  2915.  
  2916. SetModes_OUT2:    lea.l    DatBuffer,a0
  2917.         move.l    a0,DatStrGadBuf1
  2918.         bra    SetModes22
  2919.  
  2920. CheckModes:    tst.l    Window1
  2921.         beq    CheckModes_OUT
  2922.         move.l    OnOffGad1,a0
  2923.         move.w    gg_Flags(a0),d0
  2924.         clr.b    PrefsOnOff
  2925.         and.w    #SELECTED,d0
  2926.         cmp.w    #SELECTED,d0
  2927.         bne    CheckModes1
  2928.         move.b    #$01,PrefsOnOff
  2929.  
  2930. CheckModes1:    move.l    DatStrGadBuf1,a0
  2931.         lea.l    DatBuffer,a1
  2932.         move.l    #32,d0
  2933.         lib    Exec,CopyMem
  2934.  
  2935.         tst.l    Window1
  2936.         beq    CheckModes_OUT
  2937.         move.l    Window1,a0
  2938.         move.l    wd_LeftEdge(a0),Alt1XY
  2939. CheckModes_OUT:    rts
  2940.  
  2941. RemGads:    tst.l    Window1
  2942.         beq    RemGads_OUT
  2943.         move.l    Window1,a0
  2944.         lea.l    glist,a1
  2945.         sub.l    a2,a2
  2946.         move.l    #-1,d0
  2947.         lib    Intuition,RemoveGList
  2948. RemGads_OUT:    rts
  2949.  
  2950. AddGads:    tst.l    Window1
  2951.         beq    AddGads_OUT
  2952.         move.l    Window1,a0
  2953.         lea.l    glist,a1
  2954.         sub.l    a2,a2
  2955.         move.l    #-1,d0
  2956.         move.l    #-1,d1
  2957.         lib    Intuition,AddGList
  2958.  
  2959.         lea.l    glist,a0
  2960.         move.l    Window1,a1
  2961.         sub.l    a2,a2
  2962.         move.l    #-1,d0
  2963.         lib    Intuition,RefreshGList
  2964.  
  2965.         move.l    GainGad1,a0
  2966.         move.l    Window1,a1
  2967.         sub.l    a2,a2
  2968.         lea.l    GainGadTagList,a3
  2969.         lib    GadTools,GT_SetGadgetAttrsA
  2970.  
  2971.         move.l    Window1,a0
  2972.         sub.l    a1,a1
  2973.         lib    GadTools,GT_RefreshWindow
  2974. AddGads_OUT:    rts
  2975.  
  2976. RemGads2:    tst.l    Window2
  2977.         beq    RemGads2_OUT
  2978.         move.l    Window2,a0
  2979.         lea.l    glist2,a1
  2980.         sub.l    a2,a2
  2981.         move.l    #-1,d0
  2982.         lib    Intuition,RemoveGList
  2983. RemGads2_OUT:    rts
  2984.  
  2985. AddGads2:    tst.l    Window2
  2986.         beq    AddGads2_OUT
  2987.         move.l    Window2,a0
  2988.         lea.l    glist2,a1
  2989.         sub.l    a2,a2
  2990.         move.l    #-1,d0
  2991.         move.l    #-1,d1
  2992.         lib    Intuition,AddGList
  2993.  
  2994.         lea.l    glist2,a0
  2995.         move.l    Window2,a1
  2996.         sub.l    a2,a2
  2997.         move.l    #-1,d0
  2998.         lib    Intuition,RefreshGList
  2999.  
  3000.         move.l    Window2,a0
  3001.         sub.l    a1,a1
  3002.         lib    GadTools,GT_RefreshWindow
  3003. AddGads2_OUT:    rts
  3004.  
  3005. RemGads4:    tst.l    Window4
  3006.         beq    RemGads4_OUT
  3007.         move.l    Window4,a0
  3008.         lea.l    glist4,a1
  3009.         sub.l    a2,a2
  3010.         move.l    #-1,d0
  3011.         lib    Intuition,RemoveGList
  3012. RemGads4_OUT:    rts
  3013.  
  3014. AddGads4:    tst.l    Window4
  3015.         beq    AddGads4_OUT
  3016.         move.l    Window4,a0
  3017.         lea.l    glist4,a1
  3018.         sub.l    a2,a2
  3019.         move.l    #-1,d0
  3020.         move.l    #-1,d1
  3021.         lib    Intuition,AddGList
  3022.  
  3023.         lea.l    glist4,a0
  3024.         move.l    Window4,a1
  3025.         sub.l    a2,a2
  3026.         move.l    #-1,d0
  3027.         lib    Intuition,RefreshGList
  3028.  
  3029.         move.l    Window4,a0
  3030.         sub.l    a1,a1
  3031.         lib    GadTools,GT_RefreshWindow
  3032. AddGads4_OUT:    rts
  3033.  
  3034. ;Abort timer request
  3035.  
  3036. ClearTimer:    move.l    TIORequest,a1
  3037.         lib    Exec,AbortIO
  3038.         tst.l    d0
  3039.         beq    ClearTimer1
  3040.         move.l    TRPort,a0
  3041.         lib    Exec,GetMsg
  3042. ClearTimer1:    move.l    TIORequest,a1
  3043.         lib    Exec,WaitIO
  3044.         rts
  3045.  
  3046. ;Send timer request
  3047.  
  3048. Waiter:        move.l    TIORequest,a1
  3049.         move.w    #TR_ADDREQUEST,IO_COMMAND(a1)
  3050.         move.l    Time,IOTV_TIME(a1)
  3051.         move.l    #2,IOTV_TIME+4(a1)    ;just in case secs=0
  3052.         lib    Exec,SendIO
  3053.         rts
  3054.  
  3055. Quit:        tst.w    Saved
  3056.         bne    ShutDown
  3057.         bsr    RemVTask1
  3058.         bsr    SleepPointer
  3059.         bsr    MenusOff
  3060.         bsr    RemGads
  3061.  
  3062.         lea.l    QuitTxt1,a1
  3063.         lea.l    OKTxt,a2
  3064.         lea.l    CancelTxt,a3
  3065.         bsr    DoAutoRequest
  3066.         tst.l    d0
  3067.         bne    Quit2
  3068.         bsr    AddGads
  3069.         bsr    MenusOn
  3070.         bsr    NormalPointer
  3071.         bsr    AddVTask
  3072.         bra    Window1IDCMP
  3073.  
  3074. Quit2:        bsr    MenusOn
  3075.         bsr    NormalPointer
  3076.         bsr    AddGads
  3077.         bsr    AddVTask
  3078.         bra    ShutDown
  3079.  
  3080. ShutDown:    bsr    RemVTask1
  3081.         tst.l    PubScreen
  3082.         beq    ShutDown9900
  3083.         sub.l    a0,a0
  3084.         move.l    PubScreen,a1
  3085.         lib    Intuition,UnlockPubScreen
  3086.         clr.l    PubScreen
  3087.  
  3088. ShutDown9900:    tst.w    TimerOpen
  3089.         beq    ShutDown9800
  3090.         bsr    ClearTimer
  3091.         move.l    TIORequest,a1
  3092.         lib    Exec,CloseDevice
  3093.         clr.w    TimerOpen
  3094.  
  3095. ShutDown9800:    move.l    TIORequest,a0
  3096.         lib    Exec,DeleteIORequest
  3097.  
  3098.         lib    Exec,Forbid            ;Remove all
  3099.         move.l    TRPort,a2            ;pending messages
  3100.  
  3101. ClearTRPort:    move.l    a2,a0
  3102.         flib    Exec,GetMsg
  3103.         tst.l    d0
  3104.         beq    ClearTRPort2
  3105.         move.l    d0,a1
  3106.         flib    Exec,ReplyMsg
  3107.         bra    ClearTRPort
  3108. ClearTRPort2:    move.l    TRPort,a0
  3109.         flib    Exec,DeleteMsgPort
  3110.         flib    Exec,Permit
  3111.  
  3112.         tst.l    CXBroker1
  3113.         beq    ShutDown8800
  3114.  
  3115.         lib    Exec,Forbid            ;Remove all
  3116.         move.l    CXPort,a2            ;pending messages
  3117.  
  3118. ClearCX1:    move.l    a2,a0
  3119.         flib    Exec,GetMsg
  3120.         tst.l    d0
  3121.         beq    ClearCX2
  3122.         move.l    d0,a1
  3123.         flib    Exec,ReplyMsg
  3124.         bra    ClearCX1
  3125. ClearCX2:    move.l    CXBroker1,a0
  3126.         lib    Commodities,DeleteCxObjAll
  3127.         lib    Exec,Permit
  3128.  
  3129. ShutDown8800:    bsr    CloseWin1
  3130.         bsr    CloseWin2
  3131.         bsr    CloseWin3
  3132.         bsr    CloseWin4
  3133.         bsr    Clean2.0Magic
  3134.  
  3135. ShutDown8000:    move.l    PrefsFile,d1
  3136.         beq    ShutDown7000
  3137.         lib    Dos,Close
  3138.  
  3139. ShutDown7000:    tst.l    NILFile
  3140.         beq    ShutDown6000
  3141.         move.l    NILFile,d1
  3142.         lib    Dos,Close
  3143.  
  3144. ShutDown6000:    tst.l    DiskObject
  3145.         beq    ShutDown5000
  3146.         move.l    DiskObject,a0
  3147.         lib    Icon,FreeDiskObject
  3148.  
  3149. ShutDown5000:    move.l    OldLock,d1
  3150.         beq    ShutDown4050
  3151.         lib    Dos,CurrentDir
  3152.  
  3153. ShutDown4050:    move.l    WBMsg,d2
  3154.         beq    ShutDown3000
  3155.         lib    Exec,Forbid
  3156.         move.l    d2,a1
  3157.         flib    Exec,ReplyMsg
  3158.  
  3159. ShutDown3000:    move.l    RDArgs1,d1
  3160.         beq    ShutDown2500
  3161.         lib    Dos,FreeArgs
  3162.  
  3163. ShutDown2500:    tst.l    AslReq
  3164.         beq    ShutDown2000
  3165.         move.l    AslReq,a0
  3166.         lib    Asl,FreeFileRequest
  3167.  
  3168. ShutDown2000:    move.l    VoicePort,a0        ;Messages cleared earlier
  3169.         lib    Exec,DeleteMsgPort
  3170.  
  3171.         move.l    CXPort,a0        ;Messages cleared earlier
  3172.         lib    Exec,DeleteMsgPort
  3173.  
  3174.         move.l    ARexxPort,a1            ;Remove possible
  3175.         cmp.l    #$00,a1                ;ports from lists
  3176.         beq    ShutDown1000            ;and then delete
  3177.         lib    Exec,RemPort            ;the ports
  3178.  
  3179.         flib    Exec,Forbid            ;Remove all
  3180.         move.l    ARexxPort,a2            ;pending messages
  3181.  
  3182. ClearARexx1:    move.l    a2,a0
  3183.         flib    Exec,GetMsg
  3184.         tst.l    d0
  3185.         beq    ClearARexx2
  3186.         move.l    d0,a1
  3187.         move.l    #RC_FATAL,RESULT1(a1)        ;Fail all requests
  3188.         flib    Exec,ReplyMsg
  3189.         bra    ClearARexx1
  3190. ClearARexx2:    move.l    ARexxPort,a0
  3191.         flib    Exec,DeleteMsgPort
  3192.         flib    Exec,Permit
  3193.  
  3194. ShutDown1000:    closlib Voice
  3195.         closlib    Commodities
  3196.         closlib Icon
  3197.         closlib Intuition
  3198.         closlib GadTools
  3199.         closlib    Asl
  3200.         closlib    Utility
  3201.         closlib Dos
  3202.  
  3203.         move.l    OurTask,a1        ;reset task pri after
  3204.         clr.l    d0            ;voice.lib has been
  3205.         lib    Exec,SetTaskPri        ;opened and closed
  3206.  
  3207.         pull    d2-d7/a2-a6
  3208.         clr.l    d0
  3209.         rts
  3210.  
  3211. ;CheckIDCMP gets messages from keyboard (CTRL_C/D/E), Intuition and
  3212. ;voice.library, commodities.library and ARexx
  3213. ;
  3214. ;Give it the window structure in a0
  3215.  
  3216. CheckIDCMP:    clr.l    d1
  3217.         clr.l    d0
  3218.         cmp.l    #0,a0            ;Window open?
  3219.         beq    CheckIDCMP1        ;Nope ->
  3220.         move.l    $56(a0),a2        ;Get window's port
  3221.         move.b    MP_SIGBIT(a2),d1    ;IntuiMessages signals
  3222.         bset.l    d1,d0
  3223. CheckIDCMP1:    clr.l    d1            ;Set signals for
  3224.         move.l    VoicePort,a0        ;voice.library
  3225.         move.b    MP_SIGBIT(a0),d1
  3226.         bset.l    d1,d0
  3227.         clr.l    d1
  3228.         move.l    CXPort,a0        ;commodities.library
  3229.         move.b    MP_SIGBIT(a0),d1
  3230.         bset.l    d1,d0
  3231.         clr.l    d1
  3232.         move.l    ARexxPort,a0        ;ARexx
  3233.         move.b    MP_SIGBIT(a0),d1
  3234.         bset.l    d1,d0
  3235.         clr.l    d1
  3236.         move.l    TRPort,a0        ;timer.device
  3237.         move.b    MP_SIGBIT(a0),d1
  3238.         bset.l    d1,d0
  3239.         bset.l    #SIGBREAKB_CTRL_C,d0    ;and CTRL_C
  3240.         bset.l    #SIGBREAKB_CTRL_D,d0    ;and CTRL_D
  3241.         bset.l    #SIGBREAKB_CTRL_E,d0    ;and CTRL_E
  3242.         lib    Exec,Wait
  3243.  
  3244.         cmp.l    #SIGBREAKF_CTRL_C,d0    ;If CTRL_C
  3245.         beq    Break            ;go break
  3246.         cmp.l    #SIGBREAKF_CTRL_D,d0    ;If CTRL_D
  3247.         bne    CheckIDCMP2        ;inform about it
  3248.         move.l    #1,d0
  3249.         rts
  3250. CheckIDCMP2:    cmp.l    #SIGBREAKF_CTRL_E,d0    ;If CTRL_E
  3251.         bne    CheckIDCMP3        ;inform about it
  3252.         move.l    #2,d0
  3253.         rts
  3254. CheckIDCMP3:    move.l    VoicePort,a0        ;If voice.library
  3255.         move.b    MP_SIGBIT(a0),d1
  3256.         btst    d1,d0
  3257.         bne    C3GetMsg1
  3258.  
  3259.         move.l    CXPort,a0        ;If commodities.library
  3260.         move.b    MP_SIGBIT(a0),d1
  3261.         btst    d1,d0
  3262.         bne    C4GetMsg1
  3263.  
  3264.         move.l    TRPort,a0        ;If commodities.library
  3265.         move.b    MP_SIGBIT(a0),d1
  3266.         btst    d1,d0
  3267.         bne    C5GetMsg1
  3268.  
  3269.         move.l    ARexxPort,a0        ;If ARexx
  3270.         move.b    MP_SIGBIT(a0),d1
  3271.         btst    d1,d0
  3272.         beq    C2GetMsg1
  3273.  
  3274.         bsr    DoARexx            ;Go do ARexx magic
  3275.         rts
  3276.  
  3277. C2GetMsg1:    move.l    a2,a0            ;If Intuition
  3278.         lib    GadTools,GT_GetIMsg
  3279.         tst.l    d0
  3280.         beq    C2GetMsg2
  3281.     
  3282.         move.l    d0,a1 
  3283.         move.l    im_Class(a1),d2        ;answers with Class in d2,
  3284.         move.w    im_Code(a1),d3        ;Code in d3 and
  3285.         move.w    im_Qualifier(a1),a4    ;Qualifier in a4
  3286.         move.l    im_IAddress(a1),a5    ;IAddress in a5
  3287.         lib    GadTools,GT_ReplyIMsg
  3288.         bra    C2GetMsg1
  3289. C2GetMsg2:    move.l    #-1,d0
  3290.         rts
  3291.  
  3292. C3GetMsg1:    move.l    VoicePort,a0
  3293.         lib    Exec,GetMsg
  3294.         tst.l    d0
  3295.         beq    C3GetMsg2
  3296.     
  3297.         move.l    d0,a1
  3298.         move.l    im_Class(a1),d2        ;Class in d2 and
  3299.         move.w    im_Code(a1),d3        ;Code in d3
  3300.         move.w    im_Qualifier(a1),a4    ;Qualifier in a4
  3301.  
  3302.         lib    Exec,ReplyMsg
  3303.         bra    C3GetMsg1
  3304. C3GetMsg2:    move.l    #3,d0
  3305.         rts
  3306.  
  3307. C4GetMsg1:    move.l    CXPort,a0
  3308.         lib    Exec,GetMsg
  3309.         tst.l    d0
  3310.         beq    C4GetMsg_OUT
  3311.  
  3312.         move.l    d0,a2            ;Message in a2
  3313.  
  3314.         move.l    a2,a0
  3315.         lib    Commodities,CxMsgType
  3316.         move.l    d0,d2            ;Type in d2
  3317.  
  3318.         move.l    a2,a0
  3319.         lib    Commodities,CxMsgID
  3320.         move.l    d0,d3            ;ID in d3
  3321.  
  3322.         move.l    a2,a1
  3323.         lib    Exec,ReplyMsg
  3324.  
  3325.         bsr    CX        ;Go do magic stuff
  3326.         tst.l    d0
  3327.         bne    C4GetMsg1    ;Loop all messages
  3328.         rts
  3329.  
  3330. C4GetMsg_OUT:    move.l    #4,d0        ;Return as CX
  3331.         rts
  3332.  
  3333. C5GetMsg1:    move.l    TRPort,a0
  3334.         lib    Exec,GetMsg
  3335.         tst.l    d0
  3336.         beq    C4GetMsg_OUT
  3337.  
  3338.         clr.w    Awake
  3339.  
  3340. C5GetMsg_OUT:    move.l    #4,d0
  3341.         rts
  3342.  
  3343. ;Newer MenuNull subroutine
  3344.  
  3345. MenuNull:    move.w    d3,d0
  3346.         and.w    #$1f,d0
  3347.         move.w    d0,d6
  3348.         move.w    d3,d0
  3349.         lsr.w    #5,d0
  3350.         move.w    d0,d1
  3351.         and.w    #$3f,d0
  3352.         move.w    d0,d5
  3353.         lsr.w    #6,d1
  3354.         move.w    d1,d4
  3355.         rts
  3356.  
  3357. ;ARexx interface
  3358.  
  3359. DoARexx:    move.l    ARexxPort,a0
  3360.         lib    Exec,GetMsg
  3361.  
  3362.         move.l    #4,d2            ;answer to Window1IDCMP
  3363.         tst.l    d0
  3364.         beq    DoARexx_OUT
  3365.  
  3366.         move.l    d0,a5
  3367.         cmp.l    #RXCOMM,ACTION(a5)
  3368.         bne    DoARexxReply
  3369.  
  3370.         tst.l    Window2        ;Don't do ARexx while other
  3371.         bne    DoARexxFail    ;windows are open!
  3372.         tst.l    Window3
  3373.         bne    DoARexxFail
  3374.  
  3375.         lea.l    RexxFront,a0
  3376.         move.l    ARG0(a5),a1
  3377.         bsr    CmpStrings
  3378.         bne    DoRexxFront
  3379.  
  3380.         lea.l    RexxBack,a0
  3381.         move.l    ARG0(a5),a1
  3382.         bsr    CmpStrings
  3383.         bne    DoRexxBack
  3384.  
  3385.         lea.l    RexxZoom,a0
  3386.         move.l    ARG0(a5),a1
  3387.         bsr    CmpStrings
  3388.         bne    DoRexxZoom
  3389.  
  3390.         lea.l    RexxHide,a0
  3391.         move.l    ARG0(a5),a1
  3392.         bsr    CmpStrings
  3393.         bne    DoRexxHide
  3394.  
  3395.         lea.l    RexxShow,a0
  3396.         move.l    ARG0(a5),a1
  3397.         bsr    CmpStrings
  3398.         bne    DoRexxShow
  3399.  
  3400.         lea.l    RexxOn,a0
  3401.         move.l    ARG0(a5),a1
  3402.         bsr    CmpStrings
  3403.         bne    DoRexxOn
  3404.  
  3405.         lea.l    RexxOff,a0
  3406.         move.l    ARG0(a5),a1
  3407.         bsr    CmpStrings
  3408.         bne    DoRexxOff
  3409.  
  3410.         lea.l    RexxQuit,a0
  3411.         move.l    ARG0(a5),a1
  3412.         bsr    CmpStrings
  3413.         bne    DoRexxQuit
  3414.  
  3415.         lea.l    RexxPerfSnd,a0
  3416.         move.l    ARG0(a5),a1
  3417.         bsr    CmpStrings
  3418.         bne    DoRexxPerfSnd
  3419.  
  3420.         lea.l    RexxSndMstr,a0
  3421.         move.l    ARG0(a5),a1
  3422.         bsr    CmpStrings
  3423.         bne    DoRexxSndMstr
  3424.  
  3425.         lea.l    RexxDSS8,a0
  3426.         move.l    ARG0(a5),a1
  3427.         bsr    CmpStrings
  3428.         bne    DoRexxDSS8
  3429.  
  3430.         lea.l    RexxGeneric,a0
  3431.         move.l    ARG0(a5),a1
  3432.         bsr    CmpStrings
  3433.         bne    DoRexxGeneric
  3434.  
  3435.         lea.l    RexxResLo,a0
  3436.         move.l    ARG0(a5),a1
  3437.         bsr    CmpStrings
  3438.         bne    DoRexxResLo
  3439.  
  3440.         lea.l    RexxResHi,a0
  3441.         move.l    ARG0(a5),a1
  3442.         bsr    CmpStrings
  3443.         bne    DoRexxResHi
  3444.  
  3445.         lea.l    RexxLowest,a0
  3446.         move.l    ARG0(a5),a1
  3447.         bsr    CmpStrings
  3448.         bne    DoRexxLowest
  3449.  
  3450.         lea.l    RexxLower,a0
  3451.         move.l    ARG0(a5),a1
  3452.         bsr    CmpStrings
  3453.         bne    DoRexxLower
  3454.  
  3455.         lea.l    RexxLow,a0
  3456.         move.l    ARG0(a5),a1
  3457.         bsr    CmpStrings
  3458.         bne    DoRexxLow
  3459.  
  3460.         lea.l    RexxNormal,a0
  3461.         move.l    ARG0(a5),a1
  3462.         bsr    CmpStrings
  3463.         bne    DoRexxNormal
  3464.  
  3465.         lea.l    RexxHigh,a0
  3466.         move.l    ARG0(a5),a1
  3467.         bsr    CmpStrings
  3468.         bne    DoRexxHigh
  3469.  
  3470.         lea.l    RexxHigher,a0
  3471.         move.l    ARG0(a5),a1
  3472.         bsr    CmpStrings
  3473.         bne    DoRexxHigher
  3474.  
  3475.         lea.l    RexxEHigher,a0
  3476.         move.l    ARG0(a5),a1
  3477.         bsr    CmpStrings
  3478.         bne    DoRexxEHigher
  3479.  
  3480.         lea.l    RexxMaximum,a0
  3481.         move.l    ARG0(a5),a1
  3482.         bsr    CmpStrings
  3483.         bne    DoRexxMaximum
  3484.  
  3485.         lea.l    RexxLeft,a0
  3486.         move.l    ARG0(a5),a1
  3487.         bsr    CmpStrings
  3488.         bne    DoRexxLeft
  3489.  
  3490.         lea.l    RexxRight,a0
  3491.         move.l    ARG0(a5),a1
  3492.         bsr    CmpStrings
  3493.         bne    DoRexxRight
  3494.  
  3495.         lea.l    RexxLine,a0
  3496.         move.l    ARG0(a5),a1
  3497.         bsr    CmpStrings
  3498.         bne    DoRexxLine
  3499.  
  3500.         lea.l    RexxMic,a0
  3501.         move.l    ARG0(a5),a1
  3502.         bsr    CmpStrings
  3503.         bne    DoRexxMic
  3504.  
  3505.         lea.l    RexxGainUp,a0
  3506.         move.l    ARG0(a5),a1
  3507.         bsr    CmpStrings
  3508.         bne    DoRexxGainUp
  3509.  
  3510.         lea.l    RexxGainDown,a0
  3511.         move.l    ARG0(a5),a1
  3512.         bsr    CmpStrings
  3513.         bne    DoRexxGainDown
  3514.  
  3515.         lea.l    RexxTimerA,a0
  3516.         move.l    ARG0(a5),a1
  3517.         bsr    CmpStrings
  3518.         bne    DoRexxTimerA
  3519.  
  3520.         lea.l    RexxTimerB,a0
  3521.         move.l    ARG0(a5),a1
  3522.         bsr    CmpStrings
  3523.         bne    DoRexxTimerB
  3524.  
  3525.         lea.l    RexxConfirm,a0
  3526.         move.l    ARG0(a5),a1
  3527.         bsr    CmpStrings
  3528.         bne    DoRexxConf
  3529.  
  3530.         lea.l    RexxNoConfirm,a0
  3531.         move.l    ARG0(a5),a1
  3532.         bsr    CmpStrings
  3533.         bne    DoRexxNoConf
  3534.  
  3535.         lea.l    RexxWake0,a0
  3536.         move.l    ARG0(a5),a1
  3537.         bsr    CmpStrings
  3538.         bne    DoRexxWake0
  3539.  
  3540.         lea.l    RexxWake5,a0
  3541.         move.l    ARG0(a5),a1
  3542.         bsr    CmpStrings
  3543.         bne    DoRexxWake5
  3544.  
  3545.         lea.l    RexxWake10,a0
  3546.         move.l    ARG0(a5),a1
  3547.         bsr    CmpStrings
  3548.         bne    DoRexxWake10
  3549.  
  3550.         lea.l    RexxWake15,a0
  3551.         move.l    ARG0(a5),a1
  3552.         bsr    CmpStrings
  3553.         bne    DoRexxWake15
  3554.  
  3555.         lea.l    RexxWake20,a0
  3556.         move.l    ARG0(a5),a1
  3557.         bsr    CmpStrings
  3558.         bne    DoRexxWake20
  3559.  
  3560.         move.l    ARG0(a5),a1
  3561.         cmp.b    #'K',(a1)+
  3562.         bne    DoARexx2
  3563.         cmp.b    #'E',(a1)+
  3564.         bne    DoARexx2
  3565.         cmp.b    #'Y',(a1)+
  3566.         bne    DoARexx2
  3567.         cmp.b    #' ',(a1)+
  3568.         beq    DoRexxKeyInput
  3569.  
  3570. DoARexx2:    move.l    ARG0(a5),a1
  3571.         cmp.b    #'L',(a1)+
  3572.         bne    DoARexxFail
  3573.         cmp.b    #'O',(a1)+
  3574.         bne    DoARexxFail
  3575.         cmp.b    #'A',(a1)+
  3576.         bne    DoARexxFail
  3577.         cmp.b    #'D',(a1)+
  3578.         bne    DoARexxFail
  3579.         cmp.b    #' ',(a1)+
  3580.         beq    DoRexxLoad
  3581.  
  3582. DoARexxFail:    move.l    #RC_FATAL,RESULT1(a5)
  3583.         move.l    #4,d2
  3584.         bra    DoARexxReply
  3585.  
  3586. DoARexxOK:    move.l    #RC_OK,RESULT1(a5)
  3587. DoARexxReply:    move.l    a5,a1
  3588.         lib    Exec,ReplyMsg
  3589. DoARexx_OUT:    move.l    d2,d0
  3590.         rts
  3591.  
  3592.  
  3593. DoRexxFront:    bsr    ToFront
  3594.         move.l    #4,d2
  3595.         bra    DoARexxOK
  3596.  
  3597. DoRexxBack:    bsr    ToBack
  3598.         move.l    #4,d2
  3599.         bra    DoARexxOK
  3600.  
  3601. DoRexxZoom:    bsr    Zoom
  3602.         move.l    #4,d2
  3603.         bra    DoARexxOK
  3604.  
  3605. DoRexxHide:    bsr    DoCXDisappear
  3606.         move.l    #4,d2
  3607.         bra    DoARexxOK
  3608.  
  3609. DoRexxShow:    bsr    DoCXAppear
  3610.         move.l    #4,d2
  3611.         bra    DoARexxOK
  3612.  
  3613. DoRexxOn:    tst.w    DisActive
  3614.         bne    DoARexxFail
  3615.         push    a5
  3616.         bsr    CLITypeOn
  3617.         pull    a5
  3618.         move.l    #4,d2
  3619.         bra    DoARexxOK
  3620.  
  3621. DoRexxOff:    tst.w    DisActive
  3622.         bne    DoARexxFail
  3623.         push    a5
  3624.         bsr    CLITypeOff
  3625.         pull    a5
  3626.         move.l    #4,d2
  3627.         bra    DoARexxOK
  3628.  
  3629. DoRexxQuit:    clr.l    d2
  3630.         bra    DoARexxOK
  3631.  
  3632. DoRexxPerfSnd:    push    a5
  3633.         bsr    SetSamp1
  3634.         bsr    SetModes
  3635.         pull    a5
  3636.         move.l    #4,d2
  3637.         bra    DoARexxOK
  3638.  
  3639. DoRexxSndMstr:    push    a5
  3640.         bsr    SetSamp2
  3641.         bsr    SetModes
  3642.         pull    a5
  3643.         move.l    #4,d2
  3644.         bra    DoARexxOK
  3645.  
  3646. DoRexxDSS8:    push    a5
  3647.         bsr    SetSamp3
  3648.         bsr    SetModes
  3649.         pull    a5
  3650.         move.l    #4,d2
  3651.         bra    DoARexxOK
  3652.  
  3653. DoRexxGeneric:    push    a5
  3654.         bsr    SetSamp4
  3655.         bsr    SetModes
  3656.         pull    a5
  3657.         move.l    #4,d2
  3658.         bra    DoARexxOK
  3659.  
  3660. DoRexxResLo:    push    a5
  3661.         bsr    SetResLo
  3662.         bsr    SetModes
  3663.         pull    a5
  3664.         move.l    #4,d2
  3665.         bra    DoARexxOK
  3666.  
  3667. DoRexxResHi:    push    a5
  3668.         bsr    SetResHi
  3669.         bsr    SetModes
  3670.         pull    a5
  3671.         move.l    #4,d2
  3672.         bra    DoARexxOK
  3673.  
  3674. DoRexxLowest:    push    a5
  3675.         bsr    SetAccLowest
  3676.         bsr    SetModes
  3677.         pull    a5
  3678.         move.l    #4,d2
  3679.         bra    DoARexxOK
  3680.  
  3681. DoRexxLower:    push    a5
  3682.         bsr    SetAccLower
  3683.         bsr    SetModes
  3684.         pull    a5
  3685.         move.l    #4,d2
  3686.         bra    DoARexxOK
  3687.  
  3688. DoRexxLow:    push    a5
  3689.         bsr    SetAccLow
  3690.         bsr    SetModes
  3691.         pull    a5
  3692.         move.l    #4,d2
  3693.         bra    DoARexxOK
  3694.  
  3695. DoRexxNormal:    push    a5
  3696.         bsr    SetAccNormal
  3697.         bsr    SetModes
  3698.         pull    a5
  3699.         move.l    #4,d2
  3700.         bra    DoARexxOK
  3701.  
  3702. DoRexxHigh:    push    a5
  3703.         bsr    SetAccHigh
  3704.         bsr    SetModes
  3705.         pull    a5
  3706.         move.l    #4,d2
  3707.         bra    DoARexxOK
  3708.  
  3709. DoRexxHigher:    push    a5
  3710.         bsr    SetAccHigher
  3711.         bsr    SetModes
  3712.         pull    a5
  3713.         move.l    #4,d2
  3714.         bra    DoARexxOK
  3715.  
  3716. DoRexxEHigher:    push    a5
  3717.         bsr    SetAccEHigher
  3718.         bsr    SetModes
  3719.         pull    a5
  3720.         move.l    #4,d2
  3721.         bra    DoARexxOK
  3722.  
  3723. DoRexxMaximum:    push    a5
  3724.         bsr    SetAccMaximum
  3725.         bsr    SetModes
  3726.         pull    a5
  3727.         move.l    #4,d2
  3728.         bra    DoARexxOK
  3729.  
  3730. DoRexxLeft:    push    a5
  3731.         bsr    SetLeft
  3732.         bsr    SetModes
  3733.         pull    a5
  3734.         move.l    #4,d2
  3735.         bra    DoARexxOK
  3736.  
  3737. DoRexxRight:    push    a5
  3738.         bsr    SetRight
  3739.         bsr    SetModes
  3740.         pull    a5
  3741.         move.l    #4,d2
  3742.         bra    DoARexxOK
  3743.  
  3744. DoRexxLine:    push    a5
  3745.         bsr    SetLine
  3746.         bsr    SetModes
  3747.         pull    a5
  3748.         move.l    #4,d2
  3749.         bra    DoARexxOK
  3750.  
  3751. DoRexxMic:    push    a5
  3752.         bsr    SetMic
  3753.         bsr    SetModes
  3754.         pull    a5
  3755.         move.l    #4,d2
  3756.         bra    DoARexxOK
  3757.  
  3758. DoRexxGainUp:    push    a5
  3759.         bsr    GainUp
  3760.         pull    a5
  3761.         move.l    #4,d2
  3762.         bra    DoARexxOK
  3763.  
  3764. DoRexxGainDown:    push    a5
  3765.         bsr    GainDown
  3766.         pull    a5
  3767.         move.l    #4,d2
  3768.         bra    DoARexxOK
  3769.  
  3770. DoRexxTimerA:    push    a5
  3771.         bsr    SetTimerA
  3772.         bsr    SetModes
  3773.         pull    a5
  3774.         move.l    #4,d2
  3775.         bra    DoARexxOK
  3776.  
  3777. DoRexxTimerB:    push    a5
  3778.         bsr    SetTimerB
  3779.         bsr    SetModes
  3780.         pull    a5
  3781.         move.l    #4,d2
  3782.         bra    DoARexxOK
  3783.  
  3784. DoRexxConf:    push    a5
  3785.         move.b    #1,PrefsConfirm
  3786.         bsr    SetModes
  3787.         pull    a5
  3788.         move.l    #4,d2
  3789.         bra    DoARexxOK
  3790.  
  3791. DoRexxNoConf:    push    a5
  3792.         clr.b    PrefsConfirm
  3793.         bsr    SetModes
  3794.         pull    a5
  3795.         move.l    #4,d2
  3796.         bra    DoARexxOK
  3797.  
  3798. DoRexxWake0:    push    a5
  3799.         move.b    #0,PrefsWake
  3800.         bsr    SetModes
  3801.         pull    a5
  3802.         move.l    #4,d2
  3803.         bra    DoARexxOK
  3804.  
  3805. DoRexxWake5:    push    a5
  3806.         move.b    #5,PrefsWake
  3807.         bsr    SetModes
  3808.         pull    a5
  3809.         move.l    #4,d2
  3810.         bra    DoARexxOK
  3811.  
  3812. DoRexxWake10:    push    a5
  3813.         move.b    #10,PrefsWake
  3814.         bsr    SetModes
  3815.         pull    a5
  3816.         move.l    #4,d2
  3817.         bra    DoARexxOK
  3818.  
  3819. DoRexxWake15:    push    a5
  3820.         move.b    #15,PrefsWake
  3821.         bsr    SetModes
  3822.         pull    a5
  3823.         move.l    #4,d2
  3824.         bra    DoARexxOK
  3825.  
  3826. DoRexxWake20:    push    a5
  3827.         move.b    #20,PrefsWake
  3828.         bsr    SetModes
  3829.         pull    a5
  3830.         move.l    #4,d2
  3831.         bra    DoARexxOK
  3832.  
  3833. DoRexxLoad:    push    a5
  3834.  
  3835.         move.l    a1,FromFile    ;Fake CLI Input :)
  3836.         bsr    Load
  3837.         bsr    AddVTask
  3838.  
  3839.         pull    a5
  3840.         move.l    #4,d2
  3841.         bra    DoARexxOK
  3842.  
  3843. DoRexxKeyInput:    move.l    a1,a0
  3844.         lea.l    StringBuffer,a1
  3845.         bsr    CopyStrs
  3846.  
  3847.         bsr    SendEvents
  3848.         move.l    #4,d2
  3849.         tst.l    IEvents
  3850.         beq    DoARexxFail
  3851.         clr.l    IEvents
  3852.         bra    DoARexxOK
  3853.  
  3854. ;SendEvents converts ARexx string to lower case and converts it into input
  3855. ;events and merges these events into the input chain.
  3856. ;
  3857. ;Inputs    StringBuffer = String to send
  3858.  
  3859. SendEvents:    lea.l    StringBuffer,a2
  3860.         bsr    MakeLowerCase
  3861.  
  3862. ;Convert string into Input Events
  3863.  
  3864.         move.l    #0,-(sp)
  3865.         pea    StringBuffer
  3866.         jsr    _InvertString
  3867.         add.l    #8,sp
  3868.         move.l    d0,IEvents
  3869.         beq    SendEvents2
  3870.  
  3871. ;Send Input Events
  3872.  
  3873.         move.l    IEvents,a0
  3874.         lib    Commodities,AddIEvents
  3875.  
  3876. ;Free Input Events
  3877.  
  3878.         move.l    IEvents,-(sp)
  3879.         jsr    _FreeIEvents
  3880.         add.l    #4,sp
  3881. SendEvents2:    rts
  3882.  
  3883. ;Compares two strings.
  3884. ;
  3885. ;INPUT
  3886. ;
  3887. ;A0 String 1
  3888. ;A1 String 2
  3889. ;
  3890. ;OUTPUT
  3891. ;
  3892. ;D0 = 0 if not same
  3893. ;
  3894. ;BUGS
  3895. ;
  3896. ;String 1 has to have NULL at end!
  3897. ;
  3898.  
  3899. CmpStrings:    bsr    GetLength
  3900.         move.l    d0,d4        ;length of string1 to d4
  3901.         push    a0
  3902.         move.l    a1,a0
  3903.         bsr    GetLength
  3904.         pull    a0
  3905.         cmp.l    d4,d0        ;length of string2 in d3
  3906.         bne    CmpStrings1.1
  3907. CmpStrings1:    tst.b    (a0)
  3908.         beq    CmpStrings2
  3909.         cmp.b    (a0)+,(a1)+
  3910.         beq    CmpStrings1
  3911. CmpStrings1.1:    clr.l    d0
  3912.         rts
  3913. CmpStrings2:    move.l    #-1,d0
  3914.         rts
  3915.  
  3916. ;Get length of text in given address
  3917. ;
  3918. ;Input a0 = Address of null terminated text string
  3919. ;
  3920. ;Result d0 = Length
  3921.  
  3922. GetLength:    push    a0
  3923.         clr.l    d0
  3924.         cmp.l    #$00,a0        ;fixes enforcer hit
  3925.         beq    GetLength_OUT
  3926. GetLength2:    add.l    #1,d0
  3927.         tst.b    (a0)+
  3928.         bne    GetLength2
  3929.         sub.l    #1,d0        ;don't include NULL
  3930. GetLength_OUT:    pull    a0
  3931.         rts
  3932.  
  3933. ;Inputs    a0 = ASCII number
  3934. ;Output    d0 = Hexadecimal number
  3935.  
  3936. ConvASCII:    clr.l    d0
  3937.         clr.l    d1
  3938.         cmp.b    #' ',(a0)
  3939.         bne    ConvASCII2
  3940.         add.l    #1,a0
  3941. ConvASCII2:    move.b    (a0),d1
  3942.         cmp.b    #'0',d1
  3943.         bcs    ConvASCII_OUT
  3944.         cmp.b    #'9',d1
  3945.         bhi    ConvASCII_OUT
  3946.         sub.b    #'0',d1
  3947.         mulu.w    #10,d0
  3948.         add.l    d1,d0
  3949.         add.l    #1,a0
  3950.         bra    ConvASCII2
  3951. ConvASCII_OUT:    rts
  3952.  
  3953. ;Inputs    a2 = Pointer to NULL terminated string to convert
  3954.  
  3955. MakeLowerCase:    tst.b    (a2)
  3956.         beq    MakeLowerCase3
  3957.         move.b    (a2),d0
  3958.         lib    Utility,ToLower
  3959.         move.b    d0,(a2)
  3960.  
  3961. MakeLowerCase2:    add.l    #1,a2
  3962.         bra    MakeLowerCase
  3963.  
  3964. MakeLowerCase3: rts
  3965.  
  3966. ;Copies bytes from a0 to a1 until NULL is reached or maximum amount of 
  3967. ;255 bytes is copied. Destination will include NULL
  3968. ;
  3969. ;Inputs    a0 = Source
  3970. ;    a1 = Destination
  3971.  
  3972. CopyStrs:    move.l    #255,d0
  3973.  
  3974. CopyStrs1:    tst.b    (a0)
  3975.         beq    CopyStrs_OUT
  3976.         move.b    (a0)+,(a1)+
  3977.         sub.l    #1,d0
  3978.         beq    CopyStrs_OUT
  3979.         bra    CopyStrs1
  3980. CopyStrs_OUT:    clr.b    (a1)
  3981.         rts
  3982.  
  3983. ;Joins path and filename together from ASL Requester.
  3984.  
  3985. MakeCmd:    move.l    AslReq,a0
  3986.         move.l    rf_Dir(a0),a1        ;Source 1
  3987.         move.l    rf_File(a0),a2        ;Source 2
  3988.  
  3989.         move.l    $22(a5),a0
  3990.         move.l    (a0),a3            ;Destination
  3991.  
  3992.         clr.l    d0
  3993.  
  3994. MakeCmd1:    tst.b    (a1)
  3995.         beq    MakeCmd2
  3996.         cmp.l    #GADLENG2-1,d0
  3997.         bcc    MakeCmd2
  3998.         move.b    (a1)+,(a3)+
  3999.         add.l    #1,d0
  4000.         bra    MakeCmd1
  4001.  
  4002. MakeCmd2:    cmp.b    #':',-1(a3)
  4003.         beq    MakeCmd3
  4004.         tst.b    -1(a3)
  4005.         beq    MakeCmd3
  4006.         move.b    #'/',(a3)+
  4007.  
  4008. MakeCmd3:    tst.b    (a2)
  4009.         beq    MakeCmd4
  4010.         cmp.l    #GADLENG2-1,d0
  4011.         bcc    MakeCmd3
  4012.         move.b    (a2)+,(a3)+
  4013.         add.l    #1,d0
  4014.         bra    MakeCmd3
  4015.  
  4016. MakeCmd4:    clr.b    (a3)        ;Add NULL to destination
  4017.         rts
  4018.  
  4019. SleepPointer:    tst.l    Window1
  4020.         beq    SleepPoint_OUT
  4021.         move.l    Window1,a0
  4022.         lea.l    ClockPointer1,a1
  4023.         move.l    #16,d0
  4024.         move.l    #16,d1            ;WHAT-THE-HECK IS THIS FOR?
  4025.         move.l    #-6,d2
  4026.         move.l    #0,d3
  4027.         lib    Intuition,SetPointer
  4028. SleepPoint_OUT:    rts
  4029.  
  4030. NormalPointer:    tst.l    Window1
  4031.         beq    NormPoint_OUT
  4032.         move.l    Window1,a0
  4033.         lib    Intuition,ClearPointer
  4034. NormPoint_OUT:    rts
  4035.  
  4036. MenusOn:    tst.l    Window1
  4037.         beq    MenusOn_OUT
  4038.         move.l    Window1,a0
  4039.         move.l    mlist,a1
  4040.         lib    Intuition,SetMenuStrip
  4041. MenusOn_OUT:    rts
  4042.  
  4043. MenusOff:    tst.l    Window1
  4044.         beq    MenusOff_OUT
  4045.         move.l    Window1,a0
  4046.         lib    Intuition,ClearMenuStrip
  4047. MenusOff_OUT:    rts
  4048.  
  4049. ;Lock PublicScreen
  4050.  
  4051. LockPubScr:    move.l    OptPubScreen,a0
  4052.         lib    Intuition,LockPubScreen
  4053.         move.l    d0,PubScreen
  4054.         beq    LockPubScr_OUT
  4055.  
  4056. ;Set default sizes
  4057.  
  4058.         move.w    #62,Win1YSize
  4059.         move.w    #ShellTop+12*(10+INTERHEIGHT)+3*INTERHEIGHT,Win2YSize
  4060.         move.w    #30,Win3YSize
  4061.         move.w    #ShellTop+12*(10+INTERHEIGHT)+2*INTERHEIGHT,Win4YSize
  4062.  
  4063. ;Get some sizes
  4064.  
  4065.         move.l    PubScreen,a0
  4066.         move.b    sc_BarHeight(a0),d0
  4067.         add.b    #1,d0
  4068.         move.b    d0,BHeight+1
  4069.         move.w    BHeight,d5
  4070.         add.w    d5,SmallYSize
  4071.         add.w    d5,Win1YSize
  4072.         add.w    d5,Win2YSize
  4073.         add.w    d5,Win3YSize
  4074. LockPubScr_OUT: rts
  4075.  
  4076. UnLockPubScr:    tst.l    PubScreen
  4077.         beq    UnLPubScr_OUT
  4078.  
  4079.         sub.l    a0,a0
  4080.         move.l    PubScreen,a1
  4081.         lib    Intuition,UnlockPubScreen
  4082.         clr.l    PubScreen
  4083. UnLPubScr_OUT:    rts
  4084.  
  4085. DoLayOut:    bsr    UnLockPubScr
  4086.  
  4087.         bsr    LockPubScr
  4088.         tst.l    PubScreen
  4089.         beq    NoPubScreen
  4090.  
  4091. ;Get visualinfo
  4092.  
  4093.         move.l    PubScreen,a0
  4094.         sub.l    a1,a1
  4095.         lib    GadTools,GetVisualInfoA
  4096.         move.l    d0,vi
  4097.  
  4098. ;Make gadget stuff
  4099.  
  4100.         lea.l    glist,a0
  4101.         lib    GadTools,CreateContext
  4102.         move.l    d0,ContextGad
  4103.         beq    NoContextGad
  4104.  
  4105.         move.l    glist,a0
  4106.         lea.l    NGOnOffGad1,a1
  4107.         move.w    #ShellTop,gng_TopEdge(a1)
  4108.         add.w    d5,gng_TopEdge(a1)
  4109.         move.l    #CHECKBOX_KIND,d0
  4110.         move.l    vi,gng_VisualInfo(a1)
  4111.         lea.l    GadTagList,a2
  4112.         lib    GadTools,CreateGadgetA
  4113.  
  4114.         move.l    d0,OnOffGad1
  4115.         move.l    d0,a0
  4116.  
  4117.         lea.l    NGGainUGad,a1
  4118.         move.w    #ShellTop+1*(10+INTERHEIGHT),gng_TopEdge(a1)
  4119.         add.w    d5,gng_TopEdge(a1)
  4120.         move.l    #BUTTON_KIND,d0
  4121.         move.l    vi,gng_VisualInfo(a1)
  4122.         lea.l    GadTagList,a2
  4123.         lib    GadTools,CreateGadgetA
  4124.  
  4125.         move.l    d0,a0
  4126.         move.l    a0,GainUGad1
  4127.  
  4128.         lea.l    NGGainDGad,a1
  4129.         move.w    #ShellTop+2*(10+INTERHEIGHT),gng_TopEdge(a1)
  4130.         add.w    d5,gng_TopEdge(a1)
  4131.         move.l    #BUTTON_KIND,d0
  4132.         move.l    vi,gng_VisualInfo(a1)
  4133.         lea.l    GadTagList,a2
  4134.         lib    GadTools,CreateGadgetA
  4135.  
  4136.         move.l    d0,a0
  4137.         move.l    a0,GainDGad1
  4138.  
  4139.         lea.l    NGGainGad,a1
  4140.         move.w    #ShellTop+2*(10+INTERHEIGHT),gng_TopEdge(a1)
  4141.         add.w    d5,gng_TopEdge(a1)
  4142.         move.l    #NUMBER_KIND,d0
  4143.         move.l    vi,gng_VisualInfo(a1)
  4144.         lea.l    GainGadTagList,a2
  4145.         lib    GadTools,CreateGadgetA
  4146.  
  4147.         move.l    d0,a0
  4148.         move.l    a0,GainGad1
  4149.  
  4150.         lea.l    NGSaveGad,a1
  4151.         move.w    #OptionTop,gng_TopEdge(a1)
  4152.         add.w    d5,gng_TopEdge(a1)
  4153.         move.l    #BUTTON_KIND,d0
  4154.         move.l    vi,gng_VisualInfo(a1)
  4155.         lea.l    GadTagList,a2
  4156.         lib    GadTools,CreateGadgetA
  4157.  
  4158.         move.l    d0,a0
  4159.         move.l    a0,SaveGad1
  4160.  
  4161.         lea.l    NGQuitGad,a1
  4162.         move.w    #OptionTop,gng_TopEdge(a1)
  4163.         add.w    d5,gng_TopEdge(a1)
  4164.         move.l    #BUTTON_KIND,d0
  4165.         move.l    vi,gng_VisualInfo(a1)
  4166.         lea.l    GadTagList,a2
  4167.         lib    GadTools,CreateGadgetA
  4168.  
  4169.         move.l    d0,a0
  4170.         move.l    a0,QuitGad1
  4171.         or.w    #GRELRIGHT,gg_Flags(a0)
  4172.  
  4173.         lea.l    NGDatStrGad1,a1
  4174.         move.w    #ShellTop+28,gng_TopEdge(a1)
  4175.         add.w    d5,gng_TopEdge(a1)
  4176.         move.l    #STRING_KIND,d0
  4177.         move.l    vi,gng_VisualInfo(a1)
  4178.         lea.l    DatStrGadTagList,a2
  4179.         lib    GadTools,CreateGadgetA
  4180.  
  4181.         move.l    d0,DatStrGad1
  4182.         move.l    d0,a0
  4183.         move.l    $22(a0),a1
  4184.         move.l    (a1),DatStrGadBuf1
  4185.  
  4186.         lea.l    NGStatusGad,a1
  4187.         move.w    #ShellTop,gng_TopEdge(a1)
  4188.         add.w    d5,gng_TopEdge(a1)
  4189.         move.l    #TEXT_KIND,d0
  4190.         move.l    vi,gng_VisualInfo(a1)
  4191.         lea.l    StatGadTagList,a2
  4192.         lib    GadTools,CreateGadgetA
  4193.  
  4194.         move.l    d0,a0
  4195.         move.l    a0,StatusGad1
  4196.  
  4197.         lea.l    NGLoadGad,a1
  4198.         move.w    #ShellTop+28,gng_TopEdge(a1)
  4199.         add.w    d5,gng_TopEdge(a1)
  4200.         move.l    #BUTTON_KIND,d0
  4201.         move.l    vi,gng_VisualInfo(a1)
  4202.         lea.l    GadTagList,a2
  4203.         lib    GadTools,CreateGadgetA
  4204.  
  4205.         move.l    d0,a0
  4206.         move.l    a0,LoadGad1
  4207.         or.w    #GRELRIGHT,gg_Flags(a0)
  4208.  
  4209.         lea.l    glist2,a0
  4210.         lib    GadTools,CreateContext
  4211.         move.l    d0,ContextGad2
  4212.         beq    NoContextGad
  4213.  
  4214.         move.l    glist2,a0
  4215.         lea.l    NGStrGad1,a1
  4216.         move.w    #ShellTop+1*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4217.         add.w    d5,gng_TopEdge(a1)
  4218.         move.l    #STRING_KIND,d0
  4219.         move.l    vi,gng_VisualInfo(a1)
  4220.         lea.l    StrGadTagList1,a2
  4221.         lib    GadTools,CreateGadgetA
  4222.  
  4223.         move.l    d0,StrGad1
  4224.         move.l    d0,a0
  4225.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4226.         move.l    gg_SpecialInfo(a0),a1
  4227.         move.l    (a1),StrGadBuf1
  4228.  
  4229.         lea.l    NGStrGad2,a1
  4230.         move.w    #ShellTop+1*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4231.         add.w    d5,gng_TopEdge(a1)
  4232.         move.l    #STRING_KIND,d0
  4233.         move.l    vi,gng_VisualInfo(a1)
  4234.         lea.l    StrGadTagList2,a2
  4235.         lib    GadTools,CreateGadgetA
  4236.  
  4237.         move.l    d0,StrGad2
  4238.         move.l    d0,a0
  4239.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4240.         move.l    gg_SpecialInfo(a0),a1
  4241.         move.l    (a1),StrGadBuf2
  4242.  
  4243.         lea.l    NGStrGad3,a1
  4244.         move.w    #ShellTop+2*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4245.         add.w    d5,gng_TopEdge(a1)
  4246.         move.l    #STRING_KIND,d0
  4247.         move.l    vi,gng_VisualInfo(a1)
  4248.         lea.l    StrGadTagList1,a2
  4249.         lib    GadTools,CreateGadgetA
  4250.  
  4251.         move.l    d0,StrGad3
  4252.         move.l    d0,a0
  4253.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4254.         move.l    gg_SpecialInfo(a0),a1
  4255.         move.l    (a1),StrGadBuf3
  4256.  
  4257.         lea.l    NGStrGad4,a1
  4258.         move.w    #ShellTop+2*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4259.         add.w    d5,gng_TopEdge(a1)
  4260.         move.l    #STRING_KIND,d0
  4261.         move.l    vi,gng_VisualInfo(a1)
  4262.         lea.l    StrGadTagList2,a2
  4263.         lib    GadTools,CreateGadgetA
  4264.  
  4265.         move.l    d0,StrGad4
  4266.         move.l    d0,a0
  4267.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4268.         move.l    gg_SpecialInfo(a0),a1
  4269.         move.l    (a1),StrGadBuf4
  4270.  
  4271.         lea.l    NGStrGad5,a1
  4272.         move.w    #ShellTop+3*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4273.         add.w    d5,gng_TopEdge(a1)
  4274.         move.l    #STRING_KIND,d0
  4275.         move.l    vi,gng_VisualInfo(a1)
  4276.         lea.l    StrGadTagList1,a2
  4277.         lib    GadTools,CreateGadgetA
  4278.  
  4279.         move.l    d0,StrGad5
  4280.         move.l    d0,a0
  4281.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4282.         move.l    gg_SpecialInfo(a0),a1
  4283.         move.l    (a1),StrGadBuf5
  4284.  
  4285.         lea.l    NGStrGad6,a1
  4286.         move.w    #ShellTop+3*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4287.         add.w    d5,gng_TopEdge(a1)
  4288.         move.l    #STRING_KIND,d0
  4289.         move.l    vi,gng_VisualInfo(a1)
  4290.         lea.l    StrGadTagList2,a2
  4291.         lib    GadTools,CreateGadgetA
  4292.  
  4293.         move.l    d0,StrGad6
  4294.         move.l    d0,a0
  4295.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4296.         move.l    gg_SpecialInfo(a0),a1
  4297.         move.l    (a1),StrGadBuf6
  4298.  
  4299.         lea.l    NGStrGad7,a1
  4300.         move.w    #ShellTop+4*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4301.         add.w    d5,gng_TopEdge(a1)
  4302.         move.l    #STRING_KIND,d0
  4303.         move.l    vi,gng_VisualInfo(a1)
  4304.         lea.l    StrGadTagList1,a2
  4305.         lib    GadTools,CreateGadgetA
  4306.  
  4307.         move.l    d0,StrGad7
  4308.         move.l    d0,a0
  4309.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4310.         move.l    gg_SpecialInfo(a0),a1
  4311.         move.l    (a1),StrGadBuf7
  4312.  
  4313.         lea.l    NGStrGad8,a1
  4314.         move.w    #ShellTop+4*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4315.         add.w    d5,gng_TopEdge(a1)
  4316.         move.l    #STRING_KIND,d0
  4317.         move.l    vi,gng_VisualInfo(a1)
  4318.         lea.l    StrGadTagList2,a2
  4319.         lib    GadTools,CreateGadgetA
  4320.  
  4321.         move.l    d0,StrGad8
  4322.         move.l    d0,a0
  4323.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4324.         move.l    gg_SpecialInfo(a0),a1
  4325.         move.l    (a1),StrGadBuf8
  4326.  
  4327.         lea.l    NGStrGad9,a1
  4328.         move.w    #ShellTop+5*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4329.         add.w    d5,gng_TopEdge(a1)
  4330.         move.l    #STRING_KIND,d0
  4331.         move.l    vi,gng_VisualInfo(a1)
  4332.         lea.l    StrGadTagList1,a2
  4333.         lib    GadTools,CreateGadgetA
  4334.  
  4335.         move.l    d0,StrGad9
  4336.         move.l    d0,a0
  4337.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4338.         move.l    gg_SpecialInfo(a0),a1
  4339.         move.l    (a1),StrGadBuf9
  4340.  
  4341.         lea.l    NGStrGad10,a1
  4342.         move.w    #ShellTop+5*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4343.         add.w    d5,gng_TopEdge(a1)
  4344.         move.l    #STRING_KIND,d0
  4345.         move.l    vi,gng_VisualInfo(a1)
  4346.         lea.l    StrGadTagList2,a2
  4347.         lib    GadTools,CreateGadgetA
  4348.  
  4349.         move.l    d0,StrGad10
  4350.         move.l    d0,a0
  4351.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4352.         move.l    gg_SpecialInfo(a0),a1
  4353.         move.l    (a1),StrGadBuf10
  4354.  
  4355.         lea.l    NGStrGad11,a1
  4356.         move.w    #ShellTop+6*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4357.         add.w    d5,gng_TopEdge(a1)
  4358.         move.l    #STRING_KIND,d0
  4359.         move.l    vi,gng_VisualInfo(a1)
  4360.         lea.l    StrGadTagList1,a2
  4361.         lib    GadTools,CreateGadgetA
  4362.  
  4363.         move.l    d0,StrGad11
  4364.         move.l    d0,a0
  4365.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4366.         move.l    gg_SpecialInfo(a0),a1
  4367.         move.l    (a1),StrGadBuf11
  4368.  
  4369.         lea.l    NGStrGad12,a1
  4370.         move.w    #ShellTop+6*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4371.         add.w    d5,gng_TopEdge(a1)
  4372.         move.l    #STRING_KIND,d0
  4373.         move.l    vi,gng_VisualInfo(a1)
  4374.         lea.l    StrGadTagList2,a2
  4375.         lib    GadTools,CreateGadgetA
  4376.  
  4377.         move.l    d0,StrGad12
  4378.         move.l    d0,a0
  4379.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4380.         move.l    gg_SpecialInfo(a0),a1
  4381.         move.l    (a1),StrGadBuf12
  4382.  
  4383.         lea.l    NGStrGad13,a1
  4384.         move.w    #ShellTop+7*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4385.         add.w    d5,gng_TopEdge(a1)
  4386.         move.l    #STRING_KIND,d0
  4387.         move.l    vi,gng_VisualInfo(a1)
  4388.         lea.l    StrGadTagList1,a2
  4389.         lib    GadTools,CreateGadgetA
  4390.  
  4391.         move.l    d0,StrGad13
  4392.         move.l    d0,a0
  4393.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4394.         move.l    gg_SpecialInfo(a0),a1
  4395.         move.l    (a1),StrGadBuf13
  4396.  
  4397.         lea.l    NGStrGad14,a1
  4398.         move.w    #ShellTop+7*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4399.         add.w    d5,gng_TopEdge(a1)
  4400.         move.l    #STRING_KIND,d0
  4401.         move.l    vi,gng_VisualInfo(a1)
  4402.         lea.l    StrGadTagList2,a2
  4403.         lib    GadTools,CreateGadgetA
  4404.  
  4405.         move.l    d0,StrGad14
  4406.         move.l    d0,a0
  4407.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4408.         move.l    gg_SpecialInfo(a0),a1
  4409.         move.l    (a1),StrGadBuf14
  4410.  
  4411.         lea.l    NGStrGad15,a1
  4412.         move.w    #ShellTop+8*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4413.         add.w    d5,gng_TopEdge(a1)
  4414.         move.l    #STRING_KIND,d0
  4415.         move.l    vi,gng_VisualInfo(a1)
  4416.         lea.l    StrGadTagList1,a2
  4417.         lib    GadTools,CreateGadgetA
  4418.  
  4419.         move.l    d0,StrGad15
  4420.         move.l    d0,a0
  4421.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4422.         move.l    gg_SpecialInfo(a0),a1
  4423.         move.l    (a1),StrGadBuf15
  4424.  
  4425.         lea.l    NGStrGad16,a1
  4426.         move.w    #ShellTop+8*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4427.         add.w    d5,gng_TopEdge(a1)
  4428.         move.l    #STRING_KIND,d0
  4429.         move.l    vi,gng_VisualInfo(a1)
  4430.         lea.l    StrGadTagList2,a2
  4431.         lib    GadTools,CreateGadgetA
  4432.  
  4433.         move.l    d0,StrGad16
  4434.         move.l    d0,a0
  4435.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4436.         move.l    gg_SpecialInfo(a0),a1
  4437.         move.l    (a1),StrGadBuf16
  4438.  
  4439.         lea.l    NGStrGad17,a1
  4440.         move.w    #ShellTop+9*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4441.         add.w    d5,gng_TopEdge(a1)
  4442.         move.l    #STRING_KIND,d0
  4443.         move.l    vi,gng_VisualInfo(a1)
  4444.         lea.l    StrGadTagList1,a2
  4445.         lib    GadTools,CreateGadgetA
  4446.  
  4447.         move.l    d0,StrGad17
  4448.         move.l    d0,a0
  4449.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4450.         move.l    gg_SpecialInfo(a0),a1
  4451.         move.l    (a1),StrGadBuf17
  4452.  
  4453.         lea.l    NGStrGad18,a1
  4454.         move.w    #ShellTop+9*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4455.         add.w    d5,gng_TopEdge(a1)
  4456.         move.l    #STRING_KIND,d0
  4457.         move.l    vi,gng_VisualInfo(a1)
  4458.         lea.l    StrGadTagList2,a2
  4459.         lib    GadTools,CreateGadgetA
  4460.  
  4461.         move.l    d0,StrGad18
  4462.         move.l    d0,a0
  4463.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4464.         move.l    gg_SpecialInfo(a0),a1
  4465.         move.l    (a1),StrGadBuf18
  4466.  
  4467.         lea.l    NGStrGad19,a1
  4468.         move.w    #ShellTop+10*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4469.         add.w    d5,gng_TopEdge(a1)
  4470.         move.l    #STRING_KIND,d0
  4471.         move.l    vi,gng_VisualInfo(a1)
  4472.         lea.l    StrGadTagList1,a2
  4473.         lib    GadTools,CreateGadgetA
  4474.  
  4475.         move.l    d0,StrGad19
  4476.         move.l    d0,a0
  4477.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4478.         move.l    gg_SpecialInfo(a0),a1
  4479.         move.l    (a1),StrGadBuf19
  4480.  
  4481.         lea.l    NGStrGad20,a1
  4482.         move.w    #ShellTop+10*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4483.         add.w    d5,gng_TopEdge(a1)
  4484.         move.l    #STRING_KIND,d0
  4485.         move.l    vi,gng_VisualInfo(a1)
  4486.         lea.l    StrGadTagList2,a2
  4487.         lib    GadTools,CreateGadgetA
  4488.  
  4489.         move.l    d0,StrGad20
  4490.         move.l    d0,a0
  4491.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4492.         move.l    gg_SpecialInfo(a0),a1
  4493.         move.l    (a1),StrGadBuf20
  4494.  
  4495.         lea.l    NGDesc1Gad,a1
  4496.         move.w    #ShellTop,gng_TopEdge(a1)
  4497.         add.w    d5,gng_TopEdge(a1)
  4498.         move.l    #TEXT_KIND,d0
  4499.         move.l    vi,gng_VisualInfo(a1)
  4500.         lea.l    DescGadTagList,a2
  4501.         lib    GadTools,CreateGadgetA
  4502.  
  4503.         move.l    d0,a0
  4504.  
  4505.         lea.l    NGDesc2Gad,a1
  4506.         move.w    #ShellTop,gng_TopEdge(a1)
  4507.         add.w    d5,gng_TopEdge(a1)
  4508.         move.l    #TEXT_KIND,d0
  4509.         move.l    vi,gng_VisualInfo(a1)
  4510.         lea.l    DescGadTagList,a2
  4511.         lib    GadTools,CreateGadgetA
  4512.  
  4513.         move.l    d0,a0
  4514.         lea.l    NGGetGad1,a1
  4515.         move.w    #ShellTop+11*(10+INTERHEIGHT)+2*INTERHEIGHT,gng_TopEdge(a1)
  4516.         add.w    d5,gng_TopEdge(a1)
  4517.         move.l    #BUTTON_KIND,d0
  4518.         move.l    vi,gng_VisualInfo(a1)
  4519.         lea.l    GadTagList,a2
  4520.         lib    GadTools,CreateGadgetA
  4521.  
  4522.         move.l    d0,a0
  4523.         move.l    a0,GetGad1
  4524.  
  4525. ;Priority Window
  4526.  
  4527.         lea.l    glist3,a0
  4528.         lib    GadTools,CreateContext
  4529.         move.l    d0,ContextGad3
  4530.         beq    NoContextGad
  4531.  
  4532.         move.l    glist3,a0
  4533.         lea.l    NGStrGad21,a1
  4534.         move.w    #ShellTop,gng_TopEdge(a1)
  4535.         add.w    d5,gng_TopEdge(a1)
  4536.         move.l    #INTEGER_KIND,d0
  4537.         move.l    vi,gng_VisualInfo(a1)
  4538.         lea.l    StrGadTagList3,a2
  4539.         lib    GadTools,CreateGadgetA
  4540.  
  4541.         move.l    d0,StrGad21
  4542.         move.l    d0,a0
  4543.         move.l    gg_SpecialInfo(a0),a1
  4544.         add.l    #si_LongInt,a1
  4545.         move.l    a1,StrGadInt21
  4546.  
  4547. ;Error window
  4548.  
  4549.         lea.l    glist4,a0
  4550.         lib    GadTools,CreateContext
  4551.         move.l    d0,ContextGad4
  4552.         beq    NoContextGad
  4553.  
  4554.         move.l    glist4,a0
  4555.         lea.l    NGStrGad22,a1
  4556.         move.w    #ShellTop+1*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4557.         add.w    d5,gng_TopEdge(a1)
  4558.         move.l    #STRING_KIND,d0
  4559.         move.l    vi,gng_VisualInfo(a1)
  4560.         lea.l    StrGadTagList2,a2
  4561.         lib    GadTools,CreateGadgetA
  4562.  
  4563.         move.l    d0,StrGad22
  4564.         move.l    d0,a0
  4565.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4566.         move.l    gg_SpecialInfo(a0),a1
  4567.         move.l    (a1),StrGadBuf22
  4568.  
  4569.         lea.l    NGStrGad23,a1
  4570.         move.w    #ShellTop+2*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4571.         add.w    d5,gng_TopEdge(a1)
  4572.         move.l    #STRING_KIND,d0
  4573.         move.l    vi,gng_VisualInfo(a1)
  4574.         lea.l    StrGadTagList2,a2
  4575.         lib    GadTools,CreateGadgetA
  4576.  
  4577.         move.l    d0,StrGad23
  4578.         move.l    d0,a0
  4579.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4580.         move.l    gg_SpecialInfo(a0),a1
  4581.         move.l    (a1),StrGadBuf23
  4582.  
  4583.         lea.l    NGStrGad24,a1
  4584.         move.w    #ShellTop+3*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4585.         add.w    d5,gng_TopEdge(a1)
  4586.         move.l    #STRING_KIND,d0
  4587.         move.l    vi,gng_VisualInfo(a1)
  4588.         lea.l    StrGadTagList2,a2
  4589.         lib    GadTools,CreateGadgetA
  4590.  
  4591.         move.l    d0,StrGad24
  4592.         move.l    d0,a0
  4593.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4594.         move.l    gg_SpecialInfo(a0),a1
  4595.         move.l    (a1),StrGadBuf24
  4596.  
  4597.         lea.l    NGStrGad25,a1
  4598.         move.w    #ShellTop+4*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4599.         add.w    d5,gng_TopEdge(a1)
  4600.         move.l    #STRING_KIND,d0
  4601.         move.l    vi,gng_VisualInfo(a1)
  4602.         lea.l    StrGadTagList2,a2
  4603.         lib    GadTools,CreateGadgetA
  4604.  
  4605.         move.l    d0,StrGad25
  4606.         move.l    d0,a0
  4607.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4608.         move.l    gg_SpecialInfo(a0),a1
  4609.         move.l    (a1),StrGadBuf25
  4610.  
  4611.         lea.l    NGStrGad26,a1
  4612.         move.w    #ShellTop+5*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4613.         add.w    d5,gng_TopEdge(a1)
  4614.         move.l    #STRING_KIND,d0
  4615.         move.l    vi,gng_VisualInfo(a1)
  4616.         lea.l    StrGadTagList2,a2
  4617.         lib    GadTools,CreateGadgetA
  4618.  
  4619.         move.l    d0,StrGad26
  4620.         move.l    d0,a0
  4621.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4622.         move.l    gg_SpecialInfo(a0),a1
  4623.         move.l    (a1),StrGadBuf26
  4624.  
  4625.         lea.l    NGStrGad27,a1
  4626.         move.w    #ShellTop+6*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4627.         add.w    d5,gng_TopEdge(a1)
  4628.         move.l    #STRING_KIND,d0
  4629.         move.l    vi,gng_VisualInfo(a1)
  4630.         lea.l    StrGadTagList2,a2
  4631.         lib    GadTools,CreateGadgetA
  4632.  
  4633.         move.l    d0,StrGad27
  4634.         move.l    d0,a0
  4635.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4636.         move.l    gg_SpecialInfo(a0),a1
  4637.         move.l    (a1),StrGadBuf27
  4638.  
  4639.         lea.l    NGStrGad28,a1
  4640.         move.w    #ShellTop+7*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4641.         add.w    d5,gng_TopEdge(a1)
  4642.         move.l    #STRING_KIND,d0
  4643.         move.l    vi,gng_VisualInfo(a1)
  4644.         lea.l    StrGadTagList2,a2
  4645.         lib    GadTools,CreateGadgetA
  4646.  
  4647.         move.l    d0,StrGad28
  4648.         move.l    d0,a0
  4649.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4650.         move.l    gg_SpecialInfo(a0),a1
  4651.         move.l    (a1),StrGadBuf28
  4652.  
  4653.         lea.l    NGStrGad29,a1
  4654.         move.w    #ShellTop+8*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4655.         add.w    d5,gng_TopEdge(a1)
  4656.         move.l    #STRING_KIND,d0
  4657.         move.l    vi,gng_VisualInfo(a1)
  4658.         lea.l    StrGadTagList2,a2
  4659.         lib    GadTools,CreateGadgetA
  4660.  
  4661.         move.l    d0,StrGad29
  4662.         move.l    d0,a0
  4663.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4664.         move.l    gg_SpecialInfo(a0),a1
  4665.         move.l    (a1),StrGadBuf29
  4666.  
  4667.         lea.l    NGStrGad30,a1
  4668.         move.w    #ShellTop+9*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4669.         add.w    d5,gng_TopEdge(a1)
  4670.         move.l    #STRING_KIND,d0
  4671.         move.l    vi,gng_VisualInfo(a1)
  4672.         lea.l    StrGadTagList2,a2
  4673.         lib    GadTools,CreateGadgetA
  4674.  
  4675.         move.l    d0,StrGad30
  4676.         move.l    d0,a0
  4677.         or.w    #GADGIMMEDIATE,gg_Activation(a0)
  4678.         move.l    gg_SpecialInfo(a0),a1
  4679.         move.l    (a1),StrGadBuf30
  4680.  
  4681.         lea.l    NGDesc3Gad,a1
  4682.         move.w    #ShellTop,gng_TopEdge(a1)
  4683.         add.w    d5,gng_TopEdge(a1)
  4684.         move.l    #TEXT_KIND,d0
  4685.         move.l    vi,gng_VisualInfo(a1)
  4686.         lea.l    DescGadTagList,a2
  4687.         lib    GadTools,CreateGadgetA
  4688.  
  4689.         move.l    d0,a0
  4690.  
  4691.         lea.l    NGDesc4Gad,a1
  4692.         move.w    #ShellTop,gng_TopEdge(a1)
  4693.         add.w    d5,gng_TopEdge(a1)
  4694.         move.l    #TEXT_KIND,d0
  4695.         move.l    vi,gng_VisualInfo(a1)
  4696.         lea.l    DescGadTagList,a2
  4697.         lib    GadTools,CreateGadgetA
  4698.  
  4699.         move.l    d0,a0
  4700.  
  4701.         lea.l    NGDesc5Gad,a1
  4702.         move.w    #ShellTop+1*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4703.         add.w    d5,gng_TopEdge(a1)
  4704.         move.l    #TEXT_KIND,d0
  4705.         move.l    vi,gng_VisualInfo(a1)
  4706.         lea.l    DescGadTagList,a2
  4707.         lib    GadTools,CreateGadgetA
  4708.  
  4709.         move.l    d0,a0
  4710.  
  4711.         lea.l    NGDesc6Gad,a1
  4712.         move.w    #ShellTop+2*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4713.         add.w    d5,gng_TopEdge(a1)
  4714.         move.l    #TEXT_KIND,d0
  4715.         move.l    vi,gng_VisualInfo(a1)
  4716.         lea.l    DescGadTagList,a2
  4717.         lib    GadTools,CreateGadgetA
  4718.  
  4719.         move.l    d0,a0
  4720.  
  4721.         lea.l    NGDesc7Gad,a1
  4722.         move.w    #ShellTop+3*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4723.         add.w    d5,gng_TopEdge(a1)
  4724.         move.l    #TEXT_KIND,d0
  4725.         move.l    vi,gng_VisualInfo(a1)
  4726.         lea.l    DescGadTagList,a2
  4727.         lib    GadTools,CreateGadgetA
  4728.  
  4729.         move.l    d0,a0
  4730.  
  4731.         lea.l    NGDesc8Gad,a1
  4732.         move.w    #ShellTop+4*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4733.         add.w    d5,gng_TopEdge(a1)
  4734.         move.l    #TEXT_KIND,d0
  4735.         move.l    vi,gng_VisualInfo(a1)
  4736.         lea.l    DescGadTagList,a2
  4737.         lib    GadTools,CreateGadgetA
  4738.  
  4739.         move.l    d0,a0
  4740.  
  4741.         lea.l    NGDesc9Gad,a1
  4742.         move.w    #ShellTop+5*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4743.         add.w    d5,gng_TopEdge(a1)
  4744.         move.l    #TEXT_KIND,d0
  4745.         move.l    vi,gng_VisualInfo(a1)
  4746.         lea.l    DescGadTagList,a2
  4747.         lib    GadTools,CreateGadgetA
  4748.  
  4749.         move.l    d0,a0
  4750.  
  4751.         lea.l    NGDesc10Gad,a1
  4752.         move.w    #ShellTop+6*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4753.         add.w    d5,gng_TopEdge(a1)
  4754.         move.l    #TEXT_KIND,d0
  4755.         move.l    vi,gng_VisualInfo(a1)
  4756.         lea.l    DescGadTagList,a2
  4757.         lib    GadTools,CreateGadgetA
  4758.  
  4759.         move.l    d0,a0
  4760.  
  4761.         lea.l    NGDesc11Gad,a1
  4762.         move.w    #ShellTop+7*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4763.         add.w    d5,gng_TopEdge(a1)
  4764.         move.l    #TEXT_KIND,d0
  4765.         move.l    vi,gng_VisualInfo(a1)
  4766.         lea.l    DescGadTagList,a2
  4767.         lib    GadTools,CreateGadgetA
  4768.  
  4769.         move.l    d0,a0
  4770.  
  4771.         lea.l    NGDesc12Gad,a1
  4772.         move.w    #ShellTop+8*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4773.         add.w    d5,gng_TopEdge(a1)
  4774.         move.l    #TEXT_KIND,d0
  4775.         move.l    vi,gng_VisualInfo(a1)
  4776.         lea.l    DescGadTagList,a2
  4777.         lib    GadTools,CreateGadgetA
  4778.  
  4779.         move.l    d0,a0
  4780.  
  4781.         lea.l    NGDesc13Gad,a1
  4782.         move.w    #ShellTop+9*(10+INTERHEIGHT)+5,gng_TopEdge(a1)
  4783.         add.w    d5,gng_TopEdge(a1)
  4784.         move.l    #TEXT_KIND,d0
  4785.         move.l    vi,gng_VisualInfo(a1)
  4786.         lea.l    DescGadTagList,a2
  4787.         lib    GadTools,CreateGadgetA
  4788.  
  4789.         move.l    d0,a0
  4790.  
  4791.         lea.l    NGGetGad2,a1
  4792.         move.w    #ShellTop+10*(10+INTERHEIGHT)+2*INTERHEIGHT,gng_TopEdge(a1)
  4793.         add.w    d5,gng_TopEdge(a1)
  4794.         move.l    #BUTTON_KIND,d0
  4795.         move.l    vi,gng_VisualInfo(a1)
  4796.         lea.l    GadTagList,a2
  4797.         lib    GadTools,CreateGadgetA
  4798.  
  4799.         move.l    d0,a0
  4800.         move.l    a0,GetGad2
  4801.  
  4802.         move.b    #1,GadMagic        ;Make worked OK
  4803.  
  4804. ;New style menu stuff
  4805.  
  4806.         lea.l    MNProjectMenu1,a0
  4807.         lea.l    MenuTagList,a1
  4808.         lib    GadTools,CreateMenusA
  4809.         move.l    d0,mlist
  4810.         beq    NoMenus
  4811.  
  4812.         move.l    mlist,a0
  4813.         move.l    vi,a1
  4814.         lea.l    MenuTagList,a2
  4815.         lib    GadTools,LayoutMenusA
  4816.  
  4817.         lea.l    MNPageMenu1,a0
  4818.         lea.l    MenuTagList2,a1
  4819.         lib    GadTools,CreateMenusA
  4820.         move.l    d0,mlist2
  4821.         beq    NoMenus
  4822.  
  4823.         move.l    mlist2,a0
  4824.         move.l    vi,a1
  4825.         lea.l    MenuTagList2,a2
  4826.         lib    GadTools,LayoutMenusA
  4827.         tst.l    d0
  4828.         beq    NoMenus
  4829.         move.b    #1,MenuMagic
  4830.         move.l    #-1,d0
  4831.         rts
  4832.  
  4833. ;Open Window 1
  4834.  
  4835. OpenWin1:    tst.l    Window1
  4836.         bne    OpenWin1_OUT
  4837.  
  4838.         bsr    DoLayOut
  4839.         tst.l    d0
  4840.         beq    OpenWin1_ERR1
  4841.  
  4842.         move.l    OptPubScreen,Win1TagList.1
  4843.         tst.l    OptionIconify
  4844.         beq    OpenWin1.01
  4845.         lea.l    NewWindow1,a0
  4846.         and.l    #~ACTIVATE,nw_Flags(a0)
  4847.         move.l    NewWindow1,ZoomXY
  4848.         move.l    NewWindow1+4,ZoomXY+4
  4849.         move.l    Alt1XY,nw_LeftEdge(a0)
  4850.         move.w    #160,nw_Width(a0)
  4851.         move.w    BHeight,nw_Height(a0)
  4852. OpenWin1.01:    lea.l    NewWindow1,a0
  4853.         lea.l    Win1TagList,a1
  4854.         lib    Intuition,OpenWindowTagList
  4855.         move.l    d0,Window1
  4856.         beq    OpenWin1_ERR1
  4857.         move.l    Window1,AslReqTags+4
  4858.         bsr    AddGads            ;Window refreshed here
  4859.         move.l    Window1,a0
  4860.         move.l    $32(a0),RP
  4861.         move.l    mlist,a1
  4862.         lib    Intuition,SetMenuStrip
  4863.         bsr    UnLockPubScr
  4864. ;        bsr    ActGad            ;BUG: Crashes in certain cases?!?
  4865. OpenWin1_OUT:    move.l    #-1,d0            ;BUG: When no prefs file?
  4866.         rts
  4867. OpenWin1_ERR1:    clr.l    d0
  4868.         rts        
  4869.  
  4870. CloseWin1:    tst.l    Window1
  4871.         beq    CloseWin1_OUT
  4872. CloseWin1.1:    move.l    Window1,a0
  4873.         lib    Intuition,ClearMenuStrip
  4874.         move.l    Window1,a3
  4875.         bsr    ClearMSGs
  4876. CloseWin1_OUT:    clr.l    Window1
  4877.         rts
  4878.  
  4879. ;Open Window 2 (Edit commands)
  4880.  
  4881. OpenWin2:    move.l    OptPubScreen,Win2TagList.1
  4882.         lea.l    NewWindow2,a0
  4883.         lea.l    Win2TagList,a1
  4884.         lib    Intuition,OpenWindowTagList
  4885.         move.l    d0,Window2
  4886.         beq    OpenWin2_ERR1
  4887.         move.l    Window2,a0
  4888.         move.l    mlist2,a1
  4889.         lib    Intuition,SetMenuStrip
  4890.         bsr    AddGads2        ;Window refreshed here
  4891.         move.l    #-1,d0
  4892.         rts
  4893. OpenWin2_ERR1:    clr.l    d0
  4894.         rts        
  4895.  
  4896. CloseWin2:    tst.l    Window2
  4897.         beq    CloseWin2_OUT
  4898.         move.l    Window2,a0
  4899.         lib    Intuition,ClearMenuStrip
  4900.         move.l    Window2,a3
  4901.         bsr    ClearMSGs
  4902. CloseWin2_OUT:    clr.l    Window2
  4903.         rts
  4904.  
  4905. ;Open Window 3 (Priority requester)
  4906.  
  4907. OpenWin3:    move.l    OptPubScreen,Win2TagList.1    ;Yes, use Win2's tags...
  4908.         lea.l    NewWindow3,a0
  4909.         lea.l    glist3,a1
  4910.         move.l    a1,nw_FirstGadget(a0)
  4911.         lea.l    Win2TagList,a1
  4912.         lib    Intuition,OpenWindowTagList
  4913.         move.l    d0,Window3
  4914.         beq    OpenWin3_ERR1
  4915.  
  4916.         move.l    Window3,a0
  4917.         sub.l    a1,a1
  4918.         lib    GadTools,GT_RefreshWindow
  4919.         move.l    #-1,d0
  4920.         rts
  4921. OpenWin3_ERR1:    clr.l    d0
  4922.         rts        
  4923.  
  4924. CloseWin3:    tst.l    Window3
  4925.         beq    CloseWin3_OUT
  4926.         move.l    Window3,a3
  4927.         bsr    ClearMSGs
  4928. CloseWin3_OUT:    clr.l    Window3
  4929.         rts
  4930.  
  4931. ;Open Window 4 (Edit commands)
  4932.  
  4933. OpenWin4:    move.l    OptPubScreen,Win2TagList.1    ;Yes, use Win2's tags...
  4934.         lea.l    NewWindow4,a0
  4935.         lea.l    Win2TagList,a1
  4936.         lib    Intuition,OpenWindowTagList
  4937.         move.l    d0,Window4
  4938.         beq    OpenWin4_ERR1
  4939.         bsr    AddGads4        ;Window refreshed here
  4940.         move.l    #-1,d0
  4941.         rts
  4942. OpenWin4_ERR1:    clr.l    d0
  4943.         rts        
  4944.  
  4945. CloseWin4:    tst.l    Window4
  4946.         beq    CloseWin4_OUT
  4947.         move.l    Window4,a3
  4948.         bsr    ClearMSGs
  4949. CloseWin4_OUT:    clr.l    Window4
  4950.         rts
  4951.  
  4952. ;ClearMsgs subroutine
  4953. ;a3 = window structure
  4954.  
  4955. ClearMSGs:    lib    Exec,Forbid
  4956.         move.l    $56(a3),a2
  4957. ClearMsg1:    move.l    a2,a0
  4958.         lib    GadTools,GT_GetIMsg
  4959.         tst.l    d0
  4960.         beq    ClearMsg2
  4961.         move.l    d0,a1
  4962.         flib    GadTools,GT_ReplyIMsg
  4963.         bra    ClearMsg1
  4964. ClearMsg2:    move.l    a3,a0
  4965.         lib    Intuition,CloseWindow
  4966.         lib    Exec,Permit
  4967. ClearMsg3:    rts
  4968.  
  4969. Clean2.0Magic:    tst.b    GadMagic
  4970.         beq    Clean2.0M2
  4971.         move.l    glist,a0
  4972.         lib    GadTools,FreeGadgets
  4973.         move.l    glist2,a0
  4974.         lib    GadTools,FreeGadgets
  4975.         move.l    glist3,a0
  4976.         lib    GadTools,FreeGadgets
  4977.         move.l    glist4,a0
  4978.         lib    GadTools,FreeGadgets
  4979.  
  4980. Clean2.0M2:    tst.b    MenuMagic
  4981.         beq    Clean2.0M3
  4982.         move.l    mlist,a0
  4983.         lib    GadTools,FreeMenus
  4984.         move.l    mlist2,a0
  4985.         lib    GadTools,FreeMenus
  4986.  
  4987. Clean2.0M3:    tst.l    vi
  4988.         beq    Clean2.0_OUT
  4989.         move.l    vi,a0
  4990.         lib    GadTools,FreeVisualInfo
  4991.  
  4992. Clean2.0_OUT:    rts
  4993.  
  4994. ;Error etc. messages
  4995.  
  4996. NoRDArgs:    lib    Dos,IoErr
  4997.         move.l    d0,d1
  4998.         clr.l    d2
  4999.         lib    Dos,PrintFault
  5000.         bra    ShutDown
  5001.  
  5002. NoMsgPort:    lea.l    NoMsgPortText1,a0
  5003.         bsr    Printer
  5004.         bra    ShutDown
  5005.  
  5006. NoMsgPort2:    lea.l    NoMsgPortText2,a0
  5007.         bsr    Printer
  5008.         bra    ShutDown
  5009.  
  5010. NoDos:        pull    d2-d7/a2-a6
  5011.         move.l    #RETURN_FAIL,d0
  5012.         rts
  5013.  
  5014. NoInt:        lea.l    NoIntText1,a0
  5015.         bsr    Printer
  5016.         bra    ShutDown
  5017.  
  5018. NoCommodities:    lea.l    NoCommoText1,a0
  5019.         bsr    Printer
  5020.         bra    ShutDown
  5021.  
  5022. NoAsl:        lea.l    NoAslText1,a0
  5023.         bsr    Printer
  5024.         bra    ShutDown
  5025.  
  5026. NoAslReq:    lea.l    NoAslReqText1,a0
  5027.         bsr    Printer
  5028.         bra    ShutDown
  5029.  
  5030. NoUtility:    lea.l    NoUtilityText1,a0
  5031.         bsr    Printer
  5032.         bra    ShutDown
  5033.  
  5034. NoVoice:    lea.l    NoVoiceText1,a0
  5035.         bsr    Printer
  5036.         bra    ShutDown
  5037.  
  5038. NoGadTools:    lea.l    NoGTText1,a0
  5039.         bsr    Printer
  5040.         bra    ShutDown
  5041.  
  5042. NoIcon:        lea.l    NoIconText1,a0
  5043.         bsr    Printer
  5044.         bra    ShutDown
  5045.  
  5046. NoIOReq:    lea.l    NoIOReqText1,a0
  5047.         bsr    Printer
  5048.         bra    ShutDown
  5049.  
  5050. NoTimer:    lea.l    NoTimerText1,a0
  5051.         bsr    Printer
  5052.         bra    ShutDown
  5053.  
  5054. NoPubScreen:    lea.l    NoPubScrText1,a0
  5055.         bsr    Printer
  5056.         clr.l    d0
  5057.         rts
  5058.  
  5059. NoWindow1:    lea.l    NoWindowText1,a0
  5060.         bsr    Printer
  5061.         bra    ShutDown
  5062.  
  5063. NoContextGad:    lea.l    NoContextText1,a0
  5064.         bsr    Printer
  5065.         clr.l    d0
  5066.         rts
  5067.  
  5068. NoMenus:    lea.l    NoMenusText1,a0
  5069.         bsr    Printer
  5070.         clr.l    d0
  5071.         rts
  5072.  
  5073. NoCommodity:    lea.l    NoCommodityText1,a0
  5074.         bsr    Printer
  5075.         bra    ShutDown
  5076.  
  5077. NoFilter:    lea.l    BadPopKeyText1,a0
  5078.         bsr    Printer
  5079.         bra    NoCommodity
  5080.  
  5081. BadPriority:    lea.l    BadPriorityText1,a0
  5082.         bsr    Printer
  5083.         bra    NoCommodity
  5084.  
  5085. Printer:    printa    a0,_stdout
  5086.         rts
  5087.  
  5088. Inform:        tst.l    Window1
  5089.         beq    Inform_OUT
  5090.         push    a0
  5091.         move.l    a0,SGTL2
  5092.         move.l    StatusGad1,a0
  5093.         move.l    Window1,a1
  5094.         sub.l    a2,a2
  5095.         lea.l    StatGadTagList2,a3
  5096.         lib    GadTools,GT_SetGadgetAttrsA
  5097.  
  5098.         pull    a1
  5099.         bsr    SetTitle
  5100. Inform_OUT:    rts
  5101.  
  5102. ;Give this the title pointer in a1
  5103.  
  5104. SetTitle:    tst.l    Window1
  5105.         beq    SetTitle_OUT
  5106.         push    a2
  5107.         move.l    Window1,a0
  5108.         move.l    #-1,a2
  5109.         lib    Intuition,SetWindowTitles
  5110.         pull    a2
  5111. SetTitle_OUT:    rts
  5112.  
  5113. ;Does a normal AutoRequest
  5114. ;
  5115. ;INPUT
  5116. ;
  5117. ;a1 = Main text body
  5118. ;a2 = Pos text
  5119. ;a3 = Neg text
  5120.  
  5121. DoAutoRequest:    clr.l    d0
  5122.         clr.l    d1
  5123.         clr.l    d2
  5124.         clr.l    d3
  5125.         sub.l    a0,a0        ;No win, cos' might be here b4 anything open
  5126.         lib    Intuition,AutoRequest
  5127.         rts
  5128.  
  5129. ;Reservations
  5130.  
  5131.         libnames
  5132.  
  5133. _SysBase:    dc.l    0
  5134. _DOSBase:    dc.l    0
  5135. _CxBase:    dc.l    0
  5136.  
  5137. ;Options
  5138.  
  5139. RDArgs1:    dc.l    0
  5140.  
  5141. CLArray1:
  5142. FromFile:    dc.l    0        ;A pointer to filename of PREFS!
  5143. OptionIconify:    dc.l    0
  5144. OptPubScreen:    dc.l    0        ;A pointer to pubscreen name
  5145. OptCXPri:    dc.l    0
  5146. OptCXPopKey:    dc.l    DefaultPopKey    ;A pointer to popkey string
  5147. OptCXPopUp:    dc.l    0        ;A pointer to 'Yes'/'No'
  5148. WBOptCXPri:    dc.l    0
  5149.  
  5150. ;ASL Stuff
  5151.  
  5152. AslReq:        dc.l    0
  5153.  
  5154. ;GadTools stuff
  5155.  
  5156. vi:        dc.l    0        ;Visual Info
  5157. mlist:        dc.l    0
  5158. mlist2:        dc.l    0
  5159. ContextGad:    dc.l    0
  5160. ContextGad2:    dc.l    0
  5161. ContextGad3:    dc.l    0
  5162. ContextGad4:    dc.l    0
  5163. GadMagic:    dc.b    0
  5164. MenuMagic:    dc.b    0
  5165.  
  5166. ;Gadgets
  5167.  
  5168. OnOffGad1:    dc.l    0
  5169. GainUGad1:    dc.l    0
  5170. GainDGad1:    dc.l    0
  5171. GainGad1:    dc.l    0        ;Gain number
  5172. SaveGad1:    dc.l    0
  5173. QuitGad1:    dc.l    0
  5174. DatStrGad1:    dc.l    0
  5175. DatStrGadBuf1:    dc.l    0        ;Only a pointer!
  5176. StatusGad1:    dc.l    0
  5177. LoadGad1:    dc.l    0
  5178. GetGad1:    dc.l    0
  5179. GetGad2:    dc.l    0
  5180.  
  5181. StrGad1:    dc.l    0
  5182. StrGadBuf1:    dc.l    0        ;Only a pointer!
  5183. StrGad2:    dc.l    0
  5184. StrGadBuf2:    dc.l    0        ;Only a pointer!
  5185. StrGad3:    dc.l    0
  5186. StrGadBuf3:    dc.l    0        ;Only a pointer!
  5187. StrGad4:    dc.l    0
  5188. StrGadBuf4:    dc.l    0        ;Only a pointer!
  5189. StrGad5:    dc.l    0
  5190. StrGadBuf5:    dc.l    0        ;Only a pointer!
  5191. StrGad6:    dc.l    0
  5192. StrGadBuf6:    dc.l    0        ;Only a pointer!
  5193. StrGad7:    dc.l    0
  5194. StrGadBuf7:    dc.l    0        ;Only a pointer!
  5195. StrGad8:    dc.l    0
  5196. StrGadBuf8:    dc.l    0        ;Only a pointer!
  5197. StrGad9:    dc.l    0
  5198. StrGadBuf9:    dc.l    0        ;Only a pointer!
  5199. StrGad10:    dc.l    0
  5200. StrGadBuf10:    dc.l    0        ;Only a pointer!
  5201. StrGad11:    dc.l    0
  5202. StrGadBuf11:    dc.l    0        ;Only a pointer!
  5203. StrGad12:    dc.l    0
  5204. StrGadBuf12:    dc.l    0        ;Only a pointer!
  5205. StrGad13:    dc.l    0
  5206. StrGadBuf13:    dc.l    0        ;Only a pointer!
  5207. StrGad14:    dc.l    0
  5208. StrGadBuf14:    dc.l    0        ;Only a pointer!
  5209. StrGad15:    dc.l    0
  5210. StrGadBuf15:    dc.l    0        ;Only a pointer!
  5211. StrGad16:    dc.l    0
  5212. StrGadBuf16:    dc.l    0        ;Only a pointer!
  5213. StrGad17:    dc.l    0
  5214. StrGadBuf17:    dc.l    0        ;Only a pointer!
  5215. StrGad18:    dc.l    0
  5216. StrGadBuf18:    dc.l    0        ;Only a pointer!
  5217. StrGad19:    dc.l    0
  5218. StrGadBuf19:    dc.l    0        ;Only a pointer!
  5219. StrGad20:    dc.l    0
  5220. StrGadBuf20:    dc.l    0        ;Only a pointer!
  5221.  
  5222. ;Priority
  5223.  
  5224. StrGad21:    dc.l    0
  5225. StrGadInt21:    dc.l    0        ;Only a pointer!
  5226.  
  5227. ;Errors
  5228.  
  5229. StrGad22:    dc.l    0
  5230. StrGadBuf22:    dc.l    0        ;Only a pointer!
  5231. StrGad23:    dc.l    0
  5232. StrGadBuf23:    dc.l    0        ;Only a pointer!
  5233. StrGad24:    dc.l    0
  5234. StrGadBuf24:    dc.l    0        ;Only a pointer!
  5235. StrGad25:    dc.l    0
  5236. StrGadBuf25:    dc.l    0        ;Only a pointer!
  5237. StrGad26:    dc.l    0
  5238. StrGadBuf26:    dc.l    0        ;Only a pointer!
  5239. StrGad27:    dc.l    0
  5240. StrGadBuf27:    dc.l    0        ;Only a pointer!
  5241. StrGad28:    dc.l    0
  5242. StrGadBuf28:    dc.l    0        ;Only a pointer!
  5243. StrGad29:    dc.l    0
  5244. StrGadBuf29:    dc.l    0        ;Only a pointer!
  5245. StrGad30:    dc.l    0
  5246. StrGadBuf30:    dc.l    0        ;Only a pointer!
  5247.  
  5248. ;Display stuff
  5249.  
  5250. PubScreen:    dc.l    0
  5251. Window1:    dc.l    0
  5252. Window2:    dc.l    0
  5253. Window3:    dc.l    0
  5254. Window4:    dc.l    0
  5255. BHeight:    dc.w    0
  5256. RP:        dc.l    0
  5257.  
  5258.         ds.w    0
  5259.  
  5260. ;Devices etc.
  5261.  
  5262. TRPort:        dc.l    0
  5263. TIORequest:    dc.l    0
  5264. TimerOpen:    dc.w    0
  5265.  
  5266. ;Other stuff, part I
  5267.  
  5268. OurTask:    dc.l    0
  5269. PrefsFile:    dc.l    0
  5270. DataFile:    dc.l    0
  5271. NILFile:    dc.l    0
  5272. _stdout:    dc.l    0
  5273. WBMsg:        dc.l    0
  5274. DiskObject:    dc.l    0
  5275. OldLock:    dc.l    0
  5276. TaskOn:        dc.w    0        ;0=Off, 1=On
  5277. TickCount:    dc.w    10        ;Delay Status update
  5278. Page:        dc.w    0        ;What page are we on ?
  5279. Saved:        dc.w    1        ;0=No, 1=Yes
  5280. PopUp:        dc.w    1        ;0=No, 1=Yes
  5281. DisActive:    dc.w    0        ;0=Yes, 1=No. Can we turn on/off?
  5282. VoicePort:    dc.l    0        ;Message port for voice.library
  5283. ARexxPort:    dc.l    0        ;Our ARexx port
  5284. CXPort:        dc.l    0        ;Message port for commodities
  5285. IEvents:    dc.l    0        ;List of Input Events to add
  5286. LastGad:    dc.l    0        ;Last active string gadget
  5287. LastGad2:    dc.l    0        ;Last active string gadget, part II
  5288. CXBroker1:    dc.l    0        ;Our commodities broker list
  5289. ConfAddress:    dc.l    0        ;Address of last command
  5290. Awake:        dc.w    0        ;Are we awake? (0=No, 1=Yes)
  5291. Time:        dc.l    0        ;How many secs are we awake?
  5292.  
  5293. ;Strings, error & other info
  5294.  
  5295. BreakText1:    dc.b    "***Break: VoiceShell",13,10,0
  5296. NoMsgPortText1: dc.b    "ERROR: Couldn't open message port!",13,10,0
  5297. NoMsgPortText2: dc.b    "ERROR: An ARexx port with the name 'VOICESHELL' already exists!",13,10,0
  5298. NoIntText1:    dc.b    "ERROR: Couldn't open intuition.library!",13,10,0
  5299. NoCommoText1:    dc.b    "ERROR: Couldn't open commodities.library!",13,10,0
  5300. NoAslText1:    dc.b    "ERROR: Couldn't open asl.library!",13,10,0
  5301. NoAslReqText1:    dc.b    "ERROR: Couldn't allocate ASL requester!",13,10,0
  5302. NoUtilityText1:    dc.b    "ERROR: Couldn't open utility.library!",13,10,0
  5303. NoVoiceText1:    dc.b    "ERROR: Couldn't open voice.library, version 8.2!",13,10,13,10
  5304.         dc.b    "CHECK: 1. Is the parallel port available?",13,10
  5305.         dc.b    "       2. Is another program using the voice.library?",13,10,0
  5306. NoGTText1:    dc.b    "ERROR: Couldn't open gadtools.library!",13,10,0
  5307. NoIconText1:    dc.b    "ERROR: Couldn't open icon.library!",13,10,0
  5308. NoTimerText1:    dc.b    "ERROR: Couldn't open timer.device",13,10,0
  5309. NoIOReqText1:    dc.b    "ERROR: Couldn't get IORequest!",13,10,0
  5310. NoPubScrText1:    dc.b    "ERROR: Couldn't lock PublicScreen!",13,10,0
  5311. NoContextText1: dc.b    "ERROR: Couldn't create context gadget!",13,10,0
  5312. NoMenusText1:    dc.b    "ERROR: Couldn't allocate menus structure!",13,10,0
  5313. NoWindowText1:    dc.b    "ERROR: Couldn't open window!",13,10,0
  5314. NoCommodityText1: dc.b    "ERROR: Couldn't create commodity!",13,10
  5315.         dc.b    "       Another copy of VoiceShell is probably running.",13,10,0
  5316. BadPopKeyText1:    dc.b    "ERROR: Bad hotkey setting!",13,10,0
  5317. BadPriorityText1: dc.b    "ERROR: Bad priority value!",13,10,0
  5318. File_ERRText1:    dc.b    "Couldn't open preferences file!",0
  5319. File_ERRText2:    dc.b    "File error!",0
  5320. File_ERRText3:    dc.b    "Incorrect file type or version!",0
  5321. File_ERRText4:    dc.b    "Couldn't open data file!",0
  5322. NoMatchText1:    dc.b    "No Match",0
  5323. LowVolText1:    dc.b    "Low Volume",0
  5324. ClippingText1:    dc.b    "Too Loud",0
  5325. NoisyText1:    dc.b    "Too Noisy",0
  5326. TaskOnText1:    dc.b    "Turned On",0
  5327. TaskOffText1:    dc.b    "Turned Off",0
  5328. ReadyText1:    dc.b    "Ready",0
  5329. InactiveText1:    dc.b    "Inactive",0
  5330. NoCMDText1:    dc.b    "No Command",0
  5331. CMDFailText1:    dc.b    "Command Failed!",0
  5332. NoConfText1:    dc.b    "Not Confirmed!",0
  5333. AwakeText1:    dc.b    "Awake",0
  5334.  
  5335. ;Strings, names
  5336.  
  5337. TimerName:    dc.b    "timer.device",0
  5338. CLTemplate1:    dc.b    "FROM/K,I=ICONIFY/S,PS=PUBSCREEN/K,"    ;Cont'd
  5339.         dc.b    "PRI=CX_PRIORITY/N/K,PK=CX_POPKEY/K,PU=CX_POPUP/K",0
  5340. VSVersion:    dc.b    "$VER: VoiceShell "
  5341.         PROGVERSION
  5342.         dc.b    " (c) Copyright Tomi Blinnikka 1994",0
  5343. OKText1:    dc.b    "OK",0
  5344. CancelText1:    dc.b    "Cancel",0
  5345. PrefsName:    dc.b    "ENVARC:VoiceShell.PREFS",0
  5346. NILName:    dc.b    "CON:0/10/500/70/VoiceShell_Error/CLOSE/AUTO/WAIT",0
  5347. ICONIFYText1:    dc.b    "ICONIFY",0
  5348. PUBSCREENText1:    dc.b    "PUBSCREEN",0
  5349. CXPOPUPText1:    dc.b    "CX_POPUP",0
  5350. CXPOPKEYText1:    dc.b    "CX_POPKEY",0
  5351. CXPRIText1:    dc.b    "CX_PRIORITY",0
  5352. DefaultPopKey:    dc.b    "ctrl alt v",0
  5353. YESText1:    dc.b    "YES",0
  5354. NOText1:    dc.b    "NO",0
  5355. FROMText1:    dc.b    "FROM",0
  5356. AboutText1:    dc.b    "Name   : VoiceShell",0
  5357. AboutText2:    dc.b    "Version: "
  5358.         PROGVERSION
  5359.         dc.b    0
  5360. AboutText3:    dc.b    "Author : Tomi Blinnikka",0
  5361. AboutText4:    dc.b    "  (c) Copyright  1994",0
  5362.  
  5363.         IFD    VS_REGISTERED
  5364. AboutText5:    dc.b    "NOTE: Registered version",0
  5365.         ENDC
  5366.  
  5367.         IFND    VS_REGISTERED
  5368. AboutText5:    dc.b    "NOTE: Unregistered version",0
  5369.         ENDC
  5370. AboutText6:    dc.b    "Hotkey: ",0
  5371.  
  5372. QuitText1:    dc.b    "The data file has not been saved!",0
  5373. QuitText2:    dc.b    "Are you sure you want to quit?",0
  5374. VSName1:    dc.b    "VoiceShell",0
  5375. VSName2:    dc.b    "VoiceShell: Edit & Learn",0
  5376. VSName3:    dc.b    "Please enter:",0
  5377. VSName4:    dc.b    "VoiceShell: Error Commands",0
  5378. VSTitle:    dc.b    "Voice recognition:",0
  5379. VSDesc:        dc.b    "Start programs with voice commands",0
  5380. GetText1:    dc.b    "Command to run",0
  5381.  
  5382. ;ARexx strings
  5383.  
  5384. ARexxPortName:    dc.b    "VOICESHELL",0
  5385.  
  5386. ;Window control
  5387.  
  5388. RexxFront:    dc.b    "FRONT",0
  5389. RexxBack:    dc.b    "BACK",0
  5390. RexxZoom:    dc.b    "ZOOM",0
  5391. RexxHide:    dc.b    "HIDE",0
  5392. RexxShow:    dc.b    "SHOW",0
  5393.  
  5394. ;Misc
  5395.  
  5396. RexxOn:        dc.b    "ON",0
  5397. RexxOff:    dc.b    "OFF",0
  5398. RexxQuit:    dc.b    "QUIT",0
  5399.  
  5400. ;Sampler settings
  5401.  
  5402. RexxPerfSnd:    dc.b    "PERFSND",0
  5403. RexxSndMstr:    dc.b    "SNDMSTR",0
  5404. RexxDSS8:    dc.b    "DSS8",0
  5405. RexxGeneric:    dc.b    "GENERIC",0
  5406.  
  5407. ;Resolution
  5408.  
  5409. RexxResLo:    dc.b    "RESLO",0
  5410. RexxResHi:    dc.b    "RESHI",0
  5411.  
  5412. ;Accuracy
  5413.  
  5414. RexxLowest:    dc.b    "LOWEST",0
  5415. RexxLower:    dc.b    "LOWER",0
  5416. RexxLow:    dc.b    "LOW",0
  5417. RexxNormal:    dc.b    "NORMAL",0
  5418. RexxHigh:    dc.b    "HIGH",0
  5419. RexxHigher:    dc.b    "HIGHER",0
  5420. RexxEHigher:    dc.b    "EVENHIGHER",0
  5421. RexxMaximum:    dc.b    "MAXIMUM",0
  5422.  
  5423. ;Channel
  5424.  
  5425. RexxLeft:    dc.b    "LEFT",0
  5426. RexxRight:    dc.b    "RIGHT",0
  5427.  
  5428. ;Input gain
  5429.  
  5430. RexxLine:    dc.b    "LINE",0
  5431. RexxMic:    dc.b    "MIC",0
  5432.  
  5433. RexxGainUp:    dc.b    "GAINUP",0
  5434. RexxGainDown:    dc.b    "GAINDOWN",0
  5435.  
  5436. ;Timer
  5437.  
  5438. RexxTimerA:    dc.b    "TIMERA",0
  5439. RexxTimerB:    dc.b    "TIMERB",0
  5440.  
  5441. ;Confirmation
  5442.  
  5443. RexxConfirm:    dc.b    "CONFIRM",0
  5444. RexxNoConfirm:    dc.b    "NOCONFIRM",0
  5445.  
  5446. ;Wake up
  5447.  
  5448. RexxWake0:    dc.b    "WAKE0",0
  5449. RexxWake5:    dc.b    "WAKE5",0
  5450. RexxWake10:    dc.b    "WAKE10",0
  5451. RexxWake15:    dc.b    "WAKE15",0
  5452. RexxWake20:    dc.b    "WAKE20",0
  5453.  
  5454. ;Others not defined here:
  5455. ;
  5456. ;    LOAD
  5457. ;    KEY
  5458. ;
  5459.  
  5460.         ds.w    0
  5461.  
  5462. ;New screen & new window structures
  5463.  
  5464. NewWindow1:    dc.w    200,31            ;X,Y POS
  5465.         dc.w    320            ;WIDTH
  5466. Win1YSize:    dc.w    0            ;HEIGHT
  5467.         dc.b    0,1            ;PENS
  5468.         dc.l    REFRESHWINDOW!INTUITICKS!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP    ;IDCMP FLAGS
  5469.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  5470.         dc.l    0,0            ;GADGETS, CHECKMARK
  5471.         dc.l    VSName1            ;TITLE
  5472.         dc.l    0            ;SCREEN ADDRESS
  5473.         dc.l    0            ;BITMAP            
  5474.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  5475.         dc.w    PUBLICSCREEN        ;TYPE
  5476.  
  5477. Win1TagList:    dc.l    WA_AutoAdjust,TRUE
  5478.         dc.l    WA_PubScreenName
  5479. Win1TagList.1:    dc.l    0
  5480.         dc.l    WA_Zoom,ZoomXY
  5481.         dc.l    TAG_DONE,0
  5482.  
  5483. ZoomXY:
  5484. SmallXPos:    dc.w    10
  5485. SmallYPos:    dc.w    21
  5486. SmallXSize:    dc.w    160
  5487. SmallYSize:    dc.w    0
  5488.  
  5489. NewWindow2:    dc.w    100,42            ;X,Y POS
  5490.         dc.w    430            ;WIDTH
  5491. Win2YSize:    dc.w    0            ;HEIGHT
  5492.         dc.b    0,1            ;PENS
  5493.         dc.l    REFRESHWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP!GADGETDOWN    ;IDCMP FLAGS
  5494.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  5495.         dc.l    0,0            ;GADGETS, CHECKMARK
  5496.         dc.l    VSName2            ;TITLE
  5497.         dc.l    0            ;SCREEN ADDRESS
  5498.         dc.l    0            ;BITMAP            
  5499.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  5500.         dc.w    PUBLICSCREEN        ;TYPE
  5501.  
  5502. Win2TagList:    dc.l    WA_AutoAdjust,TRUE
  5503.         dc.l    WA_PubScreenName
  5504. Win2TagList.1:    dc.l    0
  5505.         dc.l    TAG_DONE,0
  5506.  
  5507. NewWindow3:    dc.w    220,42            ;X,Y POS
  5508.         dc.w    200            ;WIDTH
  5509. Win3YSize:    dc.w    0            ;HEIGHT
  5510.         dc.b    0,1            ;PENS
  5511.         dc.l    REFRESHWINDOW!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!GADGETUP    ;IDCMP FLAGS
  5512.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  5513.         dc.l    0,0            ;GADGETS, CHECKMARK
  5514.         dc.l    VSName3            ;TITLE
  5515.         dc.l    0            ;SCREEN ADDRESS
  5516.         dc.l    0            ;BITMAP
  5517.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  5518.         dc.w    PUBLICSCREEN        ;TYPE
  5519.  
  5520.  
  5521. NewWindow4:    dc.w    100,42            ;X,Y POS
  5522.         dc.w    430            ;WIDTH
  5523. Win4YSize:    dc.w    0            ;HEIGHT
  5524.         dc.b    0,1            ;PENS
  5525.         dc.l    REFRESHWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP!GADGETDOWN    ;IDCMP FLAGS
  5526.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  5527.         dc.l    0,0            ;GADGETS, CHECKMARK
  5528.         dc.l    VSName4            ;TITLE
  5529.         dc.l    0            ;SCREEN ADDRESS
  5530.         dc.l    0            ;BITMAP            
  5531.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  5532.         dc.w    PUBLICSCREEN        ;TYPE
  5533.  
  5534. ;Fonts
  5535.  
  5536. Topaz:        dc.l    TopazName
  5537.         dc.w    8
  5538.         dc.b    0
  5539.         dc.b    0
  5540. TopazName:    dc.b    "topaz.font",0
  5541.         ds.w    0
  5542.  
  5543.  
  5544. ;ASL stuff
  5545.  
  5546. AslReqTags:    dc.l    ASL_Window
  5547.         dc.l    0            ;Move window pointer here!
  5548.         dc.l    TAG_DONE,0
  5549. GetReqTags:    dc.l    ASL_Hail,GetText1
  5550.         dc.l    ASL_Dir,0
  5551.         dc.l    ASL_File,0
  5552.         dc.l    ASL_FuncFlags,0
  5553.         dc.l    TAG_DONE,0
  5554.  
  5555. ;ITextStructures
  5556.  
  5557. OKTxt:        dc.b    1,2            ;PENS
  5558.         dc.w    0            ;MODE
  5559.         dc.w    0,0            ;LEFT+TOPEDGE
  5560.         dc.l    0            ;FONT
  5561.         dc.l    OKText1            ;TEXT
  5562.         dc.l    0            ;NEXTTEXT
  5563.  
  5564. CancelTxt:    dc.b    1,2            ;PENS
  5565.         dc.w    0            ;MODE
  5566.         dc.w    0,0            ;LEFT+TOPEDGE
  5567.         dc.l    0            ;FONT
  5568.         dc.l    CancelText1        ;TEXT
  5569.         dc.l    0            ;NEXTTEXT
  5570.  
  5571. File_ERRTxt1:    dc.b    1,2            ;PENS
  5572.         dc.w    0            ;MODE
  5573.         dc.w    10,10            ;LEFT+TOPEDGE
  5574.         dc.l    0            ;FONT
  5575.         dc.l    File_ERRText1        ;TEXT
  5576.         dc.l    0            ;NEXTTEXT
  5577.  
  5578. File_ERRTxt2:    dc.b    1,2            ;PENS
  5579.         dc.w    0            ;MODE
  5580.         dc.w    10,10            ;LEFT+TOPEDGE
  5581.         dc.l    0            ;FONT
  5582.         dc.l    File_ERRText2        ;TEXT
  5583.         dc.l    0            ;NEXTTEXT
  5584.  
  5585. File_ERRTxt3:    dc.b    1,2            ;PENS
  5586.         dc.w    0            ;MODE
  5587.         dc.w    10,10            ;LEFT+TOPEDGE
  5588.         dc.l    0            ;FONT
  5589.         dc.l    File_ERRText3        ;TEXT
  5590.         dc.l    0            ;NEXTTEXT
  5591.  
  5592. File_ERRTxt4:    dc.b    1,2            ;PENS
  5593.         dc.w    0            ;MODE
  5594.         dc.w    10,10            ;LEFT+TOPEDGE
  5595.         dc.l    0            ;FONT
  5596.         dc.l    File_ERRText4        ;TEXT
  5597.         dc.l    0            ;NEXTTEXT
  5598.  
  5599. AboutTxt1:    dc.b    1,2            ;PENS
  5600.         dc.w    0            ;MODE
  5601.         dc.w    0,0            ;LEFT+TOPEDGE
  5602.         dc.l    Topaz            ;FONT
  5603.         dc.l    AboutText1        ;TEXT
  5604.         dc.l    AboutTxt2        ;NEXTTEXT
  5605.  
  5606. AboutTxt2:    dc.b    1,2            ;PENS
  5607.         dc.w    0            ;MODE
  5608.         dc.w    0,10            ;LEFT+TOPEDGE
  5609.         dc.l    Topaz            ;FONT
  5610.         dc.l    AboutText2        ;TEXT
  5611.         dc.l    AboutTxt3        ;NEXTTEXT
  5612.  
  5613. AboutTxt3:    dc.b    1,2            ;PENS
  5614.         dc.w    0            ;MODE
  5615.         dc.w    0,20            ;LEFT+TOPEDGE
  5616.         dc.l    Topaz            ;FONT
  5617.         dc.l    AboutText3        ;TEXT
  5618.         dc.l    AboutTxt4        ;NEXTTEXT
  5619.  
  5620. AboutTxt4:    dc.b    1,2            ;PENS
  5621.         dc.w    0            ;MODE
  5622.         dc.w    0,30            ;LEFT+TOPEDGE
  5623.         dc.l    Topaz            ;FONT
  5624.         dc.l    AboutText4        ;TEXT
  5625.         dc.l    AboutTxt5        ;NEXTTEXT
  5626.  
  5627. AboutTxt5:    dc.b    1,2            ;PENS
  5628.         dc.w    0            ;MODE
  5629.         dc.w    0,50            ;LEFT+TOPEDGE
  5630.         dc.l    Topaz            ;FONT
  5631.         dc.l    AboutText5        ;TEXT
  5632.         dc.l    AboutTxt6        ;NEXTTEXT
  5633.  
  5634. AboutTxt6:    dc.b    1,2            ;PENS
  5635.         dc.w    0            ;MODE
  5636.         dc.w    0,70            ;LEFT+TOPEDGE
  5637.         dc.l    Topaz            ;FONT
  5638.         dc.l    AboutText6        ;TEXT
  5639.         dc.l    AboutTxt7        ;NEXTTEXT
  5640.  
  5641. AboutTxt7:    dc.b    1,2            ;PENS
  5642.         dc.w    0            ;MODE
  5643.         dc.w    0,80            ;LEFT+TOPEDGE
  5644.         dc.l    Topaz            ;FONT
  5645. AboutTxt7.X:    dc.l    0            ;TEXT
  5646.         dc.l    0 ;AboutTxt8        ;NEXTTEXT
  5647.  
  5648. QuitTxt1:    dc.b    1,2            ;PENS
  5649.         dc.w    0            ;MODE
  5650.         dc.w    0,0            ;LEFT+TOPEDGE
  5651.         dc.l    Topaz            ;FONT
  5652.         dc.l    QuitText1        ;TEXT
  5653.         dc.l    QuitTxt2        ;NEXTTEXT
  5654.  
  5655. QuitTxt2:    dc.b    1,2            ;PENS
  5656.         dc.w    0            ;MODE
  5657.         dc.w    0,20            ;LEFT+TOPEDGE
  5658.         dc.l    Topaz            ;FONT
  5659.         dc.l    QuitText2        ;TEXT
  5660.         dc.l    0 ;QuitTxt3        ;NEXTTEXT
  5661.  
  5662. ;Gadgets
  5663.  
  5664. OnOffGadText1:    dc.b    "On/Off",0
  5665. GainUGadText1:    dc.b    "Vol _Up",0
  5666. GainDGadText1:    dc.b    "Vol _Dwn",0
  5667. SaveGadText1:    dc.b    "_Save",0
  5668. QuitGadText1:    dc.b    "_Quit",0
  5669. DatGadText1:    dc.b    "Data _file",0
  5670. StatGadText1:    dc.b    "Status",0
  5671. LoadGadText1:    dc.b    "_Load",0
  5672. DescGadText1:    dc.b    "Description",0
  5673. DescGadText1.1:    dc.b    "On Error",0
  5674. DescGadText2:    dc.b    "Command to run",0
  5675. DescGadText3:    dc.b    "No Command",0
  5676. DescGadText4:    dc.b    "Cmd Failed",0
  5677. DescGadText5:    dc.b    "No Match",0
  5678. DescGadText6:    dc.b    "Too Loud",0
  5679. DescGadText7:    dc.b    "Too Low",0
  5680. DescGadText8:    dc.b    "Too Noisy",0
  5681. DescGadText9:    dc.b    "Confirm",0
  5682. DescGadText10:    dc.b    "Not Conf'd",0
  5683. DescGadText11:    dc.b    "Wake Up",0
  5684. GetGadText1:    dc.b    "_Get",0
  5685. PriGadText1:    dc.b    "Priority",0
  5686.         ds.w    0
  5687.  
  5688. glist:        dcb.b    gg_SIZEOF,0
  5689. glist2:        dcb.b    gg_SIZEOF,0
  5690. glist3:        dcb.b    gg_SIZEOF,0
  5691. glist4:        dcb.b    gg_SIZEOF,0
  5692.  
  5693. NGOnOffGad1:    dc.w    10        ;gng_LeftEdge
  5694.         dc.w    0        ;gng_TopEdge
  5695.         dc.w    0        ;gng_Width
  5696.         dc.w    13        ;gng_Height
  5697.         dc.l    OnOffGadText1    ;gng_GadgetText
  5698.         dc.l    Topaz        ;gng_TextAttr
  5699.         dc.w    10        ;gng_GadgetID
  5700.         dc.l    PLACETEXT_RIGHT ;gng_Flags
  5701.         dc.l    0        ;gng_VisualInfo
  5702.         dc.l    0        ;gng_UserData
  5703.  
  5704. NGGainUGad:    dc.w    10        ;gng_LeftEdge
  5705.         dc.w    0        ;gng_TopEdge
  5706.         dc.w    60        ;gng_Width
  5707.         dc.w    12        ;gng_Height
  5708.         dc.l    GainUGadText1    ;gng_GadgetText
  5709.         dc.l    Topaz        ;gng_TextAttr
  5710.         dc.w    20        ;gng_GadgetID
  5711.         dc.l    PLACETEXT_IN    ;gng_Flags
  5712.         dc.l    0        ;gng_VisualInfo
  5713.         dc.l    0        ;gng_UserData
  5714.  
  5715. NGGainDGad:    dc.w    10        ;gng_LeftEdge
  5716.         dc.w    0        ;gng_TopEdge
  5717.         dc.w    60        ;gng_Width
  5718.         dc.w    12        ;gng_Height
  5719.         dc.l    GainDGadText1    ;gng_GadgetText
  5720.         dc.l    Topaz        ;gng_TextAttr
  5721.         dc.w    30        ;gng_GadgetID
  5722.         dc.l    PLACETEXT_IN    ;gng_Flags
  5723.         dc.l    0        ;gng_VisualInfo
  5724.         dc.l    0        ;gng_UserData
  5725.  
  5726. NGGainGad:    dc.w    10+60+INTERWIDTH-3    ;gng_LeftEdge
  5727.         dc.w    0        ;gng_TopEdge
  5728.         dc.w    20        ;gng_Width
  5729.         dc.w    12        ;gng_Height
  5730.         dc.l    0        ;gng_GadgetText
  5731.         dc.l    Topaz        ;gng_TextAttr
  5732.         dc.w    0        ;gng_GadgetID
  5733.         dc.l    0        ;gng_Flags
  5734.         dc.l    0        ;gng_VisualInfo
  5735.         dc.l    0        ;gng_UserData
  5736.  
  5737. NGSaveGad:    dc.w    10        ;gng_LeftEdge
  5738.         dc.w    0        ;gng_TopEdge
  5739.         dc.w    60        ;gng_Width
  5740.         dc.w    12        ;gng_Height
  5741.         dc.l    SaveGadText1    ;gng_GadgetText
  5742.         dc.l    Topaz        ;gng_TextAttr
  5743.         dc.w    98        ;gng_GadgetID
  5744.         dc.l    PLACETEXT_IN    ;gng_Flags
  5745.         dc.l    0        ;gng_VisualInfo
  5746.         dc.l    0        ;gng_UserData
  5747.  
  5748. NGQuitGad:    dc.w    -70        ;gng_LeftEdge
  5749.         dc.w    0        ;gng_TopEdge
  5750.         dc.w    60        ;gng_Width
  5751.         dc.w    12        ;gng_Height
  5752.         dc.l    QuitGadText1    ;gng_GadgetText
  5753.         dc.l    Topaz        ;gng_TextAttr
  5754.         dc.w    99        ;gng_GadgetID
  5755.         dc.l    PLACETEXT_IN    ;gng_Flags
  5756.         dc.l    0        ;gng_VisualInfo
  5757.         dc.l    0        ;gng_UserData
  5758.  
  5759. NGDatStrGad1:    dc.w    100        ;gng_LeftEdge
  5760.         dc.w    ShellTop+28    ;gng_TopEdge
  5761.         dc.w    135        ;gng_Width
  5762.         dc.w    12        ;gng_Height
  5763.         dc.l    DatGadText1    ;gng_GadgetText
  5764.         dc.l    Topaz        ;gng_TextAttr
  5765.         dc.w    1        ;gng_GadgetID
  5766.         dc.l    PLACETEXT_BELOW ;gng_Flags
  5767.         dc.l    0        ;gng_VisualInfo
  5768.         dc.l    0        ;gng_UserData
  5769.  
  5770. NGStatusGad:    dc.w    100        ;gng_LeftEdge
  5771.         dc.w    0        ;gng_TopEdge
  5772.         dc.w    199        ;gng_Width
  5773.         dc.w    12        ;gng_Height
  5774.         dc.l    StatGadText1    ;gng_GadgetText
  5775.         dc.l    Topaz        ;gng_TextAttr
  5776.         dc.w    0        ;gng_GadgetID
  5777.         dc.l    PLACETEXT_BELOW ;gng_Flags
  5778.         dc.l    0        ;gng_VisualInfo
  5779.         dc.l    0        ;gng_UserData
  5780.  
  5781. NGLoadGad:    dc.w    -70        ;gng_LeftEdge
  5782.         dc.w    0        ;gng_TopEdge
  5783.         dc.w    60        ;gng_Width
  5784.         dc.w    12        ;gng_Height
  5785.         dc.l    LoadGadText1    ;gng_GadgetText
  5786.         dc.l    Topaz        ;gng_TextAttr
  5787.         dc.w    40        ;gng_GadgetID
  5788.         dc.l    PLACETEXT_IN    ;gng_Flags
  5789.         dc.l    0        ;gng_VisualInfo
  5790.         dc.l    0        ;gng_UserData
  5791.  
  5792. ;Gadget TagLists
  5793.  
  5794. GadTagList:    dc.l    GT_Underscore,'_'
  5795.         dc.l    TAG_DONE,0
  5796.  
  5797. GainGadTagList:    dc.l    GTNM_Border,TRUE
  5798.         dc.l    GTNM_Number
  5799. GainPointer:    dc.l    0
  5800.         dc.l    TAG_DONE,0
  5801.  
  5802. StatGadTagList: dc.l    GTTX_Border,TRUE
  5803.         dc.l    TAG_DONE,0
  5804.  
  5805. StatGadTagList2: dc.l    GTTX_Border,TRUE
  5806.         dc.l    GTTX_Text
  5807. SGTL2:        dc.l    0
  5808.         dc.l    TAG_DONE,0
  5809.  
  5810. DatStrGadTagList: dc.l    GTST_String,DatBuffer
  5811.         dc.l    GT_Underscore,'_'
  5812.         dc.l    GTST_MaxChars,32
  5813.         dc.l    TAG_DONE,0
  5814.  
  5815. DisabledTags:    dc.l    GA_DISABLED,TRUE
  5816.         dc.l    TAG_DONE,0
  5817.  
  5818. EnabledTags:    dc.l    GA_DISABLED,FALSE
  5819.         dc.l    TAG_DONE,0
  5820.  
  5821. ;Gadgets for edit window
  5822.  
  5823. NGDesc1Gad:    dc.w    10        ;gng_LeftEdge
  5824.         dc.w    0        ;gng_TopEdge
  5825.         dc.w    100        ;gng_Width
  5826.         dc.w    12        ;gng_Height
  5827.         dc.l    DescGadText1    ;gng_GadgetText
  5828.         dc.l    Topaz        ;gng_TextAttr
  5829.         dc.w    0        ;gng_GadgetID
  5830.         dc.l    PLACETEXT_IN    ;gng_Flags
  5831.         dc.l    0        ;gng_VisualInfo
  5832.         dc.l    0        ;gng_UserData
  5833.  
  5834. NGDesc2Gad:    dc.w    120        ;gng_LeftEdge
  5835.         dc.w    0        ;gng_TopEdge
  5836.         dc.w    300        ;gng_Width
  5837.         dc.w    12        ;gng_Height
  5838.         dc.l    DescGadText2    ;gng_GadgetText
  5839.         dc.l    Topaz        ;gng_TextAttr
  5840.         dc.w    0        ;gng_GadgetID
  5841.         dc.l    PLACETEXT_IN    ;gng_Flags
  5842.         dc.l    0        ;gng_VisualInfo
  5843.         dc.l    0        ;gng_UserData
  5844.  
  5845. NGStrGad1:    dc.w    10        ;gng_LeftEdge
  5846.         dc.w    0        ;gng_TopEdge
  5847.         dc.w    100        ;gng_Width
  5848.         dc.w    12        ;gng_Height
  5849.         dc.l    0        ;gng_GadgetText
  5850.         dc.l    Topaz        ;gng_TextAttr
  5851.         dc.w    1        ;gng_GadgetID
  5852.         dc.l    0        ;gng_Flags
  5853.         dc.l    0        ;gng_VisualInfo
  5854.         dc.l    0        ;gng_UserData
  5855.  
  5856. NGStrGad2:    dc.w    120        ;gng_LeftEdge
  5857.         dc.w    0        ;gng_TopEdge
  5858.         dc.w    300        ;gng_Width
  5859.         dc.w    12        ;gng_Height
  5860.         dc.l    0        ;gng_GadgetText
  5861.         dc.l    Topaz        ;gng_TextAttr
  5862.         dc.w    2        ;gng_GadgetID
  5863.         dc.l    0        ;gng_Flags
  5864.         dc.l    0        ;gng_VisualInfo
  5865.         dc.l    0        ;gng_UserData
  5866.  
  5867. NGStrGad3:    dc.w    10        ;gng_LeftEdge
  5868.         dc.w    0        ;gng_TopEdge
  5869.         dc.w    100        ;gng_Width
  5870.         dc.w    12        ;gng_Height
  5871.         dc.l    0        ;gng_GadgetText
  5872.         dc.l    Topaz        ;gng_TextAttr
  5873.         dc.w    1        ;gng_GadgetID
  5874.         dc.l    0        ;gng_Flags
  5875.         dc.l    0        ;gng_VisualInfo
  5876.         dc.l    0        ;gng_UserData
  5877.  
  5878. NGStrGad4:    dc.w    120        ;gng_LeftEdge
  5879.         dc.w    0        ;gng_TopEdge
  5880.         dc.w    300        ;gng_Width
  5881.         dc.w    12        ;gng_Height
  5882.         dc.l    0        ;gng_GadgetText
  5883.         dc.l    Topaz        ;gng_TextAttr
  5884.         dc.w    2        ;gng_GadgetID
  5885.         dc.l    0        ;gng_Flags
  5886.         dc.l    0        ;gng_VisualInfo
  5887.         dc.l    0        ;gng_UserData
  5888.  
  5889. NGStrGad5:    dc.w    10        ;gng_LeftEdge
  5890.         dc.w    0        ;gng_TopEdge
  5891.         dc.w    100        ;gng_Width
  5892.         dc.w    12        ;gng_Height
  5893.         dc.l    0        ;gng_GadgetText
  5894.         dc.l    Topaz        ;gng_TextAttr
  5895.         dc.w    1        ;gng_GadgetID
  5896.         dc.l    0        ;gng_Flags
  5897.         dc.l    0        ;gng_VisualInfo
  5898.         dc.l    0        ;gng_UserData
  5899.  
  5900. NGStrGad6:    dc.w    120        ;gng_LeftEdge
  5901.         dc.w    0        ;gng_TopEdge
  5902.         dc.w    300        ;gng_Width
  5903.         dc.w    12        ;gng_Height
  5904.         dc.l    0        ;gng_GadgetText
  5905.         dc.l    Topaz        ;gng_TextAttr
  5906.         dc.w    2        ;gng_GadgetID
  5907.         dc.l    0        ;gng_Flags
  5908.         dc.l    0        ;gng_VisualInfo
  5909.         dc.l    0        ;gng_UserData
  5910.  
  5911. NGStrGad7:    dc.w    10        ;gng_LeftEdge
  5912.         dc.w    0        ;gng_TopEdge
  5913.         dc.w    100        ;gng_Width
  5914.         dc.w    12        ;gng_Height
  5915.         dc.l    0        ;gng_GadgetText
  5916.         dc.l    Topaz        ;gng_TextAttr
  5917.         dc.w    1        ;gng_GadgetID
  5918.         dc.l    0        ;gng_Flags
  5919.         dc.l    0        ;gng_VisualInfo
  5920.         dc.l    0        ;gng_UserData
  5921.  
  5922. NGStrGad8:    dc.w    120        ;gng_LeftEdge
  5923.         dc.w    0        ;gng_TopEdge
  5924.         dc.w    300        ;gng_Width
  5925.         dc.w    12        ;gng_Height
  5926.         dc.l    0        ;gng_GadgetText
  5927.         dc.l    Topaz        ;gng_TextAttr
  5928.         dc.w    2        ;gng_GadgetID
  5929.         dc.l    0        ;gng_Flags
  5930.         dc.l    0        ;gng_VisualInfo
  5931.         dc.l    0        ;gng_UserData
  5932.  
  5933. NGStrGad9:    dc.w    10        ;gng_LeftEdge
  5934.         dc.w    0        ;gng_TopEdge
  5935.         dc.w    100        ;gng_Width
  5936.         dc.w    12        ;gng_Height
  5937.         dc.l    0        ;gng_GadgetText
  5938.         dc.l    Topaz        ;gng_TextAttr
  5939.         dc.w    1        ;gng_GadgetID
  5940.         dc.l    0        ;gng_Flags
  5941.         dc.l    0        ;gng_VisualInfo
  5942.         dc.l    0        ;gng_UserData
  5943.  
  5944. NGStrGad10:    dc.w    120        ;gng_LeftEdge
  5945.         dc.w    0        ;gng_TopEdge
  5946.         dc.w    300        ;gng_Width
  5947.         dc.w    12        ;gng_Height
  5948.         dc.l    0        ;gng_GadgetText
  5949.         dc.l    Topaz        ;gng_TextAttr
  5950.         dc.w    2        ;gng_GadgetID
  5951.         dc.l    0        ;gng_Flags
  5952.         dc.l    0        ;gng_VisualInfo
  5953.         dc.l    0        ;gng_UserData
  5954.  
  5955. NGStrGad11:    dc.w    10        ;gng_LeftEdge
  5956.         dc.w    0        ;gng_TopEdge
  5957.         dc.w    100        ;gng_Width
  5958.         dc.w    12        ;gng_Height
  5959.         dc.l    0        ;gng_GadgetText
  5960.         dc.l    Topaz        ;gng_TextAttr
  5961.         dc.w    1        ;gng_GadgetID
  5962.         dc.l    0        ;gng_Flags
  5963.         dc.l    0        ;gng_VisualInfo
  5964.         dc.l    0        ;gng_UserData
  5965.  
  5966. NGStrGad12:    dc.w    120        ;gng_LeftEdge
  5967.         dc.w    0        ;gng_TopEdge
  5968.         dc.w    300        ;gng_Width
  5969.         dc.w    12        ;gng_Height
  5970.         dc.l    0        ;gng_GadgetText
  5971.         dc.l    Topaz        ;gng_TextAttr
  5972.         dc.w    2        ;gng_GadgetID
  5973.         dc.l    0        ;gng_Flags
  5974.         dc.l    0        ;gng_VisualInfo
  5975.         dc.l    0        ;gng_UserData
  5976.  
  5977. NGStrGad13:    dc.w    10        ;gng_LeftEdge
  5978.         dc.w    0        ;gng_TopEdge
  5979.         dc.w    100        ;gng_Width
  5980.         dc.w    12        ;gng_Height
  5981.         dc.l    0        ;gng_GadgetText
  5982.         dc.l    Topaz        ;gng_TextAttr
  5983.         dc.w    1        ;gng_GadgetID
  5984.         dc.l    0        ;gng_Flags
  5985.         dc.l    0        ;gng_VisualInfo
  5986.         dc.l    0        ;gng_UserData
  5987.  
  5988. NGStrGad14:    dc.w    120        ;gng_LeftEdge
  5989.         dc.w    0        ;gng_TopEdge
  5990.         dc.w    300        ;gng_Width
  5991.         dc.w    12        ;gng_Height
  5992.         dc.l    0        ;gng_GadgetText
  5993.         dc.l    Topaz        ;gng_TextAttr
  5994.         dc.w    2        ;gng_GadgetID
  5995.         dc.l    0        ;gng_Flags
  5996.         dc.l    0        ;gng_VisualInfo
  5997.         dc.l    0        ;gng_UserData
  5998.  
  5999. NGStrGad15:    dc.w    10        ;gng_LeftEdge
  6000.         dc.w    0        ;gng_TopEdge
  6001.         dc.w    100        ;gng_Width
  6002.         dc.w    12        ;gng_Height
  6003.         dc.l    0        ;gng_GadgetText
  6004.         dc.l    Topaz        ;gng_TextAttr
  6005.         dc.w    1        ;gng_GadgetID
  6006.         dc.l    0        ;gng_Flags
  6007.         dc.l    0        ;gng_VisualInfo
  6008.         dc.l    0        ;gng_UserData
  6009.  
  6010. NGStrGad16:    dc.w    120        ;gng_LeftEdge
  6011.         dc.w    0        ;gng_TopEdge
  6012.         dc.w    300        ;gng_Width
  6013.         dc.w    12        ;gng_Height
  6014.         dc.l    0        ;gng_GadgetText
  6015.         dc.l    Topaz        ;gng_TextAttr
  6016.         dc.w    2        ;gng_GadgetID
  6017.         dc.l    0        ;gng_Flags
  6018.         dc.l    0        ;gng_VisualInfo
  6019.         dc.l    0        ;gng_UserData
  6020.  
  6021. NGStrGad17:    dc.w    10        ;gng_LeftEdge
  6022.         dc.w    0        ;gng_TopEdge
  6023.         dc.w    100        ;gng_Width
  6024.         dc.w    12        ;gng_Height
  6025.         dc.l    0        ;gng_GadgetText
  6026.         dc.l    Topaz        ;gng_TextAttr
  6027.         dc.w    1        ;gng_GadgetID
  6028.         dc.l    0        ;gng_Flags
  6029.         dc.l    0        ;gng_VisualInfo
  6030.         dc.l    0        ;gng_UserData
  6031.  
  6032. NGStrGad18:    dc.w    120        ;gng_LeftEdge
  6033.         dc.w    0        ;gng_TopEdge
  6034.         dc.w    300        ;gng_Width
  6035.         dc.w    12        ;gng_Height
  6036.         dc.l    0        ;gng_GadgetText
  6037.         dc.l    Topaz        ;gng_TextAttr
  6038.         dc.w    2        ;gng_GadgetID
  6039.         dc.l    0        ;gng_Flags
  6040.         dc.l    0        ;gng_VisualInfo
  6041.         dc.l    0        ;gng_UserData
  6042.  
  6043. NGStrGad19:    dc.w    10        ;gng_LeftEdge
  6044.         dc.w    0        ;gng_TopEdge
  6045.         dc.w    100        ;gng_Width
  6046.         dc.w    12        ;gng_Height
  6047.         dc.l    0        ;gng_GadgetText
  6048.         dc.l    Topaz        ;gng_TextAttr
  6049.         dc.w    1        ;gng_GadgetID
  6050.         dc.l    0        ;gng_Flags
  6051.         dc.l    0        ;gng_VisualInfo
  6052.         dc.l    0        ;gng_UserData
  6053.  
  6054. NGStrGad20:    dc.w    120        ;gng_LeftEdge
  6055.         dc.w    0        ;gng_TopEdge
  6056.         dc.w    300        ;gng_Width
  6057.         dc.w    12        ;gng_Height
  6058.         dc.l    0        ;gng_GadgetText
  6059.         dc.l    Topaz        ;gng_TextAttr
  6060.         dc.w    2        ;gng_GadgetID
  6061.         dc.l    0        ;gng_Flags
  6062.         dc.l    0        ;gng_VisualInfo
  6063.         dc.l    0        ;gng_UserData
  6064.  
  6065. NGGetGad1:    dc.w    185        ;gng_LeftEdge
  6066.         dc.w    0        ;gng_TopEdge
  6067.         dc.w    60        ;gng_Width
  6068.         dc.w    12        ;gng_Height
  6069.         dc.l    GetGadText1    ;gng_GadgetText
  6070.         dc.l    Topaz        ;gng_TextAttr
  6071.         dc.w    55        ;gng_GadgetID
  6072.         dc.l    PLACETEXT_IN    ;gng_Flags
  6073.         dc.l    0        ;gng_VisualInfo
  6074.         dc.l    0        ;gng_UserData
  6075.  
  6076. DescGadTagList: dc.l    GTTX_Border,1
  6077.         dc.l    TAG_DONE,0
  6078.  
  6079. StrGadTagList1: dc.l    GTST_MaxChars,GADLENG1-1
  6080.         dc.l    TAG_DONE,0
  6081. StrGadTagList2: dc.l    GTST_MaxChars,GADLENG2-1
  6082.         dc.l    TAG_DONE,0
  6083. StrGadTagList3: dc.l    GTIN_Number,120
  6084.         dc.l    TAG_DONE,0
  6085.  
  6086. ;Priority gadget
  6087.  
  6088. NGStrGad21:    dc.w    60        ;gng_LeftEdge
  6089.         dc.w    0        ;gng_TopEdge
  6090.         dc.w    80        ;gng_Width
  6091.         dc.w    12        ;gng_Height
  6092.         dc.l    PriGadText1    ;gng_GadgetText
  6093.         dc.l    Topaz        ;gng_TextAttr
  6094.         dc.w    0        ;gng_GadgetID
  6095.         dc.l    PLACETEXT_BELOW ;gng_Flags
  6096.         dc.l    0        ;gng_VisualInfo
  6097.         dc.l    0        ;gng_UserData
  6098.  
  6099. ;Gadgets for error window
  6100.  
  6101. NGDesc3Gad:    dc.w    10        ;gng_LeftEdge
  6102.         dc.w    0        ;gng_TopEdge
  6103.         dc.w    100        ;gng_Width
  6104.         dc.w    12        ;gng_Height
  6105.         dc.l    DescGadText1.1    ;gng_GadgetText
  6106.         dc.l    Topaz        ;gng_TextAttr
  6107.         dc.w    0        ;gng_GadgetID
  6108.         dc.l    PLACETEXT_IN    ;gng_Flags
  6109.         dc.l    0        ;gng_VisualInfo
  6110.         dc.l    0        ;gng_UserData
  6111.  
  6112. NGDesc4Gad:    dc.w    120        ;gng_LeftEdge
  6113.         dc.w    0        ;gng_TopEdge
  6114.         dc.w    300        ;gng_Width
  6115.         dc.w    12        ;gng_Height
  6116.         dc.l    DescGadText2    ;gng_GadgetText
  6117.         dc.l    Topaz        ;gng_TextAttr
  6118.         dc.w    0        ;gng_GadgetID
  6119.         dc.l    PLACETEXT_IN    ;gng_Flags
  6120.         dc.l    0        ;gng_VisualInfo
  6121.         dc.l    0        ;gng_UserData
  6122.  
  6123. NGDesc5Gad:    dc.w    10        ;gng_LeftEdge
  6124.         dc.w    0        ;gng_TopEdge
  6125.         dc.w    100        ;gng_Width
  6126.         dc.w    12        ;gng_Height
  6127.         dc.l    DescGadText3    ;gng_GadgetText
  6128.         dc.l    Topaz        ;gng_TextAttr
  6129.         dc.w    1        ;gng_GadgetID
  6130.         dc.l    PLACETEXT_IN    ;gng_Flags
  6131.         dc.l    0        ;gng_VisualInfo
  6132.         dc.l    0        ;gng_UserData
  6133.  
  6134. NGStrGad22:    dc.w    120        ;gng_LeftEdge
  6135.         dc.w    0        ;gng_TopEdge
  6136.         dc.w    300        ;gng_Width
  6137.         dc.w    12        ;gng_Height
  6138.         dc.l    0        ;gng_GadgetText
  6139.         dc.l    Topaz        ;gng_TextAttr
  6140.         dc.w    2        ;gng_GadgetID
  6141.         dc.l    0        ;gng_Flags
  6142.         dc.l    0        ;gng_VisualInfo
  6143.         dc.l    0        ;gng_UserData
  6144.  
  6145. NGDesc6Gad:    dc.w    10        ;gng_LeftEdge
  6146.         dc.w    0        ;gng_TopEdge
  6147.         dc.w    100        ;gng_Width
  6148.         dc.w    12        ;gng_Height
  6149.         dc.l    DescGadText4    ;gng_GadgetText
  6150.         dc.l    Topaz        ;gng_TextAttr
  6151.         dc.w    1        ;gng_GadgetID
  6152.         dc.l    PLACETEXT_IN    ;gng_Flags
  6153.         dc.l    0        ;gng_VisualInfo
  6154.         dc.l    0        ;gng_UserData
  6155.  
  6156. NGStrGad23:    dc.w    120        ;gng_LeftEdge
  6157.         dc.w    0        ;gng_TopEdge
  6158.         dc.w    300        ;gng_Width
  6159.         dc.w    12        ;gng_Height
  6160.         dc.l    0        ;gng_GadgetText
  6161.         dc.l    Topaz        ;gng_TextAttr
  6162.         dc.w    2        ;gng_GadgetID
  6163.         dc.l    0        ;gng_Flags
  6164.         dc.l    0        ;gng_VisualInfo
  6165.         dc.l    0        ;gng_UserData
  6166.  
  6167. NGDesc7Gad:    dc.w    10        ;gng_LeftEdge
  6168.         dc.w    0        ;gng_TopEdge
  6169.         dc.w    100        ;gng_Width
  6170.         dc.w    12        ;gng_Height
  6171.         dc.l    DescGadText5    ;gng_GadgetText
  6172.         dc.l    Topaz        ;gng_TextAttr
  6173.         dc.w    1        ;gng_GadgetID
  6174.         dc.l    PLACETEXT_IN    ;gng_Flags
  6175.         dc.l    0        ;gng_VisualInfo
  6176.         dc.l    0        ;gng_UserData
  6177.  
  6178. NGStrGad24:    dc.w    120        ;gng_LeftEdge
  6179.         dc.w    0        ;gng_TopEdge
  6180.         dc.w    300        ;gng_Width
  6181.         dc.w    12        ;gng_Height
  6182.         dc.l    0        ;gng_GadgetText
  6183.         dc.l    Topaz        ;gng_TextAttr
  6184.         dc.w    2        ;gng_GadgetID
  6185.         dc.l    0        ;gng_Flags
  6186.         dc.l    0        ;gng_VisualInfo
  6187.         dc.l    0        ;gng_UserData
  6188.  
  6189. NGDesc8Gad:    dc.w    10        ;gng_LeftEdge
  6190.         dc.w    0        ;gng_TopEdge
  6191.         dc.w    100        ;gng_Width
  6192.         dc.w    12        ;gng_Height
  6193.         dc.l    DescGadText6    ;gng_GadgetText
  6194.         dc.l    Topaz        ;gng_TextAttr
  6195.         dc.w    1        ;gng_GadgetID
  6196.         dc.l    PLACETEXT_IN    ;gng_Flags
  6197.         dc.l    0        ;gng_VisualInfo
  6198.         dc.l    0        ;gng_UserData
  6199.  
  6200. NGStrGad25:    dc.w    120        ;gng_LeftEdge
  6201.         dc.w    0        ;gng_TopEdge
  6202.         dc.w    300        ;gng_Width
  6203.         dc.w    12        ;gng_Height
  6204.         dc.l    0        ;gng_GadgetText
  6205.         dc.l    Topaz        ;gng_TextAttr
  6206.         dc.w    2        ;gng_GadgetID
  6207.         dc.l    0        ;gng_Flags
  6208.         dc.l    0        ;gng_VisualInfo
  6209.         dc.l    0        ;gng_UserData
  6210.  
  6211. NGDesc9Gad:    dc.w    10        ;gng_LeftEdge
  6212.         dc.w    0        ;gng_TopEdge
  6213.         dc.w    100        ;gng_Width
  6214.         dc.w    12        ;gng_Height
  6215.         dc.l    DescGadText7    ;gng_GadgetText
  6216.         dc.l    Topaz        ;gng_TextAttr
  6217.         dc.w    1        ;gng_GadgetID
  6218.         dc.l    PLACETEXT_IN    ;gng_Flags
  6219.         dc.l    0        ;gng_VisualInfo
  6220.         dc.l    0        ;gng_UserData
  6221.  
  6222. NGStrGad26:    dc.w    120        ;gng_LeftEdge
  6223.         dc.w    0        ;gng_TopEdge
  6224.         dc.w    300        ;gng_Width
  6225.         dc.w    12        ;gng_Height
  6226.         dc.l    0        ;gng_GadgetText
  6227.         dc.l    Topaz        ;gng_TextAttr
  6228.         dc.w    2        ;gng_GadgetID
  6229.         dc.l    0        ;gng_Flags
  6230.         dc.l    0        ;gng_VisualInfo
  6231.         dc.l    0        ;gng_UserData
  6232.  
  6233. NGDesc10Gad:    dc.w    10        ;gng_LeftEdge
  6234.         dc.w    0        ;gng_TopEdge
  6235.         dc.w    100        ;gng_Width
  6236.         dc.w    12        ;gng_Height
  6237.         dc.l    DescGadText8    ;gng_GadgetText
  6238.         dc.l    Topaz        ;gng_TextAttr
  6239.         dc.w    1        ;gng_GadgetID
  6240.         dc.l    PLACETEXT_IN    ;gng_Flags
  6241.         dc.l    0        ;gng_VisualInfo
  6242.         dc.l    0        ;gng_UserData
  6243.  
  6244. NGStrGad27:    dc.w    120        ;gng_LeftEdge
  6245.         dc.w    0        ;gng_TopEdge
  6246.         dc.w    300        ;gng_Width
  6247.         dc.w    12        ;gng_Height
  6248.         dc.l    0        ;gng_GadgetText
  6249.         dc.l    Topaz        ;gng_TextAttr
  6250.         dc.w    2        ;gng_GadgetID
  6251.         dc.l    0        ;gng_Flags
  6252.         dc.l    0        ;gng_VisualInfo
  6253.         dc.l    0        ;gng_UserData
  6254.  
  6255. NGDesc11Gad:    dc.w    10        ;gng_LeftEdge
  6256.         dc.w    0        ;gng_TopEdge
  6257.         dc.w    100        ;gng_Width
  6258.         dc.w    12        ;gng_Height
  6259.         dc.l    DescGadText9    ;gng_GadgetText
  6260.         dc.l    Topaz        ;gng_TextAttr
  6261.         dc.w    1        ;gng_GadgetID
  6262.         dc.l    PLACETEXT_IN    ;gng_Flags
  6263.         dc.l    0        ;gng_VisualInfo
  6264.         dc.l    0        ;gng_UserData
  6265.  
  6266. NGStrGad28:    dc.w    120        ;gng_LeftEdge
  6267.         dc.w    0        ;gng_TopEdge
  6268.         dc.w    300        ;gng_Width
  6269.         dc.w    12        ;gng_Height
  6270.         dc.l    0        ;gng_GadgetText
  6271.         dc.l    Topaz        ;gng_TextAttr
  6272.         dc.w    2        ;gng_GadgetID
  6273.         dc.l    0        ;gng_Flags
  6274.         dc.l    0        ;gng_VisualInfo
  6275.         dc.l    0        ;gng_UserData
  6276.  
  6277. NGDesc12Gad:    dc.w    10        ;gng_LeftEdge
  6278.         dc.w    0        ;gng_TopEdge
  6279.         dc.w    100        ;gng_Width
  6280.         dc.w    12        ;gng_Height
  6281.         dc.l    DescGadText10    ;gng_GadgetText
  6282.         dc.l    Topaz        ;gng_TextAttr
  6283.         dc.w    1        ;gng_GadgetID
  6284.         dc.l    PLACETEXT_IN    ;gng_Flags
  6285.         dc.l    0        ;gng_VisualInfo
  6286.         dc.l    0        ;gng_UserData
  6287.  
  6288. NGStrGad29:    dc.w    120        ;gng_LeftEdge
  6289.         dc.w    0        ;gng_TopEdge
  6290.         dc.w    300        ;gng_Width
  6291.         dc.w    12        ;gng_Height
  6292.         dc.l    0        ;gng_GadgetText
  6293.         dc.l    Topaz        ;gng_TextAttr
  6294.         dc.w    2        ;gng_GadgetID
  6295.         dc.l    0        ;gng_Flags
  6296.         dc.l    0        ;gng_VisualInfo
  6297.         dc.l    0        ;gng_UserData
  6298.  
  6299. NGDesc13Gad:    dc.w    10        ;gng_LeftEdge
  6300.         dc.w    0        ;gng_TopEdge
  6301.         dc.w    100        ;gng_Width
  6302.         dc.w    12        ;gng_Height
  6303.         dc.l    DescGadText11    ;gng_GadgetText
  6304.         dc.l    Topaz        ;gng_TextAttr
  6305.         dc.w    1        ;gng_GadgetID
  6306.         dc.l    PLACETEXT_IN    ;gng_Flags
  6307.         dc.l    0        ;gng_VisualInfo
  6308.         dc.l    0        ;gng_UserData
  6309.  
  6310. NGStrGad30:    dc.w    120        ;gng_LeftEdge
  6311.         dc.w    0        ;gng_TopEdge
  6312.         dc.w    300        ;gng_Width
  6313.         dc.w    12        ;gng_Height
  6314.         dc.l    0        ;gng_GadgetText
  6315.         dc.l    Topaz        ;gng_TextAttr
  6316.         dc.w    2        ;gng_GadgetID
  6317.         dc.l    0        ;gng_Flags
  6318.         dc.l    0        ;gng_VisualInfo
  6319.         dc.l    0        ;gng_UserData
  6320.  
  6321. NGGetGad2:    dc.w    185        ;gng_LeftEdge
  6322.         dc.w    0        ;gng_TopEdge
  6323.         dc.w    60        ;gng_Width
  6324.         dc.w    12        ;gng_Height
  6325.         dc.l    GetGadText1    ;gng_GadgetText
  6326.         dc.l    Topaz        ;gng_TextAttr
  6327.         dc.w    55        ;gng_GadgetID
  6328.         dc.l    PLACETEXT_IN    ;gng_Flags
  6329.         dc.l    0        ;gng_VisualInfo
  6330.         dc.l    0        ;gng_UserData
  6331.  
  6332. ;Menus
  6333.  
  6334. Menu1Name:    dc.b    "Project",0
  6335. Menu2Name:    dc.b    "Commands",0
  6336. Menu3Name:    dc.b    "Setup",0
  6337.  
  6338. LoadMenuText1:    dc.b    "Load",0
  6339. LoadCommKey:    dc.b    "L",0
  6340. SaveMenuText1:    dc.b    "Save",0
  6341. SaveCommKey:    dc.b    "S",0
  6342. AboutMenuText1: dc.b    "About...",0
  6343. AboutCommKey:    dc.b    "?",0
  6344. QuitMenuText1:    dc.b    "Quit",0
  6345. QuitCommKey:    dc.b    "Q",0
  6346. EditMenuText1:    dc.b    "Edit/Learn",0
  6347. EditCommKey:    dc.b    "E",0
  6348. ErrorMenuText1:    dc.b    "Errors",0
  6349. ErrorCommKey:    dc.b    "R",0
  6350.  
  6351. TypeMenuText1:    dc.b    "Sampler",0
  6352. PerfSMenuText1: dc.b    "PerfectSound",0
  6353. Type1CommKey:    dc.b    "1",0
  6354. SoundMMenuText1: dc.b    "SoundMaster",0
  6355. Type2CommKey:    dc.b    "2",0
  6356. DSSMenuText1:    dc.b    "GVP DSS 8",0
  6357. Type3CommKey:    dc.b    "3",0
  6358. GenericMenuText1: dc.b    "Generic",0
  6359. Type4CommKey:    dc.b    "4",0
  6360.  
  6361. ResMenuText1:    dc.b    "Resolution",0
  6362. ResLoMenuText1: dc.b    "Low",0
  6363. Res1CommKey:    dc.b    "-",0
  6364. ResHiMenuText1: dc.b    "High",0
  6365. Res2CommKey:    dc.b    "+",0
  6366.  
  6367. AccMenuText1:    dc.b    "Accuracy",0
  6368. AccLo1MenuText1: dc.b    "Lowest",0
  6369. Acc1CommKey:    dc.b    "T",0
  6370. AccLo2MenuText1: dc.b    "Lower",0
  6371. Acc2CommKey:    dc.b    "W",0
  6372. AccLo3MenuText1: dc.b    "Low",0
  6373. Acc3CommKey:    dc.b    "O",0
  6374. AccNoMenuText1: dc.b    "Normal",0
  6375. Acc4CommKey:    dc.b    "N",0
  6376. AccHi1MenuText1: dc.b    "High",0
  6377. Acc5CommKey:    dc.b    "H",0
  6378. AccHi2MenuText1: dc.b    "Higher",0
  6379. Acc6CommKey:    dc.b    "I",0
  6380. AccHi3MenuText1: dc.b    "Even higher",0
  6381. Acc7CommKey:    dc.b    "G",0
  6382. AccHi4MenuText1: dc.b    "Maximum",0
  6383. Acc8CommKey:    dc.b    "M",0
  6384.  
  6385. ChanMenuText1:    dc.b    "Channel",0
  6386. Chan1MenuText1: dc.b    "Left",0
  6387. Chan1CommKey:    dc.b    ",",0
  6388. Chan2MenuText1: dc.b    "Right",0
  6389. Chan2CommKey:    dc.b    ".",0
  6390.  
  6391. InputMenuText1:    dc.b    "Input level",0
  6392. Input1MenuText1: dc.b    "Microphone",0
  6393. Input1CommKey:    dc.b    "/",0
  6394. Input2MenuText1: dc.b    "Line",0
  6395. Input2CommKey:    dc.b    "*",0
  6396.  
  6397. TimerMenuText1: dc.b    "CIA Timer",0
  6398. TimerAMenuText1: dc.b    "Timer A",0
  6399. TimerACommKey:    dc.b    "A",0
  6400. TimerBMenuText1: dc.b    "Timer B",0
  6401. TimerBCommKey:    dc.b    "B",0
  6402.  
  6403. WakeMenuText1:    dc.b    "Wake up",0
  6404. WakeMenuText2:    dc.b    "0 Secs",0
  6405. WakeCommKey1:    dc.b    "5",0
  6406. WakeMenuText3:    dc.b    "5 Secs",0
  6407. WakeCommKey2:    dc.b    "6",0
  6408. WakeMenuText4:    dc.b    "10 Secs",0
  6409. WakeCommKey3:    dc.b    "7",0
  6410. WakeMenuText5:    dc.b    "15 Secs",0
  6411. WakeCommKey4:    dc.b    "8",0
  6412. WakeMenuText6:    dc.b    "20 Secs",0
  6413. WakeCommKey5:    dc.b    "9",0
  6414.  
  6415. PriMenuText1:    dc.b    "Priority...",0
  6416. PriCommKey:    dc.b    "P",0
  6417.  
  6418. ConfMenuText1:    dc.b    "Confirm",0
  6419. ConfCommKey:    dc.b    "C",0
  6420.  
  6421. Menu1Name2:    dc.b    "Page",0
  6422. EditMenu1Text1: dc.b    "Commands  1-10",0
  6423. Edit1CommKey:    dc.b    "1",0
  6424. EditMenu2Text1: dc.b    "Commands 11-20",0
  6425. Edit2CommKey:    dc.b    "2",0
  6426. EditMenu3Text1: dc.b    "Commands 21-30",0
  6427. Edit3CommKey:    dc.b    "3",0
  6428. EditMenu4Text1: dc.b    "Commands 31-40",0
  6429. Edit4CommKey:    dc.b    "4",0
  6430. EditMenu5Text1: dc.b    "Commands 41-50",0
  6431. Edit5CommKey:    dc.b    "5",0
  6432. EditMenu6Text1: dc.b    "Commands 51-60",0
  6433. Edit6CommKey:    dc.b    "6",0
  6434.         ds.l    0
  6435.  
  6436. MNProjectMenu1: dc.b    NM_TITLE        ;gnm_Type
  6437.         dc.b    0            ;gnm_Pad
  6438.         dc.l    Menu1Name        ;gnm_Label
  6439.         dc.l    0            ;gnm_CommKey
  6440.         dc.w    0            ;gnm_Flags
  6441.         dc.l    0            ;gnm_MutualExclude
  6442.         dc.l    0            ;gnm_UserData
  6443.  
  6444. MNLoad1:    dc.b    NM_ITEM            ;gnm_Type
  6445.         dc.b    0            ;gnm_Pad
  6446.         dc.l    LoadMenuText1        ;gnm_Label
  6447.         dc.l    LoadCommKey        ;gnm_CommKey
  6448.         dc.w    0            ;gnm_Flags
  6449.         dc.l    0            ;gnm_MutualExclude
  6450.         dc.l    0            ;gnm_UserData
  6451.  
  6452. MNSave1:    dc.b    NM_ITEM            ;gnm_Type
  6453.         dc.b    0            ;gnm_Pad
  6454.         dc.l    SaveMenuText1        ;gnm_Label
  6455.         dc.l    SaveCommKey        ;gnm_CommKey
  6456.         dc.w    0            ;gnm_Flags
  6457.         dc.l    0            ;gnm_MutualExclude
  6458.         dc.l    0            ;gnm_UserData
  6459.  
  6460. MNAbout1:    dc.b    NM_ITEM            ;gnm_Type
  6461.         dc.b    0            ;gnm_Pad
  6462.         dc.l    AboutMenuText1        ;gnm_Label
  6463.         dc.l    AboutCommKey        ;gnm_CommKey
  6464.         dc.w    0            ;gnm_Flags
  6465.         dc.l    0            ;gnm_MutualExclude
  6466.         dc.l    0            ;gnm_UserData
  6467.  
  6468. MNP1SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  6469.         dc.b    0            ;gnm_Pad
  6470.         dc.l    NM_BARLABEL        ;gnm_Label
  6471.         dc.l    0            ;gnm_CommKey
  6472.         dc.w    0            ;gnm_Flags
  6473.         dc.l    0            ;gnm_MutualExclude
  6474.         dc.l    0            ;gnm_UserData
  6475.  
  6476. MNQuit1:    dc.b    NM_ITEM            ;gnm_Type
  6477.         dc.b    0            ;gnm_Pad
  6478.         dc.l    QuitMenuText1        ;gnm_Label
  6479.         dc.l    QuitCommKey        ;gnm_CommKey
  6480.         dc.w    0            ;gnm_Flags
  6481.         dc.l    0            ;gnm_MutualExclude
  6482.         dc.l    0            ;gnm_UserData
  6483.  
  6484. MNCmdMenu1:    dc.b    NM_TITLE        ;gnm_Type
  6485.         dc.b    0            ;gnm_Pad
  6486.         dc.l    Menu2Name        ;gnm_Label
  6487.         dc.l    0            ;gnm_CommKey
  6488.         dc.w    0            ;gnm_Flags
  6489.         dc.l    0            ;gnm_MutualExclude
  6490.         dc.l    0            ;gnm_UserData
  6491.  
  6492. MNEdit1:    dc.b    NM_ITEM            ;gnm_Type
  6493.         dc.b    0            ;gnm_Pad
  6494.         dc.l    EditMenuText1        ;gnm_Label
  6495.         dc.l    EditCommKey        ;gnm_CommKey
  6496.         dc.w    0            ;gnm_Flags
  6497.         dc.l    0            ;gnm_MutualExclude
  6498.         dc.l    0            ;gnm_UserData
  6499.  
  6500. MNError2:    dc.b    NM_ITEM            ;gnm_Type
  6501.         dc.b    0            ;gnm_Pad
  6502.         dc.l    ErrorMenuText1        ;gnm_Label
  6503.         dc.l    ErrorCommKey        ;gnm_CommKey
  6504.         dc.w    0            ;gnm_Flags
  6505.         dc.l    0            ;gnm_MutualExclude
  6506.         dc.l    0            ;gnm_UserData
  6507.  
  6508. MNSetUpMenu1:    dc.b    NM_TITLE        ;gnm_Type
  6509.         dc.b    0            ;gnm_Pad
  6510.         dc.l    Menu3Name        ;gnm_Label
  6511.         dc.l    0            ;gnm_CommKey
  6512.         dc.w    0            ;gnm_Flags
  6513.         dc.l    0            ;gnm_MutualExclude
  6514.         dc.l    0            ;gnm_UserData
  6515.  
  6516. MNType1:    dc.b    NM_ITEM            ;gnm_Type
  6517.         dc.b    0            ;gnm_Pad
  6518.         dc.l    TypeMenuText1        ;gnm_Label
  6519.         dc.l    0            ;gnm_CommKey
  6520.         dc.w    0            ;gnm_Flags
  6521.         dc.l    0            ;gnm_MutualExclude
  6522.         dc.l    0            ;gnm_UserData
  6523.  
  6524. MNTypeSub1:    dc.b    NM_SUB            ;gnm_Type
  6525.         dc.b    0            ;gnm_Pad
  6526.         dc.l    PerfSMenuText1        ;gnm_Label
  6527.         dc.l    Type1CommKey        ;gnm_CommKey
  6528.         dc.w    CHECKIT            ;gnm_Flags
  6529.         dc.l    ~1            ;gnm_MutualExclude
  6530.         dc.l    0            ;gnm_UserData
  6531.  
  6532. MNTypeSub2:    dc.b    NM_SUB            ;gnm_Type
  6533.         dc.b    0            ;gnm_Pad
  6534.         dc.l    SoundMMenuText1        ;gnm_Label
  6535.         dc.l    Type2CommKey        ;gnm_CommKey
  6536.         dc.w    CHECKIT            ;gnm_Flags
  6537.         dc.l    ~2            ;gnm_MutualExclude
  6538.         dc.l    0            ;gnm_UserData
  6539.  
  6540. MNTypeSub3:    dc.b    NM_SUB            ;gnm_Type
  6541.         dc.b    0            ;gnm_Pad
  6542.         dc.l    DSSMenuText1        ;gnm_Label
  6543.         dc.l    Type3CommKey        ;gnm_CommKey
  6544.         dc.w    CHECKIT            ;gnm_Flags
  6545.         dc.l    ~4            ;gnm_MutualExclude
  6546.         dc.l    0            ;gnm_UserData
  6547.  
  6548. MNTypeSub4:    dc.b    NM_SUB            ;gnm_Type
  6549.         dc.b    0            ;gnm_Pad
  6550.         dc.l    GenericMenuText1    ;gnm_Label
  6551.         dc.l    Type4CommKey        ;gnm_CommKey
  6552.         dc.w    CHECKIT            ;gnm_Flags
  6553.         dc.l    ~8            ;gnm_MutualExclude
  6554.         dc.l    0            ;gnm_UserData
  6555.  
  6556. MNRes1:        dc.b    NM_ITEM            ;gnm_Type
  6557.         dc.b    0            ;gnm_Pad
  6558.         dc.l    ResMenuText1        ;gnm_Label
  6559.         dc.l    0            ;gnm_CommKey
  6560.         dc.w    0            ;gnm_Flags
  6561.         dc.l    0            ;gnm_MutualExclude
  6562.         dc.l    0            ;gnm_UserData
  6563.  
  6564. MNResSub1:    dc.b    NM_SUB            ;gnm_Type
  6565.         dc.b    0            ;gnm_Pad
  6566.         dc.l    ResLoMenuText1        ;gnm_Label
  6567.         dc.l    Res1CommKey        ;gnm_CommKey
  6568.         dc.w    CHECKIT            ;gnm_Flags
  6569.         dc.l    ~1            ;gnm_MutualExclude
  6570.         dc.l    0            ;gnm_UserData
  6571.  
  6572. MNResSub2:    dc.b    NM_SUB            ;gnm_Type
  6573.         dc.b    0            ;gnm_Pad
  6574.         dc.l    ResHiMenuText1        ;gnm_Label
  6575.         dc.l    Res2CommKey        ;gnm_CommKey
  6576.         dc.w    CHECKIT            ;gnm_Flags
  6577.         dc.l    ~2            ;gnm_MutualExclude
  6578.         dc.l    0            ;gnm_UserData
  6579.  
  6580. MNAccuracy1:    dc.b    NM_ITEM            ;gnm_Type
  6581.         dc.b    0            ;gnm_Pad
  6582.         dc.l    AccMenuText1        ;gnm_Label
  6583.         dc.l    0            ;gnm_CommKey
  6584.         dc.w    0            ;gnm_Flags
  6585.         dc.l    0            ;gnm_MutualExclude
  6586.         dc.l    0            ;gnm_UserData
  6587.  
  6588. MNAccurarySub1:    dc.b    NM_SUB            ;gnm_Type
  6589.         dc.b    0            ;gnm_Pad
  6590.         dc.l    AccLo1MenuText1        ;gnm_Label
  6591.         dc.l    Acc1CommKey        ;gnm_CommKey
  6592.         dc.w    CHECKIT            ;gnm_Flags
  6593.         dc.l    ~1            ;gnm_MutualExclude
  6594.         dc.l    0            ;gnm_UserData
  6595.  
  6596. MNAccurarySub2:    dc.b    NM_SUB            ;gnm_Type
  6597.         dc.b    0            ;gnm_Pad
  6598.         dc.l    AccLo2MenuText1        ;gnm_Label
  6599.         dc.l    Acc2CommKey        ;gnm_CommKey
  6600.         dc.w    CHECKIT            ;gnm_Flags
  6601.         dc.l    ~2            ;gnm_MutualExclude
  6602.         dc.l    0            ;gnm_UserData
  6603.  
  6604. MNAccurarySub3:    dc.b    NM_SUB            ;gnm_Type
  6605.         dc.b    0            ;gnm_Pad
  6606.         dc.l    AccLo3MenuText1        ;gnm_Label
  6607.         dc.l    Acc3CommKey        ;gnm_CommKey
  6608.         dc.w    CHECKIT            ;gnm_Flags
  6609.         dc.l    ~4            ;gnm_MutualExclude
  6610.         dc.l    0            ;gnm_UserData
  6611.  
  6612. MNAccurarySub4:    dc.b    NM_SUB            ;gnm_Type
  6613.         dc.b    0            ;gnm_Pad
  6614.         dc.l    AccNoMenuText1        ;gnm_Label
  6615.         dc.l    Acc4CommKey        ;gnm_CommKey
  6616.         dc.w    CHECKIT            ;gnm_Flags
  6617.         dc.l    ~8            ;gnm_MutualExclude
  6618.         dc.l    0            ;gnm_UserData
  6619.  
  6620. MNAccuracySub5:    dc.b    NM_SUB            ;gnm_Type
  6621.         dc.b    0            ;gnm_Pad
  6622.         dc.l    AccHi1MenuText1        ;gnm_Label
  6623.         dc.l    Acc5CommKey        ;gnm_CommKey
  6624.         dc.w    CHECKIT            ;gnm_Flags
  6625.         dc.l    ~16            ;gnm_MutualExclude
  6626.         dc.l    0            ;gnm_UserData
  6627.  
  6628. MNAccuracySub6:    dc.b    NM_SUB            ;gnm_Type
  6629.         dc.b    0            ;gnm_Pad
  6630.         dc.l    AccHi2MenuText1        ;gnm_Label
  6631.         dc.l    Acc6CommKey        ;gnm_CommKey
  6632.         dc.w    CHECKIT            ;gnm_Flags
  6633.         dc.l    ~32            ;gnm_MutualExclude
  6634.         dc.l    0            ;gnm_UserData
  6635.  
  6636. MNAccuracySub7:    dc.b    NM_SUB            ;gnm_Type
  6637.         dc.b    0            ;gnm_Pad
  6638.         dc.l    AccHi3MenuText1        ;gnm_Label
  6639.         dc.l    Acc7CommKey        ;gnm_CommKey
  6640.         dc.w    CHECKIT            ;gnm_Flags
  6641.         dc.l    ~64            ;gnm_MutualExclude
  6642.         dc.l    0            ;gnm_UserData
  6643.  
  6644. MNAccuracySub8:    dc.b    NM_SUB            ;gnm_Type
  6645.         dc.b    0            ;gnm_Pad
  6646.         dc.l    AccHi4MenuText1        ;gnm_Label
  6647.         dc.l    Acc8CommKey        ;gnm_CommKey
  6648.         dc.w    CHECKIT            ;gnm_Flags
  6649.         dc.l    ~128            ;gnm_MutualExclude
  6650.         dc.l    0            ;gnm_UserData
  6651.  
  6652. MNChannel1:    dc.b    NM_ITEM            ;gnm_Type
  6653.         dc.b    0            ;gnm_Pad
  6654.         dc.l    ChanMenuText1        ;gnm_Label
  6655.         dc.l    0            ;gnm_CommKey
  6656.         dc.w    0            ;gnm_Flags
  6657.         dc.l    0            ;gnm_MutualExclude
  6658.         dc.l    0            ;gnm_UserData
  6659.  
  6660. MNChanSub1:    dc.b    NM_SUB            ;gnm_Type
  6661.         dc.b    0            ;gnm_Pad
  6662.         dc.l    Chan1MenuText1        ;gnm_Label
  6663.         dc.l    Chan1CommKey        ;gnm_CommKey
  6664.         dc.w    CHECKIT            ;gnm_Flags
  6665.         dc.l    ~1            ;gnm_MutualExclude
  6666.         dc.l    0            ;gnm_UserData
  6667.  
  6668. MNChanSub2:    dc.b    NM_SUB            ;gnm_Type
  6669.         dc.b    0            ;gnm_Pad
  6670.         dc.l    Chan2MenuText1        ;gnm_Label
  6671.         dc.l    Chan2CommKey        ;gnm_CommKey
  6672.         dc.w    CHECKIT            ;gnm_Flags
  6673.         dc.l    ~2            ;gnm_MutualExclude
  6674.         dc.l    0            ;gnm_UserData
  6675.  
  6676. MNInput1:    dc.b    NM_ITEM            ;gnm_Type
  6677.         dc.b    0            ;gnm_Pad
  6678.         dc.l    InputMenuText1        ;gnm_Label
  6679.         dc.l    0            ;gnm_CommKey
  6680.         dc.w    0            ;gnm_Flags
  6681.         dc.l    0            ;gnm_MutualExclude
  6682.         dc.l    0            ;gnm_UserData
  6683.  
  6684. MNInputSub1:    dc.b    NM_SUB            ;gnm_Type
  6685.         dc.b    0            ;gnm_Pad
  6686.         dc.l    Input1MenuText1        ;gnm_Label
  6687.         dc.l    Input1CommKey        ;gnm_CommKey
  6688.         dc.w    CHECKIT            ;gnm_Flags
  6689.         dc.l    ~1            ;gnm_MutualExclude
  6690.         dc.l    0            ;gnm_UserData
  6691.  
  6692. MNInputSub2:    dc.b    NM_SUB            ;gnm_Type
  6693.         dc.b    0            ;gnm_Pad
  6694.         dc.l    Input2MenuText1        ;gnm_Label
  6695.         dc.l    Input2CommKey        ;gnm_CommKey
  6696.         dc.w    CHECKIT            ;gnm_Flags
  6697.         dc.l    ~2            ;gnm_MutualExclude
  6698.         dc.l    0            ;gnm_UserData
  6699.  
  6700. MNTimer1:    dc.b    NM_ITEM            ;gnm_Type
  6701.         dc.b    0            ;gnm_Pad
  6702.         dc.l    TimerMenuText1        ;gnm_Label
  6703.         dc.l    0            ;gnm_CommKey
  6704.         dc.w    0            ;gnm_Flags
  6705.         dc.l    0            ;gnm_MutualExclude
  6706.         dc.l    0            ;gnm_UserData
  6707.  
  6708. MNTimerSub1:    dc.b    NM_SUB            ;gnm_Type
  6709.         dc.b    0            ;gnm_Pad
  6710.         dc.l    TimerAMenuText1        ;gnm_Label
  6711.         dc.l    TimerACommKey        ;gnm_CommKey
  6712.         dc.w    CHECKIT            ;gnm_Flags
  6713.         dc.l    ~1            ;gnm_MutualExclude
  6714.         dc.l    0            ;gnm_UserData
  6715.  
  6716. MNTimerSub2:    dc.b    NM_SUB            ;gnm_Type
  6717.         dc.b    0            ;gnm_Pad
  6718.         dc.l    TimerBMenuText1        ;gnm_Label
  6719.         dc.l    TimerBCommKey        ;gnm_CommKey
  6720.         dc.w    CHECKIT            ;gnm_Flags
  6721.         dc.l    ~2            ;gnm_MutualExclude
  6722.         dc.l    0            ;gnm_UserData
  6723.  
  6724. MNWakeUp:    dc.b    NM_ITEM            ;gnm_Type
  6725.         dc.b    0            ;gnm_Pad
  6726.         dc.l    WakeMenuText1        ;gnm_Label
  6727.         dc.l    0            ;gnm_CommKey
  6728.         dc.w    0            ;gnm_Flags
  6729.         dc.l    0            ;gnm_MutualExclude
  6730.         dc.l    0            ;gnm_UserData
  6731.  
  6732. MNWakeSub1:    dc.b    NM_SUB            ;gnm_Type
  6733.         dc.b    0            ;gnm_Pad
  6734.         dc.l    WakeMenuText2        ;gnm_Label
  6735.         dc.l    WakeCommKey1        ;gnm_CommKey
  6736.         dc.w    CHECKIT            ;gnm_Flags
  6737.         dc.l    ~1            ;gnm_MutualExclude
  6738.         dc.l    0            ;gnm_UserData
  6739.  
  6740. MNWakeSub2:    dc.b    NM_SUB            ;gnm_Type
  6741.         dc.b    0            ;gnm_Pad
  6742.         dc.l    WakeMenuText3        ;gnm_Label
  6743.         dc.l    WakeCommKey2        ;gnm_CommKey
  6744.         dc.w    CHECKIT            ;gnm_Flags
  6745.         dc.l    ~2            ;gnm_MutualExclude
  6746.         dc.l    0            ;gnm_UserData
  6747.  
  6748. MNWakeSub3:    dc.b    NM_SUB            ;gnm_Type
  6749.         dc.b    0            ;gnm_Pad
  6750.         dc.l    WakeMenuText4        ;gnm_Label
  6751.         dc.l    WakeCommKey3        ;gnm_CommKey
  6752.         dc.w    CHECKIT            ;gnm_Flags
  6753.         dc.l    ~4            ;gnm_MutualExclude
  6754.         dc.l    0            ;gnm_UserData
  6755.  
  6756. MNWakeSub4:    dc.b    NM_SUB            ;gnm_Type
  6757.         dc.b    0            ;gnm_Pad
  6758.         dc.l    WakeMenuText5        ;gnm_Label
  6759.         dc.l    WakeCommKey4        ;gnm_CommKey
  6760.         dc.w    CHECKIT            ;gnm_Flags
  6761.         dc.l    ~8            ;gnm_MutualExclude
  6762.         dc.l    0            ;gnm_UserData
  6763.  
  6764. MNWakeSub5:    dc.b    NM_SUB            ;gnm_Type
  6765.         dc.b    0            ;gnm_Pad
  6766.         dc.l    WakeMenuText6        ;gnm_Label
  6767.         dc.l    WakeCommKey5        ;gnm_CommKey
  6768.         dc.w    CHECKIT            ;gnm_Flags
  6769.         dc.l    ~16            ;gnm_MutualExclude
  6770.         dc.l    0            ;gnm_UserData
  6771.  
  6772. MNPriority:    dc.b    NM_ITEM            ;gnm_Type
  6773.         dc.b    0            ;gnm_Pad
  6774.         dc.l    PriMenuText1        ;gnm_Label
  6775.         dc.l    PriCommKey        ;gnm_CommKey
  6776.         dc.w    0             ;gnm_Flags
  6777.         dc.l    0            ;gnm_MutualExclude
  6778.         dc.l    0            ;gnm_UserData
  6779.  
  6780. MNConfirm:    dc.b    NM_ITEM            ;gnm_Type
  6781.         dc.b    0            ;gnm_Pad
  6782.         dc.l    ConfMenuText1        ;gnm_Label
  6783.         dc.l    ConfCommKey        ;gnm_CommKey
  6784.         dc.w    CHECKIT!MENUTOGGLE    ;gnm_Flags
  6785.         dc.l    0            ;gnm_MutualExclude
  6786.         dc.l    0            ;gnm_UserData
  6787.  
  6788.         dc.w    0            ;NM_END?
  6789.  
  6790. ;Menu TagList(s)
  6791.  
  6792. MenuTagList:    dc.l    GTMN_Menu,MNProjectMenu1
  6793.         dc.l    TAG_DONE,0
  6794.  
  6795. MNPageMenu1:    dc.b    NM_TITLE        ;gnm_Type
  6796.         dc.b    0            ;gnm_Pad
  6797.         dc.l    Menu1Name2        ;gnm_Label
  6798.         dc.l    0            ;gnm_CommKey
  6799.         dc.w    0            ;gnm_Flags
  6800.         dc.l    0            ;gnm_MutualExclude
  6801.         dc.l    0            ;gnm_UserData
  6802.  
  6803. MNPage1:    dc.b    NM_ITEM            ;gnm_Type
  6804.         dc.b    0            ;gnm_Pad
  6805.         dc.l    EditMenu1Text1        ;gnm_Label
  6806.         dc.l    Edit1CommKey        ;gnm_CommKey
  6807.         dc.w    CHECKIT!CHECKED        ;gnm_Flags
  6808.         dc.l    ~1            ;gnm_MutualExclude
  6809.         dc.l    0            ;gnm_UserData
  6810.  
  6811. MNPage2:    dc.b    NM_ITEM            ;gnm_Type
  6812.         dc.b    0            ;gnm_Pad
  6813.         dc.l    EditMenu2Text1        ;gnm_Label
  6814.         dc.l    Edit2CommKey        ;gnm_CommKey
  6815.         dc.w    CHECKIT            ;gnm_Flags
  6816.         dc.l    ~2            ;gnm_MutualExclude
  6817.         dc.l    0            ;gnm_UserData
  6818.  
  6819. MNPage3:    dc.b    NM_ITEM            ;gnm_Type
  6820.         dc.b    0            ;gnm_Pad
  6821.         dc.l    EditMenu3Text1        ;gnm_Label
  6822.         dc.l    Edit3CommKey        ;gnm_CommKey
  6823.         dc.w    CHECKIT            ;gnm_Flags
  6824.         dc.l    ~4            ;gnm_MutualExclude
  6825.         dc.l    0            ;gnm_UserData
  6826.  
  6827. MNPage4:    dc.b    NM_ITEM            ;gnm_Type
  6828.         dc.b    0            ;gnm_Pad
  6829.         dc.l    EditMenu4Text1        ;gnm_Label
  6830.         dc.l    Edit4CommKey        ;gnm_CommKey
  6831.         dc.w    CHECKIT            ;gnm_Flags
  6832.         dc.l    ~8            ;gnm_MutualExclude
  6833.         dc.l    0            ;gnm_UserData
  6834.  
  6835. MNPage5:    dc.b    NM_ITEM            ;gnm_Type
  6836.         dc.b    0            ;gnm_Pad
  6837.         dc.l    EditMenu5Text1        ;gnm_Label
  6838.         dc.l    Edit5CommKey        ;gnm_CommKey
  6839.         dc.w    CHECKIT            ;gnm_Flags
  6840.         dc.l    ~16            ;gnm_MutualExclude
  6841.         dc.l    0            ;gnm_UserData
  6842.  
  6843. MNPage6:    dc.b    NM_ITEM            ;gnm_Type
  6844.         dc.b    0            ;gnm_Pad
  6845.         dc.l    EditMenu6Text1        ;gnm_Label
  6846.         dc.l    Edit6CommKey        ;gnm_CommKey
  6847.         dc.w    CHECKIT            ;gnm_Flags
  6848.         dc.l    ~32            ;gnm_MutualExclude
  6849.         dc.l    0            ;gnm_UserData
  6850.  
  6851. MNP2SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  6852.         dc.b    0            ;gnm_Pad
  6853.         dc.l    NM_BARLABEL        ;gnm_Label
  6854.         dc.l    0            ;gnm_CommKey
  6855.         dc.w    0            ;gnm_Flags
  6856.         dc.l    0            ;gnm_MutualExclude
  6857.         dc.l    0            ;gnm_UserData
  6858.  
  6859. MNQuit2:    dc.b    NM_ITEM            ;gnm_Type
  6860.         dc.b    0            ;gnm_Pad
  6861.         dc.l    QuitMenuText1        ;gnm_Label
  6862.         dc.l    QuitCommKey        ;gnm_CommKey
  6863.         dc.w    0            ;gnm_Flags
  6864.         dc.l    0            ;gnm_MutualExclude
  6865.         dc.l    0            ;gnm_UserData
  6866.  
  6867.         dc.w    0            ;NM_END?
  6868.  
  6869. ;Menu TagList(s) for Edit window
  6870.  
  6871. MenuTagList2:    dc.l    GTMN_Menu,MNPageMenu1
  6872.         dc.l    TAG_DONE,0
  6873.  
  6874. ;Commodities stuff (Brokers etc..)
  6875.  
  6876. NewBroker1:    dc.b NB_VERSION,0        ;Version, Reserved 1
  6877.         dc.l VSName1,VSTitle,VSDesc    ;Name, Title, Description
  6878.         dc.w NBU_UNIQUE!NBU_NOTIFY,COF_SHOW_HIDE    ;Uniq, Flags
  6879. NBPri:        dc.b 0,0            ;Priority, Reserved 2
  6880.         dc.l 0                ;Port
  6881.         dc.w 0                ;Reserved channel
  6882.  
  6883. PREFS_START:
  6884.  
  6885. Prefs:        dc.l    VSFileVersion
  6886. PrefsOnOff:    dc.b    0        ;0=Off, 1=On
  6887. PrefsSampType:    dc.b    SAMP_GENERIC    ;0=Perf.Snd, 1=SndMstr, 2=Generic, 3=DSS8
  6888. PrefsSampRes:    dc.b    RES_HI        ;0=High, 1=Low
  6889. PrefsTimer    dc.b    TIMER_B        ;0=Timer B, 1=Timer A
  6890. PrefsGain:    dc.b    0        ;DSS gain
  6891. PrefsChannel:    dc.b    CHANNEL_LEFT    ;0=right, 1=left
  6892. PrefsInput:    dc.b    INPUT_LINE    ;0=mic, 1=line
  6893. PrefsConfirm:    dc.b    0        ;0=No, 1=Yes
  6894. PrefsPriority:    dc.l    120        ;Priority
  6895. PrefsScore:    dc.w    AccVal4        ;Score needed
  6896. PrefsWake:    dc.b    0        ;0=No, Other = Seconds
  6897. PrefsPad1:    dc.b    0
  6898. Future1:    dc.w    0
  6899. Future2:    dc.l    0
  6900. Future3:    dc.l    0
  6901. Future4:    dc.l    0
  6902.  
  6903. Alt1XY:
  6904. Alt1XPos:    dc.w    200
  6905. Alt1YPos:    dc.w    31
  6906.  
  6907. DatBuffer:    dc.b    "S:VoiceShell.DAT"
  6908.         dcb.b    34-12,0
  6909.  
  6910. PREFS_END:    dc.l    0,0
  6911.  
  6912. PrefsSize:    EQU    (PREFS_END-PREFS_START)
  6913.  
  6914.         Section VS,BSS
  6915.  
  6916. DATA_START:
  6917.  
  6918. MapBuffer:    ds.b    (VocabSIZE*304)        ;64 words
  6919.  
  6920. CmdList:    ds.b    (VocabSIZE*GADLENGTH)
  6921.  
  6922. ErrCmd1:    ds.b    GADLENG2        ;No Command
  6923. ErrCmd2:    ds.b    GADLENG2        ;Cmd Failed
  6924. ErrCmd3:    ds.b    GADLENG2        ;No Match
  6925. ErrCmd4:    ds.b    GADLENG2        ;Too Loud
  6926. ErrCmd5:    ds.b    GADLENG2        ;Too Low
  6927. ErrCmd6:    ds.b    GADLENG2        ;Too Noisy
  6928. ConfCmd1:    ds.b    GADLENG2        ;Confirm
  6929. ConfCmd2:    ds.b    GADLENG2        ;Not Confirmed
  6930. WakeCmd1:    ds.b    GADLENG2        ;Confirm
  6931.  
  6932. DATA_END:    ds.l    1
  6933.  
  6934. DataSize:    EQU    (DATA_END-DATA_START)
  6935.  
  6936. StringBuffer:    ds.b    256
  6937.  
  6938.         Section VS,DATA,CHIP
  6939.  
  6940.         ds.w    0
  6941.  
  6942. ClockPointer1:    dc.w    $0000,$0000
  6943.         dc.w    $0400,$07C0,$0000,$07C0,$0100,$0380,$0000,$07E0
  6944.         dc.w    $07C0,$1FF8,$1FF0,$3FEC,$3FF8,$7FDE,$3FF8,$7FBE
  6945.         dc.w    $7FFC,$FF7F,$7EFC,$FFFF,$7FFC,$FFFF,$3FF8,$7FFE
  6946.         dc.w    $3FF8,$7FFE,$1FF0,$3FFC,$07C0,$1FF8,$0000,$07E0
  6947.         dc.w    $0000,$0000
  6948.  
  6949.         end
  6950.