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