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