;;; "Includes & Defines"
		   Machine   68020
		   Incdir    "!Includes:"
		   Include   "StdLibInc.i"
		   Include   "StdHardInc.i"

		   Include   "Loader.i"
		   Include   "Support.i"
		   Include   "Demo.i"

		   Incdir    "!Includes:os3.0/"
		   Include   "exec/memory.i"

		   xdef      Fastest_Init
		   xdef      Fastest_Show
		   xdef      Fastest_Counter
		   xdef      Fastest_Main
		   xdef      Fastest_Remove

		   xdef      Fastest_Angle
		   xdef      Fastest_Zoom
		   xdef      Fastest_XOff
		   xdef      Fastest_YOff

Fastest_ID         Equ       101
SprCol             Equ       $000
NoGrid             Equ       0
Grey               Equ       1
Dither             Equ       1
MBlur              Equ       1

DIST               Equ       180

		   IFEQ      Grey

_Farg0             Equ       $0
_Farg1             Equ       $668
_Farg2             Equ       $7b7
_Farg3             Equ       $7a9
_Farg4             Equ       $c65
_Farg5             Equ       $a65
_Farg6             Equ       $a68
_Farg7             Equ       $b96

_Farg8             Equ       $aaa
_Farg9             Equ       $aac
_Farg10            Equ       $aca
_Farg11            Equ       $acc
_Farg12            Equ       $da8
_Farg13            Equ       $dbc
_Farg14            Equ       $dca
_Farg15            Equ       $ffe

;_Farg0             Equ       $0004
;_Farg1             Equ       $0015
;_Farg2             Equ       $0026
;_Farg3             Equ       $0137
;_Farg4             Equ       $0248
;_Farg5             Equ       $0359
;_Farg6             Equ       $046a
;_Farg7             Equ       $057b

;_Farg8             Equ       $068c
;_Farg9             Equ       $079d
;_Farg10            Equ       $08ae
;_Farg11            Equ       $09bf
;_Farg12            Equ       $0acf
;_Farg13            Equ       $0bdf
;_Farg14            Equ       $0cef
;_Farg15            Equ       $0dff

		   ELSE

_Farg0             Equ       $0000
_Farg1             Equ       $0111
_Farg2             Equ       $0222
_Farg3             Equ       $0333
_Farg4             Equ       $0444
_Farg5             Equ       $0555
_Farg6             Equ       $0666
_Farg7             Equ       $0777

_Farg8             Equ       $0888
_Farg9             Equ       $0999
_Farg10            Equ       $0aaa
_Farg11            Equ       $0bbb
_Farg12            Equ       $0ccc
_Farg13            Equ       $0ddd
_Farg14            Equ       $0eee
_Farg15            Equ       $0fff

		   ENDC

		   IFNE      NoGrid
Farg0              Equ        _Farg4
Farg1              Equ        _Farg4
Farg2              Equ        _Farg4
Farg3              Equ        _Farg4
Farg4              Equ        _Farg6
Farg5              Equ        _Farg6
Farg6              Equ        _Farg6
Farg7              Equ        _Farg6

Farg8              Equ        _Farg4
Farg9              Equ        _Farg4
Farg10             Equ        _Farg4
Farg11             Equ        _Farg4
Farg12             Equ        _Farg6
Farg13             Equ        _Farg6
Farg14             Equ        _Farg6
Farg15             Equ        _Farg6

		   ELSE

Farg0              Equ        SprCol
Farg1              Equ        SprCol
Farg2              Equ        SprCol
Farg3              Equ        SprCol
Farg4              Equ        SprCol
Farg5              Equ        SprCol
Farg6              Equ        SprCol
Farg7              Equ        SprCol

Farg8              Equ        SprCol
Farg9              Equ        SprCol
Farg10             Equ        SprCol
Farg11             Equ        SprCol
Farg12             Equ        SprCol
Farg13             Equ        SprCol
Farg14             Equ        SprCol
Farg15             Equ        SprCol

		   ENDC
;;;

***************************************
*       Exempel/TestProgram...        *
***************************************

		   Section   code,CODE

		   IFND      noexample
;;; "                 Example"
Start:             Jsr       _InitDemo
		   Tst.l     d0
		   Bne       Exit

PlayMusic:         Bsr       _PlayMusic
		   Tst.l     d0
		   Bne       Uninit

		   Bsr       Fastest_Init
		   Tst.l     d0
		   Bne       StopMusic

		   Bsr       Fastest_Show

Main:              Bsr       _Sync
		   Bsr       Fastest_Counter
		   Bsr       Fastest_Main

		   Btst      #6,$bfe001
		   Bne       Main
.waitlop           Btst      #6,$bfe001
		   Beq       .waitlop

		   Bsr       Fastest_Remove

StopMusic:         Bsr       _StopMusic
Uninit:            Bsr       _UninitDemo
Exit:              Moveq     #0,d0
		   Rts
;;;
		   ENDC

***************************************
*       Subrutiner nedanför....       *
***************************************

Fastest_Init:
;;; "                 Alloc CopperList"
AllocCopper:       Move.l    #10*1024,d0
		   Move.l    #Fastest_ID,d1
		   Jsr       _AllocChip
		   Tst.l     d0
		   Beq       InitError
		   Move.l    d0,CopperPtr
;;;
;;; "                 Init CopperList"
InitCList:         Move.l    CopperPtr,a0

		   Move.l    #$008e2c81,(a0)+     ; DIWSTRT
		   Move.l    #$00902cc1,(a0)+     ; DIWSTOP
		   Move.l    #$00920038,(a0)+     ; DDFSTRT
		   Move.l    #$009400d0,(a0)+     ; DDFSTOP
		   Move.l    #$01005201,(a0)+     ; BPLCON0
		   Move.l    #$01020010,(a0)+     ; BPLCON1
		   Move.l    #$01040024,(a0)+     ; BPLCON2
		   Move.l    #$01060020,(a0)+     ; BPLCON3 ($0020 = copborder)
		   Move.w    #$0108,(a0)+         ; BPLMOD1
		   Move.w    #-8,(a0)+
		   Move.w    #$010a,(a0)+         ; BPLMOD2
		   Move.w    #-8,(a0)+
		   Move.l    #$010c0022,(a0)+     ; Sprite palette = 31
		   Move.l    #$01fc000f,(a0)+     ; FETCHMODE

		   ;-----------------------------------

		   Move.l    a0,BplPtr
		   Move.l    #$00e00000,(a0)+     ; BPL1PTH
		   Move.l    #$00e20000,(a0)+     ; BPL1PTL
		   Move.l    #$00e40000,(a0)+     ; BPL1PTL
		   Move.l    #$00e60000,(a0)+     ; BPL1PTL
		   Move.l    #$00e80000,(a0)+     ; BPL1PTL
		   Move.l    #$00ea0000,(a0)+     ; BPL1PTL
		   Move.l    #$00ec0000,(a0)+     ; BPL1PTL
		   Move.l    #$00ee0000,(a0)+     ; BPL1PTL

		   Move.l    #$00f00000,(a0)+     ; BPL1PTH
		   Move.l    #$00f20000,(a0)+     ; BPL1PTL
		   Move.l    #$00f40000,(a0)+     ; BPL1PTL
		   Move.l    #$00f60000,(a0)+     ; BPL1PTL
		   Move.l    #$00f80000,(a0)+     ; BPL1PTL
		   Move.l    #$00fa0000,(a0)+     ; BPL1PTL
		   Move.l    #$00fc0000,(a0)+     ; BPL1PTL
		   Move.l    #$00fe0000,(a0)+     ; BPL1PTL

		   ;--------------------------------

		   Move.l    a0,SprPtr
		   Move.l    #$01200000,(a0)+     ; SPRxPT
		   Move.l    #$01220000,(a0)+     ; SPRxPT
		   Move.l    #$01240000,(a0)+     ; SPRxPT
		   Move.l    #$01260000,(a0)+     ; SPRxPT
		   Move.l    #$01280000,(a0)+     ; SPRxPT
		   Move.l    #$012a0000,(a0)+     ; SPRxPT
		   Move.l    #$012c0000,(a0)+     ; SPRxPT
		   Move.l    #$012e0000,(a0)+     ; SPRxPT
		   Move.l    #$01300000,(a0)+     ; SPRxPT
		   Move.l    #$01320000,(a0)+     ; SPRxPT
		   Move.l    #$01340000,(a0)+     ; SPRxPT
		   Move.l    #$01360000,(a0)+     ; SPRxPT
		   Move.l    #$01380000,(a0)+     ; SPRxPT
		   Move.l    #$013a0000,(a0)+     ; SPRxPT
		   Move.l    #$013c0000,(a0)+     ; SPRxPT
		   Move.l    #$013e0000,(a0)+     ; SPRxPT

		   ;--------------------

		   Move.l    #$2c,d0
		   Move.l    #64+42-1,d7

.lop1              Move.l    d0,d1
		   Swap      d1
		   Lsl.l     #8,d1
		   Or.l      #$0001fffe,d1
		   Move.l    d1,(a0)+

		   Move.w    #$0108,(a0)+
		   Move.w    #-48,(a0)+
		   Move.w    #$010a,(a0)+
		   Move.w    #-48,(a0)+
		   Move.l    #$01020010,(a0)+

		   Move.l    d0,d1
		   Addq.l    #1,d1
		   Swap      d1
		   Lsl.l     #8,d1
		   Or.l      #$0001fffe,d1
		   Move.l    d1,(a0)+

		   Move.w    #$0108,(a0)+
		   Move.w    #-8,(a0)+
		   Move.w    #$010a,(a0)+
		   Move.w    #-8,(a0)+
		   Move.l    #$01020021,(a0)+

		   Addq.l    #2,d0
		   Dbra      d7,.lop1

		   ;--------------------------

		   Move.l    #$ffdffffe,(a0)+

		   Move.l    #0,d0
		   Move.l    #22-1,d7

.lop2              Move.l    d0,d1
		   Swap      d1
		   Lsl.l     #8,d1
		   Or.l      #$0001fffe,d1
		   Move.l    d1,(a0)+

		   Move.w    #$0108,(a0)+
		   Move.w    #-48,(a0)+
		   Move.w    #$010a,(a0)+
		   Move.w    #-48,(a0)+
		   Move.l    #$01020010,(a0)+

		   Move.l    d0,d1
		   Addq.l    #1,d1
		   Swap      d1
		   Lsl.l     #8,d1
		   Or.l      #$0001fffe,d1
		   Move.l    d1,(a0)+

		   Move.w    #$0108,(a0)+
		   Move.w    #-8,(a0)+
		   Move.w    #$010a,(a0)+
		   Move.w    #-8,(a0)+
		   Move.l    #$01020021,(a0)+

		   Addq.l    #2,d0
		   Dbra      d7,.lop2

		   Move.l     #$fffffffe,(a0)+     ; End of list
;;;
;;; "                 Init Screen"
InitScreen:
		   Move.l    #40*128*5,d0
		   Move.l    #Fastest_ID,d1
		   Jsr       _AllocChip
		   Tst.l     d0
		   Beq       InitError
		   Move.l    d0,ScrPtr1
		   Add.l     #5120,d0
		   Move.l    d0,ScrPtr2
		   Add.l     #5120,d0
		   Move.l    d0,ViewPtr1
		   Add.l     #5120,d0
		   Move.l    d0,ViewPtr2
		   Add.l     #5120,d0
		   Move.l    d0,Plane5Ptr

		   ;------------------------

		   Move.l    BplPtr,a0
		   Move.l    ScrPtr1,d1
		   Moveq     #0,d2
		   Move.l    #0,d0
		   Jsr       _SetPtrs

		   Move.l    BplPtr,a0
		   Lea       8(a0),a0
		   Move.l    ScrPtr1,d1
		   Moveq     #0,d2
		   Move.l    #0,d0
		   Jsr       _SetPtrs

		   Move.l    BplPtr,a0
		   Lea       16(a0),a0
		   Move.l    ScrPtr2,d1
		   Moveq     #0,d2
		   Move.l    #0,d0
		   Jsr       _SetPtrs

		   Move.l    BplPtr,a0
		   Lea       24(a0),a0
		   Move.l    ScrPtr2,d1
		   Moveq     #0,d2
		   Move.l    #0,d0
		   Jsr       _SetPtrs

		   ;- - - - - - - - - - - - -

		   Move.l    BplPtr,a0
		   Lea       32(a0),a0
		   Move.l    Plane5Ptr,d1
		   Moveq     #0,d2
		   Move.l    #0,d0
		   Jsr       _SetPtrs

		   ;------------------------

		   Move.l    SprPtr,a0
		   Move.l    #SpriteDummy,d1
		   Moveq     #7,d2
		   Moveq     #0,d0
		   Jsr       _SetPtrs
;;;
;;; "                 Fill Plane5"
FillPlane5:        Move.l    #40*128/4-1,d0
		   Move.l    Plane5Ptr,a0
.lop               Move.l    #%01010101010101010101010101010101,(a0)+
		   Dbra      d0,.lop
;;;

;;; "                 Alloc TextureCopies"
AllocTextures:     Move.l    #256*256*2,d0
		   Move.l    #Fastest_ID,d1
		   Jsr       _AllocPublic
		   Tst.l     d0
		   Beq       InitError
		   Move.l    d0,TexturePtr1

		   Move.l    #256*256*2,d0
		   Move.l    #Fastest_ID,d1
		   Jsr       _AllocPublic
		   Tst.l     d0
		   Beq       InitError
		   Move.l    d0,TexturePtr2
;;;
;;; "                 Extract 4-bit Texture"
Extract:           Lea       Texture,a0
		   Move.l    TexturePtr1,a1
		   Move.l    #256/2*128-1,d7
.lop1
		   Move.b    (a0)+,d0
		   Move.b    d0,d1
		   And.l     #%11110000,d0
		   Lsr.l     #4,d0
		   And.l     #%00001111,d1

		   Move.w    d0,(a1)+
		   Move.w    d1,(a1)+

		   Dbra      d7,.lop1
;;;
;;; "                 Copy to second half"
Duplicate:         Move.l    TexturePtr1,a0
		   Move.l    TexturePtr1,a1
		   Add.l     #256*256,a1

		   Move.l    #256*256/4-1,d7
.copylop1          Move.l    (a0)+,(a1)+
		   Dbra      d7,.copylop1
;;;
;;; "                 Roll texture 1"
Copy2:             Move.l    TexturePtr1,a0

		   Move.l    #256*256*2/4-1,d7
.lop
		   Move.l    (a0),d0
		   Lsl.l     #8,d0
		   Move.l    d0,(a0)+

		   Dbra      d7,.lop
;;;
;;; "                 Copy to texture 2"
Copy4:             Move.l    TexturePtr1,a0
		   Move.l    TexturePtr2,a1

		   Move.l    #256*256*2/4-1,d7
.lop
		   Move.l    (a0)+,d0
		   Lsl.l     #4,d0
		   Move.l    d0,(a1)+

		   Dbra      d7,.lop
;;;

;;; "                 Rts"
		   Moveq     #0,d0
		   Rts

InitError:         Move.l    #Fastest_ID,d0
		   Bsr       _FreeMany
		   Moveq     #1,d0
		   Rts
;;;

Fastest_Show:
;;; "                 Init Colours"
InitCols1:         Move.w    #$0020,$dff106

		   Move.w    #Farg0,$dff180
		   Move.w    #Farg1,$dff182
		   Move.w    #Farg2,$dff184
		   Move.w    #Farg3,$dff186
		   Move.w    #Farg4,$dff188
		   Move.w    #Farg5,$dff18a
		   Move.w    #Farg6,$dff18c
		   Move.w    #Farg7,$dff18e
		   Move.w    #Farg8,$dff190
		   Move.w    #Farg9,$dff192
		   Move.w    #Farg10,$dff194
		   Move.w    #Farg11,$dff196
		   Move.w    #Farg12,$dff198
		   Move.w    #Farg13,$dff19a
		   Move.w    #Farg14,$dff19c
		   Move.w    #Farg15,$dff19e

		   Move.w    #_Farg0,$dff1a0
		   Move.w    #_Farg1,$dff1a2
		   Move.w    #_Farg2,$dff1a4
		   Move.w    #_Farg3,$dff1a6
		   Move.w    #_Farg4,$dff1a8
		   Move.w    #_Farg5,$dff1aa
		   Move.w    #_Farg6,$dff1ac
		   Move.w    #_Farg7,$dff1ae
		   Move.w    #_Farg8,$dff1b0
		   Move.w    #_Farg9,$dff1b2
		   Move.w    #_Farg10,$dff1b4
		   Move.w    #_Farg11,$dff1b6
		   Move.w    #_Farg12,$dff1b8
		   Move.w    #_Farg13,$dff1ba
		   Move.w    #_Farg14,$dff1bc
		   Move.w    #_Farg15,$dff1be

		   Move.w    #$2020,$dff106

		   Move.w    #SprCol,$dff180
		   Move.w    #SprCol,$dff182
		   Move.w    #SprCol,$dff184
		   Move.w    #SprCol,$dff186
		   Move.w    #SprCol,$dff188
		   Move.w    #SprCol,$dff18a
		   Move.w    #SprCol,$dff18c
		   Move.w    #SprCol,$dff18e
		   Move.w    #SprCol,$dff190
		   Move.w    #SprCol,$dff192
		   Move.w    #SprCol,$dff194
		   Move.w    #SprCol,$dff196
		   Move.w    #SprCol,$dff198
		   Move.w    #SprCol,$dff19a
		   Move.w    #SprCol,$dff19c
		   Move.w    #SprCol,$dff19e
;;;
;;; "                 Install Copperlist"
		   Move.l    CopperPtr,a0
		   Jsr       _InstallCopper
;;;
		   Rts

Fastest_Counter:
;;; "                 Add Counters"
AddCounters:       Add.l     #1,Fastest_Angle
		   And.l     #1023,Fastest_Angle

		   Add.l      #1024,Fastest_XOff
		   Add.l      #1024,Fastest_YOff

		   Add.l     #4,Zoom
		   And.l     #1023,Zoom

		   Lea       _Sin1024,a0
		   Move.l    Zoom,d0
		   Move.w    (a0,d0*2),d3
		   Asl.w     #1,d3
		   Add.w     #512+DIST,d3
		   Move.w    d3,Fastest_Zoom
;;;
		   Rts

Fastest_Main:
;;; "                 Make Adders"
		   Lea       _Sin1024,a0
		   Moveq     #0,d7

		   Move.w    Fastest_Zoom,d3

		   Move.l    Fastest_Angle,d0
		   And.l     #1023,d0
		   Move.w    (a0,d0*2),d1
		   Muls.w    d3,d1
		   Asr.l     #8,d1
		   Addx.l    d7,d1

		   Add.l     #256,d0
		   And.l     #1023,d0
		   Move.w    (a0,d0*2),d2
		   Muls.w    d3,d2
		   Asr.l     #8,d2
		   Addx.l    d7,d2

		   Move.l    d2,Yadd1
		   Move.l    d1,Yadd2
		   Move.l    d1,Xadd1
		   Neg.l     d2
		   Move.l    d2,Xadd2
;;;
;;; "                 Make Offset Table"
		   Moveq     #0,d6

		   Move.l    Yadd1,a4
		   Move.l    Yadd2,a5

		   Lea       PlotLop,a0
		   Lea       OffsetTable,a2

		   Moveq     #0,d2
		   Moveq     #0,d1
		   Moveq     #0,d0
		   Move.l    #16-1,d7

MakeTable:         Sub.l     a4,d1
		   Sub.l     a5,d2

		   Move.l    d1,d0
		   Asr.l     #8,d0
		   Addx.l    d6,d0
		   Asl.l     #8,d0

		   Move.l    d2,d3
		   Asr.l     #8,d3
		   Addx.l    d6,d0
		   Move.b    d3,d0
		   Asl.w     #1,d0               ;Words...
		   Move.l    (a2)+,d5            ;Get inst. offset
		   Move.w    d0,(a0,d5)          ;Poke instruction

		   Dbra      d7,MakeTable
;;;
;;; "                 Make Offset Table (16 Steps)"
		   Moveq     #0,d6

		   Move.l    Yadd1,d0
		   Asl.l     #4,d0
		   Move.l    d0,a4
		   Move.l    Yadd2,d0
		   ;Asl.l     #4,d0
		   Move.l    d0,a5

		   Lea       TempTable,a0

		   Moveq     #0,d2
		   Moveq     #0,d1
		   Moveq     #0,d0
		   Move.l    #16-1,d7

MakeTable16:       Add.l     a4,d1
		   Add.l     a5,d2

		   Move.l    d1,d0
		   Asr.l     #8,d0
		   Addx.l    d6,d0
		   Asl.l     #8,d0

		   Move.l    d2,d3
		   Asr.l     #4,d3
		   Addx.l    d6,d0
		   Move.b    d3,d0

		   Asl.w     #1,d0               ;Words...
		   Move.w    d0,(a0)+            ;Poke instruction

		   Dbra      d7,MakeTable16
;;;
;;; "                 Calculate Starting point"
		   Lea       _Sin1024,a0
		   Moveq     #0,d7

		   Move.w    Fastest_Zoom,d3

		   Move.l    Fastest_XOff,d4
		   Move.l    Fastest_YOff,d5

		   ;--------------------------

		   Move.l    Fastest_Angle,d0
		   Add.l     #256,d0
		   And.l     #1023,d0
		   Move.w    (a0,d0*2),d1
		   Muls.w    d3,d1
		   Muls.l    #-160/2,d1

		   Sub.l     #256,d0
		   And.l     #1023,d0
		   Move.w    (a0,d0*2),d2
		   Muls.w    d3,d2
		   Muls.l    #-128/2,d2

		   Add.l     d2,d1
		   Asr.l     #8,d1
		   Addx.l    d7,d1
		   Add.l     d4,d1
		   Move.l    d1,XStart

		   ;--------------------------

		   Move.l    Fastest_Angle,d0
		   Add.l     #0,d0
		   And.l     #1023,d0
		   Move.w    (a0,d0*2),d1
		   Muls.w    d3,d1
		   Muls.l    #-160/2,d1

		   Add.l     #256,d0
		   And.l     #1023,d0
		   Move.w    (a0,d0*2),d2
		   Muls.w    d3,d2
		   Muls.l    #-128/2,d2

		   Sub.l     d2,d1
		   Asr.l     #8,d1
		   Addx.l    d7,d1
		   Add.l     d5,d1
		   Move.l    d1,YStart
;;;
;;; "                 Clear Cache"
		   Move.l    _ExecBase,a6
		   Jsr       _LVOCacheClearU(a6)
		   Nop
;;;
;;; "                 Plot"
		   Move.l    ScrPtr1,a2
		   Move.l    ScrPtr2,a3

		   Move.l    XStart,XCurr1
		   Move.l    YStart,XCurr2

		   Move.l    #128-1,YCount
YLine:
		   Move.l    Xadd2,d1
		   Add.l     d1,XCurr2
		   Move.l    Xadd1,d1
		   Add.l     d1,XCurr1

		   Moveq     #0,d6
		   Move.l    XCurr1,d1
		   Asr.l     #8,d1
		   Addx.l    d6,d1
		   Asl.l     #8,d1

		   Move.l    XCurr2,d0
		   Asr.l     #8,d0
		   Addx.l    d6,d0
		   Move.b    d0,d1
		   Asl.w     #1,d1               ;Words...
		   Move.w    d1,d6

		   Move.l    TexturePtr1,a4
		   Add.l     #256*256,a4
		   Move.l    TexturePtr2,a5
		   Add.l     #256*256,a5

		   Lea       TempTable,a6

		   Move.l    #%00110011001100110011001100110011,d4
		   Move.l    #%11001100110011001100110011001100,d5

		   Move.l    #160/16-1,d7

XLine:             Move.w    (a6)+,d0
		   Add.w     d6,d0

		   Move.l    a4,a0
		   Add.w     d0,a0
		   Move.l    a5,a1
		   Add.w     d0,a1

PlotLop:           Move.w    2(a0),d3
		   Or.w      2(a1),d3
		   Move.b    2(a0),d3
		   Or.b      2(a1),d3
		   Swap      d3
		   Move.w    2(a0),d3
		   Or.w      2(a1),d3
		   Move.b    2(a0),d3
		   Or.b      2(a1),d3

		   Move.w    2(a0),d2
		   Or.w      2(a1),d2
		   Move.b    2(a0),d2
		   Or.b      2(a1),d2
		   Swap      d2
		   Move.w    2(a0),d2
		   Or.w      2(a1),d2
		   Move.b    2(a0),d2
		   Or.b      2(a1),d2

		   ;- - - - - - - - - - - - -

		   Move.l    d2,d1
		   Move.l    d3,d0

		   And.l     d4,d2
		   And.l     d5,d1
		   And.l     d4,d3
		   And.l     d5,d0

		   Lsl.l     #2,d2
		   Lsr.l     #2,d0

		   Or.l      d3,d2
		   Or.l      d0,d1
		   Move.l    d2,(a2)+
		   Move.l    d1,(a3)+

		   Dbra      d7,XLine

		   Subq.l    #1,YCount
		   Bge       YLine
;;;
;;; "                 Screen Swap"
		   Move.l    ScrPtr1,d0
		   Move.l    ViewPtr1,ScrPtr1
		   Move.l    d0,ViewPtr1

		   Move.l    ScrPtr2,d0
		   Move.l    ViewPtr2,ScrPtr2
		   Move.l    d0,ViewPtr2

		   ;--------------------------

		   Move.l    BplPtr,a0
		   Move.l    ViewPtr1,d1
		   Moveq     #0,d2
		   Move.l    #0,d0
		   Jsr       _SetPtrs

		   Move.l    BplPtr,a0
		   Lea       8(a0),a0
		   Move.l    ViewPtr1,d1
		   Moveq     #0,d2
		   Move.l    #0,d0
		   Jsr       _SetPtrs

		   Move.l    BplPtr,a0
		   Lea       16(a0),a0
		   Move.l    ViewPtr2,d1
		   Moveq     #0,d2
		   Move.l    #0,d0
		   Jsr       _SetPtrs

		   Move.l    BplPtr,a0
		   Lea       24(a0),a0
		   Move.l    ViewPtr2,d1
		   Moveq     #0,d2
		   Move.l    #0,d0
		   Jsr       _SetPtrs
;;;
		   Rts

Fastest_Remove:
;;; "                 Free Memory"
CloseScreen:       Move.l    #Fastest_ID,d0
		   Jsr       _FreeMany
;;;
		   Rts

***************************************
*                Data...              *
***************************************

;;; "Variables / Tables"
		   Cnop      0,8

Int1:              Dc.l      0

Temp1:             Dc.l      0
Temp2:             Dc.l      0
Temp3:             Dc.l      0
Temp4:             Dc.l      0

YCount:            Dc.l      0

Even:              Dc.l      0
Yadd1:             Dc.l      0
Yadd2:             Dc.l      0
Xadd1:             Dc.l      0
Xadd2:             Dc.l      0

XCurr1:            Dc.l      0
XCurr2:            Dc.l      0
Begin1:            Dc.l      0
Begin2:            Dc.l      0

XStart:            Dc.l      0
YStart:            Dc.l      0

Zoom:              Dc.l      0

Fastest_Angle:     Dc.l      0
Fastest_Zoom:      Dc.l      0
Fastest_XOff:      Dc.l      0
Fastest_YOff:      Dc.l      0

ScrPtr1:           Dc.l      0
ScrPtr2:           Dc.l      0
ViewPtr1:          Dc.l      0
ViewPtr2:          Dc.l      0
Plane5Ptr:         Dc.l      0

CopperPtr:         Dc.l      0
BplPtr:            Dc.l      0
SprPtr:            Dc.l      0

TexturePtr1:       Dc.l      0
TexturePtr2:       Dc.l      0



OffsetTable:       Dc.l      28,62,32,66,20,54,24,58
		   Dc.l      10,44,14,48, 2,36, 6,40

TempTable:         Dc.w      0,0,0,0,0,0,0,0
		   Dc.w      0,0,0,0,0,0,0,0

ScrambleTable2:    Dc.l      9,1,8,0,11,3,10,2
		   Dc.l      13,5,12,4,15,7,14,6
;;;

		   Section   data,DATA
;;; "Texture"
		   Cnop      0,8
Texture:           Incbin    "!intro:fastest/textures/atomic.4bit"
;;;

