home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / new / dev / asm / tbsource / voiceshell / vs.v1.00 < prev    next >
Encoding:
Text File  |  1993-12-21  |  61.8 KB  |  3,139 lines

  1. *************************************************
  2. *                        *
  3. *         (C)opyright 1992-93        *
  4. *                        *
  5. *          by Tomi Blinnikka        *
  6. *                        *
  7. *    Don't try to understand the code    *
  8. *                        *
  9. * Version 0.01    13/06/1992-            *
  10. *     -0.99รถ    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:                     *
  20. *                        *
  21. *************************************************
  22.  
  23.     INCLUDE    "JMPLibs.i"
  24.     INCLUDE    "exec/memory.i"
  25.     INCLUDE    "exec/io.i"
  26.     INCLUDE    "exec/tasks.i"
  27.     INCLUDE    "libraries/dosextens.i"
  28.     INCLUDE    "libraries/dos.i"
  29.     INCLUDE    "libraries/gadtools.i"
  30.     INCLUDE "workbench/startup.i"
  31.     INCLUDE "dos/dostags.i"
  32.  
  33.     INCLUDE    "XREF:2.0.xref"
  34.     INCLUDE    "XREF:intuition.xref"
  35.     INCLUDE    "XREF:exec.xref"
  36.     INCLUDE    "XREF:dos.xref"
  37.     INCLUDE    "XREF:icon.xref"
  38.     INCLUDE    "XREF:gfx.xref"
  39.  
  40. *************************************************
  41. *    Voice.library version 6.6 offsets    *
  42. *************************************************
  43. _LVOLearn        EQU    -30
  44. _LVORecognize        EQU    -36
  45. _LVOAddVoiceTask    EQU    -42
  46. _LVORemVoiceTask    EQU    -48
  47. _LVOGainUp        EQU    -54
  48. _LVOGainDown        EQU    -60
  49. _LVORecDataAddress    EQU    -66
  50. _LVORecMapAddress    EQU    -72
  51. _LVOWordScore        EQU    -78
  52. _LVOPickSampler        EQU    -84
  53. _LVOSetVoicePri        EQU    -90
  54. _LVOPickTimer        EQU    -96
  55. *************************************************
  56.  
  57. DVoice        set    1
  58.  
  59. ShellTop:    EQU    2
  60. OptionTop:    EQU    46
  61. VocabSIZE:    EQU    60
  62. NUMGADS:    EQU    10
  63. GADLENG1:    EQU    16
  64. GADLENG2:    EQU    64
  65. GADLENGTH:    EQU    (GADLENG1+GADLENG2)
  66.  
  67. Samp1MenuN:    EQU    $0002        ;0002
  68. Samp2MenuN:    EQU    $0802        ;0802
  69. Samp3MenuN:    EQU    $1002        ;1002
  70. ResLoMenuN:    EQU    $0022        ;0022
  71. ResHiMenuN:    EQU    $0822        ;0822
  72.  
  73. TRUE:        EQU    1
  74. do_ToolTypes:    EQU    $36
  75.  
  76.         section    VS,CODE
  77.  
  78.         push    d2-d7/a2-a6
  79.  
  80.         sub.l    a1,a1            ;Find our task
  81.         lib    Exec,FindTask
  82.         move.l    d0,OurTask
  83.         move.l    d0,a4
  84.         move.l    pr_CLI(a4),d0
  85.         bne    OpenDos
  86.  
  87.         lea.l    pr_MsgPort(a4),a0
  88.         lib    Exec,WaitPort
  89.         lea.l    pr_MsgPort(a4),a0
  90.         lib    Exec,GetMsg
  91.         move.l    d0,WBMsg
  92.  
  93. OpenDos:    openlib    Dos,NoDos        ;Keep at beginning
  94.  
  95.         tst.l    WBMsg
  96.         beq    CLIStart
  97.  
  98.         lea.l    NILName,a0
  99.         move.l    a0,d1
  100.         move.l    #MODE_NEWFILE,d2
  101.         lib    Dos,Open
  102.         move.l    d0,NILFile
  103.         beq    NoNIL
  104.         move.l    NILFile,_stdout
  105.  
  106.         openlib    Icon,NoIcon
  107.  
  108.         move.l    WBMsg,a0
  109.         move.l    sm_ArgList(a0),a1
  110.         move.l    wa_Lock(a1),d1
  111.         lib    Dos,CurrentDir
  112.         move.l    d0,OldLock
  113.  
  114.         move.l    WBMsg,a0
  115.         move.l    sm_ArgList(a0),a1
  116.         move.l    wa_Name(a1),a0
  117.         lib    Icon,GetDiskObject
  118.         move.l    d0,DiskObject
  119.         beq    MainStart
  120.  
  121. DoToolType1:    move.l    DiskObject,a4
  122.         move.l    do_ToolTypes(a4),a0
  123.         lea.l    ICONIFYText1,a1
  124.         lib    Icon,FindToolType
  125.         tst.l    d0
  126.         beq    DoToolType2
  127.         move.l    d0,a0
  128.         lea.l    YESText1,a1
  129.         lib    Icon,MatchToolValue
  130.         tst.l    d0
  131.         beq    DoToolType2
  132.         move.l    #1,OptionIconify
  133.  
  134. DoToolType2:    move.l    do_ToolTypes(a4),a0
  135.         lea.l    FROMText1,a1
  136.         lib    Icon,FindToolType
  137.         move.l    d0,FromFile
  138.  
  139. DoToolType3:    bra    MainStart
  140.  
  141. CLIStart:    lib    Dos,Output
  142.         move.l    d0,_stdout
  143.  
  144.         lea.l    CLTemplate1,a0
  145.         move.l    a0,d1
  146.         lea.l    CLArray1,a0
  147.         move.l    a0,d2
  148.         clr.l    d3
  149.         lib    Dos,ReadArgs
  150.         move.l    d0,RDArgs1
  151.         beq    NoRDArgs
  152.  
  153. MainStart:    openlib    Intuition,NoInt
  154.  
  155.         move.l    #6,d0
  156.         move.l    $4,a6
  157.         lea.l    _VoiceLib,a1
  158.         jsr    _LVOOpenLibrary(a6)
  159.         move.l    d0,_VoiceBase
  160.         beq    NoVoice
  161.  
  162.         openlib    GadTools,NoGadTools
  163.         openlib    Gfx,NoGfx
  164.  
  165. ;Create a message port for the voice.library
  166.  
  167.         lib    Exec,CreateMsgPort
  168.         move.l    d0,VoicePort
  169.         beq    NoMsgPort
  170.  
  171.         bsr    LockPubScr
  172.         tst.l    PubScreen
  173.         beq    NoPubScreen
  174.  
  175. ;Get visualinfo
  176.  
  177.         move.l    PubScreen,a0
  178.         sub.l    a1,a1
  179.         lib    GadTools,GetVisualInfoA
  180.         move.l    d0,vi
  181.  
  182. ;Make gadget stuff
  183.  
  184.         lea.l    glist,a0
  185.         lib    GadTools,CreateContext
  186.         move.l    d0,ContextGad
  187.         beq    NoContextGad
  188.  
  189.         move.l    glist,a0
  190.         lea.l    NGOnOffGad1,a1
  191.         move.l    #CHECKBOX_KIND,d0
  192.         move.l    vi,gng_VisualInfo(a1)
  193.         lea.l    GadTagList,a2
  194.         lib    GadTools,CreateGadgetA
  195.  
  196.         move.l    d0,OnOffGad1
  197.         move.l    d0,a0
  198.         or.w    #RELVERIFY,gg_Activation(a0)
  199.         add.w    d5,gg_TopEdge(a0)
  200.  
  201.         lea.l    NGGainUGad,a1
  202.         move.l    #BUTTON_KIND,d0
  203.         move.l    vi,gng_VisualInfo(a1)
  204.         lea.l    GadTagList,a2
  205.         lib    GadTools,CreateGadgetA
  206.  
  207.         move.l    d0,a0
  208.         move.l    a0,GainUGad1
  209.         or.w    #RELVERIFY,gg_Activation(a0)
  210.         add.w    d5,gg_TopEdge(a0)
  211.  
  212.         lea.l    NGGainDGad,a1
  213.         move.l    #BUTTON_KIND,d0
  214.         move.l    vi,gng_VisualInfo(a1)
  215.         lea.l    GadTagList,a2
  216.         lib    GadTools,CreateGadgetA
  217.  
  218.         move.l    d0,a0
  219.         move.l    a0,GainDGad1
  220.         or.w    #RELVERIFY,gg_Activation(a0)
  221.         add.w    d5,gg_TopEdge(a0)
  222.  
  223.         lea.l    NGSaveGad,a1
  224.         move.l    #BUTTON_KIND,d0
  225.         move.l    vi,gng_VisualInfo(a1)
  226.         lea.l    GadTagList,a2
  227.         lib    GadTools,CreateGadgetA
  228.  
  229.         move.l    d0,a0
  230.         move.l    a0,SaveGad1
  231.         or.w    #RELVERIFY,gg_Activation(a0)
  232.         add.w    d5,gg_TopEdge(a0)
  233.  
  234.         lea.l    NGQuitGad,a1
  235.         move.l    #BUTTON_KIND,d0
  236.         move.l    vi,gng_VisualInfo(a1)
  237.         lea.l    GadTagList,a2
  238.         lib    GadTools,CreateGadgetA
  239.  
  240.         move.l    d0,a0
  241.         move.l    a0,QuitGad1
  242.         or.w    #GRELRIGHT,gg_Flags(a0)
  243.         add.w    d5,gg_TopEdge(a0)
  244.  
  245.         lea.l    NGDatStrGad1,a1
  246.         move.l    #STRING_KIND,d0
  247.         move.l    vi,gng_VisualInfo(a1)
  248.         lea.l    DatStrGadTagList,a2
  249.         lib    GadTools,CreateGadgetA
  250.  
  251.         move.l    d0,DatStrGad1
  252.         move.l    d0,a0
  253.         move.l    $22(a0),a1
  254.         move.l    (a1),DatStrGadBuf1
  255.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  256.         add.w    d5,gg_TopEdge(a0)
  257.  
  258.         lea.l    NGStatusGad,a1
  259.         move.l    #TEXT_KIND,d0
  260.         move.l    vi,gng_VisualInfo(a1)
  261.         lea.l    StatGadTagList,a2
  262.         lib    GadTools,CreateGadgetA
  263.  
  264.         move.l    d0,a0
  265.         move.l    a0,StatusGad1
  266.         add.w    d5,gg_TopEdge(a0)
  267.  
  268.         lea.l    glist2,a0
  269.         lib    GadTools,CreateContext
  270.         move.l    d0,ContextGad2
  271.         beq    NoContextGad
  272.  
  273.         move.l    glist2,a0
  274.         lea.l    NGStrGad1,a1
  275.         move.l    #STRING_KIND,d0
  276.         move.l    vi,gng_VisualInfo(a1)
  277.         lea.l    StrGadTagList1,a2
  278.         lib    GadTools,CreateGadgetA
  279.  
  280.         move.l    d0,StrGad1
  281.         move.l    d0,a0
  282.         move.l    $22(a0),a1
  283.         move.l    (a1),StrGadBuf1
  284.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  285.         add.w    d5,gg_TopEdge(a0)
  286.  
  287.         lea.l    NGStrGad2,a1
  288.         move.l    #STRING_KIND,d0
  289.         move.l    vi,gng_VisualInfo(a1)
  290.         lea.l    StrGadTagList2,a2
  291.         lib    GadTools,CreateGadgetA
  292.  
  293.         move.l    d0,StrGad2
  294.         move.l    d0,a0
  295.         move.l    $22(a0),a1
  296.         move.l    (a1),StrGadBuf2
  297.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  298.         add.w    d5,gg_TopEdge(a0)
  299.  
  300.         lea.l    NGStrGad3,a1
  301.         move.l    #STRING_KIND,d0
  302.         move.l    vi,gng_VisualInfo(a1)
  303.         lea.l    StrGadTagList1,a2
  304.         lib    GadTools,CreateGadgetA
  305.  
  306.         move.l    d0,StrGad3
  307.         move.l    d0,a0
  308.         move.l    $22(a0),a1
  309.         move.l    (a1),StrGadBuf3
  310.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  311.         add.w    d5,gg_TopEdge(a0)
  312.  
  313.         lea.l    NGStrGad4,a1
  314.         move.l    #STRING_KIND,d0
  315.         move.l    vi,gng_VisualInfo(a1)
  316.         lea.l    StrGadTagList2,a2
  317.         lib    GadTools,CreateGadgetA
  318.  
  319.         move.l    d0,StrGad4
  320.         move.l    d0,a0
  321.         move.l    $22(a0),a1
  322.         move.l    (a1),StrGadBuf4
  323.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  324.         add.w    d5,gg_TopEdge(a0)
  325.  
  326.         lea.l    NGStrGad5,a1
  327.         move.l    #STRING_KIND,d0
  328.         move.l    vi,gng_VisualInfo(a1)
  329.         lea.l    StrGadTagList1,a2
  330.         lib    GadTools,CreateGadgetA
  331.  
  332.         move.l    d0,StrGad5
  333.         move.l    d0,a0
  334.         move.l    $22(a0),a1
  335.         move.l    (a1),StrGadBuf5
  336.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  337.         add.w    d5,gg_TopEdge(a0)
  338.  
  339.         lea.l    NGStrGad6,a1
  340.         move.l    #STRING_KIND,d0
  341.         move.l    vi,gng_VisualInfo(a1)
  342.         lea.l    StrGadTagList2,a2
  343.         lib    GadTools,CreateGadgetA
  344.  
  345.         move.l    d0,StrGad6
  346.         move.l    d0,a0
  347.         move.l    $22(a0),a1
  348.         move.l    (a1),StrGadBuf6
  349.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  350.         add.w    d5,gg_TopEdge(a0)
  351.  
  352.         lea.l    NGStrGad7,a1
  353.         move.l    #STRING_KIND,d0
  354.         move.l    vi,gng_VisualInfo(a1)
  355.         lea.l    StrGadTagList1,a2
  356.         lib    GadTools,CreateGadgetA
  357.  
  358.         move.l    d0,StrGad7
  359.         move.l    d0,a0
  360.         move.l    $22(a0),a1
  361.         move.l    (a1),StrGadBuf7
  362.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  363.         add.w    d5,gg_TopEdge(a0)
  364.  
  365.         lea.l    NGStrGad8,a1
  366.         move.l    #STRING_KIND,d0
  367.         move.l    vi,gng_VisualInfo(a1)
  368.         lea.l    StrGadTagList2,a2
  369.         lib    GadTools,CreateGadgetA
  370.  
  371.         move.l    d0,StrGad8
  372.         move.l    d0,a0
  373.         move.l    $22(a0),a1
  374.         move.l    (a1),StrGadBuf8
  375.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  376.         add.w    d5,gg_TopEdge(a0)
  377.  
  378.         lea.l    NGStrGad9,a1
  379.         move.l    #STRING_KIND,d0
  380.         move.l    vi,gng_VisualInfo(a1)
  381.         lea.l    StrGadTagList1,a2
  382.         lib    GadTools,CreateGadgetA
  383.  
  384.         move.l    d0,StrGad9
  385.         move.l    d0,a0
  386.         move.l    $22(a0),a1
  387.         move.l    (a1),StrGadBuf9
  388.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  389.         add.w    d5,gg_TopEdge(a0)
  390.  
  391.         lea.l    NGStrGad10,a1
  392.         move.l    #STRING_KIND,d0
  393.         move.l    vi,gng_VisualInfo(a1)
  394.         lea.l    StrGadTagList2,a2
  395.         lib    GadTools,CreateGadgetA
  396.  
  397.         move.l    d0,StrGad10
  398.         move.l    d0,a0
  399.         move.l    $22(a0),a1
  400.         move.l    (a1),StrGadBuf10
  401.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  402.         add.w    d5,gg_TopEdge(a0)
  403.  
  404.         lea.l    NGStrGad11,a1
  405.         move.l    #STRING_KIND,d0
  406.         move.l    vi,gng_VisualInfo(a1)
  407.         lea.l    StrGadTagList1,a2
  408.         lib    GadTools,CreateGadgetA
  409.  
  410.         move.l    d0,StrGad11
  411.         move.l    d0,a0
  412.         move.l    $22(a0),a1
  413.         move.l    (a1),StrGadBuf11
  414.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  415.         add.w    d5,gg_TopEdge(a0)
  416.  
  417.         lea.l    NGStrGad12,a1
  418.         move.l    #STRING_KIND,d0
  419.         move.l    vi,gng_VisualInfo(a1)
  420.         lea.l    StrGadTagList2,a2
  421.         lib    GadTools,CreateGadgetA
  422.  
  423.         move.l    d0,StrGad12
  424.         move.l    d0,a0
  425.         move.l    $22(a0),a1
  426.         move.l    (a1),StrGadBuf12
  427.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  428.         add.w    d5,gg_TopEdge(a0)
  429.  
  430.         lea.l    NGStrGad13,a1
  431.         move.l    #STRING_KIND,d0
  432.         move.l    vi,gng_VisualInfo(a1)
  433.         lea.l    StrGadTagList1,a2
  434.         lib    GadTools,CreateGadgetA
  435.  
  436.         move.l    d0,StrGad13
  437.         move.l    d0,a0
  438.         move.l    $22(a0),a1
  439.         move.l    (a1),StrGadBuf13
  440.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  441.         add.w    d5,gg_TopEdge(a0)
  442.  
  443.         lea.l    NGStrGad14,a1
  444.         move.l    #STRING_KIND,d0
  445.         move.l    vi,gng_VisualInfo(a1)
  446.         lea.l    StrGadTagList2,a2
  447.         lib    GadTools,CreateGadgetA
  448.  
  449.         move.l    d0,StrGad14
  450.         move.l    d0,a0
  451.         move.l    $22(a0),a1
  452.         move.l    (a1),StrGadBuf14
  453.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  454.         add.w    d5,gg_TopEdge(a0)
  455.  
  456.         lea.l    NGStrGad15,a1
  457.         move.l    #STRING_KIND,d0
  458.         move.l    vi,gng_VisualInfo(a1)
  459.         lea.l    StrGadTagList1,a2
  460.         lib    GadTools,CreateGadgetA
  461.  
  462.         move.l    d0,StrGad15
  463.         move.l    d0,a0
  464.         move.l    $22(a0),a1
  465.         move.l    (a1),StrGadBuf15
  466.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  467.         add.w    d5,gg_TopEdge(a0)
  468.  
  469.         lea.l    NGStrGad16,a1
  470.         move.l    #STRING_KIND,d0
  471.         move.l    vi,gng_VisualInfo(a1)
  472.         lea.l    StrGadTagList2,a2
  473.         lib    GadTools,CreateGadgetA
  474.  
  475.         move.l    d0,StrGad16
  476.         move.l    d0,a0
  477.         move.l    $22(a0),a1
  478.         move.l    (a1),StrGadBuf16
  479.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  480.         add.w    d5,gg_TopEdge(a0)
  481.  
  482.         lea.l    NGStrGad17,a1
  483.         move.l    #STRING_KIND,d0
  484.         move.l    vi,gng_VisualInfo(a1)
  485.         lea.l    StrGadTagList1,a2
  486.         lib    GadTools,CreateGadgetA
  487.  
  488.         move.l    d0,StrGad17
  489.         move.l    d0,a0
  490.         move.l    $22(a0),a1
  491.         move.l    (a1),StrGadBuf17
  492.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  493.         add.w    d5,gg_TopEdge(a0)
  494.  
  495.         lea.l    NGStrGad18,a1
  496.         move.l    #STRING_KIND,d0
  497.         move.l    vi,gng_VisualInfo(a1)
  498.         lea.l    StrGadTagList2,a2
  499.         lib    GadTools,CreateGadgetA
  500.  
  501.         move.l    d0,StrGad18
  502.         move.l    d0,a0
  503.         move.l    $22(a0),a1
  504.         move.l    (a1),StrGadBuf18
  505.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  506.         add.w    d5,gg_TopEdge(a0)
  507.  
  508.         lea.l    NGStrGad19,a1
  509.         move.l    #STRING_KIND,d0
  510.         move.l    vi,gng_VisualInfo(a1)
  511.         lea.l    StrGadTagList1,a2
  512.         lib    GadTools,CreateGadgetA
  513.  
  514.         move.l    d0,StrGad19
  515.         move.l    d0,a0
  516.         move.l    $22(a0),a1
  517.         move.l    (a1),StrGadBuf19
  518.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  519.         add.w    d5,gg_TopEdge(a0)
  520.  
  521.         lea.l    NGStrGad20,a1
  522.         move.l    #STRING_KIND,d0
  523.         move.l    vi,gng_VisualInfo(a1)
  524.         lea.l    StrGadTagList2,a2
  525.         lib    GadTools,CreateGadgetA
  526.  
  527.         move.l    d0,StrGad20
  528.         move.l    d0,a0
  529.         move.l    $22(a0),a1
  530.         move.l    (a1),StrGadBuf20
  531.         or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  532.         add.w    d5,gg_TopEdge(a0)
  533.  
  534.         lea.l    NGDesc1Gad,a1
  535.         move.l    #TEXT_KIND,d0
  536.         move.l    vi,gng_VisualInfo(a1)
  537.         lea.l    DescGadTagList,a2
  538.         lib    GadTools,CreateGadgetA
  539.  
  540.         move.l    d0,a0
  541.         add.w    d5,gg_TopEdge(a0)
  542.  
  543.         lea.l    NGDesc2Gad,a1
  544.         move.l    #TEXT_KIND,d0
  545.         move.l    vi,gng_VisualInfo(a1)
  546.         lea.l    DescGadTagList,a2
  547.         lib    GadTools,CreateGadgetA
  548.  
  549.         move.l    d0,a0
  550.         add.w    d5,gg_TopEdge(a0)
  551.  
  552.         move.b    #1,GadMagic        ;Make worked OK
  553.  
  554. ;New style menu stuff
  555.  
  556.         lea.l    MNProjectMenu1,a0
  557.         lea.l    MenuTagList,a1
  558.         lib    GadTools,CreateMenusA
  559.         move.l    d0,mlist
  560.         beq    NoMenus
  561.  
  562.         move.l    mlist,a0
  563.         move.l    vi,a1
  564.         lea.l    MenuTagList,a2
  565.         lib    GadTools,LayoutMenusA
  566.  
  567.         lea.l    MNPageMenu1,a0
  568.         lea.l    MenuTagList2,a1
  569.         lib    GadTools,CreateMenusA
  570.         move.l    d0,mlist2
  571.         beq    NoMenus
  572.  
  573.         move.l    mlist2,a0
  574.         move.l    vi,a1
  575.         lea.l    MenuTagList2,a2
  576.         lib    GadTools,LayoutMenusA
  577.         move.b    #1,MenuMagic
  578.  
  579. ;Read preferences
  580.  
  581.         bsr    Load
  582.  
  583.         bsr    OpenWin1
  584.         tst.l    Window1
  585.         beq    NoWindow1
  586.  
  587.         bsr    AddVTask
  588.  
  589. ;Unlock PubScreen
  590.  
  591.         sub.l    a0,a0
  592.         move.l    PubScreen,a1
  593.         lib    Intuition,UnlockPubScreen
  594.         clr.l    PubScreen
  595.  
  596. Window1IDCMP:    move.l    Window1,a0
  597.         bsr    CheckIDCMP
  598.         tst.l    d0            ;Test for CTRL_C
  599.         beq    ShutDown
  600.         cmp.l    #1,d0            ;Test for CTRL_D
  601.         beq    DoCTRL_D
  602.         cmp.l    #2,d0            ;Test for CTRL_E
  603.         beq    DoCTRL_E
  604.         cmp.l    #3,d0
  605.         beq    DoVoice
  606.         cmp.l    #INTUITICKS,d2
  607.         beq    DoTicks
  608.         cmp.l    #GADGETUP,d2
  609.         beq    DoGads
  610.         cmp.l    #CLOSEWINDOW,d2
  611.         beq    Quit
  612.         cmp.l    #MENUPICK,d2
  613.         beq    Win1Menus
  614.         cmp.l    #VANILLAKEY,d2
  615.         beq    VanillaKeys
  616.         cmp.l    #ACTIVEWINDOW,d2
  617.         beq    ActivateGads
  618.         bra    Window1IDCMP
  619.  
  620. DoCTRL_D:    bsr    RemGads
  621.         move.l    OnOffGad1,a0
  622.         and.w    #~SELECTED,gg_Flags(a0)
  623.         bsr    RemVTask1
  624.         bsr    AddGads
  625.         bra    Window1IDCMP
  626. DoCTRL_E:    bsr    RemGads
  627.         move.l    OnOffGad1,a0
  628.         or.w    #SELECTED,gg_Flags(a0)
  629.         bsr    AddVTask1
  630.         bsr    AddGads
  631.         bra    Window1IDCMP
  632.  
  633. Win1Menus:    bsr    MenuNull
  634.         cmp.w    #$00,d6
  635.         beq    Win1Menus1
  636.         cmp.w    #$01,d6
  637.         beq    Win1Menus2
  638.         cmp.w    #$02,d6
  639.         beq    Win1Menus3
  640.         bra    Window1IDCMP
  641. Win1Menus1:    cmp.w    #$00,d5
  642.         beq    DoLoad
  643.         cmp.w    #$01,d5
  644.         beq    Save
  645.         cmp.w    #$02,d5
  646.         beq    About
  647.         cmp.w    #$04,d5
  648.         beq    Quit
  649.         bra    Window1IDCMP
  650. Win1Menus2:    cmp.w    #$00,d5
  651.         beq    EditCmds
  652.         bra    Window1IDCMP
  653. Win1Menus3:    cmp.w    #$00,d5
  654.         beq    Win1Menus3.1
  655.         cmp.w    #$01,d5
  656.         beq    Win1Menus3.2
  657.         cmp.w    #$02,d5
  658.         beq    Win1Menus3.3
  659.         bra    Window1IDCMP
  660. Win1Menus3.1:    cmp.w    #$00,d4
  661.         beq    SetSamp1
  662.         cmp.w    #$01,d4
  663.         beq    SetSamp2
  664.         cmp.w    #$02,d4
  665.         beq    SetSamp3
  666.         bra    Window1IDCMP
  667. Win1Menus3.2:    cmp.w    #$00,d4
  668.         beq    SetResLo
  669.         cmp.w    #$01,d4
  670.         beq    SetResHi
  671. Win1Menus3.3:    cmp.w    #$00,d4
  672.         beq    SetTimerA
  673.         cmp.w    #$01,d4
  674.         beq    SetTimerB
  675.         bra    Window1IDCMP
  676.  
  677. DoTicks:    add.w    #1,TickCount
  678.         cmp.w    #20,TickCount
  679.         bne    Window1IDCMP
  680.         clr.w    TickCount
  681.         tst.w    TaskOn
  682.         beq    DoTicks2
  683.         lea.l    ReadyText1,a0
  684.         bsr    GetLength
  685.         bsr    Inform
  686.         bra    Window1IDCMP
  687. DoTicks2:    lea.l    InactiveText1,a0
  688.         bsr    GetLength
  689.         bsr    Inform
  690.         bra    Window1IDCMP
  691.  
  692. EditCmds:    clr.w    Saved
  693.         bsr    RemVTask1
  694.         bsr    SleepPointer
  695.         bsr    MenusOff
  696.         bsr    RemGads
  697.  
  698.         bsr    OpenWin2
  699.         tst.l    d0
  700.         beq    NoWindow1
  701.         bsr    RemGads2
  702.         bsr    SetStrGads
  703.         bsr    AddGads2
  704.  
  705. Window2IDCMP:    move.l    Window2,a0
  706.         bsr    CheckIDCMP
  707.  
  708.         tst.l    d0
  709.         beq    ShutDown
  710.         cmp.l    #GADGETUP,d2
  711.         beq    ActivateGads2
  712.         cmp.l    #CLOSEWINDOW,d2
  713.         beq    EditCmds_OUT
  714.         cmp.l    #MENUPICK,d2
  715.         beq    Win2Menus
  716.         cmp.l    #VANILLAKEY,d2
  717.         beq    EditKeys
  718.         cmp.l    #ACTIVEWINDOW,d2
  719.         beq    GoActGads2
  720.         bra    Window2IDCMP
  721.  
  722. Win2Menus:    bsr    MenuNull
  723.         cmp.w    #$00,d6
  724.         beq    Win2Menus1
  725.         bra    Window2IDCMP
  726. Win2Menus1:    cmp.w    #$00,d5
  727.         beq    DoPage1
  728.         cmp.w    #$01,d5
  729.         beq    DoPage2
  730.         cmp.w    #$02,d5
  731.         beq    DoPage3
  732.         cmp.w    #$03,d5
  733.         beq    DoPage4
  734.         cmp.w    #$04,d5
  735.         beq    DoPage5
  736.         cmp.w    #$05,d5
  737.         beq    DoPage6
  738.         cmp.w    #$07,d5
  739.         beq    EditCmds_OUT
  740.         bra    Window2IDCMP
  741.  
  742. DoPage1:    bsr    SaveStrGads
  743.         bsr    RemGads2
  744.         move.w    #0,Page
  745.         bsr    SetStrGads
  746.         bsr    AddGads2
  747.         bra    Window2IDCMP
  748.  
  749. DoPage2:    bsr    SaveStrGads
  750.         bsr    RemGads2
  751.         move.w    #1,Page
  752.         bsr    SetStrGads
  753.         bsr    AddGads2
  754.         bsr    ActGad2
  755.         bra    Window2IDCMP
  756.  
  757. DoPage3:    bsr    SaveStrGads
  758.         bsr    RemGads2
  759.         move.w    #2,Page
  760.         bsr    SetStrGads
  761.         bsr    AddGads2
  762.         bsr    ActGad2
  763.         bra    Window2IDCMP
  764.  
  765. DoPage4:    bsr    SaveStrGads
  766.         bsr    RemGads2
  767.         move.w    #3,Page
  768.         bsr    SetStrGads
  769.         bsr    AddGads2
  770.         bsr    ActGad2
  771.         bra    Window2IDCMP
  772.  
  773. DoPage5:    bsr    SaveStrGads
  774.         bsr    RemGads2
  775.         move.w    #4,Page
  776.         bsr    SetStrGads
  777.         bsr    AddGads2
  778.         bsr    ActGad2
  779.         bra    Window2IDCMP
  780.  
  781. DoPage6:    bsr    SaveStrGads
  782.         bsr    RemGads2
  783.         move.w    #5,Page
  784.         bsr    SetStrGads
  785.         bsr    AddGads2
  786.         bsr    ActGad2
  787.         bra    Window2IDCMP
  788.  
  789. SaveStrGads:    lea.l    CmdList,a2
  790.         move.w    Page,d0
  791.         mulu.w    #NUMGADS*GADLENGTH,d0
  792.         add.w    d0,a2            ;a2=start of strings
  793.  
  794.         move.l    StrGadBuf1,a0
  795.         move.l    a2,a1
  796.         move.l    #GADLENG1,d0
  797.         add.l    d0,a2
  798.         lib    Exec,CopyMem
  799.  
  800.         move.l    StrGadBuf2,a0
  801.         move.l    a2,a1
  802.         move.l    #GADLENG2,d0
  803.         add.l    d0,a2
  804.         lib    Exec,CopyMem
  805.  
  806.         move.l    StrGadBuf3,a0
  807.         move.l    a2,a1
  808.         move.l    #GADLENG1,d0
  809.         add.l    d0,a2
  810.         lib    Exec,CopyMem
  811.  
  812.         move.l    StrGadBuf4,a0
  813.         move.l    a2,a1
  814.         move.l    #GADLENG2,d0
  815.         add.l    d0,a2
  816.         lib    Exec,CopyMem
  817.  
  818.         move.l    StrGadBuf5,a0
  819.         move.l    a2,a1
  820.         move.l    #GADLENG1,d0
  821.         add.l    d0,a2
  822.         lib    Exec,CopyMem
  823.  
  824.         move.l    StrGadBuf6,a0
  825.         move.l    a2,a1
  826.         move.l    #GADLENG2,d0
  827.         add.l    d0,a2
  828.         lib    Exec,CopyMem
  829.  
  830.         move.l    StrGadBuf7,a0
  831.         move.l    a2,a1
  832.         move.l    #GADLENG1,d0
  833.         add.l    d0,a2
  834.         lib    Exec,CopyMem
  835.  
  836.         move.l    StrGadBuf8,a0
  837.         move.l    a2,a1
  838.         move.l    #GADLENG2,d0
  839.         add.l    d0,a2
  840.         lib    Exec,CopyMem
  841.  
  842.         move.l    StrGadBuf9,a0
  843.         move.l    a2,a1
  844.         move.l    #GADLENG1,d0
  845.         add.l    d0,a2
  846.         lib    Exec,CopyMem
  847.  
  848.         move.l    StrGadBuf10,a0
  849.         move.l    a2,a1
  850.         move.l    #GADLENG2,d0
  851.         add.l    d0,a2
  852.         lib    Exec,CopyMem
  853.  
  854.         move.l    StrGadBuf11,a0
  855.         move.l    a2,a1
  856.         move.l    #GADLENG1,d0
  857.         add.l    d0,a2
  858.         lib    Exec,CopyMem
  859.  
  860.         move.l    StrGadBuf12,a0
  861.         move.l    a2,a1
  862.         move.l    #GADLENG2,d0
  863.         add.l    d0,a2
  864.         lib    Exec,CopyMem
  865.  
  866.         move.l    StrGadBuf13,a0
  867.         move.l    a2,a1
  868.         move.l    #GADLENG1,d0
  869.         add.l    d0,a2
  870.         lib    Exec,CopyMem
  871.  
  872.         move.l    StrGadBuf14,a0
  873.         move.l    a2,a1
  874.         move.l    #GADLENG2,d0
  875.         add.l    d0,a2
  876.         lib    Exec,CopyMem
  877.  
  878.         move.l    StrGadBuf15,a0
  879.         move.l    a2,a1
  880.         move.l    #GADLENG1,d0
  881.         add.l    d0,a2
  882.         lib    Exec,CopyMem
  883.  
  884.         move.l    StrGadBuf16,a0
  885.         move.l    a2,a1
  886.         move.l    #GADLENG2,d0
  887.         add.l    d0,a2
  888.         lib    Exec,CopyMem
  889.  
  890.         move.l    StrGadBuf17,a0
  891.         move.l    a2,a1
  892.         move.l    #GADLENG1,d0
  893.         add.l    d0,a2
  894.         lib    Exec,CopyMem
  895.  
  896.         move.l    StrGadBuf18,a0
  897.         move.l    a2,a1
  898.         move.l    #GADLENG2,d0
  899.         add.l    d0,a2
  900.         lib    Exec,CopyMem
  901.  
  902.         move.l    StrGadBuf19,a0
  903.         move.l    a2,a1
  904.         move.l    #GADLENG1,d0
  905.         add.l    d0,a2
  906.         lib    Exec,CopyMem
  907.  
  908.         move.l    StrGadBuf20,a0
  909.         move.l    a2,a1
  910.         move.l    #GADLENG2,d0
  911.         add.l    d0,a2
  912.         lib    Exec,CopyMem
  913.         rts
  914.  
  915. SetStrGads:    lea.l    CmdList,a2
  916.         move.w    Page,d0
  917.         mulu.w    #NUMGADS*GADLENGTH,d0
  918.         add.w    d0,a2            ;a2=start of strings
  919.  
  920.         move.l    a2,a0
  921.         move.l    StrGadBuf1,a1
  922.         move.l    #GADLENG1,d0
  923.         add.l    d0,a2
  924.         lib    Exec,CopyMem
  925.  
  926.         move.l    a2,a0
  927.         move.l    StrGadBuf2,a1
  928.         move.l    #GADLENG2,d0
  929.         add.l    d0,a2
  930.         lib    Exec,CopyMem
  931.  
  932.         move.l    a2,a0
  933.         move.l    StrGadBuf3,a1
  934.         move.l    #GADLENG1,d0
  935.         add.l    d0,a2
  936.         lib    Exec,CopyMem
  937.  
  938.         move.l    a2,a0
  939.         move.l    StrGadBuf4,a1
  940.         move.l    #GADLENG2,d0
  941.         add.l    d0,a2
  942.         lib    Exec,CopyMem
  943.  
  944.         move.l    a2,a0
  945.         move.l    StrGadBuf5,a1
  946.         move.l    #GADLENG1,d0
  947.         add.l    d0,a2
  948.         lib    Exec,CopyMem
  949.  
  950.         move.l    a2,a0
  951.         move.l    StrGadBuf6,a1
  952.         move.l    #GADLENG2,d0
  953.         add.l    d0,a2
  954.         lib    Exec,CopyMem
  955.  
  956.         move.l    a2,a0
  957.         move.l    StrGadBuf7,a1
  958.         move.l    #GADLENG1,d0
  959.         add.l    d0,a2
  960.         lib    Exec,CopyMem
  961.  
  962.         move.l    a2,a0
  963.         move.l    StrGadBuf8,a1
  964.         move.l    #GADLENG2,d0
  965.         add.l    d0,a2
  966.         lib    Exec,CopyMem
  967.  
  968.         move.l    a2,a0
  969.         move.l    StrGadBuf9,a1
  970.         move.l    #GADLENG1,d0
  971.         add.l    d0,a2
  972.         lib    Exec,CopyMem
  973.  
  974.         move.l    a2,a0
  975.         move.l    StrGadBuf10,a1
  976.         move.l    #GADLENG2,d0
  977.         add.l    d0,a2
  978.         lib    Exec,CopyMem
  979.  
  980.         move.l    a2,a0
  981.         move.l    StrGadBuf11,a1
  982.         move.l    #GADLENG1,d0
  983.         add.l    d0,a2
  984.         lib    Exec,CopyMem
  985.  
  986.         move.l    a2,a0
  987.         move.l    StrGadBuf12,a1
  988.         move.l    #GADLENG2,d0
  989.         add.l    d0,a2
  990.         lib    Exec,CopyMem
  991.  
  992.         move.l    a2,a0
  993.         move.l    StrGadBuf13,a1
  994.         move.l    #GADLENG1,d0
  995.         add.l    d0,a2
  996.         lib    Exec,CopyMem
  997.  
  998.         move.l    a2,a0
  999.         move.l    StrGadBuf14,a1
  1000.         move.l    #GADLENG2,d0
  1001.         add.l    d0,a2
  1002.         lib    Exec,CopyMem
  1003.  
  1004.         move.l    a2,a0
  1005.         move.l    StrGadBuf15,a1
  1006.         move.l    #GADLENG1,d0
  1007.         add.l    d0,a2
  1008.         lib    Exec,CopyMem
  1009.  
  1010.         move.l    a2,a0
  1011.         move.l    StrGadBuf16,a1
  1012.         move.l    #GADLENG2,d0
  1013.         add.l    d0,a2
  1014.         lib    Exec,CopyMem
  1015.  
  1016.         move.l    a2,a0
  1017.         move.l    StrGadBuf17,a1
  1018.         move.l    #GADLENG1,d0
  1019.         add.l    d0,a2
  1020.         lib    Exec,CopyMem
  1021.  
  1022.         move.l    a2,a0
  1023.         move.l    StrGadBuf18,a1
  1024.         move.l    #GADLENG2,d0
  1025.         add.l    d0,a2
  1026.         lib    Exec,CopyMem
  1027.  
  1028.         move.l    a2,a0
  1029.         move.l    StrGadBuf19,a1
  1030.         move.l    #GADLENG1,d0
  1031.         add.l    d0,a2
  1032.         lib    Exec,CopyMem
  1033.  
  1034.         move.l    a2,a0
  1035.         move.l    StrGadBuf20,a1
  1036.         move.l    #GADLENG2,d0
  1037.         add.l    d0,a2
  1038.         lib    Exec,CopyMem
  1039.         rts
  1040.  
  1041. GoActGads2:    bsr    ActGad2
  1042.         bra    Window2IDCMP
  1043.  
  1044. EditCmds_OUT:    bsr    SaveStrGads
  1045.         bsr    CloseWin2
  1046.         bsr    AddGads
  1047.         bsr    MenusOn
  1048.         bsr    AddVTask
  1049.         bsr    NormalPointer
  1050.         bra    Window1IDCMP
  1051.  
  1052. EditKeys:    cmp.w    #$1b,d3
  1053.         beq    EditCmds_OUT
  1054.         bra    Window2IDCMP
  1055.  
  1056. DoVoice:    cmp.w    #-1,d3
  1057.         beq    VoiceUnknown
  1058.         cmp.w    #-2,d3
  1059.         beq    VoiceClip
  1060.         cmp.w    #-3,d3
  1061.         beq    VoiceLow
  1062.         cmp.w    #-4,d3
  1063.         beq    VoiceNoisy
  1064.  
  1065.         lea.l    CmdList,a2
  1066.         move.w    d3,d0
  1067.         mulu.w    #GADLENGTH,d0
  1068.         add.w    d0,a2            ;a2=start of strings
  1069.  
  1070.         move.l    a2,a0
  1071.         bsr    GetLength
  1072.         bsr    Inform
  1073.  
  1074.         add.l    #GADLENG1,a2
  1075.         cmp.l    #0,(a2)
  1076.         beq    DoVoice2
  1077.  
  1078.         move.l    a2,d1            ;execute command
  1079.         lea.l    CMDTags,a0
  1080.         move.l    a0,d2
  1081.         lib    Dos,SystemTagList
  1082.         cmp.l    #-1,d0
  1083.         beq    DoVoice3
  1084.  
  1085.         bra    Window1IDCMP
  1086.  
  1087. DoVoice2:    lea.l    NoCMDText1,a0
  1088.         bsr    GetLength
  1089.         bsr    Inform
  1090.         bra    Window1IDCMP
  1091. DoVoice3:    lea.l    CMDFailText1,a0
  1092.         bsr    GetLength
  1093.         bsr    Inform
  1094.         bra    Window1IDCMP
  1095.  
  1096. VoiceUnknown:    lea.l    NoMatchText1,a0
  1097.         bsr    GetLength
  1098.         bsr    Inform
  1099.         bra    Window1IDCMP
  1100. VoiceClip:    lea.l    ClippingText1,a0
  1101.         bsr    GetLength
  1102.         bsr    Inform
  1103.         bra    Window1IDCMP
  1104. VoiceLow:    lea.l    LowVolText1,a0
  1105.         bsr    GetLength
  1106.         bsr    Inform
  1107.         bra    Window1IDCMP
  1108. VoiceNoisy:    lea.l    NoisyText1,a0
  1109.         bsr    GetLength
  1110.         bsr    Inform
  1111.         bra    Window1IDCMP
  1112.  
  1113. SetResLo:    bsr    RemVTask
  1114.         move.b    #1,PrefsSampRes
  1115.         bsr    AddVTask
  1116.         bra    Window1IDCMP
  1117. SetResHi:    bsr    RemVTask
  1118.         move.b    #0,PrefsSampRes
  1119.         bsr    AddVTask
  1120.         bra    Window1IDCMP
  1121.  
  1122. SetSamp1:    clr.b    PrefsSampType            ;PerfectSound
  1123.         clr.l    d0
  1124.         lib    Voice,PickSampler
  1125.         bsr    RemGads
  1126.         move.l    GainUGad1,a0
  1127.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1128.         move.l    GainDGad1,a0
  1129.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1130.         bsr    AddGads
  1131.         bra    Window1IDCMP
  1132. SetSamp2:    move.b    #1,PrefsSampType        ;SoundMaster
  1133.         move.l    #$01,d0
  1134.         lib    Voice,PickSampler
  1135.         bsr    RemGads
  1136.         move.l    GainUGad1,a0
  1137.         or.w    #GADGDISABLED,gg_Flags(a0)
  1138.         move.l    GainDGad1,a0
  1139.         or.w    #GADGDISABLED,gg_Flags(a0)
  1140.         bsr    AddGads
  1141.         bra    Window1IDCMP
  1142. SetSamp3:    move.b    #2,PrefsSampType        ;Generic
  1143.         move.l    #$02,d0
  1144.         lib    Voice,PickSampler
  1145.         bsr    RemGads
  1146.         move.l    GainUGad1,a0
  1147.         or.w    #GADGDISABLED,gg_Flags(a0)
  1148.         move.l    GainDGad1,a0
  1149.         or.w    #GADGDISABLED,gg_Flags(a0)
  1150.         bsr    AddGads
  1151.         bra    Window1IDCMP
  1152.  
  1153. SetTimerA:    move.b    #1,PrefsTimer            ;Timer A=1
  1154.         move.l    #$01,d0
  1155.         lib    Voice,PickTimer
  1156.         bra    Window1IDCMP
  1157.  
  1158. SetTimerB:    clr.b    PrefsTimer            ;Timer B=0
  1159.         clr.l    d0
  1160.         lib    Voice,PickTimer
  1161.         bra    Window1IDCMP
  1162.  
  1163. DoLoad:        bsr    RemGads
  1164.         bsr    Load
  1165.         bsr    AddVTask
  1166.         bsr    AddGads
  1167.         move.l    #5,d1
  1168.         lib    Dos,Delay
  1169.         bra    ActivateGads
  1170.  
  1171. VanillaKeys:    cmp.w    #$1b,d3
  1172.         beq    Quit
  1173.         cmp.w    #'s',d3            ;Lower case
  1174.         beq    Save
  1175.         cmp.w    #'q',d3
  1176.         beq    Quit
  1177.         cmp.w    #'d',d3
  1178.         beq    ActivateGads
  1179.         cmp.w    #'S',d3            ;Upper case
  1180.         beq    Save
  1181.         cmp.w    #'Q',d3
  1182.         beq    Quit
  1183.         cmp.w    #'D',d3
  1184.         beq    ActivateGads
  1185.         bra    Window1IDCMP
  1186.  
  1187. DoGads:        cmp.w    #10,$26(a5)
  1188.         beq    DoOnOff
  1189.         cmp.w    #1,$26(a5)
  1190.         beq    ActivateGads
  1191.         cmp.w    #20,$26(a5)
  1192.         beq    GainUp
  1193.         cmp.w    #30,$26(a5)
  1194.         beq    GainDown
  1195.         cmp.w    #98,$26(a5)
  1196.         beq    Save
  1197.         cmp.w    #99,$26(a5)
  1198.         beq    Quit
  1199.         bra    Window1IDCMP
  1200.  
  1201. DoOnOff:    bsr    AddVTask        ;one or the other
  1202.         bsr    RemVTask        ;will respond
  1203.         bra    Window1IDCMP
  1204.  
  1205. GainUp:        lib    Voice,GainUp
  1206.         bra    Window1IDCMP
  1207. GainDown:    lib    Voice,GainDown
  1208.         bra    Window1IDCMP
  1209.  
  1210. ActivateGads:    move.l    DatStrGad1,a0
  1211.         move.l    Window1,a1
  1212.         sub.l    a2,a2
  1213.         lib    Intuition,ActivateGadget
  1214.         bra    Window1IDCMP
  1215.  
  1216. ActGad:        move.l    DatStrGad1,a0
  1217.         move.l    Window1,a1
  1218.         sub.l    a2,a2
  1219.         lib    Intuition,ActivateGadget
  1220.         rts
  1221.  
  1222. ActivateGads2:    cmp.w    #1,$26(a5)
  1223.         beq    Learn
  1224.         cmp.w    #2,$26(a5)
  1225.         bne    Window2IDCMP
  1226.         cmp.l    #$00,(a5)
  1227.         beq    ActivateGads2.01
  1228.         move.l    (a5),a0
  1229.         move.l    StrGad20,a1
  1230.         cmp.l    a5,a1
  1231.         bne    ActivateGads2.1
  1232. ActivateGads2.01: move.l StrGad1,a0
  1233. ActivateGads2.1: move.l    Window2,a1
  1234.         sub.l    a2,a2
  1235.         lib    Intuition,ActivateGadget
  1236.         bra    Window2IDCMP
  1237.  
  1238. ActGad2:    move.l    StrGad1,a0
  1239.         move.l    Window2,a1
  1240.         sub.l    a2,a2
  1241.         lib    Intuition,ActivateGadget
  1242.         rts
  1243.  
  1244. Learn:        move.w    Page,d0
  1245.         mulu.w    #NUMGADS,d0
  1246.         move.l    $22(a5),a0
  1247.         move.l    (a0),a0
  1248.         cmp.l    StrGadBuf1,a0
  1249.         bne    Learn1
  1250.         add.w    #1,d0
  1251.         bra    Learn10
  1252. Learn1:        cmp.l    StrGadBuf3,a0
  1253.         bne    Learn2
  1254.         add.w    #2,d0
  1255.         bra    Learn10
  1256. Learn2:        cmp.l    StrGadBuf5,a0
  1257.         bne    Learn3
  1258.         add.w    #3,d0
  1259.         bra    Learn10
  1260. Learn3:        cmp.l    StrGadBuf7,a0
  1261.         bne    Learn4
  1262.         add.w    #4,d0
  1263.         bra    Learn10
  1264. Learn4:        cmp.l    StrGadBuf9,a0
  1265.         bne    Learn5
  1266.         add.w    #5,d0
  1267.         bra    Learn10
  1268. Learn5:        cmp.l    StrGadBuf11,a0
  1269.         bne    Learn6
  1270.         add.w    #6,d0
  1271.         bra    Learn10
  1272. Learn6:        cmp.l    StrGadBuf13,a0
  1273.         bne    Learn7
  1274.         add.w    #7,d0
  1275.         bra    Learn10
  1276. Learn7:        cmp.l    StrGadBuf15,a0
  1277.         bne    Learn8
  1278.         add.w    #8,d0
  1279.         bra    Learn10
  1280. Learn8:        cmp.l    StrGadBuf17,a0
  1281.         bne    Learn9
  1282.         add.w    #9,d0
  1283.         bra    Learn10
  1284. Learn9:        cmp.l    StrGadBuf19,a0
  1285.         bne    Learn10
  1286.         add.w    #10,d0
  1287.  
  1288. Learn10:    sub.w    #1,d0
  1289.         lea.l    MapBuffer,a0
  1290.         move.l    $22(a5),a1
  1291.         move.l    (a1),a1
  1292.         sub.l    a2,a2        ;screen
  1293.         move.l    #220,d1
  1294.         move.l    #42,d2
  1295.         lib    Voice,Learn
  1296.         move.l    (a5),a0
  1297.         bra    ActivateGads2.1
  1298.  
  1299. Load:        bsr    RemVTask1
  1300.  
  1301.         move.l    FromFile,d1        ;If set to something else
  1302.         bne    Load1
  1303.         lea.l    PrefsName,a0
  1304.         move.l    a0,d1
  1305. Load1:        move.l    #MODE_OLDFILE,d2
  1306.         lib    Dos,Open
  1307.         move.l    d0,PrefsFile
  1308.         beq    Load_ERR1
  1309.  
  1310.         move.l    PrefsFile,d1
  1311.         lea.l    Prefs,a0
  1312.         move.l    a0,d2
  1313.         move.l    #2,d3
  1314.         lib    Dos,Read
  1315.         cmp.l    #2,d0
  1316.         bne    Load_ERR2
  1317.  
  1318.         cmp.w    #'VS',Prefs
  1319.         bne    Load_ERR3
  1320.  
  1321.         move.l    PrefsFile,d1
  1322.         add.l    #2,d2
  1323.         move.l    #PrefsSize-2,d3
  1324.         lib    Dos,Read
  1325.         cmp.l    #PrefsSize-2,d0
  1326.         bne    Load_ERR2
  1327.  
  1328. Load2:        move.l    DatStrGadBuf1,d1
  1329.         move.l    #MODE_OLDFILE,d2
  1330.         lib    Dos,Open
  1331.         move.l    d0,DataFile
  1332.         beq    Load_ERR1.1
  1333.  
  1334.         move.l    DataFile,d1
  1335.         lea.l    MapBuffer,a0
  1336.         move.l    a0,d2
  1337.         move.l    #DataSize,d3
  1338.         lib    Dos,Read
  1339.         cmp.l    #DataSize,d0
  1340.         bne    Load_ERR2
  1341.  
  1342.         move.w    #1,Saved
  1343.  
  1344. Load_OUT:    move.l    DataFile,d1
  1345.         beq    Load_OUT0.1
  1346.         lib    Dos,Close
  1347.         clr.l    DataFile
  1348. Load_OUT0.1:    move.l    PrefsFile,d1
  1349.         beq    Load_OUT1
  1350.         lib    Dos,Close
  1351.         clr.l    PrefsFile
  1352.  
  1353. Load_OUT1:    bsr    SetModes
  1354.         rts
  1355.  
  1356. Load_ERR1:    lea.l    File_ERRTxt1,a1
  1357.         move.l    #$00,a2
  1358.         lea.l    OKTxt,a3
  1359.         bsr    DoAutoRequest
  1360.         bra    Load2
  1361.  
  1362. Load_ERR1.1:    lea.l    File_ERRTxt4,a1
  1363.         move.l    #$00,a2
  1364.         lea.l    OKTxt,a3
  1365.         bsr    DoAutoRequest
  1366.         bra    Load_OUT
  1367.  
  1368. Load_ERR2:    lea.l    File_ERRTxt2,a1
  1369.         move.l    #$00,a2
  1370.         lea.l    OKTxt,a3
  1371.         bsr    DoAutoRequest
  1372.         bra    Load_OUT
  1373.  
  1374. Load_ERR3:    lea.l    File_ERRTxt3,a1
  1375.         move.l    #$00,a2
  1376.         lea.l    OKTxt,a3
  1377.         bsr    DoAutoRequest
  1378.         bra    Load_OUT
  1379.  
  1380. Save:        bsr    CheckModes
  1381.  
  1382.         move.l    FromFile,d1        ;If set to something else
  1383.         bne    Save1
  1384.         lea.l    PrefsName,a0
  1385.         move.l    a0,d1
  1386. Save1:        move.l    #MODE_NEWFILE,d2
  1387.         lib    Dos,Open
  1388.         move.l    d0,PrefsFile
  1389.         beq    Save_ERR1
  1390.  
  1391.         move.w    #'VS',Prefs
  1392.  
  1393.         move.l    PrefsFile,d1
  1394.         lea.l    Prefs,a0
  1395.         move.l    a0,d2
  1396.         move.l    #PrefsSize,d3
  1397.         lib    Dos,Write
  1398.         cmp.l    #PrefsSize,d0
  1399.         bne    Save_ERR2
  1400.  
  1401. Save2:        move.l    DatStrGadBuf1,d1
  1402.         move.l    #MODE_NEWFILE,d2
  1403.         lib    Dos,Open
  1404.         move.l    d0,DataFile
  1405.         beq    Save_ERR1.1
  1406.  
  1407.         move.l    DataFile,d1
  1408.         lea.l    MapBuffer,a0
  1409.         move.l    a0,d2
  1410.         move.l    #DataSize,d3
  1411.         lib    Dos,Write
  1412.         cmp.l    #DataSize,d0
  1413.         bne    Save_ERR2
  1414.  
  1415.         move.w    #1,Saved
  1416.  
  1417. Save_OUT:    move.l    DataFile,d1
  1418.         beq    Save_OUT0.1
  1419.         lib    Dos,Close
  1420.         clr.l    DataFile
  1421. Save_OUT0.1:    move.l    PrefsFile,d1
  1422.         beq    Save_OUT1
  1423.         lib    Dos,Close
  1424.         clr.l    PrefsFile
  1425. Save_OUT1:    bra    ActivateGads
  1426.  
  1427. Save_ERR1:    lea.l    File_ERRTxt1,a1
  1428.         move.l    #$00,a2
  1429.         lea.l    OKTxt,a3
  1430.         bsr    DoAutoRequest
  1431.         clr.w    Saved
  1432.         bra    Save2
  1433.  
  1434. Save_ERR1.1:    lea.l    File_ERRTxt4,a1
  1435.         move.l    #$00,a2
  1436.         lea.l    OKTxt,a3
  1437.         bsr    DoAutoRequest
  1438.         clr.w    Saved
  1439.         bra    Save_OUT
  1440.  
  1441. Save_ERR2:    lea.l    File_ERRTxt2,a1
  1442.         move.l    #$00,a2
  1443.         lea.l    OKTxt,a3
  1444.         bsr    DoAutoRequest
  1445.         clr.w    Saved
  1446.         bra    Save_OUT
  1447.  
  1448. About:        bsr    RemVTask1
  1449.         bsr    SleepPointer
  1450.         bsr    MenusOff
  1451.         bsr    RemGads
  1452.  
  1453.         move.l    Window1,a0
  1454.         lea.l    AboutTxt1,a1
  1455.         move.l    #$00,a2        ;positive text
  1456.         lea.l    OKTxt,a3    ;a bit the wrong way around but...
  1457.         move.l    #$00,d0
  1458.         move.l    #$00,d1
  1459.         move.l    #320,d2
  1460.         move.l    #$50,d3
  1461.         lib    Intuition,AutoRequest
  1462.         bsr    AddGads
  1463.         bsr    MenusOn
  1464.         bsr    NormalPointer
  1465.         bsr    AddVTask
  1466.         bra    Window1IDCMP
  1467.  
  1468. ;This is emergency exit, that's why it changes the Saved-flag
  1469.  
  1470. Break:        lea.l    BreakText1,a0
  1471.         bsr    Printer
  1472.         move.l    #CLOSEWINDOW,d2        ;fake closewindow...
  1473.         move.l    #-1,d0
  1474.         move.w    #1,Saved
  1475.         rts
  1476.  
  1477. AddVTask:    move.l    OnOffGad1,a0
  1478.         move.w    gg_Flags(a0),d0
  1479.         and.w    #SELECTED,d0
  1480.         cmp.w    #SELECTED,d0
  1481.         bne    AddVTask_OUT
  1482. AddVTask1:    tst.w    TaskOn
  1483.         bne    AddVTask_OUT
  1484.         lea.l    MapBuffer,a0
  1485.         move.l    VoicePort,a1
  1486.         clr.l    d0
  1487.         clr.l    d1
  1488.         move.w    #VocabSIZE,d0
  1489.         move.b    PrefsSampRes,d1
  1490.         lib    Voice,AddVoiceTask
  1491.  
  1492.         move.w    #1,TaskOn
  1493.         lea.l    TaskOnText1,a0
  1494.         bsr    GetLength
  1495.         bsr    Inform
  1496. AddVTask_OUT:    rts
  1497.  
  1498. RemVTask:    move.l    OnOffGad1,a0
  1499.         move.w    gg_Flags(a0),d0
  1500.         and.w    #SELECTED,d0
  1501.         cmp.w    #SELECTED,d0
  1502.         beq    RemVTask_OUT
  1503. RemVTask1:    tst.w    TaskOn
  1504.         beq    RemVTask_OUT
  1505.         bsr    C3GetMsg1        ;Clear messages
  1506.         lib    Voice,RemVoiceTask
  1507.  
  1508.         clr.w    TaskOn
  1509.         lea.l    TaskOffText1,a0
  1510.         bsr    GetLength
  1511.         bsr    Inform
  1512. RemVTask_OUT:    rts
  1513.  
  1514. SetModes:    move.l    OnOffGad1,a0
  1515.         and.w    #~SELECTED,gg_Flags(a0)
  1516.  
  1517.         move.l    OnOffGad1,a0
  1518.         tst.b    PrefsOnOff
  1519.         beq    SetModes1
  1520.         or.w    #SELECTED,gg_Flags(a0)
  1521.  
  1522. SetModes1:    move.l    mlist,a0            ;UnCheck SampType1
  1523.         move.l    #Samp1MenuN,d0
  1524.         lib    Intuition,ItemAddress
  1525.         move.l    d0,a0
  1526.         and.w    #~CHECKED,$c(a0)
  1527.  
  1528.         move.l    mlist,a0            ;UnCheck SampType2
  1529.         move.l    #Samp2MenuN,d0
  1530.         lib    Intuition,ItemAddress
  1531.         move.l    d0,a0
  1532.         and.w    #~CHECKED,$c(a0)
  1533.  
  1534.         move.l    mlist,a0            ;UnCheck SampType3
  1535.         move.l    #Samp3MenuN,d0
  1536.         lib    Intuition,ItemAddress
  1537.         move.l    d0,a0
  1538.         and.w    #~CHECKED,$c(a0)
  1539.  
  1540.         tst.b    PrefsSampType
  1541.         bne    SetModes2
  1542.         move.l    mlist,a0
  1543.         move.l    #Samp1MenuN,d0
  1544.         lib    Intuition,ItemAddress
  1545.         move.l    d0,a0
  1546.         or.w    #CHECKED,$c(a0)
  1547.         move.l    #$00,d0
  1548.         lib    Voice,PickSampler
  1549.         move.l    GainUGad1,a0
  1550.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1551.         move.l    GainDGad1,a0
  1552.         and.w    #~GADGDISABLED,gg_Flags(a0)
  1553.  
  1554. SetModes2:    cmp.b    #1,PrefsSampType
  1555.         bne    SetModes2.1
  1556.         move.l    mlist,a0
  1557.         move.l    #Samp2MenuN,d0
  1558.         lib    Intuition,ItemAddress
  1559.         move.l    d0,a0
  1560.         or.w    #CHECKED,$c(a0)
  1561.         move.l    #$01,d0
  1562.         lib    Voice,PickSampler
  1563.         move.l    GainUGad1,a0
  1564.         or.w    #GADGDISABLED,gg_Flags(a0)
  1565.         move.l    GainDGad1,a0
  1566.         or.w    #GADGDISABLED,gg_Flags(a0)
  1567.  
  1568. SetModes2.1:    cmp.b    #2,PrefsSampType
  1569.         bne    SetModes3
  1570.         move.l    mlist,a0
  1571.         move.l    #Samp3MenuN,d0
  1572.         lib    Intuition,ItemAddress
  1573.         move.l    d0,a0
  1574.         or.w    #CHECKED,$c(a0)
  1575.         move.l    #$01,d0
  1576.         lib    Voice,PickSampler
  1577.         move.l    GainUGad1,a0
  1578.         or.w    #GADGDISABLED,gg_Flags(a0)
  1579.         move.l    GainDGad1,a0
  1580.         or.w    #GADGDISABLED,gg_Flags(a0)
  1581.  
  1582. SetModes3:    move.l    mlist,a0            ;UnCheck ResLo
  1583.         move.l    #ResLoMenuN,d0
  1584.         lib    Intuition,ItemAddress
  1585.         move.l    d0,a0
  1586.         and.w    #~CHECKED,$c(a0)
  1587.  
  1588.         move.l    mlist,a0            ;UnCheck ResHi
  1589.         move.l    #ResHiMenuN,d0
  1590.         lib    Intuition,ItemAddress
  1591.         move.l    d0,a0
  1592.         and.w    #~CHECKED,$c(a0)
  1593.  
  1594.         cmp.b    #1,PrefsSampRes
  1595.         bne    SetModes4
  1596.         move.l    mlist,a0
  1597.         move.l    #ResLoMenuN,d0
  1598.         lib    Intuition,ItemAddress
  1599.         move.l    d0,a0
  1600.         or.w    #CHECKED,$c(a0)
  1601.  
  1602. SetModes4:    tst.b    PrefsSampRes
  1603.         bne    SetModes5
  1604.         move.l    mlist,a0
  1605.         move.l    #ResHiMenuN,d0
  1606.         lib    Intuition,ItemAddress
  1607.         move.l    d0,a0
  1608.         or.w    #CHECKED,$c(a0)
  1609.  
  1610. SetModes5:    lea.l    DatBuffer,a0
  1611.         move.l    DatStrGadBuf1,a1
  1612.         move.l    #32,d0
  1613.         lib    Exec,CopyMem
  1614.  
  1615.         tst.l    Window1
  1616.         beq    SetModes6
  1617.         move.l    Window1,a0
  1618.         move.w    Alt1XPos,d0
  1619.         move.w    Alt1YPos,d1
  1620.         move.w    wd_Width(a0),d2
  1621.         move.w    wd_Height(a0),d3
  1622.         lib    Intuition,ChangeWindowBox
  1623.         rts
  1624. SetModes6:    move.l    Alt1XPos,NewWindow1
  1625.         rts
  1626.  
  1627. CheckModes:    move.l    OnOffGad1,a0
  1628.         move.w    gg_Flags(a0),d0
  1629.         clr.b    PrefsOnOff
  1630.         and.w    #SELECTED,d0
  1631.         cmp.w    #SELECTED,d0
  1632.         bne    CheckModes1
  1633.         move.b    #$01,PrefsOnOff
  1634.  
  1635. CheckModes1:    move.l    DatStrGadBuf1,a0
  1636.         lea.l    DatBuffer,a1
  1637.         move.l    #32,d0
  1638.         lib    Exec,CopyMem
  1639.  
  1640.         move.l    Window1,a0
  1641.         move.l    wd_LeftEdge(a0),Alt1XY
  1642.         rts
  1643.  
  1644. RemGads:    move.l    Window1,a0
  1645.         move.l    OnOffGad1,a1
  1646.         sub.l    a2,a2
  1647.         move.l    #-1,d0
  1648.         lib    Intuition,RemoveGList
  1649.         rts
  1650.  
  1651. AddGads:    move.l    Window1,a0
  1652.         move.l    OnOffGad1,a1
  1653.         sub.l    a2,a2
  1654.         move.l    #-1,d0
  1655.         move.l    #-1,d1
  1656.         lib    Intuition,AddGList
  1657.  
  1658.         move.l    OnOffGad1,a0
  1659.         move.l    Window1,a1
  1660.         sub.l    a2,a2
  1661.         move.l    #-1,d0
  1662.         lib    Intuition,RefreshGList
  1663.  
  1664.         move.l    Window1,a0
  1665.         sub.l    a1,a1
  1666.         lib    GadTools,GT_RefreshWindow
  1667.         rts
  1668.  
  1669. RemGads2:    move.l    Window2,a0
  1670.         move.l    StrGad1,a1
  1671.         sub.l    a2,a2
  1672.         move.l    #-1,d0
  1673.         lib    Intuition,RemoveGList
  1674.         rts
  1675.  
  1676. AddGads2:    move.l    Window2,a0
  1677.         move.l    StrGad1,a1
  1678.         sub.l    a2,a2
  1679.         move.l    #-1,d0
  1680.         move.l    #-1,d1
  1681.         lib    Intuition,AddGList
  1682.  
  1683.         move.l    StrGad1,a0
  1684.         move.l    Window2,a1
  1685.         sub.l    a2,a2
  1686.         move.l    #-1,d0
  1687.         lib    Intuition,RefreshGList
  1688.  
  1689.         move.l    Window2,a0
  1690.         sub.l    a1,a1
  1691.         lib    GadTools,GT_RefreshWindow
  1692.         rts
  1693.  
  1694. Quit:        tst.w    Saved
  1695.         bne    ShutDown
  1696.         bsr    RemVTask1
  1697.         bsr    SleepPointer
  1698.         bsr    MenusOff
  1699.         bsr    RemGads
  1700.  
  1701.         lea.l    QuitTxt1,a1
  1702.         lea.l    OKTxt,a2
  1703.         lea.l    CancelTxt,a3
  1704.         bsr    DoAutoRequest
  1705.         tst.l    d0
  1706.         bne    Quit2
  1707.         bsr    AddGads
  1708.         bsr    MenusOn
  1709.         bsr    NormalPointer
  1710.         bsr    AddVTask
  1711.         bra    Window1IDCMP
  1712.  
  1713. Quit2:        bsr    MenusOn
  1714.         bsr    NormalPointer
  1715.         bsr    AddGads
  1716.         bsr    AddVTask
  1717.         bra    ShutDown
  1718.  
  1719. ShutDown:    bsr    RemVTask1
  1720.         tst.l    PubScreen
  1721.         beq    ShutDown9000
  1722.         sub.l    a0,a0
  1723.         move.l    PubScreen,a1
  1724.         lib    Intuition,UnlockPubScreen
  1725.  
  1726. ShutDown9000:    bsr    CloseWin1
  1727.         bsr    CloseWin2
  1728.         bsr    Clean2.0Magic
  1729.  
  1730. ShutDown8000:    move.l    PrefsFile,d1
  1731.         beq    ShutDown7000
  1732.         lib    Dos,Close
  1733.  
  1734. ShutDown7000:    tst.l    NILFile
  1735.         beq    ShutDown6000
  1736.         move.l    NILFile,d1
  1737.         lib    Dos,Close
  1738.  
  1739. ShutDown6000:    tst.l    DiskObject
  1740.         beq    ShutDown5000
  1741.         move.l    DiskObject,a0
  1742.         lib    Icon,FreeDiskObject
  1743.  
  1744. ShutDown5000:    move.l    OldLock,d1
  1745.         beq    ShutDown4050
  1746.         lib    Dos,CurrentDir
  1747.  
  1748. ShutDown4050:    move.l    WBMsg,d2
  1749.         beq    ShutDown3000
  1750.         lib    Exec,Forbid
  1751.         move.l    d2,a1
  1752.         flib    Exec,ReplyMsg
  1753.         flib    Exec,Permit        ;Added, not checked
  1754.  
  1755. ShutDown3000:    move.l    RDArgs1,d1
  1756.         beq    ShutDown2000
  1757.         lib    Dos,FreeArgs
  1758.  
  1759. ShutDown2000:    move.l    VoicePort,a0
  1760.         lib    Exec,DeleteMsgPort
  1761.  
  1762. ShutDown1000:    closlib    Voice
  1763.         closlib    Icon
  1764.         closlib    Intuition
  1765.         closlib    GadTools
  1766.         closlib    Gfx
  1767.         closlib    Dos
  1768.         pull    d2-d7/a2-a6
  1769.         clr.l    d0
  1770.         rts
  1771.  
  1772. ;CheckIDCMP gets messages from keyboard (CTRL_C) and Intuition.
  1773. ;Give it the window structure in a0
  1774.  
  1775. CheckIDCMP:    move.l    $56(a0),a2        ;Get window's port
  1776.         clr.l    d1            ;Set signals for
  1777.         clr.l    d0
  1778.         move.b    MP_SIGBIT(a2),d1    ;IntuiMessages,
  1779.         bset.l    d1,d0
  1780.         clr.l    d1            ;Set signals for
  1781.         move.l    VoicePort,a0        ;voice.library
  1782.         move.b    MP_SIGBIT(a0),d1
  1783.         bset.l    d1,d0
  1784.         bset.l    #SIGBREAKB_CTRL_C,d0    ;and CTRL_C
  1785.         bset.l    #SIGBREAKB_CTRL_D,d0    ;and CTRL_C
  1786.         bset.l    #SIGBREAKB_CTRL_E,d0    ;and CTRL_C
  1787.         lib    Exec,Wait
  1788.  
  1789.         cmp.l    #SIGBREAKF_CTRL_C,d0    ;If CTRL_C
  1790.         beq    Break            ;go break
  1791.         cmp.l    #SIGBREAKF_CTRL_D,d0    ;If CTRL_D
  1792.         bne    CheckIDCMP2        ;inform about it
  1793.         move.l    #1,d0
  1794.         rts
  1795. CheckIDCMP2:    cmp.l    #SIGBREAKF_CTRL_E,d0    ;If CTRL_E
  1796.         bne    CheckIDCMP3        ;inform about it
  1797.         move.l    #2,d0
  1798.         rts
  1799. CheckIDCMP3:    move.l    VoicePort,a0
  1800.         move.b    MP_SIGBIT(a0),d1    ;If voice.library
  1801.         btst    d1,d0
  1802.         bne    C3GetMsg1
  1803.  
  1804. C2GetMsg1:    move.l    a2,a0    
  1805.         lib    GadTools,GT_GetIMsg
  1806.         tst.l    d0
  1807.         beq    C2GetMsg2
  1808.     
  1809.         move.l    d0,a1 
  1810.         move.l    $14(a1),d2        ;answers with Class in d2,
  1811.         move.w    $18(a1),d3        ;Code in d3 and
  1812.         move.w    $1a(a1),a4        ;Qualifier in a4
  1813.         move.l    $1c(a1),a5        ;IAddress in a5
  1814.         lib    GadTools,GT_ReplyIMsg
  1815.         bra    C2GetMsg1
  1816. C2GetMsg2:    move.l    #-1,d0
  1817.         rts
  1818.  
  1819. C3GetMsg1:    move.l    VoicePort,a0    
  1820.         lib    Exec,GetMsg
  1821.         tst.l    d0
  1822.         beq    C3GetMsg2
  1823.     
  1824.         move.l    d0,a1 
  1825.         move.l    $14(a1),d2        ;Class in d2 and
  1826.         move.w    $18(a1),d3        ;Code in d3
  1827.         lib    Exec,ReplyMsg
  1828.         bra    C3GetMsg1
  1829. C3GetMsg2:    move.l    #3,d0
  1830.         rts
  1831.  
  1832. ;Newer MenuNull subroutine
  1833.  
  1834. MenuNull:    move.w    d3,d0
  1835.         and.w    #$1f,d0
  1836.         move.w    d0,d6
  1837.         move.w    d3,d0
  1838.         lsr.w    #5,d0
  1839.         move.w    d0,d1
  1840.         and.w    #$3f,d0
  1841.         move.w    d0,d5
  1842.         lsr.w    #6,d1
  1843.         move.w    d1,d4
  1844.         rts
  1845.  
  1846. SleepPointer:    move.l    Window1,a0
  1847.         lea.l    ClockPointer1,a1
  1848.         move.l    #16,d0
  1849.         move.l    #16,d1            ;WHAT-THE-HECK IS THIS FOR?
  1850.         move.l    #-6,d2
  1851.         move.l    #0,d3
  1852.         lib    Intuition,SetPointer
  1853.         rts
  1854.  
  1855. NormalPointer:    move.l    Window1,a0
  1856.         lib    Intuition,ClearPointer
  1857.         rts
  1858.  
  1859. MenusOn:    move.l    Window1,a0
  1860.         move.l    mlist,a1
  1861.         lib    Intuition,SetMenuStrip
  1862.         rts
  1863.  
  1864. MenusOff:    move.l    Window1,a0
  1865.         lib    Intuition,ClearMenuStrip
  1866.         rts
  1867.  
  1868. ;Lock PublicScreen
  1869.  
  1870. LockPubScr:    sub.l    a0,a0
  1871.         lib    Intuition,LockPubScreen
  1872.         move.l    d0,PubScreen
  1873.         beq    LockPubScr_OUT
  1874.  
  1875. ;Get some sizes
  1876.  
  1877.         move.l    PubScreen,a0
  1878.         move.b    sc_BarHeight(a0),d0
  1879.         add.b    #1,d0
  1880.         move.b    d0,BHeight+1
  1881.         move.w    BHeight,d5
  1882.         add.w    d5,SmallYSize
  1883.         add.w    d5,Win1YSize
  1884.         add.w    d5,Win2YSize
  1885. LockPubScr_OUT:    rts
  1886.  
  1887. ;Open Window 1
  1888.  
  1889. OpenWin1:    tst.l    OptionIconify
  1890.         beq    OpenWin1.01
  1891.         lea.l    NewWindow1,a0
  1892.         and.l    #~ACTIVATE,nw_Flags(a0)
  1893.         move.l    NewWindow1,ZoomXY
  1894.         move.l    NewWindow1+4,ZoomXY+4
  1895.         move.l    Alt1XY,nw_LeftEdge(a0)
  1896.         move.w    #160,nw_Width(a0)
  1897.         move.w    BHeight,nw_Height(a0)
  1898. OpenWin1.01:    lea.l    NewWindow1,a0
  1899.         lea.l    Win1TagList,a1
  1900.         lib    Intuition,OpenWindowTagList
  1901.         move.l    d0,Window1
  1902.         beq    OpenWin1_ERR1
  1903.         bsr    AddGads
  1904.         move.l    Window1,a0
  1905.         move.l    $32(a0),RP
  1906.         move.l    mlist,a1
  1907.         lib    Intuition,SetMenuStrip
  1908.         bsr    ActGad
  1909.         move.l    #-1,d0
  1910.         rts
  1911. OpenWin1_ERR1:    clr.l    d0
  1912.         rts        
  1913.  
  1914. CloseWin1:    tst.l    Window1
  1915.         beq    CloseWin1_OUT
  1916. CloseWin1.1:    move.l    Window1,a0
  1917.         lib    Intuition,ClearMenuStrip
  1918.         move.l    Window1,a3
  1919.         bsr    ClearMSGs
  1920. CloseWin1_OUT:    clr.l    Window1
  1921.         rts
  1922.  
  1923. ;Open Window 2
  1924.  
  1925. OpenWin2:    lea.l    NewWindow2,a0
  1926.         add.w    d0,nw_Height(a0)
  1927.         lea.l    Win2TagList,a1
  1928.         lib    Intuition,OpenWindowTagList
  1929.         move.l    d0,Window2
  1930.         beq    OpenWin2_ERR1
  1931.         move.l    Window2,a0
  1932.         move.l    mlist2,a1
  1933.         lib    Intuition,SetMenuStrip
  1934.         bsr    AddGads2
  1935.         move.l    #-1,d0
  1936.         rts
  1937. OpenWin2_ERR1:    clr.l    d0
  1938.         rts        
  1939.  
  1940. CloseWin2:    tst.l    Window2
  1941.         beq    CloseWin2_OUT
  1942. CloseWin2.1:    move.l    Window2,a0
  1943.         lib    Intuition,ClearMenuStrip
  1944.         move.l    Window2,a3
  1945.         bsr    ClearMSGs
  1946. CloseWin2_OUT:    clr.l    Window2
  1947.         rts
  1948.  
  1949. ;ClearMsgs subroutine
  1950. ;a3 = window structure
  1951.  
  1952. ClearMSGs:    lib    Exec,Forbid
  1953.         move.l    $56(a3),a2
  1954. ClearMsg1:    move.l    a2,a0    
  1955.         lib    GadTools,GT_GetIMsg
  1956.         tst.l    d0
  1957.         beq    ClearMsg2
  1958.         move.l    d0,a1
  1959.         flib    GadTools,GT_ReplyIMsg
  1960.         bra    ClearMsg1
  1961. ClearMsg2:    move.l    a3,a0
  1962.         lib    Intuition,CloseWindow
  1963.         lib    Exec,Permit
  1964. ClearMsg3:    rts
  1965.  
  1966. ;Get length of text in given address
  1967. ;
  1968. ;Input a0 = Address of null terminated text string
  1969. ;
  1970. ;Result d0 = Length
  1971.  
  1972. GetLength:    push    a0
  1973.         clr.l    d0
  1974.         cmp.l    #$00,a0        ;fixes enforcer hit
  1975.         beq    GetLength_OUT
  1976. GetLength2:    add.l    #1,d0
  1977.         tst.b    (a0)+
  1978.         bne    GetLength2
  1979.         sub.l    #1,d0        ;don't include NULL
  1980. GetLength_OUT:    pull    a0
  1981.         rts
  1982.  
  1983. ConvASCII:    clr.l    d0
  1984.         clr.l    d1
  1985.         cmp.b    #' ',(a0)
  1986.         bne    ConvASCII2
  1987.         add.l    #1,a0
  1988. ConvASCII2:    move.b    (a0),d1
  1989.         cmp.b    #'0',d1
  1990.         bcs    ConvASCII_OUT
  1991.         cmp.b    #'9',d1
  1992.         bhi    ConvASCII_OUT
  1993.         sub.b    #'0',d1
  1994.         mulu.w    #10,d0
  1995.         add.l    d1,d0
  1996.         add.l    #1,a0
  1997.         bra    ConvASCII2
  1998. ConvASCII_OUT:    rts
  1999.  
  2000. Clean2.0Magic:    tst.b    GadMagic
  2001.         beq    Clean2.0M2
  2002.         move.l    glist,a0
  2003.         lib    GadTools,FreeGadgets
  2004.         move.l    glist2,a0
  2005.         lib    GadTools,FreeGadgets
  2006.  
  2007. Clean2.0M2:    tst.b    MenuMagic
  2008.         beq    Clean2.0M3
  2009.         move.l    mlist,a0
  2010.         lib    GadTools,FreeMenus
  2011.         move.l    mlist2,a0
  2012.         lib    GadTools,FreeMenus
  2013.  
  2014. Clean2.0M3:    tst.l    vi
  2015.         beq    Clean2.0_OUT
  2016.         move.l    vi,a0
  2017.         lib    GadTools,FreeVisualInfo
  2018.  
  2019. Clean2.0_OUT:    rts
  2020.  
  2021. ;Error etc. messages
  2022.  
  2023. NoRDArgs:    lib    Dos,IoErr
  2024.         move.l    d0,d1
  2025.         clr.l    d2
  2026.         lib    Dos,PrintFault
  2027.         bra    ShutDown
  2028.  
  2029. NoMsgPort:    lea.l    NoMsgPortText1,a0
  2030.         bsr    Printer
  2031.         bra    ShutDown
  2032.  
  2033. NoDos:        pull    d2-d7/a2-a6
  2034.         move.l    #RETURN_FAIL,d0
  2035.         rts
  2036.  
  2037. NoInt:        lea.l    NoIntText1,a0
  2038.         bsr    Printer
  2039.         bra    ShutDown
  2040.  
  2041. NoVoice:    lea.l    NoVoiceText1,a0
  2042.         bsr    Printer
  2043.         bra    ShutDown
  2044.  
  2045. NoGadTools:    lea.l    NoGTText1,a0
  2046.         bsr    Printer
  2047.         bra    ShutDown
  2048.  
  2049. NoGfx:        lea.l    NoGfxText1,a0
  2050.         bsr    Printer
  2051.         bra    ShutDown
  2052.  
  2053. NoNIL:        lea.l    NoNILText1,a0
  2054.         bsr    Printer
  2055.         bra    ShutDown
  2056.  
  2057. NoNIL2:        lea.l    NoNILText1,a0
  2058.         bsr    Printer
  2059.         rts
  2060.  
  2061. NoIcon:        lea.l    NoIconText1,a0
  2062.         bsr    Printer
  2063.         bra    ShutDown
  2064.  
  2065. NoPubScreen:    lea.l    NoPubScrText1,a0
  2066.         bsr    Printer
  2067.         bra    ShutDown
  2068.  
  2069. NoWindow1:    lea.l    NoWindowText1,a0
  2070.         bsr    Printer
  2071.         bra    ShutDown
  2072.  
  2073. NoContextGad:    lea.l    NoContextText1,a0
  2074.         bsr    Printer
  2075.         bra    ShutDown
  2076.  
  2077. NoMenus:    lea.l    NoMenusText1,a0
  2078.         bsr    Printer
  2079.         bra    ShutDown
  2080.  
  2081. Printer:    printa    a0,_stdout
  2082.         rts
  2083.  
  2084. Inform:        push    a0/d0
  2085.         move.l    RP,a1
  2086.         clr.l    d0
  2087.         lib    Gfx,SetAPen
  2088.  
  2089.         move.l    RP,a1
  2090.         move.l    #12,d0
  2091.         move.l    #20,d1
  2092.         add.w    BHeight,d1
  2093.         move.l    #147,d2
  2094.         move.l    #29,d3
  2095.         add.w    BHeight,d3
  2096.         lib    Gfx,RectFill
  2097.  
  2098. ;Draw text
  2099.         move.l    RP,a1
  2100.         move.l    #$01,d0
  2101.         lib    Gfx,SetAPen
  2102.  
  2103.         move.l    RP,a1
  2104.         move.l    #13,d0
  2105.         move.l    #27,d1
  2106.         add.w    BHeight,d1
  2107.         lib    Gfx,Move
  2108.  
  2109.         pull    a0/d0
  2110.         push    a0
  2111.         move.l    RP,a1
  2112.         lib    Gfx,Text
  2113.  
  2114.         pull    a1
  2115.         bsr    SetTitle
  2116.  
  2117.         rts
  2118.  
  2119. ;Give this the title pointer in a1
  2120.  
  2121. SetTitle:    push    a2
  2122.         move.l    Window1,a0
  2123.         lea.l    VSName1,a2
  2124.         lib    Intuition,SetWindowTitles
  2125.         pull    a2
  2126.         rts
  2127.  
  2128. ;Does a normal AutoRequest
  2129. ;
  2130. ;INPUT
  2131. ;
  2132. ;a1 = Main text body
  2133. ;a2 = Pos text
  2134. ;a3 = Neg text
  2135.  
  2136. DoAutoRequest:    clr.l    d0
  2137.         clr.l    d1
  2138.         clr.l    d2
  2139.         clr.l    d3
  2140.         sub.l    a0,a0        ;No win, cos' might be here b4 anything open
  2141.         lib    Intuition,AutoRequest
  2142.         rts
  2143.  
  2144. ;Reservations
  2145.  
  2146.         libnames
  2147.  
  2148. RDArgs1:    dc.l    0
  2149.  
  2150. ;Options
  2151.  
  2152. CLArray1:
  2153. FromFile:    dc.l    0        ;A pointer to filename of PREFS!
  2154. OptionIconify:    dc.l    0
  2155.  
  2156. ;GadTools stuff
  2157.  
  2158. vi:        dc.l    0        ;Visual Info
  2159. mlist:        dc.l    0
  2160. mlist2:        dc.l    0
  2161. ContextGad:    dc.l    0
  2162. ContextGad2:    dc.l    0
  2163. GadMagic:    dc.b    0
  2164. MenuMagic:    dc.b    0
  2165.  
  2166. ;Gadgets
  2167.  
  2168. OnOffGad1:    dc.l    0
  2169. GainUGad1:    dc.l    0
  2170. GainDGad1:    dc.l    0
  2171. SaveGad1:    dc.l    0
  2172. QuitGad1:    dc.l    0
  2173. DatStrGad1:    dc.l    0
  2174. DatStrGadBuf1:    dc.l    0        ;Only a pointer!
  2175. StatusGad1:    dc.l    0
  2176.  
  2177. StrGad1:    dc.l    0
  2178. StrGadBuf1:    dc.l    0        ;Only a pointer!
  2179. StrGad2:    dc.l    0
  2180. StrGadBuf2:    dc.l    0        ;Only a pointer!
  2181. StrGad3:    dc.l    0
  2182. StrGadBuf3:    dc.l    0        ;Only a pointer!
  2183. StrGad4:    dc.l    0
  2184. StrGadBuf4:    dc.l    0        ;Only a pointer!
  2185. StrGad5:    dc.l    0
  2186. StrGadBuf5:    dc.l    0        ;Only a pointer!
  2187. StrGad6:    dc.l    0
  2188. StrGadBuf6:    dc.l    0        ;Only a pointer!
  2189. StrGad7:    dc.l    0
  2190. StrGadBuf7:    dc.l    0        ;Only a pointer!
  2191. StrGad8:    dc.l    0
  2192. StrGadBuf8:    dc.l    0        ;Only a pointer!
  2193. StrGad9:    dc.l    0
  2194. StrGadBuf9:    dc.l    0        ;Only a pointer!
  2195. StrGad10:    dc.l    0
  2196. StrGadBuf10:    dc.l    0        ;Only a pointer!
  2197. StrGad11:    dc.l    0
  2198. StrGadBuf11:    dc.l    0        ;Only a pointer!
  2199. StrGad12:    dc.l    0
  2200. StrGadBuf12:    dc.l    0        ;Only a pointer!
  2201. StrGad13:    dc.l    0
  2202. StrGadBuf13:    dc.l    0        ;Only a pointer!
  2203. StrGad14:    dc.l    0
  2204. StrGadBuf14:    dc.l    0        ;Only a pointer!
  2205. StrGad15:    dc.l    0
  2206. StrGadBuf15:    dc.l    0        ;Only a pointer!
  2207. StrGad16:    dc.l    0
  2208. StrGadBuf16:    dc.l    0        ;Only a pointer!
  2209. StrGad17:    dc.l    0
  2210. StrGadBuf17:    dc.l    0        ;Only a pointer!
  2211. StrGad18:    dc.l    0
  2212. StrGadBuf18:    dc.l    0        ;Only a pointer!
  2213. StrGad19:    dc.l    0
  2214. StrGadBuf19:    dc.l    0        ;Only a pointer!
  2215. StrGad20:    dc.l    0
  2216. StrGadBuf20:    dc.l    0        ;Only a pointer!
  2217.  
  2218. ;display stuff
  2219.  
  2220. PubScreen:    dc.l    0
  2221. Window1:    dc.l    0
  2222. Window2:    dc.l    0
  2223. BHeight:    dc.w    0
  2224. RP:        dc.l    0
  2225.  
  2226.  
  2227.         ds.w    0
  2228.  
  2229. ;Other stuff, part I
  2230.  
  2231. OurTask:    dc.l    0
  2232. PrefsFile:    dc.l    0
  2233. DataFile:    dc.l    0
  2234. NILFile:    dc.l    0
  2235. _stdout:    dc.l    0
  2236. WBMsg:        dc.l    0
  2237. DiskObject:    dc.l    0
  2238. OldLock:    dc.l    0
  2239. TaskOn:        dc.w    0        ;0=Off, 1=On
  2240. TickCount:    dc.w    10        ;Delay Status update
  2241. Page:        dc.w    0        ;What page are we on ?
  2242. Saved:        dc.w    1        ;0=No, 1=Yes
  2243. VoicePort:    dc.l    0        ;Message port for voice.library
  2244.  
  2245. ;Strings, error
  2246.  
  2247. BreakText1:    dc.b    "***Break",13,10,0
  2248. NoMsgPortText1:    dc.b    "ERROR: Couldn't get message port!",13,10,0
  2249. NoIntText1:    dc.b    "ERROR: Couldn't open intuition.library",13,10,0
  2250. NoVoiceText1:    dc.b    "ERROR: Couldn't open voice.library",13,10,0
  2251. NoGTText1:    dc.b    "ERROR: Couldn't open gadtools.library!",13,10,0
  2252. NoGfxText1:    dc.b    "ERROR: Couldn't open graphics.library!",13,10,0
  2253. NoNILText1:    dc.b    "ERROR: Couldn't open device NIL:!",13,10,0
  2254. NoIconText1:    dc.b    "ERROR: Couldn't open icon.library!",13,10,0
  2255. NoPubScrText1:    dc.b    "ERROR: Couldn't lock PublicScreen",13,10,0
  2256. NoContextText1:    dc.b    "ERROR: Couldn't create context gadget",13,10,0
  2257. NoMenusText1:    dc.b    "ERROR: Couldn't allocate menus structure",13,10,0
  2258. NoWindowText1:    dc.b    "ERROR: Couldn't open window",13,10,0
  2259. File_ERRText1:    dc.b    "Couldn't open preferences file!",0
  2260. File_ERRText2:    dc.b    "File error!",0
  2261. File_ERRText3:    dc.b    "Incorrect file type!",0
  2262. File_ERRText4:    dc.b    "Couldn't open data file!",0
  2263. NoMatchText1:    dc.b    "No Match",0
  2264. LowVolText1:    dc.b    "Low Volume",0
  2265. ClippingText1:    dc.b    "Clipping",0
  2266. NoisyText1:    dc.b    "Too Noisy",0
  2267. TaskOnText1:    dc.b    "Turned On",0
  2268. TaskOffText1:    dc.b    "Turned Off",0
  2269. ReadyText1:    dc.b    "Ready",0
  2270. InactiveText1:    dc.b    "Inactive",0
  2271. NoCMDText1:    dc.b    "No Command!",0
  2272. CMDFailText1:    dc.b    "Command Failed!",0
  2273.  
  2274. ;Strings, names
  2275.  
  2276. CLTemplate1:    dc.b    "FROM/K,I=ICONIFY/S",0
  2277. VSVersion:    dc.b    "$VER: VShell 1.00 (7.2.93) (C)opyright Tomi Blinnikka 1993",0
  2278. OKText1:    dc.b    "OK",0
  2279. CancelText1:    dc.b    "Cancel",0
  2280. PrefsName:    dc.b    "ENV:VShell.PREFS",0
  2281. NILName:    dc.b    "NIL:",0
  2282. ICONIFYText1:    dc.b    "ICONIFY",0
  2283. YESText1:    dc.b    "YES",0
  2284. FROMText1:    dc.b    "FROM",0
  2285. AboutText1:    dc.b    "Name   : VShell",0
  2286. AboutText2:    dc.b    "Version: 1.00",0
  2287. AboutText3:    dc.b    "Author : Tomi Blinnikka",0
  2288. AboutText4:    dc.b    "   (C)opyright  1993",0
  2289. QuitText1:    dc.b    "The data file has not been saved!",0
  2290. QuitText2:    dc.b    "Are you sure you want to quit?",0
  2291. VSName1:    dc.b    "VShell",0
  2292. VSName2:    dc.b    "VShell: Edit & Learn",0
  2293.         ds.w    0
  2294.  
  2295. ;New screen & new window structures
  2296.  
  2297. NewWindow1:    dc.w    200,31            ;X,Y POS
  2298.         dc.w    310            ;WIDTH
  2299. Win1YSize:    dc.w    62            ;HEIGHT
  2300.         dc.b    0,1            ;PENS
  2301.         dc.l    INTUITICKS!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP    ;IDCMP FLAGS
  2302.         dc.l    NOCAREREFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  2303.         dc.l    0,0            ;GADGETS, CHECKMARK
  2304.         dc.l    VSName1            ;TITLE
  2305.         dc.l    0            ;SCREEN ADDRESS
  2306.         dc.l    0            ;BITMAP            
  2307.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  2308.         dc.w    PUBLICSCREEN        ;TYPE
  2309.  
  2310. Win1TagList:    dc.l    WA_AutoAdjust,TRUE
  2311.         dc.l    WA_Zoom,ZoomXY
  2312.         dc.l    TAG_DONE,0
  2313.  
  2314. ZoomXY:
  2315. SmallXPos:    dc.w    10
  2316. SmallYPos:    dc.w    21
  2317. SmallXSize:    dc.w    160
  2318. SmallYSize:    dc.w    0
  2319.  
  2320. NewWindow2:    dc.w    220,42            ;X,Y POS
  2321.         dc.w    330            ;WIDTH
  2322. Win2YSize:    dc.w    122            ;HEIGHT
  2323.         dc.b    0,1            ;PENS
  2324.         dc.l    ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP    ;IDCMP FLAGS
  2325.         dc.l    NOCAREREFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  2326.         dc.l    0,0            ;GADGETS, CHECKMARK
  2327.         dc.l    VSName2            ;TITLE
  2328.         dc.l    0            ;SCREEN ADDRESS
  2329.         dc.l    0            ;BITMAP            
  2330.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  2331.         dc.w    PUBLICSCREEN        ;TYPE
  2332.  
  2333. Win2TagList:    dc.l    WA_AutoAdjust,TRUE
  2334.         dc.l    TAG_DONE,0
  2335. ;Fonts
  2336.  
  2337. Topaz:        dc.l    TopazName
  2338.         dc.w    8
  2339.         dc.b    0
  2340.         dc.b    0
  2341. TopazName:    dc.b    "topaz.font",0
  2342.         ds.w    0
  2343.  
  2344.  
  2345. ;ITextStructures
  2346.  
  2347. OKTxt:        dc.b    1,2            ;PENS
  2348.         dc.w    0            ;MODE
  2349.         dc.w    0,0            ;LEFT+TOPEDGE
  2350.         dc.l    0            ;FONT
  2351.         dc.l    OKText1            ;TEXT
  2352.         dc.l    0            ;NEXTTEXT
  2353.  
  2354. CancelTxt:    dc.b    1,2            ;PENS
  2355.         dc.w    0            ;MODE
  2356.         dc.w    0,0            ;LEFT+TOPEDGE
  2357.         dc.l    0            ;FONT
  2358.         dc.l    CancelText1        ;TEXT
  2359.         dc.l    0            ;NEXTTEXT
  2360.  
  2361. File_ERRTxt1:    dc.b    1,2            ;PENS
  2362.         dc.w    0            ;MODE
  2363.         dc.w    10,10            ;LEFT+TOPEDGE
  2364.         dc.l    0            ;FONT
  2365.         dc.l    File_ERRText1        ;TEXT
  2366.         dc.l    0            ;NEXTTEXT
  2367.  
  2368. File_ERRTxt2:    dc.b    1,2            ;PENS
  2369.         dc.w    0            ;MODE
  2370.         dc.w    10,10            ;LEFT+TOPEDGE
  2371.         dc.l    0            ;FONT
  2372.         dc.l    File_ERRText2        ;TEXT
  2373.         dc.l    0            ;NEXTTEXT
  2374.  
  2375. File_ERRTxt3:    dc.b    1,2            ;PENS
  2376.         dc.w    0            ;MODE
  2377.         dc.w    10,10            ;LEFT+TOPEDGE
  2378.         dc.l    0            ;FONT
  2379.         dc.l    File_ERRText3        ;TEXT
  2380.         dc.l    0            ;NEXTTEXT
  2381.  
  2382. File_ERRTxt4:    dc.b    1,2            ;PENS
  2383.         dc.w    0            ;MODE
  2384.         dc.w    10,10            ;LEFT+TOPEDGE
  2385.         dc.l    0            ;FONT
  2386.         dc.l    File_ERRText4        ;TEXT
  2387.         dc.l    0            ;NEXTTEXT
  2388.  
  2389. AboutTxt1:    dc.b    1,2            ;PENS
  2390.         dc.w    0            ;MODE
  2391.         dc.w    0,0            ;LEFT+TOPEDGE
  2392.         dc.l    0            ;FONT
  2393.         dc.l    AboutText1        ;TEXT
  2394.         dc.l    AboutTxt2        ;NEXTTEXT
  2395.  
  2396. AboutTxt2:    dc.b    1,2            ;PENS
  2397.         dc.w    0            ;MODE
  2398.         dc.w    0,10            ;LEFT+TOPEDGE
  2399.         dc.l    0            ;FONT
  2400.         dc.l    AboutText2        ;TEXT
  2401.         dc.l    AboutTxt3        ;NEXTTEXT
  2402.  
  2403. AboutTxt3:    dc.b    1,2            ;PENS
  2404.         dc.w    0            ;MODE
  2405.         dc.w    0,20            ;LEFT+TOPEDGE
  2406.         dc.l    0            ;FONT
  2407.         dc.l    AboutText3        ;TEXT
  2408.         dc.l    AboutTxt4        ;NEXTTEXT
  2409.  
  2410. AboutTxt4:    dc.b    1,2            ;PENS
  2411.         dc.w    0            ;MODE
  2412.         dc.w    0,30            ;LEFT+TOPEDGE
  2413.         dc.l    0            ;FONT
  2414.         dc.l    AboutText4        ;TEXT
  2415.         dc.l    0 ;AboutTxt5        ;NEXTTEXT
  2416.  
  2417. QuitTxt1:    dc.b    1,2            ;PENS
  2418.         dc.w    0            ;MODE
  2419.         dc.w    0,0            ;LEFT+TOPEDGE
  2420.         dc.l    0            ;FONT
  2421.         dc.l    QuitText1        ;TEXT
  2422.         dc.l    QuitTxt2        ;NEXTTEXT
  2423.  
  2424. QuitTxt2:    dc.b    1,2            ;PENS
  2425.         dc.w    0            ;MODE
  2426.         dc.w    0,10            ;LEFT+TOPEDGE
  2427.         dc.l    0            ;FONT
  2428.         dc.l    QuitText2        ;TEXT
  2429.         dc.l    0 ;QuitTxt3        ;NEXTTEXT
  2430.  
  2431. ;Gadgets
  2432.  
  2433. OnOffGadText1:    dc.b    "On/Off",0
  2434. GainUGadText1:    dc.b    "Vol Up",0
  2435. GainDGadText1:    dc.b    "Vol Dwn",0
  2436. SaveGadText1:    dc.b    "_Save",0
  2437. QuitGadText1:    dc.b    "_Quit",0
  2438. DatGadText1:    dc.b    "_Data file",0
  2439. StatGadText1:    dc.b    "Status",0
  2440. DescGadText1:    dc.b    "Description",0
  2441. DescGadText2:    dc.b    "Command to run",0
  2442.         ds.l    0
  2443.  
  2444. glist:        dcb.b    gg_SIZEOF,0
  2445. glist2:        dcb.b    gg_SIZEOF,0
  2446.  
  2447. NGOnOffGad1:    dc.w    10        ;gng_LeftEdge
  2448.         dc.w    ShellTop    ;gng_TopEdge
  2449.         dc.w    0        ;gng_Width
  2450.         dc.w    12        ;gng_Height
  2451.         dc.l    OnOffGadText1    ;gng_GadgetText
  2452.         dc.l    Topaz        ;gng_TextAttr
  2453.         dc.w    10        ;gng_GadgetID
  2454.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  2455.         dc.l    0        ;gng_VisualInfo
  2456.         dc.l    0        ;gng_UserData
  2457.  
  2458. NGGainUGad:    dc.w    160        ;gng_LeftEdge
  2459.         dc.w    ShellTop    ;gng_TopEdge
  2460.         dc.w    60        ;gng_Width
  2461.         dc.w    12        ;gng_Height
  2462.         dc.l    GainUGadText1    ;gng_GadgetText
  2463.         dc.l    Topaz        ;gng_TextAttr
  2464.         dc.w    20        ;gng_GadgetID
  2465.         dc.l    PLACETEXT_IN    ;gng_Flags
  2466.         dc.l    0        ;gng_VisualInfo
  2467.         dc.l    0        ;gng_UserData
  2468.  
  2469. NGGainDGad:    dc.w    228        ;gng_LeftEdge
  2470.         dc.w    ShellTop    ;gng_TopEdge
  2471.         dc.w    60        ;gng_Width
  2472.         dc.w    12        ;gng_Height
  2473.         dc.l    GainDGadText1    ;gng_GadgetText
  2474.         dc.l    Topaz        ;gng_TextAttr
  2475.         dc.w    30        ;gng_GadgetID
  2476.         dc.l    PLACETEXT_IN    ;gng_Flags
  2477.         dc.l    0        ;gng_VisualInfo
  2478.         dc.l    0        ;gng_UserData
  2479.  
  2480. NGSaveGad:    dc.w    10        ;gng_LeftEdge
  2481.         dc.w    OptionTop    ;gng_TopEdge
  2482.         dc.w    60        ;gng_Width
  2483.         dc.w    12        ;gng_Height
  2484.         dc.l    SaveGadText1    ;gng_GadgetText
  2485.         dc.l    Topaz        ;gng_TextAttr
  2486.         dc.w    98        ;gng_GadgetID
  2487.         dc.l    PLACETEXT_IN    ;gng_Flags
  2488.         dc.l    0        ;gng_VisualInfo
  2489.         dc.l    0        ;gng_UserData
  2490.  
  2491. NGQuitGad:    dc.w    -70        ;gng_LeftEdge
  2492.         dc.w    OptionTop    ;gng_TopEdge
  2493.         dc.w    60        ;gng_Width
  2494.         dc.w    12        ;gng_Height
  2495.         dc.l    QuitGadText1    ;gng_GadgetText
  2496.         dc.l    Topaz        ;gng_TextAttr
  2497.         dc.w    99        ;gng_GadgetID
  2498.         dc.l    PLACETEXT_IN    ;gng_Flags
  2499.         dc.l    0        ;gng_VisualInfo
  2500.         dc.l    0        ;gng_UserData
  2501.  
  2502. NGDatStrGad1:    dc.w    160        ;gng_LeftEdge
  2503.         dc.w    ShellTop+17    ;gng_TopEdge
  2504.         dc.w    128        ;gng_Width
  2505.         dc.w    12        ;gng_Height
  2506.         dc.l    DatGadText1    ;gng_GadgetText
  2507.         dc.l    Topaz        ;gng_TextAttr
  2508.         dc.w    1        ;gng_GadgetID
  2509.         dc.l    PLACETEXT_BELOW    ;gng_Flags
  2510.         dc.l    0        ;gng_VisualInfo
  2511.         dc.l    0        ;gng_UserData
  2512.  
  2513. NGStatusGad:    dc.w    10        ;gng_LeftEdge
  2514.         dc.w    ShellTop+17    ;gng_TopEdge
  2515.         dc.w    140        ;gng_Width
  2516.         dc.w    12        ;gng_Height
  2517.         dc.l    StatGadText1    ;gng_GadgetText
  2518.         dc.l    Topaz        ;gng_TextAttr
  2519.         dc.w    0        ;gng_GadgetID
  2520.         dc.l    PLACETEXT_BELOW    ;gng_Flags
  2521.         dc.l    0        ;gng_VisualInfo
  2522.         dc.l    0        ;gng_UserData
  2523.  
  2524. ;Gadget TagLists
  2525.  
  2526. GadTagList:    dc.l    GT_Underscore,'_'
  2527.         dc.l    TAG_DONE,0
  2528.  
  2529. StatGadTagList:    dc.l    GTTX_Border,1
  2530.         dc.l    TAG_DONE,0
  2531.  
  2532. DatStrGadTagList: dc.l    GTST_String,DatBuffer
  2533.         dc.l    GT_Underscore,'_'
  2534.         dc.l    GTST_MaxChars,32
  2535.         dc.l    TAG_DONE,0
  2536.  
  2537. ;Gadgets for edit window
  2538.  
  2539. NGDesc1Gad:    dc.w    10        ;gng_LeftEdge
  2540.         dc.w    ShellTop    ;gng_TopEdge
  2541.         dc.w    100        ;gng_Width
  2542.         dc.w    12        ;gng_Height
  2543.         dc.l    DescGadText1    ;gng_GadgetText
  2544.         dc.l    Topaz        ;gng_TextAttr
  2545.         dc.w    0        ;gng_GadgetID
  2546.         dc.l    PLACETEXT_IN    ;gng_Flags
  2547.         dc.l    0        ;gng_VisualInfo
  2548.         dc.l    0        ;gng_UserData
  2549.  
  2550. NGDesc2Gad:    dc.w    120        ;gng_LeftEdge
  2551.         dc.w    ShellTop    ;gng_TopEdge
  2552.         dc.w    200        ;gng_Width
  2553.         dc.w    12        ;gng_Height
  2554.         dc.l    DescGadText2    ;gng_GadgetText
  2555.         dc.l    Topaz        ;gng_TextAttr
  2556.         dc.w    0        ;gng_GadgetID
  2557.         dc.l    PLACETEXT_IN    ;gng_Flags
  2558.         dc.l    0        ;gng_VisualInfo
  2559.         dc.l    0        ;gng_UserData
  2560.  
  2561. NGStrGad1:    dc.w    10        ;gng_LeftEdge
  2562.         dc.w    ShellTop+15    ;gng_TopEdge
  2563.         dc.w    100        ;gng_Width
  2564.         dc.w    12        ;gng_Height
  2565.         dc.l    0        ;gng_GadgetText
  2566.         dc.l    Topaz        ;gng_TextAttr
  2567.         dc.w    1        ;gng_GadgetID
  2568.         dc.l    0        ;gng_Flags
  2569.         dc.l    0        ;gng_VisualInfo
  2570.         dc.l    0        ;gng_UserData
  2571.  
  2572. NGStrGad2:    dc.w    120        ;gng_LeftEdge
  2573.         dc.w    ShellTop+15    ;gng_TopEdge
  2574.         dc.w    200        ;gng_Width
  2575.         dc.w    12        ;gng_Height
  2576.         dc.l    0        ;gng_GadgetText
  2577.         dc.l    Topaz        ;gng_TextAttr
  2578.         dc.w    2        ;gng_GadgetID
  2579.         dc.l    0        ;gng_Flags
  2580.         dc.l    0        ;gng_VisualInfo
  2581.         dc.l    0        ;gng_UserData
  2582.  
  2583. NGStrGad3:    dc.w    10        ;gng_LeftEdge
  2584.         dc.w    ShellTop+25    ;gng_TopEdge
  2585.         dc.w    100        ;gng_Width
  2586.         dc.w    12        ;gng_Height
  2587.         dc.l    0        ;gng_GadgetText
  2588.         dc.l    Topaz        ;gng_TextAttr
  2589.         dc.w    1        ;gng_GadgetID
  2590.         dc.l    0        ;gng_Flags
  2591.         dc.l    0        ;gng_VisualInfo
  2592.         dc.l    0        ;gng_UserData
  2593.  
  2594. NGStrGad4:    dc.w    120        ;gng_LeftEdge
  2595.         dc.w    ShellTop+25    ;gng_TopEdge
  2596.         dc.w    200        ;gng_Width
  2597.         dc.w    12        ;gng_Height
  2598.         dc.l    0        ;gng_GadgetText
  2599.         dc.l    Topaz        ;gng_TextAttr
  2600.         dc.w    2        ;gng_GadgetID
  2601.         dc.l    0        ;gng_Flags
  2602.         dc.l    0        ;gng_VisualInfo
  2603.         dc.l    0        ;gng_UserData
  2604.  
  2605. NGStrGad5:    dc.w    10        ;gng_LeftEdge
  2606.         dc.w    ShellTop+35    ;gng_TopEdge
  2607.         dc.w    100        ;gng_Width
  2608.         dc.w    12        ;gng_Height
  2609.         dc.l    0        ;gng_GadgetText
  2610.         dc.l    Topaz        ;gng_TextAttr
  2611.         dc.w    1        ;gng_GadgetID
  2612.         dc.l    0        ;gng_Flags
  2613.         dc.l    0        ;gng_VisualInfo
  2614.         dc.l    0        ;gng_UserData
  2615.  
  2616. NGStrGad6:    dc.w    120        ;gng_LeftEdge
  2617.         dc.w    ShellTop+35    ;gng_TopEdge
  2618.         dc.w    200        ;gng_Width
  2619.         dc.w    12        ;gng_Height
  2620.         dc.l    0        ;gng_GadgetText
  2621.         dc.l    Topaz        ;gng_TextAttr
  2622.         dc.w    2        ;gng_GadgetID
  2623.         dc.l    0        ;gng_Flags
  2624.         dc.l    0        ;gng_VisualInfo
  2625.         dc.l    0        ;gng_UserData
  2626.  
  2627. NGStrGad7:    dc.w    10        ;gng_LeftEdge
  2628.         dc.w    ShellTop+45    ;gng_TopEdge
  2629.         dc.w    100        ;gng_Width
  2630.         dc.w    12        ;gng_Height
  2631.         dc.l    0        ;gng_GadgetText
  2632.         dc.l    Topaz        ;gng_TextAttr
  2633.         dc.w    1        ;gng_GadgetID
  2634.         dc.l    0        ;gng_Flags
  2635.         dc.l    0        ;gng_VisualInfo
  2636.         dc.l    0        ;gng_UserData
  2637.  
  2638. NGStrGad8:    dc.w    120        ;gng_LeftEdge
  2639.         dc.w    ShellTop+45    ;gng_TopEdge
  2640.         dc.w    200        ;gng_Width
  2641.         dc.w    12        ;gng_Height
  2642.         dc.l    0        ;gng_GadgetText
  2643.         dc.l    Topaz        ;gng_TextAttr
  2644.         dc.w    2        ;gng_GadgetID
  2645.         dc.l    0        ;gng_Flags
  2646.         dc.l    0        ;gng_VisualInfo
  2647.         dc.l    0        ;gng_UserData
  2648.  
  2649. NGStrGad9:    dc.w    10        ;gng_LeftEdge
  2650.         dc.w    ShellTop+55    ;gng_TopEdge
  2651.         dc.w    100        ;gng_Width
  2652.         dc.w    12        ;gng_Height
  2653.         dc.l    0        ;gng_GadgetText
  2654.         dc.l    Topaz        ;gng_TextAttr
  2655.         dc.w    1        ;gng_GadgetID
  2656.         dc.l    0        ;gng_Flags
  2657.         dc.l    0        ;gng_VisualInfo
  2658.         dc.l    0        ;gng_UserData
  2659.  
  2660. NGStrGad10:    dc.w    120        ;gng_LeftEdge
  2661.         dc.w    ShellTop+55    ;gng_TopEdge
  2662.         dc.w    200        ;gng_Width
  2663.         dc.w    12        ;gng_Height
  2664.         dc.l    0        ;gng_GadgetText
  2665.         dc.l    Topaz        ;gng_TextAttr
  2666.         dc.w    2        ;gng_GadgetID
  2667.         dc.l    0        ;gng_Flags
  2668.         dc.l    0        ;gng_VisualInfo
  2669.         dc.l    0        ;gng_UserData
  2670.  
  2671. NGStrGad11:    dc.w    10        ;gng_LeftEdge
  2672.         dc.w    ShellTop+65    ;gng_TopEdge
  2673.         dc.w    100        ;gng_Width
  2674.         dc.w    12        ;gng_Height
  2675.         dc.l    0        ;gng_GadgetText
  2676.         dc.l    Topaz        ;gng_TextAttr
  2677.         dc.w    1        ;gng_GadgetID
  2678.         dc.l    0        ;gng_Flags
  2679.         dc.l    0        ;gng_VisualInfo
  2680.         dc.l    0        ;gng_UserData
  2681.  
  2682. NGStrGad12:    dc.w    120        ;gng_LeftEdge
  2683.         dc.w    ShellTop+65    ;gng_TopEdge
  2684.         dc.w    200        ;gng_Width
  2685.         dc.w    12        ;gng_Height
  2686.         dc.l    0        ;gng_GadgetText
  2687.         dc.l    Topaz        ;gng_TextAttr
  2688.         dc.w    2        ;gng_GadgetID
  2689.         dc.l    0        ;gng_Flags
  2690.         dc.l    0        ;gng_VisualInfo
  2691.         dc.l    0        ;gng_UserData
  2692.  
  2693. NGStrGad13:    dc.w    10        ;gng_LeftEdge
  2694.         dc.w    ShellTop+75    ;gng_TopEdge
  2695.         dc.w    100        ;gng_Width
  2696.         dc.w    12        ;gng_Height
  2697.         dc.l    0        ;gng_GadgetText
  2698.         dc.l    Topaz        ;gng_TextAttr
  2699.         dc.w    1        ;gng_GadgetID
  2700.         dc.l    0        ;gng_Flags
  2701.         dc.l    0        ;gng_VisualInfo
  2702.         dc.l    0        ;gng_UserData
  2703.  
  2704. NGStrGad14:    dc.w    120        ;gng_LeftEdge
  2705.         dc.w    ShellTop+75    ;gng_TopEdge
  2706.         dc.w    200        ;gng_Width
  2707.         dc.w    12        ;gng_Height
  2708.         dc.l    0        ;gng_GadgetText
  2709.         dc.l    Topaz        ;gng_TextAttr
  2710.         dc.w    2        ;gng_GadgetID
  2711.         dc.l    0        ;gng_Flags
  2712.         dc.l    0        ;gng_VisualInfo
  2713.         dc.l    0        ;gng_UserData
  2714.  
  2715. NGStrGad15:    dc.w    10        ;gng_LeftEdge
  2716.         dc.w    ShellTop+85    ;gng_TopEdge
  2717.         dc.w    100        ;gng_Width
  2718.         dc.w    12        ;gng_Height
  2719.         dc.l    0        ;gng_GadgetText
  2720.         dc.l    Topaz        ;gng_TextAttr
  2721.         dc.w    1        ;gng_GadgetID
  2722.         dc.l    0        ;gng_Flags
  2723.         dc.l    0        ;gng_VisualInfo
  2724.         dc.l    0        ;gng_UserData
  2725.  
  2726. NGStrGad16:    dc.w    120        ;gng_LeftEdge
  2727.         dc.w    ShellTop+85    ;gng_TopEdge
  2728.         dc.w    200        ;gng_Width
  2729.         dc.w    12        ;gng_Height
  2730.         dc.l    0        ;gng_GadgetText
  2731.         dc.l    Topaz        ;gng_TextAttr
  2732.         dc.w    2        ;gng_GadgetID
  2733.         dc.l    0        ;gng_Flags
  2734.         dc.l    0        ;gng_VisualInfo
  2735.         dc.l    0        ;gng_UserData
  2736.  
  2737. NGStrGad17:    dc.w    10        ;gng_LeftEdge
  2738.         dc.w    ShellTop+95    ;gng_TopEdge
  2739.         dc.w    100        ;gng_Width
  2740.         dc.w    12        ;gng_Height
  2741.         dc.l    0        ;gng_GadgetText
  2742.         dc.l    Topaz        ;gng_TextAttr
  2743.         dc.w    1        ;gng_GadgetID
  2744.         dc.l    0        ;gng_Flags
  2745.         dc.l    0        ;gng_VisualInfo
  2746.         dc.l    0        ;gng_UserData
  2747.  
  2748. NGStrGad18:    dc.w    120        ;gng_LeftEdge
  2749.         dc.w    ShellTop+95    ;gng_TopEdge
  2750.         dc.w    200        ;gng_Width
  2751.         dc.w    12        ;gng_Height
  2752.         dc.l    0        ;gng_GadgetText
  2753.         dc.l    Topaz        ;gng_TextAttr
  2754.         dc.w    2        ;gng_GadgetID
  2755.         dc.l    0        ;gng_Flags
  2756.         dc.l    0        ;gng_VisualInfo
  2757.         dc.l    0        ;gng_UserData
  2758.  
  2759. NGStrGad19:    dc.w    10        ;gng_LeftEdge
  2760.         dc.w    ShellTop+105    ;gng_TopEdge
  2761.         dc.w    100        ;gng_Width
  2762.         dc.w    12        ;gng_Height
  2763.         dc.l    0        ;gng_GadgetText
  2764.         dc.l    Topaz        ;gng_TextAttr
  2765.         dc.w    1        ;gng_GadgetID
  2766.         dc.l    0        ;gng_Flags
  2767.         dc.l    0        ;gng_VisualInfo
  2768.         dc.l    0        ;gng_UserData
  2769.  
  2770. NGStrGad20:    dc.w    120        ;gng_LeftEdge
  2771.         dc.w    ShellTop+105    ;gng_TopEdge
  2772.         dc.w    200        ;gng_Width
  2773.         dc.w    12        ;gng_Height
  2774.         dc.l    0        ;gng_GadgetText
  2775.         dc.l    Topaz        ;gng_TextAttr
  2776.         dc.w    2        ;gng_GadgetID
  2777.         dc.l    0        ;gng_Flags
  2778.         dc.l    0        ;gng_VisualInfo
  2779.         dc.l    0        ;gng_UserData
  2780.  
  2781. DescGadTagList:    dc.l    GTTX_Border,1
  2782.         dc.l    TAG_DONE,0
  2783.  
  2784. StrGadTagList1:    dc.l    GTST_MaxChars,GADLENG1-1
  2785.         dc.l    TAG_DONE,0
  2786. StrGadTagList2:    dc.l    GTST_MaxChars,GADLENG2-1
  2787.         dc.l    TAG_DONE,0
  2788.  
  2789. ;Menus
  2790.  
  2791. Menu1Name:    dc.b    "Project",0
  2792. Menu2Name:    dc.b    "Commands",0
  2793. Menu3Name:    dc.b    "Sampler",0
  2794.  
  2795. LoadMenuText1:    dc.b    "Load",0
  2796. LoadCommKey:    dc.b    "L",0
  2797. SaveMenuText1:    dc.b    "Save",0
  2798. SaveCommKey:    dc.b    "S",0
  2799. AboutMenuText1:    dc.b    "About...",0
  2800. AboutCommKey:    dc.b    "?",0
  2801. QuitMenuText1:    dc.b    "Quit",0
  2802. QuitCommKey:    dc.b    "Q",0
  2803. EditMenuText1:    dc.b    "Edit/Learn",0
  2804. EditCommKey:    dc.b    "E",0
  2805. PriMenuText1:    dc.b    "Priority",0
  2806. PriCommKey:    dc.b    "P",0
  2807.  
  2808. TypeMenuText1:    dc.b    "Type",0
  2809. PerfSMenuText1:    dc.b    "PerfectSound",0
  2810. Type1CommKey:    dc.b    "1",0
  2811. SoundMMenuText1: dc.b    "SoundMaster",0
  2812. Type2CommKey:    dc.b    "2",0
  2813. GenericMenuText1: dc.b    "Generic",0
  2814. Type3CommKey:    dc.b    "3",0
  2815.  
  2816. ResMenuText1:    dc.b    "Resolution",0
  2817. ResLoMenuText1:    dc.b    "Low",0
  2818. Res1CommKey:    dc.b    "-",0
  2819. ResHiMenuText1: dc.b    "High",0
  2820. Res2CommKey:    dc.b    "+",0
  2821.  
  2822. TimerMenuText1:    dc.b    "CIA Timer",0
  2823. TimerAMenuText1: dc.b    "Timer A",0
  2824. TimerACommKey:    dc.b    "A",0
  2825. TimerBMenuText1: dc.b    "Timer B",0
  2826. TimerBCommKey:    dc.b    "B",0
  2827.  
  2828. Menu1Name2:    dc.b    "Page",0
  2829. EditMenu1Text1:    dc.b    "Commands  1-10",0
  2830. Edit1CommKey:    dc.b    "1",0
  2831. EditMenu2Text1:    dc.b    "Commands 11-20",0
  2832. Edit2CommKey:    dc.b    "2",0
  2833. EditMenu3Text1:    dc.b    "Commands 21-30",0
  2834. Edit3CommKey:    dc.b    "3",0
  2835. EditMenu4Text1:    dc.b    "Commands 31-40",0
  2836. Edit4CommKey:    dc.b    "4",0
  2837. EditMenu5Text1:    dc.b    "Commands 41-50",0
  2838. Edit5CommKey:    dc.b    "5",0
  2839. EditMenu6Text1:    dc.b    "Commands 51-60",0
  2840. Edit6CommKey:    dc.b    "6",0
  2841.         ds.l    0
  2842.  
  2843. MNProjectMenu1:    dc.b    NM_TITLE        ;gnm_Type
  2844.         dc.b    0            ;gnm_Pad
  2845.         dc.l    Menu1Name        ;gnm_Label
  2846.         dc.l    0            ;gnm_CommKey
  2847.         dc.w    0            ;gnm_Flags
  2848.         dc.l    0            ;gnm_MutualExclude
  2849.         dc.l    0            ;gnm_UserData
  2850.  
  2851. MNLoad1:    dc.b    NM_ITEM            ;gnm_Type
  2852.         dc.b    0            ;gnm_Pad
  2853.         dc.l    LoadMenuText1        ;gnm_Label
  2854.         dc.l    LoadCommKey        ;gnm_CommKey
  2855.         dc.w    0            ;gnm_Flags
  2856.         dc.l    0            ;gnm_MutualExclude
  2857.         dc.l    0            ;gnm_UserData
  2858.  
  2859. MNSave1:    dc.b    NM_ITEM            ;gnm_Type
  2860.         dc.b    0            ;gnm_Pad
  2861.         dc.l    SaveMenuText1        ;gnm_Label
  2862.         dc.l    SaveCommKey        ;gnm_CommKey
  2863.         dc.w    0            ;gnm_Flags
  2864.         dc.l    0            ;gnm_MutualExclude
  2865.         dc.l    0            ;gnm_UserData
  2866.  
  2867. MNAbout1:    dc.b    NM_ITEM            ;gnm_Type
  2868.         dc.b    0            ;gnm_Pad
  2869.         dc.l    AboutMenuText1        ;gnm_Label
  2870.         dc.l    AboutCommKey        ;gnm_CommKey
  2871.         dc.w    0            ;gnm_Flags
  2872.         dc.l    0            ;gnm_MutualExclude
  2873.         dc.l    0            ;gnm_UserData
  2874.  
  2875. MNP1SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  2876.         dc.b    0            ;gnm_Pad
  2877.         dc.l    NM_BARLABEL        ;gnm_Label
  2878.         dc.l    0            ;gnm_CommKey
  2879.         dc.w    0            ;gnm_Flags
  2880.         dc.l    0            ;gnm_MutualExclude
  2881.         dc.l    0            ;gnm_UserData
  2882.  
  2883. MNQuit1:    dc.b    NM_ITEM            ;gnm_Type
  2884.         dc.b    0            ;gnm_Pad
  2885.         dc.l    QuitMenuText1        ;gnm_Label
  2886.         dc.l    QuitCommKey        ;gnm_CommKey
  2887.         dc.w    0            ;gnm_Flags
  2888.         dc.l    0            ;gnm_MutualExclude
  2889.         dc.l    0            ;gnm_UserData
  2890.  
  2891. MNCmdMenu1:    dc.b    NM_TITLE        ;gnm_Type
  2892.         dc.b    0            ;gnm_Pad
  2893.         dc.l    Menu2Name        ;gnm_Label
  2894.         dc.l    0            ;gnm_CommKey
  2895.         dc.w    0            ;gnm_Flags
  2896.         dc.l    0            ;gnm_MutualExclude
  2897.         dc.l    0            ;gnm_UserData
  2898.  
  2899. MNEdit1:    dc.b    NM_ITEM            ;gnm_Type
  2900.         dc.b    0            ;gnm_Pad
  2901.         dc.l    EditMenuText1        ;gnm_Label
  2902.         dc.l    EditCommKey        ;gnm_CommKey
  2903.         dc.w    0            ;gnm_Flags
  2904.         dc.l    0            ;gnm_MutualExclude
  2905.         dc.l    0            ;gnm_UserData
  2906.  
  2907. MNPriority:    dc.b    NM_ITEM            ;gnm_Type
  2908.         dc.b    0            ;gnm_Pad
  2909.         dc.l    PriMenuText1        ;gnm_Label
  2910.         dc.l    PriCommKey        ;gnm_CommKey
  2911.         dc.w    NM_ITEMDISABLED        ;gnm_Flags
  2912.         dc.l    0            ;gnm_MutualExclude
  2913.         dc.l    0            ;gnm_UserData
  2914.  
  2915. MNSamplerMenu1:    dc.b    NM_TITLE        ;gnm_Type
  2916.         dc.b    0            ;gnm_Pad
  2917.         dc.l    Menu3Name        ;gnm_Label
  2918.         dc.l    0            ;gnm_CommKey
  2919.         dc.w    0            ;gnm_Flags
  2920.         dc.l    0            ;gnm_MutualExclude
  2921.         dc.l    0            ;gnm_UserData
  2922.  
  2923. MNType1:    dc.b    NM_ITEM            ;gnm_Type
  2924.         dc.b    0            ;gnm_Pad
  2925.         dc.l    TypeMenuText1        ;gnm_Label
  2926.         dc.l    0            ;gnm_CommKey
  2927.         dc.w    0            ;gnm_Flags
  2928.         dc.l    0            ;gnm_MutualExclude
  2929.         dc.l    0            ;gnm_UserData
  2930.  
  2931. MNTypeSub1:    dc.b    NM_SUB            ;gnm_Type
  2932.         dc.b    0            ;gnm_Pad
  2933.         dc.l    PerfSMenuText1        ;gnm_Label
  2934.         dc.l    Type1CommKey        ;gnm_CommKey
  2935.         dc.w    CHECKIT            ;gnm_Flags
  2936.         dc.l    ~1            ;gnm_MutualExclude
  2937.         dc.l    0            ;gnm_UserData
  2938.  
  2939. MNTypeSub2:    dc.b    NM_SUB            ;gnm_Type
  2940.         dc.b    0            ;gnm_Pad
  2941.         dc.l    SoundMMenuText1        ;gnm_Label
  2942.         dc.l    Type2CommKey        ;gnm_CommKey
  2943.         dc.w    CHECKIT            ;gnm_Flags
  2944.         dc.l    ~2            ;gnm_MutualExclude
  2945.         dc.l    0            ;gnm_UserData
  2946.  
  2947. MNTypeSub3:    dc.b    NM_SUB            ;gnm_Type
  2948.         dc.b    0            ;gnm_Pad
  2949.         dc.l    GenericMenuText1    ;gnm_Label
  2950.         dc.l    Type3CommKey        ;gnm_CommKey
  2951.         dc.w    CHECKIT!CHECKED        ;gnm_Flags
  2952.         dc.l    ~4            ;gnm_MutualExclude
  2953.         dc.l    0            ;gnm_UserData
  2954.  
  2955. MNRes1:        dc.b    NM_ITEM            ;gnm_Type
  2956.         dc.b    0            ;gnm_Pad
  2957.         dc.l    ResMenuText1        ;gnm_Label
  2958.         dc.l    0            ;gnm_CommKey
  2959.         dc.w    0            ;gnm_Flags
  2960.         dc.l    0            ;gnm_MutualExclude
  2961.         dc.l    0            ;gnm_UserData
  2962.  
  2963. MNResSub1:    dc.b    NM_SUB            ;gnm_Type
  2964.         dc.b    0            ;gnm_Pad
  2965.         dc.l    ResLoMenuText1        ;gnm_Label
  2966.         dc.l    Res1CommKey        ;gnm_CommKey
  2967.         dc.w    CHECKIT            ;gnm_Flags
  2968.         dc.l    ~1            ;gnm_MutualExclude
  2969.         dc.l    0            ;gnm_UserData
  2970.  
  2971. MNResSub2:    dc.b    NM_SUB            ;gnm_Type
  2972.         dc.b    0            ;gnm_Pad
  2973.         dc.l    ResHiMenuText1        ;gnm_Label
  2974.         dc.l    Res2CommKey        ;gnm_CommKey
  2975.         dc.w    CHECKIT!CHECKED        ;gnm_Flags
  2976.         dc.l    ~2            ;gnm_MutualExclude
  2977.         dc.l    0            ;gnm_UserData
  2978.  
  2979. MNTimer1:    dc.b    NM_ITEM            ;gnm_Type
  2980.         dc.b    0            ;gnm_Pad
  2981.         dc.l    TimerMenuText1        ;gnm_Label
  2982.         dc.l    0            ;gnm_CommKey
  2983.         dc.w    0            ;gnm_Flags
  2984.         dc.l    0            ;gnm_MutualExclude
  2985.         dc.l    0            ;gnm_UserData
  2986.  
  2987. MNTimerSub1:    dc.b    NM_SUB            ;gnm_Type
  2988.         dc.b    0            ;gnm_Pad
  2989.         dc.l    TimerAMenuText1        ;gnm_Label
  2990.         dc.l    TimerACommKey        ;gnm_CommKey
  2991.         dc.w    CHECKIT            ;gnm_Flags
  2992.         dc.l    ~1            ;gnm_MutualExclude
  2993.         dc.l    0            ;gnm_UserData
  2994.  
  2995. MNTimerSub2:    dc.b    NM_SUB            ;gnm_Type
  2996.         dc.b    0            ;gnm_Pad
  2997.         dc.l    TimerBMenuText1        ;gnm_Label
  2998.         dc.l    TimerBCommKey        ;gnm_CommKey
  2999.         dc.w    CHECKIT!CHECKED        ;gnm_Flags
  3000.         dc.l    ~2            ;gnm_MutualExclude
  3001.         dc.l    0            ;gnm_UserData
  3002.  
  3003.         dc.w    0            ;NM_END?
  3004.  
  3005. ;Menu TagList(s)
  3006.  
  3007. MenuTagList:    dc.l    GTMN_Menu,MNProjectMenu1
  3008.         dc.l    TAG_DONE,0
  3009.  
  3010. MNPageMenu1:    dc.b    NM_TITLE        ;gnm_Type
  3011.         dc.b    0            ;gnm_Pad
  3012.         dc.l    Menu1Name2        ;gnm_Label
  3013.         dc.l    0            ;gnm_CommKey
  3014.         dc.w    0            ;gnm_Flags
  3015.         dc.l    0            ;gnm_MutualExclude
  3016.         dc.l    0            ;gnm_UserData
  3017.  
  3018. MNPage1:    dc.b    NM_ITEM            ;gnm_Type
  3019.         dc.b    0            ;gnm_Pad
  3020.         dc.l    EditMenu1Text1        ;gnm_Label
  3021.         dc.l    Edit1CommKey        ;gnm_CommKey
  3022.         dc.w    CHECKIT!CHECKED        ;gnm_Flags
  3023.         dc.l    ~1            ;gnm_MutualExclude
  3024.         dc.l    0            ;gnm_UserData
  3025.  
  3026. MNPage2:    dc.b    NM_ITEM            ;gnm_Type
  3027.         dc.b    0            ;gnm_Pad
  3028.         dc.l    EditMenu2Text1        ;gnm_Label
  3029.         dc.l    Edit2CommKey        ;gnm_CommKey
  3030.         dc.w    CHECKIT            ;gnm_Flags
  3031.         dc.l    ~2            ;gnm_MutualExclude
  3032.         dc.l    0            ;gnm_UserData
  3033.  
  3034. MNPage3:    dc.b    NM_ITEM            ;gnm_Type
  3035.         dc.b    0            ;gnm_Pad
  3036.         dc.l    EditMenu3Text1        ;gnm_Label
  3037.         dc.l    Edit3CommKey        ;gnm_CommKey
  3038.         dc.w    CHECKIT            ;gnm_Flags
  3039.         dc.l    ~4            ;gnm_MutualExclude
  3040.         dc.l    0            ;gnm_UserData
  3041.  
  3042. MNPage4:    dc.b    NM_ITEM            ;gnm_Type
  3043.         dc.b    0            ;gnm_Pad
  3044.         dc.l    EditMenu4Text1        ;gnm_Label
  3045.         dc.l    Edit4CommKey        ;gnm_CommKey
  3046.         dc.w    CHECKIT            ;gnm_Flags
  3047.         dc.l    ~8            ;gnm_MutualExclude
  3048.         dc.l    0            ;gnm_UserData
  3049.  
  3050. MNPage5:    dc.b    NM_ITEM            ;gnm_Type
  3051.         dc.b    0            ;gnm_Pad
  3052.         dc.l    EditMenu5Text1        ;gnm_Label
  3053.         dc.l    Edit5CommKey        ;gnm_CommKey
  3054.         dc.w    CHECKIT            ;gnm_Flags
  3055.         dc.l    ~16            ;gnm_MutualExclude
  3056.         dc.l    0            ;gnm_UserData
  3057.  
  3058. MNPage6:    dc.b    NM_ITEM            ;gnm_Type
  3059.         dc.b    0            ;gnm_Pad
  3060.         dc.l    EditMenu6Text1        ;gnm_Label
  3061.         dc.l    Edit6CommKey        ;gnm_CommKey
  3062.         dc.w    CHECKIT            ;gnm_Flags
  3063.         dc.l    ~32            ;gnm_MutualExclude
  3064.         dc.l    0            ;gnm_UserData
  3065.  
  3066. MNP2SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  3067.         dc.b    0            ;gnm_Pad
  3068.         dc.l    NM_BARLABEL        ;gnm_Label
  3069.         dc.l    0            ;gnm_CommKey
  3070.         dc.w    0            ;gnm_Flags
  3071.         dc.l    0            ;gnm_MutualExclude
  3072.         dc.l    0            ;gnm_UserData
  3073.  
  3074. MNQuit2:    dc.b    NM_ITEM            ;gnm_Type
  3075.         dc.b    0            ;gnm_Pad
  3076.         dc.l    QuitMenuText1        ;gnm_Label
  3077.         dc.l    QuitCommKey        ;gnm_CommKey
  3078.         dc.w    0            ;gnm_Flags
  3079.         dc.l    0            ;gnm_MutualExclude
  3080.         dc.l    0            ;gnm_UserData
  3081.  
  3082.         dc.w    0            ;NM_END?
  3083.  
  3084. ;Menu TagList(s) for Edit window
  3085.  
  3086. MenuTagList2:    dc.l    GTMN_Menu,MNPageMenu1
  3087.         dc.l    TAG_DONE,0
  3088.  
  3089. ;SysTagList 2.0 Execute commands TagList(s)
  3090.  
  3091. CMDTags:    dc.l    SYS_Asynch
  3092.         dc.l    TAG_DONE
  3093.  
  3094. PREFS_START:
  3095.  
  3096. Prefs:        dc.b    "VS"
  3097. PrefsOnOff:    dc.b    1        ;0=Off, 1=On
  3098. PrefsSampType:    dc.b    2        ;0=Perf.Snd, 1=SndMstr, 2=Generic
  3099. PrefsSampRes:    dc.b    0        ;0=High, 1=Low
  3100. PrefsTimer    dc.b    0        ;0=Timer B, 1=Timer A
  3101.  
  3102. Alt1XY:
  3103. Alt1XPos:    dc.w    200
  3104. Alt1YPos:    dc.w    31
  3105.  
  3106. DatBuffer:    dc.b    "S:VShell.DAT"
  3107.         dcb.b    34-12,0
  3108.  
  3109. PREFS_END:    dc.l    0,0
  3110.  
  3111. PrefsSize:    EQU    (PREFS_END-PREFS_START)
  3112.  
  3113.         Section    VS,BSS
  3114.  
  3115. DATA_START:
  3116.  
  3117. MapBuffer:    ds.b    (VocabSIZE*304)        ;64 words
  3118.  
  3119. CmdList:    ds.b    (VocabSIZE*GADLENGTH)
  3120.  
  3121. DATA_END:    ds.l    1
  3122.  
  3123. DataSize:    EQU    (DATA_END-DATA_START)
  3124.  
  3125.  
  3126.         Section    VS,DATA,CHIP
  3127.  
  3128.         ds.w    0
  3129.  
  3130. ClockPointer1:    dc.w    $0000,$0000
  3131.         dc.w    $0400,$07C0,$0000,$07C0,$0100,$0380,$0000,$07E0
  3132.         dc.w    $07C0,$1FF8,$1FF0,$3FEC,$3FF8,$7FDE,$3FF8,$7FBE
  3133.         dc.w    $7FFC,$FF7F,$7EFC,$FFFF,$7FFC,$FFFF,$3FF8,$7FFE
  3134.         dc.w    $3FF8,$7FFE,$1FF0,$3FFC,$07C0,$1FF8,$0000,$07E0
  3135.         dc.w    $0000,$0000
  3136.  
  3137.         end
  3138.  
  3139.