home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / new / dev / asm / tbsource / questions / versions / 0.99e / qv99e.lha / QuePrefs.S < prev    next >
Encoding:
Text File  |  1991-09-22  |  26.0 KB  |  1,355 lines

  1. *************************************************
  2. *                        *
  3. *         (C)opyright 1991        *
  4. *                        *
  5. *        by  Tomi Blinnikka        *
  6. *                        *
  7. *    DonĀ“t try to understand the code    *
  8. *                        *
  9. * Version: See info from main source code    *
  10. *                        *
  11. *************************************************
  12.  
  13.     INCLUDE    "JMPLibs.i"
  14.     INCLUDE    "exec/types.i"
  15.     INCLUDE    "libraries/reqbase.i"
  16.  
  17.     INCLUDE    "FH1:Language/Include2.0/intuition.xref"
  18.     INCLUDE    "FH1:Language/Include2.0/gadtools.xref"
  19.     INCLUDE    "dos.xref"
  20.     INCLUDE    "exec.xref"
  21.     INCLUDE    "gfx.xref"
  22.     INCLUDE    "intuition.xref"
  23.  
  24.     XDEF    Prefs20
  25.     XDEF    SToW5
  26.     XDEF    PrefsWin1
  27.     XDEF    NoPrefsWin1
  28.     XDEF    glist2
  29.     XDEF    mlist2
  30.     XDEF    GadMagic2
  31.     XDEF    MenuMagic2
  32.     XDEF    DefPrefs
  33.     XDEF    Talk
  34.     XDEF    TalkSys
  35.     XDEF    TalkDes
  36.     XDEF    TalkQue
  37.     XDEF    TalkAns
  38.     XDEF    TalkScore
  39.     XDEF    FileRequest2
  40.     XDEF    SpeakName
  41.     XDEF    PrefsFile
  42.     XDEF    SpeakFile
  43.     XDEF    FRPathName2
  44.     XDEF    Colors
  45.     XDEF    ColorsBuf
  46.     XDEF    P1CheckFile
  47.     XDEF    PrefsBuf
  48.     XDEF    CurrentPrefs
  49.     XDEF    PrefsSize
  50.  
  51.     XREF    LoadCommKey
  52.     XREF    SaveCommKey
  53.     XREF    SaveAsCommKey
  54.     XREF    QuitCommKey
  55.     XREF    QuitMenu1I2Text
  56.     XREF    PrefsM2Text
  57.     XREF    PrefsM3Text
  58.     XREF    PrefsM4Text
  59.     XREF    Speaker
  60.     XREF    vi
  61.     XREF    Window1
  62.     XREF    Screen1
  63.     XREF    ViewPort1
  64.     XREF    SS_Load3
  65.     XREF    SS_Save2
  66.     XREF    SS_SaveAs2
  67.     XREF    SS_Prefs
  68.     XREF    SS_Colors
  69.     XREF    SS_On
  70.     XREF    SS_Done
  71.     XREF    SS_Default
  72.     XREF    SS_ERR_Win1
  73.     XREF    SS_ERR_File1
  74.     XREF    SS_ERR_File2
  75.     XREF    SS_ERR_File3
  76.     XREF    AskReplace
  77.     XREF    ClockPointer1
  78.     XREF    SimpleRequest
  79.     XREF    TwoGadRequest
  80.     XREF    FileError
  81.     XREF    MenusOff
  82.     XREF    MenusOn
  83.     XREF    SleepPointer
  84.     XREF    NormalPointer
  85.     XREF    MenuNull
  86.     XREF    CheckIDCMP
  87.     XREF    ClearMSGs
  88.     XREF    OKTxt
  89.     XREF    _GadToolsBase
  90.     XREF    _IntuitionBase
  91.     XREF    _DosBase
  92.     XREF    _GfxBase
  93.     XREF    _ReqBase
  94.     XREF    Window1IDCMP
  95.     XREF    ShutDown
  96.     XREF    QName
  97.     XREF    Topaz
  98.     XREF    PrefTop
  99.     XREF    MainMGad1
  100.     XREF    MainMenu
  101.     XREF    Mode
  102.  
  103. PrefWinYSize:    EQU    150
  104. PrefsSize:    EQU    156
  105.  
  106. DGadTools:    set    1
  107. DReq:        set    1
  108.  
  109.     INCLUDE    "FH1:Language/Include2.0/Utility/tagitem.i"
  110.     INCLUDE    "FH1:Language/Include2.0/Libraries/gadtools.i"
  111.  
  112. NoPrefsWin1:    print    <"Couldn't open Preferences-Window1!",13,10>
  113.         move.l    Screen1,a0
  114.         lib    Intuition,DisplayBeep
  115.         lea.l    SS_ERR_Win1,a0
  116.         jsr    Speaker
  117.         jmp    ShutDown
  118.  
  119. Prefs20:    jsr    MenusOff
  120.         jsr    SleepPointer
  121.  
  122.         cmp.w    #$00,Mode
  123.         bne    Prefs20Cont1
  124.         move.l    Window1,a0
  125.         lea.l    MainMGad1,a1
  126.         move.l    #-1,d0
  127.         lib    Intuition,RemoveGList
  128.  
  129. Prefs20Cont1:    lea.l    SS_Prefs,a0
  130.         jsr    Speaker
  131.  
  132.         tst.b    GadMagic2
  133.         bne    Prefs20.1
  134.         lea.l    glist2,a0
  135.         lib    GadTools,CreateContext
  136.         move.l    d0,ContextGad2
  137.         beq    Prefs20.1
  138.  
  139.         move.l    glist2,a0
  140.         lea.l    NGTalkGad0,a1
  141.         move.l    #TEXT_KIND,d0
  142.         move.l    vi,gng_VisualInfo(a1)
  143.         move.l    #$00,a2
  144. ;        lea.l    TalkGadTagList1,a2
  145.         lib    GadTools,CreateGadgetA
  146.  
  147.         move.l    d0,a0
  148.  
  149.         lea.l    NGTalkGad1,a1
  150.         move.l    #CHECKBOX_KIND,d0
  151.         move.l    vi,gng_VisualInfo(a1)
  152.         move.l    #$00,a2
  153.         lib    GadTools,CreateGadgetA
  154.  
  155.         move.l    d0,TalkGad1
  156.  
  157.         move.l    d0,a0
  158.         lea.l    NGTalkGad2,a1
  159.         move.l    #CHECKBOX_KIND,d0
  160.         move.l    vi,gng_VisualInfo(a1)
  161.         lea.l    GadTagList,a2
  162.         lib    GadTools,CreateGadgetA
  163.  
  164.         move.l    d0,TalkGad2
  165.  
  166.         move.l    d0,a0
  167.         lea.l    NGTalkGad3,a1
  168.         move.l    #CHECKBOX_KIND,d0
  169.         move.l    vi,gng_VisualInfo(a1)
  170.         lea.l    GadTagList,a2
  171.         lib    GadTools,CreateGadgetA
  172.  
  173.         move.l    d0,TalkGad3
  174.  
  175.         move.l    d0,a0
  176.         lea.l    NGTalkGad4,a1
  177.         move.l    #CHECKBOX_KIND,d0
  178.         move.l    vi,gng_VisualInfo(a1)
  179.         lea.l    GadTagList,a2
  180.         lib    GadTools,CreateGadgetA
  181.  
  182.         move.l    d0,TalkGad4
  183.  
  184.         move.l    d0,a0
  185.         lea.l    NGTalkGad5,a1
  186.         move.l    #CHECKBOX_KIND,d0
  187.         move.l    vi,gng_VisualInfo(a1)
  188.         lea.l    GadTagList,a2
  189.         lib    GadTools,CreateGadgetA
  190.  
  191.         move.l    d0,TalkGad5
  192.  
  193.         move.l    d0,a0
  194.         lea.l    NGTalkGad6,a1
  195.         move.l    #CHECKBOX_KIND,d0
  196.         move.l    vi,gng_VisualInfo(a1)
  197.         lea.l    GadTagList,a2
  198.         lib    GadTools,CreateGadgetA
  199.  
  200.         move.l    d0,TalkGad6
  201.  
  202.         move.l    d0,a0
  203.         lea.l    NGTalkGad7,a1
  204.         move.l    #CHECKBOX_KIND,d0
  205.         move.l    vi,gng_VisualInfo(a1)
  206.         lea.l    GadTagList,a2
  207.         lib    GadTools,CreateGadgetA
  208.  
  209.         move.l    d0,TalkGad7
  210.         move.l    d0,a0
  211.  
  212.         add.w    #GADGDISABLED,$c(a0)
  213.  
  214.         lea.l    NGTalkGad8,a1
  215.         move.l    #CHECKBOX_KIND,d0
  216.         move.l    vi,gng_VisualInfo(a1)
  217.         lea.l    GadTagList,a2
  218.         lib    GadTools,CreateGadgetA
  219.  
  220.         move.l    d0,TalkGad8
  221.         move.l    d0,a0
  222.  
  223.         add.w    #GADGDISABLED,$c(a0)
  224.  
  225.         lea.l    NGSpeakGad1,a1
  226.         move.l    #STRING_KIND,d0
  227.         move.l    vi,gng_VisualInfo(a1)
  228.         lea.l    SpeakGadTagList,a2
  229.         lib    GadTools,CreateGadgetA
  230.  
  231.         move.l    d0,SpeakGad1
  232.         move.l    d0,a0
  233.         move.l    $22(a0),a1
  234.         move.l    (a1),SpeakGadBuf
  235.  
  236.         lea.l    NGColorGad,a1
  237.         move.l    #BUTTON_KIND,d0
  238.         move.l    vi,gng_VisualInfo(a1)
  239.         lea.l    GadTagList,a2
  240.         lib    GadTools,CreateGadgetA
  241.         move.l    d0,a0
  242.  
  243.         add.w    #GRELBOTTOM+GRELRIGHT,$c(a0)
  244.  
  245.         lea.l    NGDefaultsGad,a1
  246.         move.l    #BUTTON_KIND,d0
  247.         move.l    vi,gng_VisualInfo(a1)
  248.         lea.l    GadTagList,a2
  249.         lib    GadTools,CreateGadgetA
  250.         move.l    d0,a0
  251.  
  252.         add.w    #GRELBOTTOM+GRELRIGHT,$c(a0)
  253.  
  254.         lea.l    NGSaveGad,a1
  255.         move.l    #BUTTON_KIND,d0
  256.         move.l    vi,gng_VisualInfo(a1)
  257.         lea.l    GadTagList,a2
  258.         lib    GadTools,CreateGadgetA
  259.         move.l    d0,a0
  260.  
  261.         add.w    #GRELBOTTOM,$c(a0)
  262.  
  263.         lea.l    NGUseGad,a1
  264.         move.l    #BUTTON_KIND,d0
  265.         move.l    vi,gng_VisualInfo(a1)
  266.         lea.l    GadTagList,a2
  267.         lib    GadTools,CreateGadgetA
  268.         move.l    d0,a0
  269.  
  270.         add.w    #GRELBOTTOM,$c(a0)
  271.  
  272.         lea.l    NGQuitGad,a1
  273.         move.l    #BUTTON_KIND,d0
  274.         move.l    vi,gng_VisualInfo(a1)
  275.         lea.l    GadTagList,a2
  276.         lib    GadTools,CreateGadgetA
  277.         move.l    d0,a0
  278.  
  279.         add.w    #GRELBOTTOM+GRELRIGHT,$c(a0)
  280.  
  281.         move.b    #1,GadMagic2
  282.  
  283. Prefs20.1:    tst.b    MenuMagic2
  284.         bne    Prefs20.2
  285.         lea.l    MNP1PrefsMenu1,a0
  286.         lea.l    P1MenuTagList,a1
  287.         lib    GadTools,CreateMenusA
  288.         move.l    d0,mlist2
  289.  
  290.         move.l    mlist2,a0
  291.         move.l    vi,a1
  292.         lea.l    P1MenuTagList,a2
  293.         lib    GadTools,LayoutMenusA
  294.         move.b    #1,MenuMagic2
  295.  
  296. Prefs20.2:    lea.l    NewPrefsWin1,a0
  297.         move.l    #$00,a1
  298.         lib    Intuition,OpenWindowTagList
  299.         move.l    d0,PrefsWin1
  300.         beq    NoPrefsWin1
  301.  
  302.         move.l    PrefsWin1,a0
  303.         move.l    mlist2,a1
  304.         lib    Intuition,SetMenuStrip
  305.  
  306.         move.l    PrefsWin1,a0
  307.         move.l    glist2,a1
  308.         move.l    #-1,d0
  309.         move.l    #-1,d1
  310.         move.l    #$00,a2
  311.         lib    Intuition,AddGList
  312.  
  313.         move.l    glist2,a0
  314.         move.l    PrefsWin1,a1
  315.         move.l    #$00,a2
  316.         move.l    #-1,d0
  317.         lib    Intuition,RefreshGList
  318.  
  319.         move.l    #$01,d2
  320.         jsr    SetPrefs
  321.  
  322. P120IDCMP:    move.l    PrefsWin1,a0
  323.         jsr    CheckIDCMP
  324.         cmp.l    #CLOSEWINDOW,d2
  325.         beq    Prefs20Quit
  326.         cmp.l    #REFRESHWINDOW,d2
  327.         beq    P1Refresh20
  328.         cmp.l    #VANILLAKEY,d2
  329.         beq    P1VKeys20
  330.         cmp.l    #GADGETUP,d2
  331.         beq    P1GSelect20
  332.         cmp.l    #MENUPICK,d2
  333.         beq    P1Menus20
  334.         cmp.l    #RAWKEY,d2
  335.         beq    P1RKeys20
  336.         jmp    P120IDCMP
  337.  
  338. P1Refresh20:    move.l    PrefsWin1,a0
  339.         lib    GadTools,GT_BeginRefresh
  340.         move.l    PrefsWin1,a0
  341.         move.l    #TRUE,d0
  342.         lib    GadTools,GT_EndRefresh
  343.         jmp    P120IDCMP
  344.  
  345. P1Menus20:    jsr    MenuNull
  346.         cmp.l    #$00,d6
  347.         beq    P1Menus20.1
  348.         cmp.l    #$01,d6
  349.         beq    P1Menus20.2
  350.         jmp    P120IDCMP
  351. P1Menus20.1:    cmp.l    #$00,d5
  352.         beq    P1Load
  353.         cmp.l    #$01,d5
  354.         beq    P1Save
  355.         cmp.l    #$02,d5
  356.         beq    P1SaveAs
  357.         cmp.l    #$04,d5
  358.         beq    P1Default
  359.         cmp.l    #$06,d5
  360.         beq    Prefs20Quit
  361. P1Menus20.2:    cmp.l    #$00,d5
  362.         beq    P1Colors
  363.         jmp    P120IDCMP
  364.  
  365. P1VKeys20:    cmp.w    #$1b,d3
  366.         beq    Prefs20Quit
  367.         jmp    P120IDCMP
  368. P1RKeys20:    cmp.w    #$00,d3
  369. ;        beq    Prefs20Quit
  370.         jmp    P120IDCMP
  371.  
  372. P1GSelect20:    cmp.w    #60,$26(a5)
  373.         beq    P1Colors
  374.         cmp.w    #70,$26(a5)
  375.         beq    P1Default
  376.         cmp.w    #80,$26(a5)
  377.         beq    P1Save
  378.         cmp.w    #98,$26(a5)
  379.         beq    Prefs20Use
  380.         cmp.w    #99,$26(a5)
  381.         beq    Prefs20Quit
  382.         jmp    P120IDCMP
  383.  
  384. P1Load:        jsr    P1MenusOff
  385.         jsr    P1SleepPointer
  386.  
  387.         lea.l    SS_Load3,a0
  388.         jsr    Speaker
  389.  
  390.         lea.l    P1LoadName,a5
  391.         move.l    #FRQABSOLUTEXYM+FRQLOADINGM,d5
  392.         jsr    FileRequester
  393.         tst.l    d0
  394.         beq    P1Load_OUT1
  395.  
  396.         lea.l    FRPathName2,a1
  397.         move.l    a1,d1
  398.         cmp.b    #$00,(a1)
  399.         beq    P1Load_OUT1
  400.         move.l    #MODE_OLDFILE,d2
  401.         lib    Dos,Open
  402.         move.l    d0,PrefsFile
  403.         bne    Load1
  404.         jsr    FileError
  405.         jmp    P1Load_OUT1
  406.  
  407. Load1:        jsr    P1CheckFile
  408.         tst.l    d0
  409.         beq    P1Load_OUT2
  410.  
  411. Load2:        move.l    PrefsFile,d1
  412.         lea.l    ColorsBuf,a0
  413.         move.l    a0,d2
  414.         move.l    #PrefsSize-4,d3
  415.         lib    Dos,Read
  416.         tst.l    d0
  417.         bne    Load3
  418.         jsr    FileError
  419.         lea.l    SS_ERR_File1,a0
  420.         jsr    Speaker
  421.         jmp    Load4
  422.  
  423. Load3:        lea.l    PrefsBuf,a0
  424.         lea.l    CurrentPrefs,a1
  425.         move.l    #PrefsSize,d0
  426.         lib    Exec,CopyMem
  427.  
  428.         jsr    MoveSpeakName2
  429.         jsr    MoveSpeakName
  430.  
  431.         move.l    #$01,d2
  432.         jsr    SetPrefs
  433.  
  434.         jsr    P1ChangeSpeak
  435.  
  436. Load4:        move.l    PrefsFile,d1
  437.         lib    Dos,Close
  438.         move.l    #$00,PrefsFile
  439.  
  440. P1Load_OUT:    lea.l    SS_Done,a0
  441.         jsr    Speaker
  442.         jsr    P1MenusOn
  443.         jsr    P1NormalPointer
  444.         jmp    Prefs20Quit
  445.  
  446. P1Load_OUT1:    jsr    P1MenusOn
  447.         jsr    P1NormalPointer
  448.         jmp    P120IDCMP
  449.  
  450. P1Load_OUT2:    lea.l    SS_ERR_File2,a0
  451.         jsr    Speaker
  452.  
  453.         move.l    PrefsFile,d1
  454.         lib    Dos,Close
  455.         move.l    #$00,PrefsFile
  456.         jsr    P1MenusOn
  457.         jsr    P1NormalPointer
  458.         jmp    Prefs20Quit
  459.  
  460. P1SaveAs:    jsr    P1MenusOff
  461.         jsr    P1SleepPointer
  462.  
  463.         lea.l    SS_SaveAs2,a0
  464.         jsr    Speaker
  465.  
  466.         lea.l    P1SaveName,a5
  467.         move.l    #FRQABSOLUTEXYM+FRQSAVINGM,d5
  468.         jsr    FileRequester
  469.         tst.l    d0
  470.         beq    P1Save_OUT1
  471.  
  472.         lea.l    FRPathName2,a1
  473.         move.l    a1,d1
  474.         tst.b    (a1)
  475.         beq    P1Save_OUT
  476.         move.l    #MODE_OLDFILE,d2
  477.         lib    Dos,Open
  478.         move.l    d0,PrefsFile
  479.         beq    P1Save1        ;file doesn't exist...
  480.  
  481. ;The file already exists so we'll ask if the user wants to replace old file 
  482.  
  483.         lea.l    SS_ERR_File3,a0
  484.         jsr    Speaker
  485.  
  486.         lea.l    AskReplace,a0
  487.         move.l    #$00,a1
  488.         jsr    TwoGadRequest
  489.         tst.l    d0
  490.         beq    P1Save_OUT
  491.  
  492.         move.l    PrefsFile,d1
  493.         lib    Dos,Close
  494.         move.l    #$00,PrefsFile
  495.  
  496. P1SaveAsOut:    jsr    P1MenusOn
  497.         jsr    P1NormalPointer
  498.  
  499. P1Save:        jsr    P1MenusOff
  500.         jsr    P1SleepPointer
  501.  
  502.         lea.l    SS_Save2,a0
  503.         jsr    Speaker
  504.  
  505. P1Save1:    tst.l    PrefsFile
  506.         bne    P1Save2
  507.         lea.l    FRPathName2,a1
  508.         move.l    a1,d1
  509.         move.l    #MODE_NEWFILE,d2
  510.         lib    Dos,Open
  511.         move.l    d0,PrefsFile
  512.         bne    P1Save2
  513.         jsr    FileError
  514.         jmp    P1Save_OUT
  515.  
  516. P1Save2:    move.l    #"QUEP",CurrentPrefs
  517.         jsr    MoveColors
  518.  
  519.         jsr    MoveSpeakName
  520.  
  521.         clr.l    d2
  522.         jsr    SetPrefs
  523.  
  524.         jsr    P1ChangeSpeak
  525.  
  526.         move.l    PrefsFile,d1
  527.         lea.l    CurrentPrefs,a0
  528.         move.l    a0,d2
  529.         move.l    #PrefsSize,d3
  530.         lib    Dos,Write
  531.         cmp.l    #-1,d0
  532.         beq    P1SaveError
  533.  
  534. P1Save3:    move.l    PrefsFile,d1
  535.         lib    Dos,Close
  536.         move.l    #$00,PrefsFile
  537.  
  538. P1Save_OUT:    lea.l    SS_Done,a0
  539.         jsr    Speaker
  540.  
  541.         jsr    P1MenusOn
  542.         jsr    P1NormalPointer
  543.         jmp    Prefs20Quit
  544.  
  545. P1Save_OUT1:    jsr    P1MenusOn
  546.         jsr    P1NormalPointer
  547.         jmp    P120IDCMP
  548.  
  549. P1SaveError:    jsr    FileError
  550.         lea.l    SS_ERR_File1,a0
  551.         jsr    Speaker
  552.  
  553.         move.l    PrefsFile,d1
  554.         lib    Dos,Close
  555.         move.l    #$00,PrefsFile
  556.  
  557.         jmp    P1Save_OUT1
  558.  
  559. P1Colors:    jsr    P1MenusOff
  560.         jsr    P1SleepPointer
  561.  
  562.         lea.l    SS_Colors,a0
  563.         jsr    Speaker
  564.  
  565.         move.l    #$00,d0
  566.         lib    Req,ColorRequester
  567.  
  568. ;Get the ColorMap correctly
  569.  
  570.         move.l    ViewPort1,a0
  571.         move.l    $4(a0),a3
  572.  
  573.         move.l    a3,a0
  574.         move.l    #$00,d0
  575.         lib    Gfx,GetRGB4
  576.         move.w    d0,ColorsBuf
  577.  
  578.         move.l    a3,a0
  579.         move.l    #$01,d0
  580.         lib    Gfx,GetRGB4
  581.         move.w    d0,ColorsBuf+2
  582.  
  583.         move.l    a3,a0
  584.         move.l    #$02,d0
  585.         lib    Gfx,GetRGB4
  586.         move.w    d0,ColorsBuf+4
  587.  
  588.         move.l    a3,a0
  589.         move.l    #$03,d0
  590.         lib    Gfx,GetRGB4
  591.         move.w    d0,ColorsBuf+6
  592.  
  593.         jsr    P1MenusOn
  594.         jsr    P1NormalPointer
  595.         jmp    P120IDCMP
  596.  
  597. P1Default:    lea.l    SS_Default,a0
  598.         jsr    Speaker
  599.  
  600.         lea.l    DefPrefs,a0
  601.         lea.l    CurrentPrefs,a1
  602.         move.l    #PrefsSize,d0
  603.         lib    Exec,CopyMem
  604.  
  605.         move.l    SpeakFile,d1
  606.         beq    P1Default1
  607.         lib    Dos,Close
  608.         move.l    #$00,SpeakFile
  609.  
  610. P1Default1:    lea.l    SpeakName,a0
  611.         move.l    a0,d1
  612.         move.l    #MODE_NEWFILE,d2
  613.         lib    Dos,Open
  614.         move.l    d0,SpeakFile
  615.         bne    P1Default2
  616.  
  617.         lea.l    NoSPEAKText3,a0
  618.         move.l    #$00,a1
  619.         jsr    SimpleRequest
  620.         move.w    #$00,Talk        ;Disable talking
  621.  
  622. P1Default2:    jsr    MoveColors2
  623.  
  624.         jsr    MoveSpeakName3
  625.  
  626.         move.l    #1,d2
  627.         jsr    SetPrefs
  628.  
  629.         jmp    Prefs20Quit
  630.  
  631. Prefs20Use:    lea.l    PrefsBuf,a0
  632.         lea.l    CurrentPrefs,a1
  633.         move.l    #PrefsSize,d0
  634.         lib    Exec,CopyMem
  635.  
  636.         clr.l    d2
  637.         jsr    SetPrefs
  638.  
  639.         jsr    MoveSpeakName
  640.         jsr    P1ChangeSpeak
  641.  
  642.         lea.l    SS_On,a0
  643.         jsr    Speaker
  644.  
  645.         jmp    Prefs20Quit
  646.  
  647. P1ChangeSpeak:    move.l    SpeakFile,d1
  648.         beq    P1ChangeSpeak1
  649.         lib    Dos,Close
  650.         move.l    #$00,SpeakFile
  651.  
  652. P1ChangeSpeak1:    lea.l    SpeakName,a0
  653.         move.l    a0,d1
  654.         move.l    #MODE_NEWFILE,d2
  655.         lib    Dos,Open
  656.         move.l    d0,SpeakFile
  657.         beq    P1CSNotOpen
  658.         rts
  659.  
  660. P1CSNotOpen:    lea.l    NoSPEAKText2,a0
  661.         move.l    #$00,a1
  662.         jsr    SimpleRequest
  663.         move.w    #$00,Talk        ;Disable talking
  664.         rts
  665.  
  666. Prefs20Quit:    move.l    PrefsWin1,a0
  667.         lib    Intuition,ClearMenuStrip
  668.         move.l    PrefsWin1,a0
  669.         jsr    ClearMSGs
  670.         move.l    #$00,PrefsWin1
  671.  
  672.         jsr    MenusOn
  673.         jsr    NormalPointer
  674.         cmp.w    #$00,Mode
  675.         bne    Window1IDCMP
  676.         jsr    MainMenu
  677.         jmp    Window1IDCMP
  678.  
  679. MoveColors:    move.l    ColorsBuf,Colors
  680.         move.l    ColorsBuf+4,Colors+4
  681.         rts
  682.  
  683. MoveColors2:    move.l    Colors,ColorsBuf
  684.         move.l    Colors+4,ColorsBuf+4
  685.         rts
  686.  
  687. MoveSpeakName:    move.l    SpeakGadBuf,a0
  688.         lea.l    SpeakName,a1
  689. MSName1:    move.b    (a0)+,(a1)+
  690.         tst.b    -1(a0)
  691.         bne    MSName1
  692.         rts
  693.  
  694. MoveSpeakName2:    lea.l    SpeakNameBuf,a0
  695.         lea.l    SpeakName,a1
  696. MSName2.1:    move.b    (a0)+,(a1)+
  697.         tst.b    -1(a0)
  698.         bne    MSName2.1
  699.         rts
  700.  
  701. MoveSpeakName3:    lea.l    SpeakName,a0
  702.         move.l    SpeakGadBuf,a1
  703. MSName3.1:    move.b    (a0)+,(a1)+
  704.         tst.b    -1(a0)
  705.         bne    MSName3.1
  706.         rts
  707.  
  708. SetPrefs:    move.l    ViewPort1,a0
  709.         lea.l    Colors,a1
  710.         move.l    #$04,d0
  711.         lib    Gfx,LoadRGB4
  712.  
  713.         move.l    PrefsWin1,a0
  714.         move.l    glist2,a1
  715.         move.l    #-1,d0
  716.         lib    Intuition,RemoveGList
  717.  
  718.         tst.l    d2
  719.         beq    Set2Prefs
  720.  
  721.         move.l    TalkGad1,a0
  722.         and.w    #~SELECTED,gg_Flags(a0)
  723.  
  724.         move.l    TalkGad2,a0
  725.         and.w    #~SELECTED,gg_Flags(a0)
  726.  
  727.         move.l    TalkGad3,a0
  728.         and.w    #~SELECTED,gg_Flags(a0)
  729.  
  730.         move.l    TalkGad4,a0
  731.         and.w    #~SELECTED,gg_Flags(a0)
  732.  
  733.         move.l    TalkGad5,a0
  734.         and.w    #~SELECTED,gg_Flags(a0)
  735.  
  736.         move.l    TalkGad6,a0
  737.         and.w    #~SELECTED,gg_Flags(a0)
  738.  
  739.         move.l    TalkGad7,a0
  740.         and.w    #~SELECTED,gg_Flags(a0)
  741.  
  742.         move.l    TalkGad8,a0
  743.         and.w    #~SELECTED,gg_Flags(a0)
  744.  
  745.         move.l    TalkGad1,a0
  746.         tst.w    Talk
  747.         beq    SetPrefs1
  748.         or.w    #SELECTED,gg_Flags(a0)
  749.  
  750. SetPrefs1:    move.l    TalkGad2,a0
  751.         tst.w    TalkSys
  752.         beq    SetPrefs2
  753.         or.w    #SELECTED,gg_Flags(a0)
  754.  
  755. SetPrefs2:    move.l    TalkGad3,a0
  756.         tst.w    TalkDes
  757.         beq    SetPrefs3
  758.         or.w    #SELECTED,gg_Flags(a0)
  759.  
  760. SetPrefs3:    move.l    TalkGad4,a0
  761.         tst.w    TalkQue
  762.         beq    SetPrefs4
  763.         or.w    #SELECTED,gg_Flags(a0)
  764.  
  765. SetPrefs4:    move.l    TalkGad5,a0
  766.         tst.w    TalkAns
  767.         beq    SetPrefs5
  768.         or.w    #SELECTED,gg_Flags(a0)
  769.  
  770. SetPrefs5:    move.l    TalkGad6,a0
  771.         tst.w    TalkScore
  772.         beq    SetPrefs6
  773.         or.w    #SELECTED,gg_Flags(a0)
  774.  
  775. SetPrefs6:    ;move.l    TalkGad7,a0
  776.         ;tst.w    TalkTimer
  777.         ;beq    SetPrefs7
  778.         ;or.w    #SELECTED,gg_Flags(a0)
  779.  
  780. SetPrefs7:    ;move.l    TalkGad8,a0
  781.         ;tst.w    TalkHelp
  782.         ;beq    SetPrefs8
  783.         ;or.w    #SELECTED,gg_Flags(a0)
  784.  
  785. SetPrefs8:    move.l    PrefsWin1,a0
  786.         move.l    glist2,a1
  787.         move.l    #00,a2
  788.         move.l    #-1,d0
  789.         move.l    #-1,d1
  790.         lib    Intuition,AddGList
  791.  
  792.         move.l    glist2,a0
  793.         move.l    PrefsWin1,a1
  794.         move.l    #$00,a2
  795.         move.l    #-1,d0
  796.         lib    Intuition,RefreshGList
  797.  
  798. SetPrefs9:    rts
  799.  
  800. Set2Prefs:
  801.         move.l    TalkGad1,a0
  802.         move.w    gg_Flags(a0),d0
  803.         move.w    #$00,Talk
  804.         and.w    #SELECTED,d0
  805.         cmp.w    #SELECTED,d0
  806.         bne    Set2Prefs1
  807.         move.w    #$01,Talk
  808.  
  809. Set2Prefs1:    move.l    TalkGad2,a0
  810.         move.w    gg_Flags(a0),d0
  811.         move.w    #$00,TalkSys
  812.         and.w    #SELECTED,d0
  813.         cmp.w    #SELECTED,d0
  814.         bne    Set2Prefs2
  815.         move.w    #$01,TalkSys
  816.  
  817. Set2Prefs2:    move.l    TalkGad3,a0
  818.         move.w    gg_Flags(a0),d0
  819.         move.w    #$00,TalkDes
  820.         and.w    #SELECTED,d0
  821.         cmp.w    #SELECTED,d0
  822.         bne    Set2Prefs3
  823.         move.w    #$01,TalkDes
  824.  
  825. Set2Prefs3:    move.l    TalkGad4,a0
  826.         move.w    gg_Flags(a0),d0
  827.         move.w    #$00,TalkQue
  828.         and.w    #SELECTED,d0
  829.         cmp.w    #SELECTED,d0
  830.         bne    Set2Prefs4
  831.         move.w    #$01,TalkQue
  832.  
  833. Set2Prefs4:    move.l    TalkGad5,a0
  834.         move.w    gg_Flags(a0),d0
  835.         move.w    #$00,TalkAns
  836.         and.w    #SELECTED,d0
  837.         cmp.w    #SELECTED,d0
  838.         bne    Set2Prefs5
  839.         move.w    #$01,TalkAns
  840.  
  841. Set2Prefs5:    move.l    TalkGad6,a0
  842.         move.w    gg_Flags(a0),d0
  843.         move.w    #$00,TalkScore
  844.         and.w    #SELECTED,d0
  845.         cmp.w    #SELECTED,d0
  846.         bne    Set2Prefs6
  847.         move.w    #$01,TalkScore
  848.  
  849. Set2Prefs6:    ;move.l    TalkGad7,a0
  850.         ;move.w    gg_Flags(a0),d0
  851.         ;move.w    #$00,TalkTimer
  852.         ;and.w    #SELECTED,d0
  853.         ;cmp.w    #SELECTED,d0
  854.         ;bne    Set2Prefs7
  855.         ;move.w    #$01,TalkTimer
  856.  
  857. Set2Prefs7:    ;move.l    TalkGad8,a0
  858.         ;move.w    gg_Flags(a0),d0
  859.         ;move.w    #$00,TalkHelp
  860.         ;and.w    #SELECTED,d0
  861.         ;cmp.w    #SELECTED,d0
  862.         ;bne    Set2Prefs8
  863.         ;move.w    #$01,TalkHelp
  864.  
  865. Set2Prefs8:    jmp    SetPrefs8
  866.  
  867. P1CheckFile:    move.l    PrefsFile,d1
  868.         move.l    #0,d2
  869.         move.l    #-1,d3
  870.         lib    Dos,Seek
  871.         move.l    PrefsFile,d1
  872.         lea.l    PrefsBuf,a0
  873.         move.l    a0,d2
  874.         move.l    #$04,d3
  875.         flib    Dos,Read
  876.         tst.l    d0
  877.         bne    P1CheckFile1
  878.         jsr    FileError
  879.         move.l    #0,d0
  880.         rts
  881. P1CheckFile1:    move.l    PrefsBuf,d0
  882.         cmp.l    #"QUEP",d0
  883.         bne    P1CheckFile2
  884.         move.l    #-1,d0
  885.         rts
  886. P1CheckFile2:    move.l    PrefsWin1,a0
  887.         lea.l    WrongTxt1,a1
  888.         move.l    #$00,a2        ;positive text
  889.         lea.l    OKTxt,a3    ;a bit the wrong way around but...
  890.         move.l    #$00,d0
  891.         move.l    #$00,d1
  892.         move.l    #$90,d2
  893.         move.l    #$40,d3
  894.         lib    Intuition,AutoRequest
  895.         rts
  896. P1CheckFile3:    ;jsr    NoQues
  897.         rts
  898.  
  899. P1MenusOff:    move.l    PrefsWin1,a0
  900.         lib    Intuition,ClearMenuStrip
  901.         rts
  902.  
  903. P1MenusOn:    move.l    PrefsWin1,a0
  904.         move.l    mlist2,a1
  905.         lib    Intuition,SetMenuStrip
  906.         rts
  907.  
  908. P1SleepPointer:    move.l    PrefsWin1,a0
  909.         lea.l    ClockPointer1,a1
  910.         move.l    #16,d0
  911.         move.l    #0,d1            ;WHAT-THE-HECK IS THIS FOR?
  912.         move.l    #-6,d2
  913.         move.l    #0,d3
  914.         lib    Intuition,SetPointer
  915.         rts
  916.  
  917. P1NormalPointer    move.l    PrefsWin1,a0
  918.         lib    Intuition,ClearPointer
  919.         rts
  920.  
  921. FileRequester:    move.l    a5,FRTitle
  922.         move.l    d5,FRFlags
  923.         lea.l    FileRequest2,a0
  924.         lib    Req,FileRequester
  925. FROut:        rts
  926.  
  927. ;Pointers etc.
  928.  
  929. ;GadTools stuff
  930.  
  931. mlist2:        dc.l    0
  932. GadMagic2:    dc.b    0        ;using new gadgets? (0=No, 1=Yes)
  933. MenuMagic2:    dc.b    0        ;using new menus? (0=No, 1=Yes)
  934. ContextGad2:    dc.l    0
  935.  
  936. TalkGad1:    dc.l    0
  937. TalkGad2:    dc.l    0
  938. TalkGad3:    dc.l    0
  939. TalkGad4:    dc.l    0
  940. TalkGad5:    dc.l    0
  941. TalkGad6:    dc.l    0
  942. TalkGad7:    dc.l    0
  943. TalkGad8:    dc.l    0
  944. SpeakGad1:    dc.l    0
  945. SpeakGadBuf:    dc.l    0        ;Only a pointer!
  946.  
  947. ;Display stuff
  948.  
  949. PrefsWin1    dc.l    0        ;Main preferences window
  950.  
  951. ;File Stuff
  952.  
  953. PrefsFile:    dc.l    0
  954. SpeakFile:    dc.l    0
  955.  
  956. ;Texts part I
  957.  
  958. P1LoadName:    dc.b    "Load preferences",0
  959. P1SaveName:    dc.b    "Save preferences as",0
  960. NoSPEAKText2:    dc.b    "Couldn't open requested SPEAK: 'file'!",0
  961. NoSPEAKText3:    dc.b    "The default SPEAK: 'file' will not open. No speaking available.",0
  962.         ds.l    0
  963.  
  964. ;Window TagLists
  965.  
  966. PrefsWinTagList    dc.l    TAG_DONE,0
  967.  
  968. ;New window structures
  969.  
  970. NewPrefsWin1    dc.w    100,50            ;X,Y POS
  971.         dc.w    400            ;WIDTH
  972.         dc.w    150            ;HEIGHT
  973.         dc.b    0,1            ;PENS
  974.         dc.l    GADGETUP+VANILLAKEY+RAWKEY+MENUPICK+ACTIVEWINDOW+CLOSEWINDOW
  975.         dc.l    ACTIVATE+WINDOWCLOSE+WINDOWDRAG
  976.         dc.l    0,0            ;GADGETS, CHECKMARK
  977.         dc.l    QName            ;TITLE
  978. SToW5        dc.l    0            ;SCREEN ADDRESS
  979.         dc.l    0            ;BITMAP            
  980.         dc.w    400,150,400,150        ;MINIMUM SIZE
  981.         dc.w    CUSTOMSCREEN        ;TYPE
  982.  
  983. ;Gadget TagLists
  984.  
  985. SpeakGadTagList    dc.l    GTST_String,SpeakName
  986.         dc.l    GTST_MaxChars,126
  987.         dc.l    TAG_DONE,0
  988.  
  989. TalkGadTagList1    dc.l    GTTX_Text,TalkGadText0
  990.         dc.l    TAG_DONE,0
  991.  
  992. GadTagList:    dc.l    GT_Underscore,'_'
  993.         dc.l    TAG_DONE,0
  994.  
  995. ;Gadget texts, part I
  996.  
  997. TalkGadText0:    dc.b    "Speech:",0
  998. TalkGadText1:    dc.b    "On/Off",0
  999. ColorGadText1:    dc.b    "Set _colors",0
  1000. DefsGadText1:    dc.b    "_Defaults",0
  1001. SaveGadText1:    dc.b    "_Save",0
  1002. UseGadText1:    dc.b    "Use",0
  1003. QuitGadText1:    dc.b    "_Quit",0
  1004.  
  1005. TalkGadText2:    dc.b    "System messages",0
  1006. TalkGadText3:    dc.b    "Descriptions",0
  1007. TalkGadText4:    dc.b    "Questions",0
  1008. TalkGadText5:    dc.b    "Answers",0
  1009. TalkGadText6:    dc.b    "Score",0
  1010. TalkGadText7:    dc.b    "Timer",0
  1011. TalkGadText8:    dc.b    "Help",0
  1012. SpeakGadText1:    dc.b    "Speech 'file':",0
  1013.         ds.l    0
  1014.  
  1015. ;New gadget structures
  1016.  
  1017. NGTalkGad0:    dc.w    6        ;gng_LeftEdge
  1018.         dc.w    PrefTop-13    ;gng_TopEdge
  1019.         dc.w    0        ;gng_Width
  1020.         dc.w    9        ;gng_Height
  1021.         dc.l    TalkGadText0    ;gng_GadgetText
  1022.         dc.l    Topaz        ;gng_TextAttr
  1023.         dc.w    0        ;gng_GadgetID
  1024.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  1025.         dc.l    0        ;gng_VisualInfo
  1026.         dc.l    0        ;gng_UserData
  1027.  
  1028. NGTalkGad1:    dc.w    13        ;gng_LeftEdge
  1029.         dc.w    PrefTop        ;gng_TopEdge
  1030.         dc.w    0        ;gng_Width
  1031.         dc.w    12        ;gng_Height
  1032.         dc.l    TalkGadText1    ;gng_GadgetText
  1033.         dc.l    Topaz        ;gng_TextAttr
  1034.         dc.w    10        ;gng_GadgetID
  1035.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  1036.         dc.l    0        ;gng_VisualInfo
  1037.         dc.l    0        ;gng_UserData
  1038.  
  1039. NGTalkGad2:    dc.w    13        ;gng_LeftEdge
  1040.         dc.w    PrefTop+13    ;gng_TopEdge
  1041.         dc.w    0        ;gng_Width
  1042.         dc.w    12        ;gng_Height
  1043.         dc.l    TalkGadText2    ;gng_GadgetText
  1044.         dc.l    Topaz        ;gng_TextAttr
  1045.         dc.w    11        ;gng_GadgetID
  1046.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  1047.         dc.l    0        ;gng_VisualInfo
  1048.         dc.l    0        ;gng_UserData
  1049.  
  1050. NGTalkGad3:    dc.w    13        ;gng_LeftEdge
  1051.         dc.w    PrefTop+26    ;gng_TopEdge
  1052.         dc.w    0        ;gng_Width
  1053.         dc.w    12        ;gng_Height
  1054.         dc.l    TalkGadText3    ;gng_GadgetText
  1055.         dc.l    Topaz        ;gng_TextAttr
  1056.         dc.w    12        ;gng_GadgetID
  1057.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  1058.         dc.l    0        ;gng_VisualInfo
  1059.         dc.l    0        ;gng_UserData
  1060.  
  1061. NGTalkGad4:    dc.w    13        ;gng_LeftEdge
  1062.         dc.w    PrefTop+39    ;gng_TopEdge
  1063.         dc.w    0        ;gng_Width
  1064.         dc.w    12        ;gng_Height
  1065.         dc.l    TalkGadText4    ;gng_GadgetText
  1066.         dc.l    Topaz        ;gng_TextAttr
  1067.         dc.w    13        ;gng_GadgetID
  1068.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  1069.         dc.l    0        ;gng_VisualInfo
  1070.         dc.l    0        ;gng_UserData
  1071.  
  1072. NGTalkGad5:    dc.w    13        ;gng_LeftEdge
  1073.         dc.w    PrefTop+52    ;gng_TopEdge
  1074.         dc.w    0        ;gng_Width
  1075.         dc.w    12        ;gng_Height
  1076.         dc.l    TalkGadText5    ;gng_GadgetText
  1077.         dc.l    Topaz        ;gng_TextAttr
  1078.         dc.w    14        ;gng_GadgetID
  1079.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  1080.         dc.l    0        ;gng_VisualInfo
  1081.         dc.l    0        ;gng_UserData
  1082.  
  1083. NGTalkGad6:    dc.w    13        ;gng_LeftEdge
  1084.         dc.w    PrefTop+65    ;gng_TopEdge
  1085.         dc.w    0        ;gng_Width
  1086.         dc.w    12        ;gng_Height
  1087.         dc.l    TalkGadText6    ;gng_GadgetText
  1088.         dc.l    Topaz        ;gng_TextAttr
  1089.         dc.w    15        ;gng_GadgetID
  1090.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  1091.         dc.l    0        ;gng_VisualInfo
  1092.         dc.l    0        ;gng_UserData
  1093.  
  1094. NGTalkGad7:    dc.w    13        ;gng_LeftEdge
  1095.         dc.w    PrefTop+78    ;gng_TopEdge
  1096.         dc.w    0        ;gng_Width
  1097.         dc.w    12        ;gng_Height
  1098.         dc.l    TalkGadText7    ;gng_GadgetText
  1099.         dc.l    Topaz        ;gng_TextAttr
  1100.         dc.w    15        ;gng_GadgetID
  1101.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  1102.         dc.l    0        ;gng_VisualInfo
  1103.         dc.l    0        ;gng_UserData
  1104.  
  1105. NGTalkGad8:    dc.w    13        ;gng_LeftEdge
  1106.         dc.w    PrefTop+91    ;gng_TopEdge
  1107.         dc.w    0        ;gng_Width
  1108.         dc.w    12        ;gng_Height
  1109.         dc.l    TalkGadText8    ;gng_GadgetText
  1110.         dc.l    Topaz        ;gng_TextAttr
  1111.         dc.w    15        ;gng_GadgetID
  1112.         dc.l    PLACETEXT_RIGHT    ;gng_Flags
  1113.         dc.l    0        ;gng_VisualInfo
  1114.         dc.l    0        ;gng_UserData
  1115.  
  1116. NGSpeakGad1:    dc.w    200        ;gng_LeftEdge
  1117.         dc.w    PrefTop        ;gng_TopEdge
  1118.         dc.w    72        ;gng_Width
  1119.         dc.w    12        ;gng_Height
  1120.         dc.l    SpeakGadText1    ;gng_GadgetText
  1121.         dc.l    Topaz        ;gng_TextAttr
  1122.         dc.w    20        ;gng_GadgetID
  1123.         dc.l    PLACETEXT_ABOVE    ;gng_Flags
  1124.         dc.l    0        ;gng_VisualInfo
  1125.         dc.l    0        ;gng_UserData
  1126.  
  1127. NGColorGad:    dc.w    -113        ;gng_LeftEdge
  1128.         dc.w    -51        ;gng_TopEdge
  1129.         dc.w    100        ;gng_Width
  1130.         dc.w    12        ;gng_Height
  1131.         dc.l    ColorGadText1    ;gng_GadgetText
  1132.         dc.l    Topaz        ;gng_TextAttr
  1133.         dc.w    60        ;gng_GadgetID
  1134.         dc.l    PLACETEXT_IN    ;gng_Flags
  1135.         dc.l    0        ;gng_VisualInfo
  1136.         dc.l    0        ;gng_UserData
  1137.  
  1138. NGDefaultsGad:    dc.w    -113        ;gng_LeftEdge
  1139.         dc.w    -35        ;gng_TopEdge
  1140.         dc.w    100        ;gng_Width
  1141.         dc.w    12        ;gng_Height
  1142.         dc.l    DefsGadText1    ;gng_GadgetText
  1143.         dc.l    Topaz        ;gng_TextAttr
  1144.         dc.w    70        ;gng_GadgetID
  1145.         dc.l    PLACETEXT_IN    ;gng_Flags
  1146.         dc.l    0        ;gng_VisualInfo
  1147.         dc.l    0        ;gng_UserData
  1148.  
  1149. NGSaveGad:    dc.w    13        ;gng_LeftEdge
  1150.         dc.w    -15        ;gng_TopEdge
  1151.         dc.w    100        ;gng_Width
  1152.         dc.w    12        ;gng_Height
  1153.         dc.l    SaveGadText1    ;gng_GadgetText
  1154.         dc.l    Topaz        ;gng_TextAttr
  1155.         dc.w    80        ;gng_GadgetID
  1156.         dc.l    PLACETEXT_IN    ;gng_Flags
  1157.         dc.l    0        ;gng_VisualInfo
  1158.         dc.l    0        ;gng_UserData
  1159.  
  1160. NGUseGad:    dc.w    150        ;gng_LeftEdge
  1161.         dc.w    -15        ;gng_TopEdge
  1162.         dc.w    100        ;gng_Width
  1163.         dc.w    12        ;gng_Height
  1164.         dc.l    UseGadText1    ;gng_GadgetText
  1165.         dc.l    Topaz        ;gng_TextAttr
  1166.         dc.w    98        ;gng_GadgetID
  1167.         dc.l    PLACETEXT_IN    ;gng_Flags
  1168.         dc.l    0        ;gng_VisualInfo
  1169.         dc.l    0        ;gng_UserData
  1170.  
  1171. NGQuitGad:    dc.w    -113        ;gng_LeftEdge
  1172.         dc.w    -15        ;gng_TopEdge
  1173.         dc.w    100        ;gng_Width
  1174.         dc.w    12        ;gng_Height
  1175.         dc.l    QuitGadText1    ;gng_GadgetText
  1176.         dc.l    Topaz        ;gng_TextAttr
  1177.         dc.w    99        ;gng_GadgetID
  1178.         dc.l    PLACETEXT_IN    ;gng_Flags
  1179.         dc.l    0        ;gng_VisualInfo
  1180.         dc.l    0        ;gng_UserData
  1181.  
  1182. glist2:        dc.l    0        ;Next Gadget
  1183.         dc.w    0        ;"hit-box" left edge
  1184.         dc.w    0        ;"hit-box" top  edge
  1185.         dc.w    0        ;"hit-box" Width
  1186.         dc.w    0        ;"hit-box" Height
  1187.         dc.w    0        ;flags
  1188.         dc.w    0        ;activation
  1189.         dc.w    0        ;gadget type
  1190.         dc.l    0        ;gadget rendering
  1191.         dc.l    0        ;select rendering
  1192.         dc.l    0        ;gadget text
  1193.         dc.l    0        ;mutual exclude
  1194.         dc.l    0        ;special info
  1195.         dc.w    0        ;gadget ID (user definable)
  1196.         dc.l    0        ;ptr to general purpose user data
  1197.  
  1198. ;Menu TagLists
  1199.  
  1200. P1MenuTagList:    dc.l    GTMN_TextAttr,Topaz
  1201.         dc.l    GTMN_Menu,MNP1PrefsMenu1
  1202.         dc.l    TAG_DONE,0
  1203.  
  1204. ;Menu texts and Command Keys
  1205.  
  1206. P1Menu1Name:    dc.b    "Preferences",0
  1207. P1Menu2Name:    dc.b    "Edit",0
  1208. P1ColorText:    dc.b    "Colors",0
  1209. ColorCommKey:    dc.b    "C",0
  1210. P1GetDefCommKey    dc.b    "D",0
  1211. PrefsSaveAsText    dc.b    "Save prefs as...",0
  1212.         ds.l    0
  1213.  
  1214. ;New menu structures
  1215.  
  1216. MNP1PrefsMenu1:    dc.b    NM_TITLE        ;gnm_Type
  1217.         dc.b    0            ;gnm_Pad
  1218.         dc.l    P1Menu1Name        ;gnm_Label
  1219.         dc.l    0            ;gnm_CommKey
  1220.         dc.w    0            ;gnm_Flags
  1221.         dc.l    0            ;gnm_MutualExclude
  1222.         dc.l    0            ;gnm_UserData
  1223.  
  1224. MNP1Load1:    dc.b    NM_ITEM            ;gnm_Type
  1225.         dc.b    0            ;gnm_Pad
  1226.         dc.l    PrefsM2Text        ;gnm_Label
  1227.         dc.l    LoadCommKey        ;gnm_CommKey
  1228.         dc.w    0            ;gnm_Flags
  1229.         dc.l    0            ;gnm_MutualExclude
  1230.         dc.l    0            ;gnm_UserData
  1231.  
  1232. MNP1Save1:    dc.b    NM_ITEM            ;gnm_Type
  1233.         dc.b    0            ;gnm_Pad
  1234.         dc.l    PrefsM3Text        ;gnm_Label
  1235.         dc.l    SaveCommKey        ;gnm_CommKey
  1236.         dc.w    0            ;gnm_Flags
  1237.         dc.l    0            ;gnm_MutualExclude
  1238.         dc.l    0            ;gnm_UserData
  1239.  
  1240. MNP1SaveAs1:    dc.b    NM_ITEM            ;gnm_Type
  1241.         dc.b    0            ;gnm_Pad
  1242.         dc.l    PrefsSaveAsText        ;gnm_Label
  1243.         dc.l    SaveAsCommKey        ;gnm_CommKey
  1244.         dc.w    0            ;gnm_Flags
  1245.         dc.l    0            ;gnm_MutualExclude
  1246.         dc.l    0            ;gnm_UserData
  1247.  
  1248. MNP1SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  1249.         dc.b    0            ;gnm_Pad
  1250.         dc.l    NM_BARLABEL        ;gnm_Label
  1251.         dc.l    0            ;gnm_CommKey
  1252.         dc.w    0            ;gnm_Flags
  1253.         dc.l    0            ;gnm_MutualExclude
  1254.         dc.l    0            ;gnm_UserData
  1255.  
  1256. MNP1GetDef1:    dc.b    NM_ITEM            ;gnm_Type
  1257.         dc.b    0            ;gnm_Pad
  1258.         dc.l    PrefsM4Text        ;gnm_Label
  1259.         dc.l    P1GetDefCommKey        ;gnm_CommKey
  1260.         dc.w    0            ;gnm_Flags
  1261.         dc.l    0            ;gnm_MutualExclude
  1262.         dc.l    0            ;gnm_UserData
  1263.  
  1264. MNP1SepMenu2:    dc.b    NM_ITEM            ;gnm_Type
  1265.         dc.b    0            ;gnm_Pad
  1266.         dc.l    NM_BARLABEL        ;gnm_Label
  1267.         dc.l    0            ;gnm_CommKey
  1268.         dc.w    0            ;gnm_Flags
  1269.         dc.l    0            ;gnm_MutualExclude
  1270.         dc.l    0            ;gnm_UserData
  1271.  
  1272. MNP1Quit1:    dc.b    NM_ITEM            ;gnm_Type
  1273.         dc.b    0            ;gnm_Pad
  1274.         dc.l    QuitMenu1I2Text        ;gnm_Label
  1275.         dc.l    QuitCommKey        ;gnm_CommKey
  1276.         dc.w    0            ;gnm_Flags
  1277.         dc.l    0            ;gnm_MutualExclude
  1278.         dc.l    0            ;gnm_UserData
  1279.  
  1280. MNP1PrefsMenu2:    dc.b    NM_TITLE        ;gnm_Type
  1281.         dc.b    0            ;gnm_Pad
  1282.         dc.l    P1Menu2Name        ;gnm_Label
  1283.         dc.l    0            ;gnm_CommKey
  1284.         dc.w    0            ;gnm_Flags
  1285.         dc.l    0            ;gnm_MutualExclude
  1286.         dc.l    0            ;gnm_UserData
  1287.  
  1288. MNP1Color1:    dc.b    NM_ITEM            ;gnm_Type
  1289.         dc.b    0            ;gnm_Pad
  1290.         dc.l    P1ColorText        ;gnm_Label
  1291.         dc.l    ColorCommKey        ;gnm_CommKey
  1292.         dc.w    0            ;gnm_Flags
  1293.         dc.l    0            ;gnm_MutualExclude
  1294.         dc.l    0            ;gnm_UserData
  1295.  
  1296.  
  1297.         dc.w    0            ;NM_END?
  1298.  
  1299.         INCLUDE    "FH1:Language/WF/Questions/QueDefPref.i"
  1300.  
  1301.         ds.l    0
  1302.  
  1303. WrongTxt1:    dc.b    3,1            ;PENS
  1304.         dc.w    4            ;MODE
  1305.         dc.w    10,10            ;LEFT+TOPEDGE
  1306.         dc.l    Topaz            ;FONT
  1307.         dc.l    FWrongText1        ;TEXT
  1308.         dc.l    0            ;NEXTTEXT
  1309.  
  1310. FWrongText1:    dc.b    "Not a Questions prefs file!",0
  1311.         ds.l    0
  1312.  
  1313. ;Current preferences
  1314.  
  1315. CurrentPrefs:    dc.b    "QUEP"            ;So we can save easily
  1316. Colors:        dc.w    $aaa            ;Hope I don't need more colors
  1317.         dc.w    $000
  1318.         dc.w    $fff
  1319.         dc.w    $68b
  1320. Talk:        dc.w    0            ;Talk? (0=No, 1=Yes)
  1321. TalkSys:    dc.w    1            ;Say system messages
  1322. TalkDes:    dc.w    1            ;Say descriptions
  1323. TalkQue:    dc.w    0            ;Say question
  1324. TalkAns:    dc.w    0            ;Say answers
  1325. TalkScore:    dc.w    0            ;Say correct answer(s)
  1326. TalkTimer:    dc.w    0            ;Say correct timer(s)
  1327. TalkHelp:    dc.w    0            ;Say correct help(s)
  1328. SpeakName:    dc.b    "SPEAK:"
  1329.         dcb.b    128-6,0
  1330.         dc.l    0,0
  1331.  
  1332. ;Preferences in buffer
  1333.  
  1334. PrefsBuf:    dc.b    "QUEP"            ;So we can save easily
  1335. ColorsBuf:    dc.w    $aaa            ;Hope I don't need more colors
  1336.         dc.w    $000
  1337.         dc.w    $fff
  1338.         dc.w    $68b
  1339. TalkBuf:    dc.w    0            ;Talk? (0=No, 1=Yes)
  1340. TalkSysBuf:    dc.w    1            ;Say system messages
  1341. TalkDesBuf:    dc.w    1            ;Say descriptions
  1342. TalkQueBuf:    dc.w    0            ;Say questions
  1343. TalkAnsBuf:    dc.w    0            ;Say answers
  1344. TalkScoreBuf:    dc.w    0            ;Say correct answer(s)
  1345. TalkTimerBuf:    dc.w    0            ;Say correct timer(s)
  1346. TalkHelpBuf:    dc.w    0            ;Say correct help(s)
  1347. SpeakNameBuf:    dc.b    "SPEAK:"
  1348.         dcb.b    128-6,0
  1349.         dc.l    0,0            ;Just in case
  1350.  
  1351.         INCLUDE    "FH1:Language/WF/Questions/QuePrefsReq.i"
  1352.  
  1353.         END
  1354.  
  1355.