home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / dev / asm / tbsource / completecontrol / cc.s
Text File  |  1993-12-21  |  84KB  |  4,310 lines

  1. *************************************************
  2. *                        *
  3. *         (C)opyright 1993        *
  4. *                        *
  5. *        by  Tomi Blinnikka        *
  6. *                        *
  7. *    Don't try to understand the code    *
  8. *                        *
  9. * Version 0.01    17/07/1993-            *
  10. *     -0.99ö 05/10/1993            *
  11. *                        *
  12. * Version 1.00    06/10/1993            *
  13. *                        *
  14. *************************************************
  15.  
  16.     INCLUDE "JMPLibs.i"
  17.     INCLUDE "exec/memory.i"
  18.     INCLUDE "exec/io.i"
  19.     INCLUDE "exec/tasks.i"
  20.     INCLUDE    "devices/serial.i"
  21.     INCLUDE "libraries/commodities.i"
  22.     INCLUDE "libraries/dosextens.i"
  23.     INCLUDE "libraries/dos.i"
  24.     INCLUDE "libraries/gadtools.i"
  25.     INCLUDE    "libraries/asl.i"
  26.     INCLUDE "workbench/startup.i"
  27.     INCLUDE "dos/dostags.i"
  28.     INCLUDE    "rexx/errors.i"
  29.     INCLUDE    "rexx/storage.i"
  30.  
  31.     INCLUDE "XREF:2.0.xref"
  32.     INCLUDE "XREF:intuition.xref"
  33.     INCLUDE "XREF:exec.xref"
  34.     INCLUDE "XREF:dos.xref"
  35.     INCLUDE "XREF:icon.xref"
  36.  
  37.     XREF    _HotKey
  38.  
  39.     XDEF    _DOSBase
  40.     XDEF    _SysBase
  41.     XDEF    _CxBase
  42.  
  43. PROGVERSION:    macro
  44.         dc.b    "1.01 (14.10.93)"
  45.         endm
  46.  
  47. ShellTop:    EQU    2
  48. OptionTop:    EQU    144
  49. ListTop:    EQU    15
  50. InfoTop:    EQU    13
  51. ActionTop:    EQU    ListTop+50
  52. NegativeTop:    EQU    -26
  53.  
  54. START_PORT:    EQU    0        ;Port wanted minus 1
  55.  
  56. PortAmount:    EQU    48
  57. ListAmount:    EQU    14
  58. NUMGADS:    EQU    8
  59.  
  60. CMD_LENGTH:    EQU    4
  61.  
  62. GADLENG1:    EQU    14
  63. GADLENG2:    EQU    32
  64. GADLENG3:    EQU    8
  65. PRINT_BUF_SIZE:    EQU    80
  66.  
  67. GADWIDTH1:    EQU    120
  68. GADWIDTH2:    EQU    180
  69. GADWIDTH3:    EQU    80
  70.  
  71. START_LOAD:    EQU    3511462
  72.  
  73. CCFileVersion:    EQU    'CC02'
  74.  
  75. TRUE:        EQU    1
  76. FALSE:        EQU    0
  77. do_ToolTypes:    EQU    $36
  78.  
  79.         section CC,CODE
  80.  
  81.         push    d2-d7/a2-a6
  82.  
  83.         sub.l    a1,a1            ;Find our task
  84.         lib    Exec,FindTask
  85.         move.l    d0,OurTask
  86.         move.l    d0,a4
  87.         move.l    pr_CLI(a4),d0
  88.         bne    OpenDos
  89.  
  90.         lea.l    pr_MsgPort(a4),a0
  91.         lib    Exec,WaitPort
  92.         lea.l    pr_MsgPort(a4),a0
  93.         lib    Exec,GetMsg
  94.         move.l    d0,WBMsg
  95.  
  96. OpenDos:    openlib Dos,NoDos        ;Keep at beginning
  97.  
  98.         tst.l    WBMsg
  99.         beq    CLIStart
  100.  
  101.         lea.l    NILName,a0
  102.         move.l    a0,d1
  103.         move.l    #MODE_NEWFILE,d2
  104.         lib    Dos,Open
  105.         move.l    d0,NILFile
  106.         beq    NoNIL
  107.         move.l    NILFile,_stdout
  108.  
  109.         openlib Icon,NoIcon
  110.  
  111.         move.l    WBMsg,a0
  112.         move.l    sm_ArgList(a0),a1
  113.         move.l    wa_Lock(a1),d1
  114.         lib    Dos,CurrentDir
  115.         move.l    d0,OldLock
  116.  
  117.         move.l    WBMsg,a0
  118.         move.l    sm_ArgList(a0),a1
  119.         move.l    wa_Name(a1),a0
  120.         lib    Icon,GetDiskObject
  121.         move.l    d0,DiskObject
  122.         beq    MainStart
  123.  
  124.         bra    MainStart        ;DEBUG
  125.  
  126. DoToolType1:    move.l    DiskObject,a4
  127.         move.l    do_ToolTypes(a4),a0
  128.         lea.l    ICONIFYText1,a1
  129.         lib    Icon,FindToolType
  130.         tst.l    d0
  131.         beq    DoToolType2
  132.         move.l    d0,a0
  133.         lea.l    YESText1,a1
  134.         lib    Icon,MatchToolValue
  135.         tst.l    d0
  136.         beq    DoToolType2
  137.         move.l    #1,OptionIconify
  138.  
  139. DoToolType2:    move.l    do_ToolTypes(a4),a0
  140.         lea.l    FROMText1,a1
  141.         lib    Icon,FindToolType
  142.         move.l    d0,FromFile
  143.  
  144. DoToolType3:    bra    MainStart
  145.  
  146. CLIStart:    lib    Dos,Output
  147.         move.l    d0,_stdout
  148.  
  149.         lea.l    CLTemplate1,a0
  150.         move.l    a0,d1
  151.         lea.l    CLArray1,a0
  152.         move.l    a0,d2
  153.         clr.l    d3
  154.         lib    Dos,ReadArgs
  155.         move.l    d0,RDArgs1
  156.         beq    NoRDArgs
  157.  
  158. MainStart:    openlib Intuition,NoInt
  159.         openlib    Commodities,NoCommodities
  160.         openlib GadTools,NoGadTools
  161.         openlib    Asl,NoAsl
  162.         openlib    Utility,NoUtility
  163.  
  164.         move.l    $4,_SysBase
  165.         move.l    _DosBase,_DOSBase
  166.         move.l    _CommoditiesBase,_CxBase
  167.  
  168. ;Init list(s)
  169.  
  170.         lea.l    PortList,a0
  171.         NEWLIST    a0
  172.  
  173. ;Check to see if a port with our name already exists
  174.  
  175.         lib    Exec,Forbid
  176.         lea.l    ARexxPortName,a1
  177.         flib    Exec,FindPort
  178.         push    d0
  179.         flib    Exec,Permit
  180.  
  181.         pull    d0
  182.         tst.l    d0
  183.         bne    NoMsgPort2
  184.  
  185. ;Create AREXX message port
  186.  
  187.         lib    Exec,CreateMsgPort
  188.         move.l    d0,ARexxPort
  189.         beq    NoMsgPort
  190.  
  191.         move.l    ARexxPort,a1
  192.         lea.l    ARexxPortName,a0
  193.         move.l    a0,LN_NAME(a1)
  194.         lib    Exec,AddPort
  195.  
  196. ;Create a message port for commodities.library (Exchange)
  197.  
  198.         lib    Exec,CreateMsgPort
  199.         move.l    d0,CXPort
  200.         beq    NoMsgPort
  201.         lea.l    NewBroker1,a0
  202.         move.l    d0,nb_Port(a0)
  203.  
  204.         bsr    LockPubScr
  205.         tst.l    PubScreen
  206.         beq    NoPubScreen
  207.  
  208. ;Get visualinfo
  209.  
  210.         move.l    PubScreen,a0
  211.         sub.l    a1,a1
  212.         lib    GadTools,GetVisualInfoA
  213.         move.l    d0,vi
  214.  
  215. ;Make gadget stuff
  216.  
  217.         lea.l    glist,a0
  218.         lib    GadTools,CreateContext
  219.         move.l    d0,ContextGad
  220.         beq    NoContextGad
  221.  
  222.         move.l    glist,a0
  223.         lea.l    NGSaveGad,a1
  224.         add.w    d5,gng_TopEdge(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,SaveGad1
  232.  
  233.         lea.l    NGQuitGad,a1
  234.         add.w    d5,gng_TopEdge(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,QuitGad1
  242.         or.w    #GRELRIGHT,gg_Flags(a0)
  243.  
  244.         lea.l    NGListGad,a1
  245.         add.w    d5,gng_TopEdge(a1)
  246.         move.l    #LISTVIEW_KIND,d0
  247.         move.l    vi,gng_VisualInfo(a1)
  248.         lea.l    ListGadTagList,a2
  249.         lib    GadTools,CreateGadgetA
  250.  
  251.         move.l    d0,a0
  252.         move.l    a0,ListGad1
  253.  
  254.         lea.l    NGPortGad,a1
  255.         add.w    d5,gng_TopEdge(a1)
  256.         move.l    #NUMBER_KIND,d0
  257.         move.l    vi,gng_VisualInfo(a1)
  258.         lea.l    PortGadTagList,a2
  259.         lib    GadTools,CreateGadgetA
  260.  
  261.         move.l    d0,a0
  262.         move.l    a0,PortGad1
  263.  
  264.         lea.l    NGStatusGad,a1
  265.         add.w    d5,gng_TopEdge(a1)
  266.         move.l    #TEXT_KIND,d0
  267.         move.l    vi,gng_VisualInfo(a1)
  268.         lea.l    StatusGadTagList,a2
  269.         lib    GadTools,CreateGadgetA
  270.  
  271.         move.l    d0,a0
  272.         move.l    a0,StatusGad1
  273.  
  274.         lea.l    NGSingleGad,a1
  275.         add.w    d5,gng_TopEdge(a1)
  276.         move.l    #TEXT_KIND,d0
  277.         move.l    vi,gng_VisualInfo(a1)
  278.         lea.l    GadTagList,a2
  279.         lib    GadTools,CreateGadgetA
  280.  
  281.         move.l    d0,a0
  282.         move.l    a0,SingleGad1
  283.  
  284.         lea.l    NGOnGad,a1
  285.         add.w    d5,gng_TopEdge(a1)
  286.         move.l    #BUTTON_KIND,d0
  287.         move.l    vi,gng_VisualInfo(a1)
  288.         lea.l    GadTagList,a2
  289.         lib    GadTools,CreateGadgetA
  290.  
  291.         move.l    d0,a0
  292.         move.l    a0,OnGad1
  293.  
  294.         lea.l    NGOffGad,a1
  295.         add.w    d5,gng_TopEdge(a1)
  296.         move.l    #BUTTON_KIND,d0
  297.         move.l    vi,gng_VisualInfo(a1)
  298.         lea.l    GadTagList,a2
  299.         lib    GadTools,CreateGadgetA
  300.  
  301.         move.l    d0,a0
  302.         move.l    a0,OffGad1
  303.  
  304.         lea.l    NGToggleGad,a1
  305.         add.w    d5,gng_TopEdge(a1)
  306.         move.l    #BUTTON_KIND,d0
  307.         move.l    vi,gng_VisualInfo(a1)
  308.         lea.l    GadTagList,a2
  309.         lib    GadTools,CreateGadgetA
  310.  
  311.         move.l    d0,a0
  312.         move.l    a0,ToggleGad1
  313.  
  314.         lea.l    NGAllGad,a1
  315.         add.w    d5,gng_TopEdge(a1)
  316.         move.l    #TEXT_KIND,d0
  317.         move.l    vi,gng_VisualInfo(a1)
  318.         lea.l    GadTagList,a2
  319.         lib    GadTools,CreateGadgetA
  320.  
  321.         move.l    d0,a0
  322.         move.l    a0,AllGad1
  323.  
  324.         lea.l    NGOnGad2,a1
  325.         add.w    d5,gng_TopEdge(a1)
  326.         move.l    #BUTTON_KIND,d0
  327.         move.l    vi,gng_VisualInfo(a1)
  328.         lea.l    GadTagList,a2
  329.         lib    GadTools,CreateGadgetA
  330.  
  331.         move.l    d0,a0
  332.         move.l    a0,OnGad2
  333.  
  334.         lea.l    NGOffGad2,a1
  335.         add.w    d5,gng_TopEdge(a1)
  336.         move.l    #BUTTON_KIND,d0
  337.         move.l    vi,gng_VisualInfo(a1)
  338.         lea.l    GadTagList,a2
  339.         lib    GadTools,CreateGadgetA
  340.  
  341.         move.l    d0,a0
  342.         move.l    a0,OffGad2
  343.  
  344.         lea.l    NGToggleGad2,a1
  345.         add.w    d5,gng_TopEdge(a1)
  346.         move.l    #BUTTON_KIND,d0
  347.         move.l    vi,gng_VisualInfo(a1)
  348.         lea.l    GadTagList,a2
  349.         lib    GadTools,CreateGadgetA
  350.  
  351.         move.l    d0,a0
  352.         move.l    a0,ToggleGad2
  353.  
  354.         lea.l    glist2,a0
  355.         lib    GadTools,CreateContext
  356.         move.l    d0,ContextGad2
  357.         beq    NoContextGad
  358.  
  359.         move.l    glist2,a0
  360.         lea.l    NGDesc1Gad,a1
  361.         add.w    d5,gng_TopEdge(a1)
  362.         move.l    #TEXT_KIND,d0
  363.         move.l    vi,gng_VisualInfo(a1)
  364.         lea.l    DescGadTagList,a2
  365.         lib    GadTools,CreateGadgetA
  366.  
  367.         move.l    d0,Desc1Gad
  368.         move.l    d0,a0
  369.  
  370.         lea.l    NGDesc2Gad,a1
  371.         add.w    d5,gng_TopEdge(a1)
  372.         move.l    #TEXT_KIND,d0
  373.         move.l    vi,gng_VisualInfo(a1)
  374.         lea.l    DescGadTagList,a2
  375.         lib    GadTools,CreateGadgetA
  376.  
  377.         move.l    d0,a0
  378.  
  379.         lea.l    NGStrGad1,a1
  380.         add.w    d5,gng_TopEdge(a1)
  381.         move.l    #STRING_KIND,d0
  382.         move.l    vi,gng_VisualInfo(a1)
  383.         lea.l    StrGadTagList1,a2
  384.         lib    GadTools,CreateGadgetA
  385.  
  386.         move.l    d0,StrGad1
  387.         move.l    d0,a0
  388.         move.l    gg_SpecialInfo(a0),a1
  389.         move.l    (a1),StrGadBuf1
  390.  
  391.         lea.l    NGStrGad2,a1
  392.         add.w    d5,gng_TopEdge(a1)
  393.         move.l    #STRING_KIND,d0
  394.         move.l    vi,gng_VisualInfo(a1)
  395.         lea.l    StrGadTagList1,a2
  396.         lib    GadTools,CreateGadgetA
  397.  
  398.         move.l    d0,StrGad2
  399.         move.l    d0,a0
  400.         move.l    gg_SpecialInfo(a0),a1
  401.         move.l    (a1),StrGadBuf2
  402.  
  403.         lea.l    NGStrGad3,a1
  404.         add.w    d5,gng_TopEdge(a1)
  405.         move.l    #STRING_KIND,d0
  406.         move.l    vi,gng_VisualInfo(a1)
  407.         lea.l    StrGadTagList1,a2
  408.         lib    GadTools,CreateGadgetA
  409.  
  410.         move.l    d0,StrGad3
  411.         move.l    d0,a0
  412.         move.l    gg_SpecialInfo(a0),a1
  413.         move.l    (a1),StrGadBuf3
  414.  
  415.         lea.l    NGStrGad4,a1
  416.         add.w    d5,gng_TopEdge(a1)
  417.         move.l    #STRING_KIND,d0
  418.         move.l    vi,gng_VisualInfo(a1)
  419.         lea.l    StrGadTagList1,a2
  420.         lib    GadTools,CreateGadgetA
  421.  
  422.         move.l    d0,StrGad4
  423.         move.l    d0,a0
  424.         move.l    gg_SpecialInfo(a0),a1
  425.         move.l    (a1),StrGadBuf4
  426.  
  427.         lea.l    NGStrGad5,a1
  428.         add.w    d5,gng_TopEdge(a1)
  429.         move.l    #STRING_KIND,d0
  430.         move.l    vi,gng_VisualInfo(a1)
  431.         lea.l    StrGadTagList1,a2
  432.         lib    GadTools,CreateGadgetA
  433.  
  434.         move.l    d0,StrGad5
  435.         move.l    d0,a0
  436.         move.l    gg_SpecialInfo(a0),a1
  437.         move.l    (a1),StrGadBuf5
  438.  
  439.         lea.l    NGStrGad6,a1
  440.         add.w    d5,gng_TopEdge(a1)
  441.         move.l    #STRING_KIND,d0
  442.         move.l    vi,gng_VisualInfo(a1)
  443.         lea.l    StrGadTagList1,a2
  444.         lib    GadTools,CreateGadgetA
  445.  
  446.         move.l    d0,StrGad6
  447.         move.l    d0,a0
  448.         move.l    gg_SpecialInfo(a0),a1
  449.         move.l    (a1),StrGadBuf6
  450.  
  451.         lea.l    NGStrGad7,a1
  452.         add.w    d5,gng_TopEdge(a1)
  453.         move.l    #STRING_KIND,d0
  454.         move.l    vi,gng_VisualInfo(a1)
  455.         lea.l    StrGadTagList1,a2
  456.         lib    GadTools,CreateGadgetA
  457.  
  458.         move.l    d0,StrGad7
  459.         move.l    d0,a0
  460.         move.l    gg_SpecialInfo(a0),a1
  461.         move.l    (a1),StrGadBuf7
  462.  
  463.         lea.l    NGStrGad8,a1
  464.         add.w    d5,gng_TopEdge(a1)
  465.         move.l    #STRING_KIND,d0
  466.         move.l    vi,gng_VisualInfo(a1)
  467.         lea.l    StrGadTagList1,a2
  468.         lib    GadTools,CreateGadgetA
  469.  
  470.         move.l    d0,StrGad8
  471.         move.l    d0,a0
  472.         move.l    gg_SpecialInfo(a0),a1
  473.         move.l    (a1),StrGadBuf8
  474.  
  475.         lea.l    NGNumGad1,a1
  476.         add.w    d5,gng_TopEdge(a1)
  477.         move.l    #NUMBER_KIND,d0
  478.         move.l    vi,gng_VisualInfo(a1)
  479.         lea.l    NumGadTagList1,a2
  480.         lib    GadTools,CreateGadgetA
  481.  
  482.         move.l    d0,NumGad1
  483.         move.l    d0,a0
  484.  
  485.         lea.l    NGNumGad2,a1
  486.         add.w    d5,gng_TopEdge(a1)
  487.         move.l    #NUMBER_KIND,d0
  488.         move.l    vi,gng_VisualInfo(a1)
  489.         lea.l    NumGadTagList1,a2
  490.         lib    GadTools,CreateGadgetA
  491.  
  492.         move.l    d0,NumGad2
  493.         move.l    d0,a0
  494.  
  495.         lea.l    NGNumGad3,a1
  496.         add.w    d5,gng_TopEdge(a1)
  497.         move.l    #NUMBER_KIND,d0
  498.         move.l    vi,gng_VisualInfo(a1)
  499.         lea.l    NumGadTagList1,a2
  500.         lib    GadTools,CreateGadgetA
  501.  
  502.         move.l    d0,NumGad3
  503.         move.l    d0,a0
  504.  
  505.         lea.l    NGNumGad4,a1
  506.         add.w    d5,gng_TopEdge(a1)
  507.         move.l    #NUMBER_KIND,d0
  508.         move.l    vi,gng_VisualInfo(a1)
  509.         lea.l    NumGadTagList1,a2
  510.         lib    GadTools,CreateGadgetA
  511.  
  512.         move.l    d0,NumGad4
  513.         move.l    d0,a0
  514.  
  515.         lea.l    NGNumGad5,a1
  516.         add.w    d5,gng_TopEdge(a1)
  517.         move.l    #NUMBER_KIND,d0
  518.         move.l    vi,gng_VisualInfo(a1)
  519.         lea.l    NumGadTagList1,a2
  520.         lib    GadTools,CreateGadgetA
  521.  
  522.         move.l    d0,NumGad5
  523.         move.l    d0,a0
  524.  
  525.         lea.l    NGNumGad6,a1
  526.         add.w    d5,gng_TopEdge(a1)
  527.         move.l    #NUMBER_KIND,d0
  528.         move.l    vi,gng_VisualInfo(a1)
  529.         lea.l    NumGadTagList1,a2
  530.         lib    GadTools,CreateGadgetA
  531.  
  532.         move.l    d0,NumGad6
  533.         move.l    d0,a0
  534.  
  535.         lea.l    NGNumGad7,a1
  536.         add.w    d5,gng_TopEdge(a1)
  537.         move.l    #NUMBER_KIND,d0
  538.         move.l    vi,gng_VisualInfo(a1)
  539.         lea.l    NumGadTagList1,a2
  540.         lib    GadTools,CreateGadgetA
  541.  
  542.         move.l    d0,NumGad7
  543.         move.l    d0,a0
  544.  
  545.         lea.l    NGNumGad8,a1
  546.         add.w    d5,gng_TopEdge(a1)
  547.         move.l    #NUMBER_KIND,d0
  548.         move.l    vi,gng_VisualInfo(a1)
  549.         lea.l    NumGadTagList1,a2
  550.         lib    GadTools,CreateGadgetA
  551.  
  552.         move.l    d0,NumGad8
  553.  
  554.         lea.l    glist3,a0
  555.         lib    GadTools,CreateContext
  556.         move.l    d0,ContextGad3
  557.         beq    NoContextGad
  558.  
  559.         move.l    glist3,a0
  560.         lea.l    NGSerGad1,a1
  561.         add.w    d5,gng_TopEdge(a1)
  562.         move.l    #STRING_KIND,d0
  563.         move.l    vi,gng_VisualInfo(a1)
  564.         lea.l    SerGadTagList,a2
  565.         lib    GadTools,CreateGadgetA
  566.  
  567.         move.l    d0,SerGad1
  568.         move.l    d0,a0
  569.         move.l    gg_SpecialInfo(a0),a1
  570.         move.l    (a1),SerGadBuf1
  571.  
  572.         lea.l    NGSerGad2,a1
  573.         add.w    d5,gng_TopEdge(a1)
  574.         move.l    #INTEGER_KIND,d0
  575.         move.l    vi,gng_VisualInfo(a1)
  576.         lea.l    SerGadTagList2,a2
  577.         lib    GadTools,CreateGadgetA
  578.  
  579.         move.l    d0,SerGad2
  580.         move.l    d0,a0
  581.         move.l    gg_SpecialInfo(a0),a1
  582.         add.l    #si_LongInt,a1
  583.         move.l    a1,SerGadInt2
  584.  
  585.         lea.l    NGSerGad3,a1
  586.         add.w    d5,gng_TopEdge(a1)
  587.         move.l    #INTEGER_KIND,d0
  588.         move.l    vi,gng_VisualInfo(a1)
  589.         lea.l    SerGadTagList3,a2
  590.         lib    GadTools,CreateGadgetA
  591.  
  592.         move.l    d0,SerGad3
  593.         move.l    d0,a0
  594.         move.l    gg_SpecialInfo(a0),a1
  595.         add.l    #si_LongInt,a1
  596.         move.l    a1,SerGadInt3
  597.  
  598.         lea.l    NGOKGad1,a1
  599.         add.w    d5,gng_TopEdge(a1)
  600.         move.l    #BUTTON_KIND,d0
  601.         move.l    vi,gng_VisualInfo(a1)
  602.         lea.l    GadTagList,a2
  603.         lib    GadTools,CreateGadgetA
  604.  
  605.         move.l    d0,OKGad1
  606.         move.l    d0,a0
  607.         or.w    #GRELBOTTOM,gg_Flags(a0)
  608.  
  609.         lea.l    NGCancelGad1,a1
  610.         add.w    d5,gng_TopEdge(a1)
  611.         move.l    #BUTTON_KIND,d0
  612.         move.l    vi,gng_VisualInfo(a1)
  613.         lea.l    GadTagList,a2
  614.         lib    GadTools,CreateGadgetA
  615.  
  616.         move.l    d0,CancelGad1
  617.         move.l    d0,a0
  618.         or.w    #GRELBOTTOM!GRELRIGHT,gg_Flags(a0)
  619.  
  620.         move.b    #1,GadMagic        ;Make worked OK
  621.  
  622. ;New style menu stuff
  623.  
  624.         lea.l    MNProjectMenu1,a0
  625.         lea.l    MenuTagList,a1
  626.         lib    GadTools,CreateMenusA
  627.         move.l    d0,mlist
  628.         beq    NoMenus
  629.  
  630.         move.l    mlist,a0
  631.         move.l    vi,a1
  632.         lea.l    MenuTagList,a2
  633.         lib    GadTools,LayoutMenusA
  634.  
  635.         lea.l    MNPageMenu1,a0
  636.         lea.l    MenuTagList2,a1
  637.         lib    GadTools,CreateMenusA
  638.         move.l    d0,mlist2
  639.         beq    NoMenus
  640.  
  641.         move.l    mlist2,a0
  642.         move.l    vi,a1
  643.         lea.l    MenuTagList2,a2
  644.         lib    GadTools,LayoutMenusA
  645.         move.b    #1,MenuMagic
  646.  
  647. ;Do CX init stuff. Create broker
  648.  
  649.         tst.l    OptCXPri
  650.         beq    SkipSetCXPri
  651.         move.l    OptCXPri,a0
  652.         move.l    (a0),d0
  653.  
  654.         tst.l    d0
  655.         bmi    SetCXPri2
  656.  
  657.         cmp.l    #127,d0
  658.         bhi    BadPriority
  659.         bra    SetCXPri3
  660.  
  661. SetCXPri2:    cmp.l    #-128,d0
  662.         bcs    BadPriority
  663.  
  664. SetCXPri3:    move.b    d0,NBPri
  665. SkipSetCXPri:    lea.l    NewBroker1,a0
  666.         clr.l    d0            ;No extra error codes wanted
  667.         lib    Commodities,CxBroker
  668.         move.l    d0,CXBroker1
  669.         beq    NoCommodity
  670.  
  671. ;Create Filter object
  672.  
  673.         move.l    OptCXPopKey,a0
  674.         sub.l    a1,a1
  675.         move.l    #CX_FILTER,d0
  676.         lib    Commodities,CreateCxObj
  677.         move.l    d0,d2
  678.         beq    NoCommodity
  679.  
  680. ;Attach Filter object to Broker
  681.  
  682.         move.l    CXBroker1,a0
  683.         move.l    d2,a1
  684.         lib    Commodities,AttachCxObj
  685.  
  686.         move.l    d2,a0            ;Check if valid descriptor
  687.         lib    Commodities,CxObjError
  688.         cmp.l    #COERR_BADFILTER,d0
  689.         beq    NoFilter
  690.  
  691. ;Create send object
  692.  
  693.         move.l    d2,d3
  694.         move.l    CXPort,a0
  695.         sub.l    a1,a1
  696.         move.l    #CX_SEND,d0
  697.         lib    Commodities,CreateCxObj
  698.         move.l    d0,d2
  699.         beq    NoCommodity
  700.  
  701. ;Attach Send object to Filter
  702.  
  703.         move.l    d3,a0
  704.         move.l    d2,a1
  705.         lib    Commodities,AttachCxObj
  706.  
  707. ;Create translate object
  708.  
  709.         move.l    d2,d3
  710.         sub.l    a0,a0
  711.         sub.l    a1,a1
  712.         move.l    #CX_TRANSLATE,d0
  713.         lib    Commodities,CreateCxObj
  714.         move.l    d0,d2
  715.         beq    NoCommodity
  716.  
  717. ;Attach Translate object to Send
  718.  
  719.         move.l    d3,a0
  720.         move.l    d2,a1
  721.         lib    Commodities,AttachCxObj
  722.  
  723. ;Read preferences
  724.  
  725.         move.l    #START_LOAD,d0
  726.         bsr    Load
  727.  
  728. ;Create reply port for serial.device (or modem0.device etc.)
  729.  
  730.         lib    Exec,CreateMsgPort
  731.         move.l    d0,SWPort
  732.         beq    NoMsgPort
  733.  
  734. ;Create IOReq for serial.device (or for other device, but size is EXTSER)
  735.  
  736.         move.l    #IOEXTSER_SIZE,d0
  737.         move.l    SWPort,a0
  738.         clr.b    LN_TYPE(a0)        ;Make sure CheckIO doesn't hang
  739.         lib    Exec,CreateIORequest
  740.         move.l    d0,IORequest
  741.         beq    NoIOReq
  742.  
  743. ;Open serial device
  744.  
  745.         bsr    OpenSerial
  746.         tst.l    d0
  747.         beq    NoSerial
  748.  
  749. ;Open window
  750.  
  751.         bsr    OpenWin1
  752.         tst.l    Window1
  753.         beq    NoWindow1
  754.  
  755. ;Unlock PubScreen
  756.  
  757.         sub.l    a0,a0
  758.         move.l    PubScreen,a1
  759.         lib    Intuition,UnlockPubScreen
  760.         clr.l    PubScreen
  761.  
  762. ;Get Asl_requester
  763.  
  764.         move.l    Window1,AslReqTags+4
  765.         move.l    #ASL_FileRequest,d0
  766.         lea.l    AslReqTags,a0
  767.         lib    Asl,AllocAslRequest
  768.         move.l    d0,AslReq
  769.         beq    NoAslReq
  770.  
  771.         bsr    MakePortList
  772.  
  773.         bsr    SendAllPorts
  774.  
  775.         bsr    CXEnable    ;Turn on commodity
  776.  
  777.         move.l    #START_PORT,d3
  778.         bra    GetCurrentPort        ;jmps to Window1IDCMP
  779.  
  780. Window1IDCMP:    move.l    Window1,a3
  781.         bsr    C2GetMsg1
  782.  
  783.         tst.l    d0            ;Test for CTRL_C
  784.         beq    ShutDown
  785.         cmp.l    #4,d0
  786.         beq    Window1IDCMP        ;Already done ARexx or commodity
  787.  
  788.         cmp.l    #REFRESHWINDOW,d2
  789.         beq    Refresher
  790.         cmp.l    #GADGETUP,d2
  791.         beq    DoGads
  792.         cmp.l    #CLOSEWINDOW,d2
  793.         beq    DoDoCXDisappear
  794.         cmp.l    #MENUPICK,d2
  795.         beq    Win1Menus
  796.         cmp.l    #VANILLAKEY,d2
  797.         beq    VanillaKeys
  798.         cmp.l    #RAWKEY,d2
  799.         beq    RawKeys
  800.         bra    Window1IDCMP
  801.  
  802. Refresher:    move.l    Window1,a0
  803.         lib    GadTools,GT_BeginRefresh
  804.         move.l    Window1,a0
  805.         move.l    #TRUE,d0
  806.         lib    GadTools,GT_EndRefresh
  807.         bra    Window1IDCMP
  808.  
  809. Win1Menus:    bsr    MenuNull
  810.         cmp.w    #$00,d6
  811.         beq    Win1Menus1
  812.         cmp.w    #$01,d6
  813.         beq    Win1Menus2
  814.         bra    Window1IDCMP
  815. Win1Menus1:    cmp.w    #$00,d5
  816.         beq    DoLoad
  817.         cmp.w    #$01,d5
  818.         beq    Save
  819.         cmp.w    #$02,d5
  820.         beq    About
  821.         cmp.w    #$04,d5
  822.         beq    Print
  823.         cmp.w    #$06,d5
  824.         beq    Quit
  825.         bra    Window1IDCMP
  826. Win1Menus2:    cmp.w    #$00,d5
  827.         beq    SetSerial
  828.         cmp.w    #$01,d5
  829.         beq    SetPorts
  830.         bra    Window1IDCMP
  831.  
  832. DoLoad:        bsr    RemGads
  833.         clr.l    d0
  834.         bsr    Load
  835.         bsr    AddGads
  836.         bra    Window1IDCMP
  837.  
  838. VanillaKeys:    cmp.w    #$1b,d3            ;Escape
  839.         beq    Quit
  840.  
  841.         cmp.l    #'a',d3
  842.         bcs    VanillaKeys2
  843.         cmp.l    #'z',d3
  844.         bhi    VanillaKeys2
  845.         sub.l    #32,d3
  846.  
  847. VanillaKeys2:    cmp.w    #'S',d3
  848.         beq    Save
  849.         cmp.w    #'Q',d3
  850.         beq    Quit
  851.         cmp.w    #'N',d3
  852.         beq    PortOn
  853.         cmp.w    #'F',d3
  854.         beq    PortOff
  855.         cmp.w    #'G',d3
  856.         beq    TogglePort
  857.         bra    Window1IDCMP
  858.  
  859. RawKeys:    cmp.w    #$4c,d3            ;Arrow up
  860.         beq    SelectPrev
  861.         cmp.w    #$4d,d3            ;Arrow down
  862.         beq    SelectNext
  863.         cmp.w    #$4f,d3            ;Arrow left
  864.         beq    SelectPrevScr
  865.         cmp.w    #$4e,d3            ;Arrow right
  866.         beq    SelectNextScr
  867.         bra    Window1IDCMP
  868.  
  869. DoGads:        cmp.w    #20,$26(a5)
  870.         beq    PortOn
  871.         cmp.w    #21,$26(a5)
  872.         beq    PortOff
  873.         cmp.w    #22,$26(a5)
  874.         beq    TogglePort
  875.         cmp.w    #30,$26(a5)
  876.         beq    AllPortsOn
  877.         cmp.w    #31,$26(a5)
  878.         beq    AllPortsOff
  879.         cmp.w    #32,$26(a5)
  880.         beq    ToggleAll
  881.         cmp.w    #55,$26(a5)
  882.         beq    GetCurrentPort
  883.         cmp.w    #98,$26(a5)
  884.         beq    Save
  885.         cmp.w    #99,$26(a5)
  886.         beq    Quit
  887.         bra    Window1IDCMP
  888.  
  889. SetSerial:    move.w    #1,DisActive        ;Can't turn on/off
  890.         bsr    SleepPointer
  891.         bsr    MenusOff
  892.         bsr    RemGads
  893.  
  894.         bsr    CloseSerial
  895.  
  896.         bsr    OpenWin3
  897.         tst.l    d0
  898.         beq    NoWindow1
  899.  
  900.         bsr    SetSerGads
  901.  
  902. Window3IDCMP:    move.l    Window3,a3
  903.         bsr    C2GetMsg1
  904.  
  905.         tst.l    d0
  906.         beq    ShutDown
  907.  
  908.         cmp.l    #4,d0
  909.         beq    Window3IDCMP        ;Already done commodity or ARexx
  910.  
  911.         cmp.l    #REFRESHWINDOW,d2
  912. ;        beq    Refresher3
  913.         cmp.l    #GADGETUP,d2
  914.         beq    ActivateGads3
  915.         cmp.l    #CLOSEWINDOW,d2
  916.         beq    SetSerial_OUT
  917.         cmp.l    #VANILLAKEY,d2
  918.         beq    SetSerialKeys
  919.         cmp.l    #ACTIVEWINDOW,d2
  920.         beq    GoActGads3
  921.         bra    Window3IDCMP
  922.  
  923. Refresher3:    move.l    Window3,a0
  924.         lib    GadTools,GT_BeginRefresh
  925.         move.l    Window3,a0
  926.         move.l    #TRUE,d0
  927.         lib    GadTools,GT_EndRefresh
  928.         bra    Window3IDCMP
  929.  
  930. SetSerialKeys:    cmp.w    #$1b,d3
  931.         beq    SetSerial_OUT
  932.         cmp.l    #'a',d3
  933.         bcs    SetSerialKeys2
  934.         cmp.l    #'z',d3
  935.         bhi    SetSerialKeys2
  936.         sub.l    #32,d3
  937.  
  938. SetSerialKeys2:    cmp.w    #'O',d3
  939.         beq    SetSerialOK
  940.         cmp.w    #'C',d3
  941.         beq    SetSerial_OUT
  942.         bra    Window3IDCMP
  943.  
  944. GoActGads3:    bsr    ActGad3
  945.         bra    Window3IDCMP
  946.  
  947. ActivateGads3:    cmp.w    #96,$26(a5)        ;OK
  948.         beq    SetSerialOK
  949.  
  950.         cmp.w    #97,$26(a5)        ;Cancel
  951.         beq    SetSerial_OUT
  952.  
  953.         cmp.w    #2,$26(a5)
  954.         bne    Window3IDCMP
  955.  
  956.         move.l    (a5),a0            ;get next gad into a0
  957.         tst.l    (a5)
  958.         beq    ActivateGads3.02
  959.         move.l    SerGad3,a1
  960.         cmp.l    a5,a1
  961.         bne    ActivateGads3.1
  962. ActivateGads3.02: move.l SerGad1,a0
  963. ActivateGads3.1: move.l Window3,a1
  964.         sub.l    a2,a2
  965.         lib    Intuition,ActivateGadget
  966.  
  967.         bra    Window3IDCMP
  968.  
  969. ActGad3:    move.l    SerGad1,a0
  970.         move.l    Window3,a1
  971.         sub.l    a2,a2
  972.         lib    Intuition,ActivateGadget
  973.         rts
  974.  
  975. SetSerGads:    bsr    RemGads3
  976.  
  977.         lea.l    SerDevNBuffer1,a0
  978.         move.l    SerGadBuf1,a1
  979.         move.l    #GADLENG2,d0
  980.         lib    Exec,CopyMem
  981.  
  982.         bsr    AddGads3
  983.  
  984.         move.l    SerUnit,GadUnit
  985.  
  986.         move.l    SerGad2,a0
  987.         move.l    Window3,a1
  988.         sub.l    a2,a2
  989.         lea.l    SerGadTagList4,a3
  990.         lib    GadTools,GT_SetGadgetAttrsA
  991.  
  992.         move.l    Speed,GadSpeed
  993.  
  994.         move.l    SerGad3,a0
  995.         move.l    Window3,a1
  996.         sub.l    a2,a2
  997.         lea.l    SerGadTagList5,a3
  998.         lib    GadTools,GT_SetGadgetAttrsA
  999.         rts
  1000.  
  1001. SaveSerGads:    move.l    SerGadBuf1,a0
  1002.         lea.l    SerDevNBuffer1,a1
  1003.         move.l    #GADLENG2,d0
  1004.         lib    Exec,CopyMem
  1005.  
  1006.         move.l    SerGadInt2,a0
  1007.         move.l    (a0),SerUnit
  1008.  
  1009.         move.l    SerGadInt3,a0
  1010.         move.l    (a0),Speed
  1011.         rts
  1012.  
  1013. SetSerialOK:    clr.w    Saved
  1014.         bsr    SaveSerGads
  1015. ;        bra    SetSerial_OUT        ;Careful!
  1016.  
  1017. SetSerial_OUT:    bsr    CloseWin3
  1018.         bsr    AddGads
  1019.         bsr    MenusOn
  1020.         bsr    NormalPointer
  1021.         bsr    OpenSerial
  1022.         tst.l    d0
  1023.         beq    ShutDown
  1024.         clr.w    DisActive
  1025.         bra    Window1IDCMP
  1026.  
  1027. SetPorts:    clr.w    Saved
  1028.         move.w    #1,DisActive        ;Can't turn on/off
  1029.         bsr    SleepPointer
  1030.         bsr    MenusOff
  1031.         bsr    RemGads
  1032.  
  1033.         bsr    OpenWin2
  1034.         tst.l    d0
  1035.         beq    NoWindow1
  1036.         bsr    RemGads2
  1037.         bsr    SetStrGads
  1038.         bsr    AddGads2
  1039.  
  1040. Window2IDCMP:    move.l    Window2,a3
  1041.         bsr    C2GetMsg1
  1042.  
  1043.         tst.l    d0
  1044.         beq    ShutDown
  1045.  
  1046.         cmp.l    #4,d0
  1047.         beq    Window2IDCMP        ;Already done commodity or ARexx
  1048.  
  1049.         cmp.l    #GADGETUP,d2
  1050.         beq    ActivateGads2
  1051.         cmp.l    #CLOSEWINDOW,d2
  1052.         beq    Prefs_OUT
  1053.         cmp.l    #MENUPICK,d2
  1054.         beq    Win2Menus
  1055.         cmp.l    #VANILLAKEY,d2
  1056.         beq    SetPortKeys
  1057.         cmp.l    #ACTIVEWINDOW,d2
  1058.         beq    GoActGads2
  1059.         cmp.l    #REFRESHWINDOW,d2
  1060.         beq    Refresher2
  1061.         bra    Window2IDCMP
  1062.  
  1063. Refresher2:    move.l    Window2,a0
  1064.         lib    GadTools,GT_BeginRefresh
  1065.         move.l    Window2,a0
  1066.         move.l    #TRUE,d0
  1067.         lib    GadTools,GT_EndRefresh
  1068.         bra    Window2IDCMP
  1069.  
  1070. Win2Menus:    bsr    MenuNull
  1071.         cmp.w    #$00,d6
  1072.         beq    Win2Menus1
  1073.         bra    Window2IDCMP
  1074. Win2Menus1:    cmp.w    #$00,d5
  1075.         beq    DoPage1
  1076.         cmp.w    #$01,d5
  1077.         beq    DoPage2
  1078.         cmp.w    #$02,d5
  1079.         beq    DoPage3
  1080.         cmp.w    #$03,d5
  1081.         beq    DoPage4
  1082.         cmp.w    #$04,d5
  1083.         beq    DoPage5
  1084.         cmp.w    #$05,d5
  1085.         beq    DoPage6
  1086.         cmp.w    #$07,d5
  1087.         beq    Prefs_OUT
  1088.         bra    Window2IDCMP
  1089.  
  1090. DoPage1:    bsr    SaveStrGads
  1091.         bsr    RemGads2
  1092.         move.w    #0,Page
  1093.         bsr    SetStrGads
  1094.         bsr    AddGads2
  1095.         bra    Window2IDCMP
  1096.  
  1097. DoPage2:    bsr    SaveStrGads
  1098.         bsr    RemGads2
  1099.         move.w    #1,Page
  1100.         bsr    SetStrGads
  1101.         bsr    AddGads2
  1102.         bsr    ActGad2
  1103.         bra    Window2IDCMP
  1104.  
  1105. DoPage3:    bsr    SaveStrGads
  1106.         bsr    RemGads2
  1107.         move.w    #2,Page
  1108.         bsr    SetStrGads
  1109.         bsr    AddGads2
  1110.         bsr    ActGad2
  1111.         bra    Window2IDCMP
  1112.  
  1113. DoPage4:    bsr    SaveStrGads
  1114.         bsr    RemGads2
  1115.         move.w    #3,Page
  1116.         bsr    SetStrGads
  1117.         bsr    AddGads2
  1118.         bsr    ActGad2
  1119.         bra    Window2IDCMP
  1120.  
  1121. DoPage5:    bsr    SaveStrGads
  1122.         bsr    RemGads2
  1123.         move.w    #4,Page
  1124.         bsr    SetStrGads
  1125.         bsr    AddGads2
  1126.         bsr    ActGad2
  1127.         bra    Window2IDCMP
  1128.  
  1129. DoPage6:    bsr    SaveStrGads
  1130.         bsr    RemGads2
  1131.         move.w    #5,Page
  1132.         bsr    SetStrGads
  1133.         bsr    AddGads2
  1134.         bsr    ActGad2
  1135.         bra    Window2IDCMP
  1136.  
  1137. SaveStrGads:    lea.l    NameList,a2
  1138.         move.w    Page,d0
  1139.         mulu.w    #NUMGADS*GADLENG1,d0
  1140.         add.l    d0,a2            ;a2=start of strings
  1141.  
  1142.         move.l    StrGadBuf1,a0
  1143.         move.l    a2,a1
  1144.         move.l    #GADLENG1,d0
  1145.         add.l    d0,a2
  1146.         lib    Exec,CopyMem
  1147.  
  1148.         move.l    StrGadBuf2,a0
  1149.         move.l    a2,a1
  1150.         move.l    #GADLENG1,d0
  1151.         add.l    d0,a2
  1152.         lib    Exec,CopyMem
  1153.  
  1154.         move.l    StrGadBuf3,a0
  1155.         move.l    a2,a1
  1156.         move.l    #GADLENG1,d0
  1157.         add.l    d0,a2
  1158.         lib    Exec,CopyMem
  1159.  
  1160.         move.l    StrGadBuf4,a0
  1161.         move.l    a2,a1
  1162.         move.l    #GADLENG1,d0
  1163.         add.l    d0,a2
  1164.         lib    Exec,CopyMem
  1165.  
  1166.         move.l    StrGadBuf5,a0
  1167.         move.l    a2,a1
  1168.         move.l    #GADLENG1,d0
  1169.         add.l    d0,a2
  1170.         lib    Exec,CopyMem
  1171.  
  1172.         move.l    StrGadBuf6,a0
  1173.         move.l    a2,a1
  1174.         move.l    #GADLENG1,d0
  1175.         add.l    d0,a2
  1176.         lib    Exec,CopyMem
  1177.  
  1178.         move.l    StrGadBuf7,a0
  1179.         move.l    a2,a1
  1180.         move.l    #GADLENG1,d0
  1181.         add.l    d0,a2
  1182.         lib    Exec,CopyMem
  1183.  
  1184.         move.l    StrGadBuf8,a0
  1185.         move.l    a2,a1
  1186.         move.l    #GADLENG1,d0
  1187.         add.l    d0,a2
  1188.         lib    Exec,CopyMem
  1189.         rts
  1190.  
  1191. SetStrGads:    move.w    Page,d2
  1192.         mulu.w    #8,d2
  1193.  
  1194.         add.l    #1,d2
  1195.         move.l    d2,NumText
  1196.  
  1197.         move.l    NumGad1,a0
  1198.         move.l    Window2,a1
  1199.         sub.l    a2,a2
  1200.         lea.l    NumGadTagList1,a3
  1201.         lib    GadTools,GT_SetGadgetAttrsA
  1202.  
  1203.         add.l    #1,d2
  1204.         move.l    d2,NumText
  1205.  
  1206.         move.l    NumGad2,a0
  1207.         move.l    Window2,a1
  1208.         lib    GadTools,GT_SetGadgetAttrsA
  1209.  
  1210.         add.l    #1,d2
  1211.         move.l    d2,NumText
  1212.  
  1213.         move.l    NumGad3,a0
  1214.         move.l    Window2,a1
  1215.         lib    GadTools,GT_SetGadgetAttrsA
  1216.  
  1217.         add.l    #1,d2
  1218.         move.l    d2,NumText
  1219.  
  1220.         move.l    NumGad4,a0
  1221.         move.l    Window2,a1
  1222.         lib    GadTools,GT_SetGadgetAttrsA
  1223.  
  1224.         add.l    #1,d2
  1225.         move.l    d2,NumText
  1226.  
  1227.         move.l    NumGad5,a0
  1228.         move.l    Window2,a1
  1229.         lib    GadTools,GT_SetGadgetAttrsA
  1230.  
  1231.         add.l    #1,d2
  1232.         move.l    d2,NumText
  1233.  
  1234.         move.l    NumGad6,a0
  1235.         move.l    Window2,a1
  1236.         lib    GadTools,GT_SetGadgetAttrsA
  1237.  
  1238.         add.l    #1,d2
  1239.         move.l    d2,NumText
  1240.  
  1241.         move.l    NumGad7,a0
  1242.         move.l    Window2,a1
  1243.         lib    GadTools,GT_SetGadgetAttrsA
  1244.  
  1245.         add.l    #1,d2
  1246.         move.l    d2,NumText
  1247.  
  1248.         move.l    NumGad8,a0
  1249.         move.l    Window2,a1
  1250.         lib    GadTools,GT_SetGadgetAttrsA
  1251.  
  1252. ;Then put the according text strings
  1253.  
  1254.         lea.l    NameList,a2
  1255.         move.w    Page,d0
  1256.         mulu.w    #NUMGADS*GADLENG1,d0
  1257.         add.l    d0,a2            ;a2=start of strings
  1258.  
  1259.         move.l    a2,a0
  1260.         move.l    StrGadBuf1,a1
  1261.         move.l    #GADLENG1,d0
  1262.         add.l    d0,a2
  1263.         lib    Exec,CopyMem
  1264.  
  1265.         move.l    a2,a0
  1266.         move.l    StrGadBuf2,a1
  1267.         move.l    #GADLENG1,d0
  1268.         add.l    d0,a2
  1269.         lib    Exec,CopyMem
  1270.  
  1271.         move.l    a2,a0
  1272.         move.l    StrGadBuf3,a1
  1273.         move.l    #GADLENG1,d0
  1274.         add.l    d0,a2
  1275.         lib    Exec,CopyMem
  1276.  
  1277.         move.l    a2,a0
  1278.         move.l    StrGadBuf4,a1
  1279.         move.l    #GADLENG1,d0
  1280.         add.l    d0,a2
  1281.         lib    Exec,CopyMem
  1282.  
  1283.         move.l    a2,a0
  1284.         move.l    StrGadBuf5,a1
  1285.         move.l    #GADLENG1,d0
  1286.         add.l    d0,a2
  1287.         lib    Exec,CopyMem
  1288.  
  1289.         move.l    a2,a0
  1290.         move.l    StrGadBuf6,a1
  1291.         move.l    #GADLENG1,d0
  1292.         add.l    d0,a2
  1293.         lib    Exec,CopyMem
  1294.  
  1295.         move.l    a2,a0
  1296.         move.l    StrGadBuf7,a1
  1297.         move.l    #GADLENG1,d0
  1298.         add.l    d0,a2
  1299.         lib    Exec,CopyMem
  1300.  
  1301.         move.l    a2,a0
  1302.         move.l    StrGadBuf8,a1
  1303.         move.l    #GADLENG1,d0
  1304.         add.l    d0,a2
  1305.         lib    Exec,CopyMem
  1306.         rts
  1307.  
  1308. GoActGads2:    bsr    ActGad2
  1309.         bra    Window2IDCMP
  1310.  
  1311. Prefs_OUT:    bsr    SaveStrGads
  1312.         bsr    KillMem1
  1313.         bsr    MakePortList
  1314.         bsr    CloseWin2
  1315.         bsr    AddGads
  1316.         bsr    MenusOn
  1317.         bsr    NormalPointer
  1318.         clr.w    DisActive
  1319.         bra    Window1IDCMP
  1320.  
  1321. SetPortKeys:    cmp.w    #$1b,d3
  1322.         beq    Prefs_OUT
  1323.         bra    Window2IDCMP
  1324.  
  1325. ToFront:    move.l    Window1,a0
  1326.         lib    Intuition,WindowToFront
  1327.         rts
  1328. ToBack:        move.l    Window1,a0
  1329.         lib    Intuition,WindowToBack
  1330.         rts
  1331. Zoom:        move.l    Window1,a0
  1332.         lib    Intuition,ZipWindow
  1333.         rts
  1334.  
  1335. ActivateGads2:    cmp.w    #2,$26(a5)
  1336.         bne    Window2IDCMP
  1337.  
  1338.         cmp.l    #$00,(a5)
  1339.         beq    ActivateGads2.01
  1340.         move.l    (a5),a0
  1341.         move.l    StrGad8,a1
  1342.         cmp.l    a5,a1
  1343.         bne    ActivateGads2.1
  1344. ActivateGads2.01: move.l StrGad1,a0
  1345. ActivateGads2.1: move.l Window2,a1
  1346.         sub.l    a2,a2
  1347.         lib    Intuition,ActivateGadget
  1348.         bra    Window2IDCMP
  1349.  
  1350. ActGad2:    move.l    StrGad1,a0
  1351.         move.l    Window2,a1
  1352.         sub.l    a2,a2
  1353.         lib    Intuition,ActivateGadget
  1354.         rts
  1355.  
  1356. CX:        cmp.l    #CXM_COMMAND,d2
  1357.         beq    DoCXCommand
  1358.         cmp.l    #CXM_IEVENT,d2
  1359.         beq    DoCXAppear
  1360.         move.l    #4,d0
  1361.         rts                ;Unknown command
  1362.  
  1363. DoCXCommand:    cmp.l    #CXCMD_APPEAR,d3
  1364.         beq    DoCXAppear
  1365.         cmp.l    #CXCMD_DISAPPEAR,d3
  1366.         beq    DoCXDisappear
  1367.         cmp.l    #CXCMD_KILL,d3
  1368.         beq    DoCXKill
  1369.         cmp.l    #CXCMD_UNIQUE,d3
  1370.         beq    DoCXAppear
  1371.         cmp.l    #CXCMD_ENABLE,d3
  1372.         beq    DoCXEnable
  1373.         cmp.l    #CXCMD_DISABLE,d3
  1374.         beq    DoCXDisable
  1375.         move.l    #4,d0
  1376.         rts                ;Unknown message
  1377.  
  1378. DoCXKill:    clr.l    d0
  1379.         rts
  1380.  
  1381. DoCXAppear:    tst.l    Window1
  1382.         bne    DoCXAppear_OUT
  1383.         tst.w    DisActive
  1384.         bne    DoCXDisap_OUT
  1385.         clr.l    OptionIconify
  1386.         bsr    SetModes
  1387.         bsr    OpenWin1
  1388.         tst.l    d0
  1389.         bne    DoCXAppear_OUT
  1390.         sub.l    a0,a0
  1391.         lib    Intuition,DisplayBeep    ;Beep on error
  1392. DoCXAppear_OUT:    move.l    #4,d0
  1393.         rts
  1394.  
  1395. DoDoCXDisappear: bsr    DoCXDisappear
  1396.         bra    Window1IDCMP
  1397.  
  1398. DoCXDisappear:    tst.l    Window1
  1399.         beq    DoCXDisap_OUT
  1400.         tst.w    DisActive
  1401.         bne    DoCXDisap_OUT
  1402.         bsr    CheckModes
  1403.         bsr    CloseWin1
  1404. DoCXDisap_OUT:    move.l    #4,d0
  1405.         rts
  1406.  
  1407. DoCXEnable:    tst.w    DisActive
  1408.         bne    DoCXEnable1
  1409.         bsr    CXEnable
  1410. DoCXEnable_OUT:    move.l    #4,d0
  1411.         rts
  1412. DoCXEnable1:    bsr    CXDisable        ;Can't turn on
  1413.         bra    DoCXEnable_OUT
  1414.  
  1415. DoCXDisable:    tst.w    DisActive
  1416.         bne    DoCXDisable1
  1417.         bsr    CXDisable
  1418. DoCXDis_OUT:    move.l    #4,d0
  1419.         rts
  1420. DoCXDisable1:    bsr    CXEnable        ;Can't turn off
  1421.         bra    DoCXDis_OUT
  1422.  
  1423. CXEnable:    move.w    #1,OnOff
  1424.         move.l    CXBroker1,a0
  1425.         move.l    #TRUE,d0
  1426.         lib    Commodities,ActivateCxObj
  1427.         rts
  1428.  
  1429. CXDisable:    clr.w    OnOff
  1430.         move.l    CXBroker1,a0
  1431.         move.l    #FALSE,d0
  1432.         lib    Commodities,ActivateCxObj
  1433.         rts
  1434.  
  1435. SelectPrev:    cmp.l    #1,CurrentPort
  1436.         beq    SelectPrev_OUT
  1437.         sub.l    #1,CurrentPort
  1438.         bsr    ChangeSelect
  1439.  
  1440. SelectPrev_OUT:    move.l    CurrentPort,d3
  1441.         sub.l    #1,d3
  1442.         bra    GetCurrentPort
  1443.  
  1444. SelectNext:    cmp.l    #PortAmount,CurrentPort
  1445.         beq    SelectNext_OUT
  1446.         add.l    #1,CurrentPort
  1447.         bsr    ChangeSelect
  1448.  
  1449. SelectNext_OUT:    move.l    CurrentPort,d3
  1450.         sub.l    #1,d3
  1451.         bra    GetCurrentPort
  1452.  
  1453. SelectPrevScr:    cmp.l    #ListAmount+1,CurrentPort
  1454.         bcs    SelectPrevScr1
  1455.         sub.l    #ListAmount,CurrentPort
  1456.         bsr    ChangeSelect
  1457.         bra    SelectPScr_OUT
  1458. SelectPrevScr1:    move.l    #1,CurrentPort
  1459.         bsr    ChangeSelect
  1460.  
  1461. SelectPScr_OUT:    move.l    CurrentPort,d3
  1462.         sub.l    #1,d3
  1463.         bra    GetCurrentPort
  1464.  
  1465. SelectNextScr:    cmp.l    #PortAmount-ListAmount,CurrentPort
  1466.         bhi    SelectNScr_OUT
  1467.         add.l    #ListAmount,CurrentPort
  1468.         bsr    ChangeSelect
  1469.  
  1470. SelectNScr_OUT:    move.l    CurrentPort,d3
  1471.         sub.l    #1,d3
  1472.         bra    GetCurrentPort
  1473.  
  1474. ChangeSelect:    move.l    CurrentPort,L1SelTagsNum
  1475.         sub.l    #1,L1SelTagsNum
  1476.  
  1477.         move.l    L1SelTagsNum,L1TopTagNum    ;Can we scroll down?
  1478.         cmp.l    #PortAmount-ListAmount/2,L1TopTagNum
  1479.         bcs    ChangeSelect1
  1480.         move.l    #34,L1TopTagNum
  1481.         bra    ChangeSelect3
  1482.  
  1483. ChangeSelect1:    cmp.l    #ListAmount/2,L1TopTagNum        ;Can we scroll up?
  1484.         bhi    ChangeSelect2
  1485.         clr.l    L1TopTagNum
  1486.         bra    ChangeSelect3
  1487.  
  1488. ChangeSelect2:    sub.l    #ListAmount/2,L1TopTagNum
  1489.  
  1490. ChangeSelect3:    move.l    ListGad1,a0
  1491.         move.l    Window1,a1
  1492.         sub.l    a2,a2
  1493.         lea.l    List1SelTags,a3
  1494.         lib    GadTools,GT_SetGadgetAttrsA
  1495.         rts
  1496.  
  1497. PortOn:        clr.w    Saved
  1498.         move.l    CurrentPort,d0
  1499.         bsr    ConvPort2Addr
  1500.         tst.l    d0
  1501.         bmi    PortError
  1502.  
  1503.         bset.b    d0,(a0)        ;Turn bit on
  1504.  
  1505.         bsr    SendPort
  1506.  
  1507.         lea.l    OnText1,a0
  1508.         bsr    SetStatus
  1509.         bra    Window1IDCMP
  1510.  
  1511. PortOff:    clr.w    Saved
  1512.         move.l    CurrentPort,d0
  1513.         bsr    ConvPort2Addr
  1514.         tst.l    d0
  1515.         bmi    PortError
  1516.  
  1517.         bclr.b    d0,(a0)        ;Turn bit on
  1518.  
  1519.         bsr    SendPort
  1520.  
  1521.         lea.l    OffText1,a0
  1522.         bsr    SetStatus
  1523.         bra    Window1IDCMP
  1524.  
  1525. TogglePort:    clr.w    Saved
  1526.         move.l    CurrentPort,d0
  1527.         bsr    ConvPort2Addr
  1528.         tst.l    d0
  1529.         bmi    PortError
  1530.  
  1531.         bchg.b    d0,(a0)        ;Toggle bit
  1532.  
  1533.         push    d0/a0
  1534.         bsr    SendPort
  1535.         pull    d0/a0
  1536.  
  1537.         btst.b    d0,(a0)        ;Test current
  1538.         beq    TogglePort2
  1539.         lea.l    OnText1,a0
  1540.         bra    TogglePort3
  1541.  
  1542. TogglePort2:    lea.l    OffText1,a0
  1543. TogglePort3:    bsr    SetStatus
  1544.         bra    Window1IDCMP
  1545.  
  1546. AllPortsOn:    clr.w    Saved
  1547.  
  1548.         move.l    #$ffffffff,Port1A
  1549.         move.w    #$ffff,Port2B
  1550.  
  1551.         bsr    SendAllPorts
  1552.  
  1553.         lea.l    OnText1,a0        ;Send info to user
  1554.         bsr    SetStatus
  1555.  
  1556.         bra    Window1IDCMP
  1557.  
  1558. AllPortsOff:    clr.w    Saved
  1559.  
  1560.         clr.l    Port1A
  1561.         clr.w    Port2B
  1562.  
  1563.         bsr    SendAllPorts
  1564.  
  1565.         lea.l    OffText1,a0        ;Send info to user
  1566.         bsr    SetStatus
  1567.  
  1568.         bra    Window1IDCMP
  1569.  
  1570. ToggleAll:    clr.w    Saved
  1571.  
  1572.         lea.l    Port1A,a0
  1573.         clr.l    d0
  1574.         clr.l    d1
  1575.  
  1576. ToggleAll2:    bchg.b    d0,(a0)
  1577.         add.l    #1,d0
  1578.         cmp.l    #8,d0
  1579.         bne    ToggleAll2
  1580.  
  1581.         tst.l    d1
  1582.         beq    ToggleAll3
  1583.  
  1584.         cmp.l    #1,d1
  1585.         beq    ToggleAll4
  1586.  
  1587.         cmp.l    #2,d1
  1588.         beq    ToggleAll5
  1589.  
  1590.         cmp.l    #3,d1
  1591.         beq    ToggleAll6
  1592.  
  1593.         cmp.l    #4,d1
  1594.         beq    ToggleAll7
  1595.  
  1596.         bra    ToggleAll8
  1597.  
  1598. ToggleAll3:    lea.l    Port1B,a0
  1599.         clr.l    d0
  1600.         move.l    #1,d1
  1601.         bra    ToggleAll2
  1602.  
  1603. ToggleAll4:    lea.l    Port1C,a0
  1604.         clr.l    d0
  1605.         move.l    #2,d1
  1606.         bra    ToggleAll2
  1607.  
  1608. ToggleAll5:    lea.l    Port2A,a0
  1609.         clr.l    d0
  1610.         move.l    #3,d1
  1611.         bra    ToggleAll2
  1612.  
  1613. ToggleAll6:    lea.l    Port2B,a0
  1614.         clr.l    d0
  1615.         move.l    #4,d1
  1616.         bra    ToggleAll2
  1617.  
  1618. ToggleAll7:    lea.l    Port2C,a0
  1619.         clr.l    d0
  1620.         move.l    #5,d1
  1621.         bra    ToggleAll2
  1622.  
  1623. ToggleAll8:    move.l    CurrentPort,d0
  1624.         bsr    ConvPort2Addr
  1625.         tst.l    d0
  1626.         bmi    PortError
  1627.  
  1628.         btst.b    d0,(a0)        ;Test current
  1629.         beq    ToggleAll9
  1630.         lea.l    OnText1,a0
  1631.         bsr    SetStatus
  1632.         bra    ToggleAll10
  1633.  
  1634. ToggleAll9:    lea.l    OffText1,a0
  1635.         bsr    SetStatus
  1636.  
  1637. ToggleAll10:    bsr    SendAllPorts
  1638.         bra    Window1IDCMP
  1639.  
  1640. SendAllPorts:    move.b    #1,PortNum
  1641.         move.b    AText1,Port
  1642.         lea.l    Port1A,a0        ;Change all
  1643.         bsr    SendPort
  1644.  
  1645.         move.b    BText1,Port
  1646.         lea.l    Port1B,a0
  1647.         bsr    SendPort
  1648.  
  1649.         move.b    CText1,Port
  1650.         lea.l    Port1C,a0
  1651.         bsr    SendPort
  1652.  
  1653.         move.b    #2,PortNum
  1654.         move.b    AText1,Port
  1655.         lea.l    Port2A,a0
  1656.         bsr    SendPort
  1657.  
  1658.         move.b    BText1,Port
  1659.         lea.l    Port2B,a0
  1660.         bsr    SendPort
  1661.  
  1662.         move.b    CText1,Port
  1663.         lea.l    Port2C,a0
  1664.         bsr    SendPort
  1665.         rts
  1666.  
  1667. ;Inputs    a0 = Address to port
  1668. ;
  1669. ;PortNum & Port must be valid (ConvPort2Addr does this)
  1670.  
  1671. ;CHANGE: Change this to send the data to the serial port and later on add
  1672. ;support for checksums
  1673.  
  1674. SendPort:    move.b    (a0),Status
  1675.         bsr    Writer
  1676.         rts
  1677.  
  1678. PortError:    sub.l    a0,a0
  1679.         lib    Intuition,DisplayBeep
  1680.         lea.l    ErrorText1,a0
  1681.         bsr    SetStatus
  1682.         bra    Window1IDCMP
  1683.  
  1684. ;Converts port number into address of status and according bit number
  1685. ;
  1686. ;Input    d0 = Port number
  1687. ;
  1688. ;Output    d0 = Bit number
  1689. ;    a0 = Status address
  1690.  
  1691. ConvPort2Addr:    cmp.l    #0,d0
  1692.         bls    ConvPortError
  1693.         cmp.l    #9,d0
  1694.         bcs    ConvPort2Addr2        ;Ports 1-8
  1695.         cmp.l    #17,d0
  1696.         bcs    ConvPort2Addr3        ;Ports 9-16
  1697.         cmp.l    #25,d0
  1698.         bcs    ConvPort2Addr4        ;Ports 17-24
  1699.         cmp.l    #33,d0
  1700.         bcs    ConvPort2Addr5        ;Ports 25-32
  1701.         cmp.l    #41,d0
  1702.         bcs    ConvPort2Addr6        ;Ports 33-40
  1703.         cmp.l    #40,d0
  1704.         bhi    ConvPort2Addr7        ;Ports 41-48
  1705. ConvPortError:    move.l    #-1,d0            ;Error! (Might add status gad)
  1706.         bra    ConvPort2Addr8
  1707. ConvPort2Addr2:    sub.w    #1,d0            ;Get bit number
  1708.         lea.l    Port1A,a0        ;Get port status address
  1709.         move.b    #1,PortNum
  1710.         move.b    AText1,Port
  1711.         bra    ConvPort2Addr8
  1712. ConvPort2Addr3:    sub.w    #1*8+1,d0        ;Get bit number
  1713.         lea.l    Port1B,a0
  1714.         move.b    #1,PortNum
  1715.         move.b    BText1,Port
  1716.         bra    ConvPort2Addr8
  1717. ConvPort2Addr4:    sub.w    #2*8+1,d0        ;Get bit number
  1718.         lea.l    Port1C,a0
  1719.         move.b    #1,PortNum
  1720.         move.b    CText1,Port
  1721.         bra    ConvPort2Addr8
  1722. ConvPort2Addr5:    sub.w    #3*8+1,d0        ;Get bit number
  1723.         lea.l    Port2A,a0
  1724.         move.b    #2,PortNum
  1725.         move.b    AText1,Port
  1726.         bra    ConvPort2Addr8
  1727. ConvPort2Addr6:    sub.w    #4*8+1,d0        ;Get bit number
  1728.         lea.l    Port2B,a0
  1729.         move.b    #2,PortNum
  1730.         move.b    BText1,Port
  1731.         bra    ConvPort2Addr8
  1732. ConvPort2Addr7:    sub.w    #5*8+1,d0        ;Get bit number
  1733.         lea.l    Port2C,a0
  1734.         move.b    #2,PortNum
  1735.         move.b    CText1,Port
  1736. ;        bra    ConvPort2Addr8        ;Careful!
  1737. ConvPort2Addr8:    rts
  1738.  
  1739. Load:        cmp.l    #START_LOAD,d0
  1740.         bne    Load1
  1741.         move.l    FromFile,d1        ;If set to something else
  1742.         bne    Load2
  1743.         lea.l    PrefsName,a0
  1744.         move.l    a0,d1
  1745.         bra    Load2
  1746.  
  1747. Load1:        move.l    AslReq,a0
  1748.         lea.l    LoadReqTags,a1
  1749.         lib    Asl,AslRequest
  1750.         tst.l    d0
  1751.         beq    Load_OUT0.1
  1752.  
  1753.         move.l    AslReq,a2
  1754.         move.l    rf_Dir(a2),d1
  1755.         move.l    #ACCESS_READ,d2
  1756.         lib    Dos,Lock
  1757.         move.l    d0,LoadLock
  1758.         beq    Load_ERR1
  1759.  
  1760.         move.l    LoadLock,d1
  1761.         lib    Dos,CurrentDir
  1762.         move.l    d0,LoadOldLock
  1763.  
  1764.         move.l    AslReq,a2
  1765.         move.l    rf_File(a2),d1
  1766.  
  1767. Load2:        move.l    #MODE_OLDFILE,d2
  1768.         lib    Dos,Open
  1769.         move.l    d0,PrefsFile
  1770.         beq    Load_ERR1
  1771.  
  1772.         move.l    PrefsFile,d1
  1773.         lea.l    Prefs,a0
  1774.         move.l    a0,d2
  1775.         move.l    #4,d3
  1776.         lib    Dos,Read
  1777.         cmp.l    #4,d0
  1778.         bne    Load_ERR2
  1779.  
  1780.         cmp.l    #CCFileVersion,Prefs
  1781.         bne    Load_ERR3
  1782.  
  1783.         move.l    PrefsFile,d1
  1784.         add.l    #4,d2
  1785.         move.l    #PrefsSize-4,d3
  1786.         lib    Dos,Read
  1787.         cmp.l    #PrefsSize-4,d0
  1788.         bne    Load_ERR2
  1789.  
  1790. Load3:        bsr    SetModes        ;fixes startup datafile bug
  1791.  
  1792.         move.w    #1,Saved
  1793.  
  1794. ;Close file
  1795.  
  1796. Load_OUT0.1:    move.l    PrefsFile,d1
  1797.         beq    Load_OUT0.2
  1798.         lib    Dos,Close
  1799.         clr.l    PrefsFile
  1800.  
  1801. ;change back to dir where we started from and cleanup locks
  1802.  
  1803. Load_OUT0.2:    move.l    LoadOldLock,d1
  1804.         beq    Load_OUT0.3
  1805.         lib    Dos,CurrentDir
  1806.         clr.l    LoadOldLock
  1807. Load_OUT0.3:    move.l    LoadLock,d1
  1808.         beq    Load_OUT0.4
  1809.         lib    Dos,UnLock
  1810.         clr.l    LoadLock
  1811. Load_OUT0.4:
  1812.  
  1813. Load_OUT:    rts
  1814.  
  1815. Load_ERR1:    lea.l    File_ERRTxt1,a1
  1816.         sub.l    a2,a2
  1817.         lea.l    OKTxt,a3
  1818.         bsr    DoAutoRequest
  1819.         bra    Load3
  1820.  
  1821. Load_ERR2:    lea.l    File_ERRTxt2,a1
  1822.         sub.l    a2,a2
  1823.         lea.l    OKTxt,a3
  1824.         bsr    DoAutoRequest
  1825.         bra    Load3
  1826.  
  1827. Load_ERR3:    lea.l    File_ERRTxt3,a1
  1828.         sub.l    a2,a2
  1829.         lea.l    OKTxt,a3
  1830.         bsr    DoAutoRequest
  1831.         bra    Load3
  1832.  
  1833. Save:        bsr    CheckModes
  1834.  
  1835.         move.l    AslReq,a0
  1836.         lea.l    SaveReqTags,a1
  1837.         lib    Asl,AslRequest
  1838.         tst.l    d0
  1839.         beq    Save_OUT
  1840.  
  1841.         move.l    AslReq,a2
  1842.         move.l    rf_Dir(a2),d1
  1843.         move.l    #ACCESS_READ,d2
  1844.         lib    Dos,Lock
  1845.         move.l    d0,LoadLock
  1846.         beq    Save_ERR1
  1847.  
  1848.         move.l    LoadLock,d1
  1849.         lib    Dos,CurrentDir
  1850.         move.l    d0,LoadOldLock
  1851.  
  1852.         move.l    AslReq,a2
  1853.         move.l    rf_File(a2),d1
  1854.         move.l    #MODE_NEWFILE,d2
  1855.         lib    Dos,Open
  1856.         move.l    d0,PrefsFile
  1857.         beq    Save_ERR1
  1858.  
  1859.         move.l    #CCFileVersion,Prefs
  1860.  
  1861.         move.l    PrefsFile,d1
  1862.         lea.l    Prefs,a0
  1863.         move.l    a0,d2
  1864.         move.l    #PrefsSize,d3
  1865.         lib    Dos,Write
  1866.         cmp.l    #PrefsSize,d0
  1867.         bne    Save_ERR2
  1868.  
  1869. Save2:        move.w    #1,Saved
  1870.  
  1871. ;change back to dir where we started from and cleanup locks
  1872.  
  1873. Save_OUT0.2:    move.l    LoadOldLock,d1
  1874.         beq    Save_OUT0.3
  1875.         lib    Dos,CurrentDir
  1876.         clr.l    LoadOldLock
  1877. Save_OUT0.3:    move.l    LoadLock,d1
  1878.         beq    Save_OUT0.4
  1879.         lib    Dos,UnLock
  1880.         clr.l    LoadLock
  1881. Save_OUT0.4:
  1882.  
  1883. Save_OUT:    move.l    PrefsFile,d1
  1884.         beq    Save_OUT1
  1885.         lib    Dos,Close
  1886.         clr.l    PrefsFile
  1887. Save_OUT1:    bra    Window1IDCMP
  1888.  
  1889. Save_ERR1:    lea.l    File_ERRTxt1,a1
  1890.         move.l    #$00,a2
  1891.         lea.l    OKTxt,a3
  1892.         bsr    DoAutoRequest
  1893.         clr.w    Saved
  1894.         bra    Save_OUT0.2
  1895.  
  1896. Save_ERR2:    lea.l    File_ERRTxt2,a1
  1897.         move.l    #$00,a2
  1898.         lea.l    OKTxt,a3
  1899.         bsr    DoAutoRequest
  1900.         clr.w    Saved
  1901.         bra    Save_OUT0.2
  1902.  
  1903. Print:        move.l    AslReq,a0
  1904.         lea.l    PrintReqTags,a1
  1905.         lib    Asl,AslRequest
  1906.         tst.l    d0
  1907.         beq    Print_OUT
  1908.  
  1909.         move.l    AslReq,a2
  1910.         move.l    rf_Dir(a2),d1
  1911.         beq    Print1
  1912.         move.l    #ACCESS_READ,d2
  1913.         lib    Dos,Lock
  1914.         move.l    d0,LoadLock
  1915.         beq    Print_ERR1
  1916.  
  1917.         move.l    LoadLock,d1
  1918.         lib    Dos,CurrentDir
  1919.         move.l    d0,LoadOldLock
  1920.  
  1921. Print1:        move.l    AslReq,a2
  1922.         move.l    rf_File(a2),d1
  1923.         move.l    #MODE_NEWFILE,d2
  1924.         lib    Dos,Open
  1925.         move.l    d0,PrintFile
  1926.         beq    Print_ERR1
  1927.  
  1928.         lea.l    PrintHeader1,a0
  1929.         bsr    DoPrint
  1930.  
  1931.         lea.l    NameList,a2
  1932.         move.l    #1,d3
  1933.  
  1934. Print2:        move.l    d3,PrintBuffer1        ;Port number
  1935.  
  1936.         move.l    a2,PrintBuffer2        ;Name for port
  1937.         tst.b    (a2)
  1938.         bne    Print3
  1939.         lea.l    EmptyText1,a0
  1940.         move.l    a0,PrintBuffer2
  1941.  
  1942. Print3:        bsr    FormatPrint        ;Format current line
  1943.  
  1944.         lea.l    PrintBuffer3,a0
  1945.         bsr    DoPrint            ;Print current line
  1946.         tst.l    d0
  1947.         bne    Print_ERR2        ;An error occured
  1948.  
  1949.         lea.l    CRLFText1,a0
  1950.         bsr    DoPrint
  1951.  
  1952.         add.l    #GADLENG1,a2        ;Get start of next port
  1953.  
  1954.         add.l    #1,d3            ;Increase port number
  1955.         cmp.l    #PortAmount+1,d3    ;Was that the last one?
  1956.         bcs    Print2
  1957.  
  1958.         bra    Print_OUT
  1959.  
  1960. FormatPrint:    push    d3/a0-a4
  1961.  
  1962.         lea.l    PrintBuffer3,a0
  1963.         move.l    #PRINT_BUF_SIZE,d0
  1964. FormatPrint1:    clr.b    (a0)+
  1965.         dbf    d0,FormatPrint1
  1966.  
  1967.         lea.l    fstrl1,a0        ;HEX->ASCII
  1968.         lea.l    PrintBuffer1,a1        ;Stuff to print
  1969.         lea.l    PutChProc,a2
  1970.         lea.l    PrintBuffer3,a3        ;Destination
  1971.         lib    Exec,RawDoFmt
  1972.  
  1973.         pull    d3/a0-a4
  1974.         rts
  1975.  
  1976. ;Give this the pointer to text to print in a0
  1977.  
  1978. DoPrint:    push    d3/a0-a4
  1979.         move.l    PrintFile,d1
  1980.         move.l    a0,d2
  1981.         bsr    GetLength
  1982.         move.l    d0,d3
  1983.         lib    Dos,Write
  1984.         cmp.l    d3,d0
  1985.         bne    Print_ERR2
  1986.         clr.l    d0
  1987.         pull    d3/a0-a4
  1988.         rts
  1989.  
  1990. DoPrint2:    move.l    #-1,d0
  1991.         rts
  1992.  
  1993. Print_OUT:    move.l    LoadOldLock,d1
  1994.         beq    Print_OUT0.3
  1995.         lib    Dos,CurrentDir
  1996.         clr.l    LoadOldLock
  1997.  
  1998. Print_OUT0.3:    move.l    LoadLock,d1
  1999.         beq    Print_OUT0.4
  2000.         lib    Dos,UnLock
  2001.         clr.l    LoadLock
  2002.  
  2003. Print_OUT0.4:    move.l    PrintFile,d1
  2004.         beq    Print_OUT1
  2005.         lib    Dos,Close
  2006.         clr.l    PrintFile
  2007. Print_OUT1:    bra    Window1IDCMP
  2008.  
  2009. Print_ERR1:    lea.l    Print_ERRTxt1,a1
  2010.         move.l    #$00,a2
  2011.         lea.l    OKTxt,a3
  2012.         bsr    DoAutoRequest
  2013.         bra    Print_OUT
  2014.  
  2015. Print_ERR2:    lea.l    Print_ERRTxt2,a1
  2016.         move.l    #$00,a2
  2017.         lea.l    OKTxt,a3
  2018.         bsr    DoAutoRequest
  2019.         bra    Print_OUT
  2020.  
  2021. About:        bsr    SleepPointer
  2022.         bsr    MenusOff
  2023.         bsr    RemGads
  2024.  
  2025.         move.l    Window1,a0
  2026.         lea.l    AboutTxt1,a1
  2027.         sub.l    a2,a2        ;positive text
  2028.         lea.l    OKTxt,a3    ;a bit the wrong way around but...
  2029.         clr.l    d0
  2030.         clr.l    d1
  2031.         move.l    #320,d2
  2032.         move.l    #$50,d3
  2033.         lib    Intuition,AutoRequest
  2034.         bsr    AddGads
  2035.         bsr    MenusOn
  2036.         bsr    NormalPointer
  2037.         bra    Window1IDCMP
  2038.  
  2039. ;This is emergency exit, that's why it changes the Saved-flag
  2040.  
  2041. Break:        lea.l    BreakText1,a0
  2042.         bsr    Printer
  2043.         move.l    #CLOSEWINDOW,d2        ;fake closewindow...
  2044.         move.l    #-1,d0
  2045.         move.w    #1,Saved
  2046.         rts
  2047.  
  2048. RemGads:    move.l    Window1,a0
  2049.         lea.l    glist,a1
  2050.         sub.l    a2,a2
  2051.         move.l    #-1,d0
  2052.         lib    Intuition,RemoveGList
  2053.         rts
  2054.  
  2055. AddGads:    move.l    Window1,a0
  2056.         lea.l    glist,a1
  2057.         sub.l    a2,a2
  2058.         move.l    #-1,d0
  2059.         move.l    #-1,d1
  2060.         lib    Intuition,AddGList
  2061.  
  2062.         lea.l    glist,a0
  2063.         move.l    Window1,a1
  2064.         sub.l    a2,a2
  2065.         move.l    #-1,d0
  2066.         lib    Intuition,RefreshGList
  2067.  
  2068.         move.l    Window1,a0
  2069.         sub.l    a1,a1
  2070.         lib    GadTools,GT_RefreshWindow
  2071.         rts
  2072.  
  2073. List1Off:    push    a3
  2074.         move.l    ListGad1,a0
  2075.         move.l    Window1,a1
  2076.         sub.l    a2,a2
  2077.         lea.l    ListOffTags,a3
  2078.         lib    GadTools,GT_SetGadgetAttrsA
  2079.         pull    a3
  2080.         rts
  2081.  
  2082. List1On:    push    a3
  2083.         move.l    CurrentPort,L1SelTagsNum
  2084.         sub.l    #1,L1SelTagsNum
  2085.         move.l    L1SelTagsNum,L1TopTagNum
  2086.         move.l    ListGad1,a0
  2087.         move.l    Window1,a1
  2088.         sub.l    a2,a2
  2089.         lea.l    List1OnTags,a3
  2090.         lib    GadTools,GT_SetGadgetAttrsA
  2091.         pull    a3
  2092.         rts
  2093.  
  2094. RemGads2:    move.l    Window2,a0
  2095.         lea.l    glist2,a1
  2096.         sub.l    a2,a2
  2097.         move.l    #-1,d0
  2098.         lib    Intuition,RemoveGList
  2099.         rts
  2100.  
  2101. AddGads2:    move.l    Window2,a0
  2102.         lea.l    glist2,a1
  2103.         sub.l    a2,a2
  2104.         move.l    #-1,d0
  2105.         move.l    #-1,d1
  2106.         lib    Intuition,AddGList
  2107.  
  2108.         lea.l    glist2,a0
  2109.         move.l    Window2,a1
  2110.         sub.l    a2,a2
  2111.         move.l    #-1,d0
  2112.         lib    Intuition,RefreshGList
  2113.  
  2114.         move.l    Window2,a0
  2115.         sub.l    a1,a1
  2116.         lib    GadTools,GT_RefreshWindow
  2117.         rts
  2118.  
  2119. RemGads3:    move.l    Window3,a0
  2120.         lea.l    glist3,a1
  2121.         sub.l    a2,a2
  2122.         move.l    #-1,d0
  2123.         lib    Intuition,RemoveGList
  2124.         rts
  2125.  
  2126. AddGads3:    move.l    Window3,a0
  2127.         lea.l    glist3,a1
  2128.         sub.l    a2,a2
  2129.         move.l    #-1,d0
  2130.         move.l    #-1,d1
  2131.         lib    Intuition,AddGList
  2132.  
  2133.         lea.l    glist3,a0
  2134.         move.l    Window3,a1
  2135.         sub.l    a2,a2
  2136.         move.l    #-1,d0
  2137.         lib    Intuition,RefreshGList
  2138.  
  2139.         move.l    Window3,a0
  2140.         sub.l    a1,a1
  2141.         lib    GadTools,GT_RefreshWindow
  2142.         rts
  2143.  
  2144. GetCurrentPort:    move.l    d3,CurrentPort
  2145.         add.l    #1,CurrentPort
  2146.         move.l    d3,PortPointer
  2147.         add.l    #1,PortPointer
  2148.         move.l    PortGad1,a0
  2149.         move.l    Window1,a1
  2150.         sub.l    a2,a2
  2151.         lea.l    PortGadTagList,a3
  2152.         lib    GadTools,GT_SetGadgetAttrsA
  2153.         move.l    CurrentPort,d0
  2154.         bsr    ConvPort2Addr
  2155.  
  2156.         btst.b    d0,(a0)
  2157.         beq    GetCurPort2
  2158.         lea.l    OnText1,a0
  2159.         bsr    SetStatus
  2160.         bra    GetCurPort_OUT
  2161.  
  2162. GetCurPort2:    lea.l    OffText1,a0
  2163.         bsr    SetStatus
  2164.  
  2165. GetCurPort_OUT:    bra    Window1IDCMP
  2166.  
  2167. ;Inputs    a0 = Pointer to info text, or NULL to clear.
  2168.  
  2169. SetStatus:    move.l    a0,StatusPointer
  2170.         move.l    StatusGad1,a0
  2171.         move.l    Window1,a1
  2172.         sub.l    a2,a2
  2173.         lea.l    StatusGadTagList,a3
  2174.         lib    GadTools,GT_SetGadgetAttrsA
  2175.         rts
  2176.  
  2177. SetModes:    tst.l    Window1
  2178.         beq    SetModes_OUT
  2179.         move.l    Window1,a0
  2180.         move.w    Alt1XPos,d0
  2181.         move.w    Alt1YPos,d1
  2182.         move.w    wd_Width(a0),d2
  2183.         move.w    wd_Height(a0),d3
  2184.         lib    Intuition,ChangeWindowBox
  2185.         rts
  2186. SetModes_OUT:    move.l    Alt1XPos,NewWindow1
  2187.         rts
  2188.  
  2189. CheckModes:    move.l    Window1,a0
  2190.         move.l    wd_LeftEdge(a0),Alt1XY
  2191.         rts
  2192.  
  2193. ;Add all #PortAmount nodes to the portlist
  2194.  
  2195. MakePortList:    lea.l    NameList,a3
  2196.         clr.l    d3
  2197.         bsr    List1Off
  2198.  
  2199. MakePortList2:    bsr    Add
  2200.         add.l    #GADLENG1,a3
  2201.         add.l    #1,d3
  2202.         cmp.l    #PortAmount,d3
  2203.         bcs    MakePortList2
  2204.         bsr    List1On
  2205.         rts
  2206.  
  2207. ;This adds an entry to the portlist
  2208. ;
  2209. ;Input    a3 = Name of this node
  2210.  
  2211. Add:        push    d3/a3
  2212.         move.l    #LN_SIZE,d0        ;reserve memory for node
  2213.         move.l    #MEMF_CLEAR!MEMF_PUBLIC,d1
  2214.         lib    Exec,AllocMem
  2215.         tst.l    d0
  2216.         bne    Add1.1
  2217.         bsr    NoMem1
  2218.         rts
  2219. Add1.1:        move.l    d0,a2            ;Memory to a2
  2220.         lea.l    PortList,a0        ;Get list
  2221.         move.l    a2,a1            ;a0=list, a1=node
  2222.         ADDTAIL                ;Add node to list
  2223.  
  2224.         move.l    a3,a1            ;Get name address
  2225.         tst.b    (a3)            ;If no name
  2226.         bne    Add1.2            ;then use '<Empty>'
  2227.         lea.l    EmptyText1,a1        ;as a default string
  2228. Add1.2:        move.l    a1,LN_NAME(a2)        ;Put name in LN_NAME
  2229.         pull    d3/a3
  2230.         rts
  2231.  
  2232. KillMem1:    lea.l    PortList,a3        ;Get list
  2233.         IFEMPTY    a3,KillMem1_OUT        ;See if empty
  2234.  
  2235.         TSTNODE    a3,a2            ;Test and get next node
  2236.         beq    KillMem1_OUT        ;(We are at end of list)
  2237.         move.l    a2,a1            ;Get node
  2238.         REMOVE                ;Remove from list
  2239.  
  2240.         move.l    a2,a1            ;Get address of node
  2241.         move.l    #LN_SIZE,d0        ;Get size
  2242.         lib    Exec,FreeMem        ;Free memory used
  2243.         bra    KillMem1        ;Do rest
  2244. KillMem1_OUT:    rts
  2245.  
  2246. ClearSer:    move.l    IORequest,a1
  2247.         lib    Exec,CheckIO
  2248.         tst.l    d0
  2249.         bne    ClearSer_OUT
  2250.         move.l    IORequest,a1
  2251.         lib    Exec,WaitIO
  2252.         move.l    IORequest,a1
  2253.         ABORTIO
  2254. ClearSer_OUT:    rts
  2255.  
  2256. Writer:        move.l    IORequest,a1
  2257.         move.w    #CMD_WRITE,IO_COMMAND(a1)
  2258.         move.l    #CMD_LENGTH,IO_LENGTH(a1)
  2259.         lea.l    SerBuffer1,a0
  2260.         move.l    a0,IO_DATA(a1)
  2261.         lib    Exec,DoIO
  2262.         rts
  2263.  
  2264. Quit:        tst.w    Saved
  2265.         bne    ShutDown
  2266.         bsr    SleepPointer
  2267.         bsr    MenusOff
  2268.         bsr    RemGads
  2269.  
  2270.         lea.l    QuitTxt1,a1
  2271.         lea.l    OKTxt,a2
  2272.         lea.l    CancelTxt,a3
  2273.         bsr    DoAutoRequest
  2274.         tst.l    d0
  2275.         bne    Quit2
  2276.         bsr    AddGads
  2277.         bsr    MenusOn
  2278.         bsr    NormalPointer
  2279.         bra    Window1IDCMP
  2280.  
  2281. Quit2:        bsr    MenusOn
  2282.         bsr    NormalPointer
  2283.         bsr    AddGads
  2284.         bra    ShutDown
  2285.  
  2286. ShutDown:    tst.w    SerOpen
  2287.         beq    ShutDown9900
  2288.         bsr    CloseSerial
  2289.  
  2290. ShutDown9900:    move.l    IORequest,a0
  2291.         lib    Exec,DeleteIORequest
  2292.  
  2293.         move.l    SWPort,a0
  2294.         lib    Exec,DeleteMsgPort
  2295.  
  2296.         tst.l    PubScreen
  2297.         beq    ShutDown9000
  2298.         sub.l    a0,a0
  2299.         move.l    PubScreen,a1
  2300.         lib    Intuition,UnlockPubScreen
  2301.  
  2302. ShutDown9000:    tst.l    CXBroker1
  2303.         beq    ShutDown8800
  2304.  
  2305.         lib    Exec,Forbid            ;Remove all
  2306.         move.l    CXPort,a2            ;pending messages
  2307. ClearCX1:    move.l    a2,a0
  2308.         flib    Exec,GetMsg
  2309.         tst.l    d0
  2310.         beq    ClearCX2
  2311.         move.l    d0,a1
  2312.         flib    Exec,ReplyMsg
  2313.         bra    ClearCX1
  2314. ClearCX2:    move.l    CXBroker1,a0
  2315.         lib    Commodities,DeleteCxObjAll
  2316.         lib    Exec,Permit
  2317.  
  2318.         bsr    KillMem1
  2319.         bsr    CloseWin1
  2320.         bsr    CloseWin2
  2321.         bsr    CloseWin3
  2322.         bsr    Clean2.0Magic
  2323.  
  2324. ShutDown8800:    move.l    PrefsFile,d1
  2325.         beq    ShutDown7900
  2326.         lib    Dos,Close
  2327.  
  2328. ShutDown7900:    move.l    PrintFile,d1
  2329.         beq    ShutDown7000
  2330.         lib    Dos,Close
  2331.  
  2332. ShutDown7000:    move.l    NILFile,d1
  2333.         beq    ShutDown6000
  2334.         lib    Dos,Close
  2335.  
  2336. ShutDown6000:    tst.l    DiskObject
  2337.         beq    ShutDown5000
  2338.         move.l    DiskObject,a0
  2339.         lib    Icon,FreeDiskObject
  2340.  
  2341. ShutDown5000:    move.l    LoadOldLock,d1
  2342.         beq    ShutDown4900
  2343.         lib    Dos,CurrentDir
  2344.  
  2345. ShutDown4900:    move.l    LoadLock,d1
  2346.         beq    ShutDown4800
  2347.         lib    Dos,UnLock
  2348.  
  2349. ShutDown4800:    move.l    OldLock,d1
  2350.         beq    ShutDown4050
  2351.         lib    Dos,CurrentDir
  2352.  
  2353. ShutDown4050:    move.l    WBMsg,d2
  2354.         beq    ShutDown3000
  2355.         lib    Exec,Forbid
  2356.         move.l    d2,a1
  2357.         flib    Exec,ReplyMsg
  2358.         flib    Exec,Permit        ;Added, not checked
  2359.  
  2360. ShutDown3000:    move.l    RDArgs1,d1
  2361.         beq    ShutDown2500
  2362.         lib    Dos,FreeArgs
  2363.  
  2364. ShutDown2500:    tst.l    AslReq
  2365.         beq    ShutDown2000
  2366.         move.l    AslReq,a0
  2367.         lib    Asl,FreeFileRequest
  2368.  
  2369. ShutDown2000:    move.l    ARexxPort,a1            ;Remove possible
  2370.         cmp.l    #$00,a1                ;ports from lists
  2371.         beq    ShutDown1500            ;and then delete
  2372.         lib    Exec,RemPort            ;the ports
  2373.  
  2374.         flib    Exec,Forbid            ;Remove all
  2375.         move.l    ARexxPort,a2            ;pending messages
  2376.  
  2377. ClearARexx1:    move.l    a2,a0
  2378.         flib    Exec,GetMsg
  2379.         tst.l    d0
  2380.         beq    ClearARexx2
  2381.         move.l    d0,a1
  2382.         move.l    #RC_FATAL,RESULT1(a1)        ;Fail all requests
  2383.         flib    Exec,ReplyMsg
  2384.         bra    ClearARexx1
  2385. ClearARexx2:    move.l    ARexxPort,a0
  2386.         flib    Exec,DeleteMsgPort
  2387.         flib    Exec,Permit
  2388.  
  2389. ShutDown1500:    move.l    CXPort,a0        ;Messages cleared earlier
  2390.         lib    Exec,DeleteMsgPort
  2391.  
  2392. ShutDown1000:    closlib Icon
  2393.         closlib Intuition
  2394.         closlib    Commodities
  2395.         closlib GadTools
  2396.         closlib Asl
  2397.         closlib Dos
  2398.  
  2399.         pull    d2-d7/a2-a6
  2400.         clr.l    d0
  2401.         rts
  2402.  
  2403. ;CheckIDCMP gets messages from keyboard (CTRL_C), ARexx, Intuition
  2404. ;and commodities
  2405.  
  2406.  
  2407. CheckIDCMP:    clr.l    d0
  2408.         clr.l    d1
  2409.         cmp.l    #0,a3            ;Window open?
  2410.         beq    CheckIDCMP1        ;Nope ->
  2411.         move.l    $56(a3),a2        ;Get window's port
  2412.         move.b    MP_SIGBIT(a2),d1    ;IntuiMessages signals
  2413.         bset.l    d1,d0
  2414.         clr.l    d1            ;Set signals for
  2415. CheckIDCMP1:    move.l    CXPort,a0        ;commodities.library
  2416.         move.b    MP_SIGBIT(a0),d1
  2417.         bset.l    d1,d0
  2418.         clr.l    d1
  2419.         move.l    ARexxPort,a0        ;ARexx
  2420.         move.b    MP_SIGBIT(a0),d1
  2421.         bset.l    d1,d0
  2422.         bset.l    #SIGBREAKB_CTRL_C,d0    ;and CTRL_C
  2423.         lib    Exec,Wait
  2424.  
  2425.         cmp.l    #SIGBREAKF_CTRL_C,d0    ;If CTRL_C
  2426.         beq    Break            ;go break
  2427.  
  2428.         move.l    CXPort,a0        ;If commodities.library
  2429.         move.b    MP_SIGBIT(a0),d1
  2430.         btst    d1,d0
  2431.         bne    C4GetMsg1
  2432.  
  2433.         move.l    ARexxPort,a0        ;If ARexx
  2434.         move.b    MP_SIGBIT(a0),d1
  2435.         btst    d1,d0
  2436.         beq    CheckIDCMP_OUT
  2437.  
  2438.         bsr    DoARexx            ;Go do ARexx magic
  2439.         rts
  2440. CheckIDCMP_OUT:    move.l    #-1,d0
  2441.         rts
  2442.  
  2443. C2GetMsg1:    cmp.l    #0,a3
  2444.         beq    CheckIDCMP
  2445.         clr.l    d2
  2446.         clr.l    d3
  2447.         sub.l    a4,a4
  2448.         sub.l    a5,a5
  2449.         move.l    $56(a3),a0        ;Get window's port
  2450.         lib    GadTools,GT_GetIMsg
  2451.         tst.l    d0
  2452.         beq    CheckIDCMP
  2453.     
  2454.         move.l    d0,a1 
  2455.         move.l    im_Class(a1),d2        ;answers with Class in d2,
  2456.         move.w    im_Code(a1),d3        ;Code in d3 and
  2457.         move.w    im_Qualifier(a1),a4    ;Qualifier in a4
  2458.         move.l    im_IAddress(a1),a5    ;IAddress in a5
  2459.         lib    GadTools,GT_ReplyIMsg
  2460. C2GetMsg2:    move.l    #-1,d0
  2461.         rts
  2462.  
  2463. C4GetMsg1:    move.l    CXPort,a0
  2464.         lib    Exec,GetMsg
  2465.         tst.l    d0
  2466.         beq    C4GetMsg_OUT
  2467.  
  2468.         move.l    d0,a2            ;Message in a2
  2469.  
  2470.         move.l    a2,a0
  2471.         lib    Commodities,CxMsgType
  2472.         move.l    d0,d2            ;Type in d2
  2473.  
  2474.         move.l    a2,a0
  2475.         lib    Commodities,CxMsgID
  2476.         move.l    d0,d3            ;ID in d3
  2477.  
  2478.         move.l    a2,a1
  2479.         lib    Exec,ReplyMsg
  2480.  
  2481.         bsr    CX            ;Go do magic stuff
  2482.         tst.l    d0
  2483.         bne    C4GetMsg1        ;Loop all messages
  2484.         rts
  2485.  
  2486. C4GetMsg_OUT:    move.l    #4,d0            ;Return as CX
  2487.         rts
  2488.  
  2489. ;Newer MenuNull subroutine
  2490.  
  2491. MenuNull:    move.w    d3,d0
  2492.         and.w    #$1f,d0
  2493.         move.w    d0,d6
  2494.         move.w    d3,d0
  2495.         lsr.w    #5,d0
  2496.         move.w    d0,d1
  2497.         and.w    #$3f,d0
  2498.         move.w    d0,d5
  2499.         lsr.w    #6,d1
  2500.         move.w    d1,d4
  2501.         rts
  2502.  
  2503. ;open serial.device
  2504.  
  2505. OpenSerial:    cmp.w    #1,SerOpen
  2506.         beq    SkipSetParams
  2507.         lea.l    SerDevNBuffer1,a0
  2508.         move.l    SerUnit,d0
  2509.         move.l    IORequest,a1
  2510.         move.b    #SERF_SHARED,IO_SERFLAGS(a1)
  2511.         clr.l    d1                ;no flags
  2512.         lib    Exec,OpenDevice
  2513.         tst.l    d0
  2514.         bne    OpenSerial_ERR
  2515.         move.w    #$1,SerOpen        ;just to tell if open
  2516.  
  2517.         tst.l    Speed
  2518.         beq    SkipSetParams
  2519.         move.l    IORequest,a1
  2520.         clr.l    IO_LENGTH(a1)
  2521.         clr.l    IO_DATA(a1)
  2522.         move.w    #SDCMD_SETPARAMS,IO_COMMAND(a1)
  2523.         move.l    Speed,IO_BAUD(a1)
  2524.         lib    Exec,DoIO
  2525.         tst.l    d0
  2526.         beq    SkipSetParams
  2527.         bsr    NoSetSer
  2528.     
  2529. SkipSetParams:    move.l    #-1,d0
  2530.         rts
  2531. OpenSerial_ERR:    clr.l    d0
  2532.         rts
  2533.  
  2534. CloseSerial:    tst.w    SerOpen
  2535.         beq    CloseSer_OUT
  2536.         bsr    ClearSer
  2537.         move.l    IORequest,a1
  2538.         lib    Exec,CloseDevice
  2539.         clr.w    SerOpen
  2540. CloseSer_OUT:    rts
  2541.  
  2542. ;ARexx interface
  2543.  
  2544. DoARexx:    move.l    ARexxPort,a0
  2545.         lib    Exec,GetMsg
  2546.  
  2547.         move.l    #4,d2            ;answer to Window1IDCMP
  2548.         tst.l    d0
  2549.         beq    DoARexx_OUT
  2550.  
  2551.         move.l    d0,a5
  2552.         cmp.l    #RXCOMM,ACTION(a5)
  2553.         bne    DoARexxReply
  2554.  
  2555.         tst.l    ARG0(a5)        ;No magic enforcer hits
  2556.         beq    DoARexxFail
  2557.  
  2558.         tst.w    OnOff            ;We are off!
  2559.         beq    DoARexxFail
  2560.  
  2561.         lea.l    RexxFront,a0
  2562.         move.l    ARG0(a5),a1
  2563.         bsr    CmpStrings
  2564.         bne    DoRexxFront
  2565.  
  2566.         lea.l    RexxBack,a0
  2567.         move.l    ARG0(a5),a1
  2568.         bsr    CmpStrings
  2569.         bne    DoRexxBack
  2570.  
  2571.         lea.l    RexxZoom,a0
  2572.         move.l    ARG0(a5),a1
  2573.         bsr    CmpStrings
  2574.         bne    DoRexxZoom
  2575.  
  2576.         lea.l    RexxHide,a0
  2577.         move.l    ARG0(a5),a1
  2578.         bsr    CmpStrings
  2579.         bne    DoRexxHide
  2580.  
  2581.         lea.l    RexxShow,a0
  2582.         move.l    ARG0(a5),a1
  2583.         bsr    CmpStrings
  2584.         bne    DoRexxShow
  2585.  
  2586.         lea.l    RexxQuit,a0
  2587.         move.l    ARG0(a5),a1
  2588.         bsr    CmpStrings
  2589.         bne    DoRexxQuit
  2590.  
  2591. ;Check to see if a port name was sent
  2592.  
  2593.         clr.l    d5
  2594.  
  2595. DoARexx2:    lea.l    NameList,a0
  2596.         move.l    d5,d2        ;Get name port to do
  2597.         mulu.w    #GADLENG1,d2
  2598.         add.l    d2,a0
  2599.         move.l    ARG0(a5),a1
  2600.         bsr    GetLength
  2601.         move.l    d0,d3
  2602.         lib    Utility,Strnicmp
  2603.         tst.l    d0
  2604.         beq    DoARexxPort
  2605.         add.l    #1,d5
  2606.         cmp.l    #PortAmount,d5
  2607.         bcs    DoARexx2
  2608.  
  2609. DoARexxFail:    move.l    #RC_FATAL,RESULT1(a5)
  2610.         move.l    #4,d2
  2611.         bra    DoARexxReply
  2612.  
  2613. DoARexxOK:    move.l    #RC_OK,RESULT1(a5)
  2614. DoARexxReply:    move.l    a5,a1
  2615.         lib    Exec,ReplyMsg
  2616. DoARexx_OUT:    move.l    d2,d0
  2617.         rts
  2618.  
  2619. DoRexxFront:    bsr    ToFront
  2620.         move.l    #4,d2
  2621.         bra    DoARexxOK
  2622.  
  2623. DoRexxBack:    bsr    ToBack
  2624.         move.l    #4,d2
  2625.         bra    DoARexxOK
  2626.  
  2627. DoRexxZoom:    bsr    Zoom
  2628.         move.l    #4,d2
  2629.         bra    DoARexxOK
  2630.  
  2631. DoRexxHide:    bsr    DoCXDisappear
  2632.         move.l    #4,d2
  2633.         bra    DoARexxOK
  2634.  
  2635. DoRexxShow:    bsr    DoCXAppear
  2636.         move.l    #4,d2
  2637.         bra    DoARexxOK
  2638.  
  2639. DoRexxQuit:    clr.l    d2
  2640.         bra    DoARexxOK
  2641.  
  2642. ;Inputs    d3 = Length of port name
  2643. ;    d5 = Port number
  2644.  
  2645. DoARexxPort:    move.l    ARG0(a5),a2
  2646.         add.l    d3,a2
  2647.  
  2648. DoARexxPort2:    cmp.b    #' ',(a2)        ;Skip possible spaces
  2649.         bne    DoARexxPort3
  2650.         add.l    #1,a2
  2651.         bra    DoARexxPort2
  2652.  
  2653. DoARexxPort3:    cmp.b    #'~',(a2)        ;Find control character
  2654.         bne    DoARexxFail
  2655.         add.l    #1,a2
  2656. DoARexxPort4:    cmp.b    #' ',(a2)        ;Skip possible spaces
  2657.         bne    DoARexxPort5
  2658.         add.l    #1,a2
  2659.         bra    DoARexxPort4
  2660.  
  2661. DoARexxPort5:    tst.b    (a2)
  2662.         beq    DoARexxFail
  2663.         move.l    a2,a1
  2664.         lea.l    ONText1,a0
  2665.         bsr    GetLength
  2666.         lib    Utility,Strnicmp
  2667.  
  2668.         tst.l    d0
  2669.         beq    DoARexxPort6        ;Turn port on
  2670.  
  2671.         move.l    a2,a1
  2672.         lea.l    OFFText1,a0
  2673.         bsr    GetLength
  2674.         lib    Utility,Strnicmp
  2675.  
  2676.         tst.l    d0
  2677.         beq    DoARexxPort7        ;Turn port off
  2678.  
  2679.         move.l    a2,a0
  2680.         lea.l    TOGText1,a1
  2681.         lib    Utility,Strnicmp
  2682.  
  2683.         tst.l    d0
  2684.         beq    DoARexxPort8        ;Toggle port status
  2685.  
  2686.         bra    DoARexxFail        ;Unknown command
  2687.  
  2688. DoARexxPort6:    clr.w    Saved
  2689.         move.l    d5,d0
  2690.         add.l    #1,d0
  2691.         bsr    ConvPort2Addr
  2692.         tst.l    d0
  2693.         bmi    DoARexxFail
  2694.  
  2695.         bset.b    d0,(a0)        ;Turn bit on
  2696.         bsr    SendPort
  2697.         bra    DoARxPort_OUT
  2698.  
  2699. DoARexxPort7:    clr.w    Saved
  2700.         move.l    d5,d0
  2701.         add.l    #1,d0
  2702.         bsr    ConvPort2Addr
  2703.         tst.l    d0
  2704.         bmi    DoARexxFail
  2705.  
  2706.         bclr.b    d0,(a0)        ;Turn bit off
  2707.         bsr    SendPort
  2708.         bra    DoARxPort_OUT
  2709.  
  2710. DoARexxPort8:    clr.w    Saved
  2711.         move.l    d5,d0
  2712.         add.l    #1,d0
  2713.         bsr    ConvPort2Addr
  2714.         tst.l    d0
  2715.         bmi    DoARexxFail
  2716.  
  2717.         bchg.b    d0,(a0)        ;Toggle bit
  2718.         bsr    SendPort
  2719. ;        bra    DoARxPort_OUT    ;CAREFUL!!!
  2720.  
  2721. DoARxPort_OUT:    move.l    #4,d2
  2722.         bra    DoARexxOK
  2723.  
  2724. ;Compares two strings.
  2725. ;
  2726. ;INPUT
  2727. ;
  2728. ;A0 String 1
  2729. ;A1 String 2
  2730. ;
  2731. ;OUTPUT
  2732. ;
  2733. ;D0 = 0 if not same
  2734. ;
  2735. ;BUGS
  2736. ;
  2737. ;String 1 has to have NULL at end!
  2738. ;
  2739.  
  2740. CmpStrings:    bsr    GetLength
  2741.         move.l    d0,d4        ;length of string1 to d4
  2742.         push    a0
  2743.         move.l    a1,a0
  2744.         bsr    GetLength
  2745.         pull    a0
  2746.         cmp.l    d4,d0        ;length of string2 in d3
  2747.         bne    CmpStrings1.1
  2748. CmpStrings1:    tst.b    (a0)
  2749.         beq    CmpStrings2
  2750.         cmp.b    (a0)+,(a1)+
  2751.         beq    CmpStrings1
  2752. CmpStrings1.1:    clr.l    d0
  2753.         rts
  2754. CmpStrings2:    move.l    #-1,d0
  2755.         rts
  2756.  
  2757. ;Get length of text in given address
  2758. ;
  2759. ;Input a0 = Address of null terminated text string
  2760. ;
  2761. ;Result d0 = Length
  2762.  
  2763. GetLength:    push    a0
  2764.         clr.l    d0
  2765.         cmp.l    #$00,a0        ;fixes enforcer hit
  2766.         beq    GetLength_OUT
  2767. GetLength2:    add.l    #1,d0
  2768.         tst.b    (a0)+
  2769.         bne    GetLength2
  2770.         sub.l    #1,d0        ;don't include NULL
  2771. GetLength_OUT:    pull    a0
  2772.         rts
  2773.  
  2774. SleepPointer:    move.l    Window1,a0
  2775.         lea.l    ClockPointer1,a1
  2776.         move.l    #16,d0
  2777.         move.l    #16,d1            ;WHAT-THE-HECK IS THIS FOR?
  2778.         move.l    #-6,d2
  2779.         move.l    #0,d3
  2780.         lib    Intuition,SetPointer
  2781.         rts
  2782.  
  2783. NormalPointer:    move.l    Window1,a0
  2784.         lib    Intuition,ClearPointer
  2785.         rts
  2786.  
  2787. MenusOn:    move.l    Window1,a0
  2788.         move.l    mlist,a1
  2789.         lib    Intuition,SetMenuStrip
  2790.         rts
  2791.  
  2792. MenusOff:    move.l    Window1,a0
  2793.         lib    Intuition,ClearMenuStrip
  2794.         rts
  2795.  
  2796. ;Lock PublicScreen
  2797.  
  2798. LockPubScr:    sub.l    a0,a0
  2799.         lib    Intuition,LockPubScreen
  2800.         move.l    d0,PubScreen
  2801.         beq    LockPubScr_OUT
  2802.  
  2803. ;Get some sizes
  2804.  
  2805.         move.l    PubScreen,a0
  2806.         move.b    sc_BarHeight(a0),d0
  2807.         add.b    #1,d0
  2808.         move.b    d0,BHeight+1
  2809.         move.w    BHeight,d5
  2810.         add.w    d5,SmallYSize
  2811.         add.w    d5,Win1YSize
  2812.         add.w    d5,Win2YSize
  2813.         add.w    d5,Win3YSize
  2814. LockPubScr_OUT: rts
  2815.  
  2816. ;Open Window 1
  2817.  
  2818. OpenWin1:    tst.l    Window1
  2819.         bne    OpenWin1_OUT
  2820.         tst.l    OptionIconify
  2821.         beq    OpenWin1.01
  2822.         lea.l    NewWindow1,a0
  2823.         and.l    #~ACTIVATE,nw_Flags(a0)
  2824.         move.l    NewWindow1,ZoomXY
  2825.         move.l    NewWindow1+4,ZoomXY+4
  2826.         move.l    Alt1XY,nw_LeftEdge(a0)
  2827.         move.w    #160,nw_Width(a0)
  2828.         move.w    BHeight,nw_Height(a0)
  2829. OpenWin1.01:    lea.l    NewWindow1,a0
  2830.         lea.l    Win1TagList,a1
  2831.         lib    Intuition,OpenWindowTagList
  2832.         move.l    d0,Window1
  2833.         beq    OpenWin1_ERR1
  2834.         bsr    AddGads            ;Window refreshed here
  2835.         move.l    Window1,a0
  2836.         move.l    $32(a0),RP
  2837.         move.l    mlist,a1
  2838.         lib    Intuition,SetMenuStrip
  2839. OpenWin1_OUT:    move.l    #-1,d0
  2840.         rts
  2841. OpenWin1_ERR1:    clr.l    d0
  2842.         rts        
  2843.  
  2844. CloseWin1:    tst.l    Window1
  2845.         beq    CloseWin1_OUT
  2846. CloseWin1.1:    move.l    Window1,a0
  2847.         lib    Intuition,ClearMenuStrip
  2848.         move.l    Window1,a3
  2849.         bsr    ClearMSGs
  2850. CloseWin1_OUT:    clr.l    Window1
  2851.         rts
  2852.  
  2853. ;Open Window 2 (Port assignments)
  2854.  
  2855. OpenWin2:    lea.l    NewWindow2,a0
  2856.         lea.l    Win2TagList,a1
  2857.         lib    Intuition,OpenWindowTagList
  2858.         move.l    d0,Window2
  2859.         beq    OpenWin2_ERR1
  2860.         move.l    Window2,a0
  2861.         move.l    mlist2,a1
  2862.         lib    Intuition,SetMenuStrip
  2863.         bsr    AddGads2        ;Window refreshed here
  2864.         move.l    #-1,d0
  2865.         rts
  2866. OpenWin2_ERR1:    clr.l    d0
  2867.         rts        
  2868.  
  2869. CloseWin2:    tst.l    Window2
  2870.         beq    CloseWin2_OUT
  2871.         move.l    Window2,a0
  2872.         lib    Intuition,ClearMenuStrip
  2873.         move.l    Window2,a3
  2874.         bsr    ClearMSGs
  2875. CloseWin2_OUT:    clr.l    Window2
  2876.         rts
  2877.  
  2878. ;Open Window 3 (Serial settings)
  2879.  
  2880. OpenWin3:    lea.l    NewWindow3,a0
  2881.         lea.l    Win2TagList,a1
  2882.         lib    Intuition,OpenWindowTagList
  2883.         move.l    d0,Window3
  2884.         beq    OpenWin3_ERR1
  2885.         bsr    AddGads3        ;Window refreshed here
  2886.         move.l    #-1,d0
  2887.         rts
  2888. OpenWin3_ERR1:    clr.l    d0
  2889.         rts        
  2890.  
  2891. CloseWin3:    tst.l    Window3
  2892.         beq    CloseWin3_OUT
  2893.         move.l    Window3,a0
  2894.         lib    Intuition,ClearMenuStrip
  2895.         move.l    Window3,a3
  2896.         bsr    ClearMSGs
  2897. CloseWin3_OUT:    clr.l    Window3
  2898.         rts
  2899.  
  2900. ;ClearMsgs subroutine
  2901. ;a3 = window structure
  2902.  
  2903. ClearMSGs:    lib    Exec,Forbid
  2904.         move.l    $56(a3),a2
  2905. ClearMsg1:    move.l    a2,a0    
  2906.         lib    GadTools,GT_GetIMsg
  2907.         tst.l    d0
  2908.         beq    ClearMsg2
  2909.         move.l    d0,a1
  2910.         flib    GadTools,GT_ReplyIMsg
  2911.         bra    ClearMsg1
  2912. ClearMsg2:    move.l    a3,a0
  2913.         lib    Intuition,CloseWindow
  2914.         lib    Exec,Permit
  2915. ClearMsg3:    rts
  2916.  
  2917. ConvASCII:    clr.l    d0
  2918.         clr.l    d1
  2919.         cmp.b    #' ',(a0)
  2920.         bne    ConvASCII2
  2921.         add.l    #1,a0
  2922. ConvASCII2:    move.b    (a0),d1
  2923.         cmp.b    #'0',d1
  2924.         bcs    ConvASCII_OUT
  2925.         cmp.b    #'9',d1
  2926.         bhi    ConvASCII_OUT
  2927.         sub.b    #'0',d1
  2928.         push    d1/a0
  2929. ;        mulu.w    #10,d0
  2930.         move.l    #10,d1
  2931.         lib    Utility,UMult32
  2932.         pull    d1/a0
  2933.         add.l    d1,d0
  2934.         add.l    #1,a0
  2935.         bra    ConvASCII2
  2936. ConvASCII_OUT:    rts
  2937.  
  2938. Clean2.0Magic:    tst.b    GadMagic
  2939.         beq    Clean2.0M2
  2940.         move.l    glist,a0
  2941.         lib    GadTools,FreeGadgets
  2942.         move.l    glist2,a0
  2943.         lib    GadTools,FreeGadgets
  2944.         move.l    glist3,a0
  2945.         lib    GadTools,FreeGadgets
  2946.  
  2947. Clean2.0M2:    tst.b    MenuMagic
  2948.         beq    Clean2.0M3
  2949.         move.l    mlist,a0
  2950.         lib    GadTools,FreeMenus
  2951.         move.l    mlist2,a0
  2952.         lib    GadTools,FreeMenus
  2953.  
  2954. Clean2.0M3:    tst.l    vi
  2955.         beq    Clean2.0_OUT
  2956.         move.l    vi,a0
  2957.         lib    GadTools,FreeVisualInfo
  2958.  
  2959. Clean2.0_OUT:    rts
  2960.  
  2961. ;Error etc. messages
  2962.  
  2963. NoMem1:        bsr    SleepPointer
  2964.         bsr    MenusOff
  2965.  
  2966.         lea.l    NoMemTxt1,a1
  2967.         bsr    DoAutoRequest
  2968.  
  2969.         bsr    MenusOn
  2970.         bsr    NormalPointer
  2971.         rts
  2972.  
  2973. NoRDArgs:    lib    Dos,IoErr
  2974.         move.l    d0,d1
  2975.         clr.l    d2
  2976.         lib    Dos,PrintFault
  2977.         bra    ShutDown
  2978.  
  2979. NoMsgPort:    lea.l    NoMsgPortText1,a0
  2980.         bsr    Printer
  2981.         bra    ShutDown
  2982.  
  2983. NoMsgPort2:    lea.l    NoMsgPortText2,a0
  2984.         bsr    Printer
  2985.         bra    ShutDown
  2986.  
  2987. NoDos:        pull    d2-d7/a2-a6
  2988.         move.l    #RETURN_FAIL,d0
  2989.         rts
  2990.  
  2991. NoInt:        lea.l    NoIntText1,a0
  2992.         bsr    Printer
  2993.         bra    ShutDown
  2994.  
  2995. NoGadTools:    lea.l    NoGTText1,a0
  2996.         bsr    Printer
  2997.         bra    ShutDown
  2998.  
  2999. NoAsl:        lea.l    NoAslText1,a0
  3000.         bsr    Printer
  3001.         bra    ShutDown
  3002.  
  3003. NoAslReq:    lea.l    NoAslReqText1,a0
  3004.         bsr    Printer
  3005.         bra    ShutDown
  3006.  
  3007. NoCommodities:    lea.l    NoCommoText1,a0
  3008.         bsr    Printer
  3009.         bra    ShutDown
  3010.  
  3011. NoUtility:    lea.l    NoUtilityText1,a0
  3012.         bsr    Printer
  3013.         bra    ShutDown
  3014.  
  3015. NoNIL:        lea.l    NoNILText1,a0
  3016.         bsr    Printer
  3017.         bra    ShutDown
  3018.  
  3019. NoNIL2:        lea.l    NoNILText1,a0
  3020.         bsr    Printer
  3021.         rts
  3022.  
  3023. NoIcon:        lea.l    NoIconText1,a0
  3024.         bsr    Printer
  3025.         bra    ShutDown
  3026.  
  3027. NoPubScreen:    lea.l    NoPubScrText1,a0
  3028.         bsr    Printer
  3029.         bra    ShutDown
  3030.  
  3031. NoWindow1:    lea.l    NoWindowText1,a0
  3032.         bsr    Printer
  3033.         bra    ShutDown
  3034.  
  3035. NoContextGad:    lea.l    NoContextText1,a0
  3036.         bsr    Printer
  3037.         bra    ShutDown
  3038.  
  3039. NoMenus:    lea.l    NoMenusText1,a0
  3040.         bsr    Printer
  3041.         bra    ShutDown
  3042.  
  3043. NoCommodity:    lea.l    NoCommodityText1,a0
  3044.         bsr    Printer
  3045.         bra    ShutDown
  3046.  
  3047. NoFilter:    lea.l    BadPopKeyText1,a0
  3048.         bsr    Printer
  3049.         bra    NoCommodity
  3050.  
  3051. BadPriority:    lea.l    BadPriorityText1,a0
  3052.         bsr    Printer
  3053.         bra    NoCommodity
  3054.  
  3055. NoIOReq:    lea.l    NoIOReqText1,a0
  3056.         bsr    Printer
  3057.         bra    ShutDown
  3058.  
  3059. NoSerial:    lea.l    NoSerialText1,a0
  3060.         bsr    Printer
  3061.         lea.l    SerDevNBuffer1,a0
  3062.         bsr    Printer
  3063.         lea.l    NoSerialText2,a0
  3064.         bsr    Printer
  3065.         bra    ShutDown
  3066.  
  3067. NoSetSer:    lea.l    NoSetSerText1,a0
  3068.         bsr    Printer
  3069.         rts
  3070.  
  3071. Printer:    printa    a0,_stdout
  3072.         rts
  3073.  
  3074. PutChProc:    tst.b    d0
  3075.         beq    PutChProc_OUT
  3076.         move.b    d0,(a3)+
  3077. PutChProc_OUT:    rts
  3078.  
  3079. ;Does a normal AutoRequest
  3080. ;
  3081. ;INPUT
  3082. ;
  3083. ;a1 = Main text body
  3084. ;a2 = Pos text
  3085. ;a3 = Neg text
  3086.  
  3087. DoAutoRequest:    clr.l    d0
  3088.         clr.l    d1
  3089.         clr.l    d2
  3090.         clr.l    d3
  3091.         sub.l    a0,a0        ;No win, cos' might be here b4 anything open
  3092.         lib    Intuition,AutoRequest
  3093.         rts
  3094.  
  3095. ;Reservations
  3096.  
  3097.         libnames
  3098.  
  3099. _SysBase:    dc.l    0
  3100. _DOSBase:    dc.l    0
  3101. _CxBase:    dc.l    0
  3102.  
  3103. ;Options
  3104.  
  3105. RDArgs1:    dc.l    0
  3106.  
  3107. CLArray1:
  3108. FromFile:    dc.l    0        ;A pointer to filename of PREFS!
  3109. OptionIconify:    dc.l    0
  3110. OptPubScreen:    dc.l    0        ;A pointer to pubscreen name
  3111. OptCXPri:    dc.l    0
  3112. OptCXPopKey:    dc.l    DefaultPopKey    ;A pointer to popkey string
  3113. OptCXPopUp:    dc.l    0        ;A pointer to 'Yes'/'No'
  3114.  
  3115. ;Serial device stuff
  3116.  
  3117. IORequest:    dc.l    0
  3118. SWPort:        dc.l    0
  3119. SerOpen:    dc.w    0
  3120.  
  3121. ;GadTools stuff
  3122.  
  3123. vi:        dc.l    0        ;Visual Info
  3124. mlist:        dc.l    0
  3125. mlist2:        dc.l    0
  3126. ContextGad:    dc.l    0
  3127. ContextGad2:    dc.l    0
  3128. ContextGad3:    dc.l    0
  3129. GadMagic:    dc.b    0
  3130. MenuMagic:    dc.b    0
  3131.  
  3132. ;Gadgets
  3133.  
  3134. SaveGad1:    dc.l    0
  3135. QuitGad1:    dc.l    0
  3136.  
  3137. ListGad1:    dc.l    0
  3138.  
  3139. PortGad1:    dc.l    0
  3140. StatusGad1:    dc.l    0
  3141.  
  3142. SingleGad1:    dc.l    0        ;Only a text string
  3143. OnGad1:        dc.l    0
  3144. OffGad1:    dc.l    0
  3145. ToggleGad1:    dc.l    0
  3146.  
  3147. AllGad1:    dc.l    0        ;Only a text string
  3148. OnGad2:        dc.l    0
  3149. OffGad2:    dc.l    0
  3150. ToggleGad2:    dc.l    0
  3151.  
  3152. ;Window 3 gadgets
  3153.  
  3154. SerGad1:    dc.l    0
  3155. SerGadBuf1:    dc.l    0        ;Only a pointer!
  3156. SerGad2:    dc.l    0
  3157. SerGadInt2:    dc.l    0        ;Only a pointer!
  3158. SerGad3:    dc.l    0
  3159. SerGadInt3:    dc.l    0        ;Only a pointer!
  3160.  
  3161. OKGad1:        dc.l    0
  3162. CancelGad1:    dc.l    0
  3163.  
  3164. ;Window 2 gadgets
  3165.  
  3166. Desc1Gad:    dc.l    0
  3167. StrGad1:    dc.l    0
  3168. StrGadBuf1:    dc.l    0        ;Only a pointer!
  3169. StrGad2:    dc.l    0
  3170. StrGadBuf2:    dc.l    0        ;Only a pointer!
  3171. StrGad3:    dc.l    0
  3172. StrGadBuf3:    dc.l    0        ;Only a pointer!
  3173. StrGad4:    dc.l    0
  3174. StrGadBuf4:    dc.l    0        ;Only a pointer!
  3175. StrGad5:    dc.l    0
  3176. StrGadBuf5:    dc.l    0        ;Only a pointer!
  3177. StrGad6:    dc.l    0
  3178. StrGadBuf6:    dc.l    0        ;Only a pointer!
  3179. StrGad7:    dc.l    0
  3180. StrGadBuf7:    dc.l    0        ;Only a pointer!
  3181. StrGad8:    dc.l    0
  3182. StrGadBuf8:    dc.l    0        ;Only a pointer!
  3183. NumGad1:    dc.l    0
  3184. NumGad2:    dc.l    0
  3185. NumGad3:    dc.l    0
  3186. NumGad4:    dc.l    0
  3187. NumGad5:    dc.l    0
  3188. NumGad6:    dc.l    0
  3189. NumGad7:    dc.l    0
  3190. NumGad8:    dc.l    0
  3191.  
  3192. ;ASL Stuff
  3193.  
  3194. AslReq:        dc.l    0
  3195.  
  3196. ;display stuff
  3197.  
  3198. PubScreen:    dc.l    0
  3199. Window1:    dc.l    0
  3200. Window2:    dc.l    0
  3201. Window3:    dc.l    0
  3202. BHeight:    dc.w    0
  3203. RP:        dc.l    0
  3204.  
  3205.         ds.w    0
  3206.  
  3207. ;Other stuff, part I
  3208.  
  3209. OurTask:    dc.l    0
  3210. Page:        dc.w    0        ;What page are we on ?
  3211. Saved:        dc.w    1        ;0=No, 1=Yes
  3212. ARexxPort:    dc.l    0        ;Our ARexx port
  3213. CurrentPort:    dc.l    1        ;Number of last selection
  3214. CXPort:        dc.l    0        ;Message port for commodities
  3215. CXBroker1:    dc.l    0        ;Our commodities broker list
  3216. OnOff:        dc.w    0        ;Are we on? 0 = Off, 1 = On
  3217. DisActive:    dc.w    0        ;Can we be turned on/off?
  3218.  
  3219. ;File stuff
  3220.  
  3221. PrefsFile:    dc.l    0
  3222. PrintFile:    dc.l    0
  3223. NILFile:    dc.l    0
  3224. _stdout:    dc.l    0
  3225. LoadLock:    dc.l    0
  3226. LoadOldLock:    dc.l    0
  3227. WBMsg:        dc.l    0
  3228. DiskObject:    dc.l    0
  3229. OldLock:    dc.l    0
  3230.  
  3231. ;Strings, error & other info
  3232.  
  3233. BreakText1:    dc.b    "***Break",13,10,0
  3234. NoMsgPortText1: dc.b    "ERROR: Couldn't open message port!",13,10,0
  3235. NoMsgPortText2: dc.b    "ERROR: An ARexx port with the name 'CCONTROL' already exists!",13,10,0
  3236. NoIntText1:    dc.b    "ERROR: Couldn't open intuition.library!",13,10,0
  3237. NoCommoText1:    dc.b    "ERROR: Couldn't open commodities.library!",13,10,0
  3238. NoGTText1:    dc.b    "ERROR: Couldn't open gadtools.library!",13,10,0
  3239. NoAslText1:    dc.b    "ERROR: Couldn't open asl.library!",13,10,0
  3240. NoAslReqText1:    dc.b    "ERROR: Couldn't allocate ASL requester!",13,10,0
  3241. NoUtilityText1:    dc.b    "ERROR: Couldn't open utility.library!",13,10,0
  3242. NoNILText1:    dc.b    "ERROR: Couldn't open device NIL:!",13,10,0
  3243. NoIconText1:    dc.b    "ERROR: Couldn't open icon.library!",13,10,0
  3244. NoPubScrText1:    dc.b    "ERROR: Couldn't lock PublicScreen!",13,10,0
  3245. NoContextText1: dc.b    "ERROR: Couldn't create context gadget!",13,10,0
  3246. NoMenusText1:    dc.b    "ERROR: Couldn't allocate menus structure!",13,10,0
  3247. NoWindowText1:    dc.b    "ERROR: Couldn't open window!",13,10,0
  3248. NoCommodityText1: dc.b    "ERROR: Couldn't create commodity!",13,10,0
  3249. BadPopKeyText1:    dc.b    "ERROR: Bad hotkey setting!",13,10,0
  3250. BadPriorityText1: dc.b    "ERROR: Bad priority value!",13,10,0
  3251. NoMemText1:    dc.b    "ERROR: Out of memory!",0
  3252. NoIOReqText1:    dc.b    "ERROR: Couldn't get SerialIOReq!",13,10,0
  3253. NoSetSerText1:    dc.b    "ERROR: Couldn't set parameters for device!",13,10,0
  3254. NoSerialText1:    dc.b    "ERROR: Couldn't open ",0
  3255. SerName2:    dc.b    "serial.device",0
  3256. NoSerialText2:    dc.b    13,10,0
  3257. File_ERRText1:    dc.b    "Couldn't open preferences file!",0
  3258. File_ERRText2:    dc.b    "File error!",0
  3259. File_ERRText3:    dc.b    "Incorrect file type or version!",0
  3260. Print_ERRText1:    dc.b    "Couldn't open print file!",0
  3261. Print_ERRText2:    dc.b    "Error while printing!",0
  3262. OnText1:    dc.b    "On",0
  3263. OffText1:    dc.b    "Off",0
  3264. ErrorText1:    dc.b    "Error",0
  3265.  
  3266. ;Strings, names
  3267.  
  3268. CLTemplate1:    dc.b    "FROM/K,I=ICONIFY/S,PS=PUBSCREEN/K,"    ;Cont'd
  3269.         dc.b    "PRI=CX_PRIORITY/N/K,PK=CX_POPKEY/K,PU=CX_POPUP/K",0
  3270. CCVersion:    dc.b    "$VER: CompleteControl "
  3271.         PROGVERSION
  3272.         dc.b    " (c) Copyright Tomi Blinnikka 1993",0
  3273. OKText1:    dc.b    "OK",0
  3274. CancelText1:    dc.b    "Cancel",0
  3275. PrefsName:    dc.b    "ENVARC:"
  3276. PrefsName2:    dc.b    "CompleteControl.PREFS",0
  3277. NormalDir:    dc.b    "ENVARC:",0
  3278. PrintFileName:    dc.b    "PRT:",0
  3279. NILName:    dc.b    "NIL:",0
  3280. ICONIFYText1:    dc.b    "ICONIFY",0
  3281. PUBSCREENText1:    dc.b    "PUBSCREEN",0
  3282. CXPOPUPText1:    dc.b    "CX_POPUP",0
  3283. CXPOPKEYText1:    dc.b    "CX_POPKEY",0
  3284. CXPRIText1:    dc.b    "CX_PRIORITY",0
  3285. DefaultPopKey:    dc.b    "ctrl alt v",0
  3286. YESText1:    dc.b    "YES",0
  3287. NOText1:    dc.b    "NO",0
  3288. FROMText1:    dc.b    "FROM",0
  3289. ONText1:    dc.b    "ON",0
  3290. OFFText1:    dc.b    "OFF",0
  3291. TOGText1:    dc.b    "TOG",0
  3292. AboutText1:    dc.b    "Name   : CompleteControl",0
  3293. AboutText2:    dc.b    "Version: "
  3294.         PROGVERSION
  3295.         dc.b    0
  3296. AboutText3:    dc.b    "Author : Tomi Blinnikka",0
  3297. AboutText4:    dc.b    "  (c) Copyright  1993",0
  3298. QuitText1:    dc.b    "The current preferences and/or",0
  3299. QuitText2:    dc.b    "port states have NOT been saved!",0
  3300. QuitText3:    dc.b    "Are you sure you want to quit?",0
  3301. CCName1:    dc.b    "CompleteControl",0
  3302. CCName2:    dc.b    "Port assignments",0
  3303. CCName3:    dc.b    "Serial settings",0
  3304. LoadText1:    dc.b    "Load preferences",0
  3305. SaveText1:    dc.b    "Save preferences",0
  3306. PrintText1:    dc.b    "Print port assignments",0
  3307.  
  3308. EmptyText1:    dc.b    "<Empty>",0
  3309. CRLFText1:    dc.b    13,10,0
  3310. AText1:        dc.b    "A",0
  3311. BText1:        dc.b    "B",0
  3312. CText1:        dc.b    "C",0
  3313.  
  3314. PrintHeader1:    dc.b    "Port #        Name",13,10
  3315.         dc.b    "=================================",13,10,0
  3316. fstrl1:        dc.b    "%ld        %s",0
  3317.  
  3318. CCTitle:    dc.b    "Complete Control Panel:",0
  3319. CCDesc:        dc.b    "Control devices connected to system",0
  3320.  
  3321. ;ARexx strings
  3322.  
  3323. ARexxPortName:    dc.b    "CCONTROL",0
  3324.  
  3325. ;Window control
  3326.  
  3327. RexxFront:    dc.b    "FRONT",0
  3328. RexxBack:    dc.b    "BACK",0
  3329. RexxZoom:    dc.b    "ZOOM",0
  3330. RexxHide:    dc.b    "HIDE",0
  3331. RexxShow:    dc.b    "SHOW",0
  3332.  
  3333. ;Misc
  3334.  
  3335. ;RexxLoad:    dc.b    "LOAD",0        ;How-da-heck?
  3336.  
  3337. RexxOn:        dc.b    "ON",0
  3338. RexxOff:    dc.b    "OFF",0
  3339. RexxQuit:    dc.b    "QUIT",0
  3340.  
  3341.         ds.w    0
  3342.  
  3343. ;New screen & new window structures
  3344.  
  3345. NewWindow1:    dc.w    150,31            ;X,Y POS
  3346.         dc.w    407            ;WIDTH
  3347. Win1YSize:    dc.w    160            ;HEIGHT
  3348.         dc.b    0,1            ;PENS
  3349.         dc.l    REFRESHWINDOW!CLOSEWINDOW!RAWKEY!VANILLAKEY!MENUPICK!BUTTONIDCMP!LISTVIEWIDCMP    ;IDCMP FLAGS
  3350.         dc.l    WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  3351.         dc.l    0,0            ;GADGETS, CHECKMARK
  3352.         dc.l    CCName1            ;TITLE
  3353.         dc.l    0            ;SCREEN ADDRESS
  3354.         dc.l    0            ;BITMAP            
  3355.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  3356.         dc.w    PUBLICSCREEN        ;TYPE
  3357.  
  3358. Win1TagList:    dc.l    WA_AutoAdjust,TRUE
  3359.         dc.l    WA_Zoom,ZoomXY
  3360.         dc.l    TAG_DONE,0
  3361.  
  3362. ZoomXY:
  3363. SmallXPos:    dc.w    10
  3364. SmallYPos:    dc.w    21
  3365. SmallXSize:    dc.w    160
  3366. SmallYSize:    dc.w    0
  3367.  
  3368. NewWindow2:    dc.w    220,42            ;X,Y POS
  3369.         dc.w    190            ;WIDTH
  3370. Win2YSize:    dc.w    12*NUMGADS+7        ;HEIGHT
  3371.         dc.b    0,1            ;PENS
  3372.         dc.l    REFRESHWINDOW!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!MENUPICK!GADGETUP    ;IDCMP FLAGS
  3373.         dc.l    WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  3374.         dc.l    0,0            ;GADGETS, CHECKMARK
  3375.         dc.l    CCName2            ;TITLE
  3376.         dc.l    0            ;SCREEN ADDRESS
  3377.         dc.l    0            ;BITMAP            
  3378.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  3379.         dc.w    PUBLICSCREEN        ;TYPE
  3380.  
  3381. Win2TagList:    dc.l    WA_AutoAdjust,TRUE
  3382.         dc.l    TAG_DONE,0
  3383.  
  3384. NewWindow3:    dc.w    220,42            ;X,Y POS
  3385.         dc.w    200            ;WIDTH
  3386. Win3YSize:    dc.w    100            ;HEIGHT
  3387.         dc.b    0,1            ;PENS
  3388.         dc.l    REFRESHWINDOW!ACTIVEWINDOW!CLOSEWINDOW!VANILLAKEY!GADGETUP    ;IDCMP FLAGS
  3389.         dc.l    WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE    ;FLAGS
  3390.         dc.l    0,0            ;GADGETS, CHECKMARK
  3391.         dc.l    CCName3            ;TITLE
  3392.         dc.l    0            ;SCREEN ADDRESS
  3393.         dc.l    0            ;BITMAP            
  3394.         dc.w    0,0,0,0            ;MIN/MAX SIZE
  3395.         dc.w    PUBLICSCREEN        ;TYPE
  3396.  
  3397.  
  3398. ;Fonts
  3399.  
  3400. Topaz:        dc.l    TopazName
  3401.         dc.w    8
  3402.         dc.b    0
  3403.         dc.b    0
  3404. TopazName:    dc.b    "topaz.font",0
  3405.         ds.w    0
  3406.  
  3407. ;ASL stuff
  3408.  
  3409. AslReqTags:    dc.l    ASL_Window
  3410.         dc.l    0            ;Move window pointer here!
  3411.         dc.l    TAG_DONE,0
  3412. LoadReqTags:    dc.l    ASL_Hail,LoadText1
  3413.         dc.l    ASL_Dir,NormalDir
  3414.         dc.l    ASL_File,PrefsName2
  3415.         dc.l    ASL_FuncFlags,0
  3416.         dc.l    TAG_DONE,0
  3417. SaveReqTags:    dc.l    ASL_Hail,SaveText1
  3418.         dc.l    ASL_Dir,NormalDir
  3419.         dc.l    ASL_File,PrefsName2
  3420.         dc.l    ASL_FuncFlags,FILF_SAVE
  3421.         dc.l    TAG_DONE,0
  3422. PrintReqTags:    dc.l    ASL_Hail,PrintText1
  3423.         dc.l    ASL_Dir,0
  3424.         dc.l    ASL_File,PrintFileName
  3425.         dc.l    ASL_FuncFlags,FILF_SAVE
  3426.         dc.l    TAG_DONE,0
  3427.  
  3428. ;ITextStructures
  3429.  
  3430. OKTxt:        dc.b    1,2            ;PENS
  3431.         dc.w    0            ;MODE
  3432.         dc.w    0,0            ;LEFT+TOPEDGE
  3433.         dc.l    0            ;FONT
  3434.         dc.l    OKText1            ;TEXT
  3435.         dc.l    0            ;NEXTTEXT
  3436.  
  3437. CancelTxt:    dc.b    1,2            ;PENS
  3438.         dc.w    0            ;MODE
  3439.         dc.w    0,0            ;LEFT+TOPEDGE
  3440.         dc.l    0            ;FONT
  3441.         dc.l    CancelText1        ;TEXT
  3442.         dc.l    0            ;NEXTTEXT
  3443.  
  3444. File_ERRTxt1:    dc.b    1,2            ;PENS
  3445.         dc.w    0            ;MODE
  3446.         dc.w    10,10            ;LEFT+TOPEDGE
  3447.         dc.l    0            ;FONT
  3448.         dc.l    File_ERRText1        ;TEXT
  3449.         dc.l    0            ;NEXTTEXT
  3450.  
  3451. File_ERRTxt2:    dc.b    1,2            ;PENS
  3452.         dc.w    0            ;MODE
  3453.         dc.w    10,10            ;LEFT+TOPEDGE
  3454.         dc.l    0            ;FONT
  3455.         dc.l    File_ERRText2        ;TEXT
  3456.         dc.l    0            ;NEXTTEXT
  3457.  
  3458. File_ERRTxt3:    dc.b    1,2            ;PENS
  3459.         dc.w    0            ;MODE
  3460.         dc.w    10,10            ;LEFT+TOPEDGE
  3461.         dc.l    0            ;FONT
  3462.         dc.l    File_ERRText3        ;TEXT
  3463.         dc.l    0            ;NEXTTEXT
  3464.  
  3465. Print_ERRTxt1:    dc.b    1,2            ;PENS
  3466.         dc.w    0            ;MODE
  3467.         dc.w    10,10            ;LEFT+TOPEDGE
  3468.         dc.l    0            ;FONT
  3469.         dc.l    Print_ERRText1        ;TEXT
  3470.         dc.l    0            ;NEXTTEXT
  3471.  
  3472. Print_ERRTxt2:    dc.b    1,2            ;PENS
  3473.         dc.w    0            ;MODE
  3474.         dc.w    10,10            ;LEFT+TOPEDGE
  3475.         dc.l    0            ;FONT
  3476.         dc.l    Print_ERRText2        ;TEXT
  3477.         dc.l    0            ;NEXTTEXT
  3478.  
  3479. AboutTxt1:    dc.b    1,2            ;PENS
  3480.         dc.w    0            ;MODE
  3481.         dc.w    0,0            ;LEFT+TOPEDGE
  3482.         dc.l    Topaz            ;FONT
  3483.         dc.l    AboutText1        ;TEXT
  3484.         dc.l    AboutTxt2        ;NEXTTEXT
  3485.  
  3486. AboutTxt2:    dc.b    1,2            ;PENS
  3487.         dc.w    0            ;MODE
  3488.         dc.w    0,10            ;LEFT+TOPEDGE
  3489.         dc.l    Topaz            ;FONT
  3490.         dc.l    AboutText2        ;TEXT
  3491.         dc.l    AboutTxt3        ;NEXTTEXT
  3492.  
  3493. AboutTxt3:    dc.b    1,2            ;PENS
  3494.         dc.w    0            ;MODE
  3495.         dc.w    0,20            ;LEFT+TOPEDGE
  3496.         dc.l    Topaz            ;FONT
  3497.         dc.l    AboutText3        ;TEXT
  3498.         dc.l    AboutTxt4        ;NEXTTEXT
  3499.  
  3500. AboutTxt4:    dc.b    1,2            ;PENS
  3501.         dc.w    0            ;MODE
  3502.         dc.w    0,30            ;LEFT+TOPEDGE
  3503.         dc.l    Topaz            ;FONT
  3504.         dc.l    AboutText4        ;TEXT
  3505.         dc.l    0 ;AboutTxt5        ;NEXTTEXT
  3506.  
  3507. QuitTxt1:    dc.b    1,2            ;PENS
  3508.         dc.w    0            ;MODE
  3509.         dc.w    0,0            ;LEFT+TOPEDGE
  3510.         dc.l    Topaz            ;FONT
  3511.         dc.l    QuitText1        ;TEXT
  3512.         dc.l    QuitTxt2        ;NEXTTEXT
  3513.  
  3514. QuitTxt2:    dc.b    1,2            ;PENS
  3515.         dc.w    0            ;MODE
  3516.         dc.w    0,10            ;LEFT+TOPEDGE
  3517.         dc.l    Topaz            ;FONT
  3518.         dc.l    QuitText2        ;TEXT
  3519.         dc.l    QuitTxt3        ;NEXTTEXT
  3520.  
  3521. QuitTxt3:    dc.b    1,2            ;PENS
  3522.         dc.w    0            ;MODE
  3523.         dc.w    0,30            ;LEFT+TOPEDGE
  3524.         dc.l    Topaz            ;FONT
  3525.         dc.l    QuitText3        ;TEXT
  3526.         dc.l    0 ;QuitTxt4        ;NEXTTEXT
  3527.  
  3528. NoMemTxt1:    dc.b    3,1            ;PENS
  3529.         dc.w    4            ;MODE
  3530.         dc.w    10,10            ;LEFT+TOPEDGE
  3531.         dc.l    Topaz            ;FONT
  3532.         dc.l    NoMemText1        ;TEXT
  3533.         dc.l    0            ;NEXTTEXT
  3534.  
  3535. ;Gadgets
  3536.  
  3537. SaveGadText1:    dc.b    "_Save...",0
  3538. QuitGadText1:    dc.b    "_Quit",0
  3539. ListGadText1:    dc.b    "Ports",0
  3540.  
  3541. PortGadText1:    dc.b    "Port:",0
  3542. StatusGadText1:    dc.b    "Status:",0
  3543.  
  3544. SingleGadText1:    dc.b    "Single:",0
  3545. OnGadText1:    dc.b    "O_n",0
  3546. OffGadText1:    dc.b    "O_ff",0
  3547. ToggleGadText1:    dc.b    "To_ggle",0
  3548.  
  3549. AllGadText1:    dc.b    "All:",0
  3550. OnGadText2:    dc.b    "On",0
  3551. OffGadText2:    dc.b    "Off",0
  3552. ToggleGadText2:    dc.b    "Toggle",0
  3553.  
  3554. SerGadText1:    dc.b    "Device name",0
  3555. SerGadText2:    dc.b    "Unit",0
  3556. SerGadText3:    dc.b    "Speed",0
  3557.  
  3558. OKGadText1:    dc.b    "_OK",0
  3559. CancelGadText1:    dc.b    "_Cancel",0
  3560.  
  3561. DescGadText1:    dc.b    "Port",0
  3562. DescGadText2:    dc.b    "Description",0
  3563.         ds.w    0
  3564.  
  3565. glist:        dcb.b    gg_SIZEOF,0
  3566. glist2:        dcb.b    gg_SIZEOF,0
  3567. glist3:        dcb.b    gg_SIZEOF,0
  3568.  
  3569. NGSaveGad:    dc.w    10        ;gng_LeftEdge
  3570.         dc.w    OptionTop    ;gng_TopEdge
  3571.         dc.w    70        ;gng_Width
  3572.         dc.w    12        ;gng_Height
  3573.         dc.l    SaveGadText1    ;gng_GadgetText
  3574.         dc.l    Topaz        ;gng_TextAttr
  3575.         dc.w    98        ;gng_GadgetID
  3576.         dc.l    PLACETEXT_IN    ;gng_Flags
  3577.         dc.l    0        ;gng_VisualInfo
  3578.         dc.l    0        ;gng_UserData
  3579.  
  3580. NGQuitGad:    dc.w    -80        ;gng_LeftEdge
  3581.         dc.w    OptionTop    ;gng_TopEdge
  3582.         dc.w    70        ;gng_Width
  3583.         dc.w    12        ;gng_Height
  3584.         dc.l    QuitGadText1    ;gng_GadgetText
  3585.         dc.l    Topaz        ;gng_TextAttr
  3586.         dc.w    99        ;gng_GadgetID
  3587.         dc.l    PLACETEXT_IN    ;gng_Flags
  3588.         dc.l    0        ;gng_VisualInfo
  3589.         dc.l    0        ;gng_UserData
  3590.  
  3591. NGListGad:    dc.w    10        ;gng_LeftEdge
  3592.         dc.w    ListTop        ;gng_TopEdge
  3593.         dc.w    200        ;gng_Width
  3594.         dc.w    120        ;gng_Height
  3595.         dc.l    ListGadText1    ;gng_GadgetText
  3596.         dc.l    Topaz        ;gng_TextAttr
  3597.         dc.w    55        ;gng_GadgetID
  3598.         dc.l    PLACETEXT_ABOVE    ;gng_Flags
  3599.         dc.l    0        ;gng_VisualInfo
  3600.         dc.l    0        ;gng_UserData
  3601.  
  3602. NGPortGad:    dc.w    280        ;gng_LeftEdge
  3603.         dc.w    InfoTop        ;gng_TopEdge
  3604.         dc.w    40        ;gng_Width
  3605.         dc.w    12        ;gng_Height
  3606.         dc.l    PortGadText1    ;gng_GadgetText
  3607.         dc.l    Topaz        ;gng_TextAttr
  3608.         dc.w    0        ;gng_GadgetID
  3609.         dc.l    PLACETEXT_LEFT    ;gng_Flags
  3610.         dc.l    0        ;gng_VisualInfo
  3611.         dc.l    0        ;gng_UserData
  3612.  
  3613. NGStatusGad:    dc.w    280        ;gng_LeftEdge
  3614.         dc.w    InfoTop+1*12    ;gng_TopEdge
  3615.         dc.w    100        ;gng_Width
  3616.         dc.w    12        ;gng_Height
  3617.         dc.l    StatusGadText1    ;gng_GadgetText
  3618.         dc.l    Topaz        ;gng_TextAttr
  3619.         dc.w    0        ;gng_GadgetID
  3620.         dc.l    PLACETEXT_LEFT    ;gng_Flags
  3621.         dc.l    0        ;gng_VisualInfo
  3622.         dc.l    0        ;gng_UserData
  3623.  
  3624. NGSingleGad:    dc.w    229        ;gng_LeftEdge
  3625.         dc.w    ActionTop-1*12    ;gng_TopEdge
  3626.         dc.w    70        ;gng_Width
  3627.         dc.w    12        ;gng_Height
  3628.         dc.l    SingleGadText1    ;gng_GadgetText
  3629.         dc.l    Topaz        ;gng_TextAttr
  3630.         dc.w    0        ;gng_GadgetID
  3631.         dc.l    PLACETEXT_IN    ;gng_Flags
  3632.         dc.l    0        ;gng_VisualInfo
  3633.         dc.l    0        ;gng_UserData
  3634.  
  3635. NGOnGad:    dc.w    229        ;gng_LeftEdge
  3636.         dc.w    ActionTop+0*(12+INTERHEIGHT)    ;gng_TopEdge
  3637.         dc.w    70        ;gng_Width
  3638.         dc.w    12        ;gng_Height
  3639.         dc.l    OnGadText1    ;gng_GadgetText
  3640.         dc.l    Topaz        ;gng_TextAttr
  3641.         dc.w    20        ;gng_GadgetID
  3642.         dc.l    PLACETEXT_IN    ;gng_Flags
  3643.         dc.l    0        ;gng_VisualInfo
  3644.         dc.l    0        ;gng_UserData
  3645.  
  3646. NGOffGad:    dc.w    229        ;gng_LeftEdge
  3647.         dc.w    ActionTop+1*(12+INTERHEIGHT)    ;gng_TopEdge
  3648.         dc.w    70        ;gng_Width
  3649.         dc.w    12        ;gng_Height
  3650.         dc.l    OffGadText1    ;gng_GadgetText
  3651.         dc.l    Topaz        ;gng_TextAttr
  3652.         dc.w    21        ;gng_GadgetID
  3653.         dc.l    PLACETEXT_IN    ;gng_Flags
  3654.         dc.l    0        ;gng_VisualInfo
  3655.         dc.l    0        ;gng_UserData
  3656.  
  3657. NGToggleGad:    dc.w    229        ;gng_LeftEdge
  3658.         dc.w    ActionTop+2*(12+INTERHEIGHT)    ;gng_TopEdge
  3659.         dc.w    70        ;gng_Width
  3660.         dc.w    12        ;gng_Height
  3661.         dc.l    ToggleGadText1    ;gng_GadgetText
  3662.         dc.l    Topaz        ;gng_TextAttr
  3663.         dc.w    22        ;gng_GadgetID
  3664.         dc.l    PLACETEXT_IN    ;gng_Flags
  3665.         dc.l    0        ;gng_VisualInfo
  3666.         dc.l    0        ;gng_UserData
  3667.  
  3668. NGAllGad:    dc.w    229+1*(70+(2*INTERWIDTH))    ;gng_LeftEdge
  3669.         dc.w    ActionTop-1*12    ;gng_TopEdge
  3670.         dc.w    70        ;gng_Width
  3671.         dc.w    12        ;gng_Height
  3672.         dc.l    AllGadText1    ;gng_GadgetText
  3673.         dc.l    Topaz        ;gng_TextAttr
  3674.         dc.w    0        ;gng_GadgetID
  3675.         dc.l    PLACETEXT_IN    ;gng_Flags
  3676.         dc.l    0        ;gng_VisualInfo
  3677.         dc.l    0        ;gng_UserData
  3678.  
  3679. NGOnGad2:    dc.w    229+1*(70+(2*INTERWIDTH))    ;gng_LeftEdge
  3680.         dc.w    ActionTop+0*(12+INTERHEIGHT)    ;gng_TopEdge
  3681.         dc.w    70        ;gng_Width
  3682.         dc.w    12        ;gng_Height
  3683.         dc.l    OnGadText2    ;gng_GadgetText
  3684.         dc.l    Topaz        ;gng_TextAttr
  3685.         dc.w    30        ;gng_GadgetID
  3686.         dc.l    PLACETEXT_IN    ;gng_Flags
  3687.         dc.l    0        ;gng_VisualInfo
  3688.         dc.l    0        ;gng_UserData
  3689.  
  3690. NGOffGad2:    dc.w    229+1*(70+(2*INTERWIDTH))    ;gng_LeftEdge
  3691.         dc.w    ActionTop+1*(12+INTERHEIGHT)    ;gng_TopEdge
  3692.         dc.w    70        ;gng_Width
  3693.         dc.w    12        ;gng_Height
  3694.         dc.l    OffGadText2    ;gng_GadgetText
  3695.         dc.l    Topaz        ;gng_TextAttr
  3696.         dc.w    31        ;gng_GadgetID
  3697.         dc.l    PLACETEXT_IN    ;gng_Flags
  3698.         dc.l    0        ;gng_VisualInfo
  3699.         dc.l    0        ;gng_UserData
  3700.  
  3701. NGToggleGad2:    dc.w    229+1*(70+(2*INTERWIDTH))    ;gng_LeftEdge
  3702.         dc.w    ActionTop+2*(12+INTERHEIGHT)    ;gng_TopEdge
  3703.         dc.w    70        ;gng_Width
  3704.         dc.w    12        ;gng_Height
  3705.         dc.l    ToggleGadText2    ;gng_GadgetText
  3706.         dc.l    Topaz        ;gng_TextAttr
  3707.         dc.w    32        ;gng_GadgetID
  3708.         dc.l    PLACETEXT_IN    ;gng_Flags
  3709.         dc.l    0        ;gng_VisualInfo
  3710.         dc.l    0        ;gng_UserData
  3711.  
  3712. ;Gadget TagLists
  3713.  
  3714. GadTagList:    dc.l    GT_Underscore,'_'
  3715.         dc.l    TAG_DONE,0
  3716.  
  3717. ListGadTagList:    dc.l    GTLV_ShowSelected,0
  3718.         dc.l    TAG_DONE,0
  3719.  
  3720. ListOffTags:    dc.l    GTLV_Labels,0
  3721.         dc.l    TAG_DONE,0
  3722.  
  3723. List1OnTags:    dc.l    GTLV_Labels,PortList
  3724. List1SelTags:    dc.l    GTLV_Selected
  3725. L1SelTagsNum    dc.l    0
  3726.         dc.l    GTLV_Top
  3727. L1TopTagNum:    dc.l    0
  3728.         dc.l    TAG_DONE,0
  3729.  
  3730.  
  3731. PortGadTagList:    dc.l    GTNM_Number
  3732. PortPointer:    dc.l    0
  3733.         dc.l    TAG_DONE,0
  3734.  
  3735. StatusGadTagList: dc.l    GTTX_Text
  3736. StatusPointer:    dc.l    0
  3737.         dc.l    TAG_DONE,0
  3738.  
  3739. ;Gadgets for serial settings window
  3740.  
  3741. NGSerGad1:    dc.w    10        ;gng_LeftEdge
  3742.         dc.w    ShellTop+5    ;gng_TopEdge
  3743.         dc.w    GADWIDTH2    ;gng_Width
  3744.         dc.w    12        ;gng_Height
  3745.         dc.l    SerGadText1    ;gng_GadgetText
  3746.         dc.l    Topaz        ;gng_TextAttr
  3747.         dc.w    2        ;gng_GadgetID
  3748.         dc.l    PLACETEXT_BELOW    ;gng_Flags
  3749.         dc.l    0        ;gng_VisualInfo
  3750.         dc.l    0        ;gng_UserData
  3751.  
  3752. NGSerGad2:    dc.w    10        ;gng_LeftEdge
  3753.         dc.w    ShellTop+25+INTERHEIGHT    ;gng_TopEdge
  3754.         dc.w    GADWIDTH3    ;gng_Width
  3755.         dc.w    12        ;gng_Height
  3756.         dc.l    SerGadText2    ;gng_GadgetText
  3757.         dc.l    Topaz        ;gng_TextAttr
  3758.         dc.w    2        ;gng_GadgetID
  3759.         dc.l    PLACETEXT_BELOW    ;gng_Flags
  3760.         dc.l    0        ;gng_VisualInfo
  3761.         dc.l    0        ;gng_UserData
  3762.  
  3763. NGSerGad3:    dc.w    10        ;gng_LeftEdge
  3764.         dc.w    ShellTop+45+INTERHEIGHT+INTERHEIGHT    ;gng_TopEdge
  3765.         dc.w    GADWIDTH3    ;gng_Width
  3766.         dc.w    12        ;gng_Height
  3767.         dc.l    SerGadText3    ;gng_GadgetText
  3768.         dc.l    Topaz        ;gng_TextAttr
  3769.         dc.w    2        ;gng_GadgetID
  3770.         dc.l    PLACETEXT_BELOW    ;gng_Flags
  3771.         dc.l    0        ;gng_VisualInfo
  3772.         dc.l    0        ;gng_UserData
  3773.  
  3774. NGOKGad1:    dc.w    10        ;gng_LeftEdge
  3775.         dc.w    NegativeTop    ;gng_TopEdge
  3776.         dc.w    70        ;gng_Width
  3777.         dc.w    12        ;gng_Height
  3778.         dc.l    OKGadText1    ;gng_GadgetText
  3779.         dc.l    Topaz        ;gng_TextAttr
  3780.         dc.w    96        ;gng_GadgetID
  3781.         dc.l    PLACETEXT_IN    ;gng_Flags
  3782.         dc.l    0        ;gng_VisualInfo
  3783.         dc.l    0        ;gng_UserData
  3784.  
  3785. NGCancelGad1:    dc.w    -80        ;gng_LeftEdge
  3786.         dc.w    NegativeTop    ;gng_TopEdge
  3787.         dc.w    70        ;gng_Width
  3788.         dc.w    12        ;gng_Height
  3789.         dc.l    CancelGadText1    ;gng_GadgetText
  3790.         dc.l    Topaz        ;gng_TextAttr
  3791.         dc.w    97        ;gng_GadgetID
  3792.         dc.l    PLACETEXT_IN    ;gng_Flags
  3793.         dc.l    0        ;gng_VisualInfo
  3794.         dc.l    0        ;gng_UserData
  3795.  
  3796. ;Taglists
  3797.  
  3798. SerGadTagList:    dc.l    GT_Underscore,'_'
  3799.         dc.l    GTST_MaxChars,GADLENG2-2
  3800.         dc.l    TAG_DONE,0
  3801.  
  3802. SerGadTagList2:    dc.l    GT_Underscore,'_'
  3803.         dc.l    GTIN_MaxChars,GADLENG3-2
  3804.         dc.l    TAG_DONE,0
  3805.  
  3806. SerGadTagList3:    dc.l    GT_Underscore,'_'
  3807.         dc.l    GTIN_MaxChars,GADLENG3-2
  3808.         dc.l    TAG_DONE,0
  3809.  
  3810. SerGadTagList4:    dc.l    GTIN_Number
  3811. GadUnit:    dc.l    0
  3812.         dc.l    TAG_DONE,0
  3813.  
  3814. SerGadTagList5:    dc.l    GTIN_Number
  3815. GadSpeed:    dc.l    0
  3816.         dc.l    TAG_DONE,0
  3817.  
  3818. ;Gadgets for SetPorts window
  3819.  
  3820. NGDesc1Gad:    dc.w    10        ;gng_LeftEdge
  3821.         dc.w    ShellTop    ;gng_TopEdge
  3822.         dc.w    40        ;gng_Width
  3823.         dc.w    12        ;gng_Height
  3824.         dc.l    DescGadText1    ;gng_GadgetText
  3825.         dc.l    Topaz        ;gng_TextAttr
  3826.         dc.w    0        ;gng_GadgetID
  3827.         dc.l    PLACETEXT_IN    ;gng_Flags
  3828.         dc.l    0        ;gng_VisualInfo
  3829.         dc.l    0        ;gng_UserData
  3830.  
  3831. NGDesc2Gad:    dc.w    60        ;gng_LeftEdge
  3832.         dc.w    ShellTop    ;gng_TopEdge
  3833.         dc.w    GADWIDTH1    ;gng_Width
  3834.         dc.w    12        ;gng_Height
  3835.         dc.l    DescGadText2    ;gng_GadgetText
  3836.         dc.l    Topaz        ;gng_TextAttr
  3837.         dc.w    0        ;gng_GadgetID
  3838.         dc.l    PLACETEXT_IN    ;gng_Flags
  3839.         dc.l    0        ;gng_VisualInfo
  3840.         dc.l    0        ;gng_UserData
  3841.  
  3842. NGStrGad1:    dc.w    60        ;gng_LeftEdge
  3843.         dc.w    ShellTop+15    ;gng_TopEdge
  3844.         dc.w    GADWIDTH1    ;gng_Width
  3845.         dc.w    12        ;gng_Height
  3846.         dc.l    0        ;gng_GadgetText
  3847.         dc.l    Topaz        ;gng_TextAttr
  3848.         dc.w    2        ;gng_GadgetID
  3849.         dc.l    0        ;gng_Flags
  3850.         dc.l    0        ;gng_VisualInfo
  3851.         dc.l    0        ;gng_UserData
  3852.  
  3853. NGStrGad2:    dc.w    60        ;gng_LeftEdge
  3854.         dc.w    ShellTop+25    ;gng_TopEdge
  3855.         dc.w    GADWIDTH1    ;gng_Width
  3856.         dc.w    12        ;gng_Height
  3857.         dc.l    0        ;gng_GadgetText
  3858.         dc.l    Topaz        ;gng_TextAttr
  3859.         dc.w    2        ;gng_GadgetID
  3860.         dc.l    0        ;gng_Flags
  3861.         dc.l    0        ;gng_VisualInfo
  3862.         dc.l    0        ;gng_UserData
  3863.  
  3864. NGStrGad3:    dc.w    60        ;gng_LeftEdge
  3865.         dc.w    ShellTop+35    ;gng_TopEdge
  3866.         dc.w    GADWIDTH1    ;gng_Width
  3867.         dc.w    12        ;gng_Height
  3868.         dc.l    0        ;gng_GadgetText
  3869.         dc.l    Topaz        ;gng_TextAttr
  3870.         dc.w    2        ;gng_GadgetID
  3871.         dc.l    0        ;gng_Flags
  3872.         dc.l    0        ;gng_VisualInfo
  3873.         dc.l    0        ;gng_UserData
  3874.  
  3875. NGStrGad4:    dc.w    60        ;gng_LeftEdge
  3876.         dc.w    ShellTop+45    ;gng_TopEdge
  3877.         dc.w    GADWIDTH1    ;gng_Width
  3878.         dc.w    12        ;gng_Height
  3879.         dc.l    0        ;gng_GadgetText
  3880.         dc.l    Topaz        ;gng_TextAttr
  3881.         dc.w    2        ;gng_GadgetID
  3882.         dc.l    0        ;gng_Flags
  3883.         dc.l    0        ;gng_VisualInfo
  3884.         dc.l    0        ;gng_UserData
  3885.  
  3886. NGStrGad5:    dc.w    60        ;gng_LeftEdge
  3887.         dc.w    ShellTop+55    ;gng_TopEdge
  3888.         dc.w    GADWIDTH1    ;gng_Width
  3889.         dc.w    12        ;gng_Height
  3890.         dc.l    0        ;gng_GadgetText
  3891.         dc.l    Topaz        ;gng_TextAttr
  3892.         dc.w    2        ;gng_GadgetID
  3893.         dc.l    0        ;gng_Flags
  3894.         dc.l    0        ;gng_VisualInfo
  3895.         dc.l    0        ;gng_UserData
  3896.  
  3897. NGStrGad6:    dc.w    60        ;gng_LeftEdge
  3898.         dc.w    ShellTop+65    ;gng_TopEdge
  3899.         dc.w    GADWIDTH1    ;gng_Width
  3900.         dc.w    12        ;gng_Height
  3901.         dc.l    0        ;gng_GadgetText
  3902.         dc.l    Topaz        ;gng_TextAttr
  3903.         dc.w    2        ;gng_GadgetID
  3904.         dc.l    0        ;gng_Flags
  3905.         dc.l    0        ;gng_VisualInfo
  3906.         dc.l    0        ;gng_UserData
  3907.  
  3908. NGStrGad7:    dc.w    60        ;gng_LeftEdge
  3909.         dc.w    ShellTop+75    ;gng_TopEdge
  3910.         dc.w    GADWIDTH1    ;gng_Width
  3911.         dc.w    12        ;gng_Height
  3912.         dc.l    0        ;gng_GadgetText
  3913.         dc.l    Topaz        ;gng_TextAttr
  3914.         dc.w    2        ;gng_GadgetID
  3915.         dc.l    0        ;gng_Flags
  3916.         dc.l    0        ;gng_VisualInfo
  3917.         dc.l    0        ;gng_UserData
  3918.  
  3919. NGStrGad8:    dc.w    60        ;gng_LeftEdge
  3920.         dc.w    ShellTop+85    ;gng_TopEdge
  3921.         dc.w    GADWIDTH1    ;gng_Width
  3922.         dc.w    12        ;gng_Height
  3923.         dc.l    0        ;gng_GadgetText
  3924.         dc.l    Topaz        ;gng_TextAttr
  3925.         dc.w    2        ;gng_GadgetID
  3926.         dc.l    0        ;gng_Flags
  3927.         dc.l    0        ;gng_VisualInfo
  3928.         dc.l    0        ;gng_UserData
  3929.  
  3930. NGNumGad1:    dc.w    26        ;gng_LeftEdge
  3931.         dc.w    ShellTop+15    ;gng_TopEdge
  3932.         dc.w    20        ;gng_Width
  3933.         dc.w    12        ;gng_Height
  3934.         dc.l    0        ;gng_GadgetText
  3935.         dc.l    Topaz        ;gng_TextAttr
  3936.         dc.w    1        ;gng_GadgetID
  3937.         dc.l    0        ;gng_Flags
  3938.         dc.l    0        ;gng_VisualInfo
  3939.         dc.l    0        ;gng_UserData
  3940.  
  3941.  
  3942. NGNumGad2:    dc.w    26        ;gng_LeftEdge
  3943.         dc.w    ShellTop+25    ;gng_TopEdge
  3944.         dc.w    20        ;gng_Width
  3945.         dc.w    12        ;gng_Height
  3946.         dc.l    0        ;gng_GadgetText
  3947.         dc.l    Topaz        ;gng_TextAttr
  3948.         dc.w    1        ;gng_GadgetID
  3949.         dc.l    0        ;gng_Flags
  3950.         dc.l    0        ;gng_VisualInfo
  3951.         dc.l    0        ;gng_UserData
  3952.  
  3953. NGNumGad3:    dc.w    26        ;gng_LeftEdge
  3954.         dc.w    ShellTop+35    ;gng_TopEdge
  3955.         dc.w    20        ;gng_Width
  3956.         dc.w    12        ;gng_Height
  3957.         dc.l    0        ;gng_GadgetText
  3958.         dc.l    Topaz        ;gng_TextAttr
  3959.         dc.w    1        ;gng_GadgetID
  3960.         dc.l    0        ;gng_Flags
  3961.         dc.l    0        ;gng_VisualInfo
  3962.         dc.l    0        ;gng_UserData
  3963.  
  3964.  
  3965. NGNumGad4:    dc.w    26        ;gng_LeftEdge
  3966.         dc.w    ShellTop+45    ;gng_TopEdge
  3967.         dc.w    20        ;gng_Width
  3968.         dc.w    12        ;gng_Height
  3969.         dc.l    0        ;gng_GadgetText
  3970.         dc.l    Topaz        ;gng_TextAttr
  3971.         dc.w    1        ;gng_GadgetID
  3972.         dc.l    0        ;gng_Flags
  3973.         dc.l    0        ;gng_VisualInfo
  3974.         dc.l    0        ;gng_UserData
  3975.  
  3976. NGNumGad5:    dc.w    26        ;gng_LeftEdge
  3977.         dc.w    ShellTop+55    ;gng_TopEdge
  3978.         dc.w    20        ;gng_Width
  3979.         dc.w    12        ;gng_Height
  3980.         dc.l    0        ;gng_GadgetText
  3981.         dc.l    Topaz        ;gng_TextAttr
  3982.         dc.w    1        ;gng_GadgetID
  3983.         dc.l    0        ;gng_Flags
  3984.         dc.l    0        ;gng_VisualInfo
  3985.         dc.l    0        ;gng_UserData
  3986.  
  3987. NGNumGad6:    dc.w    26        ;gng_LeftEdge
  3988.         dc.w    ShellTop+65    ;gng_TopEdge
  3989.         dc.w    20        ;gng_Width
  3990.         dc.w    12        ;gng_Height
  3991.         dc.l    0        ;gng_GadgetText
  3992.         dc.l    Topaz        ;gng_TextAttr
  3993.         dc.w    1        ;gng_GadgetID
  3994.         dc.l    0        ;gng_Flags
  3995.         dc.l    0        ;gng_VisualInfo
  3996.         dc.l    0        ;gng_UserData
  3997.  
  3998. NGNumGad7:    dc.w    26        ;gng_LeftEdge
  3999.         dc.w    ShellTop+75    ;gng_TopEdge
  4000.         dc.w    20        ;gng_Width
  4001.         dc.w    12        ;gng_Height
  4002.         dc.l    0        ;gng_GadgetText
  4003.         dc.l    Topaz        ;gng_TextAttr
  4004.         dc.w    1        ;gng_GadgetID
  4005.         dc.l    0        ;gng_Flags
  4006.         dc.l    0        ;gng_VisualInfo
  4007.         dc.l    0        ;gng_UserData
  4008.  
  4009. NGNumGad8:    dc.w    26        ;gng_LeftEdge
  4010.         dc.w    ShellTop+85    ;gng_TopEdge
  4011.         dc.w    20        ;gng_Width
  4012.         dc.w    12        ;gng_Height
  4013.         dc.l    0        ;gng_GadgetText
  4014.         dc.l    Topaz        ;gng_TextAttr
  4015.         dc.w    1        ;gng_GadgetID
  4016.         dc.l    0        ;gng_Flags
  4017.         dc.l    0        ;gng_VisualInfo
  4018.         dc.l    0        ;gng_UserData
  4019.  
  4020. DescGadTagList: dc.l    GTTX_Border,1
  4021.         dc.l    TAG_DONE,0
  4022.  
  4023. StrGadTagList1: dc.l    GTST_MaxChars,GADLENG1-2
  4024.         dc.l    TAG_DONE,0
  4025. NumGadTagList1: dc.l    GTNM_Number
  4026. NumText:    dc.l    1
  4027.         dc.l    TAG_DONE,0
  4028.  
  4029.  
  4030. ;Menus
  4031.  
  4032. Menu1Name:    dc.b    "Project",0
  4033. Menu2Name:    dc.b    "Preferences",0
  4034.  
  4035. LoadMenuText1:    dc.b    "Load...",0
  4036. LoadCommKey:    dc.b    "L",0
  4037. SaveAsMenuText1: dc.b    "Save as...",0
  4038. SaveAsCommKey:    dc.b    "A",0
  4039. AboutMenuText1: dc.b    "About...",0
  4040. AboutCommKey:    dc.b    "?",0
  4041. PrintMenuText1:    dc.b    "Print...",0
  4042. PrintCommKey:    dc.b    "P",0
  4043. QuitMenuText1:    dc.b    "Quit",0
  4044. QuitCommKey:    dc.b    "Q",0
  4045. SerMenuText1:    dc.b    "Serial...",0
  4046. SerCommKey:    dc.b    "E",0
  4047. PrefsMenuText1:    dc.b    "Port names...",0
  4048. PrefsCommKey:    dc.b    "R",0
  4049.  
  4050. Menu1Name2:    dc.b    "Page",0
  4051. PrefsMenu1Text1: dc.b    "Ports   1-8",0
  4052. Prefs1CommKey:    dc.b    "1",0
  4053. PrefsMenu2Text1: dc.b    "Ports  9-16",0
  4054. Prefs2CommKey:    dc.b    "2",0
  4055. PrefsMenu3Text1: dc.b    "Ports 17-24",0
  4056. Prefs3CommKey:    dc.b    "3",0
  4057. PrefsMenu4Text1: dc.b    "Ports 25-32",0
  4058. Prefs4CommKey:    dc.b    "4",0
  4059. PrefsMenu5Text1: dc.b    "Ports 33-40",0
  4060. Prefs5CommKey:    dc.b    "5",0
  4061. PrefsMenu6Text1: dc.b    "Ports 41-48",0
  4062. Prefs6CommKey:    dc.b    "6",0
  4063.         ds.l    0
  4064.  
  4065. MNProjectMenu1: dc.b    NM_TITLE        ;gnm_Type
  4066.         dc.b    0            ;gnm_Pad
  4067.         dc.l    Menu1Name        ;gnm_Label
  4068.         dc.l    0            ;gnm_CommKey
  4069.         dc.w    0            ;gnm_Flags
  4070.         dc.l    0            ;gnm_MutualExclude
  4071.         dc.l    0            ;gnm_UserData
  4072.  
  4073. MNLoad1:    dc.b    NM_ITEM            ;gnm_Type
  4074.         dc.b    0            ;gnm_Pad
  4075.         dc.l    LoadMenuText1        ;gnm_Label
  4076.         dc.l    LoadCommKey        ;gnm_CommKey
  4077.         dc.w    0            ;gnm_Flags
  4078.         dc.l    0            ;gnm_MutualExclude
  4079.         dc.l    0            ;gnm_UserData
  4080.  
  4081. MNSaveAs1:    dc.b    NM_ITEM            ;gnm_Type
  4082.         dc.b    0            ;gnm_Pad
  4083.         dc.l    SaveAsMenuText1        ;gnm_Label
  4084.         dc.l    SaveAsCommKey        ;gnm_CommKey
  4085.         dc.w    0            ;gnm_Flags
  4086.         dc.l    0            ;gnm_MutualExclude
  4087.         dc.l    0            ;gnm_UserData
  4088.  
  4089. MNAbout1:    dc.b    NM_ITEM            ;gnm_Type
  4090.         dc.b    0            ;gnm_Pad
  4091.         dc.l    AboutMenuText1        ;gnm_Label
  4092.         dc.l    AboutCommKey        ;gnm_CommKey
  4093.         dc.w    0            ;gnm_Flags
  4094.         dc.l    0            ;gnm_MutualExclude
  4095.         dc.l    0            ;gnm_UserData
  4096.  
  4097. MNP1SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  4098.         dc.b    0            ;gnm_Pad
  4099.         dc.l    NM_BARLABEL        ;gnm_Label
  4100.         dc.l    0            ;gnm_CommKey
  4101.         dc.w    0            ;gnm_Flags
  4102.         dc.l    0            ;gnm_MutualExclude
  4103.         dc.l    0            ;gnm_UserData
  4104.  
  4105. MNPrint1:    dc.b    NM_ITEM            ;gnm_Type
  4106.         dc.b    0            ;gnm_Pad
  4107.         dc.l    PrintMenuText1        ;gnm_Label
  4108.         dc.l    PrintCommKey        ;gnm_CommKey
  4109.         dc.w    0            ;gnm_Flags
  4110.         dc.l    0            ;gnm_MutualExclude
  4111.         dc.l    0            ;gnm_UserData
  4112.  
  4113. MNP1SepMenu2:    dc.b    NM_ITEM            ;gnm_Type
  4114.         dc.b    0            ;gnm_Pad
  4115.         dc.l    NM_BARLABEL        ;gnm_Label
  4116.         dc.l    0            ;gnm_CommKey
  4117.         dc.w    0            ;gnm_Flags
  4118.         dc.l    0            ;gnm_MutualExclude
  4119.         dc.l    0            ;gnm_UserData
  4120.  
  4121. MNQuit1:    dc.b    NM_ITEM            ;gnm_Type
  4122.         dc.b    0            ;gnm_Pad
  4123.         dc.l    QuitMenuText1        ;gnm_Label
  4124.         dc.l    QuitCommKey        ;gnm_CommKey
  4125.         dc.w    0            ;gnm_Flags
  4126.         dc.l    0            ;gnm_MutualExclude
  4127.         dc.l    0            ;gnm_UserData
  4128.  
  4129. MNPrefsMenu1:    dc.b    NM_TITLE        ;gnm_Type
  4130.         dc.b    0            ;gnm_Pad
  4131.         dc.l    Menu2Name        ;gnm_Label
  4132.         dc.l    0            ;gnm_CommKey
  4133.         dc.w    0            ;gnm_Flags
  4134.         dc.l    0            ;gnm_MutualExclude
  4135.         dc.l    0            ;gnm_UserData
  4136.  
  4137. MNSer1:        dc.b    NM_ITEM            ;gnm_Type
  4138.         dc.b    0            ;gnm_Pad
  4139.         dc.l    SerMenuText1        ;gnm_Label
  4140.         dc.l    SerCommKey        ;gnm_CommKey
  4141.         dc.w    0            ;gnm_Flags
  4142.         dc.l    0            ;gnm_MutualExclude
  4143.         dc.l    0            ;gnm_UserData
  4144.  
  4145. MNPrefs1:    dc.b    NM_ITEM            ;gnm_Type
  4146.         dc.b    0            ;gnm_Pad
  4147.         dc.l    PrefsMenuText1        ;gnm_Label
  4148.         dc.l    PrefsCommKey        ;gnm_CommKey
  4149.         dc.w    0            ;gnm_Flags
  4150.         dc.l    0            ;gnm_MutualExclude
  4151.         dc.l    0            ;gnm_UserData
  4152.  
  4153.         dc.w    0            ;NM_END?
  4154.  
  4155. ;Menu TagList(s)
  4156.  
  4157. MenuTagList:    dc.l    GTMN_Menu,MNProjectMenu1
  4158.         dc.l    TAG_DONE,0
  4159.  
  4160. MNPageMenu1:    dc.b    NM_TITLE        ;gnm_Type
  4161.         dc.b    0            ;gnm_Pad
  4162.         dc.l    Menu1Name2        ;gnm_Label
  4163.         dc.l    0            ;gnm_CommKey
  4164.         dc.w    0            ;gnm_Flags
  4165.         dc.l    0            ;gnm_MutualExclude
  4166.         dc.l    0            ;gnm_UserData
  4167.  
  4168. MNPage1:    dc.b    NM_ITEM            ;gnm_Type
  4169.         dc.b    0            ;gnm_Pad
  4170.         dc.l    PrefsMenu1Text1        ;gnm_Label
  4171.         dc.l    Prefs1CommKey        ;gnm_CommKey
  4172.         dc.w    CHECKIT!CHECKED        ;gnm_Flags
  4173.         dc.l    ~1            ;gnm_MutualExclude
  4174.         dc.l    0            ;gnm_UserData
  4175.  
  4176. MNPage2:    dc.b    NM_ITEM            ;gnm_Type
  4177.         dc.b    0            ;gnm_Pad
  4178.         dc.l    PrefsMenu2Text1        ;gnm_Label
  4179.         dc.l    Prefs2CommKey        ;gnm_CommKey
  4180.         dc.w    CHECKIT            ;gnm_Flags
  4181.         dc.l    ~2            ;gnm_MutualExclude
  4182.         dc.l    0            ;gnm_UserData
  4183.  
  4184. MNPage3:    dc.b    NM_ITEM            ;gnm_Type
  4185.         dc.b    0            ;gnm_Pad
  4186.         dc.l    PrefsMenu3Text1        ;gnm_Label
  4187.         dc.l    Prefs3CommKey        ;gnm_CommKey
  4188.         dc.w    CHECKIT            ;gnm_Flags
  4189.         dc.l    ~4            ;gnm_MutualExclude
  4190.         dc.l    0            ;gnm_UserData
  4191.  
  4192. MNPage4:    dc.b    NM_ITEM            ;gnm_Type
  4193.         dc.b    0            ;gnm_Pad
  4194.         dc.l    PrefsMenu4Text1        ;gnm_Label
  4195.         dc.l    Prefs4CommKey        ;gnm_CommKey
  4196.         dc.w    CHECKIT            ;gnm_Flags
  4197.         dc.l    ~8            ;gnm_MutualExclude
  4198.         dc.l    0            ;gnm_UserData
  4199.  
  4200. MNPage5:    dc.b    NM_ITEM            ;gnm_Type
  4201.         dc.b    0            ;gnm_Pad
  4202.         dc.l    PrefsMenu5Text1        ;gnm_Label
  4203.         dc.l    Prefs5CommKey        ;gnm_CommKey
  4204.         dc.w    CHECKIT            ;gnm_Flags
  4205.         dc.l    ~16            ;gnm_MutualExclude
  4206.         dc.l    0            ;gnm_UserData
  4207.  
  4208. MNPage6:    dc.b    NM_ITEM            ;gnm_Type
  4209.         dc.b    0            ;gnm_Pad
  4210.         dc.l    PrefsMenu6Text1        ;gnm_Label
  4211.         dc.l    Prefs6CommKey        ;gnm_CommKey
  4212.         dc.w    CHECKIT            ;gnm_Flags
  4213.         dc.l    ~32            ;gnm_MutualExclude
  4214.         dc.l    0            ;gnm_UserData
  4215.  
  4216. MNP2SepMenu1:    dc.b    NM_ITEM            ;gnm_Type
  4217.         dc.b    0            ;gnm_Pad
  4218.         dc.l    NM_BARLABEL        ;gnm_Label
  4219.         dc.l    0            ;gnm_CommKey
  4220.         dc.w    0            ;gnm_Flags
  4221.         dc.l    0            ;gnm_MutualExclude
  4222.         dc.l    0            ;gnm_UserData
  4223.  
  4224. MNQuit2:    dc.b    NM_ITEM            ;gnm_Type
  4225.         dc.b    0            ;gnm_Pad
  4226.         dc.l    QuitMenuText1        ;gnm_Label
  4227.         dc.l    QuitCommKey        ;gnm_CommKey
  4228.         dc.w    0            ;gnm_Flags
  4229.         dc.l    0            ;gnm_MutualExclude
  4230.         dc.l    0            ;gnm_UserData
  4231.  
  4232.         dc.w    0            ;NM_END?
  4233.  
  4234. ;Menu TagList(s) for Prefs window
  4235.  
  4236. MenuTagList2:    dc.l    GTMN_Menu,MNPageMenu1
  4237.         dc.l    TAG_DONE,0
  4238.  
  4239. ;Commodities stuff (Brokers etc..)
  4240.  
  4241. NewBroker1:    dc.b NB_VERSION,0        ;Version, Reserved 1
  4242.         dc.l CCName1,CCTitle,CCDesc    ;Name, Title, Description
  4243.         dc.w NBU_UNIQUE!NBU_NOTIFY,COF_SHOW_HIDE    ;Uniq, Flags
  4244. NBPri:        dc.b 0,0            ;Priority, Reserved 2
  4245.         dc.l 0                ;Port
  4246.         dc.w 0                ;Reserved channel
  4247.  
  4248. PREFS_START:
  4249.  
  4250. Prefs:        dc.l    CCFileVersion
  4251.  
  4252. SerDevNBuffer1:    dc.b    "serial.device"
  4253.         dcb.b    32-13,0        ;device name
  4254. SerUnit:    dc.l    0
  4255. Speed:        dc.l    9600
  4256.  
  4257. NameList:    dcb.b    (PortAmount*GADLENG1),0
  4258.  
  4259. Port1A:        dc.b    0        ;Ports 1-8
  4260. Port1B:        dc.b    0        ;Ports 9-16
  4261. Port1C:        dc.b    0        ;Ports 17-24
  4262.  
  4263. Port2A:        dc.b    0        ;Ports 25-32
  4264. Port2B:        dc.b    0        ;Ports 33-40
  4265. Port2C:        dc.b    0        ;Ports 41-48
  4266.  
  4267. Future1:    dc.l    0
  4268. Future2:    dc.l    0
  4269. Future3:    dc.l    0
  4270. Future4:    dc.l    0
  4271.  
  4272. Alt1XY:
  4273. Alt1XPos:    dc.w    200
  4274. Alt1YPos:    dc.w    31
  4275.  
  4276. PREFS_END:    dc.l    0,0
  4277.  
  4278. PrefsSize:    EQU    (PREFS_END-PREFS_START)
  4279.  
  4280.  
  4281. ;Buffers etc.
  4282.  
  4283. PrintBuffer1:    dc.l    0
  4284. PrintBuffer2:    dc.l    0
  4285.  
  4286. SerBuffer1:    dc.b    "*"        ;The magic character
  4287. PortNum:    dc.b    0
  4288. Port:        dc.b    0
  4289. Status:        dc.b    0
  4290.  
  4291.         Section CC,BSS
  4292.  
  4293. PrintBuffer3:    ds.b    PRINT_BUF_SIZE
  4294.  
  4295. PortList:    ds.l    LN_SIZE
  4296.  
  4297.  
  4298.         Section CC,DATA,CHIP
  4299.  
  4300.         ds.w    0
  4301.  
  4302. ClockPointer1:    dc.w    $0000,$0000
  4303.         dc.w    $0400,$07C0,$0000,$07C0,$0100,$0380,$0000,$07E0
  4304.         dc.w    $07C0,$1FF8,$1FF0,$3FEC,$3FF8,$7FDE,$3FF8,$7FBE
  4305.         dc.w    $7FFC,$FF7F,$7EFC,$FFFF,$7FFC,$FFFF,$3FF8,$7FFE
  4306.         dc.w    $3FF8,$7FFE,$1FF0,$3FFC,$07C0,$1FF8,$0000,$07E0
  4307.         dc.w    $0000,$0000
  4308.  
  4309.         end
  4310.