home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 508.lha / IO_Expansion_Board / SERprefs / serprefs.asm < prev   
Assembly Source File  |  1991-05-06  |  48KB  |  2,319 lines

  1. *****************************************************************************
  2. *
  3. *  Program:  Prefs.asm ©1990,91 by The Puzzle Factory
  4. * Function:  Select serial preferences for ACIA's on I/O Expansion Board.
  5. *
  6. *   Author: Jeff Lavin
  7. *  History: 08/21/89  V0.50 Created
  8. *           09/10/90  V0.51 Updated code for M68
  9. *                           Added another handshake gadget
  10. *           03/03/91  V1.0  Fixed initialization bug & made it useful
  11. *
  12. * [To all: Please don't forget to bump the revision numbers if you do *any*
  13. *          modifications at all.  -Jeff]
  14. *
  15. *****************************************************************************
  16.  
  17. ;Set Tabs           |       |                 |
  18.  
  19.     exeobj
  20.     objfile    'c:SerPrefs'
  21.     macfile    'NewSER.i'
  22.  
  23. *** Macros
  24.  
  25. sett    macro        ;Set Text coords
  26.     dw    \1,\2    ;LeftEdge, BaseLine
  27.     dl    \3    ;TextPtr
  28.     endm
  29.  
  30. ;*** Equates
  31.  
  32. TRUE    equ    1
  33. FALSE    equ    0
  34.  
  35. ;*** Begin Mainline
  36.  
  37.     lea    (DT),a5    ;BSS relative base
  38.     lea    (BSS_Start-DT,a5),a0
  39.     move.w    #BSS_Len-1,d1
  40. 1$    clr.b    (a0)+    ;Clear BSS area
  41.     dbra    d1,1$
  42.  
  43.     lea    (DosName,pc),a1    ;Open dos.library
  44.     moveq    #33,d0    ;V1.2 or later
  45.     movea.l    (SysBase),a6
  46.     SYS    OpenLibrary
  47.     move.l    d0,(Dos_Base-DT,a5)
  48.     beq.b    2$
  49.  
  50.     movea.l    d0,a6
  51.     SYS    Output
  52.     move.l    d0,(stdout-DT,a5)
  53.  
  54.     lea    (IntName,pc),a1    ;Open intuition.library
  55.     moveq    #33,d0    ;V1.2 or later
  56.     movea.l    (SysBase),a6
  57.     SYS    OpenLibrary
  58.     move.l    d0,(Int_Base-DT,a5)
  59. 2$    beq.b    Cleanup
  60.  
  61.     lea    (GfxName,pc),a1    ;Open graphics.library
  62.     moveq    #33,d0    ;V1.2 or later
  63.     SYS    OpenLibrary
  64.     move.l    d0,(Gfx_Base-DT,a5)
  65.     beq.b    Cleanup
  66.  
  67.     movea.l    (ThisTask,a6),a3    ;Our process base
  68.     tst.l    (pr_CLI,a3)    ;From the CLI?
  69.     bne.b    FromCLI
  70.  
  71. FromWBench:
  72.     lea    (pr_MsgPort,a3),a0
  73.     SYS    WaitPort    ;Get a msg from WBench
  74.     lea    (pr_MsgPort,a3),a0
  75.     SYS    GetMsg
  76.     move.l    d0,(WBenchMsg-DT,a5) ; and save for later return.
  77.  
  78. FromCLI    movea.l    (Int_Base-DT,a5),a6
  79.     lea    (MyScreen-DT,a5),a0
  80.     SYS    OpenScreen
  81.     move.l    d0,(ScreenPtr-DT,a5) ;Save ptr to my picture screen
  82.     beq.b    Cleanup    ;Error while opening
  83.  
  84.     lea    (MyWindow-DT,a5),a0
  85.     move.l    d0,(nw_Screen,a0)    ;Point NewWindow to this screen
  86.     SYS    OpenWindow
  87.     move.l    d0,(WindowPtr-DT,a5) ;Save window pointer
  88.     beq.b    Cleanup    ;Error while opening
  89.  
  90.     movea.l    d0,a0
  91.     move.l    (wd_UserPort,a0),(PortPtr-DT,a5)
  92.     move.l    (wd_RPort,a0),(RastPtr-DT,a5)
  93.     move.l    a0,(pr_WindowPtr,a3) ;Make requesters appear here
  94.  
  95. ;    rts
  96.  
  97.     bsr    SetupScreen    ;Create display
  98.  
  99. ;    rts
  100.  
  101.     bsr.b    MainLoop    ;When finished, we'll fall thru
  102.  
  103. ************************************************
  104. *             Termination section              *
  105. ************************************************
  106.  
  107. * It's time to quit, close everything and say good-night, Gracie.
  108.  
  109. Cleanup:
  110.     movea.l    (Int_Base-DT,a5),a6
  111.     move.l    (WindowPtr-DT,a5),d0 ;Close Window
  112.     beq.b    1$
  113.     movea.l    (SysBase),a3
  114.     movea.l    (ThisTask,a3),a1
  115.     clr.l    (pr_WindowPtr,a1)
  116.     movea.l    d0,a0
  117.     SYS    CloseWindow
  118.  
  119. 1$    move.l    (ScreenPtr-DT,a5),d0 ;Close Screen
  120.     beq.b    2$
  121.     movea.l    d0,a0
  122.     SYS    CloseScreen
  123.  
  124. 2$    movea.l    a3,a6
  125.     move.l    (WBenchMsg-DT,a5),d2
  126.     beq.b    3$
  127.     SYS    Forbid    ;So WBench won't UnLoadSeg us
  128.     movea.l    d2,a1
  129.     SYS    ReplyMsg    ;Return msg to WBench
  130.  
  131. 3$:
  132.     move.l    (Dos_Base-DT,a5),a1
  133.     move.l    a1,d0
  134.     beq.b    .SkipDos
  135.     SYS    CloseLibrary
  136. .SkipDos:
  137.     move.l    (Int_Base-DT,a5),a1
  138.     move.l    a1,d0
  139.     beq.b    .SkipInt
  140.     SYS    CloseLibrary
  141. .SkipInt:
  142.     move.l    (Gfx_Base-DT,a5),a1
  143.     move.l    a1,d0
  144.     beq.b    .SkipGfx
  145.     SYS    CloseLibrary
  146. .SkipGfx:
  147.  
  148.     moveq    #0,d0
  149.     rts
  150.  
  151. ************************************************
  152. *              Main Execution Loop             *
  153. ************************************************
  154.  
  155. * Wait for a msg, execute appropriate routine.
  156.  
  157. MainLoop:
  158.     tst.b    (CloseFlag-DT,a5)    ;Flag set?
  159.     beq.b    1$
  160.     rts        ;Exit
  161.  
  162. 1$    movea.l    (PortPtr-DT,a5),a0
  163.     moveq    #0,d0
  164.     moveq    #0,d1
  165.     move.b    (MP_SIGBIT,a0),d1
  166.     bset    d1,d0
  167.     movea.l    (SysBase),a6
  168.     SYS    Wait    ;Now wait for a message
  169.  
  170. GetIMsg    movea.l    (PortPtr-DT,a5),a0
  171.     movea.l    (SysBase),a6
  172.     SYS    GetMsg    ;Did we get one?
  173.     tst.l    d0
  174.     beq.b    MainLoop    ;No
  175.     movea.l    d0,a1
  176.     move.l    (im_Class,a1),d2    ;Yes, get info
  177.     movea.l    (im_IAddress,a1),a2
  178.     SYS    ReplyMsg    ;Return msg
  179.  
  180. CheckGads    cmpi.w    #GADGETDOWN,d2    ;Someone clicked on a gadget
  181.     beq.b    1$
  182.     cmpi.w    #GADGETUP,d2    ;May be either type
  183.     bne.b    2$
  184. 1$    lea    (FirstGadget-DT,a5),a1 ;Save some code for ME
  185.     move.w    (gg_GadgetID,a2),d1
  186.     movea.l    (gg_UserData,a2),a0 ;Get action address
  187.     jsr    (a0)
  188. 2$    bra.b    GetIMsg    ;Unknown class
  189.  
  190. BufUP01    move.w    (_BufSize01-DT,a5),d0
  191.     addq.w    #1,d0
  192.     bra.b    CkBuf01
  193.  
  194. BufDN01    move.w    (_BufSize01-DT,a5),d0
  195.     subq.w    #1,d0
  196. CkBuf01    cmpi.w    #GADGETDOWN,d2    ;Ignore GADGETUP msgs, we just
  197.     beq.b    DoBuf01    ; need them for GADGHCOMP.
  198.     rts
  199.  
  200. DoBuf01    andi.w    #%00000111,d0    ;Modulo 8
  201.     move.w    d0,(_BufSize01-DT,a5) ;Save new value
  202.     moveq    #26,d1    ;BaseLine for Text
  203.     bra    BufStrings    ;Clear old text & write new
  204.  
  205. BaudUP01    move.w    (_BaudRate01-DT,a5),d0
  206.     addq.w    #1,d0
  207.     bra.b    CkBaud01
  208.  
  209. BaudDN01    move.w    (_BaudRate01-DT,a5),d0
  210.     subq.w    #1,d0
  211. CkBaud01    cmpi.w    #GADGETDOWN,d2    ;Ignore GADGETUP msgs
  212.     beq.b    DoBaud01
  213.     rts
  214.  
  215. DoBaud01    andi.w    #%00001111,d0    ;Modulo 16
  216.     move.w    d0,(_BaudRate01-DT,a5)
  217.     moveq    #41,d1    ;BaseLine for Text
  218.     bra    BaudStrings
  219.  
  220. WordLen01    subq.w    #4,d1         ;ID(thisGad)-ID(1stGad) =
  221.     move.b    d1,(_WordLen01-DT,a5)     ; SerialPref value.
  222.     lea    (WordLen01.0_gad-DT,a5),a0 ;1st gadget in this group
  223.     moveq    #4,d0         ;# of gadgets in this group
  224.     bsr    MutualExclude         ;Hilite this gadget
  225.     rts
  226.  
  227. StopBit01    subq.w    #8,d1
  228.     move.b    d1,(_StopBits01-DT,a5)
  229.     lea    (StopBit01.0_gad-DT,a5),a0
  230.     moveq    #2,d0
  231.     bsr    MutualExclude
  232.     rts
  233.  
  234. Parity01    subi.w    #10,d1
  235.     move.b    d1,(_Parity01-DT,a5)
  236.     lea    (Parity01.0_gad-DT,a5),a0
  237.     moveq    #5,d0
  238.     bsr    MutualExclude
  239.     rts
  240.  
  241. Shake01    subi.w    #15,d1
  242.     move.b    d1,(_Shake01-DT,a5)
  243.     lea    (Shake01.0_gad-DT,a5),a0
  244.     moveq    #3,d0
  245.     bsr    MutualExclude
  246.     rts
  247.  
  248. BufUP02    move.w    (_BufSize02-DT,a5),d0
  249.     addq.w    #1,d0
  250.     bra.b    CkBuf02
  251.  
  252. BufDN02    move.w    (_BufSize02-DT,a5),d0
  253.     subq.w    #1,d0
  254. CkBuf02    cmpi.w    #GADGETDOWN,d2    ;Ignore GADGETUP msgs
  255.     beq.b    DoBuf02
  256.     rts
  257.  
  258. DoBuf02    andi.w    #%00000111,d0    ;Modulo 8
  259.     move.w    d0,(_BufSize02-DT,a5)
  260.     moveq    #66,d1    ;BaseLine for Text
  261.     bra    BufStrings
  262.  
  263. BaudUP02    move.w    (_BaudRate02-DT,a5),d0
  264.     addq.w    #1,d0
  265.     bra.b    CkBaud02
  266.  
  267. BaudDN02    move.w    (_BaudRate02-DT,a5),d0
  268.     subq.w    #1,d0
  269. CkBaud02    cmpi.w    #GADGETDOWN,d2    ;Ignore GADGETUP msgs
  270.     beq.b    DoBaud02
  271.     rts
  272.  
  273. DoBaud02    andi.w    #%00001111,d0    ;Modulo 16
  274.     move.w    d0,(_BaudRate02-DT,a5)
  275.     moveq    #81,d1    ;BaseLine for Text
  276.     bra    BaudStrings
  277.  
  278. WordLen02    subi.w    #20+4,d1
  279.     move.b    d1,(_WordLen02-DT,a5)
  280.     lea    (WordLen02.0_gad-DT,a5),a0
  281.     moveq    #4,d0
  282.     bsr    MutualExclude
  283.     rts
  284.  
  285. StopBit02    subi.w    #20+8,d1
  286.     move.b    d1,(_StopBits02-DT,a5)
  287.     lea    (StopBit02.0_gad-DT,a5),a0
  288.     moveq    #2,d0
  289.     bsr    MutualExclude
  290.     rts
  291.  
  292. Parity02    subi.w    #20+10,d1
  293.     move.b    d1,(_Parity02-DT,a5)
  294.     lea    (Parity02.0_gad-DT,a5),a0
  295.     moveq    #5,d0
  296.     bsr    MutualExclude
  297.     rts
  298.  
  299. Shake02    subi.w    #20+15,d1
  300.     move.b    d1,(_Shake02-DT,a5)
  301.     lea    (Shake02.0_gad-DT,a5),a0
  302.     moveq    #3,d0
  303.     bsr    MutualExclude
  304.     rts
  305.  
  306. BufUP11    move.w    (_BufSize11-DT,a5),d0
  307.     addq.w    #1,d0
  308.     bra.b    CkBuf11
  309.  
  310. BufDN11    move.w    (_BufSize11-DT,a5),d0
  311.     subq.w    #1,d0
  312. CkBuf11    cmpi.w    #GADGETDOWN,d2    ;Ignore GADGETUP msgs
  313.     beq.b    DoBuf11
  314.     rts
  315.  
  316. DoBuf11    andi.w    #%00000111,d0    ;Modulo 8
  317.     move.w    d0,(_BufSize11-DT,a5)
  318.     moveq    #106,d1    ;BaseLine for Text
  319.     bra    BufStrings
  320.  
  321. BaudUP11    move.w    (_BaudRate11-DT,a5),d0
  322.     addq.w    #1,d0
  323.     bra.b    CkBaud11
  324.  
  325. BaudDN11    move.w    (_BaudRate11-DT,a5),d0
  326.     subq.w    #1,d0
  327. CkBaud11    cmpi.w    #GADGETDOWN,d2    ;Ignore GADGETUP msgs
  328.     beq.b    DoBaud11
  329.     rts
  330.  
  331. DoBaud11    andi.w    #%00001111,d0    ;Modulo 16
  332.     move.w    d0,(_BaudRate11-DT,a5)
  333.     moveq    #121,d1    ;BaseLine for Text
  334.     bra    BaudStrings
  335.  
  336. WordLen11    subi.w    #40+4,d1
  337.     move.b    d1,(_WordLen11-DT,a5)
  338.     lea    (WordLen11.0_gad-DT,a5),a0
  339.     moveq    #4,d0
  340.     bsr    MutualExclude
  341.     rts
  342.  
  343. StopBit11    subi.w    #40+8,d1
  344.     move.b    d1,(_StopBits11-DT,a5)
  345.     lea    (StopBit11.0_gad-DT,a5),a0
  346.     moveq    #2,d0
  347.     bsr    MutualExclude
  348.     rts
  349.  
  350. Parity11    subi.w    #40+10,d1
  351.     move.b    d1,(_Parity11-DT,a5)
  352.     lea    (Parity11.0_gad-DT,a5),a0
  353.     moveq    #5,d0
  354.     bsr    MutualExclude
  355.     rts
  356.  
  357. Shake11    subi.w    #40+15,d1
  358.     move.b    d1,(_Shake11-DT,a5)
  359.     lea    (Shake11.0_gad-DT,a5),a0
  360.     moveq    #3,d0
  361.     bsr    MutualExclude
  362.     rts
  363.  
  364. BufUP12    move.w    (_BufSize12-DT,a5),d0
  365.     addq.w    #1,d0
  366.     bra.b    CkBuf12
  367.  
  368. BufDN12    move.w    (_BufSize12-DT,a5),d0
  369.     subq.w    #1,d0
  370. CkBuf12    cmpi.w    #GADGETDOWN,d2    ;Ignore GADGETUP msgs
  371.     beq.b    DoBuf12
  372.     rts
  373.  
  374. DoBuf12    andi.w    #%00000111,d0    ;Modulo 8
  375.     move.w    d0,(_BufSize12-DT,a5)
  376.     move.w    #146,d1    ;BaseLine for Text
  377.  
  378. BufStrings    bsr    Clear    ;Clear old text from area
  379.     lea    (BufTxt.tbl,pc),a0
  380.     bra.b    String_In
  381.  
  382. BaudUP12    move.w    (_BaudRate12-DT,a5),d0
  383.     addq.w    #1,d0
  384.     bra.b    CkBaud12
  385.  
  386. BaudDN12    move.w    (_BaudRate12-DT,a5),d0
  387.     subq.w    #1,d0
  388. CkBaud12    cmpi.w    #GADGETDOWN,d2    ;Ignore GADGETUP msgs
  389.     beq.b    DoBaud12
  390.     rts
  391.  
  392. DoBaud12    andi.w    #%00001111,d0    ;Modulo 16
  393.     move.w    d0,(_BaudRate12-DT,a5)
  394.     move.w    #161,d1    ;BaseLine for Text
  395.  
  396. BaudStrings    bsr    Clear    ;Clear old text from area
  397.     lea    (BaudTxt.tbl,pc),a0
  398. String_In    lsl.w    #2,d0    ;LONG index
  399.     movea.l    (0,a0,d0.w),a0    ;Get new text based on index
  400.     bsr    strlen
  401.     lsl.w    #2,d0    ;PixelLen=(strlen*charwidth)/2
  402.     moveq    #111,d2    ;Center of text space
  403.     sub.w    d0,d2    ;LeftEdge=Xcoord-(PixelLen/2)
  404.     move.w    d2,d0
  405.     bsr    Text    ;Go write it
  406.     rts
  407.  
  408. WordLen12    subi.w    #60+4,d1
  409.     move.b    d1,(_WordLen12-DT,a5)
  410.     lea    (WordLen12.0_gad-DT,a5),a0
  411.     moveq    #4,d0
  412.     bsr    MutualExclude
  413.     rts
  414.  
  415. StopBit12    subi.w    #60+8,d1
  416.     move.b    d1,(_StopBits12-DT,a5)
  417.     lea    (StopBit12.0_gad-DT,a5),a0
  418.     moveq    #2,d0
  419.     bsr    MutualExclude
  420.     rts
  421.  
  422. Parity12    subi.w    #60+10,d1
  423.     move.b    d1,(_Parity12-DT,a5)
  424.     lea    (Parity12.0_gad-DT,a5),a0
  425.     moveq    #5,d0
  426.     bsr    MutualExclude
  427.     rts
  428.  
  429. Shake12    subi.w    #60+15,d1
  430.     move.b    d1,(_Shake12-DT,a5)
  431.     lea    (Shake12.0_gad-DT,a5),a0
  432.     moveq    #3,d0
  433.     bsr    MutualExclude
  434.     rts
  435.  
  436. SaveGad:
  437.     bsr    MakePointer
  438.     bsr    PutFile    ;Save file & fall thru
  439.     bsr    RemPointer
  440.  
  441. ;********************************************************
  442. ;Ok, now send the prefs to the driver, one way or another
  443. ;********************************************************
  444.  
  445. serprefs    clrso
  446. prefs_CTLCHAR    so.l    1    ;Control char's (order = xON,xOFF,rsvd,rsvd)
  447. prefs_RBUFLEN    so.l    1    ;Length in bytes of serial port's read buffer
  448. prefs_EXTFLAGS    so.l    1    ;Additional serial flags
  449. prefs_BAUD    so.l    1    ;Baud rate requested (true baud)
  450. prefs_BRKTIME    so.l    1    ;Duration of break signal in MICROseconds
  451. prefs_TERMARRAY    so.b    TERMARRAY_SIZE    ;Termination character array
  452. prefs_READLEN    so.b    1    ;Bits per read char (bit count)
  453. prefs_WRITELEN    so.b    1    ;Bits per write char (bit count)
  454. prefs_STOPBITS    so.b    1    ;Stopbits for read (count)
  455. prefs_SERFLAGS    so.b    1    ;See SERFLAGS bit definitions
  456. serprefs_sizeof    soval
  457.  
  458. UseGad:
  459.  
  460.     Forbid
  461.     lea    (MySerPrefs-DT,a5),a2
  462.     move.l    (4).w,a6
  463.     lea    (MagicPortName,pc),a1
  464.     SYS    FindPort
  465.     move.l    d0,a4
  466.     tst.l    d0
  467.     bne.b    .PortFound
  468.  
  469. ;Create a prefs port
  470.     move.l    #MEMF_CLEAR+MEMF_PUBLIC,d1
  471.     move.l    #MP_SIZE+32+PortNameLength,d0
  472.     SYS    AllocMem
  473.     tst.l    d0
  474.     beq    PrefsError
  475.     move.l    d0,a4
  476.  
  477. ;Copy name string
  478.     lea    (MP_SIZE+32,a4),a3
  479.     move.l    a3,a0
  480.     lea    (MagicPortName,pc),a1
  481.     move.w    #PortNameLength-1,d0
  482. ..    move.b    (a1)+,(a0)+
  483.     dbra    d0,..
  484.  
  485.     move.l    a3,(LN_NAME,a4)
  486.     move.l    a4,a1
  487.     move.l    (4).w,a6
  488.     SYS    AddPort
  489.  
  490. .PortFound:
  491.     lea    (MP_SIZE,a4),a3
  492.     moveq    #32/4-1,d0
  493. ..    move.l    (a2)+,(a3)+
  494.     dbra    d0,..
  495.  
  496.     Permit
  497.  
  498. ;Ok, memory has been updated....now update the driver internally,
  499. ;if it happens to be resident.
  500.  
  501.     lea    ($015E,A6),A0    ;device list
  502.     lea    (NewSerName,pc),a1
  503.     SYS    FindName
  504.     tst.l    d0
  505.     beq    .NotResident
  506.  
  507. ;First, set up some structures for IO
  508.  
  509.     lea    (myunit,pc),a2
  510.     lea    (replyport,pc),a3
  511.     move.l    a3,(MN_REPLYPORT,a2)
  512.  
  513. ;Initialize the ReplyPort
  514.  
  515.     sub.l    a1,a1
  516.     SYS    FindTask
  517.     move.l    d0,(MP_SIGTASK,a3)
  518.     moveq    #-1,d0
  519.     SYS    AllocSignal
  520.     move.b    d0,(MP_SIGBIT,a3)
  521.     move.b    #NT_MSGPORT,(LN_TYPE,a3)
  522.     lea    (MP_MSGLIST,a3),a0
  523.     NEWLIST    a0
  524.  
  525.     lea    (MySerPrefs-DT,a5),a4
  526.     moveq    #0,d7    ;unit number
  527. .MainLoop:
  528.     move.l    a2,a1
  529.     moveq    #0,d1
  530.     move.l    d7,d0
  531.     lea    (NewSerName,pc),a0
  532.     SYS    OpenDevice
  533.     tst.l    d0
  534.     bne    .OpenError
  535.  
  536. ;Preset prefs (the prefs-building routine, unfortuntely, depends on this.)
  537.  
  538.     lea    (IO_CTLCHAR,a2),a1
  539.     move.w    #serprefs_sizeof-1,d0
  540.     lea    (Preset,pc),a0
  541. ..    move.b    (a0)+,(a1)+
  542.     dbra    d0,..
  543.  
  544. ;Build the prefs structure
  545.     move.l    a4,a1
  546.     moveq    #0,d0
  547.     move.w    #512,d0
  548.     moveq    #0,d1
  549.     move.w    (up_BufSize,a1),d1 ;0-7
  550.     lsl.l    d1,d0
  551.     move.l    d0,(IO_RBUFLEN,a2)
  552.  
  553.     lea    (baudtable,pc),a0
  554.     move.w    (up_BaudRate,a1),d0 ;0-15
  555.     add.w    d0,d0
  556.     moveq    #0,d1
  557.     move.w    (a0,d0.w),d1
  558.     move.l    d1,(IO_BAUD,a2)
  559.  
  560.     moveq    #5,d1    ;5 bit word
  561.     move.b    (up_WordLen,a1),d0
  562.     beq.b    .WordLen    ;up_WordLen=0
  563.     addq.b    #1,d1    ;6 bit word
  564.     subq.b    #1,d0
  565.     beq.b    .WordLen    ;up_WordLen=1
  566.     addq.b    #1,d1    ;7 bit word
  567.     subq.b    #1,d0
  568.     beq.b    .WordLen    ;up_WordLen=2
  569.     addq.b    #1,d1    ;8 bit word
  570. .WordLen:
  571.     move.b    d1,(IO_READLEN,a2)
  572.     move.b    d1,(IO_WRITELEN,a2)
  573.  
  574.     move.b    (up_StopBits,a1),d0 ;0-1
  575.     addq.b    #1,d0
  576.     move.b    d0,(IO_STOPBITS,a2)
  577.  
  578.     move.b    (up_Parity,a1),d0
  579.     cmp.b    #4,d0    ;none?
  580.     beq.b    .SkipParity
  581.     bset    #SERB_PARTY_ON,(IO_SERFLAGS,a2)
  582.     cmp.b    #2,d0
  583.     bcc.b    .MarkSpace
  584.     bclr    #SERB_PARTY_ODD,(IO_SERFLAGS,a2)    ;set to even
  585.     tst.b    d0
  586.     bne.b    .SkipParity
  587.     bset    #SERB_PARTY_ODD,(IO_SERFLAGS,a2)    ;set to odd
  588.     bra.b    .SkipParity
  589. .MarkSpace:
  590.     bset    #SEXTB_MSPON,(3+IO_EXTFLAGS,a2)
  591.     bclr    #SEXTB_MARK,(3+IO_EXTFLAGS,a2)    ;set to space
  592.     cmp.b    #3,d0
  593.     beq.b    .SkipParity
  594.     bset    #SEXTB_MARK,(3+IO_EXTFLAGS,a2)
  595.  
  596. .SkipParity:
  597.     move.b    (up_Shake,a1),d0
  598.     cmp.b    #2,d0
  599.     beq.b    .SkipShake
  600.     cmp.b    #1,d0
  601.     bne.b    .SkipXon
  602.     bclr    #SERB_XDISABLED,(IO_SERFLAGS,a2)
  603.     bra.b    .SkipShake
  604. .SkipXon:
  605.     bset    #SERB_7WIRE,(IO_SERFLAGS,a2)
  606. .SkipShake:
  607.  
  608. ;Now send an SDCMD_SETPARAMS command to the device...
  609.  
  610.     move.l    a2,a1
  611.     move.w    #SDCMD_SETPARAMS,(IO_COMMAND,a1)
  612.     SYS    DoIO
  613.  
  614.     move.l    a2,a1
  615.     SYS    CloseDevice
  616.  
  617. .OpenError:
  618.     addq.l    #8,a4
  619.     addq.l    #1,d7
  620.     cmp.w    #4,d7
  621.     bne    .MainLoop
  622.  
  623. .NotResident:
  624. CancelGad:
  625.     bset    #0,(CloseFlag-DT,a5)
  626.     rts
  627.  
  628. LastSavedGad:
  629.     st    (MemRes)
  630.     bsr    SetupScreen    ;Create display (& a lot more!)
  631.     rts
  632.  
  633. PrefsError:
  634.     Permit
  635.     bra.b    CancelGad
  636.  
  637. MagicPortName:    dc.b    'newser_prefs',0
  638. PortNameLength    equ    *-MagicPortName
  639. ResName:    dc.b    'newser.device',0
  640. NewSerName:    dc.b    'newser.device',0
  641.     even
  642.  
  643. myunit:    dcb.b    IOEXTSER_SIZE,0
  644. replyport:    dcb.b    MP_SIZE,0
  645. Preset:
  646.     dl    SER_DEFAULT_CTLCHAR ;prefs_CTLCHAR
  647.     dl    64*1024    ;prefs_RBUFLEN
  648.     dl    0    ;prefs_EXTFLAGS
  649.     dl    9600    ;prefs_BAUD
  650.     dl    250000    ;prefs_BRKTIME
  651.     dl    0    ;prefs_TERMARRAY
  652.     dl    0    ;prefs_TERMARRAY
  653.     db    8    ;prefs_READLEN
  654.     db    8    ;prefs_WRITELEN
  655.     db    1    ;prefs_STOPBITS
  656. ;Note: RAD_BOOGIE must NOT be set here
  657.     db    $88    ;prefs_SERFLAGS
  658. baudtable:
  659.     dw    50
  660.     dw    110
  661.     dw    135
  662.     dw    150
  663.     dw    300
  664.     dw    600
  665.     dw    1200
  666.     dw    1800
  667.     dw    2400
  668.     dw    3600
  669.     dw    4800
  670.     dw    7200
  671.     dw    9600
  672.     dw    19200
  673.     dw    38400
  674.     dw    31250    ;MIDI (external clock)
  675.  
  676. MemRes:    dc.w    0
  677.  
  678. ****************************************
  679. *              SubRoutines             *
  680. ****************************************
  681.  
  682. *************************************************************************
  683. * NAME:    GetFile()
  684. * FUNCTION:    Read prefs file into memory.
  685. * INPUTS:    None
  686. * RETURN:    D0 = TRUE if success, else FALSE.
  687. * SCRATCH:    D0-D5/A0-A2/A6
  688. *************************************************************************
  689.  
  690. GetFile:
  691.     movea.l    (Dos_Base-DT,a5),a6
  692.     lea    (FileName,pc),a2
  693.     moveq    #SHARED_LOCK,d2    ;Does file exist?
  694.     move.l    a2,d1
  695.     SYS    Lock
  696.     move.l    d0,d5    ;Lock
  697.     beq.b    3$    ;No, we'll create it later
  698.  
  699.     move.l    #MODE_OLDFILE,d2
  700.     move.l    a2,d1    ;Yes, use it
  701.     SYS    Open
  702.     move.l    d0,d4    ;FileHandle
  703.     bne.b    1$
  704.     move.l    d5,d1    ;Lock
  705.     SYS    UnLock
  706.     lea    (OpenErr.msg,pc),a0 ;Couldn't open file
  707.     bra.b    2$
  708.  
  709. 1$:
  710.     moveq    #32,d3
  711.     lea    (MySerPrefs-DT,a5),a0
  712.     move.l    a0,d2    ;Buffer
  713.     move.l    d4,d1    ;FileHandle
  714.     SYS    Read    ;Finally, read it in
  715.     move.l    d0,-(sp)
  716.     move.l    d4,d1    ;FileHandle
  717.     SYS    Close    ;Close the file
  718.     move.l    d5,d1    ;Lock
  719.     SYS    UnLock    ;Release the lock
  720.     cmpi.l    #32,(sp)+    ;Read it all in?
  721.     beq.b    4$    ;Yes, read it all
  722.     lea    (ReadErr.msg,pc),a0 ;No, couldn't reach eof
  723.  
  724. 2$    bsr    strlen
  725.     move.l    d0,d3    ;Length
  726.     move.l    a0,d2    ;Buffer
  727.     move.l    (stdout-DT,a5),d1    ;FileHandle
  728.     beq.b    3$
  729.     SYS    Write
  730. 3$    moveq    #FALSE,d0
  731.     bra.b    5$
  732.  
  733. 4$    moveq    #TRUE,d0
  734. 5$    rts
  735.  
  736. FileName    PREFFILE
  737.  
  738. OpenErr.msg cstr 'SerialPrefs: Error opening S:Serial-Preferences',$a
  739. ReadErr.msg cstr 'SerialPrefs: Error reading S:Serial-Preferences',$a
  740. MakeErr.msg cstr 'SerialPrefs: Error creating S:Serial-Preferences',$a
  741. WritErr.msg cstr 'SerialPrefs: Error writing S:Serial-Preferences',$a
  742.     even
  743.  
  744. *************************************************************************
  745. * NAME:    PutFile()
  746. * FUNCTION:    Save prefs to file.
  747. *    If file does not exist, it will be created.
  748. * INPUTS:    None
  749. * RETURN:    D0 = TRUE if success, else FALSE.
  750. * SCRATCH:    D0-D5/A0-A2/A4/A6
  751. *************************************************************************
  752.  
  753. PutFile:
  754.     movea.l    (Dos_Base-DT,a5),a6
  755.     lea    (FileName,pc),a2
  756.     moveq    #SHARED_LOCK,d2    ;Does file exist?
  757.     move.l    a2,d1
  758.     SYS    Lock
  759.     move.l    #MODE_OLDFILE,d2
  760.     move.l    d0,d5    ;Lock
  761.     bne.b    1$    ;Yes, use it
  762.  
  763.     move.l    #MODE_NEWFILE,d2    ;No, create a new one
  764. 1$    move.l    a2,d1
  765.     SYS    Open
  766.     move.l    d0,d4    ;FileHandle
  767.     bne.b    2$
  768.     move.l    d5,d1    ;Lock
  769.     SYS    UnLock
  770.     lea    (MakeErr.msg,pc),a0 ;Couldn't create file
  771.     bra.b    3$
  772.  
  773. 2$    moveq    #32,d3    ;Length
  774.     lea    (MySerPrefs-DT,a5),a0
  775.     move.l    a0,d2    ;Buffer
  776.     move.l    d4,d1    ;FileHandle
  777.     SYS    Write    ;Finally, write it out
  778.     move.l    d0,-(sp)
  779.     move.l    d4,d1    ;FileHandle
  780.     SYS    Close    ;Close the file
  781.     move.l    d5,d1    ;Lock
  782.     SYS    UnLock    ;Release the lock
  783.     cmpi.l    #32,(sp)+    ;Wrote it all out?
  784.     beq.b    5$    ;Yes, wrote it all
  785.     lea    (WritErr.msg,pc),a0 ;No, error
  786.  
  787. 3$    bsr    strlen
  788.     move.l    d0,d3    ;Length
  789.     move.l    a0,d2    ;Buffer
  790.     move.l    (stdout-DT,a5),d1    ;FileHandle
  791.     beq.b    4$
  792.     SYS    Write
  793. 4$    moveq    #FALSE,d0
  794.     bra.b    6$
  795.  
  796. 5$    moveq    #TRUE,d0
  797. 6$    rts
  798.  
  799. *************************************************************************
  800. * Name:    MutualExclude()
  801. * Function:    Perform mutual exclude function for gadgets.
  802. *
  803. * Cur  Cur | Comp   If the gadget is the current one AND it is already
  804. * Gad  Col | Gad?   selected, don't change it.  If the gadget is not the
  805. * ---------------   current one, AND it is NOT selected, don't change it.
  806. *  0    0  |  0     In both other cases, complement it's current state.
  807. *  0    1  |  1     D2 and D3 are TRUE or FALSE depending on these two
  808. *  1    0  |  1     conditions.  EOR'ing them, gives our response:  If
  809. *  1    1  |  0     TRUE, complement.  Else, don't.
  810. *
  811. * Input:    D0 = Number of gadgets in this group.
  812. *    A0 = Ptr to 1st gadget in this group.
  813. *    A2 = Ptr to gadget that was just selected.
  814. * Results:    None
  815. * Scratch:    D0-D1/A0-A1
  816. *************************************************************************
  817.  
  818. MutualExclude:
  819.     movem.l    d2-d4/a2-a6,-(sp)
  820.     movea.l    (Gfx_Base-DT,a5),a6
  821.     movea.l    (RastPtr-DT,a5),a3    ;RastPort
  822.     movea.l    a0,a4    ;1st gadget in group
  823.     move.w    d0,d4    ;Numgads
  824.     subq.w    #1,d4
  825.  
  826.     moveq    #1,d0
  827.     movea.l    a3,a1
  828.     SYS    SetAPen
  829.  
  830.     moveq    #RP_COMPLEMENT,d0
  831.     movea.l    a3,a1
  832.     SYS    SetDrMd
  833.  
  834. 1$    move.w    (gg_GadgetID,a2),d0 ;ID of selected gadget
  835.     cmp.w    (gg_GadgetID,a4),d0 ;Is this the current gadget?
  836.     seq    d2      ;D2 = 1 if TRUE
  837.     move.w    (gg_LeftEdge,a4),d0
  838.     move.w    (gg_TopEdge,a4),d1
  839.     movea.l    a3,a1
  840.     movem.w    d0-d1,-(sp)    ;Save Left & Top
  841.     SYS    ReadPixel
  842.     cmpi.w    #3,d0    ;This color means complemented
  843.     seq    d3    ;D3 = 1 if TRUE
  844.     movem.w    (sp)+,d0-d1
  845.     eor.b    d2,d3
  846.     beq.b    2$
  847.  
  848.     move.w    d0,d2    ;Xmin
  849.     move.w    d1,d3    ;Ymin
  850.     add.w    (gg_Width,a4),d2
  851.     subq.w    #2,d2    ;Xmax
  852.     add.w    (gg_Height,a4),d3
  853.     subq.w    #1,d3    ;Ymax
  854.     movea.l    a3,a1
  855.     SYS    RectFill
  856.  
  857. 2$    moveq    #0,d2    ;Clear for next gadget
  858.     moveq    #0,d3
  859.     movea.l    (gg_NextGadget,a4),a4
  860.     dbra    d4,1$
  861.  
  862.     movem.l    (sp)+,d2-d4/a2-a6
  863.     rts
  864.  
  865. *************************************************************************
  866. * NAME:    MakePointer()
  867. * FUNCTION:    Disallow any user selections.  Make a "sleepy" pointer
  868. *    for the window.
  869. * INPUTS:    None
  870. * RETURN:    Modifies Pointer & IDCMP
  871. * SCRATCH:    None
  872. *************************************************************************
  873.  
  874. MakePointer:
  875.     tst.b    (ZZZFlag-DT,a5)    ;Already modified?
  876.     bne.b    1$
  877.  
  878.     movem.l    d0-d3/a0-a1/a6,-(sp)
  879.     movea.l (WindowPtr-DT,a5),a0
  880.     move.l    a0,-(sp)
  881.     moveq    #SIZEVERIFY,d0    ;So we'll never get a message
  882.     movea.l    (Int_Base-DT,a5),a6
  883.     SYS    ModifyIDCMP    ; while we/re busy.
  884.  
  885.     movea.l (sp)+,a0    ;Window
  886.     lea    (SpriteData),a1    ;Already in CHIP mem
  887.     moveq    #24,d0    ;Height
  888.     moveq    #16,d1    ;Width
  889.     moveq    #-8,d2    ;XOffset
  890.     moveq    #-8,d3    ;YOffset
  891.     SYS    SetPointer    ;Change sprite into ZZZ pointer
  892.  
  893.     move.b    #1,(ZZZFlag-DT,a5)
  894.     movem.l    (sp)+,d0-d3/a0-a1/a6
  895. 1$    rts
  896.  
  897. *************************************************************************
  898. * NAME:    RemPointer()
  899. * FUNCTION:    Restore normal pointer and user selections to window.
  900. * INPUTS:    None
  901. * RETURN:    Modifies Pointer & IDCMP
  902. * SCRATCH:    None
  903. *************************************************************************
  904.  
  905. RemPointer:
  906.     tst.b    (ZZZFlag-DT,a5)    ;Normal now?
  907.     beq.b    1$
  908.  
  909.     movem.l    d0-d1/a0-a1/a6,-(sp)
  910.     movea.l    (WindowPtr-DT,a5),a0 ;Change sprite back to normal
  911.     move.l    a0,-(sp)
  912.     movea.l    (Int_Base-DT,a5),a6
  913.     SYS    ClearPointer
  914.  
  915.     movea.l    (sp)+,a0
  916.     moveq    #GADGETDOWN!GADGETUP,D0 ;Now we want messages again
  917.     SYS    ModifyIDCMP
  918.  
  919.     clr.b    (ZZZFlag-DT,a5)
  920.     movem.l    (sp)+,d0-d1/a0-a1/a6
  921. 1$    rts
  922.  
  923. *************************************************************************
  924. * NAME:    SetupScreen()
  925. * FUNCTION:    Create display.  Link gadgets to window.
  926. * INPUTS:    None
  927. * RETURN:    None
  928. * SCRATCH:    D0-D4/A0-A2/A6
  929. *************************************************************************
  930.  
  931. SetupScreen:
  932.     movea.l    (Gfx_Base-DT,a5),a6
  933.     movea.l    (RastPtr-DT,a5),a2
  934.     moveq    #2,d0    ;Color background
  935.     movea.l    a2,a1
  936.     SYS    SetAPen
  937.  
  938.     moveq    #RP_JAM1,d0
  939.     movea.l    a2,a1
  940.     SYS    SetDrMd
  941.  
  942.     moveq    #2,d0    ;Xmin
  943.     moveq    #1,d1    ;Ymin
  944.     move.w    #637,d2    ;Xmax
  945.     move.w    #188,d3    ;Ymax
  946.     movea.l    a2,a1
  947.     SYS    RectFill
  948.  
  949.     moveq    #0,d0
  950.     moveq    #0,d1
  951.     moveq    #0,d2
  952.     moveq    #0,d3
  953.     lea    (FirstGadget-DT,a5),a0
  954. 1$    move.w    (gg_LeftEdge,a0),d0
  955.     subq.w    #2,d0
  956.     move.w    (gg_TopEdge,a0),d1
  957.     subq.w    #1,d1
  958.     move.w    (gg_Width,a0),d2
  959.     addq.w    #2,d2
  960.     move.w    (gg_Height,a0),d3
  961.     addq.w    #1,d3
  962.     bsr    Box    ;Draw gadget boxes
  963.     move.l    (gg_NextGadget,a0),d0
  964.     movea.l    d0,a0
  965.     bne.b    1$
  966.  
  967.     lea    (TextCoords,pc),a0
  968.     moveq    #8-1,d4
  969. 2$    move.w    (a0)+,d0
  970.     move.w    (a0)+,d1
  971.     move.w    (a0)+,d2
  972.     move.w    (a0)+,d3
  973.     bsr    Box    ;Draw text boxes
  974.     dbra    d4,2$
  975.  
  976.     lea    (Text.tbl,pc),a1
  977. 3$    move.w    (a1)+,d0
  978.     beq.b    4$
  979.     move.w    (a1)+,d1
  980.     movea.l    (a1)+,a0
  981.     bsr    Text    ;Draw all the text
  982.     bra.b    3$
  983.  
  984. 4$    movea.l    (WindowPtr-DT,a5),a1
  985.     movea.l    (wd_FirstGadget,a1),a0
  986.     suba.l    a2,a2
  987.     movea.l    (Int_Base-DT,a5),a6
  988.     SYS    RefreshGadgets    ;Redraw gadgets
  989.  
  990.     bsr    MakePointer
  991.  
  992. ;Check for memory resident prefs
  993.     tst.w    (MemRes)
  994.     beq.b    .Normal
  995.     clr.w    (MemRes)
  996.     bra.b    .NotFound
  997.  
  998. .Normal:
  999.     push    a6
  1000.     move.l    (4).w,a6
  1001.     lea    (MagicPortName,pc),a1
  1002.     Forbid
  1003.     SYS    FindPort
  1004.     Permit
  1005.     pop    a6
  1006.     move.l    d0,a0
  1007.     lea    (MP_SIZE,a0),a0
  1008.     tst.l    d0
  1009.     beq.b    .NotFound
  1010.     lea    (MySerPrefs-DT,a5),a1
  1011.     moveq    #32/4-1,d0
  1012. ..    move.l    (a0)+,(a1)+
  1013.     dbra    d0,..
  1014.     moveq    #1,d0    ;success
  1015.     bra.b    .PortFound
  1016.  
  1017. .NotFound:
  1018.     bsr    GetFile    ;Try to get our file
  1019.  
  1020. .PortFound:
  1021.     bsr    RemPointer
  1022.     tst.l    d0    ;If no file, or error
  1023.     bne.b    5$    ; reading, set defaults
  1024.  
  1025.     moveq    #1,d0    ;1024 byte default
  1026.     move.w    d0,(_BufSize01-DT,a5)
  1027.     move.w    d0,(_BufSize02-DT,a5)
  1028.     move.w    d0,(_BufSize11-DT,a5)
  1029.     move.w    d0,(_BufSize12-DT,a5)
  1030.  
  1031.     moveq    #6,d0    ;1200 baud default
  1032.     move.w    d0,(_BaudRate01-DT,a5)
  1033.     move.w    d0,(_BaudRate02-DT,a5)
  1034.     move.w    d0,(_BaudRate11-DT,a5)
  1035.     move.w    d0,(_BaudRate12-DT,a5)
  1036.  
  1037.     moveq    #3,d0    ;8 bits default
  1038.     move.b    d0,(_WordLen01-DT,a5)
  1039.     move.b    d0,(_WordLen02-DT,a5)
  1040.     move.b    d0,(_WordLen11-DT,a5)
  1041.     move.b    d0,(_WordLen12-DT,a5)
  1042.  
  1043.     moveq    #0,d0    ;1 bit default
  1044.     move.b    d0,(_StopBits01-DT,a5)
  1045.     move.b    d0,(_StopBits02-DT,a5)
  1046.     move.b    d0,(_StopBits11-DT,a5)
  1047.     move.b    d0,(_StopBits12-DT,a5)
  1048.  
  1049.     moveq    #4,d0    ;No parity default
  1050.     move.b    d0,(_Parity01-DT,a5)
  1051.     move.b    d0,(_Parity02-DT,a5)
  1052.     move.b    d0,(_Parity11-DT,a5)
  1053.     move.b    d0,(_Parity12-DT,a5)
  1054.  
  1055.     moveq    #0,d0    ;RTS/CTS default
  1056.     move.b    d0,(_Shake01-DT,a5)
  1057.     move.b    d0,(_Shake02-DT,a5)
  1058.     move.b    d0,(_Shake11-DT,a5)
  1059.     move.b    d0,(_Shake12-DT,a5)
  1060.  
  1061. 5$    move.w    (_BufSize01-DT,a5),d0 ;Whether by prefs file
  1062.     bsr    DoBuf01        ;or by defaults, set strings.
  1063.     move.w    (_BufSize02-DT,a5),d0
  1064.     bsr    DoBuf02
  1065.     move.w    (_BufSize11-DT,a5),d0
  1066.     bsr    DoBuf11
  1067.     move.w    (_BufSize12-DT,a5),d0
  1068.     bsr    DoBuf12
  1069.  
  1070.     move.w    (_BaudRate01-DT,a5),d0
  1071.     bsr    DoBaud01
  1072.     move.w    (_BaudRate02-DT,a5),d0
  1073.     bsr    DoBaud02
  1074.     move.w    (_BaudRate11-DT,a5),d0
  1075.     bsr    DoBaud11
  1076.     move.w    (_BaudRate12-DT,a5),d0
  1077.     bsr    DoBaud12
  1078.  
  1079.     lea    (WordLen01.0_gad-DT,a5),a0
  1080.     moveq    #0,d0
  1081.     move.b    (_WordLen01-DT,a5),d0
  1082.     mulu.w    #gg_SIZEOF,d0
  1083.     lea    (0,a0,d0.w),a2
  1084.     moveq    #4,d0
  1085.     bsr    MutualExclude
  1086.  
  1087.     lea    (StopBit01.0_gad-DT,a5),a0
  1088.     movea.l    a0,a2     ;0 offset = 1 Bit
  1089.     tst.b    (_StopBits01-DT,a5)
  1090.     beq.b    9$
  1091.     lea    (gg_SIZEOF,a2),a2    ;1 offset = 2 bits
  1092. 9$    moveq    #2,d0
  1093.     bsr    MutualExclude
  1094.  
  1095.     lea    (Parity01.0_gad-DT,a5),a0
  1096.     moveq    #0,d0
  1097.     move.b    (_Parity01-DT,a5),d0 ;Value = offset
  1098.     mulu.w    #gg_SIZEOF,d0
  1099.     lea    (0,a0,d0.w),a2
  1100.     moveq    #5,d0
  1101.     bsr    MutualExclude
  1102.  
  1103.     lea    (Shake01.0_gad-DT,a5),a0
  1104.     moveq    #0,d0
  1105.     move.b    (_Shake01-DT,a5),d0 ;Value = offset
  1106.     mulu.w    #gg_SIZEOF,d0
  1107.     lea    (0,a0,d0.w),a2
  1108.     moveq    #3,d0
  1109.     bsr    MutualExclude
  1110.  
  1111.     lea    (WordLen02.0_gad-DT,a5),a0
  1112.     moveq    #0,d0
  1113.     move.b    (_WordLen02-DT,a5),d0
  1114.     mulu.w    #gg_SIZEOF,d0
  1115.     lea    (0,a0,d0.w),a2
  1116.     moveq    #4,d0
  1117.     bsr    MutualExclude
  1118.  
  1119.     lea    (StopBit02.0_gad-DT,a5),a0
  1120.     movea.l    a0,a2      ;0 offset = 1 Bit
  1121.     tst.b    (_StopBits02-DT,a5)
  1122.     beq.b    11$
  1123.     lea    (gg_SIZEOF,a2),a2    ;1 offset = 2 bits
  1124. 11$    moveq    #2,d0
  1125.     bsr    MutualExclude
  1126.  
  1127.     lea    (Parity02.0_gad-DT,a5),a0
  1128.     moveq    #0,d0
  1129.     move.b    (_Parity02-DT,a5),d0 ;Value = offset
  1130.     mulu.w    #gg_SIZEOF,d0
  1131.     lea    (0,a0,d0.w),a2
  1132.     moveq    #5,d0
  1133.     bsr    MutualExclude
  1134.  
  1135.     lea    (Shake02.0_gad-DT,a5),a0
  1136.     moveq    #0,d0
  1137.     move.b    (_Shake02-DT,a5),d0 ;Value = offset
  1138.     mulu.w    #gg_SIZEOF,d0
  1139.     lea    (0,a0,d0.w),a2
  1140.     moveq    #3,d0
  1141.     bsr    MutualExclude
  1142.  
  1143.     lea    (WordLen11.0_gad-DT,a5),a0
  1144.     moveq    #0,d0
  1145.     move.b    (_WordLen11-DT,a5),d0
  1146.     mulu.w    #gg_SIZEOF,d0
  1147.     lea    (0,a0,d0.w),a2
  1148.     moveq    #4,d0
  1149.     bsr    MutualExclude
  1150.  
  1151.     lea    (StopBit11.0_gad-DT,a5),a0
  1152.     movea.l    a0,a2      ;0 offset = 1 Bit
  1153.     tst.b    (_StopBits11-DT,a5)
  1154.     beq.b    13$
  1155.     lea    (gg_SIZEOF,a2),a2    ;1 offset = 2 bits
  1156. 13$    moveq    #2,d0
  1157.     bsr    MutualExclude
  1158.  
  1159.     lea    (Parity11.0_gad-DT,a5),a0
  1160.     moveq    #0,d0
  1161.     move.b    (_Parity11-DT,a5),d0 ;Value = offset
  1162.     mulu.w    #gg_SIZEOF,d0
  1163.     lea    (0,a0,d0.w),a2
  1164.     moveq    #5,d0
  1165.     bsr    MutualExclude
  1166.  
  1167.     lea    (Shake11.0_gad-DT,a5),a0
  1168.     moveq    #0,d0
  1169.     move.b    (_Shake11-DT,a5),d0 ;Value = offset
  1170.     mulu.w    #gg_SIZEOF,d0
  1171.     lea    (0,a0,d0.w),a2
  1172.     moveq    #3,d0
  1173.     bsr    MutualExclude
  1174.  
  1175.     lea    (WordLen12.0_gad-DT,a5),a0
  1176.     moveq    #0,d0
  1177.     move.b    (_WordLen12-DT,a5),d0
  1178.     mulu.w    #gg_SIZEOF,d0
  1179.     lea    (0,a0,d0.w),a2
  1180.     moveq    #4,d0
  1181.     bsr    MutualExclude
  1182.  
  1183.     lea    (StopBit12.0_gad-DT,a5),a0
  1184.     movea.l    a0,a2      ;0 offset = 1 Bit
  1185.     tst.b    (_StopBits12-DT,a5)
  1186.     beq.b    15$
  1187.     lea    (gg_SIZEOF,a2),a2    ;1 offset = 2 bits
  1188. 15$    moveq    #2,d0
  1189.     bsr    MutualExclude
  1190.  
  1191.     lea    (Parity12.0_gad-DT,a5),a0
  1192.     moveq    #0,d0
  1193.     move.b    (_Parity12-DT,a5),d0 ;Value = offset
  1194.     mulu.w    #gg_SIZEOF,d0
  1195.     lea    (0,a0,d0.w),a2
  1196.     moveq    #5,d0
  1197.     bsr    MutualExclude
  1198.  
  1199.     lea    (Shake12.0_gad-DT,a5),a0
  1200.     moveq    #0,d0
  1201.     move.b    (_Shake12-DT,a5),d0 ;Value = offset
  1202.     mulu.w    #gg_SIZEOF,d0
  1203.     lea    (0,a0,d0.w),a2
  1204.     moveq    #3,d0
  1205.     bsr    MutualExclude
  1206.     rts
  1207.  
  1208. *************************************************************************
  1209. * NAME:    Box()
  1210. * FUNCTION:    Draws a box with double verticals for 640x200 mode.
  1211. * INPUTS:    D0:16 = LeftEdge, D1:16 = TopEdge
  1212. *    D2:16 = Width,    D3:16 = Height
  1213. * RETURN:    None
  1214. * SCRATCH:    None
  1215. *************************************************************************
  1216.  
  1217. Box    movem.l    d0-d3/a0-a2/a6,-(sp)
  1218.     movea.l    (Gfx_Base-DT,a5),a6
  1219.     movea.l (RastPtr-DT,a5),a2
  1220.     add.w    d0,d2    ;LeftEdge + Width = Xmax
  1221.     add.w    d1,d3    ;TopEdge + Height = Ymax
  1222.     movem.l d0-d3,-(sp)
  1223.  
  1224.     moveq    #1,d0    ;Do outside rect w/color #1
  1225.     movea.l    a2,a1
  1226.     SYS    SetAPen
  1227.  
  1228.     movem.l (sp),d0-d3
  1229.     movea.l    a2,a1
  1230.     SYS    RectFill
  1231.  
  1232.     moveq    #0,d0    ;Do inside rect w/color #0
  1233.     movea.l    a2,a1
  1234.     SYS    SetAPen
  1235.  
  1236.     movem.l (sp)+,d0-d3
  1237.     addq.w    #2,d0
  1238.     subq.w    #2,d2
  1239.     addq.w    #1,d1
  1240.     subq.w    #1,d3
  1241.     movea.l    a2,a1
  1242.     SYS    RectFill
  1243.     movem.l    (sp)+,d0-d3/a0-a2/a6
  1244.     rts
  1245.  
  1246. *************************************************************************
  1247. * NAME:    Clear()
  1248. * FUNCTION:    Clear BufSize or BaudRate text area.
  1249. * INPUTS:    D1:16 = BaseLine
  1250. * RETURN:    None
  1251. * SCRATCH:    D2-D3
  1252. *************************************************************************
  1253.  
  1254. Clear    movem.l    d0-d1/a0-a2/a6,-(sp)
  1255.     movea.l    (Gfx_Base-DT,a5),a6
  1256.     movea.l    (RastPtr-DT,a5),a2
  1257.     moveq    #77,d0    ;Xmin
  1258.     move.w    d0,d2
  1259.     addi.w    #68,d2    ;Xmax
  1260.     move.w    d1,d3
  1261.     subq.w    #8,d1    ;Ymin
  1262.     addq.w    #3,d3    ;Ymax
  1263.     movem.l    d0-d1/a0,-(sp)
  1264.  
  1265.     movea.l    a2,a1
  1266.     SYS    Move
  1267.  
  1268.     moveq    #0,d0
  1269.     movea.l    a2,a1
  1270.     SYS    SetAPen
  1271.  
  1272.     moveq    #RP_JAM1,d0
  1273.     movea.l    a2,a1
  1274.     SYS    SetDrMd
  1275.  
  1276.     movem.l    (sp)+,d0-d1/a0
  1277.     movea.l    a2,a1
  1278.     SYS    RectFill
  1279.     movem.l    (sp)+,d0-d1/a0-a2/a6
  1280.     rts
  1281.  
  1282. *************************************************************************
  1283. * NAME:    Text()
  1284. * FUNCTION:    Writes text to the screen.
  1285. * INPUTS:    D0:16 = LeftEdge
  1286. *    D1:16 = TopEdge
  1287. *    A0    = Ptr to text.
  1288. * RETURN:    None
  1289. * SCRATCH:    None
  1290. *************************************************************************
  1291.  
  1292. Text    movem.l    d0-d1/a0-a2/a6,-(sp)
  1293.     movea.l    (Gfx_Base-DT,a5),a6
  1294.     movea.l (RastPtr-DT,a5),a2
  1295.     move.l    a0,-(sp)
  1296.         
  1297.     movea.l    a2,a1
  1298.     SYS    Move
  1299.  
  1300.     moveq    #1,d0
  1301.     movea.l    a2,a1
  1302.     SYS    SetAPen
  1303.  
  1304.     moveq    #RP_JAM1,d0
  1305.     movea.l    a2,a1
  1306.     SYS    SetDrMd
  1307.  
  1308.     movea.l    (sp)+,a0
  1309.     bsr.b    strlen
  1310.     movea.l    a2,a1
  1311.     SYS    Text
  1312.     movem.l    (sp)+,d0-d1/a0-a2/a6
  1313.     rts
  1314.  
  1315. strlen    move.l    a0,d0
  1316. 1$    tst.b    (a0)+
  1317.     bne.b    1$
  1318.     exg    a0,d0
  1319.     sub.l    a0,d0
  1320.     subq.l    #1,d0
  1321.     rts
  1322.  
  1323. TextCoords    dw    75,16,72,15        ;ACIA 0,UNIT 1:BufSize Box
  1324.     dw    75,31,72,15        ;ACIA 0,UNIT 1:BaudRate Box
  1325.  
  1326.     dw    75,56,72,15        ;ACIA 0,UNIT 1:BufSize Box
  1327.     dw    75,71,72,15        ;ACIA 0,UNIT 1:BaudRate Box
  1328.  
  1329.     dw    75,96,72,15        ;ACIA 0,UNIT 1:BufSize Box
  1330.     dw    75,111,72,15        ;ACIA 0,UNIT 1:BaudRate Box
  1331.  
  1332.     dw    75,136,72,15        ;ACIA 0,UNIT 1:BufSize Box
  1333.     dw    75,151,72,15        ;ACIA 0,UNIT 1:BaudRate Box
  1334.  
  1335. Text.tbl    sett    82,12,BufSize.txt    ;All window text coords & ptrs
  1336.     sett    87,176,BaudRate.txt
  1337.     sett    188,12,WordLen.txt
  1338.     sett    293,12,StopBits.txt
  1339.     sett    405,12,Parity.txt
  1340.     sett    531,12,Handshak.txt
  1341.  
  1342.     sett    12,34,UNIT1.txt
  1343.     sett    12,74,UNIT2.txt
  1344.     sett    12,114,UNIT3.txt
  1345.     sett    12,154,UNIT4.txt
  1346.     dw    0
  1347.  
  1348. BufTxt.tbl    dl    Buf512.txt    ;Text ptrs for BufSize
  1349.     dl    Buf1024.txt
  1350.     dl    Buf2048.txt
  1351.     dl    Buf4096.txt
  1352.     dl    Buf8192.txt
  1353.     dl    Buf16384.txt
  1354.     dl    Buf32768.txt
  1355.     dl    Buf65536.txt
  1356.  
  1357. BaudTxt.tbl    dl    Baud50.txt    ;Text ptrs for BaudRate
  1358.     dl    Baud110.txt
  1359.     dl    Baud134.txt
  1360.     dl    Baud150.txt
  1361.     dl    Baud300.txt
  1362.     dl    Baud600.txt
  1363.     dl    Baud1200.txt
  1364.     dl    Baud1800.txt
  1365.     dl    Baud2400.txt
  1366.     dl    Baud3600.txt
  1367.     dl    Baud4800.txt
  1368.     dl    Baud7200.txt
  1369.     dl    Baud9600.txt
  1370.     dl    Baud19200.txt
  1371.     dl    Baud38400.txt
  1372.     dl    BaudMIDI.txt
  1373.  
  1374. UNIT1.txt    cstr    'UNIT 1'    ;All program text
  1375. UNIT2.txt    cstr    'UNIT 2'
  1376. UNIT3.txt    cstr    'UNIT 3'
  1377. UNIT4.txt    cstr    'UNIT 4'
  1378. BufSize.txt    cstr    'Buffer Size'
  1379. BaudRate.txt    cstr    'Baud Rate'
  1380. WordLen.txt    cstr    'Word Length'
  1381. StopBits.txt    cstr    'Stop Bits'
  1382. Parity.txt    cstr    'Parity'
  1383. Handshak.txt    cstr    'Handshaking'
  1384. Buf512.txt    cstr    '512'
  1385. Buf1024.txt    cstr    '1024'
  1386. Buf2048.txt    cstr    '2048'
  1387. Buf4096.txt    cstr    '4096'
  1388. Buf8192.txt    cstr    '8192'
  1389. Buf16384.txt    cstr    '16384'
  1390. Buf32768.txt    cstr    '32768'
  1391. Buf65536.txt    cstr    '65536'
  1392. Baud50.txt    cstr    '50'
  1393. Baud110.txt    cstr    '110'
  1394. Baud134.txt    cstr    '134'
  1395. Baud150.txt    cstr    '150'
  1396. Baud300.txt    cstr    '300'
  1397. Baud600.txt    cstr    '600'
  1398. Baud1200.txt    cstr    '1200'
  1399. Baud1800.txt    cstr    '1800'
  1400. Baud2400.txt    cstr    '2400'
  1401. Baud3600.txt    cstr    '3600'
  1402. Baud4800.txt    cstr    '4800'
  1403. Baud7200.txt    cstr    '7200'
  1404. Baud9600.txt    cstr    '9600'
  1405. Baud19200.txt    cstr    '19200'
  1406. Baud38400.txt    cstr    '38400'
  1407. BaudMIDI.txt    cstr    'MIDI'
  1408. Len5.txt    cstr    '5'
  1409. Len6.txt    cstr    '6'
  1410. Len7.txt    cstr    '7'
  1411. Len8.txt    cstr    '8'
  1412. Stop1.txt    cstr    '1'
  1413. Stop2.txt    cstr    '2'
  1414. ParEven.txt    cstr    'Even'
  1415. ParOdd.txt    cstr    'Odd'
  1416. ParMark.txt    cstr    'Mark'
  1417. ParSpace.txt    cstr    'Space'
  1418. ParNone.txt    cstr    'None'
  1419. RTS_CTS.txt    cstr    'RTS/CTS'
  1420. xON_xOFF.txt    cstr    'Xon/Xoff'
  1421. Save.txt        cstr    'Save'
  1422. Cancel.txt    cstr    'Cancel'
  1423. Use.txt        cstr    'Use'
  1424. LastSaved.txt    cstr    'Last Saved'
  1425.  
  1426. DosName    cstr    'dos.library'
  1427. IntName    cstr    'intuition.library'
  1428. GfxName    cstr    'graphics.library'
  1429. FontName    cstr    'topaz.font'
  1430. ScreenTtl    cstr    'SerialPrefs - ©1990,91 The Puzzle Factory'
  1431.  
  1432.     SECTION    sprite,DATA,CHIP
  1433.  
  1434. UpData    dw    %0000000000011100,%0000000000000000
  1435.     dw    %0000000001111111,%0000000000000000
  1436.     dw    %0000000111111111,%1100000000000000
  1437.     dw    %0000011111111111,%1111000000000000
  1438.     dw    %0001111111111111,%1111110000000000
  1439.     dw    %0000000000000000,%0000000000000000
  1440.  
  1441. DownData    dw    %0001111111111111,%1111110000000000
  1442.     dw    %0000011111111111,%1111000000000000
  1443.     dw    %0000000111111111,%1100000000000000
  1444.     dw    %0000000001111111,%0000000000000000
  1445.     dw    %0000000000011100,%0000000000000000
  1446.     dw    %0000000000000000,%0000000000000000
  1447.  
  1448. SpriteData    dw    0,0
  1449.     dw    %0000000000000000,%0000000000000000
  1450.     dw    %0000000000000000,%0000000000000000
  1451.     dw    %0000011100100000,%0000011100100000
  1452.     dw    %0000111111100000,%0000111111100000
  1453.     dw    %0011111111110000,%0011111111110000
  1454.     dw    %0111111111110000,%0110000111110000
  1455.     dw    %0111111111111000,%0111101111111000
  1456.     dw    %0111111111111100,%0111011111111100
  1457.     dw    %1111111111111100,%1110000111111100
  1458.     dw    %0011111111111110,%0011111111111110
  1459.     dw    %0111111111111111,%0111111100001111
  1460.     dw    %0011111111111110,%0011111111011110
  1461.     dw    %0111111111111110,%0111111110111110
  1462.     dw    %0011111111111100,%0011111100001100
  1463.     dw    %0001111111111000,%0001111111111000
  1464.     dw    %0000011111110000,%0000011111110000
  1465.     dw    %0000000111000000,%0000000111000000
  1466.     dw    %0000011100000000,%0000011100000000
  1467.     dw    %0000111111000000,%0000111111000000
  1468.     dw    %0000010110000000,%0000010110000000
  1469.     dw    %0000000000000000,%0000000000000000
  1470.     dw    %0000000011000000,%0000000011000000
  1471.     dw    %0000000011100000,%0000000011100000
  1472.     dw    %0000000001000000,%0000000001000000
  1473.     dw    0,0
  1474.  
  1475.     SECTION    vars,DATA
  1476.  
  1477. DT:
  1478.  
  1479. MyTextAttr:
  1480.     dl    FontName    ;Topaz 8 font
  1481.     dw    8
  1482.     db    FS_NORMAL
  1483.     db    FPF_ROMFONT
  1484.  
  1485. MyScreen:
  1486.     dw    0,0,640,200,2
  1487.     db    0,1
  1488.     dw    V_HIRES
  1489.     dw    CUSTOMSCREEN
  1490.     dl    MyTextAttr,ScreenTtl,0,0
  1491.  
  1492. MyWindow:
  1493.     dw    0,10,640,190
  1494.     db    0,1
  1495.     dl    GADGETDOWN!GADGETUP
  1496.     dl    SMART_REFRESH!NOCAREREFRESH!ACTIVATE
  1497.     dl    FirstGadget,0,0,0,0
  1498.     dw    0,0,0,0,CUSTOMSCREEN
  1499.  
  1500. FirstGadget:
  1501. BufUP01_gad    dl    BufDN01_gad
  1502.     dw    148,17,26,7
  1503.     dw    GADGIMAGE!GADGHCOMP
  1504.     dw    GADGIMMEDIATE!RELVERIFY
  1505.     dw    BOOLGADGET
  1506.     dl    MyUpImage,0,0,0,0
  1507.     dw    0
  1508.     dl    BufUP01    ;00=ACIA 0,UNIT 1:BufSize/UP
  1509.  
  1510. BufDN01_gad    dl    BuadUP01_gad
  1511.     dw    148,24,26,7
  1512.     dw    GADGIMAGE!GADGHCOMP
  1513.     dw    GADGIMMEDIATE!RELVERIFY
  1514.     dw    BOOLGADGET
  1515.     dl    MyDownImage,0,0,0,0
  1516.     dw    1
  1517.     dl    BufDN01    ;01=ACIA 0,UNIT 1:BufSize/DN
  1518.  
  1519. BuadUP01_gad    dl    BuadDN01_gad
  1520.     dw    148,32,26,7
  1521.     dw    GADGIMAGE!GADGHCOMP
  1522.     dw    GADGIMMEDIATE!RELVERIFY
  1523.     dw    BOOLGADGET
  1524.     dl    MyUpImage,0,0,0,0
  1525.     dw    2
  1526.     dl    BaudUP01    ;02=ACIA 0,UNIT 1:BaudRate/UP
  1527.  
  1528. BuadDN01_gad    dl    WordLen01.0_gad
  1529.     dw    148,39,26,7
  1530.     dw    GADGIMAGE!GADGHCOMP
  1531.     dw    GADGIMMEDIATE!RELVERIFY
  1532.     dw    BOOLGADGET
  1533.     dl    MyDownImage,0,0,0,0
  1534.     dw    3
  1535.     dl    BaudDN01    ;03=ACIA 0,UNIT 1:BaudRate/DN
  1536.  
  1537. WordLen01.0_gad    dl    WordLen01.1_gad
  1538.     dw    200,17,33,14
  1539.     dw    GADGHNONE
  1540.     dw    GADGIMMEDIATE
  1541.     dw    BOOLGADGET
  1542.     dl    0,0,Len5.ITxt,0,0
  1543.     dw    4
  1544.     dl    WordLen01    ;04=ACIA 0,UNIT 1:WordLen/5
  1545.  
  1546. WordLen01.1_gad    dl    WordLen01.2_gad
  1547.     dw    234,17,33,14
  1548.     dw    GADGHNONE
  1549.     dw    GADGIMMEDIATE
  1550.     dw    BOOLGADGET
  1551.     dl    0,0,Len6.ITxt,0,0
  1552.     dw    5
  1553.     dl    WordLen01    ;06=ACIA 0,UNIT 1:WordLen/6
  1554.  
  1555. WordLen01.2_gad    dl    WordLen01.3_gad
  1556.     dw    200,32,33,14
  1557.     dw    GADGHNONE
  1558.     dw    GADGIMMEDIATE
  1559.     dw    BOOLGADGET
  1560.     dl    0,0,Len7.ITxt,0,0
  1561.     dw    6
  1562.     dl    WordLen01    ;05=ACIA 0,UNIT 1:WordLen/7
  1563.  
  1564. WordLen01.3_gad    dl    StopBit01.0_gad
  1565.     dw    234,32,33,14
  1566.     dw    GADGHNONE
  1567.     dw    GADGIMMEDIATE
  1568.     dw    BOOLGADGET
  1569.     dl    0,0,Len8.ITxt,0,0
  1570.     dw    7
  1571.     dl    WordLen01    ;07=ACIA 0,UNIT 1:WordLen/8
  1572.  
  1573. StopBit01.0_gad    dl    StopBit01.1_gad
  1574.     dw    291,17,33,14
  1575.     dw    GADGHNONE
  1576.     dw    GADGIMMEDIATE
  1577.     dw    BOOLGADGET
  1578.     dl    0,0,Stop1.ITxt,0,0
  1579.     dw    8
  1580.     dl    StopBit01    ;08=ACIA 0,UNIT 1:StopBit/1
  1581.  
  1582. StopBit01.1_gad    dl    Parity01.0_gad
  1583.     dw    291,32,33,14
  1584.     dw    GADGHNONE
  1585.     dw    GADGIMMEDIATE
  1586.     dw    BOOLGADGET
  1587.     dl    0,0,Stop2.ITxt,0,0
  1588.     dw    9
  1589.     dl    StopBit01    ;09=ACIA 0,UNIT 1:StopBit/2
  1590.  
  1591. Parity01.0_gad    dl    Parity01.1_gad
  1592.     dw    457,17,53,14
  1593.     dw    GADGHNONE
  1594.     dw    GADGIMMEDIATE
  1595.     dw    BOOLGADGET
  1596.     dl    0,0,ParEven.ITxt,0,0
  1597.     dw    10
  1598.     dl    Parity01    ;13=ACIA 0,UNIT 1:Parity/O
  1599.  
  1600. Parity01.1_gad    dl    Parity01.2_gad
  1601.     dw    349,17,53,14
  1602.     dw    GADGHNONE
  1603.     dw    GADGIMMEDIATE
  1604.     dw    BOOLGADGET
  1605.     dl    0,0,ParOdd.ITxt,0,0
  1606.     dw    11
  1607.     dl    Parity01    ;10=ACIA 0,UNIT 1:Parity/E
  1608.  
  1609. Parity01.2_gad    dl    Parity01.3_gad
  1610.     dw    349,32,53,14
  1611.     dw    GADGHNONE
  1612.     dw    GADGIMMEDIATE
  1613.     dw    BOOLGADGET
  1614.     dl    0,0,ParMark.ITxt,0,0
  1615.     dw    12
  1616.     dl    Parity01    ;11=ACIA 0,UNIT 1:Parity/M
  1617.  
  1618. Parity01.3_gad    dl    Parity01.4_gad
  1619.     dw    457,32,53,14
  1620.     dw    GADGHNONE
  1621.     dw    GADGIMMEDIATE
  1622.     dw    BOOLGADGET
  1623.     dl    0,0,ParSpace.ITxt,0,0
  1624.     dw    13
  1625.     dl    Parity01    ;14=ACIA 0,UNIT 1:Parity/S
  1626.  
  1627. Parity01.4_gad    dl    Shake01.0_gad
  1628.     dw    403,17,53,29
  1629.     dw    GADGHNONE
  1630.     dw    GADGIMMEDIATE
  1631.     dw    BOOLGADGET
  1632.     dl    0,0,ParNone.ITxt,0,0
  1633.     dw    14
  1634.     dl    Parity01    ;12=ACIA 0,UNIT 1:Parity/N
  1635.  
  1636. Shake01.0_gad    dl    Shake01.1_gad
  1637.     dw    536,17,78,9
  1638.     dw    GADGHNONE
  1639.     dw    GADGIMMEDIATE
  1640.     dw    BOOLGADGET
  1641.     dl    0,0,RTS_CTS.ITxt,0,0
  1642.     dw    15
  1643.     dl    Shake01    ;15=ACIA 0,UNIT 1:RTS/CTS
  1644.  
  1645. Shake01.1_gad    dl    Shake01.2_gad
  1646.     dw    536,27,78,9
  1647.     dw    GADGHNONE
  1648.     dw    GADGIMMEDIATE
  1649.     dw    BOOLGADGET
  1650.     dl    0,0,xON_xOFF.ITxt,0,0
  1651.     dw    16
  1652.     dl    Shake01    ;16=ACIA 0,UNIT 1:xON/xOFF
  1653.  
  1654. Shake01.2_gad    dl    BufUP02_gad
  1655.     dw    536,37,78,9
  1656.     dw    GADGHNONE
  1657.     dw    GADGIMMEDIATE
  1658.     dw    BOOLGADGET
  1659.     dl    0,0,NoShake.ITxt,0,0
  1660.     dw    17
  1661.     dl    Shake01    ;16=ACIA 0,UNIT 1:None
  1662.  
  1663. BufUP02_gad    dl    BufDN02_gad
  1664.     dw    148,57,26,7
  1665.     dw    GADGIMAGE!GADGHCOMP
  1666.     dw    GADGIMMEDIATE!RELVERIFY
  1667.     dw    BOOLGADGET
  1668.     dl    MyUpImage,0,0,0,0
  1669.     dw    20
  1670.     dl    BufUP02    ;17=ACIA 0,UNIT 2:BufSize/UP
  1671.  
  1672. BufDN02_gad    dl    BuadUP02_gad
  1673.     dw    148,64,26,7
  1674.     dw    GADGIMAGE!GADGHCOMP
  1675.     dw    GADGIMMEDIATE!RELVERIFY
  1676.     dw    BOOLGADGET
  1677.     dl    MyDownImage,0,0,0,0
  1678.     dw    21
  1679.     dl    BufDN02    ;18=ACIA 0,UNIT 2:BufSize/DN
  1680.  
  1681. BuadUP02_gad    dl    BuadDN02_gad
  1682.     dw    148,72,26,7
  1683.     dw    GADGIMAGE!GADGHCOMP
  1684.     dw    GADGIMMEDIATE!RELVERIFY
  1685.     dw    BOOLGADGET
  1686.     dl    MyUpImage,0,0,0,0
  1687.     dw    22
  1688.     dl    BaudUP02    ;19=ACIA 0,UNIT 2:BaudRate/UP
  1689.  
  1690. BuadDN02_gad    dl    WordLen02.0_gad
  1691.     dw    148,79,26,7
  1692.     dw    GADGIMAGE!GADGHCOMP
  1693.     dw    GADGIMMEDIATE!RELVERIFY
  1694.     dw    BOOLGADGET
  1695.     dl    MyDownImage,0,0,0,0
  1696.     dw    23
  1697.     dl    BaudDN02    ;20=ACIA 0,UNIT 2:BaudRate/DN
  1698.  
  1699. WordLen02.0_gad    dl    WordLen02.1_gad
  1700.     dw    200,57,33,14
  1701.     dw    GADGHNONE
  1702.     dw    GADGIMMEDIATE
  1703.     dw    BOOLGADGET
  1704.     dl    0,0,Len5.ITxt,0,0
  1705.     dw    24
  1706.     dl    WordLen02    ;21=ACIA 0,UNIT 2:WordLen/5
  1707.  
  1708. WordLen02.1_gad    dl    WordLen02.2_gad
  1709.     dw    234,57,33,14
  1710.     dw    GADGHNONE
  1711.     dw    GADGIMMEDIATE
  1712.     dw    BOOLGADGET
  1713.     dl    0,0,Len6.ITxt,0,0
  1714.     dw    25
  1715.     dl    WordLen02    ;23=ACIA 0,UNIT 2:WordLen/6
  1716.  
  1717. WordLen02.2_gad    dl    WordLen02.3_gad
  1718.     dw    200,72,33,14
  1719.     dw    GADGHNONE
  1720.     dw    GADGIMMEDIATE
  1721.     dw    BOOLGADGET
  1722.     dl    0,0,Len7.ITxt,0,0
  1723.     dw    26
  1724.     dl    WordLen02    ;22=ACIA 0,UNIT 2:WordLen/7
  1725.  
  1726. WordLen02.3_gad    dl    StopBit02.0_gad
  1727.     dw    234,72,33,14
  1728.     dw    GADGHNONE
  1729.     dw    GADGIMMEDIATE
  1730.     dw    BOOLGADGET
  1731.     dl    0,0,Len8.ITxt,0,0
  1732.     dw    27
  1733.     dl    WordLen02    ;24=ACIA 0,UNIT 2:WordLen/8
  1734.  
  1735. StopBit02.0_gad    dl    StopBit02.1_gad
  1736.     dw    291,57,33,14
  1737.     dw    GADGHNONE
  1738.     dw    GADGIMMEDIATE
  1739.     dw    BOOLGADGET
  1740.     dl    0,0,Stop1.ITxt,0,0
  1741.     dw    28
  1742.     dl    StopBit02    ;25=ACIA 0,UNIT 2:StopBit/1
  1743.  
  1744. StopBit02.1_gad    dl    Parity02.0_gad
  1745.     dw    291,72,33,14
  1746.     dw    GADGHNONE
  1747.     dw    GADGIMMEDIATE
  1748.     dw    BOOLGADGET
  1749.     dl    0,0,Stop2.ITxt,0,0
  1750.     dw    29
  1751.     dl    StopBit02    ;26=ACIA 0,UNIT 2:StopBit/2
  1752.  
  1753. Parity02.0_gad    dl    Parity02.1_gad
  1754.     dw    457,57,53,14
  1755.     dw    GADGHNONE
  1756.     dw    GADGIMMEDIATE
  1757.     dw    BOOLGADGET
  1758.     dl    0,0,ParEven.ITxt,0,0
  1759.     dw    30
  1760.     dl    Parity02    ;30=ACIA 0,UNIT 2:Parity/O
  1761.  
  1762. Parity02.1_gad    dl    Parity02.2_gad
  1763.     dw    349,57,53,14
  1764.     dw    GADGHNONE
  1765.     dw    GADGIMMEDIATE
  1766.     dw    BOOLGADGET
  1767.     dl    0,0,ParOdd.ITxt,0,0
  1768.     dw    31
  1769.     dl    Parity02    ;27=ACIA 0,UNIT 2:Parity/E
  1770.  
  1771. Parity02.2_gad    dl    Parity02.3_gad
  1772.     dw    349,72,53,14
  1773.     dw    GADGHNONE
  1774.     dw    GADGIMMEDIATE
  1775.     dw    BOOLGADGET
  1776.     dl    0,0,ParMark.ITxt,0,0
  1777.     dw    32
  1778.     dl    Parity02    ;28=ACIA 0,UNIT 2:Parity/M
  1779.  
  1780. Parity02.3_gad    dl    Parity02.4_gad
  1781.     dw    457,72,53,14
  1782.     dw    GADGHNONE
  1783.     dw    GADGIMMEDIATE
  1784.     dw    BOOLGADGET
  1785.     dl    0,0,ParSpace.ITxt,0,0
  1786.     dw    33
  1787.     dl    Parity02    ;31=ACIA 0,UNIT 2:Parity/S
  1788.  
  1789. Parity02.4_gad    dl    Shake02.0_gad
  1790.     dw    403,57,53,29
  1791.     dw    GADGHNONE
  1792.     dw    GADGIMMEDIATE
  1793.     dw    BOOLGADGET
  1794.     dl    0,0,ParNone.ITxt,0,0
  1795.     dw    34
  1796.     dl    Parity02    ;29=ACIA 0,UNIT 2:Parity/N
  1797.  
  1798. Shake02.0_gad    dl    Shake02.1_gad
  1799.     dw    536,57,78,9
  1800.     dw    GADGHNONE
  1801.     dw    GADGIMMEDIATE
  1802.     dw    BOOLGADGET
  1803.     dl    0,0,RTS_CTS.ITxt,0,0
  1804.     dw    35
  1805.     dl    Shake02    ;32=ACIA 0,UNIT 2:RTS/CTS
  1806.  
  1807. Shake02.1_gad    dl    Shake02.2_gad
  1808.     dw    536,67,78,9
  1809.     dw    GADGHNONE
  1810.     dw    GADGIMMEDIATE
  1811.     dw    BOOLGADGET
  1812.     dl    0,0,xON_xOFF.ITxt,0,0
  1813.     dw    36
  1814.     dl    Shake02    ;33=ACIA 0,UNIT 2:xON/xOFF
  1815.  
  1816. Shake02.2_gad    dl    BufUP11_gad
  1817.     dw    536,77,78,9
  1818.     dw    GADGHNONE
  1819.     dw    GADGIMMEDIATE
  1820.     dw    BOOLGADGET
  1821.     dl    0,0,NoShake.ITxt,0,0
  1822.     dw    37
  1823.     dl    Shake02    ;16=ACIA 0,UNIT 2:None
  1824.  
  1825. BufUP11_gad    dl    BufDN11_gad
  1826.     dw    148,97,26,7
  1827.     dw    GADGIMAGE!GADGHCOMP
  1828.     dw    GADGIMMEDIATE!RELVERIFY
  1829.     dw    BOOLGADGET
  1830.     dl    MyUpImage,0,0,0,0
  1831.     dw    40
  1832.     dl    BufUP11    ;34=ACIA 1,UNIT 1:BufSize/UP
  1833.  
  1834. BufDN11_gad    dl    BuadUP11_gad
  1835.     dw    148,104,26,7
  1836.     dw    GADGIMAGE!GADGHCOMP
  1837.     dw    GADGIMMEDIATE!RELVERIFY
  1838.     dw    BOOLGADGET
  1839.     dl    MyDownImage,0,0,0,0
  1840.     dw    41
  1841.     dl    BufDN11    ;35=ACIA 1,UNIT 1:BufSize/DN
  1842.  
  1843. BuadUP11_gad    dl    BuadDN11_gad
  1844.     dw    148,112,26,7
  1845.     dw    GADGIMAGE!GADGHCOMP
  1846.     dw    GADGIMMEDIATE!RELVERIFY
  1847.     dw    BOOLGADGET
  1848.     dl    MyUpImage,0,0,0,0
  1849.     dw    42
  1850.     dl    BaudUP11    ;36=ACIA 1,UNIT 1:BaudRate/UP
  1851.  
  1852. BuadDN11_gad    dl    WordLen11.0_gad
  1853.     dw    148,119,26,7
  1854.     dw    GADGIMAGE!GADGHCOMP
  1855.     dw    GADGIMMEDIATE!RELVERIFY
  1856.     dw    BOOLGADGET
  1857.     dl    MyDownImage,0,0,0,0
  1858.     dw    43
  1859.     dl    BaudDN11    ;37=ACIA 1,UNIT 1:BaudRate/DN
  1860.  
  1861. WordLen11.0_gad    dl    WordLen11.1_gad
  1862.     dw    200,97,33,14
  1863.     dw    GADGHNONE
  1864.     dw    GADGIMMEDIATE
  1865.     dw    BOOLGADGET
  1866.     dl    0,0,Len5.ITxt,0,0
  1867.     dw    44
  1868.     dl    WordLen11    ;38=ACIA 1,UNIT 1:WordLen/5
  1869.  
  1870. WordLen11.1_gad    dl    WordLen11.2_gad
  1871.     dw    234,97,33,14
  1872.     dw    GADGHNONE
  1873.     dw    GADGIMMEDIATE
  1874.     dw    BOOLGADGET
  1875.     dl    0,0,Len6.ITxt,0,0
  1876.     dw    45
  1877.     dl    WordLen11    ;40=ACIA 1,UNIT 1:WordLen/6
  1878.  
  1879. WordLen11.2_gad    dl    WordLen11.3_gad
  1880.     dw    200,112,33,14
  1881.     dw    GADGHNONE
  1882.     dw    GADGIMMEDIATE
  1883.     dw    BOOLGADGET
  1884.     dl    0,0,Len7.ITxt,0,0
  1885.     dw    46
  1886.     dl    WordLen11    ;39=ACIA 1,UNIT 1:WordLen/7
  1887.  
  1888. WordLen11.3_gad    dl    StopBit11.0_gad
  1889.     dw    234,112,33,14
  1890.     dw    GADGHNONE
  1891.     dw    GADGIMMEDIATE
  1892.     dw    BOOLGADGET
  1893.     dl    0,0,Len8.ITxt,0,0
  1894.     dw    47
  1895.     dl    WordLen11    ;41=ACIA 1,UNIT 1:WordLen/8
  1896.  
  1897. StopBit11.0_gad    dl    StopBit11.1_gad
  1898.     dw    291,97,33,14
  1899.     dw    GADGHNONE
  1900.     dw    GADGIMMEDIATE
  1901.     dw    BOOLGADGET
  1902.     dl    0,0,Stop1.ITxt,0,0
  1903.     dw    48
  1904.     dl    StopBit11    ;42=ACIA 1,UNIT 1:StopBit/1
  1905.  
  1906. StopBit11.1_gad    dl    Parity11.0_gad
  1907.     dw    291,112,33,14
  1908.     dw    GADGHNONE
  1909.     dw    GADGIMMEDIATE
  1910.     dw    BOOLGADGET
  1911.     dl    0,0,Stop2.ITxt,0,0
  1912.     dw    49
  1913.     dl    StopBit11    ;43=ACIA 1,UNIT 1:StopBit/2
  1914.  
  1915. Parity11.0_gad    dl    Parity11.1_gad
  1916.     dw    457,97,53,14
  1917.     dw    GADGHNONE
  1918.     dw    GADGIMMEDIATE
  1919.     dw    BOOLGADGET
  1920.     dl    0,0,ParEven.ITxt,0,0
  1921.     dw    50
  1922.     dl    Parity11    ;47=ACIA 1,UNIT 1:Parity/O
  1923.  
  1924. Parity11.1_gad    dl    Parity11.2_gad
  1925.     dw    349,97,53,14
  1926.     dw    GADGHNONE
  1927.     dw    GADGIMMEDIATE
  1928.     dw    BOOLGADGET
  1929.     dl    0,0,ParOdd.ITxt,0,0
  1930.     dw    51
  1931.     dl    Parity11    ;44=ACIA 1,UNIT 1:Parity/E
  1932.  
  1933. Parity11.2_gad    dl    Parity11.3_gad
  1934.     dw    349,112,53,14
  1935.     dw    GADGHNONE
  1936.     dw    GADGIMMEDIATE
  1937.     dw    BOOLGADGET
  1938.     dl    0,0,ParMark.ITxt,0,0
  1939.     dw    52
  1940.     dl    Parity11    ;45=ACIA 1,UNIT 1:Parity/M
  1941.  
  1942. Parity11.3_gad    dl    Parity11.4_gad
  1943.     dw    457,112,53,14
  1944.     dw    GADGHNONE
  1945.     dw    GADGIMMEDIATE
  1946.     dw    BOOLGADGET
  1947.     dl    0,0,ParSpace.ITxt,0,0
  1948.     dw    53
  1949.     dl    Parity11    ;48=ACIA 1,UNIT 1:Parity/S
  1950.  
  1951. Parity11.4_gad    dl    Shake11.0_gad
  1952.     dw    403,97,53,29
  1953.     dw    GADGHNONE
  1954.     dw    GADGIMMEDIATE
  1955.     dw    BOOLGADGET
  1956.     dl    0,0,ParNone.ITxt,0,0
  1957.     dw    54
  1958.     dl    Parity11    ;46=ACIA 1,UNIT 1:Parity/N
  1959.  
  1960. Shake11.0_gad    dl    Shake11.1_gad
  1961.     dw    536,97,78,9
  1962.     dw    GADGHNONE
  1963.     dw    GADGIMMEDIATE
  1964.     dw    BOOLGADGET
  1965.     dl    0,0,RTS_CTS.ITxt,0,0
  1966.     dw    55
  1967.     dl    Shake11    ;49=ACIA 1,UNIT 1:RTS/CTS
  1968.  
  1969. Shake11.1_gad    dl    Shake11.2_gad
  1970.     dw    536,107,78,9
  1971.     dw    GADGHNONE
  1972.     dw    GADGIMMEDIATE
  1973.     dw    BOOLGADGET
  1974.     dl    0,0,xON_xOFF.ITxt,0,0
  1975.     dw    56
  1976.     dl    Shake11    ;50=ACIA 1,UNIT 1:xON/xOFF
  1977.  
  1978. Shake11.2_gad    dl    BufUP12_gad
  1979.     dw    536,117,78,9
  1980.     dw    GADGHNONE
  1981.     dw    GADGIMMEDIATE
  1982.     dw    BOOLGADGET
  1983.     dl    0,0,NoShake.ITxt,0,0
  1984.     dw    57
  1985.     dl    Shake11    ;16=ACIA 1,UNIT 1:None
  1986.  
  1987. BufUP12_gad    dl    BufDN12_gad
  1988.     dw    148,137,26,7
  1989.     dw    GADGIMAGE!GADGHCOMP
  1990.     dw    GADGIMMEDIATE!RELVERIFY
  1991.     dw    BOOLGADGET
  1992.     dl    MyUpImage,0,0,0,0
  1993.     dw    60
  1994.     dl    BufUP12    ;51=ACIA 1,UNIT 2:BufSize/UP
  1995.  
  1996. BufDN12_gad    dl    BuadUP12_gad
  1997.     dw    148,144,26,7
  1998.     dw    GADGIMAGE!GADGHCOMP
  1999.     dw    GADGIMMEDIATE!RELVERIFY
  2000.     dw    BOOLGADGET
  2001.     dl    MyDownImage,0,0,0,0
  2002.     dw    61
  2003.     dl    BufDN12    ;52=ACIA 1,UNIT 2:BufSize/DN
  2004.  
  2005. BuadUP12_gad    dl    BuadDN12_gad
  2006.     dw    148,152,26,7
  2007.     dw    GADGIMAGE!GADGHCOMP
  2008.     dw    GADGIMMEDIATE!RELVERIFY
  2009.     dw    BOOLGADGET
  2010.     dl    MyUpImage,0,0,0,0
  2011.     dw    62
  2012.     dl    BaudUP12    ;53=ACIA 1,UNIT 2:BaudRate/UP
  2013.  
  2014. BuadDN12_gad    dl    WordLen12.0_gad
  2015.     dw    148,159,26,7
  2016.     dw    GADGIMAGE!GADGHCOMP
  2017.     dw    GADGIMMEDIATE!RELVERIFY
  2018.     dw    BOOLGADGET
  2019.     dl    MyDownImage,0,0,0,0
  2020.     dw    63
  2021.     dl    BaudDN12    ;54=ACIA 1,UNIT 2:BaudRate/DN
  2022.  
  2023. WordLen12.0_gad    dl    WordLen12.1_gad
  2024.     dw    200,137,33,14
  2025.     dw    GADGHNONE
  2026.     dw    GADGIMMEDIATE
  2027.     dw    BOOLGADGET
  2028.     dl    0,0,Len5.ITxt,0,0
  2029.     dw    64
  2030.     dl    WordLen12    ;55=ACIA 1,UNIT 2:WordLen/5
  2031.  
  2032. WordLen12.1_gad    dl    WordLen12.2_gad
  2033.     dw    234,137,33,14
  2034.     dw    GADGHNONE
  2035.     dw    GADGIMMEDIATE
  2036.     dw    BOOLGADGET
  2037.     dl    0,0,Len6.ITxt,0,0
  2038.     dw    65
  2039.     dl    WordLen12    ;57=ACIA 1,UNIT 2:WordLen/6
  2040.  
  2041. WordLen12.2_gad    dl    WordLen12.3_gad
  2042.     dw    200,152,33,14
  2043.     dw    GADGHNONE
  2044.     dw    GADGIMMEDIATE
  2045.     dw    BOOLGADGET
  2046.     dl    0,0,Len7.ITxt,0,0
  2047.     dw    66
  2048.     dl    WordLen12    ;56=ACIA 1,UNIT 2:WordLen/7
  2049.  
  2050. WordLen12.3_gad    dl    StopBit12.0_gad
  2051.     dw    234,152,33,14
  2052.     dw    GADGHNONE
  2053.     dw    GADGIMMEDIATE
  2054.     dw    BOOLGADGET
  2055.     dl    0,0,Len8.ITxt,0,0
  2056.     dw    67
  2057.     dl    WordLen12    ;58=ACIA 1,UNIT 2:WordLen/8
  2058.  
  2059. StopBit12.0_gad    dl    StopBit12.1_gad
  2060.     dw    291,137,33,14
  2061.     dw    GADGHNONE
  2062.     dw    GADGIMMEDIATE
  2063.     dw    BOOLGADGET
  2064.     dl    0,0,Stop1.ITxt,0,0
  2065.     dw    68
  2066.     dl    StopBit12    ;59=ACIA 1,UNIT 2:StopBit/1
  2067.  
  2068. StopBit12.1_gad    dl    Parity12.0_gad
  2069.     dw    291,152,33,14
  2070.     dw    GADGHNONE
  2071.     dw    GADGIMMEDIATE
  2072.     dw    BOOLGADGET
  2073.     dl    0,0,Stop2.ITxt,0,0
  2074.     dw    69
  2075.     dl    StopBit12    ;60=ACIA 1,UNIT 2:StopBit/2
  2076.  
  2077. Parity12.0_gad    dl    Parity12.1_gad
  2078.     dw    457,137,53,14
  2079.     dw    GADGHNONE
  2080.     dw    GADGIMMEDIATE
  2081.     dw    BOOLGADGET
  2082.     dl    0,0,ParEven.ITxt,0,0
  2083.     dw    70
  2084.     dl    Parity12    ;64=ACIA 1,UNIT 2:Parity/O
  2085.  
  2086. Parity12.1_gad    dl    Parity12.2_gad
  2087.     dw    349,137,53,14
  2088.     dw    GADGHNONE
  2089.     dw    GADGIMMEDIATE
  2090.     dw    BOOLGADGET
  2091.     dl    0,0,ParOdd.ITxt,0,0
  2092.     dw    71
  2093.     dl    Parity12    ;61=ACIA 1,UNIT 2:Parity/E
  2094.  
  2095. Parity12.2_gad    dl    Parity12.3_gad
  2096.     dw    349,152,53,14
  2097.     dw    GADGHNONE
  2098.     dw    GADGIMMEDIATE
  2099.     dw    BOOLGADGET
  2100.     dl    0,0,ParMark.ITxt,0,0
  2101.     dw    72
  2102.     dl    Parity12    ;62=ACIA 1,UNIT 2:Parity/M
  2103.  
  2104. Parity12.3_gad    dl    Parity12.4_gad
  2105.     dw    457,152,53,14
  2106.     dw    GADGHNONE
  2107.     dw    GADGIMMEDIATE
  2108.     dw    BOOLGADGET
  2109.     dl    0,0,ParSpace.ITxt,0,0
  2110.     dw    73
  2111.     dl    Parity12    ;65=ACIA 1,UNIT 2:Parity/S
  2112.  
  2113. Parity12.4_gad    dl    Shake12.0_gad
  2114.     dw    403,137,53,29
  2115.     dw    GADGHNONE
  2116.     dw    GADGIMMEDIATE
  2117.     dw    BOOLGADGET
  2118.     dl    0,0,ParNone.ITxt,0,0
  2119.     dw    74
  2120.     dl    Parity12    ;63=ACIA 1,UNIT 2:Parity/N
  2121.  
  2122. Shake12.0_gad    dl    Shake12.1_gad
  2123.     dw    536,137,78,9
  2124.     dw    GADGHNONE
  2125.     dw    GADGIMMEDIATE
  2126.     dw    BOOLGADGET
  2127.     dl    0,0,RTS_CTS.ITxt,0,0
  2128.     dw    75
  2129.     dl    Shake12    ;66=ACIA 1,UNIT 2:RTS/CTS
  2130.  
  2131. Shake12.1_gad    dl    Shake12.2_gad
  2132.     dw    536,147,78,9
  2133.     dw    GADGHNONE
  2134.     dw    GADGIMMEDIATE
  2135.     dw    BOOLGADGET
  2136.     dl    0,0,xON_xOFF.ITxt,0,0
  2137.     dw    76
  2138.     dl    Shake12    ;67=ACIA 1,UNIT 2:xON/xOFF
  2139.  
  2140. Shake12.2_gad    dl    Save_gad
  2141.     dw    536,157,78,9
  2142.     dw    GADGHNONE
  2143.     dw    GADGIMMEDIATE
  2144.     dw    BOOLGADGET
  2145.     dl    0,0,NoShake.ITxt,0,0
  2146.     dw    77
  2147.     dl    Shake12    ;16=ACIA 1,UNIT 2:None
  2148.  
  2149. Save_gad    dl    Cancel_gad
  2150.     dw    200,173,40,12
  2151.     dw    GADGHCOMP
  2152.     dw    RELVERIFY
  2153.     dw    BOOLGADGET
  2154.     dl    0,0,Save.ITxt,0,0
  2155.     dw    80
  2156.     dl    SaveGad    ;68=Save
  2157.  
  2158. Cancel_gad:
  2159.     dl    Use_gad
  2160.     dw    255,173,56,12
  2161.     dw    GADGHCOMP
  2162.     dw    RELVERIFY
  2163.     dw    BOOLGADGET
  2164.     dl    0,0,Cancel.ITxt,0,0
  2165.     dw    81
  2166.     dl    CancelGad    ;69=Cancel
  2167.  
  2168. Use_gad    dl    LastSaved_gad
  2169.     dw    326,173,32,12
  2170.     dw    GADGHCOMP
  2171.     dw    RELVERIFY
  2172.     dw    BOOLGADGET
  2173.     dl    0,0,Use.ITxt,0,0
  2174.     dw    81
  2175.     dl    UseGad    ;70=Cancel
  2176.  
  2177. LastSaved_gad:
  2178.     dl    0
  2179.     dw    373,173,88,12
  2180.     dw    GADGHCOMP
  2181.     dw    RELVERIFY
  2182.     dw    BOOLGADGET
  2183.     dl    0,0,LastSaved.ITxt,0,0
  2184.     dw    81
  2185.     dl    LastSavedGad    ;70=Cancel
  2186.  
  2187. Len5.ITxt    db    1,0,RP_JAM1,0
  2188.     dw    12,4
  2189.     dl    MyTextAttr,Len5.txt,0
  2190.  
  2191. Len6.ITxt    db    1,0,RP_JAM1,0
  2192.     dw    12,4
  2193.     dl    MyTextAttr,Len6.txt,0
  2194.  
  2195. Len7.ITxt    db    1,0,RP_JAM1,0
  2196.     dw    12,4
  2197.     dl    MyTextAttr,Len7.txt,0
  2198.  
  2199. Len8.ITxt    db    1,0,RP_JAM1,0
  2200.     dw    12,4
  2201.     dl    MyTextAttr,Len8.txt,0
  2202.  
  2203. Stop1.ITxt    db    1,0,RP_JAM1,0
  2204.     dw    12,4
  2205.     dl    MyTextAttr,Stop1.txt,0
  2206.  
  2207. Stop2.ITxt    db    1,0,RP_JAM1,0
  2208.     dw    12,4
  2209.     dl    MyTextAttr,Stop2.txt,0
  2210.  
  2211. ParEven.ITxt    db    1,0,RP_JAM1,0
  2212.     dw    10,4
  2213.     dl    MyTextAttr,ParEven.txt,0
  2214.  
  2215. ParOdd.ITxt    db    1,0,RP_JAM1,0
  2216.     dw    12,4
  2217.     dl    MyTextAttr,ParOdd.txt,0
  2218.  
  2219. ParMark.ITxt    db    1,0,RP_JAM1,0
  2220.     dw    10,4
  2221.     dl    MyTextAttr,ParMark.txt,0
  2222.  
  2223. ParSpace.ITxt    db    1,0,RP_JAM1,0
  2224.     dw    6,4
  2225.     dl    MyTextAttr,ParSpace.txt,0
  2226.  
  2227. ParNone.ITxt    db    1,0,RP_JAM1,0
  2228.     dw    8,11
  2229.     dl    MyTextAttr,ParNone.txt,0
  2230.  
  2231. RTS_CTS.ITxt    db    1,0,RP_JAM1,0
  2232.     dw    8,1
  2233.     dl    MyTextAttr,RTS_CTS.txt,0
  2234.  
  2235. xON_xOFF.ITxt    db    1,0,RP_JAM1,0
  2236.     dw    6,1
  2237.     dl    MyTextAttr,xON_xOFF.txt,0
  2238.  
  2239. NoShake.ITxt    db    1,0,RP_JAM1,0
  2240.     dw    22,1
  2241.     dl    MyTextAttr,ParNone.txt,0
  2242.  
  2243. Save.ITxt    db    1,0,RP_JAM1,0
  2244.     dw    4,2
  2245.     dl    MyTextAttr,Save.txt,0
  2246.  
  2247. Cancel.ITxt:
  2248.     db    1,0,RP_JAM1,0
  2249.     dw    4,2
  2250.     dl    MyTextAttr,Cancel.txt,0
  2251.  
  2252. Use.ITxt:
  2253.     db    1,0,RP_JAM1,0
  2254.     dw    4,2
  2255.     dl    MyTextAttr,Use.txt,0
  2256.  
  2257. LastSaved.ITxt:
  2258.     db    1,0,RP_JAM1,0
  2259.     dw    4,2
  2260.     dl    MyTextAttr,LastSaved.txt,0
  2261.  
  2262. MyUpImage    dw    0,1,25,6,1    ;Left,Top,Width,Height,Depth
  2263.     dl    UpData    ;*ImageData
  2264.     db    %0001,%0000    ;PlanePick,PlaneOnOff
  2265.     dl    0    ;*NextImage
  2266.  
  2267. MyDownImage    dw    0,1,25,6,1
  2268.     dl    DownData
  2269.     db    %0001,%0000
  2270.     dl    0
  2271.  
  2272. BSS_Start:
  2273. Dos_Base    dx.l    1    ;Ptr to dos.library
  2274. stdout    dx.l    1    ;FileHandle
  2275. Int_Base    dx.l    1    ;Ptr to intuition.library
  2276. Gfx_Base    dx.l    1    ;Ptr to graphics.library
  2277. WBenchMsg    dx.l    1    ;Initial WBench msg
  2278. ScreenPtr    dx.l    1    ;Ptr to Screen structure
  2279. WindowPtr    dx.l    1    ;Ptr to Window structure
  2280. RastPtr    dx.l    1    ;Ptr to Window's RastPort
  2281. PortPtr    dx.l    1    ;Ptr to Window's UserPort
  2282.  
  2283. *** New SerialPrefs Structure ***
  2284.  
  2285. MySerPrefs:            ;For ACIA 0, Unit 1
  2286. _BufSize01    dx.w    1    ;0-7
  2287. _BaudRate01    dx.w    1    ;0-15
  2288. _WordLen01    dx.b    1    ;0=5, 1=6, 2=7, 3=8
  2289. _StopBits01    dx.b    1    ;0=1, 1=2
  2290. _Parity01    dx.b    1    ;0=Odd, 1=Even, 2=Mark, 3=Space, 4=None
  2291. _Shake01    dx.b    1    ;0=RTS/CTS, 1=xON/xOFF, 2=None
  2292.  
  2293. _BufSize02    dx.w    1    ;Same for ACIA 0, Unit 2
  2294. _BaudRate02    dx.w    1
  2295. _WordLen02    dx.b    1
  2296. _StopBits02    dx.b    1
  2297. _Parity02    dx.b    1
  2298. _Shake02    dx.b    1
  2299.  
  2300. _BufSize11    dx.w    1    ;Same for ACIA 1, Unit 1
  2301. _BaudRate11    dx.w    1
  2302. _WordLen11    dx.b    1
  2303. _StopBits11    dx.b    1
  2304. _Parity11    dx.b    1
  2305. _Shake11    dx.b    1
  2306.  
  2307. _BufSize12    dx.w    1    ;Same for ACIA 1, Unit 2
  2308. _BaudRate12    dx.w    1
  2309. _WordLen12    dx.b    1
  2310. _StopBits12    dx.b    1
  2311. _Parity12    dx.b    1
  2312. _Shake12    dx.b    1
  2313.  
  2314. CloseFlag    dx.b    1    ;0=OK, 1=Close program
  2315. ZZZFlag    dx.b    1    ;1=Mouse ptr is currently a ZZZ cloud
  2316. BSS_Len    equ    *-BSS_Start
  2317.  
  2318.     end
  2319.