home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / !FALCON / LINEOUT / OUT.ZIP / SOURCE.ZIP / GRIDSPEC.SO < prev    next >
Text File  |  2004-01-18  |  53KB  |  2,636 lines

  1. ; Grid idea.. lines..
  2. ;
  3. ; Specialised version: special dsp core does almost everything.
  4. ; The cpu side only send the object, rotation, translation and paints the
  5. ; edges.
  6. ;
  7. ; seems divs optimisation can only be done with dsp, which is a damn
  8. ; fine idea i might add! this could save 50 cycles per line.
  9. ;
  10. ; div now done on dsp, so yes, it's faster
  11. ; also depthculling added which _greatly_ improves performance.
  12. ;
  13.  
  14. ;======= OBJECT TABLE ======================================================
  15.  
  16.     IFND    DEMO_SYSTEM
  17. testmode:    =    0
  18.     move.l    #Grid.table,fxAdr
  19.     INCLUDE    TESTER.S
  20.     TEXT
  21.     INCLUDE    DSP.I
  22.     TEXT
  23.     ENDC    
  24.  
  25. ; Must be first in object!!
  26. Grid.table:
  27.     DC.L    Grid.mainLoop
  28.     DC.L    Grid.init
  29.     DC.L    Grid.initRT
  30.     DC.L    Grid.deinitRT
  31.     DC.L    Grid.setFadeIn
  32.     DC.L    Grid.setFadeOut
  33.     DC.L    Grid.setStill
  34.     DC.L    Grid.setSwing
  35.     DC.L    Grid.setDrill
  36.     DC.L    Grid.setDiagFly1
  37.     DC.L    Grid.setDiagFly2
  38.     DC.L    Grid.setDiagFly3
  39.     DC.L    Grid.setDiagFly4
  40.     DC.L    Grid.takeOff
  41.     DC.L    Grid.setStill1
  42.     DC.L    Grid.setStill2
  43.     DC.L    Grid.setStill3
  44.     DC.L    Grid.setStill4
  45.     DC.L    Grid.setStill5
  46.     DC.L    Grid.setStill6
  47.     DC.L    0
  48.  
  49. ;======= OBJECT EQUATES ====================================================
  50.  
  51. Grid.COLORS:    =    0     1&(testmode^1)
  52. Grid.NUM_GREPS:    =    7
  53. Grid.NUM_REPS:    =    10
  54.  
  55. ;======= INIT SUBROUTINE ===================================================
  56.  
  57. ; OUTPUT:
  58. ; d0.l: 0   = All clear, neg = Error! Not initialized!
  59. Grid.init:
  60.     lea    Grid.pal,a0
  61. ;    move.l    #$FFFFFFFF,-4(a0)
  62.     move.w    #64-1,d7
  63. .loop:    move.w    d7,d0                ; d0.w=%0000000rrrrrrrrr
  64.     lsl.w    #8,d0                ; d0.w=%rrrrrrrrr0000000
  65.     lsl.w    #2,d0
  66.     andi.w    #%1111100000000000,d0        ; d0.w=%rrrrr00000000000
  67.     move.w    d7,d1
  68.     lsl.w    #5,d1                ; d1.w=%00000ggggggggg00
  69.     or.w    d1,d0
  70.     andi.w    #%1111111111100000,d0        ; d0.w=%rrrrrgggggg00000
  71.     move.w    d7,d1
  72.     lsr.w    #1,d1
  73.     or.w    d1,d0
  74.     move.w    d0,(a0)+
  75.     dbf    d7,.loop
  76.  
  77.     move.w    #2048-1,d7
  78. .loop2:    move.w    d0,(a0)+
  79.     dbf    d7,.loop2
  80.  
  81.     lea    Grid.unrollTable,a0
  82.     clr.l    d7
  83. .unroll_loop:
  84.     move.l    d7,d5
  85.     divu.w    #Grid.NUM_REPS,d5
  86.     move.l    d5,d4
  87.     swap    d4
  88.     mulu.w    #12,d4                ; Multiply by looplength.
  89.     neg.l    d4
  90.     move.w    d4,(a0)+            ; Store jumpoffset.
  91.     move.w    d5,(a0)+            ; Store #loops.
  92.     addq.w    #1,d7
  93.     cmpi.w    #320,d7
  94.     blt.s    .unroll_loop
  95.  
  96.     lea    Grid.gUnrollTable,a0
  97.     clr.l    d7
  98. .gunroll_loop:
  99.     move.l    d7,d5
  100.     divu.w    #Grid.NUM_GREPS,d5
  101.     move.l    d5,d4
  102.     swap    d4
  103.     neg.w    d4
  104.     addi.w    #Grid.NUM_GREPS,d4
  105.     mulu.w    #18,d4                ; Multiply by looplength.
  106.     move.w    d4,(a0)+            ; Store jumpoffset.
  107.     move.w    d5,(a0)+            ; Store #loops.
  108.     addq.w    #1,d7
  109.     cmpi.w    #320,d7
  110.     blt.s    .gunroll_loop
  111.  
  112. .success:
  113.     moveq    #0,d0
  114.     rts
  115. .error:    moveq    #-1,d0
  116.     rts
  117.  
  118. ;======= REALTIME INIT SUBROUTINE ==========================================
  119.  
  120. Grid.initRT:
  121.     tst.w    detail
  122.     bne.s    .heavy_perspect
  123.     lea    Grid.p56,a0
  124.     move.l    #(Grid.p56End-Grid.p56)/3,d0
  125.     bsr    Dsp.loadProgram
  126.     bra.s    .end_load_dsp
  127. .heavy_perspect:
  128.     lea    Grid.p56h,a0
  129.     move.l    #(Grid.p56hEnd-Grid.p56h)/3,d0
  130.     bsr    Dsp.loadProgram
  131. .end_load_dsp:
  132.  
  133.     bsr    Grid.setStill
  134.  
  135. ;    lea    Grid.object2,a1
  136.     lea    Grid.city,a1
  137.     bsr    Grid.sendObject
  138.  
  139.     move.w    monitormode,d0
  140.     cmpi.w    #vga60,d0
  141.     beq.s    .vga60
  142.     cmpi.w    #vga100,d0
  143.     beq.s    .vga100
  144.     cmpi.w    #rgb50,d0
  145.     beq.s    .rgb50
  146. ; Unknown monitormode..
  147. .end:    rts
  148. .vga60:    move.l    #vga60_16bit_320_200,resRout
  149.     rts
  150. .vga100:move.l    #vga100_16bit_320_200,resRout
  151.     rts
  152. .rgb50:    move.l    #rgb50_16bit_320_200,resRout
  153.     rts
  154.  
  155. ;======= DEINITIALISATION ROUTINE ==========================================
  156.  
  157. Grid.deinitRT:
  158.     rts
  159.  
  160. ;======= SCREENINIT SUBROUTINE =============================================
  161.  
  162. Grid.initScreen:
  163.     movea.l    scr,a0
  164.     bsr.l    CLEAR_320200TSCR
  165.     rts
  166.  
  167. ;======= MAINLOOP SUBROUTINE ===============================================
  168.  
  169. Grid.mainLoop:
  170.     move.w    $0468.w,old468
  171.  
  172.     IFNE    Grid.COLORS
  173.     move.l    #$FF000000,$FFFF9800.w
  174.     ENDC
  175.  
  176.     move.l    frmcnt,d0
  177.     sub.l    lastframecount,d0
  178.     cmpi.l    #3,d0
  179.     bhs.s    .end_screeninit
  180.     bsr    Grid.initScreen
  181. .end_screeninit:
  182.  
  183.     movea.l    Grid.trajRout,a0
  184.     jsr    (a0)
  185.  
  186. ; parallel with dsp..
  187.     movea.l    Grid.edgeAdrTable,a4
  188.     bsr    Grid.restore
  189.  
  190.     movea.l    Grid.fadeRout,a0
  191.     jsr    (a0)
  192. ; end of parallel shite..
  193.  
  194.     movea.l    Grid.edgeAdrTable,a4
  195.     bsr    Grid.paint
  196.  
  197.     lea    Grid.edgeAdrTable,a4
  198.     move.l    (a4)+,d0
  199.     move.l    (a4)+,d1
  200.     move.l    (a4),-4(a4)
  201.     move.l    d0,(a4)
  202.     move.l    d1,-8(a4)
  203.  
  204.     lea    scr,a0
  205.     move.l    (a0)+,d0
  206.     move.l    (a0)+,d1
  207.     move.l    (a0),-4(a0)
  208.     move.l    d0,(a0)
  209.     move.l    d1,-8(a0)
  210.     movea.l    resRout,a0
  211.     suba.l    a1,a1
  212.     movea.l    d0,a2
  213.     bsr.l    Screen.requestUpdate
  214.     clr.l    resRout
  215.  
  216.     move.w    $0468.w,d0    ;old468,d0
  217. .wait:    cmp.w    $0468.w,d0
  218.     beq.s    .wait
  219.  
  220.     rts
  221.  
  222. ;======= OBJECT SUBROUTINES ================================================
  223.  
  224. Grid.setStill1:
  225.     move.l    #Grid.stayStill1,Grid.trajRout
  226.     rts
  227.  
  228. Grid.setStill2:
  229.     move.l    #Grid.stayStill2,Grid.trajRout
  230.     rts
  231.  
  232. Grid.setStill3:
  233.     move.l    #Grid.stayStill3,Grid.trajRout
  234.     rts
  235.  
  236. Grid.setStill4:
  237.     move.l    #Grid.stayStill4,Grid.trajRout
  238.     rts
  239.  
  240. Grid.setStill5:
  241.     move.l    #Grid.stayStill5,Grid.trajRout
  242.     rts
  243.  
  244. Grid.setStill6:
  245.     move.l    #Grid.stayStill6,Grid.trajRout
  246.     rts
  247.  
  248. Grid.setFadeIn:
  249.     move.w    $04BC.w,Grid.fadeStart
  250.     move.l    #Grid.fadeIn,Grid.fadeRout
  251.     rts
  252.  
  253. Grid.setFadeOut:
  254.     move.w    $04BC.w,Grid.fadeStart
  255.     move.l    #Grid.fadeOut,Grid.fadeRout
  256.     rts
  257.  
  258. Grid.setStill:
  259.     move.l    #Grid.stayPut,Grid.trajRout
  260.     rts
  261.  
  262. Grid.setSwing:
  263.     move.l    #Grid.swing,Grid.trajRout
  264.     move.l    $04BA.w,Grid.trajStart
  265.     rts
  266.  
  267. Grid.setDrill:
  268.     move.l    #Grid.drill,Grid.trajRout
  269.     move.l    $04BA.w,Grid.trajStart
  270.     rts
  271.  
  272. Grid.setDiagFly1:
  273.     move.l    #Grid.diagFlyBy1,Grid.trajRout
  274.     move.l    $04BA.w,Grid.trajStart
  275.     rts
  276.  
  277. Grid.setDiagFly2:
  278.     move.l    #Grid.diagFlyBy2,Grid.trajRout
  279.     move.l    $04BA.w,Grid.trajStart
  280.     clr.w    Grid.launched
  281.     rts
  282.  
  283. Grid.setDiagFly3:
  284.     move.l    #Grid.diagFlyBy3,Grid.trajRout
  285.     move.l    $04BA.w,Grid.trajStart
  286.     clr.w    Grid.launched
  287.     rts
  288.  
  289. Grid.setDiagFly4:
  290.     move.l    #Grid.diagFlyBy4,Grid.trajRout
  291.     move.l    $04BA.w,Grid.trajStart
  292.     rts
  293.  
  294. Grid.takeOff:
  295.     move.l    $04BA.w,Grid.takeOffStart
  296.     st    Grid.launched
  297.     rts
  298.  
  299. Grid.stayStill1:
  300.     move.l    #600,d0
  301.     move.l    #700,d1
  302.     move.l    #900,d2
  303.     bsr    Grid.translate
  304.  
  305.     move.l    #200,d0
  306.     move.l    #-200,d1
  307.     move.l    #100,d2
  308.     bsr    Grid.rotate
  309.     rts
  310.  
  311. Grid.stayStill2:
  312.     clr.l    d0
  313.     move.l    #200,d1
  314.     move.w    #$7FFF,d2
  315.     asr.w    #4,d2
  316. ;    addi.w    #$300,d2
  317.     ext.l    d2
  318.     move.l    #1100,d2
  319.     bsr    Grid.translate
  320.  
  321.     move.l    #800,d0
  322.     move.l    #1200,d1
  323.     move.l    #700,d2
  324.     bsr    Grid.rotate
  325.     rts
  326.  
  327. Grid.stayStill3:
  328.     clr.l    d0
  329.     move.l    #500,d1
  330.     move.w    #$7FFF,d2
  331.     asr.w    #4,d2
  332.     subi.w    #$400,d2
  333.     ext.l    d2
  334.     bsr    Grid.translate
  335.  
  336.     move.l    #200,d0
  337.     move.l    #300,d1
  338.     move.l    #300,d2
  339.     bsr    Grid.rotate
  340.     rts
  341.  
  342. Grid.stayStill4:
  343.     clr.l    d0
  344.     move.l    #500,d1
  345.     move.w    #$7FFF,d2
  346.     asr.w    #4,d2
  347.     subi.w    #$300,d2
  348.     ext.l    d2
  349.     bsr    Grid.translate
  350.  
  351.     clr.l    d0
  352.     move.l    #300,d1
  353.     move.l    #200,d2
  354.     bsr    Grid.rotate
  355.     rts
  356.  
  357. Grid.stayStill5:
  358.     move.l    #-500,d0
  359.     move.l    #200,d1
  360.     move.l    #250,d2
  361.     bsr    Grid.translate
  362.  
  363.     move.l    #-300,d0
  364.     move.l    #300,d1
  365.     move.l    #200,d2
  366.     bsr    Grid.rotate
  367.     rts
  368.  
  369. Grid.stayStill6:
  370.     move.l    #500,d0
  371.     move.l    #200,d1
  372.     move.l    #250,d2
  373.     bsr    Grid.translate
  374.  
  375.     move.l    #-300,d0
  376.     move.l    #-300,d1
  377.     move.l    #-200,d2
  378.     bsr    Grid.rotate
  379.     rts
  380.  
  381. Grid.stayPut:
  382.     clr.l    d0
  383.     move.l    #300,d1
  384.     move.w    #$7FFF,d2
  385.     asr.w    #4,d2
  386.     addi.w    #$300,d2
  387.     ext.l    d2
  388.     bsr    Grid.translate
  389.  
  390.     clr.l    d0
  391.     clr.l    d1
  392.     clr.l    d2
  393.     bsr    Grid.rotate
  394.     rts
  395.  
  396. Grid.swing:
  397.     move.l    $04BA.w,d2
  398.     sub.l    Grid.trajStart,d2
  399.     move.w    d2,d7
  400.     clr.l    d6
  401.     clr.l    d0
  402.     clr.l    d1
  403.     mulu.w    #3,d2
  404.     lsr.l    d2
  405.     cmpi.l    #sintbllen/2,d2
  406.     blt.s    .oki
  407.     move.l    d2,d6
  408.     subi.l    #sintbllen/2,d6
  409.     move.l    #sintbllen/2,d2
  410.     move.w    d6,d5
  411.     cmpi.w    #512,d5
  412.     blt.s    .oki2
  413.     move.w    #512,d5
  414. .oki2:    mulu.w    #5,d6
  415.     lsr.l    #2,d6
  416.     Do_SinModulo    d6
  417.     Get_Sin    sine_tbl,d6,d6
  418.     muls.w    d5,d6
  419.     asr.l    #2,d6
  420.     swap    d6
  421.     ext.l    d6
  422. .oki:    Do_SinModulo    d2
  423.     Get_Sin    sine_tbl+2,d2,d2
  424.  
  425. ;    asr.w    #4,d2
  426. ;    andi.w    #$1FF,d2
  427. ;    addi.w    #$E0,d2
  428.  
  429. ;    asr.w    #7,d2
  430.     asr.w    #4,d2
  431.  
  432.     addi.w    #$300,d2
  433.     ext.l    d2
  434.  
  435.     move.l    #300,d1
  436.     bsr    Grid.translate
  437.  
  438.     move.w    d7,d1
  439.     move.w    d7,d2
  440.     mulu.w    #3,d1
  441.     mulu.w    #7,d2
  442.     lsr.l    d1
  443.     lsr.l    #2,d2
  444.     Do_SinModulo    d2
  445.     Get_Sin    sine_tbl,d2,d2
  446.     asr.w    #8,d2
  447.     clr.l    d0
  448.     move.l    d6,d1
  449. ;    clr.l    d2
  450.     bsr    Grid.rotate
  451.     rts
  452.  
  453. Grid.drill:
  454.     clr.l    d0
  455.     clr.l    d1
  456.     move.l    $04BA.w,d2
  457.     sub.l    Grid.trajStart,d2
  458.     move.w    d2,d7
  459.     mulu.w    #3,d2
  460.     lsr.l    d2
  461.     Do_SinModulo    d2
  462.     Get_Sin    sine_tbl+2,d2,d2
  463.  
  464. ;    asr.w    #4,d2
  465. ;    andi.w    #$1FF,d2
  466. ;    addi.w    #$E0,d2
  467.  
  468.     asr.w    #6,d2
  469.  
  470.     addi.w    #$300,d2
  471.     ext.l    d2
  472.  
  473.     clr.l    d1
  474.  
  475.     bsr    Grid.translate
  476.  
  477.     move.w    d7,d0
  478.     move.w    d0,d1
  479.     move.w    d0,d2
  480.     mulu.w    #3,d1
  481.     mulu.w    #5,d2
  482.     lsr.l    d1
  483.     lsr.l    #1,d2
  484.     move.l    #sintbllen/4,d0
  485.     move.l    d2,d1
  486.     clr.l    d2
  487.     bsr    Grid.rotate
  488.     rts
  489.  
  490. Grid.diagFlyBy1:
  491.     move.l    $04BA.w,d2
  492.     sub.l    Grid.trajStart,d2
  493.     lsr.l    d2
  494.     move.w    d2,d7
  495.     clr.l    d0
  496.     clr.l    d1
  497.     mulu.w    #3,d2
  498.     lsr.l    d2
  499.     Do_SinModulo    d2
  500.     Get_Sin    sine_tbl+2,d2,d2
  501.     asr.w    #4,d2
  502.     addi.w    #$500,d2
  503.     ext.l    d2
  504.     move.l    #400,d1
  505.     bsr    Grid.translate
  506.  
  507.     clr.l    d0
  508.     move.l    d7,d1
  509.     add.l    d1,d1
  510.     clr.l    d2
  511.     bsr    Grid.rotate
  512.     rts
  513.  
  514. Grid.diagFlyBy2:
  515.     move.l    $04BA.w,d2
  516.     sub.l    Grid.trajStart,d2
  517.     lsr.l    d2
  518.     move.w    d2,d7
  519.     clr.l    d0
  520.     clr.l    d1
  521.     clr.l    d2
  522.     move.l    #400,d1
  523.     move.l    d7,d3
  524.     mulu.w    #7,d3
  525.     lsr.l    #3,d3
  526.     Do_SinModulo    d3
  527.     Get_Sin    sine_tbl+2,d3,d3
  528.     ext.l    d3
  529.     asr.l    #7,d3
  530.     add.l    d3,d1
  531.     tst.w    Grid.launched
  532.     beq.s    .ok
  533.     move.l    $04BA.w,d3
  534.     sub.l    Grid.takeOffStart,d3
  535.     mulu.w    d3,d3
  536.     lsr.l    #7,d3
  537.     add.l    d3,d1
  538. .ok:    bsr    Grid.translate
  539.  
  540.     clr.l    d0
  541.     move.l    d7,d1
  542.     add.l    d1,d1
  543.     neg.l    d1
  544.     clr.l    d2
  545.     bsr    Grid.rotate
  546.     rts
  547.  
  548. Grid.diagFlyBy3:
  549.     move.l    $04BA.w,d2
  550.     sub.l    Grid.trajStart,d2
  551.     lsr.l    d2
  552.     move.w    d2,d7
  553.     move.l    #$300,d2
  554.     move.l    #500,d1
  555.     move.l    d7,d3
  556.     mulu.w    #7,d3
  557.     lsr.l    #3,d3
  558.     Do_SinModulo    d3
  559.     Get_Sin    sine_tbl+2,d3,d3
  560.     ext.l    d3
  561.     asr.l    #7,d3
  562. ;    add.l    d3,d1
  563.     tst.w    Grid.launched
  564.     beq.s    .ok
  565.     move.l    $04BA.w,d3
  566.     sub.l    Grid.takeOffStart,d3
  567.     mulu.w    d3,d3
  568.     lsr.l    #7,d3
  569.     add.l    d3,d1
  570. .ok:    clr.l    d0
  571.     bsr    Grid.translate
  572.  
  573.     move.l    d7,d0
  574.     add.l    d0,d0
  575.     Do_SinModulo    d0
  576.     Get_Sin    sine_tbl,d0,d0
  577.     addi.w    #$8000,d0
  578.     mulu.w    #sintbllen*3/16,d0
  579.     swap    d0
  580.     ext.l    d0
  581.     addi.w    #sintbllen/16,d0
  582.     move.l    d7,d1
  583.     add.l    d1,d1
  584.     clr.l    d2
  585.     bsr    Grid.rotate
  586.     rts
  587.  
  588. Grid.diagFlyBy4:
  589.     move.l    $04BA.w,d2
  590.     sub.l    Grid.trajStart,d2
  591.     move.l    #-100,d0
  592.     mulu.w    #3,d2
  593.     lsr.l    d2
  594. .oki:    Do_SinModulo    d2
  595.     Get_Sin    sine_tbl+2,d2,d2
  596.     asr.w    #5,d2
  597.     addi.w    #$100,d2
  598.     ext.l    d2
  599.     move.l    #300,d1
  600.     bsr    Grid.translate
  601.  
  602.     clr.l    d0
  603.     move.l    #400,d1
  604.     clr.l    d2
  605.     bsr    Grid.rotate
  606.     rts
  607.  
  608. Grid.fadeIn:
  609.     move.w    $04BC.w,d0
  610.     sub.w    Grid.fadeStart,d0
  611.     cmpi.w    #256,d0
  612.     blt.s    .ok
  613.     move.l    #rts,Grid.fadeRout
  614. .ok:    lea    Grid.pal,a1
  615.     lea    Grid.pal2,a0
  616.     moveq    #64-1,d7
  617. .loop:    move.w    (a1)+,d1
  618.     move.w    d1,d2
  619.     move.w    d1,d3
  620.     andi.w    #$F800,d1
  621.     andi.w    #$07E0,d2
  622.     andi.w    #$001F,d3
  623.     mulu.w    d0,d1
  624.     mulu.w    d0,d2
  625.     mulu.w    d0,d3
  626.     lsr.l    #8,d1
  627.     lsr.l    #8,d2
  628.     lsr.l    #8,d3
  629.     andi.w    #$F800,d1
  630.     andi.w    #$07E0,d2
  631.     or.w    d2,d1
  632.     or.w    d3,d1
  633.     move.w    d1,(a0)+
  634.     dbf    d7,.loop
  635.     rts
  636.  
  637. Grid.fadeOut:
  638.     move.w    $04BC.w,d0
  639.     sub.w    Grid.fadeStart,d0
  640.     subi.w    #255,d0
  641.     ble.s    .ok
  642.     clr.w    d0
  643.     move.l    #rts,Grid.fadeRout
  644. .ok:    neg.w    d0
  645.     lea    Grid.pal,a1
  646.     lea    Grid.pal2,a0
  647.     moveq    #64-1,d7
  648. .loop:    move.w    (a1)+,d1
  649.     move.w    d1,d2
  650.     move.w    d1,d3
  651.     andi.w    #$F800,d1
  652.     andi.w    #$07E0,d2
  653.     andi.w    #$001F,d3
  654.     mulu.w    d0,d1
  655.     mulu.w    d0,d2
  656.     mulu.w    d0,d3
  657.     lsr.l    #8,d1
  658.     lsr.l    #8,d2
  659.     lsr.l    #8,d3
  660.     andi.w    #$F800,d1
  661.     andi.w    #$07E0,d2
  662.     or.w    d2,d1
  663.     or.w    d3,d1
  664.     move.w    d1,(a0)+
  665.     dbf    d7,.loop
  666.     rts
  667.  
  668. ; INPUT:
  669. ; a1: object
  670. Grid.sendObject:
  671. ; Send vertices..
  672.     clr.l    d7
  673.     clr.l    d0
  674.     move.w    (a1)+,d7
  675.     sendLongToDsp    d7
  676.     mulu.w    #3,d7
  677.     subq.w    #1,d7
  678. .vloop:    move.w    (a1)+,d0
  679.     ext.l    d0
  680.     sendLongToDsp    d0
  681.     dbf    d7,.vloop
  682.  
  683. ; Send edges..
  684.     clr.l    d0
  685.     clr.l    d7
  686.     move.w    (a1)+,d7
  687.     sendLongToDsp    d7
  688.     add.l    d7,d7
  689.     subq.w    #1,d7
  690. .lloop:    move.w    (a1)+,d0
  691.     sendLongToDsp    d0
  692.     dbf    d7,.lloop
  693.     rts
  694.  
  695. ; INPUT:
  696. ; d0.l=x
  697. ; d1.l=y
  698. ; d2.l=z
  699. Grid.translate:
  700.     sendLongToDsp    d0
  701.     sendLongToDsp    d1
  702.     sendLongToDsp    d2
  703.     rts
  704.  
  705. ; INPUT:
  706. ; d0.l=xangle
  707. ; d1.l=yangle
  708. ; d2.l=zangle
  709. Grid.rotate:
  710.     move.w    #sintbllen-1,d3
  711.     and.w    d3,d0
  712.     and.w    d3,d1
  713.     and.w    d3,d2
  714.     lea    sine_tbl,a2
  715.     Get_SinCos    a2,d2,d4,d5
  716.     Get_SinCos    a2,d1,d2,d3
  717.     Get_SinCos    a2,d0,d0,d1
  718.     lsl.l    #8,d0
  719.     lsl.l    #8,d1
  720.     lsl.l    #8,d2
  721.     lsl.l    #8,d3
  722.     lsl.l    #8,d4
  723.     lsl.l    #8,d5
  724.     sendLongToDsp    d0
  725.     sendLongToDsp    d1
  726.     sendLongToDsp    d2
  727.     sendLongToDsp    d3
  728.     sendLongToDsp    d4
  729.     sendLongToDsp    d5
  730.     rts
  731.  
  732. ; a4: edgetable to save to
  733. Grid.paint:
  734.     move.l    scr,Grid.scr
  735.  
  736.     IFNE    Grid.COLORS
  737.     move.l    #$FFFF0000,$FFFF9800.w
  738.     ENDC
  739.  
  740.     lea    Grid.pal2,a1
  741.     lea    $FFFFA206.w,a5
  742.     lea    Grid.gUnrollTable,a6
  743.     receiveWordFromDsp    d7
  744.  
  745.     IFNE    Grid.COLORS
  746.     move.l    #$00FF0000,$FFFF9800.w
  747.     ENDC
  748.  
  749.     tst.w    d7
  750.     beq.w    .end
  751.     subq.w    #1,d7
  752.     move.w    d7,(a4)+
  753.     clr.l    d0
  754.     clr.l    d2
  755.  
  756. .loop:    move.w    d7,-(sp)
  757.  
  758.     move.w    (a5),d0
  759. ;    cmpi.w    #320,d0
  760. ;    bcs.s    .x1ok
  761. ;    illegal
  762. .x1ok:    move.w    (a5),d1
  763. ;    cmpi.w    #200,d1
  764. ;    bcs.s    .y1ok
  765. ;    illegal
  766. .y1ok:    move.w    (a5),d2
  767. ;    cmpi.w    #320,d2
  768. ;    bcs.s    .x2ok
  769. ;    illegal
  770. .x2ok:    move.w    (a5),d3
  771. ;    cmpi.w    #200,d3
  772. ;    bcs.s    .y2ok
  773. ;    illegal
  774. .y2ok:    clr.l    d6
  775.     move.w    (a5),d6
  776.     move.w    (a5),d7
  777.     movem.w    d0-d3,(a4)
  778.     addq    #8,a4
  779.  
  780.     movea.l    Grid.scr(pc),a0
  781.     move.l    #320*2,d5
  782.  
  783. ; d0.w=x0, d1.w=y0, d2.w=x1, d3.w=y1, d6.w=g0 d7.w=g1, a0: screen, a1: pal
  784.     ext.l    d7
  785.  
  786. ; Calculate |dx|, |dy| and calculate x step, y step.
  787.     moveq    #2,d4
  788.     sub.w    d0,d2            ; d2.w=dx
  789.     bpl.s    .dx_positive
  790.     neg.l    d4
  791.     neg.w    d2
  792. .dx_positive:
  793.     movea.l    d4,a2            ; a2= x step
  794.     move.l    d5,d4
  795.     sub.w    d1,d3            ; d3.w=dy
  796.     bpl.s    .dy_positive
  797.     neg.l    d4
  798.     neg.w    d3
  799. .dy_positive:
  800.     movea.l    d4,a3            ; a3= y step
  801. ; d2.w = |dx|, d3.w = |dy|
  802.  
  803. ; Calculate the startaddress on screen.
  804.     add.l    d0,d0
  805.     adda.l    d0,a0
  806.     mulu.w    d5,d1
  807.     adda.l    d1,a0
  808.  
  809. ; Branch to appropriate routine, depending on |dx| < |dy|.
  810.     cmp.w    d2,d3
  811.     blt.s    .dy
  812.     exg.l    d2,d3
  813.     exg.l    a2,a3
  814.  
  815. .dy:    move.l    d7,d1
  816.     asr.l    #8,d1
  817.     move.w    d2,d0
  818.     movem.w    (a6,d2.l*4),d4/d5
  819.     jmp    .blokloop(pc,d4.l)
  820.  
  821. .blokloop:
  822.     REPT    Grid.NUM_GREPS
  823.     move.w    (a1,d6.l*2),(a0)
  824.     add.b    d7,d4
  825.     addx.l    d1,d6
  826.     sub.w    d3,d0
  827.     bgt.s    *+6
  828.     add.w    d2,d0
  829.     adda.l    a3,a0
  830.     adda.l    a2,a0
  831.     ENDR
  832.     dbf    d5,.blokloop
  833.  
  834.     move.w    (sp)+,d7
  835.     dbf    d7,.loop
  836.  
  837. .end:    
  838.     IFNE    Grid.COLORS
  839.     clr.l    $FFFF9800.w
  840.     ENDC
  841.  
  842.     rts
  843.  
  844. Grid.scr:
  845.     DC.L    0
  846.  
  847. ; a4: edgetable to restore..
  848. Grid.restore:
  849.     lea    Grid.jump,a1
  850.     lea    Grid.unrollTable,a5
  851.     move.l    #320*2,d5
  852.     movea.l    scr,a6
  853.     move.w    (a4)+,d7
  854.     bpl.s    Grid.restoreLoop
  855.     rts
  856.     
  857. Grid.restoreLoop:
  858.     movem.w    (a4)+,d0-d3
  859.     movea.l    a6,a0
  860. ; d0.l=x0, d1.l=y0, d2.l=x1, d3.l=y1 a0: screen
  861. ; Calculate |dx|, |dy| and calculate x step, y step.
  862.     moveq    #2,d4
  863.     sub.l    d0,d2            ; d2.l=dx
  864.     bpl.s    .dx_positive
  865.     neg.l    d4
  866.     neg.l    d2
  867. .dx_positive:
  868.     movea.l    d4,a2            ; a2= x step
  869.     move.l    d5,d4
  870.     sub.l    d1,d3            ; d3.l=dy
  871.     bpl.s    .dy_positive
  872.     neg.l    d4
  873.     neg.l    d3
  874. .dy_positive:
  875.     movea.l    d4,a3            ; a3= y step
  876. ; d2.w = |dx|, d3.w = |dy|
  877.  
  878. ; Calculate the startaddress on screen.
  879.     add.l    d0,d0
  880.     mulu.w    d5,d1
  881.     add.l    d0,d1
  882.     adda.l    d1,a0
  883.  
  884.     clr.w    d1
  885.     cmp.l    d2,d3
  886.     bge.s    .dx
  887.     exg.l    d2,d3
  888.     exg.l    a2,a3
  889. .dx:    move.w    d3,d0
  890.     movem.w    (a5,d3.l*4),d4/d6
  891.     jmp    (a1,d4.l)
  892.  
  893. Grid.paintBlackLoop:
  894.     REPT    Grid.NUM_REPS
  895.     move.w    d1,(a0)
  896.     sub.w    d2,d0
  897.     bgt.s    *+6
  898.     add.w    d3,d0
  899.     adda.l    a2,a0
  900.     adda.l    a3,a0
  901.     ENDR
  902. Grid.jump:
  903.     dbf    d6,Grid.paintBlackLoop
  904.  
  905.     dbf    d7,Grid.restoreLoop
  906.     rts
  907.  
  908. ;======= OBJECT DATA =======================================================
  909.  
  910.     DATA
  911.  
  912. Grid.textureTable:
  913.     DC.L    0
  914.  
  915. Grid.WI:    =    256
  916.  
  917.     IFNE    0
  918. Grid.object2:
  919.     DC.W    6*6*6                    ; evil? very!
  920.     DC.W    -5*Grid.WI,-5*Grid.WI,-5*Grid.WI
  921.     DC.W    -5*Grid.WI,-5*Grid.WI,-3*Grid.WI
  922.     DC.W    -5*Grid.WI,-5*Grid.WI,-1*Grid.WI
  923.     DC.W    -5*Grid.WI,-5*Grid.WI,+1*Grid.WI
  924.     DC.W    -5*Grid.WI,-5*Grid.WI,+3*Grid.WI
  925.     DC.W    -5*Grid.WI,-5*Grid.WI,+5*Grid.WI
  926.     DC.W    -5*Grid.WI,-3*Grid.WI,-5*Grid.WI
  927.     DC.W    -5*Grid.WI,-3*Grid.WI,-3*Grid.WI
  928.     DC.W    -5*Grid.WI,-3*Grid.WI,-1*Grid.WI
  929.     DC.W    -5*Grid.WI,-3*Grid.WI,+1*Grid.WI
  930.     DC.W    -5*Grid.WI,-3*Grid.WI,+3*Grid.WI
  931.     DC.W    -5*Grid.WI,-3*Grid.WI,+5*Grid.WI
  932.     DC.W    -5*Grid.WI,-1*Grid.WI,-5*Grid.WI
  933.     DC.W    -5*Grid.WI,-1*Grid.WI,-3*Grid.WI
  934.     DC.W    -5*Grid.WI,-1*Grid.WI,-1*Grid.WI
  935.     DC.W    -5*Grid.WI,-1*Grid.WI,+1*Grid.WI
  936.     DC.W    -5*Grid.WI,-1*Grid.WI,+3*Grid.WI
  937.     DC.W    -5*Grid.WI,-1*Grid.WI,+5*Grid.WI
  938.     DC.W    -5*Grid.WI,+1*Grid.WI,-5*Grid.WI
  939.     DC.W    -5*Grid.WI,+1*Grid.WI,-3*Grid.WI
  940.     DC.W    -5*Grid.WI,+1*Grid.WI,-1*Grid.WI
  941.     DC.W    -5*Grid.WI,+1*Grid.WI,+1*Grid.WI
  942.     DC.W    -5*Grid.WI,+1*Grid.WI,+3*Grid.WI
  943.     DC.W    -5*Grid.WI,+1*Grid.WI,+5*Grid.WI
  944.     DC.W    -5*Grid.WI,+3*Grid.WI,-5*Grid.WI
  945.     DC.W    -5*Grid.WI,+3*Grid.WI,-3*Grid.WI
  946.     DC.W    -5*Grid.WI,+3*Grid.WI,-1*Grid.WI
  947.     DC.W    -5*Grid.WI,+3*Grid.WI,+1*Grid.WI
  948.     DC.W    -5*Grid.WI,+3*Grid.WI,+3*Grid.WI
  949.     DC.W    -5*Grid.WI,+3*Grid.WI,+5*Grid.WI
  950.     DC.W    -5*Grid.WI,+5*Grid.WI,-5*Grid.WI
  951.     DC.W    -5*Grid.WI,+5*Grid.WI,-3*Grid.WI
  952.     DC.W    -5*Grid.WI,+5*Grid.WI,-1*Grid.WI
  953.     DC.W    -5*Grid.WI,+5*Grid.WI,+1*Grid.WI
  954.     DC.W    -5*Grid.WI,+5*Grid.WI,+3*Grid.WI
  955.     DC.W    -5*Grid.WI,+5*Grid.WI,+5*Grid.WI
  956.     DC.W    -3*Grid.WI,-5*Grid.WI,-5*Grid.WI
  957.     DC.W    -3*Grid.WI,-5*Grid.WI,-3*Grid.WI
  958.     DC.W    -3*Grid.WI,-5*Grid.WI,-1*Grid.WI
  959.     DC.W    -3*Grid.WI,-5*Grid.WI,+1*Grid.WI
  960.     DC.W    -3*Grid.WI,-5*Grid.WI,+3*Grid.WI
  961.     DC.W    -3*Grid.WI,-5*Grid.WI,+5*Grid.WI
  962.     DC.W    -3*Grid.WI,-3*Grid.WI,-5*Grid.WI
  963.     DC.W    -3*Grid.WI,-3*Grid.WI,-3*Grid.WI
  964.     DC.W    -3*Grid.WI,-3*Grid.WI,-1*Grid.WI
  965.     DC.W    -3*Grid.WI,-3*Grid.WI,+1*Grid.WI
  966.     DC.W    -3*Grid.WI,-3*Grid.WI,+3*Grid.WI
  967.     DC.W    -3*Grid.WI,-3*Grid.WI,+5*Grid.WI
  968.     DC.W    -3*Grid.WI,-1*Grid.WI,-5*Grid.WI
  969.     DC.W    -3*Grid.WI,-1*Grid.WI,-3*Grid.WI
  970.     DC.W    -3*Grid.WI,-1*Grid.WI,-1*Grid.WI
  971.     DC.W    -3*Grid.WI,-1*Grid.WI,+1*Grid.WI
  972.     DC.W    -3*Grid.WI,-1*Grid.WI,+3*Grid.WI
  973.     DC.W    -3*Grid.WI,-1*Grid.WI,+5*Grid.WI
  974.     DC.W    -3*Grid.WI,+1*Grid.WI,-5*Grid.WI
  975.     DC.W    -3*Grid.WI,+1*Grid.WI,-3*Grid.WI
  976.     DC.W    -3*Grid.WI,+1*Grid.WI,-1*Grid.WI
  977.     DC.W    -3*Grid.WI,+1*Grid.WI,+1*Grid.WI
  978.     DC.W    -3*Grid.WI,+1*Grid.WI,+3*Grid.WI
  979.     DC.W    -3*Grid.WI,+1*Grid.WI,+5*Grid.WI
  980.     DC.W    -3*Grid.WI,+3*Grid.WI,-5*Grid.WI
  981.     DC.W    -3*Grid.WI,+3*Grid.WI,-3*Grid.WI
  982.     DC.W    -3*Grid.WI,+3*Grid.WI,-1*Grid.WI
  983.     DC.W    -3*Grid.WI,+3*Grid.WI,+1*Grid.WI
  984.     DC.W    -3*Grid.WI,+3*Grid.WI,+3*Grid.WI
  985.     DC.W    -3*Grid.WI,+3*Grid.WI,+5*Grid.WI
  986.     DC.W    -3*Grid.WI,+5*Grid.WI,-5*Grid.WI
  987.     DC.W    -3*Grid.WI,+5*Grid.WI,-3*Grid.WI
  988.     DC.W    -3*Grid.WI,+5*Grid.WI,-1*Grid.WI
  989.     DC.W    -3*Grid.WI,+5*Grid.WI,+1*Grid.WI
  990.     DC.W    -3*Grid.WI,+5*Grid.WI,+3*Grid.WI
  991.     DC.W    -3*Grid.WI,+5*Grid.WI,+5*Grid.WI
  992.     DC.W    -1*Grid.WI,-5*Grid.WI,-5*Grid.WI
  993.     DC.W    -1*Grid.WI,-5*Grid.WI,-3*Grid.WI
  994.     DC.W    -1*Grid.WI,-5*Grid.WI,-1*Grid.WI
  995.     DC.W    -1*Grid.WI,-5*Grid.WI,+1*Grid.WI
  996.     DC.W    -1*Grid.WI,-5*Grid.WI,+3*Grid.WI
  997.     DC.W    -1*Grid.WI,-5*Grid.WI,+5*Grid.WI
  998.     DC.W    -1*Grid.WI,-3*Grid.WI,-5*Grid.WI
  999.     DC.W    -1*Grid.WI,-3*Grid.WI,-3*Grid.WI
  1000.     DC.W    -1*Grid.WI,-3*Grid.WI,-1*Grid.WI
  1001.     DC.W    -1*Grid.WI,-3*Grid.WI,+1*Grid.WI
  1002.     DC.W    -1*Grid.WI,-3*Grid.WI,+3*Grid.WI
  1003.     DC.W    -1*Grid.WI,-3*Grid.WI,+5*Grid.WI
  1004.     DC.W    -1*Grid.WI,-1*Grid.WI,-5*Grid.WI
  1005.     DC.W    -1*Grid.WI,-1*Grid.WI,-3*Grid.WI
  1006.     DC.W    -1*Grid.WI,-1*Grid.WI,-1*Grid.WI
  1007.     DC.W    -1*Grid.WI,-1*Grid.WI,+1*Grid.WI
  1008.     DC.W    -1*Grid.WI,-1*Grid.WI,+3*Grid.WI
  1009.     DC.W    -1*Grid.WI,-1*Grid.WI,+5*Grid.WI
  1010.     DC.W    -1*Grid.WI,+1*Grid.WI,-5*Grid.WI
  1011.     DC.W    -1*Grid.WI,+1*Grid.WI,-3*Grid.WI
  1012.     DC.W    -1*Grid.WI,+1*Grid.WI,-1*Grid.WI
  1013.     DC.W    -1*Grid.WI,+1*Grid.WI,+1*Grid.WI
  1014.     DC.W    -1*Grid.WI,+1*Grid.WI,+3*Grid.WI
  1015.     DC.W    -1*Grid.WI,+1*Grid.WI,+5*Grid.WI
  1016.     DC.W    -1*Grid.WI,+3*Grid.WI,-5*Grid.WI
  1017.     DC.W    -1*Grid.WI,+3*Grid.WI,-3*Grid.WI
  1018.     DC.W    -1*Grid.WI,+3*Grid.WI,-1*Grid.WI
  1019.     DC.W    -1*Grid.WI,+3*Grid.WI,+1*Grid.WI
  1020.     DC.W    -1*Grid.WI,+3*Grid.WI,+3*Grid.WI
  1021.     DC.W    -1*Grid.WI,+3*Grid.WI,+5*Grid.WI
  1022.     DC.W    -1*Grid.WI,+5*Grid.WI,-5*Grid.WI
  1023.     DC.W    -1*Grid.WI,+5*Grid.WI,-3*Grid.WI
  1024.     DC.W    -1*Grid.WI,+5*Grid.WI,-1*Grid.WI
  1025.     DC.W    -1*Grid.WI,+5*Grid.WI,+1*Grid.WI
  1026.     DC.W    -1*Grid.WI,+5*Grid.WI,+3*Grid.WI
  1027.     DC.W    -1*Grid.WI,+5*Grid.WI,+5*Grid.WI
  1028.     DC.W    +1*Grid.WI,-5*Grid.WI,-5*Grid.WI
  1029.     DC.W    +1*Grid.WI,-5*Grid.WI,-3*Grid.WI
  1030.     DC.W    +1*Grid.WI,-5*Grid.WI,-1*Grid.WI
  1031.     DC.W    +1*Grid.WI,-5*Grid.WI,+1*Grid.WI
  1032.     DC.W    +1*Grid.WI,-5*Grid.WI,+3*Grid.WI
  1033.     DC.W    +1*Grid.WI,-5*Grid.WI,+5*Grid.WI
  1034.     DC.W    +1*Grid.WI,-3*Grid.WI,-5*Grid.WI
  1035.     DC.W    +1*Grid.WI,-3*Grid.WI,-3*Grid.WI
  1036.     DC.W    +1*Grid.WI,-3*Grid.WI,-1*Grid.WI
  1037.     DC.W    +1*Grid.WI,-3*Grid.WI,+1*Grid.WI
  1038.     DC.W    +1*Grid.WI,-3*Grid.WI,+3*Grid.WI
  1039.     DC.W    +1*Grid.WI,-3*Grid.WI,+5*Grid.WI
  1040.     DC.W    +1*Grid.WI,-1*Grid.WI,-5*Grid.WI
  1041.     DC.W    +1*Grid.WI,-1*Grid.WI,-3*Grid.WI
  1042.     DC.W    +1*Grid.WI,-1*Grid.WI,-1*Grid.WI
  1043.     DC.W    +1*Grid.WI,-1*Grid.WI,+1*Grid.WI
  1044.     DC.W    +1*Grid.WI,-1*Grid.WI,+3*Grid.WI
  1045.     DC.W    +1*Grid.WI,-1*Grid.WI,+5*Grid.WI
  1046.     DC.W    +1*Grid.WI,+1*Grid.WI,-5*Grid.WI
  1047.     DC.W    +1*Grid.WI,+1*Grid.WI,-3*Grid.WI
  1048.     DC.W    +1*Grid.WI,+1*Grid.WI,-1*Grid.WI
  1049.     DC.W    +1*Grid.WI,+1*Grid.WI,+1*Grid.WI
  1050.     DC.W    +1*Grid.WI,+1*Grid.WI,+3*Grid.WI
  1051.     DC.W    +1*Grid.WI,+1*Grid.WI,+5*Grid.WI
  1052.     DC.W    +1*Grid.WI,+3*Grid.WI,-5*Grid.WI
  1053.     DC.W    +1*Grid.WI,+3*Grid.WI,-3*Grid.WI
  1054.     DC.W    +1*Grid.WI,+3*Grid.WI,-1*Grid.WI
  1055.     DC.W    +1*Grid.WI,+3*Grid.WI,+1*Grid.WI
  1056.     DC.W    +1*Grid.WI,+3*Grid.WI,+3*Grid.WI
  1057.     DC.W    +1*Grid.WI,+3*Grid.WI,+5*Grid.WI
  1058.     DC.W    +1*Grid.WI,+5*Grid.WI,-5*Grid.WI
  1059.     DC.W    +1*Grid.WI,+5*Grid.WI,-3*Grid.WI
  1060.     DC.W    +1*Grid.WI,+5*Grid.WI,-1*Grid.WI
  1061.     DC.W    +1*Grid.WI,+5*Grid.WI,+1*Grid.WI
  1062.     DC.W    +1*Grid.WI,+5*Grid.WI,+3*Grid.WI
  1063.     DC.W    +1*Grid.WI,+5*Grid.WI,+5*Grid.WI
  1064.     DC.W    +3*Grid.WI,-5*Grid.WI,-5*Grid.WI
  1065.     DC.W    +3*Grid.WI,-5*Grid.WI,-3*Grid.WI
  1066.     DC.W    +3*Grid.WI,-5*Grid.WI,-1*Grid.WI
  1067.     DC.W    +3*Grid.WI,-5*Grid.WI,+1*Grid.WI
  1068.     DC.W    +3*Grid.WI,-5*Grid.WI,+3*Grid.WI
  1069.     DC.W    +3*Grid.WI,-5*Grid.WI,+5*Grid.WI
  1070.     DC.W    +3*Grid.WI,-3*Grid.WI,-5*Grid.WI
  1071.     DC.W    +3*Grid.WI,-3*Grid.WI,-3*Grid.WI
  1072.     DC.W    +3*Grid.WI,-3*Grid.WI,-1*Grid.WI
  1073.     DC.W    +3*Grid.WI,-3*Grid.WI,+1*Grid.WI
  1074.     DC.W    +3*Grid.WI,-3*Grid.WI,+3*Grid.WI
  1075.     DC.W    +3*Grid.WI,-3*Grid.WI,+5*Grid.WI
  1076.     DC.W    +3*Grid.WI,-1*Grid.WI,-5*Grid.WI
  1077.     DC.W    +3*Grid.WI,-1*Grid.WI,-3*Grid.WI
  1078.     DC.W    +3*Grid.WI,-1*Grid.WI,-1*Grid.WI
  1079.     DC.W    +3*Grid.WI,-1*Grid.WI,+1*Grid.WI
  1080.     DC.W    +3*Grid.WI,-1*Grid.WI,+3*Grid.WI
  1081.     DC.W    +3*Grid.WI,-1*Grid.WI,+5*Grid.WI
  1082.     DC.W    +3*Grid.WI,+1*Grid.WI,-5*Grid.WI
  1083.     DC.W    +3*Grid.WI,+1*Grid.WI,-3*Grid.WI
  1084.     DC.W    +3*Grid.WI,+1*Grid.WI,-1*Grid.WI
  1085.     DC.W    +3*Grid.WI,+1*Grid.WI,+1*Grid.WI
  1086.     DC.W    +3*Grid.WI,+1*Grid.WI,+3*Grid.WI
  1087.     DC.W    +3*Grid.WI,+1*Grid.WI,+5*Grid.WI
  1088.     DC.W    +3*Grid.WI,+3*Grid.WI,-5*Grid.WI
  1089.     DC.W    +3*Grid.WI,+3*Grid.WI,-3*Grid.WI
  1090.     DC.W    +3*Grid.WI,+3*Grid.WI,-1*Grid.WI
  1091.     DC.W    +3*Grid.WI,+3*Grid.WI,+1*Grid.WI
  1092.     DC.W    +3*Grid.WI,+3*Grid.WI,+3*Grid.WI
  1093.     DC.W    +3*Grid.WI,+3*Grid.WI,+5*Grid.WI
  1094.     DC.W    +3*Grid.WI,+5*Grid.WI,-5*Grid.WI
  1095.     DC.W    +3*Grid.WI,+5*Grid.WI,-3*Grid.WI
  1096.     DC.W    +3*Grid.WI,+5*Grid.WI,-1*Grid.WI
  1097.     DC.W    +3*Grid.WI,+5*Grid.WI,+1*Grid.WI
  1098.     DC.W    +3*Grid.WI,+5*Grid.WI,+3*Grid.WI
  1099.     DC.W    +3*Grid.WI,+5*Grid.WI,+5*Grid.WI
  1100.     DC.W    +5*Grid.WI,-5*Grid.WI,-5*Grid.WI
  1101.     DC.W    +5*Grid.WI,-5*Grid.WI,-3*Grid.WI
  1102.     DC.W    +5*Grid.WI,-5*Grid.WI,-1*Grid.WI
  1103.     DC.W    +5*Grid.WI,-5*Grid.WI,+1*Grid.WI
  1104.     DC.W    +5*Grid.WI,-5*Grid.WI,+3*Grid.WI
  1105.     DC.W    +5*Grid.WI,-5*Grid.WI,+5*Grid.WI
  1106.     DC.W    +5*Grid.WI,-3*Grid.WI,-5*Grid.WI
  1107.     DC.W    +5*Grid.WI,-3*Grid.WI,-3*Grid.WI
  1108.     DC.W    +5*Grid.WI,-3*Grid.WI,-1*Grid.WI
  1109.     DC.W    +5*Grid.WI,-3*Grid.WI,+1*Grid.WI
  1110.     DC.W    +5*Grid.WI,-3*Grid.WI,+3*Grid.WI
  1111.     DC.W    +5*Grid.WI,-3*Grid.WI,+5*Grid.WI
  1112.     DC.W    +5*Grid.WI,-1*Grid.WI,-5*Grid.WI
  1113.     DC.W    +5*Grid.WI,-1*Grid.WI,-3*Grid.WI
  1114.     DC.W    +5*Grid.WI,-1*Grid.WI,-1*Grid.WI
  1115.     DC.W    +5*Grid.WI,-1*Grid.WI,+1*Grid.WI
  1116.     DC.W    +5*Grid.WI,-1*Grid.WI,+3*Grid.WI
  1117.     DC.W    +5*Grid.WI,-1*Grid.WI,+5*Grid.WI
  1118.     DC.W    +5*Grid.WI,+1*Grid.WI,-5*Grid.WI
  1119.     DC.W    +5*Grid.WI,+1*Grid.WI,-3*Grid.WI
  1120.     DC.W    +5*Grid.WI,+1*Grid.WI,-1*Grid.WI
  1121.     DC.W    +5*Grid.WI,+1*Grid.WI,+1*Grid.WI
  1122.     DC.W    +5*Grid.WI,+1*Grid.WI,+3*Grid.WI
  1123.     DC.W    +5*Grid.WI,+1*Grid.WI,+5*Grid.WI
  1124.     DC.W    +5*Grid.WI,+3*Grid.WI,-5*Grid.WI
  1125.     DC.W    +5*Grid.WI,+3*Grid.WI,-3*Grid.WI
  1126.     DC.W    +5*Grid.WI,+3*Grid.WI,-1*Grid.WI
  1127.     DC.W    +5*Grid.WI,+3*Grid.WI,+1*Grid.WI
  1128.     DC.W    +5*Grid.WI,+3*Grid.WI,+3*Grid.WI
  1129.     DC.W    +5*Grid.WI,+3*Grid.WI,+5*Grid.WI
  1130.     DC.W    +5*Grid.WI,+5*Grid.WI,-5*Grid.WI
  1131.     DC.W    +5*Grid.WI,+5*Grid.WI,-3*Grid.WI
  1132.     DC.W    +5*Grid.WI,+5*Grid.WI,-1*Grid.WI
  1133.     DC.W    +5*Grid.WI,+5*Grid.WI,+1*Grid.WI
  1134.     DC.W    +5*Grid.WI,+5*Grid.WI,+3*Grid.WI
  1135.     DC.W    +5*Grid.WI,+5*Grid.WI,+5*Grid.WI
  1136.  
  1137.     DC.W    6*30+6*30+6*30
  1138.  
  1139.     DC.W    000,001
  1140.     DC.W    001,002
  1141.     DC.W    002,003
  1142.     DC.W    003,004
  1143.     DC.W    004,005
  1144.     DC.W    006,007
  1145.     DC.W    007,008
  1146.     DC.W    008,009
  1147.     DC.W    009,010
  1148.     DC.W    010,011
  1149.     DC.W    012,013
  1150.     DC.W    013,014
  1151.     DC.W    014,015
  1152.     DC.W    015,016
  1153.     DC.W    016,017
  1154.     DC.W    018,019
  1155.     DC.W    019,020
  1156.     DC.W    020,021
  1157.     DC.W    021,022
  1158.     DC.W    022,023
  1159.     DC.W    024,025
  1160.     DC.W    025,026
  1161.     DC.W    026,027
  1162.     DC.W    027,028
  1163.     DC.W    028,029
  1164.     DC.W    030,031
  1165.     DC.W    031,032
  1166.     DC.W    032,033
  1167.     DC.W    033,034
  1168.     DC.W    034,035
  1169.  
  1170.     DC.W    036,037
  1171.     DC.W    037,038
  1172.     DC.W    038,039
  1173.     DC.W    039,040
  1174.     DC.W    040,041
  1175.     DC.W    042,043
  1176.     DC.W    043,044
  1177.     DC.W    044,045
  1178.     DC.W    045,046
  1179.     DC.W    046,047
  1180.     DC.W    048,049
  1181.     DC.W    049,050
  1182.     DC.W    050,051
  1183.     DC.W    051,052
  1184.     DC.W    052,053
  1185.     DC.W    054,055
  1186.     DC.W    055,056
  1187.     DC.W    056,057
  1188.     DC.W    057,058
  1189.     DC.W    058,059
  1190.     DC.W    060,061
  1191.     DC.W    061,062
  1192.     DC.W    062,063
  1193.     DC.W    063,064
  1194.     DC.W    064,065
  1195.     DC.W    066,067
  1196.     DC.W    067,068
  1197.     DC.W    068,069
  1198.     DC.W    069,070
  1199.     DC.W    070,071
  1200.  
  1201.     DC.W    072,073
  1202.     DC.W    073,074
  1203.     DC.W    074,075
  1204.     DC.W    075,076
  1205.     DC.W    076,077
  1206.     DC.W    078,079
  1207.     DC.W    079,080
  1208.     DC.W    080,081
  1209.     DC.W    081,082
  1210.     DC.W    082,083
  1211.     DC.W    084,085
  1212.     DC.W    085,086
  1213.     DC.W    086,087
  1214.     DC.W    087,088
  1215.     DC.W    088,089
  1216.     DC.W    090,091
  1217.     DC.W    091,092
  1218.     DC.W    092,093
  1219.     DC.W    093,094
  1220.     DC.W    094,095
  1221.     DC.W    096,097
  1222.     DC.W    097,098
  1223.     DC.W    098,099
  1224.     DC.W    099,100
  1225.     DC.W    100,101
  1226.     DC.W    102,103
  1227.     DC.W    103,104
  1228.     DC.W    104,105
  1229.     DC.W    105,106
  1230.     DC.W    106,107
  1231.  
  1232.     DC.W    108,109
  1233.     DC.W    109,110
  1234.     DC.W    110,111
  1235.     DC.W    111,112
  1236.     DC.W    112,113
  1237.     DC.W    114,115
  1238.     DC.W    115,116
  1239.     DC.W    116,117
  1240.     DC.W    117,118
  1241.     DC.W    118,119
  1242.     DC.W    120,121
  1243.     DC.W    121,122
  1244.     DC.W    122,123
  1245.     DC.W    123,124
  1246.     DC.W    124,125
  1247.     DC.W    126,127
  1248.     DC.W    127,128
  1249.     DC.W    128,129
  1250.     DC.W    129,130
  1251.     DC.W    130,131
  1252.     DC.W    132,133
  1253.     DC.W    133,134
  1254.     DC.W    134,135
  1255.     DC.W    135,136
  1256.     DC.W    136,137
  1257.     DC.W    138,139
  1258.     DC.W    139,140
  1259.     DC.W    140,141
  1260.     DC.W    141,142
  1261.     DC.W    142,143
  1262.  
  1263.     DC.W    144,145
  1264.     DC.W    145,146
  1265.     DC.W    146,147
  1266.     DC.W    147,148
  1267.     DC.W    148,149
  1268.     DC.W    150,151
  1269.     DC.W    151,152
  1270.     DC.W    152,153
  1271.     DC.W    153,154
  1272.     DC.W    154,155
  1273.     DC.W    156,157
  1274.     DC.W    157,158
  1275.     DC.W    158,159
  1276.     DC.W    159,160
  1277.     DC.W    160,161
  1278.     DC.W    162,163
  1279.     DC.W    163,164
  1280.     DC.W    164,165
  1281.     DC.W    165,166
  1282.     DC.W    166,167
  1283.     DC.W    168,169
  1284.     DC.W    169,170
  1285.     DC.W    170,171
  1286.     DC.W    171,172
  1287.     DC.W    172,173
  1288.     DC.W    174,175
  1289.     DC.W    175,176
  1290.     DC.W    176,177
  1291.     DC.W    177,178
  1292.     DC.W    178,179
  1293.  
  1294.     DC.W    180,181
  1295.     DC.W    181,182
  1296.     DC.W    182,183
  1297.     DC.W    183,184
  1298.     DC.W    184,185
  1299.     DC.W    186,187
  1300.     DC.W    187,188
  1301.     DC.W    188,189
  1302.     DC.W    189,190
  1303.     DC.W    190,191
  1304.     DC.W    192,193
  1305.     DC.W    193,194
  1306.     DC.W    194,195
  1307.     DC.W    195,196
  1308.     DC.W    196,197
  1309.     DC.W    198,199
  1310.     DC.W    199,200
  1311.     DC.W    200,201
  1312.     DC.W    201,202
  1313.     DC.W    202,203
  1314.     DC.W    204,205
  1315.     DC.W    205,206
  1316.     DC.W    206,207
  1317.     DC.W    207,208
  1318.     DC.W    208,209
  1319.     DC.W    210,211
  1320.     DC.W    211,212
  1321.     DC.W    212,213
  1322.     DC.W    213,214
  1323.     DC.W    214,215
  1324.  
  1325.  
  1326.     DC.W    000,006
  1327.     DC.W    006,012
  1328.     DC.W    012,018
  1329.     DC.W    018,024
  1330.     DC.W    024,030
  1331.     DC.W    000+1,006+1
  1332.     DC.W    006+1,012+1
  1333.     DC.W    012+1,018+1
  1334.     DC.W    018+1,024+1
  1335.     DC.W    024+1,030+1
  1336.     DC.W    000+2,006+2
  1337.     DC.W    006+2,012+2
  1338.     DC.W    012+2,018+2
  1339.     DC.W    018+2,024+2
  1340.     DC.W    024+2,030+2
  1341.     DC.W    000+3,006+3
  1342.     DC.W    006+3,012+3
  1343.     DC.W    012+3,018+3
  1344.     DC.W    018+3,024+3
  1345.     DC.W    024+3,030+3
  1346.     DC.W    000+4,006+4
  1347.     DC.W    006+4,012+4
  1348.     DC.W    012+4,018+4
  1349.     DC.W    018+4,024+4
  1350.     DC.W    024+4,030+4
  1351.     DC.W    000+5,006+5
  1352.     DC.W    006+5,012+5
  1353.     DC.W    012+5,018+5
  1354.     DC.W    018+5,024+5
  1355.     DC.W    024+5,030+5
  1356.     DC.W    036,042
  1357.     DC.W    042,048
  1358.     DC.W    048,054
  1359.     DC.W    054,060
  1360.     DC.W    060,066
  1361.     DC.W    036+1,042+1
  1362.     DC.W    042+1,048+1
  1363.     DC.W    048+1,054+1
  1364.     DC.W    054+1,060+1
  1365.     DC.W    060+1,066+1
  1366.     DC.W    036+2,042+2
  1367.     DC.W    042+2,048+2
  1368.     DC.W    048+2,054+2
  1369.     DC.W    054+2,060+2
  1370.     DC.W    060+2,066+2
  1371.     DC.W    036+3,042+3
  1372.     DC.W    042+3,048+3
  1373.     DC.W    048+3,054+3
  1374.     DC.W    054+3,060+3
  1375.     DC.W    060+3,066+3
  1376.     DC.W    036+4,042+4
  1377.     DC.W    042+4,048+4
  1378.     DC.W    048+4,054+4
  1379.     DC.W    054+4,060+4
  1380.     DC.W    060+4,066+4
  1381.     DC.W    036+5,042+5
  1382.     DC.W    042+5,048+5
  1383.     DC.W    048+5,054+5
  1384.     DC.W    054+5,060+5
  1385.     DC.W    060+5,066+5
  1386.     DC.W    072,078
  1387.     DC.W    078,084
  1388.     DC.W    084,090
  1389.     DC.W    090,096
  1390.     DC.W    096,102
  1391.     DC.W    072+1,078+1
  1392.     DC.W    078+1,084+1
  1393.     DC.W    084+1,090+1
  1394.     DC.W    090+1,096+1
  1395.     DC.W    096+1,102+1
  1396.     DC.W    072+2,078+2
  1397.     DC.W    078+2,084+2
  1398.     DC.W    084+2,090+2
  1399.     DC.W    090+2,096+2
  1400.     DC.W    096+2,102+2
  1401.     DC.W    072+3,078+3
  1402.     DC.W    078+3,084+3
  1403.     DC.W    084+3,090+3
  1404.     DC.W    090+3,096+3
  1405.     DC.W    096+3,102+3
  1406.     DC.W    072+4,078+4
  1407.     DC.W    078+4,084+4
  1408.     DC.W    084+4,090+4
  1409.     DC.W    090+4,096+4
  1410.     DC.W    096+4,102+4
  1411.     DC.W    072+5,078+5
  1412.     DC.W    078+5,084+5
  1413.     DC.W    084+5,090+5
  1414.     DC.W    090+5,096+5
  1415.     DC.W    096+5,102+5
  1416.     DC.W    108,114
  1417.     DC.W    114,120
  1418.     DC.W    120,126
  1419.     DC.W    126,132
  1420.     DC.W    132,138
  1421.     DC.W    108+1,114+1
  1422.     DC.W    114+1,120+1
  1423.     DC.W    120+1,126+1
  1424.     DC.W    126+1,132+1
  1425.     DC.W    132+1,138+1
  1426.     DC.W    108+2,114+2
  1427.     DC.W    114+2,120+2
  1428.     DC.W    120+2,126+2
  1429.     DC.W    126+2,132+2
  1430.     DC.W    132+2,138+2
  1431.     DC.W    108+3,114+3
  1432.     DC.W    114+3,120+3
  1433.     DC.W    120+3,126+3
  1434.     DC.W    126+3,132+3
  1435.     DC.W    132+3,138+3
  1436.     DC.W    108+4,114+4
  1437.     DC.W    114+4,120+4
  1438.     DC.W    120+4,126+4
  1439.     DC.W    126+4,132+4
  1440.     DC.W    132+4,138+4
  1441.     DC.W    108+5,114+5
  1442.     DC.W    114+5,120+5
  1443.     DC.W    120+5,126+5
  1444.     DC.W    126+5,132+5
  1445.     DC.W    132+5,138+5
  1446.     DC.W    144,150
  1447.     DC.W    150,156
  1448.     DC.W    156,162
  1449.     DC.W    162,168
  1450.     DC.W    168,174
  1451.     DC.W    144+1,150+1
  1452.     DC.W    150+1,156+1
  1453.     DC.W    156+1,162+1
  1454.     DC.W    162+1,168+1
  1455.     DC.W    168+1,174+1
  1456.     DC.W    144+2,150+2
  1457.     DC.W    150+2,156+2
  1458.     DC.W    156+2,162+2
  1459.     DC.W    162+2,168+2
  1460.     DC.W    168+2,174+2
  1461.     DC.W    144+3,150+3
  1462.     DC.W    150+3,156+3
  1463.     DC.W    156+3,162+3
  1464.     DC.W    162+3,168+3
  1465.     DC.W    168+3,174+3
  1466.     DC.W    144+4,150+4
  1467.     DC.W    150+4,156+4
  1468.     DC.W    156+4,162+4
  1469.     DC.W    162+4,168+4
  1470.     DC.W    168+4,174+4
  1471.     DC.W    144+5,150+5
  1472.     DC.W    150+5,156+5
  1473.     DC.W    156+5,162+5
  1474.     DC.W    162+5,168+5
  1475.     DC.W    168+5,174+5
  1476.     DC.W    180,186
  1477.     DC.W    186,192
  1478.     DC.W    192,198
  1479.     DC.W    198,204
  1480.     DC.W    204,210
  1481.     DC.W    180+1,186+1
  1482.     DC.W    186+1,192+1
  1483.     DC.W    192+1,198+1
  1484.     DC.W    198+1,204+1
  1485.     DC.W    204+1,210+1
  1486.     DC.W    180+2,186+2
  1487.     DC.W    186+2,192+2
  1488.     DC.W    192+2,198+2
  1489.     DC.W    198+2,204+2
  1490.     DC.W    204+2,210+2
  1491.     DC.W    180+3,186+3
  1492.     DC.W    186+3,192+3
  1493.     DC.W    192+3,198+3
  1494.     DC.W    198+3,204+3
  1495.     DC.W    204+3,210+3
  1496.     DC.W    180+4,186+4
  1497.     DC.W    186+4,192+4
  1498.     DC.W    192+4,198+4
  1499.     DC.W    198+4,204+4
  1500.     DC.W    204+4,210+4
  1501.     DC.W    180+5,186+5
  1502.     DC.W    186+5,192+5
  1503.     DC.W    192+5,198+5
  1504.     DC.W    198+5,204+5
  1505.     DC.W    204+5,210+5
  1506.  
  1507.     DC.W    000,036
  1508.     DC.W    036,072
  1509.     DC.W    072,108
  1510.     DC.W    108,144
  1511.     DC.W    144,180
  1512.     DC.W    000+1,036+1
  1513.     DC.W    036+1,072+1
  1514.     DC.W    072+1,108+1
  1515.     DC.W    108+1,144+1
  1516.     DC.W    144+1,180+1
  1517.     DC.W    000+2,036+2
  1518.     DC.W    036+2,072+2
  1519.     DC.W    072+2,108+2
  1520.     DC.W    108+2,144+2
  1521.     DC.W    144+2,180+2
  1522.     DC.W    000+3,036+3
  1523.     DC.W    036+3,072+3
  1524.     DC.W    072+3,108+3
  1525.     DC.W    108+3,144+3
  1526.     DC.W    144+3,180+3
  1527.     DC.W    000+4,036+4
  1528.     DC.W    036+4,072+4
  1529.     DC.W    072+4,108+4
  1530.     DC.W    108+4,144+4
  1531.     DC.W    144+4,180+4
  1532.     DC.W    000+5,036+5
  1533.     DC.W    036+5,072+5
  1534.     DC.W    072+5,108+5
  1535.     DC.W    108+5,144+5
  1536.     DC.W    144+5,180+5
  1537.     DC.W    000+6,036+6
  1538.     DC.W    036+6,072+6
  1539.     DC.W    072+6,108+6
  1540.     DC.W    108+6,144+6
  1541.     DC.W    144+6,180+6
  1542.  
  1543.     DC.W    000+7,036+7
  1544.     DC.W    036+7,072+7
  1545.     DC.W    072+7,108+7
  1546.     DC.W    108+7,144+7
  1547.     DC.W    144+7,180+7
  1548.     DC.W    000+8,036+8
  1549.     DC.W    036+8,072+8
  1550.     DC.W    072+8,108+8
  1551.     DC.W    108+8,144+8
  1552.     DC.W    144+8,180+8
  1553.     DC.W    000+9,036+9
  1554.     DC.W    036+9,072+9
  1555.     DC.W    072+9,108+9
  1556.     DC.W    108+9,144+9
  1557.     DC.W    144+9,180+9
  1558.     DC.W    000+10,036+10
  1559.     DC.W    036+10,072+10
  1560.     DC.W    072+10,108+10
  1561.     DC.W    108+10,144+10
  1562.     DC.W    144+10,180+10
  1563.     DC.W    000+11,036+11
  1564.     DC.W    036+11,072+11
  1565.     DC.W    072+11,108+11
  1566.     DC.W    108+11,144+11
  1567.     DC.W    144+11,180+11
  1568.     DC.W    000+12,036+12
  1569.     DC.W    036+12,072+12
  1570.     DC.W    072+12,108+12
  1571.     DC.W    108+12,144+12
  1572.     DC.W    144+12,180+12
  1573.     DC.W    000+13,036+13
  1574.     DC.W    036+13,072+13
  1575.     DC.W    072+13,108+13
  1576.     DC.W    108+13,144+13
  1577.     DC.W    144+13,180+13
  1578.     DC.W    000+14,036+14
  1579.     DC.W    036+14,072+14
  1580.     DC.W    072+14,108+14
  1581.     DC.W    108+14,144+14
  1582.     DC.W    144+14,180+14
  1583.     DC.W    000+15,036+15
  1584.     DC.W    036+15,072+15
  1585.     DC.W    072+15,108+15
  1586.     DC.W    108+15,144+15
  1587.     DC.W    144+15,180+15
  1588.     DC.W    000+16,036+16
  1589.     DC.W    036+16,072+16
  1590.     DC.W    072+16,108+16
  1591.     DC.W    108+16,144+16
  1592.     DC.W    144+16,180+16
  1593.     DC.W    000+17,036+17
  1594.     DC.W    036+17,072+17
  1595.     DC.W    072+17,108+17
  1596.     DC.W    108+17,144+17
  1597.     DC.W    144+17,180+17
  1598.     DC.W    000+18,036+18
  1599.     DC.W    036+18,072+18
  1600.     DC.W    072+18,108+18
  1601.     DC.W    108+18,144+18
  1602.     DC.W    144+18,180+18
  1603.     DC.W    000+19,036+19
  1604.     DC.W    036+19,072+19
  1605.     DC.W    072+19,108+19
  1606.     DC.W    108+19,144+19
  1607.     DC.W    144+19,180+19
  1608.     DC.W    000+20,036+20
  1609.     DC.W    036+20,072+20
  1610.     DC.W    072+20,108+20
  1611.     DC.W    108+20,144+20
  1612.     DC.W    144+20,180+20
  1613.     DC.W    000+21,036+21
  1614.     DC.W    036+21,072+21
  1615.     DC.W    072+21,108+21
  1616.     DC.W    108+21,144+21
  1617.     DC.W    144+21,180+21
  1618.     DC.W    000+22,036+22
  1619.     DC.W    036+22,072+22
  1620.     DC.W    072+22,108+22
  1621.     DC.W    108+22,144+22
  1622.     DC.W    144+22,180+22
  1623.     DC.W    000+23,036+23
  1624.     DC.W    036+23,072+23
  1625.     DC.W    072+23,108+23
  1626.     DC.W    108+23,144+23
  1627.     DC.W    144+23,180+23
  1628.     DC.W    000+24,036+24
  1629.     DC.W    036+24,072+24
  1630.     DC.W    072+24,108+24
  1631.     DC.W    108+24,144+24
  1632.     DC.W    144+24,180+24
  1633.     DC.W    000+25,036+25
  1634.     DC.W    036+25,072+25
  1635.     DC.W    072+25,108+25
  1636.     DC.W    108+25,144+25
  1637.     DC.W    144+25,180+25
  1638.     DC.W    000+26,036+26
  1639.     DC.W    036+26,072+26
  1640.     DC.W    072+26,108+26
  1641.     DC.W    108+26,144+26
  1642.     DC.W    144+26,180+26
  1643.     DC.W    000+27,036+27
  1644.     DC.W    036+27,072+27
  1645.     DC.W    072+27,108+27
  1646.     DC.W    108+27,144+27
  1647.     DC.W    144+27,180+27
  1648.     DC.W    000+28,036+28
  1649.     DC.W    036+28,072+28
  1650.     DC.W    072+28,108+28
  1651.     DC.W    108+28,144+28
  1652.     DC.W    144+28,180+28
  1653.     DC.W    000+29,036+29
  1654.     DC.W    036+29,072+29
  1655.     DC.W    072+29,108+29
  1656.     DC.W    108+29,144+29
  1657.     DC.W    144+29,180+29
  1658.     DC.W    000+30,036+30
  1659.     DC.W    036+30,072+30
  1660.     DC.W    072+30,108+30
  1661.     DC.W    108+30,144+30
  1662.     DC.W    144+30,180+30
  1663.     DC.W    000+31,036+31
  1664.     DC.W    036+31,072+31
  1665.     DC.W    072+31,108+31
  1666.     DC.W    108+31,144+31
  1667.     DC.W    144+31,180+31
  1668.     DC.W    000+32,036+32
  1669.     DC.W    036+32,072+32
  1670.     DC.W    072+32,108+32
  1671.     DC.W    108+32,144+32
  1672.     DC.W    144+32,180+32
  1673.     DC.W    000+33,036+33
  1674.     DC.W    036+33,072+33
  1675.     DC.W    072+33,108+33
  1676.     DC.W    108+33,144+33
  1677.     DC.W    144+33,180+33
  1678.     DC.W    000+34,036+34
  1679.     DC.W    036+34,072+34
  1680.     DC.W    072+34,108+34
  1681.     DC.W    108+34,144+34
  1682.     DC.W    144+34,180+34
  1683.     DC.W    000+35,036+35
  1684.     DC.W    036+35,072+35
  1685.     DC.W    072+35,108+35
  1686.     DC.W    108+35,144+35
  1687.     DC.W    144+35,180+35
  1688. Grid.object2End:
  1689.     ENDC
  1690.  
  1691. ; City used for the intro part of 'out'.
  1692. Grid.city:
  1693. ; vertices
  1694.     DC.W    (.endv-.startv)/6
  1695.  
  1696. .startv:DC.W    -050-250,-650,-050
  1697.     DC.W    -050-250,-650,+050
  1698.     DC.W    +050-250,-650,+050
  1699.     DC.W    +050-250,-650,-050
  1700.     DC.W    -050-250,+000,-050
  1701.     DC.W    -050-250,+000,+050
  1702.     DC.W    +050-250,+000,+050
  1703.     DC.W    +050-250,+000,-050
  1704.  
  1705.     DC.W    -050+250,-500,-050-100
  1706.     DC.W    -050+250,-500,+050-100
  1707.     DC.W    +050+250,-500,+050-100
  1708.     DC.W    +050+250,-500,-050-100
  1709.     DC.W    -050+250,+000,-050-100
  1710.     DC.W    -050+250,+000,+050-100
  1711.     DC.W    +050+250,+000,+050-100
  1712.     DC.W    +050+250,+000,-050-100
  1713.  
  1714.     DC.W    -100+250,-600,-100-700
  1715.     DC.W    -100+250,-600,+100-700
  1716.     DC.W    +100+250,-600,+100-700
  1717.     DC.W    +100+250,-600,-100-700
  1718.     DC.W    -100+250,+000,-100-700
  1719.     DC.W    -100+250,+000,+100-700
  1720.     DC.W    +100+250,+000,+100-700
  1721.     DC.W    +100+250,+000,-100-700
  1722.     DC.W    -050+250,-700,-050-700
  1723.     DC.W    -050+250,-700,+050-700
  1724.     DC.W    +050+250,-700,+050-700
  1725.     DC.W    +050+250,-700,-050-700
  1726.     DC.W    -050+250,-800,-050-700
  1727.     DC.W    -050+250,-800,+050-700
  1728.     DC.W    +050+250,-800,+050-700
  1729.     DC.W    +050+250,-800,-050-700
  1730.  
  1731.     DC.W    -050-200,-600,-150-600
  1732.     DC.W    -050-200,-600,+150-600
  1733.     DC.W    +050-200,-600,+150-600
  1734.     DC.W    +050-200,-600,-150-600
  1735.     DC.W    -050-200,+000,-150-600
  1736.     DC.W    -050-200,+000,+150-600
  1737.     DC.W    +050-200,+000,+150-600
  1738.     DC.W    +050-200,+000,-150-600
  1739.  
  1740.     DC.W    -050-300,-600,-050+400
  1741.     DC.W    -050-300,-600,+050+400
  1742.     DC.W    +050-300,-600,+050+400
  1743.     DC.W    +050-300,-600,-050+400
  1744.     DC.W    -050-300,+000,-050+400
  1745.     DC.W    -050-300,+000,+050+400
  1746.     DC.W    +050-300,+000,+050+400
  1747.     DC.W    +050-300,+000,-050+400
  1748.  
  1749.     DC.W    -100+250,-550,-100+200
  1750.     DC.W    -100+250,-550,+100+200
  1751.     DC.W    +100+250,-550,+100+200
  1752.     DC.W    +100+250,-550,-100+200
  1753.     DC.W    -100+250,+000,-100+200
  1754.     DC.W    -100+250,+000,+100+200
  1755.     DC.W    +100+250,+000,+100+200
  1756.     DC.W    +100+250,+000,-100+200
  1757.     DC.W    0+250,-750,0+200
  1758.     DC.W    0+250,-850,0+200
  1759.  
  1760.     DC.W    -050+250,-700,-050+750
  1761.     DC.W    -050+250,-700,+050+750
  1762.     DC.W    +050+250,-700,+050+750
  1763.     DC.W    +050+250,-700,-050+750
  1764.     DC.W    -050+250,+000,-050+750
  1765.     DC.W    -050+250,+000,+050+750
  1766.     DC.W    +050+250,+000,+050+750
  1767.     DC.W    +050+250,+000,-050+750
  1768.  
  1769.     DC.W    -090-300,-400,-090+900
  1770.     DC.W    -090-300,-400,+090+900
  1771.     DC.W    +090-300,-400,+090+900
  1772.     DC.W    +090-300,-400,-090+900
  1773.     DC.W    -090-300,+000,-090+900
  1774.     DC.W    -090-300,+000,+090+900
  1775.     DC.W    +090-300,+000,+090+900
  1776.     DC.W    +090-300,+000,-090+900
  1777.     DC.W    -070-300,-450,-070+900
  1778.     DC.W    -070-300,-450,+070+900
  1779.     DC.W    +070-300,-450,+070+900
  1780.     DC.W    +070-300,-450,-070+900
  1781.     DC.W    -070-300,-700,-070+900
  1782.     DC.W    -070-300,-700,+070+900
  1783.     DC.W    +070-300,-700,+070+900
  1784.     DC.W    +070-300,-700,-070+900
  1785.  
  1786. ; side stuff
  1787.     DC.W    -050-550,-200,-120+100
  1788.     DC.W    -050-550,-200,+120+100
  1789.     DC.W    +050-550,-200,+120+100
  1790.     DC.W    +050-550,-200,-120+100
  1791.     DC.W    -050-550,+000,-120+100
  1792.     DC.W    -050-550,+000,+120+100
  1793.     DC.W    +050-550,+000,+120+100
  1794.     DC.W    +050-550,+000,-120+100
  1795.  
  1796.     DC.W    -050-550,-150,-120+500
  1797.     DC.W    -050-550,-150,+120+500
  1798.     DC.W    +050-550,-150,+120+500
  1799.     DC.W    +050-550,-150,-120+500
  1800.     DC.W    -050-550,+000,-120+500
  1801.     DC.W    -050-550,+000,+120+500
  1802.     DC.W    +050-550,+000,+120+500
  1803.     DC.W    +050-550,+000,-120+500
  1804.  
  1805.     DC.W    -050-550,-210,-120+1000
  1806.     DC.W    -050-550,-210,+120+1000
  1807.     DC.W    +050-550,-210,+120+1000
  1808.     DC.W    +050-550,-210,-120+1000
  1809.     DC.W    -050-550,+000,-120+1000
  1810.     DC.W    -050-550,+000,+120+1000
  1811.     DC.W    +050-550,+000,+120+1000
  1812.     DC.W    +050-550,+000,-120+1000
  1813.  
  1814.     DC.W    -050-550,-140,-120-300
  1815.     DC.W    -050-550,-140,+120-300
  1816.     DC.W    +050-550,-140,+120-300
  1817.     DC.W    +050-550,-140,-120-300
  1818.     DC.W    -050-550,+000,-120-300
  1819.     DC.W    -050-550,+000,+120-300
  1820.     DC.W    +050-550,+000,+120-300
  1821.     DC.W    +050-550,+000,-120-300
  1822.  
  1823.     DC.W    -050-550,-170,-120-750
  1824.     DC.W    -050-550,-170,+120-750
  1825.     DC.W    +050-550,-170,+120-750
  1826.     DC.W    +050-550,-170,-120-750
  1827.     DC.W    -050-550,+000,-120-750
  1828.     DC.W    -050-550,+000,+120-750
  1829.     DC.W    +050-550,+000,+120-750
  1830.     DC.W    +050-550,+000,-120-750
  1831.  
  1832. ; other side stuff
  1833.     DC.W    -050+550,-200,-120+100
  1834.     DC.W    -050+550,-200,+120+100
  1835.     DC.W    +050+550,-200,+120+100
  1836.     DC.W    +050+550,-200,-120+100
  1837.     DC.W    -050+550,+000,-120+100
  1838.     DC.W    -050+550,+000,+120+100
  1839.     DC.W    +050+550,+000,+120+100
  1840.     DC.W    +050+550,+000,-120+100
  1841.  
  1842.     DC.W    -050+550,-150,-120+500
  1843.     DC.W    -050+550,-150,+120+500
  1844.     DC.W    +050+550,-150,+120+500
  1845.     DC.W    +050+550,-150,-120+500
  1846.     DC.W    -050+550,+000,-120+500
  1847.     DC.W    -050+550,+000,+120+500
  1848.     DC.W    +050+550,+000,+120+500
  1849.     DC.W    +050+550,+000,-120+500
  1850.  
  1851.     DC.W    -050+550,-210,-120+900
  1852.     DC.W    -050+550,-210,+120+900
  1853.     DC.W    +050+550,-210,+120+900
  1854.     DC.W    +050+550,-210,-120+900
  1855.     DC.W    -050+550,+000,-120+900
  1856.     DC.W    -050+550,+000,+120+900
  1857.     DC.W    +050+550,+000,+120+900
  1858.     DC.W    +050+550,+000,-120+900
  1859.  
  1860.     DC.W    -050+550,-140,-120-350
  1861.     DC.W    -050+550,-140,+120-350
  1862.     DC.W    +050+550,-140,+120-350
  1863.     DC.W    +050+550,-140,-120-350
  1864.     DC.W    -050+550,+000,-120-350
  1865.     DC.W    -050+550,+000,+120-350
  1866.     DC.W    +050+550,+000,+120-350
  1867.     DC.W    +050+550,+000,-120-350
  1868.  
  1869.     DC.W    -050+550,-170,-120-750
  1870.     DC.W    -050+550,-170,+120-750
  1871.     DC.W    +050+550,-170,+120-750
  1872.     DC.W    +050+550,-170,-120-750
  1873.     DC.W    -050+550,+000,-120-750
  1874.     DC.W    -050+550,+000,+120-750
  1875.     DC.W    +050+550,+000,+120-750
  1876.     DC.W    +050+550,+000,-120-750
  1877.  
  1878.     DC.W    -050+550,-130,-120+1500
  1879.     DC.W    -050+550,-130,+120+1500
  1880.     DC.W    +050+550,-130,+120+1500
  1881.     DC.W    +050+550,-130,-120+1500
  1882.     DC.W    -050+550,+000,-120+1500
  1883.     DC.W    -050+550,+000,+120+1500
  1884.     DC.W    +050+550,+000,+120+1500
  1885.     DC.W    +050+550,+000,-120+1500
  1886.  
  1887.     DC.W    -050-550,-130,-120+1500
  1888.     DC.W    -050-550,-130,+120+1500
  1889.     DC.W    +050-550,-130,+120+1500
  1890.     DC.W    +050-550,-130,-120+1500
  1891.     DC.W    -050-550,+000,-120+1500
  1892.     DC.W    -050-550,+000,+120+1500
  1893.     DC.W    +050-550,+000,+120+1500
  1894.     DC.W    +050-550,+000,-120+1500
  1895.  
  1896.     DC.W    -050+550,-130,-120-1200
  1897.     DC.W    -050+550,-130,+120-1200
  1898.     DC.W    +050+550,-130,+120-1200
  1899.     DC.W    +050+550,-130,-120-1200
  1900.     DC.W    -050+550,+000,-120-1200
  1901.     DC.W    -050+550,+000,+120-1200
  1902.     DC.W    +050+550,+000,+120-1200
  1903.     DC.W    +050+550,+000,-120-1200
  1904.  
  1905.     DC.W    -050-550,-150,-120-1250
  1906.     DC.W    -050-550,-150,+120-1250
  1907.     DC.W    +050-550,-150,+120-1250
  1908.     DC.W    +050-550,-150,-120-1250
  1909.     DC.W    -050-550,+000,-120-1250
  1910.     DC.W    -050-550,+000,+120-1250
  1911.     DC.W    +050-550,+000,+120-1250
  1912.     DC.W    +050-550,+000,-120-1250
  1913.  
  1914.     DC.W    -050+550,-180,-120-1700
  1915.     DC.W    -050+550,-180,+120-1700
  1916.     DC.W    +050+550,-180,+120-1700
  1917.     DC.W    +050+550,-180,-120-1700
  1918.     DC.W    -050+550,+000,-120-1700
  1919.     DC.W    -050+550,+000,+120-1700
  1920.     DC.W    +050+550,+000,+120-1700
  1921.     DC.W    +050+550,+000,-120-1700
  1922.  
  1923.     DC.W    -050-550,-120,-120-1650
  1924.     DC.W    -050-550,-120,+120-1650
  1925.     DC.W    +050-550,-120,+120-1650
  1926.     DC.W    +050-550,-120,-120-1650
  1927.     DC.W    -050-550,+000,-120-1650
  1928.     DC.W    -050-550,+000,+120-1650
  1929.     DC.W    +050-550,+000,+120-1650
  1930.     DC.W    +050-550,+000,-120-1650
  1931.  
  1932.     DC.W    -050+550,-190,-120-2200
  1933.     DC.W    -050+550,-190,+120-2200
  1934.     DC.W    +050+550,-190,+120-2200
  1935.     DC.W    +050+550,-190,-120-2200
  1936.     DC.W    -050+550,+000,-120-2200
  1937.     DC.W    -050+550,+000,+120-2200
  1938.     DC.W    +050+550,+000,+120-2200
  1939.     DC.W    +050+550,+000,-120-2200
  1940.  
  1941.     DC.W    -050-550,-150,-120-2200
  1942.     DC.W    -050-550,-150,+120-2200
  1943.     DC.W    +050-550,-150,+120-2200
  1944.     DC.W    +050-550,-150,-120-2200
  1945.     DC.W    -050-550,+000,-120-2200
  1946.     DC.W    -050-550,+000,+120-2200
  1947.     DC.W    +050-550,+000,+120-2200
  1948.     DC.W    +050-550,+000,-120-2200
  1949.  
  1950.     DC.W    -090-300,-500,-090-1100
  1951.     DC.W    -090-300,-500,+090-1100
  1952.     DC.W    +090-300,-500,+090-1100
  1953.     DC.W    +090-300,-500,-090-1100
  1954.     DC.W    -090-300,+000,-090-1100
  1955.     DC.W    -090-300,+000,+090-1100
  1956.     DC.W    +090-300,+000,+090-1100
  1957.     DC.W    +090-300,+000,-090-1100
  1958.     DC.W    -070-300,-550,-070-1100
  1959.     DC.W    -070-300,-550,+070-1100
  1960.     DC.W    +070-300,-550,+070-1100
  1961.     DC.W    +070-300,-550,-070-1100
  1962.     DC.W    -070-300,-650,-070-1100
  1963.     DC.W    -070-300,-650,+070-1100
  1964.     DC.W    +070-300,-650,+070-1100
  1965.     DC.W    +070-300,-650,-070-1100
  1966.  
  1967.     DC.W    -050+250,-650,-050-1050
  1968.     DC.W    -050+250,-650,+050-1050
  1969.     DC.W    +050+250,-600,+050-1050
  1970.     DC.W    +050+250,-600,-050-1050
  1971.     DC.W    -050+250,+000,-050-1050
  1972.     DC.W    -050+250,+000,+050-1050
  1973.     DC.W    +050+250,+000,+050-1050
  1974.     DC.W    +050+250,+000,-050-1050
  1975.  
  1976. ; 'O'
  1977.     DC.W    -50-200,-60-300,+1500
  1978.     DC.W    +50-200,-60-300,+1500
  1979.     DC.W    +30-200,+60-300,+1500
  1980.     DC.W    -70-200,+60-300,+1500
  1981.     DC.W    -70-200,-80-300,+1500
  1982.     DC.W    +75-200,-80-300,+1500
  1983.     DC.W    +50-200,+80-300,+1500
  1984.     DC.W    -95-200,+80-300,+1500
  1985.     DC.W    -50-200,-60-300,+1525
  1986.     DC.W    +50-200,-60-300,+1525
  1987.     DC.W    +30-200,+60-300,+1525
  1988.     DC.W    -70-200,+60-300,+1525
  1989.     DC.W    -70-200,-80-300,+1525
  1990.     DC.W    +75-200,-80-300,+1525
  1991.     DC.W    +50-200,+80-300,+1525
  1992.     DC.W    -95-200,+80-300,+1525
  1993.  
  1994. ; 'U'
  1995.     DC.W    -50+20,-80-300,+1500
  1996.     DC.W    -70+20,+60-300,+1500
  1997.     DC.W    +30+20,+60-300,+1500
  1998.     DC.W    +50+20,-80-300,+1500
  1999.     DC.W    +70+20,-80-300,+1500
  2000.     DC.W    +50+20,+80-300,+1500
  2001.     DC.W    -90+20,+80-300,+1500
  2002.     DC.W    -70+20,-80-300,+1500
  2003.     DC.W    -50+20,-80-300,+1525
  2004.     DC.W    -70+20,+60-300,+1525
  2005.     DC.W    +30+20,+60-300,+1525
  2006.     DC.W    +50+20,-80-300,+1525
  2007.     DC.W    +70+20,-80-300,+1525
  2008.     DC.W    +50+20,+80-300,+1525
  2009.     DC.W    -90+20,+80-300,+1525
  2010.     DC.W    -70+20,-80-300,+1525
  2011.  
  2012. ; 'T'
  2013.     DC.W    -10+200,-80-300,+1500
  2014.     DC.W    +10+200,-80-300,+1500
  2015.     DC.W    +6+200,-60-300,+1500
  2016.     DC.W    +26+200,-60-300,+1500
  2017.     DC.W    +22+200,-40-300,+1500
  2018.     DC.W    +0+200,-40-300,+1500
  2019.     DC.W    -16+200,+80-300,+1500
  2020.     DC.W    -36+200,+80-300,+1500
  2021.     DC.W    -20+200,-40-300,+1500
  2022.     DC.W    -40+200,-40-300,+1500
  2023.     DC.W    -35+200,-60-300,+1500
  2024.     DC.W    -14+200,-60-300,+1500
  2025.     DC.W    -10+200,-80-300,+1525
  2026.     DC.W    +10+200,-80-300,+1525
  2027.     DC.W    +6+200,-60-300,+1525
  2028.     DC.W    +26+200,-60-300,+1525
  2029.     DC.W    +22+200,-40-300,+1525
  2030.     DC.W    +0+200,-40-300,+1525
  2031.     DC.W    -16+200,+80-300,+1525
  2032.     DC.W    -36+200,+80-300,+1525
  2033.     DC.W    -20+200,-40-300,+1525
  2034.     DC.W    -40+200,-40-300,+1525
  2035.     DC.W    -35+200,-60-300,+1525
  2036.     DC.W    -14+200,-60-300,+1525
  2037.  
  2038. ; outside crap..
  2039.     DC.W    -50+900,0,-50-1000
  2040.     DC.W    -50+900,0,+50-1000
  2041.     DC.W    +50+900,0,+50-1000
  2042.     DC.W    +50+900,0,-50-1000
  2043.     DC.W    0+900,-50,0-1000
  2044.  
  2045.     DC.W    -50+800,0,-50
  2046.     DC.W    -50+800,0,+50
  2047.     DC.W    +50+800,0,+50
  2048.     DC.W    +50+800,0,-50
  2049.     DC.W    0+800,-50,0
  2050.  
  2051.     DC.W    -50-800,0,-50+500
  2052.     DC.W    -50-800,0,+50+500
  2053.     DC.W    +50-800,0,+50+500
  2054.     DC.W    +50-800,0,-50+500
  2055.     DC.W    0-800,-50,0+500
  2056.  
  2057.     DC.W    -50-1000,0,-50-1400
  2058.     DC.W    -50-1000,0,+50-1400
  2059.     DC.W    +50-1000,0,+50-1400
  2060.     DC.W    +50-1000,0,-50-1400
  2061.     DC.W    0-1000,-50,0-1400
  2062.  
  2063.     DC.W    -50+1000,0,-50-1200
  2064.     DC.W    -50+1000,0,+50-1200
  2065.     DC.W    +50+1000,0,+50-1200
  2066.     DC.W    +50+1000,0,-50-1200
  2067.     DC.W    0+1000,-50,0-1200
  2068.  
  2069.     DC.W    -50+900,0,-50+700
  2070.     DC.W    -50+900,0,+50+700
  2071.     DC.W    +50+900,0,+50+700
  2072.     DC.W    +50+900,0,-50+700
  2073.     DC.W    0+900,-50,0+700
  2074.  
  2075.     DC.W    -50-800,0,-50+900
  2076.     DC.W    -50-800,0,+50+900
  2077.     DC.W    +50-800,0,+50+900
  2078.     DC.W    +50-800,0,-50+900
  2079.     DC.W    0-800,-50,0+900
  2080.  
  2081.     DC.W    -50-800,0,-50-1200
  2082.     DC.W    -50-800,0,+50-1200
  2083.     DC.W    +50-800,0,+50-1200
  2084.     DC.W    +50-800,0,-50-1200
  2085.     DC.W    0-800,-50,0-1200
  2086.  
  2087.     DC.W    -50+800,0,-50+300
  2088.     DC.W    -50+800,0,+50+300
  2089.     DC.W    +50+800,0,+50+300
  2090.     DC.W    +50+800,0,-50+300
  2091.     DC.W    0+800,-50,0+300
  2092.  
  2093.     DC.W    -50-800,0,-50-300
  2094.     DC.W    -50-800,0,+50-300
  2095.     DC.W    +50-800,0,+50-300
  2096.     DC.W    +50-800,0,-50-300
  2097.     DC.W    0-800,-50,0-300
  2098.  
  2099. .endv:
  2100. ; edges
  2101.     DC.W    (.endl-.startl)/4
  2102.  
  2103. .startl:DC.W    0,1
  2104.     DC.W    1,2
  2105.     DC.W    2,3
  2106.     DC.W    3,0
  2107.     DC.W    0,4
  2108.     DC.W    1,5
  2109.     DC.W    2,6
  2110.     DC.W    3,7
  2111.  
  2112.     DC.W    0+8,1+8
  2113.     DC.W    1+8,2+8
  2114.     DC.W    2+8,3+8
  2115.     DC.W    3+8,0+8
  2116.     DC.W    0+8,4+8
  2117.     DC.W    1+8,5+8
  2118.     DC.W    2+8,6+8
  2119.     DC.W    3+8,7+8
  2120.  
  2121.     DC.W    0+16,1+16
  2122.     DC.W    1+16,2+16
  2123.     DC.W    2+16,3+16
  2124.     DC.W    3+16,0+16
  2125.     DC.W    0+16,4+16
  2126.     DC.W    1+16,5+16
  2127.     DC.W    2+16,6+16
  2128.     DC.W    3+16,7+16
  2129.     DC.W    0+24,1+24
  2130.     DC.W    1+24,2+24
  2131.     DC.W    2+24,3+24
  2132.     DC.W    3+24,0+24
  2133.     DC.W    0+24,0+16
  2134.     DC.W    1+24,1+16
  2135.     DC.W    2+24,2+16
  2136.     DC.W    3+24,3+16
  2137.  
  2138.     DC.W    0+32,1+32
  2139.     DC.W    1+32,2+32
  2140.     DC.W    2+32,3+32
  2141.     DC.W    3+32,0+32
  2142.     DC.W    0+32,4+32
  2143.     DC.W    1+32,5+32
  2144.     DC.W    2+32,6+32
  2145.     DC.W    3+32,7+32
  2146.  
  2147.     DC.W    0+40,1+40
  2148.     DC.W    1+40,2+40
  2149.     DC.W    2+40,3+40
  2150.     DC.W    3+40,0+40
  2151.     DC.W    0+40,4+40
  2152.     DC.W    1+40,5+40
  2153.     DC.W    2+40,6+40
  2154.     DC.W    3+40,7+40
  2155.  
  2156.     DC.W    0+48,4+48
  2157.     DC.W    1+48,5+48
  2158.     DC.W    2+48,6+48
  2159.     DC.W    3+48,7+48
  2160.     DC.W    0+48,1+48
  2161.     DC.W    1+48,2+48
  2162.     DC.W    2+48,3+48
  2163.     DC.W    3+48,0+48
  2164.     DC.W    0+48,8+48
  2165.     DC.W    1+48,8+48
  2166.     DC.W    2+48,8+48
  2167.     DC.W    3+48,8+48
  2168.     DC.W    8+48,9+48
  2169.  
  2170.     DC.W    0+58,1+58
  2171.     DC.W    1+58,2+58
  2172.     DC.W    2+58,3+58
  2173.     DC.W    3+58,0+58
  2174.     DC.W    0+58,4+58
  2175.     DC.W    1+58,5+58
  2176.     DC.W    2+58,6+58
  2177.     DC.W    3+58,7+58
  2178.  
  2179.     DC.W    0+66,1+66
  2180.     DC.W    1+66,2+66
  2181.     DC.W    2+66,3+66
  2182.     DC.W    3+66,0+66
  2183.     DC.W    0+66,4+66
  2184.     DC.W    1+66,5+66
  2185.     DC.W    2+66,6+66
  2186.     DC.W    3+66,7+66
  2187.     DC.W    0+74,1+74
  2188.     DC.W    1+74,2+74
  2189.     DC.W    2+74,3+74
  2190.     DC.W    3+74,0+74
  2191.     DC.W    0+74,0+66
  2192.     DC.W    1+74,1+66
  2193.     DC.W    2+74,2+66
  2194.     DC.W    3+74,3+66
  2195.     DC.W    4+74,5+74
  2196.     DC.W    5+74,6+74
  2197.     DC.W    6+74,7+74
  2198.     DC.W    7+74,4+74
  2199.     DC.W    4+74,0+74
  2200.     DC.W    5+74,1+74
  2201.     DC.W    6+74,2+74
  2202.     DC.W    7+74,3+74
  2203.  
  2204. ; sidestuff
  2205.     DC.W    0+82,1+82
  2206.     DC.W    1+82,2+82
  2207.     DC.W    2+82,3+82
  2208.     DC.W    3+82,0+82
  2209.     DC.W    0+82,4+82
  2210.     DC.W    1+82,5+82
  2211.     DC.W    2+82,6+82
  2212.     DC.W    3+82,7+82
  2213.  
  2214.     DC.W    0+90,1+90
  2215.     DC.W    1+90,2+90
  2216.     DC.W    2+90,3+90
  2217.     DC.W    3+90,0+90
  2218.     DC.W    0+90,4+90
  2219.     DC.W    1+90,5+90
  2220.     DC.W    2+90,6+90
  2221.     DC.W    3+90,7+90
  2222.  
  2223.     DC.W    0+98,1+98
  2224.     DC.W    1+98,2+98
  2225.     DC.W    2+98,3+98
  2226.     DC.W    3+98,0+98
  2227.     DC.W    0+98,4+98
  2228.     DC.W    1+98,5+98
  2229.     DC.W    2+98,6+98
  2230.     DC.W    3+98,7+98
  2231.  
  2232.     DC.W    0+106,1+106
  2233.     DC.W    1+106,2+106
  2234.     DC.W    2+106,3+106
  2235.     DC.W    3+106,0+106
  2236.     DC.W    0+106,4+106
  2237.     DC.W    1+106,5+106
  2238.     DC.W    2+106,6+106
  2239.     DC.W    3+106,7+106
  2240.  
  2241.     DC.W    0+114,1+114
  2242.     DC.W    1+114,2+114
  2243.     DC.W    2+114,3+114
  2244.     DC.W    3+114,0+114
  2245.     DC.W    0+114,4+114
  2246.     DC.W    1+114,5+114
  2247.     DC.W    2+114,6+114
  2248.     DC.W    3+114,7+114
  2249.  
  2250.     DC.W    0+122,1+122
  2251.     DC.W    1+122,2+122
  2252.     DC.W    2+122,3+122
  2253.     DC.W    3+122,0+122
  2254.     DC.W    0+122,4+122
  2255.     DC.W    1+122,5+122
  2256.     DC.W    2+122,6+122
  2257.     DC.W    3+122,7+122
  2258.  
  2259.     DC.W    0+130,1+130
  2260.     DC.W    1+130,2+130
  2261.     DC.W    2+130,3+130
  2262.     DC.W    3+130,0+130
  2263.     DC.W    0+130,4+130
  2264.     DC.W    1+130,5+130
  2265.     DC.W    2+130,6+130
  2266.     DC.W    3+130,7+130
  2267.  
  2268.     DC.W    0+138,1+138
  2269.     DC.W    1+138,2+138
  2270.     DC.W    2+138,3+138
  2271.     DC.W    3+138,0+138
  2272.     DC.W    0+138,4+138
  2273.     DC.W    1+138,5+138
  2274.     DC.W    2+138,6+138
  2275.     DC.W    3+138,7+138
  2276.  
  2277.     DC.W    0+146,1+146
  2278.     DC.W    1+146,2+146
  2279.     DC.W    2+146,3+146
  2280.     DC.W    3+146,0+146
  2281.     DC.W    0+146,4+146
  2282.     DC.W    1+146,5+146
  2283.     DC.W    2+146,6+146
  2284.     DC.W    3+146,7+146
  2285.  
  2286.     DC.W    0+154,1+154
  2287.     DC.W    1+154,2+154
  2288.     DC.W    2+154,3+154
  2289.     DC.W    3+154,0+154
  2290.     DC.W    0+154,4+154
  2291.     DC.W    1+154,5+154
  2292.     DC.W    2+154,6+154
  2293.     DC.W    3+154,7+154
  2294.  
  2295.     DC.W    0+162,1+162
  2296.     DC.W    1+162,2+162
  2297.     DC.W    2+162,3+162
  2298.     DC.W    3+162,0+162
  2299.     DC.W    0+162,4+162
  2300.     DC.W    1+162,5+162
  2301.     DC.W    2+162,6+162
  2302.     DC.W    3+162,7+162
  2303.  
  2304.     DC.W    0+170,1+170
  2305.     DC.W    1+170,2+170
  2306.     DC.W    2+170,3+170
  2307.     DC.W    3+170,0+170
  2308.     DC.W    0+170,4+170
  2309.     DC.W    1+170,5+170
  2310.     DC.W    2+170,6+170
  2311.     DC.W    3+170,7+170
  2312.  
  2313.     DC.W    0+178,1+178
  2314.     DC.W    1+178,2+178
  2315.     DC.W    2+178,3+178
  2316.     DC.W    3+178,0+178
  2317.     DC.W    0+178,4+178
  2318.     DC.W    1+178,5+178
  2319.     DC.W    2+178,6+178
  2320.     DC.W    3+178,7+178
  2321.  
  2322.     DC.W    0+186,1+186
  2323.     DC.W    1+186,2+186
  2324.     DC.W    2+186,3+186
  2325.     DC.W    3+186,0+186
  2326.     DC.W    0+186,4+186
  2327.     DC.W    1+186,5+186
  2328.     DC.W    2+186,6+186
  2329.     DC.W    3+186,7+186
  2330.  
  2331.     DC.W    0+194,1+194
  2332.     DC.W    1+194,2+194
  2333.     DC.W    2+194,3+194
  2334.     DC.W    3+194,0+194
  2335.     DC.W    0+194,4+194
  2336.     DC.W    1+194,5+194
  2337.     DC.W    2+194,6+194
  2338.     DC.W    3+194,7+194
  2339.  
  2340.     DC.W    0+202,1+202
  2341.     DC.W    1+202,2+202
  2342.     DC.W    2+202,3+202
  2343.     DC.W    3+202,0+202
  2344.     DC.W    0+202,4+202
  2345.     DC.W    1+202,5+202
  2346.     DC.W    2+202,6+202
  2347.     DC.W    3+202,7+202
  2348.  
  2349.     DC.W    0+210,1+210
  2350.     DC.W    1+210,2+210
  2351.     DC.W    2+210,3+210
  2352.     DC.W    3+210,0+210
  2353.     DC.W    0+210,4+210
  2354.     DC.W    1+210,5+210
  2355.     DC.W    2+210,6+210
  2356.     DC.W    3+210,7+210
  2357.  
  2358.     DC.W    0+218,1+218
  2359.     DC.W    1+218,2+218
  2360.     DC.W    2+218,3+218
  2361.     DC.W    3+218,0+218
  2362.     DC.W    0+218,4+218
  2363.     DC.W    1+218,5+218
  2364.     DC.W    2+218,6+218
  2365.     DC.W    3+218,7+218
  2366.  
  2367.     DC.W    0+226,1+226
  2368.     DC.W    1+226,2+226
  2369.     DC.W    2+226,3+226
  2370.     DC.W    3+226,0+226
  2371.     DC.W    0+226,4+226
  2372.     DC.W    1+226,5+226
  2373.     DC.W    2+226,6+226
  2374.     DC.W    3+226,7+226
  2375.     DC.W    0+234,1+234
  2376.     DC.W    1+234,2+234
  2377.     DC.W    2+234,3+234
  2378.     DC.W    3+234,0+234
  2379.     DC.W    0+234,0+226
  2380.     DC.W    1+234,1+226
  2381.     DC.W    2+234,2+226
  2382.     DC.W    3+234,3+226
  2383.     DC.W    4+234,5+234
  2384.     DC.W    5+234,6+234
  2385.     DC.W    6+234,7+234
  2386.     DC.W    7+234,4+234
  2387.     DC.W    4+234,0+234
  2388.     DC.W    5+234,1+234
  2389.     DC.W    6+234,2+234
  2390.     DC.W    7+234,3+234
  2391.  
  2392.     DC.W    0+242,1+242
  2393.     DC.W    1+242,2+242
  2394.     DC.W    2+242,3+242
  2395.     DC.W    3+242,0+242
  2396.     DC.W    0+242,4+242
  2397.     DC.W    1+242,5+242
  2398.     DC.W    2+242,6+242
  2399.     DC.W    3+242,7+242
  2400.  
  2401. ; 'O'
  2402.     DC.W    250,251
  2403.     DC.W    251,252
  2404.     DC.W    252,253
  2405.     DC.W    253,250
  2406.     DC.W    254,255
  2407.     DC.W    255,256
  2408.     DC.W    256,257
  2409.     DC.W    257,254
  2410.     DC.W    250+8,251+8
  2411.     DC.W    251+8,252+8
  2412.     DC.W    252+8,253+8
  2413.     DC.W    253+8,250+8
  2414.     DC.W    254+8,255+8
  2415.     DC.W    255+8,256+8
  2416.     DC.W    256+8,257+8
  2417.     DC.W    257+8,254+8
  2418.     DC.W    250,258
  2419.     DC.W    251,259
  2420.     DC.W    252,260
  2421.     DC.W    253,261
  2422.     DC.W    254,262
  2423.     DC.W    255,263
  2424.     DC.W    256,264
  2425.     DC.W    257,265
  2426.  
  2427. ; 'U'
  2428.     DC.W    266,267
  2429.     DC.W    267,268
  2430.     DC.W    268,269
  2431.     DC.W    269,270
  2432.     DC.W    270,271
  2433.     DC.W    271,272
  2434.     DC.W    272,273
  2435.     DC.W    273,266
  2436.     DC.W    266+8,267+8
  2437.     DC.W    267+8,268+8
  2438.     DC.W    268+8,269+8
  2439.     DC.W    269+8,270+8
  2440.     DC.W    270+8,271+8
  2441.     DC.W    271+8,272+8
  2442.     DC.W    272+8,273+8
  2443.     DC.W    273+8,266+8
  2444.     DC.W    266,266+8
  2445.     DC.W    267,267+8
  2446.     DC.W    268,268+8
  2447.     DC.W    269,269+8
  2448.     DC.W    270,270+8
  2449.     DC.W    271,271+8
  2450.     DC.W    272,272+8
  2451.     DC.W    273,273+8
  2452.  
  2453. ; 'T'
  2454.     DC.W    282,283
  2455.     DC.W    283,284
  2456.     DC.W    284,285
  2457.     DC.W    285,286
  2458.     DC.W    286,287
  2459.     DC.W    287,288
  2460.     DC.W    288,289
  2461.     DC.W    289,290
  2462.     DC.W    290,291
  2463.     DC.W    291,292
  2464.     DC.W    292,293
  2465.     DC.W    293,282
  2466.     DC.W    282+12,283+12
  2467.     DC.W    283+12,284+12
  2468.     DC.W    284+12,285+12
  2469.     DC.W    285+12,286+12
  2470.     DC.W    286+12,287+12
  2471.     DC.W    287+12,288+12
  2472.     DC.W    288+12,289+12
  2473.     DC.W    289+12,290+12
  2474.     DC.W    290+12,291+12
  2475.     DC.W    291+12,292+12
  2476.     DC.W    292+12,293+12
  2477.     DC.W    293+12,282+12
  2478.     DC.W    282,282+12
  2479.     DC.W    283,283+12
  2480.     DC.W    284,284+12
  2481.     DC.W    285,285+12
  2482.     DC.W    286,286+12
  2483.     DC.W    287,287+12
  2484.     DC.W    288,288+12
  2485.     DC.W    289,289+12
  2486.     DC.W    290,290+12
  2487.     DC.W    291,291+12
  2488.     DC.W    292,292+12
  2489.     DC.W    293,293+12
  2490.  
  2491. ; outside stuffs
  2492.     DC.W    306,307
  2493.     DC.W    307,308
  2494.     DC.W    308,309
  2495.     DC.W    309,306
  2496.     DC.W    310,306
  2497.     DC.W    310,307
  2498.     DC.W    310,308
  2499.     DC.W    310,309
  2500.  
  2501.     DC.W    306+5,307+5
  2502.     DC.W    307+5,308+5
  2503.     DC.W    308+5,309+5
  2504.     DC.W    309+5,306+5
  2505.     DC.W    310+5,306+5
  2506.     DC.W    310+5,307+5
  2507.     DC.W    310+5,308+5
  2508.     DC.W    310+5,309+5
  2509.  
  2510.     DC.W    306+10,307+10
  2511.     DC.W    307+10,308+10
  2512.     DC.W    308+10,309+10
  2513.     DC.W    309+10,306+10
  2514.     DC.W    310+10,306+10
  2515.     DC.W    310+10,307+10
  2516.     DC.W    310+10,308+10
  2517.     DC.W    310+10,309+10
  2518.  
  2519.     DC.W    306+15,307+15
  2520.     DC.W    307+15,308+15
  2521.     DC.W    308+15,309+15
  2522.     DC.W    309+15,306+15
  2523.     DC.W    310+15,306+15
  2524.     DC.W    310+15,307+15
  2525.     DC.W    310+15,308+15
  2526.     DC.W    310+15,309+15
  2527.  
  2528.     DC.W    306+20,307+20
  2529.     DC.W    307+20,308+20
  2530.     DC.W    308+20,309+20
  2531.     DC.W    309+20,306+20
  2532.     DC.W    310+20,306+20
  2533.     DC.W    310+20,307+20
  2534.     DC.W    310+20,308+20
  2535.     DC.W    310+20,309+20
  2536.  
  2537.     DC.W    306+25,307+25
  2538.     DC.W    307+25,308+25
  2539.     DC.W    308+25,309+25
  2540.     DC.W    309+25,306+25
  2541.     DC.W    310+25,306+25
  2542.     DC.W    310+25,307+25
  2543.     DC.W    310+25,308+25
  2544.     DC.W    310+25,309+25
  2545.  
  2546.     DC.W    306+30,307+30
  2547.     DC.W    307+30,308+30
  2548.     DC.W    308+30,309+30
  2549.     DC.W    309+30,306+30
  2550.     DC.W    310+30,306+30
  2551.     DC.W    310+30,307+30
  2552.     DC.W    310+30,308+30
  2553.     DC.W    310+30,309+30
  2554.  
  2555.     DC.W    306+35,307+35
  2556.     DC.W    307+35,308+35
  2557.     DC.W    308+35,309+35
  2558.     DC.W    309+35,306+35
  2559.     DC.W    310+35,306+35
  2560.     DC.W    310+35,307+35
  2561.     DC.W    310+35,308+35
  2562.     DC.W    310+35,309+35
  2563.  
  2564.     DC.W    306+40,307+40
  2565.     DC.W    307+40,308+40
  2566.     DC.W    308+40,309+40
  2567.     DC.W    309+40,306+40
  2568.     DC.W    310+40,306+40
  2569.     DC.W    310+40,307+40
  2570.     DC.W    310+40,308+40
  2571.     DC.W    310+40,309+40
  2572.  
  2573.     DC.W    306+45,307+45
  2574.     DC.W    307+45,308+45
  2575.     DC.W    308+45,309+45
  2576.     DC.W    309+45,306+45
  2577.     DC.W    310+45,306+45
  2578.     DC.W    310+45,307+45
  2579.     DC.W    310+45,308+45
  2580.     DC.W    310+45,309+45
  2581.  
  2582. .endl:
  2583. Grid.cityEnd:
  2584.  
  2585. Grid.p56:
  2586.     INCBIN    GRID.P56
  2587. Grid.p56End:
  2588.     EVEN
  2589. Grid.p56h:
  2590.     INCBIN    GRIDH.P56
  2591. Grid.p56hEnd:
  2592.     EVEN
  2593.  
  2594. Grid.edgeAdrTable:
  2595.     DC.L    Grid.edgeTable1
  2596.     DC.L    Grid.edgeTable2
  2597.     DC.L    Grid.edgeTable3
  2598.  
  2599. Grid.fadeRout:
  2600.     DC.L    rts
  2601.  
  2602. Grid.trajRout:
  2603.     DC.L    Grid.swing
  2604.  
  2605. ;======= OBJECT RESERVES ===================================================
  2606.  
  2607.     BSS
  2608.  
  2609. Grid.rectTable:
  2610.     DS.L    10
  2611.  
  2612. Grid.pal:
  2613.     DS.W    64+2048
  2614. Grid.pal2:
  2615.     DS.W    64+2048
  2616. Grid.edgeTable1:
  2617.     DS.W    4*500
  2618. Grid.edgeTable2:
  2619.     DS.W    4*500
  2620. Grid.edgeTable3
  2621.     DS.W    4*500
  2622.  
  2623. Grid.unrollTable:
  2624.     DS.L    320
  2625. Grid.gUnrollTable:
  2626.     DS.L    320
  2627.  
  2628. Grid.fadeStart:
  2629.     DS.W    1
  2630. Grid.trajStart:
  2631.     DS.L    1
  2632. Grid.launched:
  2633.     DS.W    1
  2634. Grid.takeOffStart:
  2635.     DS.L    1
  2636.