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