MODULE Magic;

(*----------------------------------------------------------------------------
 * System-Version: MOS 3.5
 *----------------------------------------------------------------------------
 * Version       : 1.0
 *----------------------------------------------------------------------------
 * Text-Version  : V#00034
 *----------------------------------------------------------------------------
 * Modul-Holder  : Meinolf Schneider
 *----------------------------------------------------------------------------
 * Copyright May 1990 by Digital Art Meinolf Schneider
 *----------------------------------------------------------------------------
 * MS  : Meinolf Schneider
 *----------------------------------------------------------------------------
 * Datum    Autor Version Bemerkung (Arbeitsbericht)
 *----------------------------------------------------------------------------
 * 01.05.90 MS    1.0     Grundversion
 *----------------------------------------------------------------------------
 * Modul-Beschreibung:
 *
 * Residentes Gimmick-Programm fr Atari ST mit monochromen Monitor, bei dem
 * der Mauscursor viele kleine Sternchen auf dem Bildschirm hinterlt.
 *----------------------------------------------------------------------------
 *) (*$S-,R-,C-,N+*)

FROM    System          IMPORT  ADDRESS, ADR, BYTE;

FROM    MSSystems       IMPORT  MinMaxRandom, EnterSupervisorMode,
                                Allocate, WriteString, WriteLn, Write;

FROM    MSGraphics      IMPORT  Sprite, CopyScreen, Switch, SwitchSides,
                                DisplayScreen, WorkScreen,
                                GetSystemScreen;

CONST   MaxNoOfStars    =      20;
        StarRate        =       2;
        PicFreq         =       3; (* Alle drei VBLs ein Bild malen *)
        StarArea        =      10;
        
        Stars1                          =       0;
        Stars2                          =       1;
        
        StarType                        =  Stars1;
        (* Um den anderen Sternentyp zu verwenden, mu hier nur
         * die Zeile in 'StarType =  Stars2;' ausgetauscht werden *)
        
        
TYPE    StarRec  =      RECORD
                          IsActive              : BOOLEAN;
                          X, Y                  : INTEGER;
                          AnimationPhase        : INTEGER;
                        END;
        
         

VAR     VBLStack                : ARRAY[0..99] OF CARDINAL;
        VBLTimer                : CARDINAL;
        OldVBLIRQ               : ADDRESS;
        
        Star                    : ARRAY[0..MaxNoOfStars] OF StarRec;
        StarRateCounter         : CARDINAL;
        StarSprites             : POINTER TO ARRAY[0..14] OF INTEGER;

        TOSScreen               : ADDRESS;
        
        StarSpriteList          : ADDRESS;
        
        TOSScreenOnDisplay      : BOOLEAN;
        DirectTOSScreenShow     : BOOLEAN;

        i                       : CARDINAL;
        
        MouseMoved              : BOOLEAN;
        MouseXPos, MouseYPos    : POINTER TO INTEGER;
        OldMouseXPos,
        OldMouseYPos            : INTEGER;


(*---------------------------------------------------------------------------*)

(* Abfolge der einzelnen Sternchenbilder zum Aufblitzen *)
TABLE.W  (*$? StarType = Stars1:
         TabStarSprites  :  0,1,2,3,4,5,6,6,5,4,3,2,1,0,0,0,0;
         *)
         (*$? StarType = Stars2:
         TabStarSprites  :  8,7,6,5,4,3,2,1,0;
         *)
  

(*$? StarType = Stars1:
TABLE.L  TabStarSpriteList:
         $00001404, $000A8000, $00000030, $00000144, $00000290, $00000424,
         $00000650, $0000093C, $00000DB0, $00000000, $00000000, $00000000,
         $FFFFFFFF, $00030003, $00080001, $0000004C, $00000058, $00000064,
         $00000070, $0000007C, $00000088, $00000094, $000000A2, $000000B0,
         $000000BC, $000000C8, $000000D4, $000000E0, $000000EC, $000000F8,
         $00000106, $0000000C, $00010003, $E0A0E0F4, $0000000C, $00010003,
         $70507000, $0000000C, $00010003, $38283800, $0000000C, $00010003,
         $1C141C80, $0000000C, $00010003, $0E0A0E18, $0000000C, $00010003,
         $07050700, $0000000E, $00020003, $03020380, $80800000, $000E0002,
         $00030101, $01C040C0, $0000000C, $00010003, $1F1F1FA0, $0000000C,
         $00010003, $8F8F8F00, $0000000C, $00010003, $C7C7C7D0, $0000000C,
         $00010003, $E3E3E300, $0000000C, $00010003, $F1F1F100, $0000000C,
         $00010003, $F8F8F800, $0000000E, $00020003, $FCFCFC7F, $7F7F0000,
         $000E0002, $0003FEFE, $FE3F3F3F, $FFFEFFFE, $00050005, $00080001,
         $0000004C, $0000005A, $00000068, $00000076, $00000084, $00000096,
         $000000A8, $000000BA, $000000CC, $000000DA, $000000E8, $000000F6,
         $00000104, $00000116, $00000128, $0000013A, $0000000E, $00010005,
         $70D888D8, $70000000, $000E0001, $0005386C, $446C3800, $0000000E,
         $00010005, $1C362236, $1C000000, $000E0001, $00050E1B, $111B0E00,
         $00000012, $00020005, $070D080D, $07008080, $80000000, $00120002,
         $00050306, $04060380, $C040C080, $00000012, $00020005, $01030203,
         $01C06020, $60C00000, $00120002, $00050001, $010100E0, $B010B0E0,
         $0000000E, $00010005, $8F070707, $8F000000, $000E0001, $0005C783,
         $8383C700, $0000000E, $00010005, $E3C1C1C1, $E3000000, $000E0001,
         $0005F1E0, $E0E0F100, $00000012, $00020005, $F8F0F0F0, $F8FF7F7F,
         $7FFF0000, $00120002, $0005FCF8, $F8F8FC7F, $3F3F3F7F, $00000012,
         $00020005, $FEFCFCFC, $FE3F1F1F, $1F3F0000, $00120002, $0005FFFE,
         $FEFEFF1F, $0F0F0F1F, $FFFDFFFD, $00070007, $00080001, $0000004C,
         $0000005C, $0000006C, $00000082, $00000098, $000000AE, $000000C4,
         $000000DA, $000000F0, $00000100, $00000110, $00000126, $0000013C,
         $00000152, $00000168, $0000017E, $00000010, $00010007, $3828EE82,
         $EE283800, $00000010, $00010007, $1C147741, $77141C00, $00000016,
         $00020007, $0E0A3B20, $3B0A0E00, $00808080, $00000000, $00160002,
         $00070705, $1D101D05, $070000C0, $40C00000, $00000016, $00020007,
         $03020E08, $0E020380, $80E020E0, $80800000, $00160002, $00070101,
         $07040701, $01C04070, $107040C0, $00000016, $00020007, $00000302,
         $030000E0, $A0B808B8, $A0E00000, $00160002, $00070000, $01010100,
         $007050DC, $04DC5070, $00000010, $00010007, $C7C70101, $01C7C755,
         $00000010, $00010007, $E3E38080, $80E3E355, $00000016, $00020007,
         $F1F1C0C0, $C0F1F1FF, $FF7F7F7F, $FFFF0000, $00160002, $0007F8F8,
         $E0E0E0F8, $F8FFFF3F, $3F3FFFFF, $00000016, $00020007, $FCFCF0F0,
         $F0FCFC7F, $7F1F1F1F, $7F7F0000, $00160002, $0007FEFE, $F8F8F8FE,
         $FE3F3F0F, $0F0F3F3F, $00000016, $00020007, $FFFFFCFC, $FCFFFF1F,
         $1F070707, $1F1F0000, $00160002, $0007FFFF, $FEFEFEFF, $FF8F8F03,
         $03038F8F, $FFFCFFFB, $0009000B, $00080001, $0000004C, $0000006A,
         $00000088, $000000A6, $000000C4, $000000E2, $00000100, $0000011E,
         $0000013C, $0000015A, $00000178, $00000196, $000001B4, $000001D2,
         $000001F0, $0000020E, $0000001E, $0002000B, $1C141434, $E780E734,
         $14141C00, $00000080, $80800000, $00000000, $001E0002, $000B0E0A,
         $0A1A7340, $731A0A0A, $0E000000, $00C040C0, $00000000, $0000001E,
         $0002000B, $0705050D, $3920390D, $05050700, $000000E0, $20E00000,
         $00000000, $001E0002, $000B0302, $02061C10, $1C060202, $03808080,
         $80F010F0, $80808080, $0000001E, $0002000B, $01010103, $0E080E03,
         $010101C0, $40404078, $08784040, $40C00000, $001E0002, $000B0000,
         $00010704, $07010000, $00E0A0A0, $A03C043C, $A0A0A0E0, $0000001E,
         $0002000B, $00000000, $03020300, $00000070, $5050D09E, $029ED050,
         $50700000, $001E0002, $000B0000, $00000101, $01000000, $00382828,
         $68CF01CF, $68282838, $0000001E, $0002000B, $E3E3E3C3, $000000C3,
         $E3E3E3FF, $FFFFFF7F, $7F7FFFFF, $FFFF0000, $001E0002, $000BF1F1,
         $F1E18080, $80E1F1F1, $F1FFFFFF, $FF3F3F3F, $FFFFFFFF, $0000001E,
         $0002000B, $F8F8F8F0, $C0C0C0F0, $F8F8F8FF, $FFFFFF1F, $1F1FFFFF,
         $FFFF0000, $001E0002, $000BFCFC, $FCF8E0E0, $E0F8FCFC, $FC7F7F7F,
         $7F0F0F0F, $7F7F7F7F, $0000001E, $0002000B, $FEFEFEFC, $F0F0F0FC,
         $FEFEFE3F, $3F3F3F07, $07073F3F, $3F3F0000, $001E0002, $000BFFFF,
         $FFFEF8F8, $F8FEFFFF, $FF1F1F1F, $1F030303, $1F1F1F1F, $0000001E,
         $0002000B, $FFFFFFFF, $FCFCFCFF, $FFFFFF8F, $8F8F0F01, $01010F8F,
         $8F8F0000, $001E0002, $000BFFFF, $FFFFFEFE, $FEFFFFFF, $FFC7C7C7,
         $87000000, $87C7C7C7, $FFFBFFF9, $000B000F, $00080001, $0000004C,
         $00000072, $00000098, $000000BE, $000000E4, $0000010A, $00000130,
         $00000166, $0000019C, $000001C2, $000001E8, $0000020E, $00000234,
         $0000025A, $00000280, $000002B6, $00000026, $0002000F, $0E0A0A0A,
         $1A13F180, $F1190B0A, $0A0A0E00, $00000000, $00E020E0, $00000000,
         $00000000, $00260002, $000F0705, $05050D09, $7840780C, $05050505,
         $07000000, $000080F0, $10F08080, $00000000, $00000026, $0002000F,
         $03020202, $06043C20, $3C060202, $02020380, $80808080, $C0780878,
         $40C08080, $80800000, $00260002, $000F0101, $01010302, $1E101E03,
         $01010101, $01C04040, $4040603C, $043C2060, $404040C0, $00000026,
         $0002000F, $00000000, $01010F08, $0F010000, $000000E0, $A0A0A0A0,
         $301E021E, $90B0A0A0, $A0E00000, $00260002, $000F0000, $00000000,
         $07040700, $00000000, $00705050, $50D0988F, $018FC858, $50505070,
         $00000036, $0003000F, $00000000, $00000302, $03000000, $00000038,
         $28282868, $4CC700C7, $642C2828, $28380000, $00000000, $80808000,
         $00000000, $00080000, $00360003, $000F0000, $00000000, $01010100,
         $00000000, $001C1414, $143426E3, $00E33216, $1414141C, $00000000,
         $0000C040, $C0000000, $0000005A, $00000026, $0002000F, $F1F1F1F1,
         $E1E00000, $00E0F0F1, $F1F1F1FF, $FFFFFFFF, $FF1F1F1F, $FFFFFFFF,
         $FFFF0000, $00260002, $000FF8F8, $F8F8F0F0, $808080F0, $F8F8F8F8,
         $F8FFFFFF, $FFFF7F0F, $0F0F7F7F, $FFFFFFFF, $00000026, $0002000F,
         $FCFCFCFC, $F8F8C0C0, $C0F8FCFC, $FCFCFC7F, $7F7F7F7F, $3F070707,
         $3F3F7F7F, $7F7F0000, $00260002, $000FFEFE, $FEFEFCFC, $E0E0E0FC,
         $FEFEFEFE, $FE3F3F3F, $3F3F1F03, $03031F1F, $3F3F3F3F, $00000026,
         $0002000F, $FFFFFFFF, $FEFEF0F0, $F0FEFFFF, $FFFFFF1F, $1F1F1F1F,
         $0F010101, $0F0F1F1F, $1F1F0000, $00260002, $000FFFFF, $FFFFFFFF,
         $F8F8F8FF, $FFFFFFFF, $FF8F8F8F, $8F0F0700, $00000787, $8F8F8F8F,
         $00000036, $0003000F, $FFFFFFFF, $FFFFFCFC, $FCFFFFFF, $FFFFFFC7,
         $C7C7C787, $83000000, $83C3C7C7, $C7C7FFFF, $FFFFFFFF, $7F7F7FFF,
         $FFFFFFFF, $FF000000, $00360003, $000FFFFF, $FFFFFFFF, $FEFEFEFF,
         $FFFFFFFF, $FFE3E3E3, $E3C3C100, $0000C1E1, $E3E3E3E3, $FFFFFFFF,
         $FFFF3F3F, $3FFFFFFF, $FFFFFF4C, $FFF9FFF6, $000F0015, $00080001,
         $0000004C, $0000007E, $000000B0, $000000F8, $00000140, $00000188,
         $000001D0, $00000218, $00000260, $00000292, $000002C4, $0000030C,
         $00000354, $0000039C, $000003E4, $0000042C, $00000032, $00020015,
         $03020202, $02020604, $0CF880F8, $0C040602, $02020202, $03808080,
         $80808080, $C0603E02, $3E6040C0, $80808080, $80800000, $00320002,
         $00150101, $01010101, $0302067C, $407C0602, $03010101, $010101C0,
         $40404040, $40406030, $1F011F30, $20604040, $404040C0, $00000048,
         $00030015, $00000000, $00000101, $033E203E, $03010100, $00000000,
         $00E0A0A0, $A0A0A0A0, $30180F00, $0F1810B0, $A0A0A0A0, $A0E00000,
         $00000000, $00000080, $80800000, $00000000, $00000012, $00000048,
         $00030015, $00000000, $00000000, $011F101F, $01000000, $00000000,
         $00705050, $505050D0, $988C0700, $078C88D8, $50505050, $50700000,
         $00000000, $000000C0, $40C00000, $00000000, $000000FD, $00000048,
         $00030015, $00000000, $00000000, $000F080F, $00000000, $00000000,
         $00382828, $28282868, $4CC68300, $83C6446C, $28282828, $28380000,
         $00000000, $000000E0, $20E00000, $00000000, $0000007E, $00000048,
         $00030015, $00000000, $00000000, $00070407, $00000000, $00000000,
         $001C1414, $14141434, $2663C100, $C1632236, $14141414, $141C0000,
         $00000000, $000000F0, $10F00000, $00000000, $00000000, $00000048,
         $00030015, $00000000, $00000000, $00030203, $00000000, $00000000,
         $000E0A0A, $0A0A0A1A, $1331E000, $E031111B, $0A0A0A0A, $0A0E0000,
         $00000000, $000080F8, $08F88000, $00000000, $00000000, $00000048,
         $00030015, $00000000, $00000000, $00010101, $00000000, $00000000,
         $00070505, $0505050D, $0918F000, $F018080D, $05050505, $05070000,
         $00000000, $0080C07C, $047CC080, $80000000, $0000007F, $00000032,
         $00020015, $FCFCFCFC, $FCFCF8F8, $F0000000, $F0F8F8FC, $FCFCFCFC,
         $FC7F7F7F, $7F7F7F7F, $3F1F0101, $011F3F3F, $7F7F7F7F, $7F7F0000,
         $00320002, $0015FEFE, $FEFEFEFE, $FCFCF880, $8080F8FC, $FCFEFEFE,
         $FEFEFE3F, $3F3F3F3F, $3F3F1F0F, $0000000F, $1F1F3F3F, $3F3F3F3F,
         $00000048, $00030015, $FFFFFFFF, $FFFFFEFE, $FCC0C0C0, $FCFEFEFF,
         $FFFFFFFF, $FF1F1F1F, $1F1F1F1F, $0F070000, $00070F0F, $1F1F1F1F,
         $1F1FFFFF, $FFFFFFFF, $FFFFFF7F, $7F7FFFFF, $FFFFFFFF, $FFFFFF96,
         $00000048, $00030015, $FFFFFFFF, $FFFFFFFF, $FEE0E0E0, $FEFFFFFF,
         $FFFFFFFF, $FF8F8F8F, $8F8F8F0F, $07030000, $00030707, $8F8F8F8F,
         $8F8FFFFF, $FFFFFFFF, $FFFFFF3F, $3F3FFFFF, $FFFFFFFF, $FFFFFF00,
         $00000048, $00030015, $FFFFFFFF, $FFFFFFFF, $FFF0F0F0, $FFFFFFFF,
         $FFFFFFFF, $FFC7C7C7, $C7C7C787, $83010000, $00018383, $C7C7C7C7,
         $C7C7FFFF, $FFFFFFFF, $FFFFFF1F, $1F1FFFFF, $FFFFFFFF, $FFFFFF0B,
         $00000048, $00030015, $FFFFFFFF, $FFFFFFFF, $FFF8F8F8, $FFFFFFFF,
         $FFFFFFFF, $FFE3E3E3, $E3E3E3C3, $C1800000, $0080C1C1, $E3E3E3E3,
         $E3E3FFFF, $FFFFFFFF, $FFFFFF0F, $0F0FFFFF, $FFFFFFFF, $FFFFFF00,
         $00000048, $00030015, $FFFFFFFF, $FFFFFFFF, $FFFCFCFC, $FFFFFFFF,
         $FFFFFFFF, $FFF1F1F1, $F1F1F1E1, $E0C00000, $00C0E0E0, $F1F1F1F1,
         $F1F1FFFF, $FFFFFFFF, $FFFF7F07, $07077FFF, $FFFFFFFF, $FFFFFF00,
         $00000048, $00030015, $FFFFFFFF, $FFFFFFFF, $FFFEFEFE, $FFFFFFFF,
         $FFFFFFFF, $FFF8F8F8, $F8F8F8F0, $F0E00000, $00E0F0F0, $F8F8F8F8,
         $F8F8FFFF, $FFFFFFFF, $FF7F3F03, $03033F7F, $7FFFFFFF, $FFFFFFE0,
         $FFF7FFF3, $0013001B, $00080001, $0000004C, $000000A6, $00000100,
         $0000015A, $000001B4, $0000020E, $00000268, $000002DC, $00000350,
         $000003AA, $00000404, $0000045E, $000004B8, $00000512, $0000056C,
         $000005E0, $0000005A, $0003001B, $00000000, $00000001, $01010302,
         $FE80FC06, $03010101, $00000000, $000000E0, $A0A0A0A0, $A0A0A020,
         $30101C07, $00071C10, $3020A0A0, $A0A0A0A0, $A0E00000, $00000000,
         $00000000, $0000E020, $E0000000, $00000000, $00000000, $00000000,
         $005A0003, $001B0000, $00000000, $00000000, $01017F40, $7E030100,
         $00000000, $00000000, $00705050, $50505050, $D0909888, $0E030003,
         $0E889890, $D0505050, $50505070, $00000000, $00000000, $00000000,
         $F010F000, $00000000, $00000000, $00000002, $0000005A, $0003001B,
         $00000000, $00000000, $00000000, $3F203F01, $00000000, $00000000,
         $00000038, $28282828, $28286848, $4CC48781, $000187C4, $4C486828,
         $28282828, $28380000, $00000000, $00000000, $0000F808, $F8000000,
         $00000000, $00000000, $00000000, $005A0003, $001B0000, $00000000,
         $00000000, $00001F10, $1F000000, $00000000, $00000000, $001C1414,
         $14141414, $34242662, $43C00080, $C3622624, $34141414, $1414141C,
         $00000000, $00000000, $00000080, $FC04FC80, $00000000, $00000000,
         $00000020, $0000005A, $0003001B, $00000000, $00000000, $00000000,
         $0F080F00, $00000000, $00000000, $0000000E, $0A0A0A0A, $0A0A1A12,
         $133121E0, $00C06131, $13121A0A, $0A0A0A0A, $0A0E0000, $00000000,
         $00000000, $00C07E02, $7EC00000, $00000000, $00000000, $001C0000,
         $005A0003, $001B0000, $00000000, $00000000, $00000704, $07000000,
         $00000000, $00000000, $00070505, $05050505, $0D090918, $10F000E0,
         $30180909, $0D050505, $05050507, $00000000, $00000000, $008080E0,
         $3F013FE0, $80800000, $00000000, $0000000F, $00000074, $0004001B,
         $00000000, $00000000, $00000000, $03020300, $00000000, $00000000,
         $00000003, $02020202, $02020604, $040C08F8, $00F0180C, $04040602,
         $02020202, $02038080, $80808080, $808080C0, $40701F00, $1F7040C0,
         $80808080, $80808080, $80000000, $00000000, $00000000, $00808080,
         $00000000, $00000000, $00000000, $00000074, $0004001B, $00000000,
         $00000000, $00000000, $01010100, $00000000, $00000000, $00000001,
         $01010101, $01010302, $020604FC, $00F80C06, $02020301, $01010101,
         $0101C040, $40404040, $40404060, $20380F00, $0F382060, $40404040,
         $40404040, $C0000000, $00000000, $00000000, $00C040C0, $00000000,
         $00000000, $00000000, $0000005A, $0003001B, $FFFFFFFF, $FFFFFFFE,
         $FEFEFCFC, $000000F8, $FCFEFEFE, $FFFFFFFF, $FFFFFF1F, $1F1F1F1F,
         $1F1F1F1F, $0F0F0300, $0000030F, $0F1F1F1F, $1F1F1F1F, $1F1FFFFF,
         $FFFFFFFF, $FFFFFFFF, $FFFF1F1F, $1FFFFFFF, $FFFFFFFF, $FFFFFFFF,
         $FF000000, $005A0003, $001BFFFF, $FFFFFFFF, $FFFFFFFF, $FEFE8080,
         $80FCFEFF, $FFFFFFFF, $FFFFFFFF, $FF8F8F8F, $8F8F8F8F, $0F0F0707,
         $01000000, $0107070F, $0F8F8F8F, $8F8F8F8F, $FFFFFFFF, $FFFFFFFF,
         $FFFFFFFF, $0F0F0FFF, $FFFFFFFF, $FFFFFFFF, $FFFFFF03, $0000005A,
         $0003001B, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $C0C0C0FE, $FFFFFFFF,
         $FFFFFFFF, $FFFFFFC7, $C7C7C7C7, $C7C78787, $83030000, $00000003,
         $838787C7, $C7C7C7C7, $C7C7FFFF, $FFFFFFFF, $FFFFFFFF, $FFFF0707,
         $07FFFFFF, $FFFFFFFF, $FFFFFFFF, $FF000000, $005A0003, $001BFFFF,
         $FFFFFFFF, $FFFFFFFF, $FFFFE0E0, $E0FFFFFF, $FFFFFFFF, $FFFFFFFF,
         $FFE3E3E3, $E3E3E3E3, $C3C3C181, $80000000, $0081C1C3, $C3E3E3E3,
         $E3E3E3E3, $FFFFFFFF, $FFFFFFFF, $FFFFFF7F, $0303037F, $FFFFFFFF,
         $FFFFFFFF, $FFFFFF48, $0000005A, $0003001B, $FFFFFFFF, $FFFFFFFF,
         $FFFFFFFF, $F0F0F0FF, $FFFFFFFF, $FFFFFFFF, $FFFFFFF1, $F1F1F1F1,
         $F1F1E1E1, $E0C0C000, $000080C0, $E0E1E1F1, $F1F1F1F1, $F1F1FFFF,
         $FFFFFFFF, $FFFFFFFF, $FF3F0101, $013FFFFF, $FFFFFFFF, $FFFFFFFF,
         $FF000000, $005A0003, $001BFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFF8F8,
         $F8FFFFFF, $FFFFFFFF, $FFFFFFFF, $FFF8F8F8, $F8F8F8F8, $F0F0F0E0,
         $E0000000, $C0E0F0F0, $F0F8F8F8, $F8F8F8F8, $FFFFFFFF, $FFFFFFFF,
         $FF7F7F1F, $0000001F, $7F7FFFFF, $FFFFFFFF, $FFFFFFFF, $00000074,
         $0004001B, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FCFCFCFF, $FFFFFFFF,
         $FFFFFFFF, $FFFFFFFC, $FCFCFCFC, $FCFCF8F8, $F8F0F000, $0000E0F0,
         $F8F8F8FC, $FCFCFCFC, $FCFC7F7F, $7F7F7F7F, $7F7F7F3F, $3F0F0000,
         $000F3F3F, $7F7F7F7F, $7F7F7F7F, $7FFFFFFF, $FFFFFFFF, $FFFFFFFF,
         $FF7F7F7F, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $00000074, $0004001B,
         $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FEFEFEFF, $FFFFFFFF, $FFFFFFFF,
         $FFFFFFFE, $FEFEFEFE, $FEFEFCFC, $FCF8F800, $0000F0F8, $FCFCFCFE,
         $FEFEFEFE, $FEFE3F3F, $3F3F3F3F, $3F3F3F1F, $1F070000, $00071F1F,
         $3F3F3F3F, $3F3F3F3F, $3FFFFFFF, $FFFFFFFF, $FFFFFFFF, $FF3F3F3F,
         $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $00000000;
*)

(*$? StarType = Stars2:
TABLE.L  TabStarSpriteList:
         $00001B14, $000A8000, $00000030, $0000017C, $00000310, $000004FC,
         $00000758, $00000A34, $00000DA0, $000011AC, $00001660, $00000000,
         $FFFEFFFE, $00050005, $00080001, $0000004C, $0000005A, $00000068,
         $00000076, $00000084, $00000096, $000000A8, $000000BA, $000000CC,
         $000000DA, $000000E8, $000000F6, $00000104, $00000116, $00000128,
         $0000013A, $0000000E, $00010005, $70D888D8, $70000000, $000E0001,
         $0005386C, $446C380C, $0000000E, $00010005, $1C362236, $1C010000,
         $000E0001, $00050E1B, $111B0E03, $00000012, $00020005, $070D080D,
         $07008080, $80000000, $00120002, $00050306, $04060380, $C040C080,
         $00000012, $00020005, $01030203, $01C06020, $60C00000, $00120002,
         $00050001, $010100E0, $B010B0E0, $0000000E, $00010005, $8F070707,
         $8F010000, $000E0001, $0005C783, $8383C703, $0000000E, $00010005,
         $E3C1C1C1, $E3F80000, $000E0001, $0005F1E0, $E0E0F17F, $00000012,
         $00020005, $F8F0F0F0, $F8FF7F7F, $7FFF0000, $00120002, $0005FCF8,
         $F8F8FC7F, $3F3F3F7F, $00000012, $00020005, $FEFCFCFC, $FE3F1F1F,
         $1F3F0000, $00120002, $0005FFFE, $FEFEFF1F, $0F0F0F1F, $FFFDFFFD,
         $00070007, $00080001, $0000004C, $0000005C, $0000006C, $00000082,
         $00000098, $000000AE, $000000C4, $000000DA, $000000F0, $00000100,
         $00000110, $00000126, $0000013C, $00000152, $00000168, $0000017E,
         $00000010, $00010007, $386CC682, $C66C3880, $00000010, $00010007,
         $1C366341, $63361C80, $00000016, $00020007, $0E1B3120, $311B0E00,
         $00808080, $00000000, $00160002, $0007070D, $1810180D, $070080C0,
         $40C08000, $00000016, $00020007, $03060C08, $0C060380, $C0602060,
         $C0800000, $00160002, $00070103, $06040603, $01C06030, $103060C0,
         $00000016, $00020007, $00010302, $030100E0, $B0180818, $B0E00000,
         $00160002, $00070000, $01010100, $0070D88C, $048CD870, $00000010,
         $00010007, $C7830101, $0183C71F, $00000010, $00010007, $E3C18080,
         $80C1E31F, $00000016, $00020007, $F1E0C0C0, $C0E0F1FF, $FF7F7F7F,
         $FFFF0000, $00160002, $0007F8F0, $E0E0E0F0, $F8FF7F3F, $3F3F7FFF,
         $00000016, $00020007, $FCF8F0F0, $F0F8FC7F, $3F1F1F1F, $3F7F0000,
         $00160002, $0007FEFC, $F8F8F8FC, $FE3F1F0F, $0F0F1F3F, $00000016,
         $00020007, $FFFEFCFC, $FCFEFF1F, $0F070707, $0F1F0000, $00160002,
         $0007FFFF, $FEFEFEFF, $FF8F0703, $0303078F, $FFFCFFFC, $00090009,
         $00080001, $0000004C, $00000066, $00000080, $0000009A, $000000B4,
         $000000CE, $000000E8, $00000102, $0000011C, $00000136, $00000150,
         $0000016A, $00000184, $0000019E, $000001B8, $000001D2, $0000001A,
         $00020009, $1C7741D5, $88D54177, $1C000000, $80808000, $00000000,
         $001A0002, $00090E3B, $206A446A, $203B0E00, $8080C040, $C0808000,
         $0000001A, $00020009, $071D1035, $2235101D, $0700C040, $60206040,
         $C0000000, $001A0002, $0009030E, $081A111A, $080E0380, $E020B010,
         $B020E080, $0000001A, $00020009, $0107040D, $080D0407, $01C07010,
         $58885810, $70C00000, $001A0002, $00090003, $02060406, $020300E0,
         $B808AC44, $AC08B8E0, $0000001A, $00020009, $00010103, $02030101,
         $0070DC04, $56225604, $DC700000, $001A0002, $00090000, $00010101,
         $00000038, $EE82AB11, $AB82EE38, $0000001A, $00020009, $E3808000,
         $00008080, $E3FFFFFF, $7F7F7FFF, $FFFF0000, $001A0002, $0009F1C0,
         $C0808080, $C0C0F1FF, $7F7F3F3F, $3F7F7FFF, $0000001A, $00020009,
         $F8E0E0C0, $C0C0E0E0, $F8FF3F3F, $1F1F1F3F, $3FFF0000, $001A0002,
         $0009FCF0, $F0E0E0E0, $F0F0FC7F, $1F1F0F0F, $0F1F1F7F, $0000001A,
         $00020009, $FEF8F8F0, $F0F0F8F8, $FE3F0F0F, $0707070F, $0F3F0000,
         $001A0002, $0009FFFC, $FCF8F8F8, $FCFCFF1F, $07070303, $0307071F,
         $0000001A, $00020009, $FFFEFEFC, $FCFCFEFE, $FF8F0303, $01010103,
         $038F0000, $001A0002, $0009FFFF, $FFFEFEFE, $FFFFFFC7, $01010000,
         $000101C7, $FFFBFFFB, $000B000B, $00080001, $0000004C, $0000006A,
         $00000088, $000000A6, $000000C4, $000000E2, $00000100, $0000012A,
         $00000154, $00000172, $00000190, $000001AE, $000001CC, $000001EA,
         $00000208, $00000232, $0000001E, $0002000B, $0E7B516A, $DF8ADF6A,
         $517B0E00, $C040C060, $2060C040, $C0000000, $001E0002, $000B073D,
         $28356F45, $6F35283D, $0700E0A0, $60B010B0, $60A0E000, $0000001E,
         $0002000B, $031E141A, $3722371A, $141E0380, $F050B0D8, $88D8B050,
         $F0800000, $001E0002, $000B010F, $0A0D1B11, $1B0D0A0F, $01C07828,
         $58EC44EC, $582878C0, $0000001E, $0002000B, $00070506, $0D080D06,
         $050700E0, $BC14ACF6, $A2F6AC14, $BCE00000, $001E0002, $000B0003,
         $02030604, $06030203, $0070DE8A, $56FB51FB, $568ADE70, $0000002A,
         $0003000B, $00010101, $03020301, $01010038, $EF45AB7D, $287DAB45,
         $EF380000, $00008080, $80000000, $00FF0000, $002A0003, $000B0000,
         $00000101, $01000000, $001CF7A2, $D5BE14BE, $D5A2F71C, $00808080,
         $C040C080, $808000C7, $0000001E, $0002000B, $F1808080, $00040080,
         $8080F1FF, $3F3F3F1F, $1F1F3F3F, $3FFF0000, $001E0002, $000BF8C0,
         $C0C08082, $80C0C0C0, $F8FF1F1F, $1F0F0F0F, $1F1F1FFF, $0000001E,
         $0002000B, $FCE0E0E0, $C0C1C0E0, $E0E0FC7F, $0F0F0F07, $07070F0F,
         $0F7F0000, $001E0002, $000BFEF0, $F0F0E0E0, $E0F0F0F0, $FE3F0707,
         $07038303, $0707073F, $0000001E, $0002000B, $FFF8F8F8, $F0F0F0F8,
         $F8F8FF1F, $03030301, $41010303, $031F0000, $001E0002, $000BFFFC,
         $FCFCF8F8, $F8FCFCFC, $FF8F0101, $01002000, $0101018F, $0000002A,
         $0003000B, $FFFEFEFE, $FCFCFCFE, $FEFEFFC7, $00000000, $10000000,
         $00C7FFFF, $FFFF7F7F, $7FFFFFFF, $FF3C0000, $002A0003, $000BFFFF,
         $FFFFFEFE, $FEFFFFFF, $FFE30000, $00000800, $000000E3, $FF7F7F7F,
         $3F3F3F7F, $7F7FFFA0, $FFFAFFFA, $000D000D, $00080001, $0000004C,
         $0000006E, $00000090, $000000B2, $000000D4, $00000104, $00000134,
         $00000164, $00000194, $000001B6, $000001D8, $000001FA, $0000021C,
         $0000024C, $0000027C, $000002AC, $00000022, $0002000D, $073D6845,
         $6FDF8DDF, $6F45683D, $0700E0B0, $10B0D888, $D8B010B0, $E0000000,
         $00220002, $000D031E, $3422376F, $466F3722, $341E0380, $F05888D8,
         $ECC4ECD8, $8858F080, $00000022, $0002000D, $010F1A11, $1B372337,
         $1B111A0F, $01C0782C, $44ECF662, $F6EC442C, $78C00000, $00220002,
         $000D0007, $0D080D1B, $111B0D08, $0D0700E0, $BC16A2F6, $FBB1FBF6,
         $A216BCE0, $00000030, $0003000D, $00030604, $060D080D, $06040603,
         $0070DE8B, $51FBFDD8, $FDFB518B, $DE700000, $00000080, $80800000,
         $0000007F, $00000030, $0003000D, $00010302, $03060406, $03020301,
         $0038EF45, $287DFE6C, $FE7D2845, $EF380000, $808080C0, $40C08080,
         $8000000F, $00000030, $0003000D, $00000101, $01030203, $01010100,
         $001CF7A2, $14BE7F36, $7FBE14A2, $F71C0080, $C040C060, $2060C040,
         $C08000FF, $00000030, $0003000D, $00000000, $00010101, $00000000,
         $000E7BD1, $8ADFBF1B, $BFDF8AD1, $7B0E00C0, $602060B0, $10B06020,
         $60C00087, $00000022, $0002000D, $F8C08080, $80000000, $808080C0,
         $F8FF1F0F, $0F0F0707, $070F0F0F, $1FFF0000, $00220002, $000DFCE0,
         $C0C0C080, $8080C0C0, $C0E0FC7F, $0F070707, $03030307, $07070F7F,
         $00000022, $0002000D, $FEF0E0E0, $E0C0C0C0, $E0E0E0F0, $FE3F0703,
         $03030101, $01030303, $073F0000, $00220002, $000DFFF8, $F0F0F0E0,
         $E0E0F0F0, $F0F8FF1F, $03010101, $00000001, $0101031F, $00000030,
         $0003000D, $FFFCF8F8, $F8F0F0F0, $F8F8F8FC, $FF8F0100, $00000000,
         $00000000, $018FFFFF, $FFFFFF7F, $7F7FFFFF, $FFFFFF02, $00000030,
         $0003000D, $FFFEFCFC, $FCF8F8F8, $FCFCFCFE, $FFC70000, $00000000,
         $00000000, $00C7FFFF, $7F7F7F3F, $3F3F7F7F, $7FFFFF01, $00000030,
         $0003000D, $FFFFFEFE, $FEFCFCFC, $FEFEFEFF, $FFE30000, $00000000,
         $00000000, $00E3FF7F, $3F3F3F1F, $1F1F3F3F, $3F7FFF00, $00000030,
         $0003000D, $FFFFFFFF, $FFFEFEFE, $FFFFFFFF, $FFF18000, $00000000,
         $00000000, $80F1FF3F, $1F1F1F0F, $0F0F1F1F, $1F3FFF12, $FFF9FFF9,
         $000F000F, $00080001, $0000004C, $00000072, $00000098, $000000CE,
         $00000104, $0000013A, $00000170, $000001A6, $000001DC, $00000202,
         $00000228, $0000025E, $00000294, $000002CA, $00000300, $00000336,
         $00000026, $0002000F, $03061D36, $2B76DCA8, $DC762B36, $1D060380,
         $C070D8A8, $DC762A76, $DCA8D870, $C0800000, $00260002, $000F0103,
         $0E1B153B, $6E546E3B, $151B0E03, $01C060B8, $6CD46E3B, $153B6ED4,
         $6CB860C0, $00000036, $0003000F, $0001070D, $0A1D372A, $371D0A0D,
         $070100E0, $B05CB6EA, $B71D0A1D, $B7EAB65C, $B0E00000, $00000000,
         $80808000, $00000000, $00F00000, $00360003, $000F0000, $0306050E,
         $1B151B0E, $05060300, $0070D8AE, $DB75DB8E, $058EDB75, $DBAED870,
         $00000000, $0080C040, $C0800000, $0000001B, $00000036, $0003000F,
         $00000103, $02070D0A, $0D070203, $01000038, $6CD76DBA, $6DC782C7,
         $6DBA6DD7, $6C380000, $008080C0, $60A060C0, $80800000, $00000000,
         $00360003, $000F0000, $00010103, $06050603, $01010000, $001C36EB,
         $B65DB6E3, $41E3B65D, $B6EB361C, $000080C0, $40E0B050, $B0E040C0,
         $80000015, $00000036, $0003000F, $00000000, $00010302, $03010000,
         $0000000E, $1B75DBAE, $DB71A071, $DBAEDB75, $1B0E0000, $C060A070,
         $D8A8D870, $A060C000, $00FE0000, $00360003, $000F0000, $00000000,
         $01010100, $00000000, $00070D3A, $6D57EDB8, $50B8ED57, $6D3A0D07,
         $0080E0B0, $50B8EC54, $ECB850B0, $E08000FE, $00000026, $0002000F,
         $FCF8E0C0, $C0810307, $0381C0C0, $E0F8FC7F, $3F0F0707, $0381C181,
         $0307070F, $3F7F0000, $00260002, $000FFEFC, $F0E0E0C0, $818381C0,
         $E0E0F0FC, $FE3F1F07, $030381C0, $E0C08103, $03071F3F, $00000036,
         $0003000F, $FFFEF8F0, $F0E0C0C1, $C0E0F0F0, $F8FEFF1F, $0F030101,
         $40E0F0E0, $40010103, $0F1FFFFF, $FFFFFFFF, $7F7F7FFF, $FFFFFFFF,
         $FF000000, $00360003, $000FFFFF, $FCF8F8F0, $E0E0E0F0, $F8F8FCFF,
         $FF8F0701, $00002070, $F8702000, $0001078F, $FFFFFFFF, $FF7F3F3F,
         $3F7FFFFF, $FFFFFFFF, $00000036, $0003000F, $FFFFFEFC, $FCF8F0F0,
         $F0F8FCFC, $FEFFFFC7, $83000000, $10387C38, $10000000, $83C7FFFF,
         $FF7F7F3F, $1F1F1F3F, $7F7FFFFF, $FF800000, $00360003, $000FFFFF,
         $FFFEFEFC, $F8F8F8FC, $FEFEFFFF, $FFE3C100, $0000081C, $3E1C0800,
         $0000C1E3, $FFFF7F3F, $3F1F0F0F, $0F1F3F3F, $7FFFFFFC, $00000036,
         $0003000F, $FFFFFFFF, $FFFEFCFC, $FCFEFFFF, $FFFFFFF1, $E0800000,
         $040E1F0E, $04000080, $E0F1FFFF, $3F1F1F0F, $0707070F, $1F1F3FFF,
         $FF000000, $00360003, $000FFFFF, $FFFFFFFF, $FEFEFEFF, $FFFFFFFF,
         $FFF8F0C0, $80800207, $0F070280, $80C0F0F8, $FF7F1F0F, $0F070383,
         $03070F0F, $1F7FFFFF, $FFF8FFF8, $00110011, $00080001, $0000004C,
         $00000088, $000000C4, $00000100, $0000013C, $00000178, $000001B4,
         $000001F0, $0000022C, $00000268, $000002A4, $000002E0, $0000031C,
         $00000358, $00000394, $000003D0, $0000003C, $00030011, $01031E37,
         $2B367CD8, $A8D87C36, $2B371E03, $01C060BC, $76EA361F, $0D0A0D1F,
         $36EA76BC, $60C00000, $00000000, $00808080, $00000000, $00000020,
         $0000003C, $00030011, $00010F1B, $151B3E6C, $546C3E1B, $151B0F01,
         $00E0B05E, $BBF51B0F, $0605060F, $1BF5BB5E, $B0E00000, $00000000,
         $80C040C0, $80000000, $00000000, $0000003C, $00030011, $0000070D,
         $0A0D1F36, $2A361F0D, $0A0D0700, $0070D8AF, $DDFA8D07, $03020307,
         $8DFADDAF, $D8700000, $00808080, $C060A060, $C0808080, $00000000,
         $0000003C, $00030011, $00000306, $05060F1B, $151B0F06, $05060300,
         $00386CD7, $EE7DC683, $01010183, $C67DEED7, $6C380000, $80C040C0,
         $E0B050B0, $E0C040C0, $80000048, $0000003C, $00030011, $00000103,
         $0203070D, $0A0D0703, $02030100, $001C36EB, $77BE63C1, $808080C1,
         $63BE77EB, $361C0000, $C060A060, $F0D8A8D8, $F060A060, $C0000000,
         $0000003C, $00030011, $00000001, $01010306, $05060301, $01010000,
         $000E1BF5, $BB5FB1E0, $C040C0E0, $B15FBBF5, $1B0E0000, $E0B050B0,
         $F86C546C, $F8B050B0, $E0000080, $0000003C, $00030011, $00000000,
         $00000103, $02030100, $00000000, $00070D7A, $DDAFD8F0, $60A060F0,
         $D8AFDD7A, $0D070080, $F0D8A8D8, $7C362A36, $7CD8A8D8, $F0800012,
         $0000003C, $00030011, $00000000, $00000001, $01010000, $00000000,
         $0003063D, $6E576CF8, $B050B0F8, $6C576E3D, $060380C0, $78ECD46C,
         $3E1B151B, $3E6CD4EC, $78C08000, $0000003C, $00030011, $FEFCE0C0,
         $C0C18307, $070783C1, $C0C0E0FC, $FE3F1F03, $0101C1E0, $F0F0F0E0,
         $C1010103, $1F3FFFFF, $FFFFFFFF, $FF7F7F7F, $FFFFFFFF, $FFFFFFE0,
         $0000003C, $00030011, $FFFEF0E0, $E0E0C183, $8383C1E0, $E0E0F0FE,
         $FF1F0F01, $0000E0F0, $F8F8F8F0, $E0000001, $0F1FFFFF, $FFFFFFFF,
         $7F3F3F3F, $7FFFFFFF, $FFFFFF04, $0000003C, $00030011, $FFFFF8F0,
         $F0F0E0C1, $C1C1E0F0, $F0F0F8FF, $FF8F0700, $000070F8, $FCFCFCF8,
         $70000000, $078FFFFF, $FF7F7F7F, $3F1F1F1F, $3F7F7F7F, $FFFFFF80,
         $0000003C, $00030011, $FFFFFCF8, $F8F8F0E0, $E0E0F0F8, $F8F8FCFF,
         $FFC78300, $0000387C, $FEFEFE7C, $38000000, $83C7FFFF, $7F3F3F3F,
         $1F0F0F0F, $1F3F3F3F, $7FFFFFFC, $0000003C, $00030011, $FFFFFEFC,
         $FCFCF8F0, $F0F0F8FC, $FCFCFEFF, $FFE3C100, $00001C3E, $7F7F7F3E,
         $1C000000, $C1E3FFFF, $3F1F1F1F, $0F070707, $0F1F1F1F, $3FFFFF00,
         $0000003C, $00030011, $FFFFFFFE, $FEFEFCF8, $F8F8FCFE, $FEFEFFFF,
         $FFF1E000, $00000E1F, $3F3F3F1F, $0E000000, $E0F1FFFF, $1F0F0F0F,
         $07838383, $070F0F0F, $1FFFFF0F, $0000003C, $00030011, $FFFFFFFF,
         $FFFFFEFC, $FCFCFEFF, $FFFFFFFF, $FFF8F080, $0000070F, $1F1F1F0F,
         $07000080, $F0F8FF7F, $0F070707, $83C1C1C1, $83070707, $0F7FFF80,
         $0000003C, $00030011, $FFFFFFFF, $FFFFFFFE, $FEFEFFFF, $FFFFFFFF,
         $FFFCF8C0, $80808307, $0F0F0F07, $838080C0, $F8FC7F3F, $07030383,
         $C1E0E0E0, $C1830303, $073F7FFF, $FFF7FFF7, $00130013, $00080001,
         $0000004C, $0000008E, $000000D0, $00000112, $00000154, $00000196,
         $000001D8, $0000022C, $00000280, $000002C2, $00000304, $00000346,
         $00000388, $000003CA, $0000040C, $00000460, $00000042, $00030013,
         $0000382C, $341C0000, $F090F000, $001C342C, $380000E0, $A0A3E605,
         $07000001, $01010000, $0705E6A3, $A0E00000, $80808000, $0000E020,
         $E0000000, $80808000, $00C30000, $00420003, $00130000, $1C161A0E,
         $00007848, $7800000E, $1A161C00, $00705051, $73020300, $00000000,
         $00000302, $73515070, $0000C040, $C0800000, $F090F000, $0080C040,
         $C00000FF, $00000042, $00030013, $00000E0B, $0D070000, $3C243C00,
         $00070D0B, $0E000038, $28283901, $01000000, $00000000, $01013928,
         $28380000, $E0A060C0, $00007848, $780000C0, $60A0E000, $00FF0000,
         $00420003, $00130000, $07050603, $00001E12, $1E000003, $06050700,
         $001C1414, $9C808000, $00000000, $00008080, $9C14141C, $000070D0,
         $B0E00000, $3C243C00, $00E0B0D0, $700000F8, $00000042, $00030013,
         $00000302, $03010000, $0F090F00, $00010302, $0300000E, $0A8ACE40,
         $C0000000, $00000000, $C040CE8A, $0A0E0000, $38685870, $00001E12,
         $1E000070, $58683800, $00FC0000, $00420003, $00130000, $01010100,
         $00000704, $07000000, $01010100, $000705C5, $67A0E000, $00808080,
         $0000E0A0, $67C50507, $00001C34, $2C380000, $0F090F00, $00382C34,
         $1C00007F, $00000054, $00040013, $00000000, $00000000, $03020300,
         $00000000, $00000003, $02E2B3D0, $700000C0, $40C00000, $70D0B3E2,
         $02038080, $8E9A161C, $00000704, $0700001C, $169A8E80, $80000000,
         $00000000, $00808080, $00000000, $00000000, $00000054, $00040013,
         $00000000, $00000000, $01010100, $00000000, $00000001, $01715968,
         $380000E0, $20E00000, $38685971, $0101C040, $47CD0B0E, $00000302,
         $0300000E, $0BCD4740, $C0000000, $00000000, $00C040C0, $00000000,
         $00000000, $00000042, $00030013, $FFFFC7C3, $C3E3FFFF, $0F0F0FFF,
         $FFE3C3C3, $C7FFFF1F, $1F1C18F8, $F8FFFFFE, $FEFEFFFF, $F8F8181C,
         $1F1FFFFF, $7F7F7FFF, $FFFF1F1F, $1FFFFFFF, $7F7F7FFF, $FF3F0000,
         $00420003, $0013FFFF, $E3E1E1F1, $FFFF8787, $87FFFFF1, $E1E1E3FF,
         $FF8F8F8E, $8CFCFCFF, $FFFFFFFF, $FFFFFCFC, $8C8E8F8F, $FFFF3F3F,
         $3F7FFFFF, $0F0F0FFF, $FF7F3F3F, $3FFFFFFF, $00000042, $00030013,
         $FFFFF1F0, $F0F8FFFF, $C3C3C3FF, $FFF8F0F0, $F1FFFFC7, $C7C7C6FE,
         $FEFFFFFF, $FFFFFFFF, $FEFEC6C7, $C7C7FFFF, $1F1F1F3F, $FFFF8787,
         $87FFFF3F, $1F1F1FFF, $FFE30000, $00420003, $0013FFFF, $F8F8F8FC,
         $FFFFE1E1, $E1FFFFFC, $F8F8F8FF, $FFE3E3E3, $637F7FFF, $FFFFFFFF,
         $FFFF7F7F, $63E3E3E3, $FFFF8F0F, $0F1FFFFF, $C3C3C3FF, $FF1F0F0F,
         $8FFFFFE0, $00000042, $00030013, $FFFFFCFC, $FCFEFFFF, $F0F0F0FF,
         $FFFEFCFC, $FCFFFFF1, $F171313F, $3FFFFFFF, $FFFFFFFF, $3F3F3171,
         $F1F1FFFF, $C787878F, $FFFFE1E1, $E1FFFF8F, $8787C7FF, $FFE00000,
         $00420003, $0013FFFF, $FEFEFEFF, $FFFFF8F8, $F8FFFFFF, $FEFEFEFF,
         $FFF8F838, $181F1FFF, $FF7F7F7F, $FFFF1F1F, $1838F8F8, $FFFFE3C3,
         $C3C7FFFF, $F0F0F0FF, $FFC7C3C3, $E3FFFFB4, $00000054, $00040013,
         $FFFFFFFF, $FFFFFFFF, $FCFCFCFF, $FFFFFFFF, $FFFFFFFC, $FC1C0C0F,
         $8FFFFF3F, $3F3FFFFF, $8F0F0C1C, $FCFC7F7F, $7161E1E3, $FFFFF8F8,
         $F8FFFFE3, $E161717F, $7FFFFFFF, $FFFFFFFF, $FF7F7F7F, $FFFFFFFF,
         $FFFFFFFF, $00000054, $00040013, $FFFFFFFF, $FFFFFFFF, $FEFEFEFF,
         $FFFFFFFF, $FFFFFFFE, $FE8E8687, $C7FFFF1F, $1F1FFFFF, $C787868E,
         $FEFE3F3F, $3830F0F1, $FFFFFCFC, $FCFFFFF1, $F030383F, $3FFFFFFF,
         $FFFFFFFF, $FF3F3F3F, $FFFFFFFF, $FFFFFFFF, $FFF7FFF7, $00130013,
         $00080001, $0000004C, $0000008E, $000000D0, $00000112, $00000154,
         $00000196, $000001D8, $0000022C, $00000280, $000002C2, $00000304,
         $00000346, $00000388, $000003CA, $0000040C, $00000460, $00000042,
         $00030013, $00003828, $38000000, $E0A0E000, $00003828, $380000E0,
         $A0E30203, $00000000, $00000000, $000302E3, $A0E00000, $80808000,
         $0000E0A0, $E0000000, $80808000, $00000000, $00420003, $00130000,
         $1C141C00, $00007050, $70000000, $1C141C00, $00705071, $01010000,
         $00000000, $00000001, $01715070, $0000C040, $C0000000, $70507000,
         $0000C040, $C0000000, $00000042, $00030013, $00000E0A, $0E000000,
         $38283800, $00000E0A, $0E000038, $28380000, $00000000, $00000000,
         $00000038, $28380000, $E0A0E000, $00003828, $38000000, $E0A0E000,
         $00040000, $00420003, $00130000, $07050700, $00001C14, $1C000000,
         $07050700, $001C141C, $00000000, $00000000, $00000000, $001C141C,
         $00007050, $70000000, $1C141C00, $00007050, $70000000, $00000042,
         $00030013, $00000302, $03000000, $0E0A0E00, $00000302, $0300000E,
         $0A8E8080, $00000000, $00000000, $0080808E, $0A0E0000, $38283800,
         $00000E0A, $0E000000, $38283800, $00000000, $00420003, $00130000,
         $01010100, $00000705, $07000000, $01010100, $000705C7, $40C00000,
         $00000000, $000000C0, $40C70507, $00001C14, $1C000000, $07050700,
         $00001C14, $1C000001, $00000054, $00040013, $00000000, $00000000,
         $03020300, $00000000, $00000003, $02E3A0E0, $00000080, $80800000,
         $00E0A0E3, $02038080, $8E0A0E00, $00000302, $03000000, $0E0A8E80,
         $80000000, $00000000, $00808080, $00000000, $00000000, $00000054,
         $00040013, $00000000, $00000000, $01010100, $00000000, $00000001,
         $01715070, $000000C0, $40C00000, $00705071, $0101C040, $C7050700,
         $00000101, $01000000, $0705C740, $C0000000, $00000000, $00C040C0,
         $00000000, $00000000, $00000042, $00030013, $FFFFC7C7, $C7FFFFFF,
         $1F1F1FFF, $FFFFC7C7, $C7FFFF1F, $1F1CFCFC, $FFFFFFFF, $FFFFFFFF,
         $FFFCFC1C, $1F1FFFFF, $7F7F7FFF, $FFFF1F1F, $1FFFFFFF, $7F7F7FFF,
         $FF1F0000, $00420003, $0013FFFF, $E3E3E3FF, $FFFF8F8F, $8FFFFFFF,
         $E3E3E3FF, $FF8F8F8E, $FEFEFFFF, $FFFFFFFF, $FFFFFFFE, $FE8E8F8F,
         $FFFF3F3F, $3FFFFFFF, $8F8F8FFF, $FFFF3F3F, $3FFFFFFF, $00000042,
         $00030013, $FFFFF1F1, $F1FFFFFF, $C7C7C7FF, $FFFFF1F1, $F1FFFFC7,
         $C7C7FFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFC7, $C7C7FFFF, $1F1F1FFF,
         $FFFFC7C7, $C7FFFFFF, $1F1F1FFF, $FFFF0000, $00420003, $0013FFFF,
         $F8F8F8FF, $FFFFE3E3, $E3FFFFFF, $F8F8F8FF, $FFE3E3E3, $FFFFFFFF,
         $FFFFFFFF, $FFFFFFFF, $FFE3E3E3, $FFFF8F8F, $8FFFFFFF, $E3E3E3FF,
         $FFFF8F8F, $8FFFFF07, $00000042, $00030013, $FFFFFCFC, $FCFFFFFF,
         $F1F1F1FF, $FFFFFCFC, $FCFFFFF1, $F1717F7F, $FFFFFFFF, $FFFFFFFF,
         $FF7F7F71, $F1F1FFFF, $C7C7C7FF, $FFFFF1F1, $F1FFFFFF, $C7C7C7FF,
         $FF810000, $00420003, $0013FFFF, $FEFEFEFF, $FFFFF8F8, $F8FFFFFF,
         $FEFEFEFF, $FFF8F838, $3F3FFFFF, $FFFFFFFF, $FFFFFF3F, $3F38F8F8,
         $FFFFE3E3, $E3FFFFFF, $F8F8F8FF, $FFFFE3E3, $E3FFFFFF, $00000054,
         $00040013, $FFFFFFFF, $FFFFFFFF, $FCFCFCFF, $FFFFFFFF, $FFFFFFFC,
         $FC1C1F1F, $FFFFFF7F, $7F7FFFFF, $FF1F1F1C, $FCFC7F7F, $71F1F1FF,
         $FFFFFCFC, $FCFFFFFF, $F1F1717F, $7FFFFFFF, $FFFFFFFF, $FF7F7F7F,
         $FFFFFFFF, $FFFFFFFF, $00000054, $00040013, $FFFFFFFF, $FFFFFFFF,
         $FEFEFEFF, $FFFFFFFF, $FFFFFFFE, $FE8E8F8F, $FFFFFF3F, $3F3FFFFF,
         $FF8F8F8E, $FEFE3F3F, $38F8F8FF, $FFFFFEFE, $FEFFFFFF, $F8F8383F,
         $3FFFFFFF, $FFFFFFFF, $FF3F3F3F, $FFFFFFFF, $FFFFFFFF, $00000000;
*)


(*---------------------------------------------------------------------------*)



PROCEDURE InitStar ( StarXPos, StarYPos      : INTEGER );
VAR     ok      : BOOLEAN;
        StarNo  : CARDINAL;
BEGIN
  StarNo := 0;
  ok := FALSE;
  REPEAT
    IF ~Star[StarNo].IsActive
    THEN
      ok := TRUE;
      WITH Star[StarNo] DO
        IsActive := TRUE;
        (*$? StarType = Stars1:
        AnimationPhase := 14;
        *)
        (*$? StarType = Stars2:
        AnimationPhase := 8;
        *)
        X := StarXPos;
        Y := StarYPos;
      END;
    END;
    INC ( StarNo );
  UNTIL ok OR (StarNo > MaxNoOfStars);
END InitStar;


PROCEDURE AnimateAndDrawStars;
VAR     StarNo        : CARDINAL;
BEGIN
  DirectTOSScreenShow := TRUE;
  FOR StarNo := 0 TO MaxNoOfStars DO
    WITH Star[StarNo] DO
      IF IsActive
      THEN
        DEC ( AnimationPhase );
        IF AnimationPhase < 0
        THEN
          IsActive := FALSE;
        ELSE
          DirectTOSScreenShow := FALSE;
          Sprite ( WorkScreen, StarSpriteList,
                   StarSprites^[AnimationPhase], X, Y );
        END;
      END;
    END;
  END;
END AnimateAndDrawStars;


PROCEDURE MakePicture;
BEGIN
  MouseMoved := (MouseXPos^ # OldMouseXPos) OR
                (MouseYPos^ # OldMouseYPos);
  OldMouseXPos := MouseXPos^;
  OldMouseYPos := MouseYPos^;
  IF TOSScreenOnDisplay
  THEN
    IF DirectTOSScreenShow
    THEN
      IF MouseMoved
      THEN
        DirectTOSScreenShow := FALSE;
      END;
      Switch ( TOSScreen );
    ELSE
      CopyScreen ( TOSScreen, WorkScreen );
      IF MouseMoved
      THEN
        DEC (StarRateCounter);
        IF StarRateCounter = 0
        THEN
          StarRateCounter := StarRate;
          InitStar ( OldMouseXPos + MinMaxRandom ( -StarArea, StarArea ),
                     OldMouseYPos + MinMaxRandom ( -StarArea, StarArea ) );
        END;
      END;
      AnimateAndDrawStars;
      SwitchSides;
    END;
  END;
END MakePicture;


(*---------------------------- VBL - Interrupt -----------------------------*)

(*$L-*)
PROCEDURE VBLXBRA;
BEGIN
  ASSEMBLER
  asc           'XBRA'
  asc           'MSSY'
  dc.w          0
  END;
END VBLXBRA;
(*$L+*)

(*$L-*)
PROCEDURE VBLIRQ;
BEGIN
  ASSEMBLER
  subq.w        #1,$452
  bmi.w         ED                      ; VBLHandler gesperrt
  
  subi.w        #1,VBLTimer
  bpl.w         ED                      ; Bildaufbau nur bei jedem
                                        ; 3. Monitorbild
  
  move.w        #PicFreq-1,VBLTimer             ; Timer zurcksetzen
  
  movem.l       D0-D7/A0-A6,-(A7)
  
  clr.l         D0                      ; Lesen der aktuellen Bildschirmadresse
  move.l        #$FF8201,A0
  movep.w       0(A0),D0
  lsl.l         #8,D0
  
  move.w        #1,TOSScreenOnDisplay
  cmp.l         TOSScreen,D0
  beq           go
  cmp.l         DisplayScreen,D0
  beq           go
  clr.w         TOSScreenOnDisplay      ; Bildschirm wurde von jemand
                                        ; anderes umgesetzt
 !go
  lea           VBLStack,A3             ; Jetzt nehmen wir unseren Stack,
  jsr           MakePicture             ; und malen das neue Bild
  
  movem.l       (A7)+,D0-D7/A0-A6
 
 !ED
  addq.w        #1,$452
  move.l        OldVBLIRQ,-(A7)      ; alte VBL-Routine macht weiter...
  END;
END VBLIRQ;
(*$L+*)


(*$L-*)
PROCEDURE InstallVBLIRQ;
BEGIN
  ASSEMBLER
  jsr           EnterSupervisorMode
  move.w        SR,-(A7)
  ori.w         #$0700,SR
  
  move.l        $70,OldVBLIRQ
  lea           VBLXBRA,A0
  lea           VBLIRQ,A0
  move.l        $70,-4(A0)              ; XBRA-Vektor setzen
  move.l        A0,$70
  
  move.w        (A7)+,SR
  andi.w        #$DFFF,SR
  END;
END InstallVBLIRQ;
(*$L+*)

(*--------------------------------------------------------------------------*)

BEGIN
  Writeln;
  WriteString ( 'Magic Cursor installed.' );
  Writeln;
  WriteString ( 'Written with MEGAMAX MODULA-2 for the TOS-Magazin by Meinolf Schneider' );
  Writeln;
  WriteString ( ' May 1990 by Meinolf Schneider' );
  Writeln;
  Writeln;
  FOR i := 0 TO 30000 DO END;
  FOR i := 0 TO 30000 DO END;
  
  ASSEMBLER
  move.l        #TabStarSpriteList,StarSpriteList
  move.l        #TabStarSprites,StarSprites
  
  ; Adressen der LineA-Variablen abfragen und setzen
  dc.w          $A000
  pea           -$25A(A0)
  move.l        (A7)+,MouseXPos
  pea           -$258(A0)
  move.l        (A7)+,MouseYPos
  END;
  
  
  StarRateCounter := 1;
  FOR i := 0 TO MaxNoOfStars DO
    Star[i].IsActive := FALSE;
  END;
  
  TOSScreen := GetSystemScreen();
  TOSScreenOnDisplay := TRUE;
  DirectTOSScreenShow := TRUE;
  VBLTimer := PicFreq;
  InstallVBLIRQ;
END Magic.

