home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src1.dms / in.adf / Fractal.s < prev    next >
Encoding:
Text File  |  1992-05-15  |  11.8 KB  |  581 lines

  1. ;*******************************************************
  2. ;*    SystemStartUp example that opens a screen and    *
  3. ;*          enables you to read the keyboard           *
  4. ;*                                                     *
  5. ;*      AsmOne example coded by Rune Gram-Madsen       *
  6. ;*                                                     *
  7. ;*       All rights reserved. Copyright (c) 1990       *
  8. ;*******************************************************
  9.  
  10. ; This will draw a Julia fractal picture. This has been implemented
  11. ; just to show something beautifull on the screen. Remove that from
  12. ; the source and insert your own routines here instead.
  13.  
  14. ; This example could have been coded shorter using includefiles. But
  15. ; I think it is nice to have it all in one single program.
  16.  
  17. IECLASS_RAWKEY = $01
  18. OPENLIB =    -408
  19. CLOSELIB =    -414
  20. OPENSCREEN =    -198
  21. CLOSESCREEN =    -66
  22. OPENWINDOW =    -204
  23. CLOSEWINDOW =    -72
  24. OPENDEVICE =    -444
  25. CLOSEDEVICE =    -450
  26. RAWKEYCONVERT=    -$30
  27. FINDTASK =    -294
  28. WAITPORT =    -384
  29. REPLYMSG =    -378
  30. GETMSG =    -372
  31. LOADRGB4 =     -192
  32.  
  33. RAWKEY      =    $00000400
  34.  
  35. BACKDROP    =    $00000100
  36. BORDERLESS    =    $00000800
  37. ACTIVATE    =    $00001000
  38. RMBTRAP        =    $00010000
  39.  
  40. CUSTOMSCREEN    =    $000F
  41.  
  42. V_HIRES        =    $8000
  43. NULL        =    0
  44.  
  45. ;********************************
  46. ;*    System startup routine    *
  47. ;********************************
  48.  
  49. J    BSR.S    STARTUP
  50.     BEQ.S    .ERROR        ; An error ?
  51.  
  52. ;---  Place your main routine here  ---
  53.  
  54.     BSR.L    JULIA_DRAW    ; Draw the graphics
  55.  
  56. .LOOP1:    BSR.L    KEYB_GETKEY    ; Get a keypression
  57.     CMP.B    #' ',D0        ; A space ??
  58.     BNE.S    .LOOP1        ; No again
  59.  
  60.     BRA.S    CLOSEDOWN    ; Closedown
  61. .ERROR:    RTS
  62.  
  63. ;********  Open up system structures  ********
  64.  
  65. STARTUP:
  66.     MOVE.L    A7,ERROR_STACK    ; Save stack pointer if an error
  67.     BSR.L    TASK_FIND
  68.     BSR.L    INTULIB_OPEN
  69.     BSR.L    GRAPHLIB_OPEN
  70.     BSR.L    SCREEN_OPEN
  71.     BSR.L    WINDOW_OPEN
  72.     BSR.L    KEYB_INIT
  73.     BSR.L    COLORS_SET
  74.     MOVEQ    #-1,D0        ; Set ok value
  75.     RTS
  76.  
  77. ;--- An error has occured ---
  78.  
  79. STARTUP_ERROR:
  80.     MOVE.L    ERROR_STACK,A7    ; Restore old stackpointer
  81.     MOVEQ    #0,D0        ; Set error value
  82.     RTS            ; Return to main to main routine
  83.  
  84. ;*******  Close down system structures  *********
  85.  
  86. CLOSEDOWN:
  87.     BSR.S    KEYB_EXIT
  88.     BSR.L    WINDOW_CLOSE
  89.     BSR.L    SCREEN_CLOSE
  90.     BSR.L    GRAPHLIB_CLOSE
  91.     BRA.S    INTULIB_CLOSE
  92.  
  93. ;*******  Find our task  *******
  94.  
  95. TASK_FIND:
  96.     SUB.L    A1,A1        ; a1 = 0 Our task
  97.     MOVE.L    $4.W,A6        ; Exec pointer    
  98.     JSR    FINDTASK(A6)    ; Call Findtask
  99.     MOVE.L    D0,TASK_PTR    ; Store the pointer for our task
  100.     RTS
  101.  
  102. ;*******  Set the screen colors *******
  103.  
  104. COLORS_SET:
  105.     MOVE.L    SCREEN_HANDLE(PC),A0    ; Get screen handle
  106.     LEA.L    44(A0),A0        ; Get the screens viewport
  107.  
  108.     MOVE.L    GRAPHICS_BASE(PC),A6
  109.     LEA.L    COLORS(PC),A1        ; Pointer to the color list
  110.     MOVEQ    #32,D0            ; 32 colors to set
  111.     JMP    LOADRGB4(A6)        ; Set the colors
  112.  
  113. ;****** Initialize keyboardroutine *******
  114.  
  115. KEYB_INIT:
  116.     MOVE.L    $4.W,A6
  117.     LEA    CONSOLE_NAME(PC),A0    ; Pointer to "Console.Device"
  118.     LEA    IO_REQUEST(PC),A1    ; Io Buffer
  119.     MOVEQ    #-1,D0            ; Flags
  120.     MOVEQ    #0,D1            ; Unit
  121.     JSR    OPENDEVICE(A6)        
  122.     TST.L    D0            ; An error
  123.     BNE.S    STARTUP_ERROR        ; Error quit !!
  124.  
  125.     MOVE.L    IO_REQUEST+20,CONSOLE_DEVICE    ; Get console device
  126.     MOVE.L    WINDOW_HANDLE(PC),A0    ; Window Handle
  127.     MOVE.L    $56(A0),KEY_PORT    ; Get this windows keyport
  128.     RTS
  129.  
  130. ;****** Exit keyboard ******
  131.  
  132. KEYB_EXIT:
  133.     LEA    IO_REQUEST(PC),A1
  134.     MOVE.L    $4.W,A6
  135.     JMP    CLOSEDEVICE(A6)
  136.  
  137. ;******* Open Intution-Library *******
  138.  
  139. INTULIB_OPEN:
  140.     MOVE.L    $4.W,A6
  141.     LEA    INTUITION_NAME(PC),A1    ; Pointer to "intuition.library"
  142.     JSR    OPENLIB(A6)
  143.     MOVE.L    D0,INTUITION_BASE    ; Store pointer
  144.     BEQ.L    STARTUP_ERROR        ; If error jump
  145.     RTS
  146.  
  147. ;******* Close intution-library *******
  148.  
  149. INTULIB_CLOSE:
  150.     MOVE.L    $4.W,A6
  151.     MOVE.L    INTUITION_BASE(PC),A1
  152.     JMP    CLOSELIB(A6)
  153.  
  154. ;******* Open Graphics-Library *******
  155.  
  156. GRAPHLIB_OPEN:
  157.     MOVE.L    $4.W,A6
  158.     LEA    GRAPHICS_NAME(PC),A1    ; Pointer to "graphics.library"
  159.     JSR    OPENLIB(A6)
  160.     MOVE.L    D0,GRAPHICS_BASE    ; Store pointer
  161.     BEQ.L    STARTUP_ERROR        ; If error jump
  162.     RTS
  163.  
  164. ;******* Close Graphics-library *******
  165.  
  166. GRAPHLIB_CLOSE:
  167.     MOVE.L    $4.W,A6
  168.     MOVE.L    GRAPHICS_BASE(PC),A1
  169.     JMP    CLOSELIB(A6)
  170.  
  171. ;******* Open Main Screen *******
  172.  
  173. SCREEN_OPEN:
  174.     LEA.L    SCREEN_DEFS(PC),A0    ; Pointer to screen definitions
  175.     MOVE.L    INTUITION_BASE(PC),A6    ; Get intuition base
  176.     JSR    OPENSCREEN(A6)        ; Open the screen
  177.     MOVE.L    D0,SCREEN_HANDLE
  178.     BEQ.L    STARTUP_ERROR        ; If not opened => error
  179.     MOVE.L    D0,A0
  180.     LEA.L    $C0(A0),A0        ; Get bitplane pointers
  181.     LEA.L    BITPLANE1_PTR(PC),A1
  182.     MOVE.L    (A0)+,(A1)+        ; Bitplane 1
  183.     MOVE.L    (A0)+,(A1)+        ; Bitplane 2
  184.     MOVE.L    (A0)+,(A1)+        ; Bitplane 3
  185.     MOVE.L    (A0)+,(A1)+        ; Bitplane 4
  186.     MOVE.L    (A0)+,(A1)+        ; Bitplane 5
  187.     RTS
  188.  
  189. ;******* Close Main Screen *******
  190.  
  191. SCREEN_CLOSE:
  192.     MOVE.L    SCREEN_HANDLE(PC),A0
  193.     MOVE.L    INTUITION_BASE(PC),A6
  194.     JMP    CLOSESCREEN(A6)
  195.  
  196. ;******* OPEN MAIN WINDOW *******
  197.  
  198. WINDOW_OPEN:
  199.     MOVE.L    INTUITION_BASE(PC),A6    ; Pointer to intuition library
  200.     LEA    WINDOW_DEFS(PC),A0    ; Pointer to window definitions
  201.     JSR    OPENWINDOW(A6)
  202.     MOVE.L    D0,WINDOW_HANDLE    ; Store window handle
  203.     BEQ.L    STARTUP_ERROR        ; Error jump
  204.     MOVE.L    TASK_PTR(PC),A0        ; Get task pointer
  205.     MOVE.L    $B8(A0),TASK_OLDWINDOW    ; Store the old window
  206.     MOVE.L    D0,$B8(A0)        ; Make Reguesters turn up on this
  207.     RTS                ; Window
  208.     
  209. ;******* CLOSE MAIN WINDOW *******
  210.  
  211. WINDOW_CLOSE:
  212.     MOVE.L    TASK_PTR(PC),A0        ; Get task ptr
  213.     MOVE.L    TASK_OLDWINDOW(PC),$B8(A0)    ; Restore old window
  214.     MOVE.L    INTUITION_BASE(PC),A6
  215.     MOVE.L    WINDOW_HANDLE(PC),A0
  216.     JMP    CLOSEWINDOW(A6)
  217.  
  218. ;******* GET KEY PRESS *******
  219.  
  220. KEYB_GETKEY:
  221.     MOVE.W    KEYB_OUTBUFFER(PC),D0    ; Buffer output pointer
  222.     CMP.W    KEYB_INBUFFER(PC),D0    ; Is buffer empty
  223.     BNE.S    KEYB_STILLKEYSINBUFFER    ; No ??
  224.     BSR.L    KEYB_GETKEYS        ; Empty, Wait on a key from
  225.     BRA.S    KEYB_GETKEY        ; the keyboard
  226.  
  227. KEYB_STILLKEYSINBUFFER:
  228.     ADDQ.B    #1,KEYB_OUTBUFFER+1    ; Increase out pointer
  229.     LEA    KEYB_BUFFER(PC),A0    ; Pointer to buffer
  230.     MOVE.B    (A0,D0.W),D0        ; Get the oldest key
  231.     RTS
  232.  
  233. ;******* GET KEY STRING *******
  234.  
  235. KEYB_GETKEYS:
  236.     MOVE.L    KEY_PORT(PC),A5    ; Our key port
  237.     MOVE.L    A5,A0
  238.     MOVE.L    $4.W,A6
  239.     JSR    WAITPORT(A6)    ; Wait for message on the port
  240.     MOVE.L    A5,A0
  241.     JSR    GETMSG(A6)    ; Get the message
  242.     MOVE.L    D0,KEY_MSG
  243.     BEQ.S    KEYB_GETKEYS    ; No message, strange, jump again
  244.  
  245.     MOVE.L    D0,A3        ; Msg now in A3
  246.     MOVE.L    20(A3),D3    ; Get message type
  247.  
  248. ;---  Check if raw key  ---
  249.  
  250.     MOVE.L    D3,D1
  251.     AND.L    #RAWKEY,D1    ; Was it a raw key ??
  252.     BEQ.L    KEYB_ANSWER    ; If no just answer
  253.  
  254. ;---  Key Recieved  ---
  255.  
  256.     MOVE.W    24(A3),D4    ; Key code
  257.     BTST    #7,D4        ; Bit 7 - Key release
  258.     BNE.L    KEYB_ANSWER        ; We dont need them
  259.     MOVE.W    26(A3),D5    ; QUALIFIER
  260.     MOVE.L    28(A3),D6    ; IADDRESS
  261.     MOVE.W    D4,IECODE    ; TRANSFER CODE
  262.     MOVE.W    D5,IEQUAL    ; QUALIFIERS
  263.     MOVE.L    D6,IEADDR    ; AND POINTER TO OLD KEYS
  264.  
  265. ;---  Convert to ascii  ---
  266.  
  267.     LEA    MY_EVENT,A0    ; Pointer to event structure
  268.     LEA    KEY_BUFFER,A1    ; Convert buffer
  269.     MOVEQ    #80,D1        ; Max 80 characters
  270.     SUB.L    A2,A2        ; A2 = 0 Keymap - Default
  271.     MOVE.L    CONSOLE_DEVICE,A6
  272.     JSR    RAWKEYCONVERT(A6) ; Convert the rawkey into Ascii
  273.  
  274. ;---  Copy keys to buffer  ---
  275.  
  276. ; d0 = number of chars in the convert buffer
  277.  
  278. KEYB_COPY_D0_CHARS:
  279.     SUBQ.W    #1,D0
  280.     BMI.S    KEYB_ANSWER        ; No chars ??
  281.     LEA    KEY_BUFFER(PC),A1
  282.     LEA    KEYB_BUFFER(PC),A0
  283.     MOVE.W    KEYB_INBUFFER,D1
  284. .LOOP:    MOVE.B    (A1)+,(A0,D1.W)        ; Copy the keys to the normal
  285.     ADDQ.B    #1,D1            ;  buffer.
  286.     DBF    D0,.LOOP
  287.     MOVE.W    D1,KEYB_INBUFFER
  288.     BRA.L    KEYB_ANSWER        ; Answer
  289.  
  290. ;******* ANSWER KEYPRESS *******
  291.  
  292. KEYB_ANSWER:
  293.     MOVE.L    KEY_MSG(PC),A1
  294.     MOVE.L    $4.W,A6
  295.     JMP    REPLYMSG(A6)        ; Reply the message
  296.  
  297. SCREEN_DEFS:
  298.     DC.W    0,0        ; X-Y position
  299.     DC.W    320        ; Width
  300.     DC.W    200        ; Hight
  301.     DC.W    5        ; Depth
  302.     DC.B    0,1        ; Pen colors
  303.     DC.W    0        ; V_HIRES
  304.     DC.W    CUSTOMSCREEN
  305.     DC.L    FONT_ATTR    ; use Topaz 8 as standard font
  306.     DC.L    SCREEN_NAME
  307.     DC.L    0
  308.     DC.L    0
  309.  
  310. ;***  Window structure  ***
  311.  
  312. WINDOW_DEFS:
  313.     dc.w    0,0        ; X-Y position
  314.     dc.w    320        ; Current width
  315.     dc.w    200        ; Current higth
  316.     dc.b    0,1
  317.     dc.l    RAWKEY        ; Report only raw keys
  318.     dc.l    BACKDROP+BORDERLESS+ACTIVATE+RMBTRAP
  319.     dc.l    NULL
  320.     dc.l    NULL
  321.     DC.L    REQUESTER_NAME    ; Window name
  322. SCREEN_HANDLE:
  323.     dc.l    NULL    ;custom screen pointer
  324.     dc.l    NULL
  325.     dc.w    320        ; Min width 
  326.     dc.w    200        ; Min higth
  327.     dc.w    320        ; Max width
  328.     dc.w    200        ; Max higth
  329.     dc.w    CUSTOMSCREEN    ; A normal window
  330.     EVEN
  331.  
  332. ;---  Topaz font  ---
  333.  
  334. FONT_ATTR:
  335.     DC.L    FONT_NAME    ; Name
  336.     DC.W    8        ; Size
  337.     DC.B    0
  338.     DC.B    0
  339.     DC.W    8        ; Size
  340.  
  341. COLORS:
  342.     DC.W    $0000,$000F,$000E,$000D
  343.     DC.W    $000C,$000B,$000A,$0009
  344.     DC.W    $0008,$0007,$0106,$0205
  345.     DC.W    $0304,$0403,$0502,$0611
  346.     DC.W    $0720,$0831,$0942,$0A53
  347.     DC.W    $0B64,$0C75,$0D86,$0C97
  348.     DC.W    $0BA8,$0A9A,$098B,$0879
  349.     DC.W    $0767,$0555,$0343,$0131
  350.  
  351. FONT_NAME:        DC.B    'topaz.font',0
  352. CONSOLE_NAME:        DC.B    'console.device',0,0
  353. REQUESTER_NAME:        DC.B    'My Requester',0
  354. SCREEN_NAME:        DC.B    'My Screen - <SPACE> to quit',0
  355. INTUITION_NAME:        DC.B    'intuition.library',0
  356. GRAPHICS_NAME:        DC.B    'graphics.library',0
  357.     even
  358. CONSOLE_DEVICE:        DC.L    0
  359. INTUITION_BASE:        DC.L    0
  360. GRAPHICS_BASE:        DC.L    0
  361. TASK_OLDWINDOW:        DC.L    0
  362.  
  363. BITPLANE1_PTR:        DC.L    0
  364. BITPLANE2_PTR:        DC.L    0
  365. BITPLANE3_PTR:        DC.L    0
  366. BITPLANE4_PTR:        DC.L    0
  367. BITPLANE5_PTR:        DC.L    0
  368.  
  369. TASK_PTR:        DC.L    0
  370.  
  371. KEYB_BUFFER:        DCB.B    256,0
  372. KEYB_OUTBUFFER:        DC.W    0
  373. KEYB_INBUFFER:        DC.W    0
  374.  
  375. ERROR_STACK:        DC.W    0
  376.  
  377. IO_REQUEST:        DCB.B    32,0
  378. KEY_BUFFER:        DCB.B    80,0
  379. KEY_PORT:        DC.L    0
  380. KEY_MSG:        DC.L    0
  381.  
  382. MY_EVENT:    DC.L    0    ; Insert after each event
  383. EVENT_IECLASS:    DC.B    IECLASS_RAWKEY
  384.         DC.B    0    ; SUBCLASS - A Joke
  385. IECODE:        DC.W    0    ; RAWKEY - Inserted
  386. IEQUAL:        DC.W    0    ; QUALIFIER - SHIFT, CTRL, ETC.
  387. IEADDR:        DC.L    0    ; IAddress
  388.         DC.L    0
  389.         DC.L    0    ; TimeStamp
  390. WINDOW_HANDLE:    DC.L    0
  391.  
  392.  
  393. ;*********************************************
  394. ;*       Little Julia drawing routine        *
  395. ;*********************************************
  396.  
  397. ZOOM2 = $3
  398. MANDEL_ON = 0
  399.  
  400. JULIA_DRAW:
  401.     MOVE.L    BITPLANE1_PTR(PC),A0
  402.     MOVE.L    BITPLANE2_PTR(PC),A1
  403.     MOVE.L    BITPLANE3_PTR(PC),A2
  404.     MOVE.L    BITPLANE4_PTR(PC),A3
  405.     MOVE.L    BITPLANE5_PTR(PC),A4
  406.     MOVE.W    #11*40,D0
  407.     ADD.W    D0,A0
  408.     ADD.W    D0,A1
  409.     ADD.W    D0,A2
  410.     ADD.W    D0,A3
  411.     ADD.W    D0,A4
  412.  
  413.     SUB.L    A6,A6        ; J
  414.     CLR.W    CORDY
  415. LOOP1:
  416.     SUB.L    A5,A5        ; I
  417.     CLR.W    CORDX
  418. LOOP2:
  419.     MOVE.W    CORDX,D1
  420.     SUB.L    #$1D0,D1    ; X-ADJUST  BIGGER LEFT
  421.  
  422.     MOVE.W    CORDY,D0
  423.     SUB.L    #$12A,D0    ; Y-ADJUST  BIGGER UP
  424.  
  425.     MOVE.W    #30,D7
  426.  
  427.     IF    MANDEL_ON
  428.     MOVE.L    D0,D4
  429.     MOVE.L    D1,D5
  430.     ELSE
  431.     MOVE.W    #$60,D4
  432.     MOVE.W    #-$10,D5
  433.     ENDC
  434.  
  435.     MOVE.W    D0,D2
  436.     MULS    D2,D2
  437.     MOVE.W    D1,D3
  438.     MULS    D3,D3
  439. LOOP3:
  440.     SUB.L    D3,D2        ; X^2-Y^2
  441.  
  442.     ASR.L    #8,D2
  443.     ADD.W    D4,D2        ; X1
  444.  
  445.     MOVE.W    D1,D3
  446.     MULS    D0,D3        ; X*2*Y
  447.     ASR.L    #7,D3
  448.  
  449.     ADD.W    D5,D3        ; Y1
  450.  
  451.     MOVE.W    D2,D0
  452.     MOVE.W    D3,D1
  453.  
  454.     MULS    D2,D2
  455.     MULS    D3,D3
  456.     MOVE.L    D2,D6
  457.     ADD.L    D3,D6
  458.  
  459.     CMP.L    #$40000,D6        ; ESKAPISTISK ?
  460.     BHI.S    NOTDRAW
  461.     DBF    D7,LOOP3
  462. NOTDRAW:
  463.  
  464. ;*****  PLOT  *****
  465.  
  466.     MOVE.L    A5,D2
  467.     MOVE.W    D2,D3
  468.     NOT.W    D3
  469.     LSR.W    #3,D2
  470.     ADD.W    A6,D2
  471.  
  472.     ADD.W    D7,D7
  473.     ADD.W    JUMP_TABEL(PC,D7.W),D7
  474.     JMP    JUMP_TABEL(PC,D7.W)
  475.  
  476.     DR.W    PIXEL_00000
  477. JUMP_TABEL:
  478.     DR.W    PIXEL_11111
  479.     DR.W    PIXEL_11110
  480.     DR.W    PIXEL_11101
  481.     DR.W    PIXEL_11100
  482.     DR.W    PIXEL_11011
  483.     DR.W    PIXEL_11010
  484.     DR.W    PIXEL_11001
  485.     DR.W    PIXEL_11000
  486.     DR.W    PIXEL_10111
  487.     DR.W    PIXEL_10110
  488.     DR.W    PIXEL_10101
  489.     DR.W    PIXEL_10100
  490.     DR.W    PIXEL_10011
  491.     DR.W    PIXEL_10010
  492.     DR.W    PIXEL_10001
  493.     DR.W    PIXEL_10000
  494.  
  495.     DR.W    PIXEL_01111
  496.     DR.W    PIXEL_01110
  497.     DR.W    PIXEL_01101
  498.     DR.W    PIXEL_01100
  499.     DR.W    PIXEL_01011
  500.     DR.W    PIXEL_01010
  501.     DR.W    PIXEL_01001
  502.     DR.W    PIXEL_01000
  503.     DR.W    PIXEL_00111
  504.     DR.W    PIXEL_00110
  505.     DR.W    PIXEL_00101
  506.     DR.W    PIXEL_00100
  507.     DR.W    PIXEL_00011
  508.     DR.W    PIXEL_00010
  509.     DR.W    PIXEL_00001
  510.  
  511. DOTSET:    MACRO
  512. PIXEL_\1:
  513.     IF    [%\1>>0]&1
  514.     BSET    D3,(A0,D2.W)
  515.     ENDC
  516.     IF    [%\1>>1]&1
  517.     BSET    D3,(A1,D2.W)
  518.     ENDC
  519.     IF    [%\1>>2]&1
  520.     BSET    D3,(A2,D2.W)
  521.     ENDC
  522.     IF    [%\1>>3]&1
  523.     BSET    D3,(A3,D2.W)
  524.     ENDC
  525.     IF    [%\1>>4]&1
  526.     BSET    D3,(A4,D2.W)
  527.     ENDC
  528.     BRA    MAIN_LOOP
  529.     ENDM
  530.  
  531.     DOTSET    00000
  532.     DOTSET    00001
  533.     DOTSET    00010
  534.     DOTSET    00011
  535.     DOTSET    00100
  536.     DOTSET    00101
  537.     DOTSET    00110
  538.     DOTSET    00111
  539.     DOTSET    01000
  540.     DOTSET    01001
  541.     DOTSET    01010
  542.     DOTSET    01011
  543.     DOTSET    01100
  544.     DOTSET    01101
  545.     DOTSET    01110
  546.     DOTSET    01111
  547.  
  548.     DOTSET    10000
  549.     DOTSET    10001
  550.     DOTSET    10010
  551.     DOTSET    10011
  552.     DOTSET    10100
  553.     DOTSET    10101
  554.     DOTSET    10110
  555.     DOTSET    10111
  556.     DOTSET    11000
  557.     DOTSET    11001
  558.     DOTSET    11010
  559.     DOTSET    11011
  560.     DOTSET    11100
  561.     DOTSET    11101
  562.     DOTSET    11110
  563.     DOTSET    11111
  564.  
  565. ;*** MAIN LOOP ***
  566.  
  567. MAIN_LOOP:
  568.     ADDQ.W    #1,A5
  569.     ADDQ.W    #ZOOM2,CORDX
  570.     CMP.W    #320,A5        ; 320
  571.     BNE.L    LOOP2
  572.     ADDQ.W    #ZOOM2,CORDY
  573.     ADD.W    #40,A6
  574.     CMP.W    #189*40,A6    ; 189
  575.     BNE.L    LOOP1
  576. END:
  577.     RTS
  578.  
  579. CORDX:    DC.W    0
  580. CORDY:    DC.W    0
  581.