home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / a68kex_431.lzh / A68Kex / Cell-Auto.asm < prev    next >
Assembly Source File  |  1991-01-17  |  19KB  |  712 lines

  1. ************************************************************************
  2. * This is an implementation of a cellular automaton of the form:       *
  3. *                                                                      *
  4. *  (t+1)       (t)        (t)        (t)       (t)        (t)          *
  5. * a     = A * a    + B * a    + C * a   + D * a    + E * a             *
  6. *  i           i-2        i-1        i         i+1        i+2          *
  7. *                                                                      *
  8. * See e.g. Stephan Wolfram, Cellular automata as models of complexity, *
  9. * Nature, Vol 311, 4 October 1984.                                     *
  10. *                                                                      *
  11. * This implementation was written by:                                  *
  12. * E. Lenz                                                              *
  13. * Johann-Fichte-Strasse 11                                             *
  14. * 8 Munich 40                                                          *
  15. * Germany                                                              *
  16. *                                                                      *
  17. ************************************************************************
  18.  
  19. _AbsExecBase        equ 4
  20.  
  21. **** exec *****
  22.  
  23. _LVOForbid       equ -$84
  24. _LVOPermit       equ -$8a
  25. _LVOGetMsg       equ -$174
  26. _LVOReplyMsg     equ -$17a
  27. _LVOWaitPort     equ -$180
  28. _LVOCloseLibrary equ -$19e
  29. _LVOOpenLibrary  equ -$228
  30.  
  31. **** intuition ******
  32.  
  33. _LVOCloseWindow    equ -$48
  34. _LVOOpenWindow     equ -$cc
  35. _LVOSetMenuStrip   equ -$108
  36.  
  37. ***** graphics ******
  38.  
  39. _LVOMove            equ -$f0
  40. _LVODraw            equ -$f6
  41. _LVOSetAPen         equ -$156
  42.  
  43. ***** dos ******
  44.  
  45. _LVOOpen         equ -$1e
  46. _LVOClose        equ -$24
  47. _LVORead         equ -$2a
  48. _LVOWrite        equ -$30
  49.  
  50. wd_RPort        equ $32
  51. wd_UserPort     equ $56
  52. pr_MsgPort      equ $5c
  53. pr_CLI          equ $ac
  54. ThisTask        equ $114
  55. VBlankFrequency equ $212
  56.  
  57.        moveq   #0,d0
  58.        movea.l _AbsExecBase,a6   test if WB or CLI
  59.        movea.l ThisTask(a6),a0
  60.        tst.l   pr_CLI(a0)
  61.        bne.s   isCLI
  62.  
  63.        lea     pr_MsgPort(a0),a0  for WB get WB Message
  64.        jsr     _LVOWaitPort(a6)
  65.        jsr     _LVOGetMsg(a6)
  66.  
  67. isCLI  move.l  d0,-(a7)
  68.  
  69.        cmpi.b  #60,VBlankFrequency(a6) test if PAL or NTSC
  70.        beq.s   isNTSC
  71.        move.w  #256,nw+6
  72.  
  73. isNTSC lea     GfxName(pc),a1   Open graphics.library
  74.        moveq   #0,d0
  75.        jsr     _LVOOpenLibrary(a6)
  76.        move.l  d0,GfxBase
  77.        beq.s   Gexit
  78.  
  79.        lea     DosName(pc),a1    open dos library
  80.        moveq   #0,d0
  81.        jsr     _LVOOpenLibrary(a6)
  82.        move.l  d0,DosBase
  83.        beq.s   Gexit
  84.  
  85.        lea     IntName(pc),a1     open intuition library
  86.        moveq   #0,d0
  87.        jsr     _LVOOpenLibrary(a6)
  88.        move.l  d0,IntBase
  89.        beq.s   Gexit
  90.  
  91.        lea     nw(pc),a0          open window
  92.        movea.l IntBase(pc),a6
  93.        jsr     _LVOOpenWindow(a6)
  94.        move.l  d0,window
  95. Gexit  beq     exit
  96.  
  97.  
  98. ; Set menu
  99.  
  100.        movea.l d0,a0           which window
  101.        lea     Menu1(pc),a1    which menu
  102.        jsr     _LVOSetMenuStrip(a6)
  103.  
  104.        movea.l window(pc),a0
  105.        movea.l wd_RPort(a0),a5
  106.  
  107. redraw bsr     fstline         initial configuration
  108.  
  109. draw   movea.l window(pc),a0
  110.        move.l  d6,d0
  111.        addi.l  #$10,d0
  112.        cmp.w   $a(a0),d0
  113.        bpl.s   wait
  114.  
  115.        bsr     next1
  116.        lea     next,a3
  117.        bsr     print
  118.        bsr     next2
  119.        lea     first,a3
  120.        bsr     print
  121.  
  122. wait   bsr     trycls
  123.        beq.s   draw
  124.        cmpi.l  #$200,d7
  125.        beq.s   exit
  126.  
  127.        cmpi.l  #$100,d7
  128.        bne.s   wait
  129.  
  130. ; Choice from menu
  131.  
  132.        movea.l window(pc),a0
  133.        movea.l $5e(a0),a0   Load Window.MessageKey
  134.        move.w  $18(a0),d0   Load message code
  135.        move.w  d0,d1
  136.        andi.w  #$f,d1
  137.        bne.s   ismen2
  138.  
  139.        andi.w  #$f0,d0      Menu 1
  140.        bne.s   menu12       Submenu 1
  141.        moveq   #0,d6        y = 0
  142.        bra.s   draw
  143.  
  144. menu12 cmpi.w  #$20,d0      Submenu 2
  145.        bne.s   wait
  146.        bra.s   redraw
  147.  
  148. ismen2 cmpi.w  #1,d1
  149.        bne     wait
  150.        andi.w  #$f0,d0      Menu 2
  151.        bne.s   menu22
  152.        bsr     paraA        Submenu 1
  153. return movea.l window(pc),a0
  154.        move.w  $a(a0),d6
  155.        bra.s   wait
  156. menu22 cmpi.w  #$20,d0
  157.        bne.s   menu23
  158.        bsr     paraB        Submenu 2
  159.        bra.s   return
  160. menu23 cmpi.w  #$40,d0
  161.        bne.s   menu24
  162.        bsr     paraC        Submenu 3
  163.        bra.s   return
  164. menu24 cmpi.w  #$60,d0
  165.        bne.s   menu25
  166.        bsr     paraD        Submenu 4
  167.        bra.s   return
  168. menu25 cmpi.w  #$80,d0
  169.        bne     wait
  170.        bsr     paraE        Submenu 5
  171.        bra.s   return
  172.  
  173. exit   movea.l IntBase(pc),a6
  174.        move.l  window(pc),d7
  175.        beq.s   noWin
  176.        movea.l d7,a0              close window
  177.        jsr     _LVOCloseWindow(a6)
  178.  
  179. noWin  move.l  (a7)+,d7
  180.        movea.l _AbsExecBase,a6
  181.        tst.l   d7
  182.        beq.s   NoBenh
  183.        jsr     _LVOForbid(a6)       reply to WB
  184.        movea.l d7,a1
  185.        jsr     _LVOReplyMsg(a6)
  186.        jsr     _LVOPermit(a6)
  187.  
  188. NoBenh move.l  IntBase(pc),d1       close intuition library
  189.        beq.s   noInt
  190.        movea.l d1,a1
  191.        jsr     _LVOCloseLibrary(a6)
  192.  
  193. noInt  move.l  GfxBase(pc),d1       close graphics library
  194.        beq.s   noGfx
  195.        movea.l d1,a1
  196.        jsr     _LVOCloseLibrary(a6)
  197.  
  198. noGfx  move.l  DosBase(pc),d1       close dos library
  199.        beq.s   noDos
  200.        movea.l d1,a1
  201.        jsr     _LVOCloseLibrary(a6)
  202.  
  203. noDos  moveq   #0,d0                no error
  204.        rts
  205.  
  206. trycls movem.l d0-d6/a0-a6,-(a7)
  207.        movea.l _AbsExecBase,a6
  208.        moveq   #0,d7
  209.        movea.l window(pc),a0
  210.        movea.l wd_UserPort(a0),a0    load Window.UserPort
  211.        jsr     _LVOGetMsg(a6)
  212.        tst.l   d0
  213.        beq.s   noMsg1         No message
  214.  
  215.        movea.l d0,a1
  216.        move.l  $14(a1),d7       Message in d7
  217.  
  218. noMsg1 movem.l (a7)+,d0-d6/a0-a6
  219. noMsg  tst.l   d7
  220.        rts
  221.  
  222. fstline moveq   #0,d0
  223.         lea     first(pc),a3
  224.         move.l  #320,d1
  225. clear   move.l  d0,(a3)+
  226.         dbra    d1,clear
  227.  
  228.         move.l  #$10001,first+640
  229.         lea     first(pc),a3
  230.         moveq   #0,d6
  231.  
  232. print   movea.l GfxBase(pc),a6
  233.         moveq   #0,d0
  234.         moveq   #0,d5         x
  235.         move.l  d6,d1         y
  236.         movea.l a5,a1
  237.         jsr     _LVOMove(a6)
  238.  
  239.         move.l  #640,d7
  240. prlop   move.w  (a3)+,d0
  241.         andi.l  #3,d0
  242.         movea.l a5,a1
  243.         jsr     _LVOSetAPen(a6)
  244.  
  245.         move.l  d5,d0
  246.         move.l  d6,d1
  247.         movea.l a5,a1
  248.         jsr     _LVODraw(a6)
  249.         addq.l  #1,d5
  250.         dbra    d7,prlop
  251.         addi.l  #1,d6
  252.         rts
  253.  
  254. next2   lea     next(pc),a3
  255.         lea     first(pc),a2
  256.         bra.s   gogo
  257.  
  258. next1   lea     first(pc),a3
  259.         lea     next(pc),a2
  260.  
  261. gogo    move.l  #640,d2
  262. nlop    moveq   #0,d0
  263.         moveq   #0,d3
  264.         move.w  -4(a3),d0
  265.         move.w  A(pc),d3
  266.         mulu    d0,d3
  267.         move.w  -2(a3),d0
  268.         move.w  B(pc),d1
  269.         mulu    d0,d1
  270.         add.l   d1,d3
  271.         move.w  (a3),d0
  272.         move.w  C(pc),d1
  273.         mulu    d0,d1
  274.         add.l   d1,d3
  275.         move.w  2(a3),d0
  276.         move.w  D(pc),d1
  277.         mulu    d0,d1
  278.         add.l   d1,d3
  279.         move.w  4(a3),d0
  280.         move.w  E(pc),d1
  281.         mulu    d0,d1
  282.         add.l   d1,d3
  283.         and.l   #3,d3
  284.         move.w  d3,(a2)+
  285.         adda.l  #2,a3
  286.         dbra    d2,nlop
  287.         rts
  288.  
  289. ; decimal  output
  290.  
  291. decout  lea     Buffer(pc),a0
  292.         moveq   #0,d0
  293. wrlop   andi.l  #$ffff,d4
  294.         tst.l   d4
  295.         beq.s   back
  296.         divu    #10,d4
  297.         swap    d4
  298.         move.b  d4,(a0)+
  299.         swap    d4
  300.         addq.l  #1,d0
  301.         bra.s   wrlop
  302.  
  303. back    tst.l   d0      zero is a special case
  304.         bne.s   bakk
  305.         addq.l  #1,d0
  306.         clr.b   Buffer
  307. bakk    movea.l d6,a0
  308.         adda.l  #21,a0
  309.         moveq   #6,d1
  310.         subq.l  #1,d0
  311. clr     cmp.l   d0,d1
  312.         beq.s   endclr
  313.         move.b  #' ',-(a0)
  314.         subq.l  #1,d1
  315.         bra.s   clr
  316.  
  317. endclr  lea     Buffer(pc),a1
  318. rewlop  move.b  (a1)+,d1
  319.         addi.b  #'0',d1
  320.         move.b  d1,-(a0)
  321.         dbra    d0,rewlop
  322.         rts
  323.  
  324. ; Console handler
  325.  
  326. ConWind bsr     decout
  327.         movea.l DosBase(pc),a6
  328.         move.l  d5,d1
  329.         move.l  #$3ed,d2      Open for read + write
  330.         jsr     _LVOOpen(a6)
  331.         move.l  d0,d4
  332.         beq.s   nogo
  333.  
  334.         move.l  d0,d1
  335.         move.l  d6,d2
  336.         move.l  d7,d3
  337.         jsr     _LVOWrite(a6)
  338.  
  339.         move.l  d4,d1
  340.         move.l  #Buffer,d2
  341.         moveq   #60,d3
  342.         jsr     _LVORead(a6)
  343.  
  344.         move.l  d4,d1
  345.         jsr     _LVOClose(a6)
  346.  
  347. ; Convert input to decimal
  348.  
  349.         moveq   #0,d0
  350.         moveq   #0,d2
  351.         lea     Buffer(pc),a0
  352.         moveq   #0,d1
  353.  
  354. readbuf move.b  (a0)+,d0   Get next char
  355.         cmpi.b  #$a,d0     End of input?
  356.         beq.s   readend
  357.         addq.l  #1,d2
  358.         subi.b  #$30,d0    Convert to decimal
  359.         blt.s   nogo       Error in input
  360.         cmpi.b  #9,d0
  361.         bgt.s   nogo
  362.         mulu    #10,d1
  363.         add.l   d0,d1
  364.         bra.s   readbuf
  365.  
  366. nogo    moveq   #1,d0      Nogood
  367.         rts
  368. readend tst.l   d2
  369.         beq.s   nogo       No input
  370.         cmpi.l  #$ffff,d1  must be word size
  371.         bhi.s   nogo
  372.         moveq   #0,d0      Is ok
  373.         rts
  374.  
  375. ; *** parameter A ***
  376.  
  377. paraA   move.w  A(pc),d4
  378.         move.l  #aname,d5
  379.         move.l  #atext,d6
  380.         moveq   #aend-atext,d7
  381.         bsr     ConWind
  382.  
  383.         bne.s   noA
  384.         move.w  d1,A
  385. noA     rts
  386.  
  387. ; *** parameter B ***
  388.  
  389. paraB   move.w  B(pc),d4
  390.         move.l  #bname,d5
  391.         move.l  #btext,d6
  392.         moveq   #bend-btext,d7
  393.         bsr     ConWind
  394.  
  395.         bne.s   noA
  396.         move.w  d1,B
  397.         rts
  398.  
  399. ; *** parameter C ***
  400.  
  401. paraC   move.w  C(pc),d4
  402.         move.l  #cname,d5
  403.         move.l  #ctext,d6
  404.         moveq   #cend-ctext,d7
  405.         bsr     ConWind
  406.  
  407.         bne.s   noA
  408.         move.w  d1,C
  409.         rts
  410.  
  411. ; *** parameter D ***
  412.  
  413. paraD   move.w  D(pc),d4
  414.         move.l  #dname,d5
  415.         move.l  #dtext,d6
  416.         moveq   #dend-dtext,d7
  417.         bsr     ConWind
  418.  
  419.         bne.s   noA
  420.         move.w  d1,D
  421.         rts
  422.  
  423. ; *** parameter E ***
  424.  
  425. paraE   move.w  E(pc),d4
  426.         move.l  #ename,d5
  427.         move.l  #etext,d6
  428.         moveq   #eend-etext,d7
  429.         bsr     ConWind
  430.  
  431.         bne.s   noE
  432.         move.w  d1,E
  433. noE     rts
  434.  
  435. A           dc.w 0
  436. B           dc.w 1
  437. C           dc.w 0
  438. D           dc.w 1
  439. E           dc.w 0
  440.             dc.w 0,0
  441. first       ds.w 640
  442.             dc.w 0,0
  443.             dc.w 0,0
  444. next        ds.w 640
  445.             dc.w 0,0
  446.  
  447. DosBase     dc.l 0
  448. GfxBase     dc.l 0
  449. IntBase     dc.l 0
  450.  
  451. window      dc.l 0
  452.  
  453. aname       dc.b 'CON:100/100/200/100/parameter A',0
  454.             even
  455.  
  456. atext       dc.b 'parameter A = '
  457. aaddress    dc.b 'FFFFFF',$d,$a
  458. aend        even
  459.  
  460. bname       dc.b 'CON:100/100/200/100/parameter B',0
  461.             even
  462.  
  463. btext       dc.b 'parameter B = '
  464. baddress    dc.b 'FFFFFF',$d,$a
  465. bend        even
  466.  
  467. cname       dc.b 'CON:100/100/200/100/parameter C',0
  468.             even
  469.  
  470. ctext       dc.b 'parameter C = '
  471. caddress    dc.b 'FFFFFF',$d,$a
  472. cend        even
  473.  
  474. dname       dc.b 'CON:100/100/200/100/parameter D',0
  475.             even
  476.  
  477. dtext       dc.b 'parameter D = '
  478. daddress    dc.b 'FFFFFF',$d,$a
  479. dend        even
  480.  
  481. ename       dc.b 'CON:100/100/200/100/parameter E',0
  482.             even
  483.  
  484. etext       dc.b 'parameter E = '
  485. eaddress    dc.b 'FFFFFF',$d,$a
  486. eend        even
  487.  
  488. DosName     dc.b 'dos.library',0
  489. Buffer:
  490. GfxName     dc.b 'graphics.library',0
  491. IntName     dc.b 'intuition.library',0
  492.             even
  493.  
  494. title       dc.b  'Cellula automata',0
  495.             even
  496.  
  497. ***** Window definition *****
  498.  
  499. nw          dc.w 0,0         Position left,top
  500.             dc.w 640,199     Size width,height
  501.             dc.b 0,1         Colors detail-,block pen
  502.             dc.l $344        IDCMP-Flags
  503.             dc.l $140f       Window flags
  504.             dc.l 0           ^Gadget
  505.             dc.l 0           ^Menu check
  506.             dc.l title       ^Window name
  507. nws         dc.l 0           ^Screen structure,
  508.             dc.l 0           ^BitMap
  509.             dc.w 100         MinWidth
  510.             dc.w 40          MinHeight
  511.             dc.w -1          MaxWidth
  512.             dc.w -1,1        MaxHeight,Screen type
  513.  
  514. **** menu definition ****
  515.  
  516. Menu1       dc.l Menu2       Next menu
  517.             dc.w 50,0        Position left edge,top edge
  518.             dc.w 80,20       Dimensions width,height
  519.             dc.w 1           Menu enabled
  520.             dc.l mtext1      Text for menu header
  521.             dc.l item11      ^First in chain
  522.             dc.l 0,0         Internal
  523.  
  524. mtext1      dc.b 'Redraw',0
  525.             even
  526.  
  527. item11      dc.l item12      next in chained list
  528.             dc.w 0,0         Position left edge,top edge
  529.             dc.w 80,10       Dimensions width,height
  530.             dc.w $52         itemtext+highcomp+itemenabled
  531.             dc.l 0           Mutual exclude
  532.             dc.l I11txt      Pointer to intuition text
  533.             dc.l 0
  534.             dc.b 0,0
  535.             dc.l 0
  536.             dc.w 0
  537.  
  538.  
  539. I11txt      dc.b 0           Front pen  (blue)
  540.             dc.b 1           Back pen   (white)
  541.             dc.b 0,0         Draw mode
  542.             dc.w 0           Left edge
  543.             dc.w 0           Top edge
  544.             dc.l 0           Text font
  545.             dc.l item11txt   Pointer to text
  546.             dc.l 0           Next text
  547.  
  548. item11txt   dc.b 'next page',0
  549.             even
  550.  
  551. item12      dc.l 0           next in chained list
  552.             dc.w 0,10        Position left edge,top edge
  553.             dc.w 80,10       Dimensions width,height
  554.             dc.w $52         itemtext+highcomp+itemenabled
  555.             dc.l 0           Mutual exclude
  556.             dc.l I12txt      Pointer to intuition text
  557.             dc.l 0
  558.             dc.b 0,0
  559.             dc.l 0
  560.             dc.w 0
  561.  
  562.  
  563. I12txt      dc.b 0           Front pen  (blue)
  564.             dc.b 1           Back pen   (white)
  565.             dc.b 0,0         Draw mode
  566.             dc.w 0           Left edge
  567.             dc.w 0           Top edge
  568.             dc.l 0           Text font
  569.             dc.l item12txt   Pointer to text
  570.             dc.l 0           Next text
  571.  
  572. item12txt   dc.b 'from start',0
  573.             even
  574.  
  575.  
  576. ***** 2nd menu definition *****
  577.  
  578. Menu2       dc.l 0           Next menu
  579.             dc.w 150,0       Position left edge,top edge
  580.             dc.w 120,20      Dimensions width,height
  581.             dc.w 1           Menu enabled
  582.             dc.l mtext2      Text for menu header
  583.             dc.l item21      ^First in chain
  584.             dc.l 0,0         Internal
  585.  
  586. mtext2      dc.b 'change rule',0
  587.             even
  588.  
  589.  
  590. item21      dc.l item22      next in chained list
  591.             dc.w 0,0         Position left edge,top edge
  592.             dc.w 120,10      Dimensions width,height
  593.             dc.w $52         itemtext+highcomp+itemenabled
  594.             dc.l 0           Mutual exclude
  595.             dc.l I21txt      Pointer to intuition text
  596.             dc.l 0
  597.             dc.b 0,0
  598.             dc.l 0
  599.             dc.w 0
  600.  
  601.  
  602. I21txt      dc.b 0           Front pen  (blue)
  603.             dc.b 1           Back pen   (white)
  604.             dc.b 0,0         Draw mode
  605.             dc.w 0           Left edge
  606.             dc.w 0           Top edge
  607.             dc.l 0           Text font
  608.             dc.l item21txt   Pointer to text
  609.             dc.l 0           Next text
  610.  
  611. item21txt   dc.b 'parameter A',0
  612.             even
  613.  
  614. item22      dc.l item23      next in chained list
  615.             dc.w 0,10        Position left edge,top edge
  616.             dc.w 120,10      Dimensions width,height
  617.             dc.w $52         itemtext+highcomp+itemenabled
  618.             dc.l 0           Mutual exclude
  619.             dc.l I22txt      Pointer to intuition text
  620.             dc.l 0
  621.             dc.b 0,0
  622.             dc.l 0
  623.             dc.w 0
  624.  
  625.  
  626. I22txt      dc.b 0           Front pen  (blue)
  627.             dc.b 1           Back pen   (white)
  628.             dc.b 0,0         Draw mode
  629.             dc.w 0           Left edge
  630.             dc.w 0           Top edge
  631.             dc.l 0           Text font
  632.             dc.l item22txt   Pointer to text
  633.             dc.l 0           Next text
  634.  
  635. item22txt   dc.b 'parameter B',0
  636.             even
  637.  
  638. item23      dc.l item24      next in chained list
  639.             dc.w 0,20        Position left edge,top edge
  640.             dc.w 120,10      Dimensions width,height
  641.             dc.w $52         itemtext+highcomp+itemenabled
  642.             dc.l 0           Mutual exclude
  643.             dc.l I23txt      Pointer to intuition text
  644.             dc.l 0
  645.             dc.b 0,0
  646.             dc.l 0
  647.             dc.w 0
  648.  
  649.  
  650. I23txt      dc.b 0           Front pen  (blue)
  651.             dc.b 1           Back pen   (white)
  652.             dc.b 0,0         Draw mode
  653.             dc.w 0           Left edge
  654.             dc.w 0           Top edge
  655.             dc.l 0           Text font
  656.             dc.l item23txt   Pointer to text
  657.             dc.l 0           Next text
  658.  
  659. item23txt   dc.b 'parameter C',0
  660.             even
  661.  
  662. item24      dc.l item25      next in chained list
  663.             dc.w 0,30        Position left edge,top edge
  664.             dc.w 120,10      Dimensions width,height
  665.             dc.w $52         itemtext+highcomp+itemenabled
  666.             dc.l 0           Mutual exclude
  667.             dc.l I24txt      Pointer to intuition text
  668.             dc.l 0
  669.             dc.b 0,0
  670.             dc.l 0
  671.             dc.w 0
  672.  
  673.  
  674. I24txt      dc.b 0           Front pen  (blue)
  675.             dc.b 1           Back pen   (white)
  676.             dc.b 0,0         Draw mode
  677.             dc.w 0           Left edge
  678.             dc.w 0           Top edge
  679.             dc.l 0           Text font
  680.             dc.l item24txt   Pointer to text
  681.             dc.l 0           Next text
  682.  
  683. item24txt   dc.b 'parameter D',0
  684.             even
  685.  
  686. item25      dc.l 0           next in chained list
  687.             dc.w 0,40        Position left edge,top edge
  688.             dc.w 120,10      Dimensions width,height
  689.             dc.w $52         itemtext+highcomp+itemenabled
  690.             dc.l 0           Mutual exclude
  691.             dc.l I25txt      Pointer to intuition text
  692.             dc.l 0
  693.             dc.b 0,0
  694.             dc.l 0
  695.             dc.w 0
  696.  
  697.  
  698. I25txt      dc.b 0           Front pen  (blue)
  699.             dc.b 1           Back pen   (white)
  700.             dc.b 0,0         Draw mode
  701.             dc.w 0           Left edge
  702.             dc.w 0           Top edge
  703.             dc.l 0           Text font
  704.             dc.l item25txt   Pointer to text
  705.             dc.l 0           Next text
  706.  
  707. item25txt   dc.b 'parameter E',0
  708.             even
  709.  
  710.             end
  711.  
  712.