home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / new / dev / asm / tbsource / cdc / cdc.s
Encoding:
Text File  |  1993-12-21  |  46.5 KB  |  2,413 lines

  1. *************************************************
  2. *                        *
  3. *        (C)opyright 1992        *
  4. *                        *
  5. *         Tomi Blinnikka            *
  6. *                        *
  7. *    Don't try to understand the code    *
  8. *                        *
  9. * Version 0.01    16/10/1992-            *
  10. *     -0.99รถ    20/07/1993            *
  11. *                        *
  12. *************************************************
  13.  
  14.     INCLUDE    "JMPLibs.i"
  15.     INCLUDE    "exec/types.i"
  16.     INCLUDE    "exec/nodes.i"
  17.     INCLUDE    "exec/lists.i"
  18.     INCLUDE    "exec/memory.i"
  19.     INCLUDE    "exec/tasks.i"
  20.     INCLUDE    "libraries/asl.i"
  21.     INCLUDE    "libraries/dosextens.i"
  22.     INCLUDE    "libraries/dos.i"
  23.     INCLUDE    "libraries/gadtools.i"
  24.     INCLUDE "workbench/startup.i"
  25.  
  26.     INCLUDE    "XREF:2.0.xref"
  27.     INCLUDE    "XREF:intuition.xref"
  28.     INCLUDE    "XREF:exec.xref"
  29.     INCLUDE    "XREF:dos.xref"
  30.     INCLUDE    "XREF:icon.xref"
  31.  
  32. OptionTop:    EQU    37
  33. OptionTop2:    EQU    27
  34. OptionTop3:    EQU    20
  35. ListTop:    EQU    25
  36. StrTop:        EQU    INTERHEIGHT
  37.  
  38. AlbumSize:    EQU    64+64
  39. TrackSize:    EQU    64+10+10
  40.  
  41. FALSE:        EQU    0
  42. TRUE:        EQU    1
  43.  
  44. BREAK_QUIT:    EQU    $DEADBEEF
  45.  
  46.         STRUCTURE  ALBUM,LN_SIZE
  47.             STRUCT  AL_Name,64
  48.             STRUCT  AL_Artist,64
  49.             LABEL   ALBUM_SIZE
  50.  
  51.         STRUCTURE  TRACK,LN_SIZE
  52.             STRUCT  TR_Name,64
  53.             STRUCT  TR_Minutes,10
  54.             STRUCT  TR_Seconds,10
  55.             LABEL   TRACK_SIZE
  56.  
  57.         section    CDC,CODE
  58.  
  59.         push    d2-d7/a2-a6
  60.  
  61.         sub.l    a1,a1            ;Find our task
  62.         lib    Exec,FindTask
  63.         move.l    d0,OurTask
  64.         move.l    d0,a4
  65.         move.l    pr_CLI(a4),d0
  66.         bne    OpenDos
  67.  
  68.         lea.l    pr_MsgPort(a4),a0
  69.         lib    Exec,WaitPort
  70.         lea.l    pr_MsgPort(a4),a0
  71.         lib    Exec,GetMsg
  72.         move.l    d0,WBMsg
  73.  
  74. OpenDos:    openlib    Dos,NoDos        ;Keep at beginning
  75.         openlib    Utility,NoUtility
  76.  
  77.         tst.l    WBMsg
  78.         beq    CLIStart
  79.  
  80.         lea.l    NILName,a0
  81.         move.l    a0,d1
  82.         move.l    #MODE_NEWFILE,d2
  83.         lib    Dos,Open
  84.         move.l    d0,NILFile
  85.         beq    ShutDown
  86.         move.l    NILFile,_stdout
  87.         beq    NoNIL
  88.  
  89.         openlib    Icon,NoIcon
  90.  
  91.         move.l    WBMsg,a0
  92.         move.l    sm_ArgList(a0),a1
  93.         move.l    wa_Lock(a1),d1
  94.         lib    Dos,CurrentDir
  95.         move.l    d0,OldLock
  96.  
  97.         move.l    WBMsg,a0
  98.         move.l    sm_ArgList(a0),a1
  99.         move.l    wa_Name(a1),a0
  100.         lib    Icon,GetDiskObject
  101.         move.l    d0,DiskObject
  102.         beq    MainStart
  103.  
  104.         move.l    DiskObject,a4
  105.         move.l    $36(a4),a0        ;do_ToolTypes
  106.         lea.l    DEVICEText1,a1
  107.         lib    Icon,FindToolType
  108.         tst.l    d0
  109.         beq    DoToolType1
  110. ;        move.l    d0,SerName
  111.  
  112. ;See VShell(for tooltype)/SimCheat(for args)
  113.  
  114. DoToolType1:    move.l    $36(a4),a0        ;do_ToolTypes
  115.         lea.l    UNITText1,a1
  116.         lib    Icon,FindToolType
  117.         tst.l    d0
  118.         beq    DoToolType2
  119.         move.l    d0,a0
  120.         bsr    ConvASCII
  121.         tst.l    d0
  122.         beq    DoToolType2
  123. ;        move.l    d0,SerUnit
  124.  
  125. DoToolType2:
  126.         bra    MainStart
  127.  
  128. CLIStart:    lib    Dos,Output
  129.         move.l    d0,_stdout
  130.  
  131.         lea.l    CLTemplate1,a0
  132.         move.l    a0,d1
  133.         lea.l    CLArray1,a0
  134.         move.l    a0,d2
  135.         clr.l    d3
  136.         lib    Dos,ReadArgs
  137.         move.l    d0,RDArgs1
  138.         beq    NoRDArgs
  139.  
  140. MainStart:    openlib    Intuition,NoInt
  141.         openlib    GadTools,NoGadTools
  142.         openlib    Asl,NoAsl
  143.  
  144.         bsr    LockPubScr
  145.         tst.l    PubScreen
  146.         beq    NoPubScreen
  147.  
  148. ;Get visualinfo
  149.  
  150.         move.l    PubScreen,a0
  151.         sub.l    a1,a1
  152.         lib    GadTools,GetVisualInfoA
  153.         move.l    d0,vi
  154.  
  155. ;Make gadget stuff
  156.  
  157.         lea.l    glist,a0
  158.         lib    GadTools,CreateContext
  159.         move.l    d0,ContextGad2
  160.         beq    NoContextGad
  161.  
  162.         move.l    glist,a0
  163.         move.w    BHeight,d5
  164.  
  165.         lea.l    NGAddGad,a1
  166.         move.l    #BUTTON_KIND,d0
  167.         move.l    vi,gng_VisualInfo(a1)
  168.         lea.l    GadTagList,a2
  169.         lib    GadTools,CreateGadgetA
  170.  
  171.         move.l    d0,a0
  172.         move.l    a0,AddGad1
  173.         add.w    d5,gg_TopEdge(a0)
  174.  
  175.         lea.l    NGRemoveGad,a1
  176.         move.l    #BUTTON_KIND,d0
  177.         move.l    vi,gng_VisualInfo(a1)
  178.         lea.l    GadTagList,a2
  179.         lib    GadTools,CreateGadgetA
  180.  
  181.         move.l    d0,a0
  182.         move.l    a0,RemoveGad1
  183.         add.w    d5,gg_TopEdge(a0)
  184.  
  185.         lea.l    NGEditGad,a1
  186.         move.l    #BUTTON_KIND,d0
  187.         move.l    vi,gng_VisualInfo(a1)
  188.         lea.l    GadTagList,a2
  189.         lib    GadTools,CreateGadgetA
  190.  
  191.         move.l    d0,a0
  192.         move.l    a0,EditGad1
  193.         add.w    d5,gg_TopEdge(a0)
  194.  
  195.         lea.l    NGTracksGad,a1
  196.         move.l    #BUTTON_KIND,d0
  197.         move.l    vi,gng_VisualInfo(a1)
  198.         lea.l    GadTagList,a2
  199.         lib    GadTools,CreateGadgetA
  200.  
  201.         move.l    d0,a0
  202.         move.l    a0,TracksGad1
  203.         add.w    d5,gg_TopEdge(a0)
  204.  
  205.         lea.l    NGListGad,a1
  206.         move.l    #LISTVIEW_KIND,d0
  207.         move.l    vi,gng_VisualInfo(a1)
  208.         lea.l    ListGadTagList,a2
  209.         lib    GadTools,CreateGadgetA
  210.  
  211.         move.l    d0,a0
  212.         move.l    a0,ListGad1
  213.  
  214.         lea.l    NGTopGad,a1
  215.         move.l    #BUTTON_KIND,d0
  216.         move.l    vi,gng_VisualInfo(a1)
  217.         lea.l    GadTagList,a2
  218.         lib    GadTools,CreateGadgetA
  219.  
  220.         move.l    d0,a0
  221.         move.l    a0,TopGad1
  222.         add.w    d5,gg_TopEdge(a0)
  223.  
  224.         lea.l    NGUpGad,a1
  225.         move.l    #BUTTON_KIND,d0
  226.         move.l    vi,gng_VisualInfo(a1)
  227.         lea.l    GadTagList,a2
  228.         lib    GadTools,CreateGadgetA
  229.  
  230.         move.l    d0,a0
  231.         move.l    a0,UpGad1
  232.         add.w    d5,gg_TopEdge(a0)
  233.  
  234.         lea.l    NGDownGad,a1
  235.         move.l    #BUTTON_KIND,d0
  236.         move.l    vi,gng_VisualInfo(a1)
  237.         lea.l    GadTagList,a2
  238.         lib    GadTools,CreateGadgetA
  239.  
  240.         move.l    d0,a0
  241.         move.l    a0,DownGad1
  242.         add.w    d5,gg_TopEdge(a0)
  243.  
  244.         lea.l    NGBottomGad,a1
  245.         move.l    #BUTTON_KIND,d0
  246.         move.l    vi,gng_VisualInfo(a1)
  247.         lea.l    GadTagList,a2
  248.         lib    GadTools,CreateGadgetA
  249.  
  250.         move.l    d0,a0
  251.         move.l    a0,BottomGad1
  252.         add.w    d5,gg_TopEdge(a0)
  253.  
  254.         lea.l    NGSortGad,a1
  255.         move.l    #BUTTON_KIND,d0
  256.         move.l    vi,gng_VisualInfo(a1)
  257.         lea.l    GadTagList,a2
  258.         lib    GadTools,CreateGadgetA
  259.  
  260.         move.l    d0,a0
  261.         move.l    a0,SortGad1
  262.         add.w    d5,gg_TopEdge(a0)
  263.         or.w    #GADGDISABLED,gg_Flags(a0)
  264.  
  265.         lea.l    NGTotalGad,a1
  266.         move.l    #NUMBER_KIND,d0
  267.         move.l    vi,gng_VisualInfo(a1)
  268.         lea.l    GadTagList,a2
  269.         lib    GadTools,CreateGadgetA
  270.  
  271.         move.l    d0,a0
  272.         move.l    a0,TotalGad1
  273.         add.w    d5,gg_TopEdge(a0)
  274.  
  275.         move.b    #1,GadMagic        ;1st Make worked OK
  276.         lea.l    NewWindow1,a0
  277.         lea.l    glist,a1
  278.         move.l    a1,nw_FirstGadget(a0)
  279.  
  280. ;Gadgets for Window 2
  281.  
  282.         lea.l    glist2,a0
  283.         lib    GadTools,CreateContext
  284.         move.l    d0,ContextGad3
  285.         beq    NoContextGad
  286.  
  287.         move.l    glist2,a0
  288.  
  289.         lea.l    NGAddGad,a1
  290.         move.l    #BUTTON_KIND,d0
  291.         move.l    vi,gng_VisualInfo(a1)
  292.         lea.l    GadTagList,a2
  293.         lib    GadTools,CreateGadgetA
  294.  
  295.         move.l    d0,a0
  296.         move.l    a0,AddGad2
  297.         add.w    d5,gg_TopEdge(a0)
  298.  
  299.         lea.l    NGRemoveGad,a1
  300.         move.l    #BUTTON_KIND,d0
  301.         move.l    vi,gng_VisualInfo(a1)
  302.         lea.l    GadTagList,a2
  303.         lib    GadTools,CreateGadgetA
  304.  
  305.         move.l    d0,a0
  306.         move.l    a0,RemoveGad2
  307.         add.w    d5,gg_TopEdge(a0)
  308.  
  309.         lea.l    NGEditGad,a1
  310.         move.l    #BUTTON_KIND,d0
  311.         move.l    vi,gng_VisualInfo(a1)
  312.         lea.l    GadTagList,a2
  313.         lib    GadTools,CreateGadgetA
  314.  
  315.         move.l    d0,a0
  316.         move.l    a0,EditGad2
  317.         add.w    d5,gg_TopEdge(a0)
  318.  
  319.         lea.l    NGListGad,a1
  320.         lea.l    ListGadText2,a3
  321.         move.l    a3,gng_GadgetText(a1)
  322.         move.l    #LISTVIEW_KIND,d0
  323.         move.l    vi,gng_VisualInfo(a1)
  324.         lea.l    ListGadTagList,a2
  325.         lib    GadTools,CreateGadgetA
  326.  
  327.         move.l    d0,a0
  328.         move.l    a0,ListGad2
  329.  
  330.         lea.l    NGTopGad,a1
  331.         move.l    #BUTTON_KIND,d0
  332.         move.l    vi,gng_VisualInfo(a1)
  333.         lea.l    GadTagList,a2
  334.         lib    GadTools,CreateGadgetA
  335.  
  336.         move.l    d0,a0
  337.         move.l    a0,TopGad2
  338.         add.w    d5,gg_TopEdge(a0)
  339.  
  340.         lea.l    NGUpGad,a1
  341.         move.l    #BUTTON_KIND,d0
  342.         move.l    vi,gng_VisualInfo(a1)
  343.         lea.l    GadTagList,a2
  344.         lib    GadTools,CreateGadgetA
  345.  
  346.         move.l    d0,a0
  347.         move.l    a0,UpGad2
  348.         add.w    d5,gg_TopEdge(a0)
  349.  
  350.         lea.l    NGDownGad,a1
  351.         move.l    #BUTTON_KIND,d0
  352.         move.l    vi,gng_VisualInfo(a1)
  353.         lea.l    GadTagList,a2
  354.         lib    GadTools,CreateGadgetA
  355.  
  356.         move.l    d0,a0
  357.         move.l    a0,DownGad2
  358.         add.w    d5,gg_TopEdge(a0)
  359.  
  360.         lea.l    NGBottomGad,a1
  361.         move.l    #BUTTON_KIND,d0
  362.         move.l    vi,gng_VisualInfo(a1)
  363.         lea.l    GadTagList,a2
  364.         lib    GadTools,CreateGadgetA
  365.  
  366.         move.l    d0,a0
  367.         move.l    a0,BottomGad2
  368.         add.w    d5,gg_TopEdge(a0)
  369.  
  370.         lea.l    NGSortGad,a1
  371.         move.l    #BUTTON_KIND,d0
  372.         move.l    vi,gng_VisualInfo(a1)
  373.         lea.l    GadTagList,a2
  374.         lib    GadTools,CreateGadgetA
  375.  
  376.         move.l    d0,a0
  377.         move.l    a0,SortGad2
  378.         add.w    d5,gg_TopEdge(a0)
  379.         or.w    #GADGDISABLED,gg_Flags(a0)
  380.  
  381.         lea.l    NGTotalGad,a1
  382.         move.l    #NUMBER_KIND,d0
  383.         move.l    vi,gng_VisualInfo(a1)
  384.         lea.l    GadTagList,a2
  385.         lib    GadTools,CreateGadgetA
  386.  
  387.         move.l    d0,a0
  388.         move.l    a0,TotalGad2
  389.         add.w    d5,gg_TopEdge(a0)
  390.  
  391.         move.b    #1,GadMagic2        ;Make worked OK
  392.         lea.l    NewWindow2,a0
  393.         lea.l    glist2,a1
  394.         move.l    a1,nw_FirstGadget(a0)
  395.  
  396. ;Gadgets for window 3
  397.  
  398.         lea.l    glist3,a0
  399.         lib    GadTools,CreateContext
  400.         move.l    d0,ContextGad4
  401.         beq    NoContextGad
  402.  
  403.         move.l    glist3,a0
  404.  
  405.         lea.l    NGAlbumStrGad1,a1
  406.         move.l    #STRING_KIND,d0
  407.         move.l    vi,gng_VisualInfo(a1)
  408.         lea.l    AlbumGadTagList,a2
  409.         lib    GadTools,CreateGadgetA
  410.  
  411.         move.l    d0,AlbumGad1
  412.         move.l    d0,a0
  413.         move.l    gg_SpecialInfo(a0),a1
  414.         move.l    (a1),AlbumGadBuf1
  415. ;        or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  416.         add.w    d5,gg_TopEdge(a0)
  417.  
  418.         lea.l    NGArtistGad1,a1
  419.         move.l    #STRING_KIND,d0
  420.         move.l    vi,gng_VisualInfo(a1)
  421.         lea.l    ArtistGadTagList,a2
  422.         lib    GadTools,CreateGadgetA
  423.  
  424.         move.l    d0,ArtistGad1
  425.         move.l    d0,a0
  426.         move.l    gg_SpecialInfo(a0),a1
  427.         move.l    (a1),ArtistGadBuf1
  428. ;        or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  429.         add.w    d5,gg_TopEdge(a0)
  430.  
  431.         lea.l    NGOKGad,a1
  432.         move.l    #BUTTON_KIND,d0
  433.         move.l    vi,gng_VisualInfo(a1)
  434.         lea.l    GadTagList,a2
  435.         lib    GadTools,CreateGadgetA
  436.  
  437.         move.l    d0,a0
  438.         move.l    a0,OKGad1
  439.         add.w    d5,gg_TopEdge(a0)
  440.         or.w    #GRELBOTTOM,gg_Flags(a0)
  441.  
  442.         lea.l    NGCancelGad,a1
  443.         move.l    #BUTTON_KIND,d0
  444.         move.l    vi,gng_VisualInfo(a1)
  445.         lea.l    GadTagList,a2
  446.         lib    GadTools,CreateGadgetA
  447.  
  448.         move.l    d0,a0
  449.         move.l    a0,CancelGad1
  450.         add.w    d5,gg_TopEdge(a0)
  451.         or.w    #GRELBOTTOM!GRELRIGHT,gg_Flags(a0)
  452.  
  453.         move.b    #1,GadMagic3        ;Make worked OK
  454.         lea.l    NewWindow3,a0
  455.         lea.l    glist3,a1
  456.         move.l    a1,nw_FirstGadget(a0)
  457.  
  458. ;Gadgets for window 4
  459.  
  460.         lea.l    glist4,a0
  461.         lib    GadTools,CreateContext
  462.         move.l    d0,ContextGad5
  463.         beq    NoContextGad
  464.  
  465.         move.l    glist4,a0
  466.  
  467.         lea.l    NGTrackGad1,a1
  468.         move.l    #STRING_KIND,d0
  469.         move.l    vi,gng_VisualInfo(a1)
  470.         lea.l    TrackGadTagList,a2
  471.         lib    GadTools,CreateGadgetA
  472.  
  473.         move.l    d0,TrackGad1
  474.         move.l    d0,a0
  475.         move.l    $22(a0),a1
  476.         move.l    (a1),TrackGadBuf1
  477. ;        or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  478.         add.w    d5,gg_TopEdge(a0)
  479.  
  480.         lea.l    NGMinutesGad1,a1
  481.         move.l    #INTEGER_KIND,d0
  482.         move.l    vi,gng_VisualInfo(a1)
  483.         lea.l    MinutesGadTagList,a2
  484.         lib    GadTools,CreateGadgetA
  485.  
  486.         move.l    d0,MinutesGad1
  487.         move.l    d0,a0
  488.         move.l    $22(a0),a1
  489.         move.l    (a1),MinutesGadBuf1
  490. ;get the number's pointer too...
  491. ;        or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  492.         add.w    d5,gg_TopEdge(a0)
  493.  
  494.         lea.l    NGSecondsGad1,a1
  495.         move.l    #INTEGER_KIND,d0
  496.         move.l    vi,gng_VisualInfo(a1)
  497.         lea.l    SecondsGadTagList,a2
  498.         lib    GadTools,CreateGadgetA
  499.  
  500.         move.l    d0,SecondsGad1
  501.         move.l    d0,a0
  502.         move.l    $22(a0),a1
  503.         move.l    (a1),SecondsGadBuf1
  504. ;get the number's pointer too...
  505. ;        or.w    #GADGIMMEDIATE!RELVERIFY,gg_Activation(a0)
  506.         add.w    d5,gg_TopEdge(a0)
  507.  
  508.         lea.l    NGOKGad,a1
  509.         move.l    #BUTTON_KIND,d0
  510.         move.l    vi,gng_VisualInfo(a1)
  511.         lea.l    GadTagList,a2
  512.         lib    GadTools,CreateGadgetA
  513.  
  514.         move.l    d0,a0
  515.         move.l    a0,OKGad2
  516.         add.w    d5,gg_TopEdge(a0)
  517.         or.w    #GRELBOTTOM,gg_Flags(a0)
  518.  
  519.         lea.l    NGCancelGad,a1
  520.         move.l    #BUTTON_KIND,d0
  521.         move.l    vi,gng_VisualInfo(a1)
  522.         lea.l    GadTagList,a2
  523.         lib    GadTools,CreateGadgetA
  524.  
  525.         move.l    d0,a0
  526.         move.l    a0,CancelGad2
  527.         add.w    d5,gg_TopEdge(a0)
  528.         or.w    #GRELBOTTOM!GRELRIGHT,gg_Flags(a0)
  529.  
  530.         move.b    #1,GadMagic4        ;Make worked OK
  531.         lea.l    NewWindow4,a0
  532.         lea.l    glist4,a1
  533.         move.l    a1,nw_FirstGadget(a0)
  534.  
  535.  
  536. ;the above has a bug... It doesn't check for failures :)
  537.  
  538. ;New style menu stuff
  539.  
  540.         lea.l    MNProjectMenu1,a0
  541.         lea.l    MenuTagList,a1
  542.         lib    GadTools,CreateMenusA
  543.         move.l    d0,mlist
  544.         beq    NoMenus
  545.  
  546.         move.l    mlist,a0
  547.         move.l    vi,a1
  548.         lea.l    MenuTagList,a2
  549.         lib    GadTools,LayoutMenusA
  550.         move.b    #1,MenuMagic
  551.  
  552.         bsr    OpenWin1
  553.         tst.l    Window1
  554.         beq    NoWindow1
  555.  
  556. ;Unlock PubScreen
  557.  
  558.         sub.l    a0,a0
  559.         move.l    PubScreen,a1
  560.         lib    Intuition,UnlockPubScreen
  561.         clr.l    PubScreen
  562.  
  563. ;Get Asl_requester
  564.  
  565.         move.l    Window1,AslReqTags+4
  566.         move.l    #ASL_FileRequest,d0
  567.         lea.l    AslReqTags,a0
  568.         lib    Asl,AllocAslRequest
  569.         move.l    d0,AslReq
  570.         beq    NoAslReq
  571.  
  572. ;Init list
  573.  
  574.         lea.l    AlbumList,a0
  575.         NEWLIST    a0
  576.  
  577. Window1IDCMP:    bsr    CheckIDCMP
  578.         cmp.l    Window1,a3
  579.         beq    WindowIDCMP2
  580.         cmp.l    Window2,a3
  581.         beq    WindowIDCMP3
  582.         cmp.l    Window3,a3
  583.         beq    WindowIDCMP4
  584.         cmp.l    Window4,a3
  585.         beq    WindowIDCMP5
  586.         bra    Window1IDCMP
  587.  
  588. ;Window1
  589.  
  590. WindowIDCMP2:    cmp.l    #BREAK_QUIT,d2
  591.         beq    ShutDown
  592.         cmp.l    #CLOSEWINDOW,d2
  593.         beq    ShutDown        ;change to quit
  594.         cmp.l    #GADGETUP,d2
  595.         beq    DoGads
  596.         cmp.l    #MENUPICK,d2
  597.         beq    Win1Menus
  598.         cmp.l    #VANILLAKEY,d2
  599.         beq    VanillaKeys
  600.         cmp.l    #REFRESHWINDOW,d2
  601.         beq    Refresher
  602.         bra    Window1IDCMP
  603.  
  604. ;Window 2
  605.  
  606. WindowIDCMP3:    cmp.l    #BREAK_QUIT,d2
  607.         beq    ShutDown
  608.         cmp.l    #CLOSEWINDOW,d2
  609.         beq    EndTracks
  610.         cmp.l    #GADGETUP,d2
  611.         beq    DoGads2
  612.         cmp.l    #VANILLAKEY,d2
  613.         beq    VanillaKeys2
  614.         cmp.l    #REFRESHWINDOW,d2
  615.         beq    Refresher
  616.         bra    Window1IDCMP
  617.  
  618. ;Window 3
  619.  
  620. WindowIDCMP4:    cmp.l    #BREAK_QUIT,d2
  621.         beq    ShutDown
  622.         cmp.l    #CLOSEWINDOW,d2
  623.         beq    EndEdit
  624.         cmp.l    #GADGETUP,d2
  625.         beq    DoGads3
  626.         cmp.l    #VANILLAKEY,d2
  627.         beq    VanillaKeys3
  628.         cmp.l    #REFRESHWINDOW,d2
  629.         beq    Refresher
  630.         bra    Window1IDCMP
  631.  
  632. ;Window 4
  633.  
  634. WindowIDCMP5:    cmp.l    #BREAK_QUIT,d2
  635.         beq    ShutDown
  636.         cmp.l    #CLOSEWINDOW,d2
  637.         beq    EndEdit2
  638.         cmp.l    #GADGETUP,d2
  639.         beq    DoGads4
  640.         cmp.l    #VANILLAKEY,d2
  641.         beq    VanillaKeys4
  642.         cmp.l    #REFRESHWINDOW,d2
  643.         beq    Refresher
  644.         bra    Window1IDCMP
  645.  
  646. Refresher:    move.l    a3,a0
  647.         lib    GadTools,GT_BeginRefresh
  648.         move.l    a3,a0
  649.         move.l    #TRUE,d0
  650.         lib    GadTools,GT_EndRefresh
  651.         bra    Window1IDCMP
  652.  
  653. Win1Menus:    bsr    MenuNull
  654.         cmp.w    #$00,d6
  655.         beq    Win1Menus1
  656.         cmp.w    #$01,d6
  657.         beq    Win1Menus2
  658.         bra    Window1IDCMP
  659. Win1Menus1:    cmp.w    #$00,d5
  660. ;        beq    New
  661.         cmp.w    #$01,d5
  662.         beq    DoLoad
  663.         cmp.w    #$02,d5
  664. ;        beq    Save
  665.         cmp.w    #$03,d5
  666. ;        beq    SaveAs
  667.         cmp.w    #$05,d5
  668. ;        beq    Print
  669.         cmp.w    #$07,d5
  670.         beq    About
  671.         cmp.w    #$09,d5
  672.         beq    ShutDown
  673.         bra    Window1IDCMP
  674.  
  675. Win1Menus2:    cmp.w    #$00,d5
  676. ;        beq    Search
  677.         cmp.w    #$01,d5
  678. ;        beq    SearchNext
  679.         bra    Window1IDCMP
  680.  
  681. VanillaKeys:    cmp.w    #$1b,d3
  682.         beq    ShutDown
  683.         cmp.w    #'a',d3        ;Lower Case
  684.         beq    Add
  685.         cmp.w    #'r',d3
  686.         beq    Remove
  687.         cmp.w    #'e',d3
  688.         beq    Edit
  689.         cmp.w    #'t',d3
  690.         beq    Tracks
  691.         cmp.w    #'o',d3
  692.         beq    Top
  693.         cmp.w    #'u',d3
  694.         beq    Up
  695.         cmp.w    #'d',d3
  696.         beq    Down
  697.         cmp.w    #'b',d3
  698.         beq    Bottom
  699.         cmp.w    #'A',d3        ;Upper Case
  700.         beq    Add
  701.         cmp.w    #'R',d3
  702.         beq    Remove
  703.         cmp.w    #'E',d3
  704.         beq    Edit
  705.         cmp.w    #'T',d3
  706.         beq    Tracks
  707.         cmp.w    #'O',d3
  708.         beq    Top
  709.         cmp.w    #'U',d3
  710.         beq    Up
  711.         cmp.w    #'D',d3
  712.         beq    Down
  713.         cmp.w    #'B',d3
  714.         beq    Bottom
  715.         bra    Window1IDCMP
  716.  
  717. VanillaKeys2:    cmp.w    #$1b,d3
  718.         beq    EndTracks
  719.         cmp.w    #'a',d3        ;Lower Case
  720.         beq    Add2
  721.         cmp.w    #'r',d3
  722.         beq    Remove2
  723.         cmp.w    #'e',d3
  724.         beq    Edit2
  725.         cmp.w    #'o',d3
  726.         beq    Top2
  727.         cmp.w    #'u',d3
  728.         beq    Up2
  729.         cmp.w    #'d',d3
  730.         beq    Down2
  731.         cmp.w    #'b',d3
  732.         beq    Bottom2
  733.         cmp.w    #'A',d3        ;Upper Case
  734.         beq    Add2
  735.         cmp.w    #'R',d3
  736.         beq    Remove2
  737.         cmp.w    #'E',d3
  738.         beq    Edit2
  739.         cmp.w    #'O',d3
  740.         beq    Top2
  741.         cmp.w    #'U',d3
  742.         beq    Up2
  743.         cmp.w    #'D',d3
  744.         beq    Down2
  745.         cmp.w    #'B',d3
  746.         beq    Bottom2
  747.         bra    Window1IDCMP
  748.  
  749. VanillaKeys3:    cmp.w    #$1b,d3
  750.         beq    EndEdit
  751.         cmp.w    #'o',d3        ;Lower Case
  752.         beq    EndEdit
  753.         cmp.w    #'c',d3
  754.         beq    EndEdit
  755.         cmp.w    #'O',d3        ;Upper Case
  756.         beq    EndEdit
  757.         cmp.w    #'C',d3
  758.         beq    EndEdit
  759.         bra    Window1IDCMP
  760.  
  761. VanillaKeys4:    cmp.w    #$1b,d3
  762.         beq    EndEdit2
  763.         cmp.w    #'o',d3        ;Lower Case
  764.         beq    EndEdit2
  765.         cmp.w    #'c',d3
  766.         beq    EndEdit2
  767.         cmp.w    #'O',d3        ;Upper Case
  768.         beq    EndEdit2
  769.         cmp.w    #'C',d3
  770.         beq    EndEdit2
  771.         bra    Window1IDCMP
  772.  
  773. DoGads:        cmp.w    #10,$26(a5)
  774.         beq    Add
  775.         cmp.w    #11,$26(a5)
  776.         beq    Remove
  777.         cmp.w    #12,$26(a5)
  778.         beq    Edit
  779.         cmp.w    #13,$26(a5)
  780.         beq    Tracks
  781.         cmp.w    #14,$26(a5)
  782.         beq    Top
  783.         cmp.w    #15,$26(a5)
  784.         beq    Up
  785.         cmp.w    #16,$26(a5)
  786.         beq    Down
  787.         cmp.w    #17,$26(a5)
  788.         beq    Bottom
  789.         cmp.w    #18,$26(a5)
  790.         beq    Sort
  791.         cmp.w    #55,$26(a5)
  792.         beq    GetAlbum
  793.         bra    Window1IDCMP
  794.  
  795. DoGads2:    cmp.w    #10,$26(a5)
  796.         beq    Add2
  797.         cmp.w    #11,$26(a5)
  798.         beq    Remove2
  799.         cmp.w    #12,$26(a5)
  800.         beq    Edit2
  801.         cmp.w    #14,$26(a5)
  802.         beq    Top2
  803.         cmp.w    #15,$26(a5)
  804.         beq    Up2
  805.         cmp.w    #16,$26(a5)
  806.         beq    Down2
  807.         cmp.w    #17,$26(a5)
  808.         beq    Bottom2
  809.         cmp.w    #18,$26(a5)
  810.         beq    Sort2
  811.         cmp.w    #55,$26(a5)
  812.         beq    GetTrack
  813.         bra    Window1IDCMP
  814.  
  815. ;Gadget stuff for window 3
  816.  
  817. DoGads3:    cmp.w    #81,$26(a5)
  818.         beq    UpdateAlbum
  819.         cmp.w    #82,$26(a5)
  820.         beq    UpdateArtist
  821.         cmp.w    #90,$26(a5)
  822.         beq    EndEdit
  823.         cmp.w    #91,$26(a5)
  824.         beq    EndEdit
  825.         bra    Window1IDCMP
  826.  
  827. ;Gadget stuff for window 4
  828.  
  829. DoGads4:    cmp.w    #81,$26(a5)
  830. ;        beq    DoTrackStuff
  831.         cmp.w    #82,$26(a5)
  832. ;        beq    DoMinutesStuff
  833.         cmp.w    #83,$26(a5)
  834. ;        beq    DoSecondsStuff
  835.         cmp.w    #90,$26(a5)
  836.         beq    EndEdit2
  837.         cmp.w    #91,$26(a5)
  838.         beq    EndEdit2
  839.         bra    Window1IDCMP
  840.  
  841. ActivateGads:    move.l    (a5),a0
  842.         cmp.l    OKGad1,a0
  843.         beq    ActivateGads1.1
  844.         move.l    Window3,a1
  845.         sub.l    a2,a2
  846.         lib    Intuition,ActivateGadget
  847. ActivateGads1.1: bra    Window1IDCMP
  848.  
  849. ActivateGads2:    move.l    (a5),a0
  850.         cmp.l    OKGad2,a0
  851.         beq    ActivateGads2.1
  852.         move.l    Window4,a1
  853.         sub.l    a2,a2
  854.         lib    Intuition,ActivateGadget
  855. ActivateGads2.1: bra    Window1IDCMP
  856.  
  857. ;Move these elsewhere...
  858.  
  859. GetAlbum:    ;move.l    d3,CurrentAlbum        ;Have to search the address
  860.         bra    Window1IDCMP
  861.  
  862. GetTrack:    ;move.l    d3,CurrentTrack        ;Have to search the address
  863.         bra    Window1IDCMP
  864.  
  865. ;'Update*' copies the text from the string gadget just completed
  866.  
  867. UpdateAlbum:    push    a5
  868.         bsr    List1Off
  869.  
  870.         move.l    CurrentAlbum,a2
  871.         move.l    AlbumGadBuf1,a0
  872.         lea.l    AL_Name(a2),a1
  873.         bsr    GetLength
  874.         lib    Exec,CopyMem
  875.  
  876.         bsr    List1On
  877.         pull    a5
  878.         bra    ActivateGads
  879.  
  880. UpdateArtist:    push    a5
  881.         bsr    List1Off
  882.         move.l    CurrentAlbum,a2
  883.         move.l    ArtistGadBuf1,a0
  884.         lea.l    AL_Artist(a2),a1
  885.         bsr    GetLength
  886.         lib    Exec,CopyMem
  887.         bsr    List1On
  888.         pull    a5
  889.         bra    ActivateGads
  890.  
  891. ;'Add' adds a node to the album/track list
  892.  
  893. Add:        bsr    List1Off
  894.         move.l    #ALBUM_SIZE,d0        ;reserve memory for node
  895.         move.l    #MEMF_CLEAR!MEMF_PUBLIC,d1
  896.         lib    Exec,AllocMem
  897.         tst.l    d0
  898.         bne    Add1.1
  899.         bsr    NoMem1
  900.         bra    Window1IDCMP
  901. Add1.1:        move.l    d0,a2            ;Memory to a2
  902.         lea.l    AlbumList,a0        ;Get list
  903.         move.l    a2,a1            ;a0=list, a1=node
  904.         ADDTAIL                ;Add node to list
  905.  
  906.         lea.l    AL_Name(a2),a1        ;Get name address
  907.         move.l    a1,LN_NAME(a2)        ;Put name in LN_NAME
  908.         lea.l    NewText1,a0        ;Give 'New' as name
  909.         bsr    GetLength
  910.         lib    Exec,CopyMem
  911.         move.l    a2,CurrentAlbum        ;Set current albumnode
  912.         bsr    List1On
  913.         bra    Edit
  914.  
  915. Remove:
  916.         bra    Window1IDCMP
  917.  
  918. Add2:
  919.         bra    Window1IDCMP
  920.  
  921. Remove2:
  922.         bra    Window1IDCMP
  923.  
  924. ;'Edit' edits a album/track node
  925.  
  926. Edit:        tst.l    CurrentAlbum
  927.         beq    NoCurrAlbum
  928.         tst.l    Window3
  929.         beq    Edit1.1
  930.         move.l    Window3,a0
  931.         lib    Intuition,ActivateWindow
  932.         move.l    Window3,a0
  933.         lib    Intuition,WindowToFront
  934.         bra    Edit1.2
  935. Edit1.1:    bsr    OpenWin3
  936.         tst.l    d0
  937.         beq    Window1IDCMP
  938. Edit1.2:    move.l    glist3,a5
  939.         bra    ActivateGads
  940.  
  941. EndEdit:    bsr    List1On
  942.         bsr    CloseWin3
  943.         bra    Window1IDCMP
  944.  
  945. Edit2:        tst.l    Window4
  946.         beq    Edit2.1
  947.         move.l    Window4,a0
  948.         lib    Intuition,ActivateWindow
  949.         move.l    Window4,a0
  950.         lib    Intuition,WindowToFront
  951.         bra    Edit2.2
  952. Edit2.1:    bsr    OpenWin4
  953.         tst.l    d0
  954.         beq    Window1IDCMP
  955. Edit2.2:    move.l    glist4,a5
  956.         bra    ActivateGads2
  957.  
  958. EndEdit2:    ;bsr    OnList2
  959.         bsr    CloseWin4
  960.         bra    Window1IDCMP
  961.  
  962. ;'Tracks' goes to the track list view etc. window
  963.  
  964. Tracks:        tst.l    Window2
  965.         beq    Tracks1.1
  966.         move.l    Window2,a0
  967.         lib    Intuition,ActivateWindow
  968.         move.l    Window2,a0
  969.         lib    Intuition,WindowToFront
  970.         bra    Tracks1.2
  971. Tracks1.1:    bsr    OpenWin2
  972. ;        tst.l    d0
  973. ;        beq    Window1IDCMP
  974. Tracks1.2:    bra    Window1IDCMP
  975.  
  976. EndTracks:    bsr    CloseWin2
  977.         bra    Window1IDCMP
  978.  
  979. Top:
  980.         bra    Window1IDCMP
  981. Up:
  982.         bra    Window1IDCMP
  983. Down:
  984.         bra    Window1IDCMP
  985. Bottom:
  986.         bra    Window1IDCMP
  987. Sort:
  988.         bra    Window1IDCMP
  989. Top2:
  990.         bra    Window1IDCMP
  991. Up2:
  992.         bra    Window1IDCMP
  993. Down2:
  994.         bra    Window1IDCMP
  995. Bottom2:
  996.         bra    Window1IDCMP
  997. Sort2:
  998.         bra    Window1IDCMP
  999.  
  1000. ;ADD! Check if not saved etc.
  1001.  
  1002. DoLoad:        bsr    Load
  1003.         move.l    #5,d1
  1004.         lib    Dos,Delay
  1005.         bra    Window1IDCMP
  1006.  
  1007. Load:        move.l    AslReq,a0
  1008.         lea.l    LoadReqTags,a1
  1009.         lib    Asl,AslRequest
  1010.         tst.l    d0
  1011.         beq    Load_OUT
  1012.  
  1013.         move.l    AslReq,a2
  1014.         move.l    rf_Dir(a2),d1
  1015.         move.l    #ACCESS_READ,d2
  1016.         lib    Dos,Lock
  1017.         move.l    d0,LoadLock
  1018.         beq    Load_ERR1
  1019.  
  1020.         move.l    LoadLock,d1
  1021.         lib    Dos,CurrentDir
  1022.         move.l    d0,LoadOldLock
  1023.  
  1024.         bra    Load_OUT0.1        ;DEBUG (remove)
  1025.  
  1026.         move.l    AslReq,a2
  1027.         move.l    rf_File(a2),d1
  1028.         move.l    #MODE_OLDFILE,d2
  1029.         lib    Dos,Open
  1030.         move.l    d0,File1
  1031.         beq    Load_ERR1
  1032.  
  1033.         move.l    File1,d1
  1034.         lea.l    Buffer1,a0
  1035.         move.l    a0,d2
  1036.         move.l    #2,d3
  1037.         lib    Dos,Read
  1038.         cmp.l    #2,d0
  1039.         bne    Load_ERR2
  1040.  
  1041.         cmp.l    #'CDC1',Buffer1
  1042.         bne    Load_ERR3
  1043.  
  1044. ;Close file
  1045.  
  1046. Load_OUT0.1:    move.l    File1,d1
  1047.         beq    Load_OUT0.2
  1048.         lib    Dos,Close
  1049.         clr.l    File1
  1050.  
  1051. ;change back to dir where we started from and cleanup locks
  1052.  
  1053. Load_OUT0.2:    move.l    LoadOldLock,d1
  1054.         beq    Load_OUT0.3
  1055.         lib    Dos,CurrentDir
  1056.         clr.l    LoadOldLock
  1057. Load_OUT0.3:    move.l    LoadLock,d1
  1058.         beq    Load_OUT0.4
  1059.         lib    Dos,UnLock
  1060.         clr.l    LoadLock
  1061. Load_OUT0.4:
  1062.  
  1063. Load_OUT:    rts
  1064.  
  1065. Load_ERR1:    lea.l    File_ERRTxt1,a1
  1066.         bsr    DoAutoRequest
  1067.         bra    Load_OUT0.1
  1068.  
  1069. Load_ERR2:    lea.l    File_ERRTxt2,a1
  1070.         bsr    DoAutoRequest
  1071.         bra    Load_OUT0.1
  1072.  
  1073. Load_ERR3:    lea.l    File_ERRTxt3,a1
  1074.         bsr    DoAutoRequest
  1075.         bra    Load_OUT0.1
  1076.  
  1077. ;ADD! Add check if file already exists!
  1078.  
  1079. SaveAs:        move.l    AslReq,a0
  1080.         lea.l    SaveReqTags,a1
  1081.         lib    Asl,AslRequest
  1082.         tst.l    d0
  1083.         beq    Save_OUT
  1084.  
  1085. ;Don't forget to add CDing to correct directory!
  1086.  
  1087. Save:        move.l    AslReq,a2
  1088.         move.l    rf_File(a2),d1
  1089.         move.l    #MODE_NEWFILE,d2
  1090.         lib    Dos,Open
  1091.         move.l    d0,File1
  1092.         beq    Save_ERR1
  1093.  
  1094.         move.l    #'CDC1',Buffer1
  1095.  
  1096. Save_OUT:    move.l    File1,d1
  1097.         beq    Save_OUT1
  1098.         lib    Dos,Close
  1099.         clr.l    File1
  1100. Save_OUT1:    bra    Window1IDCMP
  1101.  
  1102. Save_ERR1:    lea.l    File_ERRTxt1,a1
  1103.         bsr    DoAutoRequest
  1104.         bra    Save_OUT1
  1105.  
  1106. Save_ERR2:    lea.l    File_ERRTxt2,a1
  1107.         bsr    DoAutoRequest
  1108.         bra    Save_OUT
  1109.  
  1110. About:        bsr    SleepPointer
  1111.         bsr    MenusOff
  1112.  
  1113.         lea.l    AboutTxt1,a1
  1114.         bsr    DoAutoRequest
  1115.  
  1116.         bsr    MenusOn
  1117.         bsr    NormalPointer
  1118.         bra    Window1IDCMP
  1119.  
  1120. NoMem1:        bsr    SleepPointer
  1121.         bsr    MenusOff
  1122.  
  1123.         lea.l    NoMemTxt1,a1
  1124.         bsr    DoAutoRequest
  1125.  
  1126.         bsr    MenusOn
  1127.         bsr    NormalPointer
  1128.         rts
  1129.  
  1130. NoCurrAlbum:    lea.l    NoCurrAlbumTxt1,a1
  1131.         bsr    DoAutoRequest
  1132.         bra    Window1IDCMP
  1133.  
  1134. Break:        lea.l    BreakText1,a0
  1135.         bsr    Printer
  1136.         move.l    #BREAK_QUIT,d2
  1137.         move.l    #-1,d0
  1138.         rts
  1139.  
  1140. PutChProc:    tst.b    d0
  1141.         beq    PutChProc_OUT
  1142.         move.b    d0,(a3)+
  1143. PutChProc_OUT:    rts
  1144.  
  1145. ShutDown:    bsr    KillMem1        ;Kill AlbumList
  1146.  
  1147. ShutDown7000:    tst.l    PubScreen
  1148.         beq    ShutDown6000
  1149.         sub.l    a0,a0
  1150.         move.l    PubScreen,a1
  1151.         lib    Intuition,UnlockPubScreen
  1152.  
  1153. ShutDown6000:    bsr    CloseWin4
  1154.         bsr    CloseWin2
  1155.         bsr    CloseWin3
  1156.         bsr    CloseWin1
  1157.         bsr    Clean2.0Magic
  1158.  
  1159. ShutDown5000:    move.l    RDArgs1,d1
  1160.         beq    ShutDown4600
  1161.         lib    Dos,FreeArgs
  1162.  
  1163. ShutDown4600:    tst.l    AslReq
  1164.         beq    ShutDown4500
  1165.         move.l    AslReq,a0
  1166.         lib    Asl,FreeFileRequest
  1167.  
  1168. ShutDown4500:    move.l    File1,d1
  1169.         beq    ShutDown4000
  1170.         lib    Dos,Close
  1171.  
  1172. ShutDown4000:    tst.l    NILFile
  1173.         beq    ShutDown3000
  1174.         move.l    NILFile,d1
  1175.         lib    Dos,Close
  1176.  
  1177. ShutDown3000:    tst.l    DiskObject
  1178.         beq    ShutDown2000
  1179.         move.l    DiskObject,a0
  1180.         lib    Icon,FreeDiskObject
  1181.  
  1182. ShutDown2000:    move.l    OldLock,d1
  1183.         beq    ShutDown1050
  1184.         lib    Dos,CurrentDir
  1185.  
  1186. ShutDown1050:    move.l    WBMsg,d2
  1187.         beq    ShutDown1000
  1188.         lib    Exec,Forbid
  1189.         move.l    d2,a1
  1190.         flib    Exec,ReplyMsg
  1191.  
  1192. ShutDown1000:    closlib    Icon
  1193.         closlib    Asl
  1194.         closlib    Utility
  1195.         closlib    Intuition
  1196.         closlib    GadTools
  1197.         closlib    Dos
  1198.         pull    d2-d7/a2-a6
  1199.         clr.l    d0
  1200.         rts
  1201.  
  1202. KillMem1:    clr.l    CurrentAlbum
  1203.         lea.l    AlbumList,a3        ;Get list
  1204.         IFEMPTY    a3,KillMem1_OUT        ;See if empty
  1205.  
  1206. ;ADD!!! bsr    KillMem2, which kills the tracklist for this album
  1207.  
  1208.         TSTNODE    a3,a2            ;Test and get next node
  1209.         beq    KillMem1_OUT        ;(We are at end of list)
  1210.         move.l    a2,a1            ;Get node
  1211.         REMOVE                ;Remove from list
  1212.  
  1213.         move.l    a2,a1            ;Get address of node
  1214.         move.l    #ALBUM_SIZE,d0        ;Get size
  1215.         lib    Exec,FreeMem        ;Free memory used
  1216.         bra    KillMem1        ;Do rest
  1217. KillMem1_OUT:    rts
  1218.  
  1219. ;CheckIDCMP gets messages from the keyboard (CTRL_C) and Intuition.
  1220.  
  1221. CheckIDCMP:    clr.l    d1            ;Set signals
  1222.         clr.l    d0
  1223.         move.l    WinPort,a2
  1224.         move.b    $0f(a2),d1
  1225.         bset.l    d1,d0
  1226.  
  1227.         bset.l    #SIGBREAKB_CTRL_C,d0    ;and CTRL_C
  1228.         lib    Exec,Wait
  1229.  
  1230.         cmp.l    #SIGBREAKF_CTRL_C,d0    ;If CTRL_C
  1231.         beq    Break            ;go break
  1232.  
  1233. C2GetMsg1:    move.l    WinPort,a0    
  1234.         lib    GadTools,GT_GetIMsg
  1235.         tst.l    d0
  1236.         beq    C2GetMsg2
  1237.     
  1238.         move.l    d0,a1 
  1239.         move.l    im_Class(a1),d2        ;answers with Class in d2,
  1240.         move.w    im_Code(a1),d3        ;Code in d3 and
  1241.         move.l    im_IDCMPWindow(a1),a3    ;IDCMPWindow in a3
  1242.         move.w    im_Qualifier(a1),a4    ;Qualifier in a4
  1243.         move.l    im_IAddress(a1),a5    ;IAddress in a5
  1244.         lib    GadTools,GT_ReplyIMsg
  1245.         bra    C2GetMsg1
  1246. C2GetMsg2:    move.l    #-1,d0
  1247.         rts
  1248.  
  1249. ;Newer MenuNull subroutine
  1250.  
  1251. MenuNull:    move.w    d3,d0
  1252.         and.w    #$1f,d0
  1253.         move.w    d0,d6
  1254.         move.w    d3,d0
  1255.         lsr.w    #5,d0
  1256.         move.w    d0,d1
  1257.         and.w    #$3f,d0
  1258.         move.w    d0,d5
  1259.         lsr.w    #6,d1
  1260.         move.w    d1,d4
  1261.         rts
  1262.  
  1263. SleepPointer:    move.l    Window1,a0
  1264.         lea.l    ClockPointer1,a1
  1265.         move.l    #16,d0
  1266.         move.l    #16,d1            ;WHAT-THE-HECK IS THIS FOR?
  1267.         move.l    #-6,d2
  1268.         move.l    #0,d3
  1269.         lib    Intuition,SetPointer
  1270.         rts
  1271.  
  1272. NormalPointer:    move.l    Window1,a0
  1273.         lib    Intuition,ClearPointer
  1274.         rts
  1275.  
  1276. List1Off:    move.l    ListGad1,a0
  1277.         move.l    Window1,a1
  1278.         sub.l    a2,a2
  1279.         lea.l    ListOffTags,a3
  1280.         lib    GadTools,GT_SetGadgetAttrsA
  1281.         rts
  1282.  
  1283. List1On:    move.l    ListGad1,a0
  1284.         move.l    Window1,a1
  1285.         sub.l    a2,a2
  1286.         lea.l    List1OnTags,a3
  1287.         lib    GadTools,GT_SetGadgetAttrsA
  1288.         rts
  1289.  
  1290. List2Off:    move.l    ListGad2,a0
  1291.         move.l    Window2,a1
  1292.         sub.l    a2,a2
  1293.         lea.l    ListOffTags,a3
  1294.         lib    GadTools,GT_SetGadgetAttrsA
  1295.         rts
  1296.  
  1297. List2On:    move.l    ListGad2,a0
  1298.         move.l    Window2,a1
  1299.         sub.l    a2,a2
  1300.         lea.l    List2OnTags,a3
  1301.         lib    GadTools,GT_SetGadgetAttrsA
  1302.         rts
  1303.  
  1304. RefreshList1:    move.l    ListGad1,a0
  1305.         move.l    Window1,a1
  1306.         sub.l    a2,a2
  1307.         move.l    #1,d0
  1308.         lib    Intuition,RefreshGList
  1309.         rts
  1310.  
  1311. RefreshList2:    move.l    ListGad2,a0
  1312.         move.l    Window2,a1
  1313.         sub.l    a2,a2
  1314.         move.l    #1,d0
  1315.         lib    Intuition,RefreshGList
  1316.         rts
  1317.  
  1318. MenusOn:    move.l    Window1,a0
  1319.         move.l    mlist,a1
  1320.         lib    Intuition,SetMenuStrip
  1321.         rts
  1322.  
  1323. MenusOff:    move.l    Window1,a0
  1324.         lib    Intuition,ClearMenuStrip
  1325.         rts
  1326.  
  1327. ;Lock PublicScreen
  1328.  
  1329. LockPubScr:    sub.l    a0,a0
  1330.         lib    Intuition,LockPubScreen
  1331.         move.l    d0,PubScreen
  1332.         beq    LockPubScr_OUT
  1333.  
  1334. ;Get some sizes
  1335.  
  1336.         move.l    PubScreen,a0
  1337.         move.b    sc_BarHeight(a0),d0
  1338.         add.b    #1,d0
  1339.         move.b    d0,BHeight+1
  1340.         move.w    BHeight,d5
  1341.         add.w    d5,SmallYSize
  1342.         add.w    d5,WinYSize
  1343.         add.w    d5,WinYSize2
  1344.         add.w    d5,WinYSize3
  1345.         add.w    d5,WinYSize4
  1346. LockPubScr_OUT:    rts
  1347.  
  1348. ;Open Windows
  1349.  
  1350. OpenWin1:    lea.l    NewWindow1,a0
  1351.         lea.l    Win1TagList,a1
  1352.         lib    Intuition,OpenWindowTagList
  1353.         move.l    d0,Window1
  1354.         beq    OpenWin1_ERR1
  1355.         move.l    Window1,a0
  1356.         move.l    wd_UserPort(a0),WinPort    ;Get window1's port
  1357.         move.l    mlist,a1
  1358.         lib    Intuition,SetMenuStrip
  1359.         move.l    Window1,a0
  1360.         sub.l    a1,a1
  1361.         lib    GadTools,GT_RefreshWindow
  1362.         move.l    #-1,d0
  1363.         rts
  1364. OpenWin1_ERR1:    clr.l    d0
  1365.         rts
  1366.  
  1367. OpenWin2:    lea.l    NewWindow2,a0
  1368.         lea.l    Win2TagList,a1
  1369.         lib    Intuition,OpenWindowTagList
  1370.         move.l    d0,Window2
  1371.         beq    OpenWin2_ERR1
  1372.         move.l    d0,a0
  1373.         move.l    Window1,a1
  1374.         move.l    wd_UserPort(a1),wd_UserPort(a0)
  1375.         move.l    #CLOSEWINDOW!VANILLAKEY!GADGETUP,d0
  1376.         lib    Intuition,ModifyIDCMP
  1377.         move.l    Window2,a0
  1378.         sub.l    a1,a1
  1379.         lib    GadTools,GT_RefreshWindow
  1380.         move.l    #-1,d0
  1381.         rts
  1382. OpenWin2_ERR1:    clr.l    d0
  1383.         rts
  1384.  
  1385. OpenWin3:    lea.l    NewWindow3,a0
  1386.         lea.l    Win3TagList,a1
  1387.         lib    Intuition,OpenWindowTagList
  1388.         move.l    d0,Window3
  1389.         beq    OpenWin2_ERR1
  1390.         move.l    d0,a0
  1391.         move.l    Window1,a1
  1392.         move.l    wd_UserPort(a1),wd_UserPort(a0)
  1393.         move.l    #CLOSEWINDOW!VANILLAKEY!GADGETUP,d0
  1394.         lib    Intuition,ModifyIDCMP
  1395.         move.l    Window3,a0
  1396.         sub.l    a1,a1
  1397.         lib    GadTools,GT_RefreshWindow
  1398.         move.l    #-1,d0
  1399.         rts
  1400. OpenWin3_ERR1:    clr.l    d0
  1401.         rts
  1402.  
  1403. OpenWin4:    lea.l    NewWindow4,a0
  1404.         lea.l    Win2TagList,a1
  1405.         lib    Intuition,OpenWindowTagList
  1406.         move.l    d0,Window4
  1407.         beq    OpenWin2_ERR1
  1408.         move.l    d0,a0
  1409.         move.l    Window1,a1
  1410.         move.l    wd_UserPort(a1),wd_UserPort(a0)
  1411.         move.l    #CLOSEWINDOW!VANILLAKEY!GADGETUP,d0
  1412.         lib    Intuition,ModifyIDCMP
  1413.         move.l    Window4,a0
  1414.         sub.l    a1,a1
  1415.         lib    GadTools,GT_RefreshWindow
  1416.         move.l    #-1,d0
  1417.         rts
  1418. OpenWin4_ERR1:    clr.l    d0
  1419.         rts
  1420.  
  1421. ;Window closers
  1422.  
  1423. CloseWin1:    tst.l    Window1
  1424.         beq    CloseWin1_OUT
  1425.         move.l    Window1,a0
  1426.         lib    Intuition,ClearMenuStrip
  1427.         move.l    Window1,a3
  1428.         clr.l    d5
  1429.         bsr    ClearMSGs
  1430. CloseWin1_OUT:    clr.l    Window1
  1431.         clr.l    WinPort
  1432.         rts
  1433.  
  1434. CloseWin2:    tst.l    Window2
  1435.         beq    CloseWin2_OUT
  1436.         move.l    Window2,a3
  1437.         move.l    #-1,d5
  1438.         bsr    ClearMSGs
  1439. CloseWin2_OUT:    clr.l    Window2
  1440.         rts
  1441.  
  1442. CloseWin3:    tst.l    Window3
  1443.         beq    CloseWin3_OUT
  1444.         move.l    Window3,a3
  1445.         move.l    #-1,d5
  1446.         bsr    ClearMSGs
  1447. CloseWin3_OUT:    clr.l    Window3
  1448.         rts
  1449.  
  1450. CloseWin4:    tst.l    Window4
  1451.         beq    CloseWin4_OUT
  1452.         move.l    Window4,a3
  1453.         move.l    #-1,d5
  1454.         bsr    ClearMSGs
  1455. CloseWin4_OUT:    clr.l    Window4
  1456.         rts
  1457.  
  1458. ;ClearMsgs subroutine
  1459.  
  1460. ;a3 = window structure
  1461.  
  1462. ClearMSGs:    push    a2-a6
  1463.         lib    Exec,Forbid
  1464.         move.l    wd_UserPort(a3),a2
  1465.  
  1466. ClearMsgs1:    move.l    a2,a0
  1467.         lib    Exec,GetMsg
  1468.         tst.l    d0
  1469.         beq    ClearMsgs2
  1470.  
  1471.         move.l    d0,a1
  1472.         lib    Exec,ReplyMsg
  1473.         bra    ClearMsgs1
  1474.  
  1475. ClearMsgs2:    tst.l    d5
  1476.         beq    ClearMsgs3
  1477.         clr.l    wd_UserPort(a3)
  1478.  
  1479. ClearMsgs3:    move.l    a3,a0
  1480.         clr.l    d0
  1481.         lib    Intuition,ModifyIDCMP
  1482.         lib    Exec,Permit
  1483.  
  1484.         move.l    a3,a0
  1485.         lib    Intuition,CloseWindow
  1486.         pull    a2-a6
  1487.         rts
  1488.  
  1489. ;Get length of text in given address
  1490. ;
  1491. ;Input a0 = Address of null terminated text string
  1492. ;        Includes NULL.
  1493. ;
  1494. ;Result d0 = Length
  1495.  
  1496. GetLength:    push    a0
  1497.         clr.l    d0
  1498.         cmp.l    #$00,a0        ;fixes enforcer hit
  1499.         beq    GetLength_OUT
  1500. GetLength2:    add.l    #1,d0
  1501.         tst.b    (a0)+
  1502.         bne    GetLength2
  1503. GetLength_OUT:    pull    a0
  1504.         rts
  1505.  
  1506. ConvASCII:    clr.l    d0
  1507.         clr.l    d1
  1508.         cmp.b    #' ',(a0)
  1509.         bne    ConvASCII2
  1510.         add.l    #1,a0
  1511. ConvASCII2:    move.b    (a0),d1
  1512.         cmp.b    #'0',d1
  1513.         bcs    ConvASCII_OUT
  1514.         cmp.b    #'9',d1
  1515.         bhi    ConvASCII_OUT
  1516.         sub.b    #'0',d1
  1517.         push    d1/a0
  1518.         move.l    #10,d1
  1519.         lib    Utility,UMult32
  1520.         pull    d1/a0
  1521.         add.l    d1,d0
  1522.         add.l    #1,a0
  1523.         bra    ConvASCII2
  1524. ConvASCII_OUT:    rts
  1525.  
  1526. Clean2.0Magic:    tst.b    GadMagic
  1527.         beq    Clean2.0M1
  1528.         move.l    glist,a0
  1529.         lib    GadTools,FreeGadgets
  1530.  
  1531. Clean2.0M1:    tst.b    GadMagic2
  1532.         beq    Clean2.0M1.1
  1533.         move.l    glist2,a0
  1534.         lib    GadTools,FreeGadgets
  1535.  
  1536. Clean2.0M1.1:    tst.b    GadMagic3
  1537.         beq    Clean2.0M1.2
  1538.         move.l    glist3,a0
  1539.         lib    GadTools,FreeGadgets
  1540.  
  1541. Clean2.0M1.2:    tst.b    GadMagic4
  1542.         beq    Clean2.0M2
  1543.         move.l    glist4,a0
  1544.         lib    GadTools,FreeGadgets
  1545.  
  1546. Clean2.0M2:    tst.b    MenuMagic
  1547.         beq    Clean2.0M3
  1548.         move.l    mlist,a0
  1549.         lib    GadTools,FreeMenus
  1550.  
  1551. Clean2.0M3:    tst.l    vi
  1552.         beq    Clean2.0_OUT
  1553.         move.l    vi,a0
  1554.         lib    GadTools,FreeVisualInfo
  1555.  
  1556. Clean2.0_OUT:    rts
  1557.  
  1558. ;Error etc. messages
  1559.  
  1560. NoDos:        pull    d2-d7/a2-a6
  1561.         move.l    #RETURN_FAIL,d0
  1562.         rts
  1563.  
  1564. NoRDArgs:    lib    Dos,IoErr
  1565.         move.l    d0,d1
  1566.         clr.l    d2
  1567.         lib    Dos,PrintFault
  1568.         bra    ShutDown
  1569.  
  1570. NoInt:        lea.l    NoIntText1,a0
  1571.         bsr    Printer
  1572.         bra    ShutDown
  1573.  
  1574. NoUtility:    add.l    #8,sp
  1575.         lea.l    NoUtilityText1,a0
  1576.         bsr    Printer
  1577.         bra    ShutDown
  1578.  
  1579. NoGadTools:    lea.l    NoGTText1,a0
  1580.         bsr    Printer
  1581.         bra    ShutDown
  1582.  
  1583. NoAsl:        lea.l    NoAslText1,a0
  1584.         bsr    Printer
  1585.         bra    ShutDown
  1586.  
  1587. NoAslReq:    lea.l    NoAslReqText1,a0
  1588.         bsr    Printer
  1589.         bra    ShutDown
  1590.  
  1591. NoNIL:        lea.l    NoNILText1,a0
  1592.         bsr    Printer
  1593.         bra    ShutDown
  1594.  
  1595. NoIcon:        lea.l    NoIconText1,a0
  1596.         bsr    Printer
  1597.         bra    ShutDown
  1598.  
  1599. NoPubScreen:    lea.l    NoPubScrText1,a0
  1600.         bsr    Printer
  1601.         bra    ShutDown
  1602.  
  1603. NoWindow1:    lea.l    NoWindowText1,a0
  1604.         bsr    Printer
  1605.         bra    ShutDown
  1606.  
  1607. NoContextGad:    lea.l    NoContextText1,a0
  1608.         bsr    Printer
  1609.         bra    ShutDown
  1610.  
  1611. NoMenus:    lea.l    NoMenusText1,a0
  1612.         bsr    Printer
  1613.         bra    ShutDown
  1614.  
  1615. Printer:    printa    a0,_stdout
  1616.         rts
  1617.  
  1618. DoAutoRequest:    move.l    #$00,a2        ;positive text
  1619.         lea.l    OKTxt,a3    ;a bit the wrong way around but...
  1620.         move.l    #$00,d0
  1621.         move.l    #$00,d1
  1622.         move.l    #$00,d2
  1623.         move.l    #$00,d3
  1624.         move.l    Window1,a0
  1625.         lib    Intuition,AutoRequest
  1626.         rts
  1627.  
  1628.         ds.l    0
  1629.  
  1630. ;Reservations
  1631.  
  1632.         libnames
  1633.  
  1634. ;Options
  1635.  
  1636. CLArray1:
  1637. FromFile:    dc.l    0
  1638.  
  1639. ;ASL Stuff
  1640.  
  1641. AslReq:        dc.l    0
  1642.  
  1643. ;GadTools stuff
  1644.  
  1645. vi:        dc.l    0        ;Visual Info
  1646. mlist:        dc.l    0
  1647. ContextGad2:    dc.l    0
  1648. ContextGad3:    dc.l    0
  1649. ContextGad4:    dc.l    0
  1650. ContextGad5:    dc.l    0
  1651. GadMagic:    dc.b    0
  1652. GadMagic2:    dc.b    0
  1653. GadMagic3:    dc.b    0
  1654. GadMagic4:    dc.b    0
  1655. MenuMagic:    dc.b    0
  1656. KLUDGE:        dc.b    0
  1657.  
  1658. ;Gadgets
  1659.  
  1660. ;Window1 Gadgets
  1661.  
  1662. AddGad1:    dc.l    0
  1663. RemoveGad1:    dc.l    0
  1664. EditGad1:    dc.l    0
  1665. TracksGad1:    dc.l    0
  1666.  
  1667. ListGad1:    dc.l    0
  1668.  
  1669. TopGad1:    dc.l    0
  1670. UpGad1:        dc.l    0
  1671. DownGad1:    dc.l    0
  1672. BottomGad1:    dc.l    0
  1673. SortGad1:    dc.l    0
  1674.  
  1675. TotalGad1:    dc.l    0
  1676.  
  1677. ;Window2 Gadgets
  1678.  
  1679. AddGad2:    dc.l    0
  1680. RemoveGad2:    dc.l    0
  1681. EditGad2:    dc.l    0
  1682.  
  1683. ListGad2:    dc.l    0
  1684.  
  1685. TopGad2:    dc.l    0
  1686. UpGad2:        dc.l    0
  1687. DownGad2:    dc.l    0
  1688. BottomGad2:    dc.l    0
  1689. SortGad2:    dc.l    0
  1690.  
  1691. TotalGad2:    dc.l    0
  1692.  
  1693. ;Window3 Gadgets
  1694.  
  1695. AlbumGad1:    dc.l    0
  1696. AlbumGadBuf1:    dc.l    0
  1697. ArtistGad1:    dc.l    0
  1698. ArtistGadBuf1:    dc.l    0
  1699.  
  1700. OKGad1:        dc.l    0
  1701. CancelGad1:    dc.l    0
  1702.  
  1703. ;Window4 Gadgets
  1704.  
  1705. TrackGad1:    dc.l    0
  1706. TrackGadBuf1:    dc.l    0
  1707. MinutesGad1:    dc.l    0
  1708. MinutesGadBuf1:    dc.l    0
  1709. SecondsGad1:    dc.l    0
  1710. SecondsGadBuf1:    dc.l    0
  1711.  
  1712. OKGad2:        dc.l    0
  1713. CancelGad2:    dc.l    0
  1714.  
  1715. ;display stuff
  1716.  
  1717. PubScreen:    dc.l    0
  1718. Window1:    dc.l    0
  1719. WinPort:    dc.l    0
  1720. Window2:    dc.l    0
  1721. Window3:    dc.l    0
  1722. Window4:    dc.l    0
  1723. BHeight:    dc.w    0
  1724.  
  1725. ;File stuff
  1726.  
  1727. File1:        dc.l    0
  1728. NILFile:    dc.l    0
  1729. _stdout:    dc.l    0
  1730. LoadLock:    dc.l    0
  1731. LoadOldLock:    dc.l    0
  1732.  
  1733. ;Other stuff, part I
  1734.  
  1735. OurTask:    dc.l    0
  1736. WBMsg:        dc.l    0
  1737. DiskObject:    dc.l    0
  1738. OldLock:    dc.l    0
  1739. RDArgs1:    dc.l    0
  1740. CurrentAlbum:    dc.l    0
  1741. CurrentTrack:    dc.l    0
  1742.  
  1743. ;Strings, error
  1744.  
  1745. BreakText1:    dc.b    "***Break",13,10,0
  1746. NoIntText1:    dc.b    "ERROR: Couldn't open intuition.library!",13,10,0
  1747. NoUtilityText1:    dc.b    "ERROR: Couldn't open utility.library!",13,10,0
  1748. NoIconText1:    dc.b    "ERROR: Couldn't open icon.library!",13,10,0
  1749. NoGTText1:    dc.b    "ERROR: Couldn't open gadtools.library!",13,10,0
  1750. NoAslText1:    dc.b    "ERROR: Couldn't open asl.library!",13,10,0
  1751. NoAslReqText1:    dc.b    "ERROR: Couldn't allocate ASL requester!",13,10,0
  1752. NoNILText1:    dc.b    "ERROR: Couldn't open device NIL:!",13,10,0
  1753. NoPubScrText1:    dc.b    "ERROR: Couldn't lock PublicScreen",13,10,0
  1754. NoContextText1:    dc.b    "ERROR: Couldn't create context gadget",13,10,0
  1755. NoMenusText1:    dc.b    "ERROR: Couldn't allocate menus structure",13,10,0
  1756. NoWindowText1:    dc.b    "ERROR: Couldn't open Window",13,10,0
  1757. NoMemText1:    dc.b    "ERROR: Out of memory!",0
  1758. File_ERRText1:    dc.b    "Couldn't open file!",0
  1759. File_ERRText2:    dc.b    "File error!",0
  1760. File_ERRText3:    dc.b    "Incorrect file type!",0
  1761. NoCurrAlbumText1: dc.b    "Please select album!",0
  1762.  
  1763. ;Strings, names
  1764.  
  1765. CLTemplate1:    dc.b    "FROM",0
  1766.         dc.b    "$VER: CD-Catalog (X.X.93) (C)opyright Tomi Blinnikka 1993",0
  1767. OKText1:    dc.b    "OK",0
  1768. NILName:    dc.b    "NIL:",0
  1769. DEVICEText1:    dc.b    "DEVICE",0
  1770. UNITText1:    dc.b    "UNIT",0
  1771. ICONIFYText1:    dc.b    "ICONIFY",0
  1772. YESText1:    dc.b    "YES",0
  1773. AboutText1:    dc.b    "Name   : CD-Catalog",0
  1774. AboutText2:    dc.b    "Version: 1.00",0
  1775. AboutText3:    dc.b    "Author : Tomi Blinnikka",0
  1776. AboutText4:    dc.b    "   (C)opyright  1993",0
  1777. CDCName1:    dc.b    "CD-Catalog",0
  1778. Win2Text1:    dc.b    "Tracks",0
  1779. Win3Text1:    dc.b    "Edit Album",0
  1780. Win4Text1:    dc.b    "Edit Track",0
  1781. LoadText1:    dc.b    "Load CD-Catalog",0
  1782. SaveText1:    dc.b    "Save CD-Catalog",0
  1783. fstrl:        dc.b    "%10.ld",0
  1784. NewText1:    dc.b    "New album",0
  1785.  
  1786.         ds.w    0
  1787.  
  1788. ;New screen & new window structures
  1789.  
  1790. ;Window 1 Album list etc.
  1791.  
  1792. NewWindow1:    dc.w    0,11            ;X,Y POS
  1793.         dc.w    551            ;WIDTH
  1794. WinYSize:    dc.w    120            ;HEIGHT
  1795.         dc.b    0,1            ;PENS
  1796.         dc.l    REFRESHWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!LISTVIEWIDCMP    ;IDCMP FLAGS
  1797.         dc.l    WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  1798.         dc.l    0,0            ;GADGETS, CHECKMARK
  1799.         dc.l    CDCName1        ;TITLE
  1800.         dc.l    0            ;SCREEN ADDRESS
  1801.         dc.l    0            ;BITMAP            
  1802.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  1803.         dc.w    PUBLICSCREEN        ;TYPE
  1804.  
  1805. Win1TagList:    dc.l    WA_AutoAdjust,TRUE
  1806.         dc.l    WA_Zoom,ZoomXY
  1807.         dc.l    TAG_DONE,0
  1808.  
  1809. ZoomXY:
  1810. SmallXPos:    dc.w    10
  1811. SmallYPos:    dc.w    21
  1812. SmallXSize:    dc.w    222
  1813. SmallYSize:    dc.w    0
  1814.  
  1815. ;Window 2 Track list etc.
  1816.  
  1817. NewWindow2:    dc.w    39,33            ;X,Y POS
  1818.         dc.w    551            ;WIDTH
  1819. WinYSize2:    dc.w    120            ;HEIGHT
  1820.         dc.b    0,1            ;PENS
  1821.         dc.l    0            ;IDCMP FLAGS
  1822.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  1823.         dc.l    0,0            ;GADGETS, CHECKMARK
  1824.         dc.l    Win2Text1        ;TITLE
  1825.         dc.l    0            ;SCREEN ADDRESS
  1826.         dc.l    0            ;BITMAP            
  1827.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  1828.         dc.w    PUBLICSCREEN        ;TYPE
  1829.  
  1830. Win2TagList:    dc.l    WA_AutoAdjust,TRUE
  1831.         dc.l    TAG_DONE,0
  1832.  
  1833. ;Edit Album window
  1834.  
  1835. NewWindow3:    dc.w    19,22            ;X,Y POS
  1836.         dc.w    495            ;WIDTH
  1837. WinYSize3:    dc.w    60            ;HEIGHT
  1838.         dc.b    0,1            ;PENS
  1839.         dc.l    0            ;IDCMP FLAGS
  1840.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  1841.         dc.l    0,0            ;GADGETS, CHECKMARK
  1842.         dc.l    Win3Text1        ;TITLE
  1843.         dc.l    0            ;SCREEN ADDRESS
  1844.         dc.l    0            ;BITMAP            
  1845.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  1846.         dc.w    PUBLICSCREEN        ;TYPE
  1847.  
  1848. Win3TagList:    dc.l    WA_AutoAdjust,TRUE
  1849.         dc.l    TAG_DONE,0
  1850.  
  1851. ;Edit Track window
  1852.  
  1853. NewWindow4:    dc.w    59,44            ;X,Y POS
  1854.         dc.w    495            ;WIDTH
  1855. WinYSize4:    dc.w    60            ;HEIGHT
  1856.         dc.b    0,1            ;PENS
  1857.         dc.l    0            ;IDCMP FLAGS
  1858.         dc.l    SMART_REFRESH!WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  1859.         dc.l    0,0            ;GADGETS, CHECKMARK
  1860.         dc.l    Win4Text1        ;TITLE
  1861.         dc.l    0            ;SCREEN ADDRESS
  1862.         dc.l    0            ;BITMAP            
  1863.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  1864.         dc.w    PUBLICSCREEN        ;TYPE
  1865.  
  1866. Win4TagList:    dc.l    WA_AutoAdjust,TRUE
  1867.         dc.l    TAG_DONE,0
  1868.  
  1869. ;Fonts
  1870.  
  1871. Topaz:        dc.l    TopazName
  1872.         dc.w    8
  1873.         dc.b    0
  1874.         dc.b    0
  1875. TopazName:    dc.b    "topaz.font",0
  1876.         ds.l    0
  1877.  
  1878. AslReqTags:    dc.l    ASL_Window
  1879.         dc.l    0            ;Move window pointer here!
  1880.         dc.l    TAG_DONE,0
  1881. LoadReqTags:    dc.l    ASL_Hail,LoadText1
  1882.         dc.l    ASL_FuncFlags,0
  1883.         dc.l    TAG_DONE,0
  1884. SaveReqTags:    dc.l    ASL_Hail,SaveText1
  1885.         dc.l    ASL_FuncFlags,FILF_SAVE
  1886.         dc.l    TAG_DONE,0
  1887.  
  1888. ;ITextStructures
  1889.  
  1890. OKTxt:        dc.b    1,2            ;PENS
  1891.         dc.w    0            ;MODE
  1892.         dc.w    6,3            ;LEFT+TOPEDGE
  1893.         dc.l    0            ;FONT
  1894.         dc.l    OKText1            ;TEXT
  1895.         dc.l    0            ;NEXTTEXT
  1896.  
  1897. File_ERRTxt1:    dc.b    1,2            ;PENS
  1898.         dc.w    0            ;MODE
  1899.         dc.w    10,10            ;LEFT+TOPEDGE
  1900.         dc.l    0            ;FONT
  1901.         dc.l    File_ERRText1        ;TEXT
  1902.         dc.l    0            ;NEXTTEXT
  1903.  
  1904. File_ERRTxt2:    dc.b    1,2            ;PENS
  1905.         dc.w    0            ;MODE
  1906.         dc.w    10,10            ;LEFT+TOPEDGE
  1907.         dc.l    0            ;FONT
  1908.         dc.l    File_ERRText2        ;TEXT
  1909.         dc.l    0            ;NEXTTEXT
  1910.  
  1911. File_ERRTxt3:    dc.b    1,2            ;PENS
  1912.         dc.w    0            ;MODE
  1913.         dc.w    10,10            ;LEFT+TOPEDGE
  1914.         dc.l    0            ;FONT
  1915.         dc.l    File_ERRText3        ;TEXT
  1916.         dc.l    0            ;NEXTTEXT
  1917.  
  1918. AboutTxt1:    dc.b    1,2            ;PENS
  1919.         dc.w    0            ;MODE
  1920.         dc.w    0,0            ;LEFT+TOPEDGE
  1921.         dc.l    Topaz            ;FONT
  1922.         dc.l    AboutText1        ;TEXT
  1923.         dc.l    AboutTxt2        ;NEXTTEXT
  1924.  
  1925. AboutTxt2:    dc.b    1,2            ;PENS
  1926.         dc.w    0            ;MODE
  1927.         dc.w    0,10            ;LEFT+TOPEDGE
  1928.         dc.l    Topaz            ;FONT
  1929.         dc.l    AboutText2        ;TEXT
  1930.         dc.l    AboutTxt3        ;NEXTTEXT
  1931.  
  1932. AboutTxt3:    dc.b    1,2            ;PENS
  1933.         dc.w    0            ;MODE
  1934.         dc.w    0,20            ;LEFT+TOPEDGE
  1935.         dc.l    Topaz            ;FONT
  1936.         dc.l    AboutText3        ;TEXT
  1937.         dc.l    AboutTxt4        ;NEXTTEXT
  1938.  
  1939. AboutTxt4:    dc.b    1,2            ;PENS
  1940.         dc.w    0            ;MODE
  1941.         dc.w    0,30            ;LEFT+TOPEDGE
  1942.         dc.l    Topaz            ;FONT
  1943.         dc.l    AboutText4        ;TEXT
  1944.         dc.l    0 ;AboutTxt5        ;NEXTTEXT
  1945.  
  1946. NoCurrAlbumTxt1: dc.b    1,2            ;PENS
  1947.         dc.w    0            ;MODE
  1948.         dc.w    0,10            ;LEFT+TOPEDGE
  1949.         dc.l    Topaz            ;FONT
  1950.         dc.l    NoCurrAlbumText1    ;TEXT
  1951.         dc.l    0             ;NEXTTEXT
  1952.  
  1953. ;Gadgets
  1954.  
  1955. AddGadText1:    dc.b    "_Add",0
  1956. RemoveGadText1:    dc.b    "_Remove",0
  1957. EditGadText1:    dc.b    "_Edit",0
  1958. TracksGadText1:    dc.b    "_Tracks",0
  1959.  
  1960. ListGadText1:    dc.b    "Albums",0
  1961. ListGadText2:    dc.b    "Tracks",0
  1962.  
  1963. TopGadText1:    dc.b    "T_op",0
  1964. UpGadText1:    dc.b    "_Up",0
  1965. DownGadText1:    dc.b    "_Down",0
  1966. BottomGadText1:    dc.b    "_Bottom",0
  1967. SortGadText1:    dc.b    "_Sort",0
  1968.  
  1969. TotalGadText1:    dc.b    "Total:",0
  1970.  
  1971.         ds.l    0
  1972.  
  1973. glist:        dcb.b    gg_SIZEOF,0
  1974. glist2:        dcb.b    gg_SIZEOF,0
  1975. glist3:        dcb.b    gg_SIZEOF,0
  1976. glist4:        dcb.b    gg_SIZEOF,0
  1977.  
  1978. NGAddGad:    dc.w    10        ;gng_LeftEdge
  1979.         dc.w    OptionTop2+0*(12+INTERHEIGHT)    ;gng_TopEdge
  1980.         dc.w    60        ;gng_Width
  1981.         dc.w    12        ;gng_Height
  1982.         dc.l    AddGadText1    ;gng_GadgetText
  1983.         dc.l    Topaz        ;gng_TextAttr
  1984.         dc.w    10        ;gng_GadgetID
  1985.         dc.l    PLACETEXT_IN    ;gng_Flags
  1986.         dc.l    0        ;gng_VisualInfo
  1987.         dc.l    0        ;gng_UserData
  1988.  
  1989. NGRemoveGad:    dc.w    10        ;gng_LeftEdge
  1990.         dc.w    OptionTop2+1*(12+INTERHEIGHT)    ;gng_TopEdge
  1991.         dc.w    60        ;gng_Width
  1992.         dc.w    12        ;gng_Height
  1993.         dc.l    RemoveGadText1    ;gng_GadgetText
  1994.         dc.l    Topaz        ;gng_TextAttr
  1995.         dc.w    11        ;gng_GadgetID
  1996.         dc.l    PLACETEXT_IN    ;gng_Flags
  1997.         dc.l    0        ;gng_VisualInfo
  1998.         dc.l    0        ;gng_UserData
  1999.  
  2000. NGEditGad:    dc.w    10        ;gng_LeftEdge
  2001.         dc.w    OptionTop2+2*(12+INTERHEIGHT)    ;gng_TopEdge
  2002.         dc.w    60        ;gng_Width
  2003.         dc.w    12        ;gng_Height
  2004.         dc.l    EditGadText1    ;gng_GadgetText
  2005.         dc.l    Topaz        ;gng_TextAttr
  2006.         dc.w    12        ;gng_GadgetID
  2007.         dc.l    PLACETEXT_IN    ;gng_Flags
  2008.         dc.l    0        ;gng_VisualInfo
  2009.         dc.l    0        ;gng_UserData
  2010.  
  2011. NGTracksGad:    dc.w    10        ;gng_LeftEdge
  2012.         dc.w    OptionTop2+3*(12+INTERHEIGHT)    ;gng_TopEdge
  2013.         dc.w    60        ;gng_Width
  2014.         dc.w    12        ;gng_Height
  2015.         dc.l    TracksGadText1    ;gng_GadgetText
  2016.         dc.l    Topaz        ;gng_TextAttr
  2017.         dc.w    13        ;gng_GadgetID
  2018.         dc.l    PLACETEXT_IN    ;gng_Flags
  2019.         dc.l    0        ;gng_VisualInfo
  2020.         dc.l    0        ;gng_UserData
  2021.  
  2022. NGListGad:    dc.w    76        ;gng_LeftEdge
  2023.         dc.w    ListTop        ;gng_TopEdge
  2024.         dc.w    400        ;gng_Width
  2025.         dc.w    90        ;gng_Height
  2026.         dc.l    ListGadText1    ;gng_GadgetText
  2027.         dc.l    Topaz        ;gng_TextAttr
  2028.         dc.w    0        ;gng_GadgetID
  2029.         dc.l    PLACETEXT_ABOVE    ;gng_Flags
  2030.         dc.l    0        ;gng_VisualInfo
  2031.         dc.l    0        ;gng_UserData
  2032.  
  2033. NGTopGad:    dc.w    482        ;gng_LeftEdge
  2034.         dc.w    OptionTop3+0*(12+INTERHEIGHT)    ;gng_TopEdge
  2035.         dc.w    60        ;gng_Width
  2036.         dc.w    12        ;gng_Height
  2037.         dc.l    TopGadText1    ;gng_GadgetText
  2038.         dc.l    Topaz        ;gng_TextAttr
  2039.         dc.w    14        ;gng_GadgetID
  2040.         dc.l    PLACETEXT_IN    ;gng_Flags
  2041.         dc.l    0        ;gng_VisualInfo
  2042.         dc.l    0        ;gng_UserData
  2043.  
  2044. NGUpGad:    dc.w    482        ;gng_LeftEdge
  2045.         dc.w    OptionTop3+1*(12+INTERHEIGHT)    ;gng_TopEdge
  2046.         dc.w    60        ;gng_Width
  2047.         dc.w    12        ;gng_Height
  2048.         dc.l    UpGadText1    ;gng_GadgetText
  2049.         dc.l    Topaz        ;gng_TextAttr
  2050.         dc.w    15        ;gng_GadgetID
  2051.         dc.l    PLACETEXT_IN    ;gng_Flags
  2052.         dc.l    0        ;gng_VisualInfo
  2053.         dc.l    0        ;gng_UserData
  2054.  
  2055. NGDownGad:    dc.w    482        ;gng_LeftEdge
  2056.         dc.w    OptionTop3+2*(12+INTERHEIGHT)    ;gng_TopEdge
  2057.         dc.w    60        ;gng_Width
  2058.         dc.w    12        ;gng_Height
  2059.         dc.l    DownGadText1    ;gng_GadgetText
  2060.         dc.l    Topaz        ;gng_TextAttr
  2061.         dc.w    16        ;gng_GadgetID
  2062.         dc.l    PLACETEXT_IN    ;gng_Flags
  2063.         dc.l    0        ;gng_VisualInfo
  2064.         dc.l    0        ;gng_UserData
  2065.  
  2066. NGBottomGad:    dc.w    482        ;gng_LeftEdge
  2067.         dc.w    OptionTop3+3*(12+INTERHEIGHT)    ;gng_TopEdge
  2068.         dc.w    60        ;gng_Width
  2069.         dc.w    12        ;gng_Height
  2070.         dc.l    BottomGadText1    ;gng_GadgetText
  2071.         dc.l    Topaz        ;gng_TextAttr
  2072.         dc.w    17        ;gng_GadgetID
  2073.         dc.l    PLACETEXT_IN    ;gng_Flags
  2074.         dc.l    0        ;gng_VisualInfo
  2075.         dc.l    0        ;gng_UserData
  2076.  
  2077. NGSortGad:    dc.w    482        ;gng_LeftEdge
  2078.         dc.w    OptionTop3+4*(12+INTERHEIGHT)    ;gng_TopEdge
  2079.         dc.w    60        ;gng_Width
  2080.         dc.w    12        ;gng_Height
  2081.         dc.l    SortGadText1    ;gng_GadgetText
  2082.         dc.l    Topaz        ;gng_TextAttr
  2083.         dc.w    18        ;gng_GadgetID
  2084.         dc.l    PLACETEXT_IN    ;gng_Flags
  2085.         dc.l    0        ;gng_VisualInfo
  2086.         dc.l    0        ;gng_UserData
  2087.  
  2088. NGTotalGad:    dc.w    76        ;gng_LeftEdge
  2089.         dc.w    ListTop+80    ;gng_TopEdge
  2090.         dc.w    50        ;gng_Width
  2091.         dc.w    12        ;gng_Height
  2092.         dc.l    TotalGadText1    ;gng_GadgetText
  2093.         dc.l    Topaz        ;gng_TextAttr
  2094.         dc.w    0        ;gng_GadgetID
  2095.         dc.l    PLACETEXT_LEFT    ;gng_Flags
  2096.         dc.l    0        ;gng_VisualInfo
  2097.         dc.l    0        ;gng_UserData
  2098.  
  2099. ;Window3 (and up) gadgets
  2100.  
  2101. AlbumGadText1: dc.b    "Album",0
  2102. ArtistGadText1: dc.b    "Artist",0
  2103. OKGadText1:    dc.b    "_OK",0
  2104. CancelGadText1:    dc.b    "_Cancel",0
  2105.  
  2106.         ds.l    0
  2107.  
  2108. NGAlbumStrGad1:    dc.w    75        ;gng_LeftEdge
  2109.         dc.w    StrTop+0*(12+INTERHEIGHT)    ;gng_TopEdge
  2110.         dc.w    400        ;gng_Width
  2111.         dc.w    12        ;gng_Height
  2112.         dc.l    AlbumGadText1    ;gng_GadgetText
  2113.         dc.l    Topaz        ;gng_TextAttr
  2114.         dc.w    81        ;gng_GadgetID
  2115.         dc.l    PLACETEXT_LEFT    ;gng_Flags
  2116.         dc.l    0        ;gng_VisualInfo
  2117.         dc.l    0        ;gng_UserData
  2118.  
  2119. NGArtistGad1:    dc.w    75        ;gng_LeftEdge
  2120.         dc.w    StrTop+1*(12+INTERHEIGHT)    ;gng_TopEdge
  2121.         dc.w    400        ;gng_Width
  2122.         dc.w    12        ;gng_Height
  2123.         dc.l    ArtistGadText1    ;gng_GadgetText
  2124.         dc.l    Topaz        ;gng_TextAttr
  2125.         dc.w    82        ;gng_GadgetID
  2126.         dc.l    PLACETEXT_LEFT    ;gng_Flags
  2127.         dc.l    0        ;gng_VisualInfo
  2128.         dc.l    0        ;gng_UserData
  2129.  
  2130. NGOKGad:    dc.w    INTERWIDTH    ;gng_LeftEdge
  2131.         dc.w    -28        ;gng_TopEdge
  2132.         dc.w    60        ;gng_Width
  2133.         dc.w    12        ;gng_Height
  2134.         dc.l    OKGadText1    ;gng_GadgetText
  2135.         dc.l    Topaz        ;gng_TextAttr
  2136.         dc.w    90        ;gng_GadgetID
  2137.         dc.l    PLACETEXT_IN    ;gng_Flags
  2138.         dc.l    0        ;gng_VisualInfo
  2139.         dc.l    0        ;gng_UserData
  2140.  
  2141. NGCancelGad:    dc.w    -60-INTERWIDTH    ;gng_LeftEdge
  2142.         dc.w    -28        ;gng_TopEdge
  2143.         dc.w    60        ;gng_Width
  2144.         dc.w    12        ;gng_Height
  2145.         dc.l    CancelGadText1    ;gng_GadgetText
  2146.         dc.l    Topaz        ;gng_TextAttr
  2147.         dc.w    91        ;gng_GadgetID
  2148.         dc.l    PLACETEXT_IN    ;gng_Flags
  2149.         dc.l    0        ;gng_VisualInfo
  2150.         dc.l    0        ;gng_UserData
  2151.  
  2152. ;Window 4 gadgets
  2153.  
  2154. TrackGadText1:    dc.b    "Track",0
  2155. MinutesGadText1: dc.b    "Minutes",0
  2156. SecondsGadText1: dc.b    "Seconds",0
  2157.         ds.l    0
  2158.  
  2159. NGTrackGad1:    dc.w    75        ;gng_LeftEdge
  2160.         dc.w    StrTop        ;gng_TopEdge
  2161.         dc.w    400        ;gng_Width
  2162.         dc.w    12        ;gng_Height
  2163.         dc.l    TrackGadText1    ;gng_GadgetText
  2164.         dc.l    Topaz        ;gng_TextAttr
  2165.         dc.w    81        ;gng_GadgetID
  2166.         dc.l    PLACETEXT_LEFT    ;gng_Flags
  2167.         dc.l    0        ;gng_VisualInfo
  2168.         dc.l    0        ;gng_UserData
  2169.  
  2170. NGMinutesGad1:    dc.w    75        ;gng_LeftEdge
  2171.         dc.w    StrTop+1*(12+INTERHEIGHT)    ;gng_TopEdge
  2172.         dc.w    50        ;gng_Width
  2173.         dc.w    12        ;gng_Height
  2174.         dc.l    MinutesGadText1    ;gng_GadgetText
  2175.         dc.l    Topaz        ;gng_TextAttr
  2176.         dc.w    82        ;gng_GadgetID
  2177.         dc.l    PLACETEXT_LEFT    ;gng_Flags
  2178.         dc.l    0        ;gng_VisualInfo
  2179.         dc.l    0        ;gng_UserData
  2180.  
  2181. NGSecondsGad1:    dc.w    2*75+1*(50+INTERWIDTH)        ;gng_LeftEdge
  2182.         dc.w    StrTop+1*(12+INTERHEIGHT)    ;gng_TopEdge
  2183.         dc.w    50        ;gng_Width
  2184.         dc.w    12        ;gng_Height
  2185.         dc.l    SecondsGadText1    ;gng_GadgetText
  2186.         dc.l    Topaz        ;gng_TextAttr
  2187.         dc.w    83        ;gng_GadgetID
  2188.         dc.l    PLACETEXT_LEFT    ;gng_Flags
  2189.         dc.l    0        ;gng_VisualInfo
  2190.         dc.l    0        ;gng_UserData
  2191.  
  2192. ;Gadget TagLists
  2193.  
  2194. AlbumGadTagList: dc.l    GTST_String,StrBuffer1
  2195.         dc.l    GT_Underscore,'_'
  2196.         dc.l    GTST_MaxChars,64
  2197.         dc.l    TAG_DONE,0
  2198.  
  2199. ArtistGadTagList: dc.l    GTST_String,StrBuffer2
  2200.         dc.l    GT_Underscore,'_'
  2201.         dc.l    GTST_MaxChars,64
  2202.         dc.l    TAG_DONE,0
  2203.  
  2204. TrackGadTagList: dc.l    GTST_String,StrBuffer3
  2205.         dc.l    GT_Underscore,'_'
  2206.         dc.l    GTST_MaxChars,64
  2207.         dc.l    TAG_DONE,0
  2208.  
  2209. MinutesGadTagList: dc.l    GTST_String,StrBuffer4
  2210.         dc.l    GT_Underscore,'_'
  2211.         dc.l    GTST_MaxChars,10
  2212.         dc.l    TAG_DONE,0
  2213.  
  2214. SecondsGadTagList: dc.l    GTST_String,StrBuffer5
  2215.         dc.l    GT_Underscore,'_'
  2216.         dc.l    GTST_MaxChars,10
  2217.         dc.l    TAG_DONE,0
  2218.  
  2219. ListGadTagList:    dc.l    GTLV_ShowSelected,0
  2220.         dc.l    TAG_DONE,0
  2221.  
  2222. ListOffTags:    dc.l    GTLV_Labels,0
  2223.         dc.l    TAG_DONE,0
  2224.  
  2225. List1OnTags:    dc.l    GTLV_Labels,AlbumList
  2226.         dc.l    TAG_DONE,0
  2227.  
  2228. List2OnTags:    dc.l    GTLV_Labels
  2229. SomeListOK:    dc.l    0        ;A copy of Current Track list?
  2230.         dc.l    TAG_DONE,0
  2231.  
  2232. GadTagList:    dc.l    GT_Underscore,'_'
  2233.         dc.l    TAG_DONE,0
  2234. ;Menus
  2235.  
  2236. Menu1Name:    dc.b    "Project",0
  2237. NewMenuText1:    dc.b    "New",0
  2238. NewCommKey:    dc.b    "N",0
  2239. LoadMenuText1:    dc.b    "Open...",0
  2240. LoadCommKey:    dc.b    "O",0
  2241. SaveMenuText1:    dc.b    "Save",0
  2242. SaveCommKey:    dc.b    "S",0
  2243. SaveAsMenuText1: dc.b    "Save As...",0
  2244. SaveAsCommKey:    dc.b    "A",0
  2245. PrintMenuText1: dc.b    "Print...",0
  2246. PrintCommKey:    dc.b    "P",0
  2247. AboutMenuText1:    dc.b    "About...",0
  2248. AboutCommKey:    dc.b    "?",0
  2249. QuitMenuText1:    dc.b    "Quit",0
  2250. QuitCommKey:    dc.b    "Q",0
  2251.  
  2252. Menu2Name:    dc.b    "Search",0
  2253. SearchMenuText1: dc.b    "Find...",0
  2254. SearchCommKey:    dc.b    "F",0
  2255. NextMenuText1:    dc.b    "Next",0
  2256. NextCommKey:    dc.b    "N",0
  2257.         ds.l    0
  2258.  
  2259. MNProjectMenu1:    dc.b    NM_TITLE        ;gnm_Type
  2260.         dc.b    0            ;gnm_Pad
  2261.         dc.l    Menu1Name        ;gnm_Label
  2262.         dc.l    0            ;gnm_CommKey
  2263.         dc.w    0            ;gnm_Flags
  2264.         dc.l    0            ;gnm_MutualExclude
  2265.         dc.l    0            ;gnm_UserData
  2266.  
  2267. MNNew1:        dc.b    NM_ITEM            ;gnm_Type
  2268.         dc.b    0            ;gnm_Pad
  2269.         dc.l    NewMenuText1        ;gnm_Label
  2270.         dc.l    NewCommKey        ;gnm_CommKey
  2271.         dc.w    NM_ITEMDISABLED        ;gnm_Flags
  2272.         dc.l    0            ;gnm_MutualExclude
  2273.         dc.l    0            ;gnm_UserData
  2274.  
  2275. MNLoad1:    dc.b    NM_ITEM            ;gnm_Type
  2276.         dc.b    0            ;gnm_Pad
  2277.         dc.l    LoadMenuText1        ;gnm_Label
  2278.         dc.l    LoadCommKey        ;gnm_CommKey
  2279.         dc.w    0             ;gnm_Flags
  2280.         dc.l    0            ;gnm_MutualExclude
  2281.         dc.l    0            ;gnm_UserData
  2282.  
  2283. MNSave1:    dc.b    NM_ITEM            ;gnm_Type
  2284.         dc.b    0            ;gnm_Pad
  2285.         dc.l    SaveMenuText1        ;gnm_Label
  2286.         dc.l    SaveCommKey        ;gnm_CommKey
  2287.         dc.w    NM_ITEMDISABLED        ;gnm_Flags
  2288.         dc.l    0            ;gnm_MutualExclude
  2289.         dc.l    0            ;gnm_UserData
  2290.  
  2291. MNSaveAs:    dc.b    NM_ITEM            ;gnm_Type
  2292.         dc.b    0            ;gnm_Pad
  2293.         dc.l    SaveAsMenuText1        ;gnm_Label
  2294.         dc.l    SaveAsCommKey        ;gnm_CommKey
  2295.         dc.w    NM_ITEMDISABLED        ;gnm_Flags
  2296.         dc.l    0            ;gnm_MutualExclude
  2297.         dc.l    0            ;gnm_UserData
  2298.  
  2299. MNP1SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  2300.         dc.b    0            ;gnm_Pad
  2301.         dc.l    NM_BARLABEL        ;gnm_Label
  2302.         dc.l    0            ;gnm_CommKey
  2303.         dc.w    0            ;gnm_Flags
  2304.         dc.l    0            ;gnm_MutualExclude
  2305.         dc.l    0            ;gnm_UserData
  2306.  
  2307. MNPrintAs:    dc.b    NM_ITEM            ;gnm_Type
  2308.         dc.b    0            ;gnm_Pad
  2309.         dc.l    PrintMenuText1        ;gnm_Label
  2310.         dc.l    PrintCommKey        ;gnm_CommKey
  2311.         dc.w    NM_ITEMDISABLED        ;gnm_Flags
  2312.         dc.l    0            ;gnm_MutualExclude
  2313.         dc.l    0            ;gnm_UserData
  2314.  
  2315. MNP1SepMenu2:    dc.b    NM_ITEM            ;gnm_Type
  2316.         dc.b    0            ;gnm_Pad
  2317.         dc.l    NM_BARLABEL        ;gnm_Label
  2318.         dc.l    0            ;gnm_CommKey
  2319.         dc.w    0            ;gnm_Flags
  2320.         dc.l    0            ;gnm_MutualExclude
  2321.         dc.l    0            ;gnm_UserData
  2322.  
  2323. MNAbout1:    dc.b    NM_ITEM            ;gnm_Type
  2324.         dc.b    0            ;gnm_Pad
  2325.         dc.l    AboutMenuText1        ;gnm_Label
  2326.         dc.l    AboutCommKey        ;gnm_CommKey
  2327.         dc.w    0            ;gnm_Flags
  2328.         dc.l    0            ;gnm_MutualExclude
  2329.         dc.l    0            ;gnm_UserData
  2330.  
  2331. MNP1SepMenu3:    dc.b    NM_ITEM            ;gnm_Type
  2332.         dc.b    0            ;gnm_Pad
  2333.         dc.l    NM_BARLABEL        ;gnm_Label
  2334.         dc.l    0            ;gnm_CommKey
  2335.         dc.w    0            ;gnm_Flags
  2336.         dc.l    0            ;gnm_MutualExclude
  2337.         dc.l    0            ;gnm_UserData
  2338.  
  2339. MNQuit1:    dc.b    NM_ITEM            ;gnm_Type
  2340.         dc.b    0            ;gnm_Pad
  2341.         dc.l    QuitMenuText1        ;gnm_Label
  2342.         dc.l    QuitCommKey        ;gnm_CommKey
  2343.         dc.w    0            ;gnm_Flags
  2344.         dc.l    0            ;gnm_MutualExclude
  2345.         dc.l    0            ;gnm_UserData
  2346.  
  2347. MNSearchMenu1:    dc.b    NM_TITLE        ;gnm_Type
  2348.         dc.b    0            ;gnm_Pad
  2349.         dc.l    Menu2Name        ;gnm_Label
  2350.         dc.l    0            ;gnm_CommKey
  2351.         dc.w    0            ;gnm_Flags
  2352.         dc.l    0            ;gnm_MutualExclude
  2353.         dc.l    0            ;gnm_UserData
  2354.  
  2355. MNSearch1:    dc.b    NM_ITEM            ;gnm_Type
  2356.         dc.b    0            ;gnm_Pad
  2357.         dc.l    SearchMenuText1        ;gnm_Label
  2358.         dc.l    SearchCommKey        ;gnm_CommKey
  2359.         dc.w    NM_ITEMDISABLED        ;gnm_Flags
  2360.         dc.l    0            ;gnm_MutualExclude
  2361.         dc.l    0            ;gnm_UserData
  2362.  
  2363. MNNext1:    dc.b    NM_ITEM            ;gnm_Type
  2364.         dc.b    0            ;gnm_Pad
  2365.         dc.l    NextMenuText1        ;gnm_Label
  2366.         dc.l    NextCommKey        ;gnm_CommKey
  2367.         dc.w    NM_ITEMDISABLED        ;gnm_Flags
  2368.         dc.l    0            ;gnm_MutualExclude
  2369.         dc.l    0            ;gnm_UserData
  2370.         dc.w    0            ;NM_END?
  2371.  
  2372. ;Menu TagList(s)
  2373.  
  2374. MenuTagList:    dc.l    GTMN_Menu,MNProjectMenu1
  2375.         dc.l    TAG_DONE,0
  2376.  
  2377. NoMemTxt1:    dc.b    3,1            ;PENS
  2378.         dc.w    4            ;MODE
  2379.         dc.w    10,10            ;LEFT+TOPEDGE
  2380.         dc.l    Topaz            ;FONT
  2381.         dc.l    NoMemText1        ;TEXT
  2382.         dc.l    0            ;NEXTTEXT
  2383.  
  2384.         section    CDC,BSS
  2385.  
  2386. ;Lists
  2387.  
  2388. AlbumList:    ds.l    ALBUM_SIZE
  2389.  
  2390. ;Buffers
  2391.  
  2392. Buffer1:    ds.l    1
  2393. StrBuffer1:    ds.b    64    ;for album name
  2394. StrBuffer2:    ds.b    64    ;for artist name
  2395.  
  2396. StrBuffer3:    ds.b    64    ;for track name
  2397.  
  2398. StrBuffer4:    ds.b    10    ;for track minutes
  2399. StrBuffer5:    ds.b    10    ;for track seconds
  2400.  
  2401.         Section    RD,DATA,CHIP
  2402.  
  2403.         ds.w    0
  2404.  
  2405. ClockPointer1:    dc.w    $0000,$0000
  2406.         dc.w    $0400,$07C0,$0000,$07C0,$0100,$0380,$0000,$07E0
  2407.         dc.w    $07C0,$1FF8,$1FF0,$3FEC,$3FF8,$7FDE,$3FF8,$7FBE
  2408.         dc.w    $7FFC,$FF7F,$7EFC,$FFFF,$7FFC,$FFFF,$3FF8,$7FFE
  2409.         dc.w    $3FF8,$7FFE,$1FF0,$3FFC,$07C0,$1FF8,$0000,$07E0
  2410.         dc.w    $0000,$0000
  2411.  
  2412.         end
  2413.