     1                                  ; STARS.S (NASM version of STARS.ASM)
     2                                  ;==============================================================================;
     3                                  ;                                                                              ;
     4                                  ;     TITLE: Star field                                                        ;
     5                                  ;WRITTEN BY: DRAEDEN                                                           ;
     6                                  ;      DATE: 03/15/93                                                          ;
     7                                  ;                                                                              ;
     8                                  ;     NOTES: Need 386 to execute.                                              ;
     9                                  ;                                                                              ;
    10                                  ;ASSOCIATED FILES:                                                             ;
    11                                  ;                                                                              ;
    12                                  ;       STARGEN.BAS =>  Basic program that generates a set of 'randomized'     ;  
    13                                  ;                       numbers.  Creates STARRND.DW                           ;
    14                                  ;                                                                              ;
    15                                  ;       STARS.TXT   =>  The text file that explains starfields...              ;
    16                                  ;                                                                              ;
    17                                  ;       STARRND.DW  =>  File that contains a set of shuffled numbers.          ;  
    18                                  ;                       Used to create 'random' star field.                    ;
    19                                  ;                                                                              ;
    20                                  ;==============================================================================;
    21                                  
    22                                  ; NASM version: Erdogan Tan, 02/10/2016
    23                                  
    24                                  ;=== CODE
    25                                  
    26                                  [Bits 16]   ; Real Mode (MSDOS) Program
    27                                  
    28                                  [org 100h]  ; MSDOS COM File
    29                                  
    30                                  START:
    31 00000000 8CC8                        mov     ax,cs
    32 00000002 8ED8                        mov     ds,ax
    33 00000004 8EC0                        mov     es,ax
    34                                  
    35                                      ; clear BSS
    36 00000006 31C0                        xor     ax, ax
    37 00000008 BF[EC05]                    mov     di, bss_start
    38 0000000B B9AF06                      mov     cx, (bss_end-bss_start)+1
    39 0000000E D1E9                        shr     cx, 1
    40 00000010 F3AB                        rep     stosw
    41                                  
    42 00000012 B81300                      mov     ax,0013h                ;set vid mode 320x200x256 graph
    43 00000015 CD10                        int     10h
    44                                      
    45 00000017 BA[C904]                    mov     dx,Palette
    46 0000001A B81210                      mov     ax,1012h                ; WRITE palette 
    47 0000001D BB0000                      mov     bx,0                    
    48 00000020 B90001                      mov     cx,256                  ;write entire palette
    49 00000023 CD10                        int     10h                     ;doesn't matter if we didnt define it all
    50                                  
    51                                  StarLoop:
    52 00000025 E85500                      call    MakeStar        ;make stars 2x as thick
    53 00000028 E85200                      call    MakeStar
    54                                  
    55 0000002B BADA03                      mov     dx,3dah
    56                                  VRT:
    57 0000002E EC                          in      al,dx
    58 0000002F A808                        test    al,8
    59 00000031 75FB                        jnz     short VRT       ;wait until Verticle Retrace starts
    60                                  
    61                                  NoVRT:
    62 00000033 EC                          in      al,dx
    63 00000034 A808                        test    al,8
    64 00000036 74FB                        jz      short NoVRT     ;wait until Verticle Retrace Ends
    65                                  
    66 00000038 E8E200                      call    DisplayStars
    67                                  
    68 0000003B B401                        mov     ah,1            ;check to see if a char is ready
    69 0000003D CD16                        int     16h
    70 0000003F 74E4                        jz      short StarLoop  ;nope, continue
    71                                      
    72 00000041 B400                        mov     ah,0
    73 00000043 CD16                        int     16h             ;get the character & put in AX
    74                                  
    75 00000045 3C2B                        cmp     al,"+"          ;compare ASCII part (al) to see what was pressed
    76 00000047 7513                        jne     short NotPlus
    77                                  
    78 00000049 FF06[B904]                  inc     word [WarpSpeed]
    79 0000004D 833E[B904]5A                cmp     word [WarpSpeed],MaxWarp
    80 00000052 76D1                        jbe     short StarLoop
    81                                  
    82 00000054 C706[B904]5A00              mov     word [WarpSpeed],MaxWarp
    83 0000005A EBC9                        jmp     short StarLoop
    84                                  
    85                                  NotPlus:
    86 0000005C 3C2D                        cmp     al,"-"
    87 0000005E 7513                        jne     short NotMinus
    88                                  
    89 00000060 FF0E[B904]                  dec     word [WarpSpeed]
    90 00000064 833E[B904]00                cmp     word [WarpSpeed],0
    91 00000069 7DBA                        jge     short StarLoop
    92                                  
    93 0000006B C706[B904]0000              mov     word [WarpSpeed],0
    94 00000071 EBB2                        Jmp     short StarLoop
    95                                  
    96                                  NotMinus:
    97                                  
    98 00000073 B80300                      mov     ax,0003h        ;set 80x25x16 char mode
    99 00000076 CD10                        int     10h
   100 00000078 B8004C                      mov     ax,4c00h        ;return control to DOS
   101 0000007B CD21                        int     21h
   102                                  
   103                                  ;=== Code Includes
   104                                  ;=== SUBROUTINES
   105                                  
   106                                      ;finds 1st available slot for a star and puts it there
   107                                  MakeStar:
   108 0000007D 60                          pusha
   109 0000007E 8CC8                        mov     ax,cs
   110 00000080 8EC0                        mov     es,ax
   111 00000082 8ED8                        mov     ds,ax
   112                                  
   113 00000084 813E[C704]BE00              cmp     word [NumActive],MaxStars   ;is there room for another star?
   114 0000008A 0F838D00                    jae     NoEmptySpace            
   115                                  
   116                                      ;search for 1st available slot
   117                                  
   118 0000008E BE[EC05]                    mov     si, Stars
   119                                  TryAgain:
   120 00000091 837C0400                    cmp     word [Stars.Z+si],0         ;is this slot empty?
   121 00000095 740B                        je      short GotOne                ;yes, go fill it
   122                                  
   123 00000097 83C609                      add     si,StarStrucSize
   124 0000009A 81FE[9A0C]                  cmp     si,Stars+(MaxStars*StarStrucSize)
   125 0000009E 72F1                        jb      short TryAgain
   126 000000A0 EB79                        jmp     NoEmptySpace
   127                                  
   128                                  GotOne:         ;si points to the record for the star to fill
   129 000000A2 8B3E[BD04]                  mov     di,[Yindex]         ;grab index for Ypos
   130 000000A6 01FF                        add     di,di               ;multiply by 2 to make it a WORD index
   131 000000A8 8B85[9701]                  mov     ax,[StarRnd+di]     ;get the number
   132 000000AC C1E003                      shl     ax,3                ;multiply by 8- could been done in BAS file
   133 000000AF 894402                      mov     [Stars.Y+si],ax     ;and save off the number
   134                                      
   135 000000B2 8B3E[BB04]                  mov     di,[Xindex]         ;grab index for Xpos
   136 000000B6 01FF                        add     di,di               ;... same as above, but for Xpos
   137 000000B8 8B85[9701]                  mov     ax,[StarRnd+di]
   138 000000BC C1E003                      shl     ax,3
   139 000000BF 8904                        mov     [Stars.X+si],ax
   140                                  
   141 000000C1 C744040010                  mov     word [Stars.Z+si],MaxZpos ;reset Zpos to the max
   142 000000C6 FF06[C704]                  inc     word [NumActive]    ;we added a star so increase the counter
   143                                  
   144 000000CA 8B3E[BF04]                  mov     di,[Cindex]             ;grab the color index
   145 000000CE 8A85[C104]                  mov     al,[ColorChart+di]      ;grab the BaseColor for the star
   146 000000D2 884408                      mov     [Stars.Color+si],al     ;save it in the record
   147                                  
   148                                      ;increase all the index pointers
   149                                  
   150 000000D5 FF06[BF04]                  inc     word [Cindex]           ;increases the color counter
   151 000000D9 833E[BF04]05                cmp     word [Cindex],NumColors
   152 000000DE 7206                        jb      short OkColor
   153 000000E0 C706[BF04]0000              mov     word [Cindex],0
   154                                  OkColor:
   155 000000E6 FF06[BD04]                  inc     word [Yindex]           ;increases Yindex
   156 000000EA 813E[BD04]9001              cmp     word [Yindex],NumRnds   ;note that for this one we
   157 000000F0 7206                        jb      short YindNotZero       ; subtract NumRnds from Yindex if we
   158 000000F2 812E[BD04]9001              sub     word [Yindex],NumRnds   ; go off the end of the chart
   159                                  YindNotZero:
   160 000000F8 FF06[BB04]                  inc     word [Xindex]           ;increase Xindex
   161 000000FC 813E[BB04]9001              cmp     word [Xindex],NumRnds   ;have we gone through the entire chart?
   162 00000102 7217                        jb      short XindNotZero       ;nope...
   163                                  
   164                                  ;This clever bit of code makes more use out of the chart by increasing Yindex
   165                                  ; one additional unit each time Xindex goes through the entire chart... the
   166                                  ; result is nearly NumRND^2 random non-repeating points
   167                                          
   168 00000104 FF06[BD04]                  inc     word [Yindex]           ;yes, so change Yindex so that we get a
   169 00000108 A1[BD04]                    mov     ax,[Yindex]             ;new set of random (x,y)
   170 0000010B 3B06[BB04]                  cmp     ax,[Xindex]             ;does Xindex = Yindex?
   171 0000010F 7504                        jne     short NotTheSame        ;if the index were the same, you'd see 
   172                                                                      ;a graph of the line Y = X, not good...
   173 00000111 FF06[BD04]                  inc     word [Yindex]           ;if they are the same, inc Yindex again
   174                                  NotTheSame:
   175 00000115 C706[BB04]0000              mov     word [Xindex],0         ;reset Xindex to 0
   176                                  XindNotZero:                        ;all done making the star...
   177                                  
   178                                  NoEmptySpace:
   179 0000011B 61                          popa
   180 0000011C C3                          retn
   181                                  
   182                                  DisplayStars:
   183 0000011D 60                          pusha
   184 0000011E 8CC8                        mov     ax,cs
   185 00000120 8ED8                        mov     ds,ax
   186 00000122 B800A0                      mov     ax,0a000h
   187 00000125 8EC0                        mov     es,ax
   188                                  
   189 00000127 BE[EC05]                    mov     si, Stars               ; si points to first record
   190                                  DispLoop:
   191 0000012A 8B4C04                      mov     cx,[Stars.Z+si]
   192 0000012D 09C9                        or      cx,cx                   ;if Zpos = 0 then this star is dead...
   193 0000012F 7449                        jz      short Cont              ;continue to the next one- skip this one
   194                                  
   195 00000131 8B7C06                      mov     di,[Stars.OldDi+si]     ;grab old Di
   196 00000134 26C60500                    mov     byte [es:di],0          ;erase the star
   197                                      
   198 00000138 83F902                      cmp     cx,MinZpos
   199 0000013B 7C4F                        jl      short TermStar          ;if Zpos < MinZpos then kill the star
   200                                  
   201 0000013D 8B4402                      mov     ax,[Stars.Y+si]
   202 00000140 0FBED4                      movsx   dx,ah                   ;'multiply' Ypos by 256
   203 00000143 C1E008                      shl     ax,8
   204                                      
   205 00000146 F7F9                        idiv    cx                      ;and divide by Zpos
   206 00000148 83C064                      add     ax,ScreenHeight/2       ;center it on the screen
   207 0000014B 89C7                        mov     di,ax
   208 0000014D 81FFC800                    cmp     di,ScreenHeight         ;see if the star is in range. 
   209 00000151 7332                        jae     PreTermStar             ; If not, kill it
   210 00000153 69FF4001                    imul    di,ScreenWidth          ; DI = Y*ScreenWidth
   211                                  
   212 00000157 8B04                        mov     ax,[Stars.X+si]
   213 00000159 0FBED4                      movsx   dx,ah                   ;multiply Xpos by 256
   214 0000015C C1E008                      shl     ax,8
   215                                  
   216 0000015F F7F9                        idiv    cx                      ;and divide by Zpos
   217 00000161 05A000                      add     ax,ScreenWidth/2        ;center it on the screen
   218 00000164 3D4001                      cmp     ax,ScreenWidth          ;are we inside the screen boundries?
   219 00000167 731C                        jae     short PreTermStar
   220 00000169 01C7                        add     di,ax                   ; DI = Y * ScreenWidth + X
   221                                  
   222 0000016B 897C06                      mov     [Stars.OldDi+si],di     ;save old di
   223                                  
   224                                      ;calculate the color below
   225                                  
   226 0000016E 026C08                      add     ch,[Stars.Color+si]     ;i'm dividing cx (the zpos) by 256 and
   227                                                                      ; putting the result in ch and adding
   228                                                                      ; the base color to it in one instruction
   229 00000171 26882D                      mov     [es:di],ch              ;put the dot on the screen
   230                                  
   231 00000174 A1[B904]                    mov     ax,[WarpSpeed]
   232 00000177 294404                      sub     [Stars.Z+si],ax         ;move the stars inward at WarpSpeed
   233                                  
   234                                  Cont:
   235 0000017A 83C609                      add     si,StarStrucSize        ;point to next record
   236 0000017D 81FE[9A0C]                  cmp     si,Stars+(MaxStars*StarStrucSize)  ;are we done yet?
   237 00000181 72A7                        jb      short DispLoop
   238 00000183 61                          popa
   239 00000184 C3                          retn
   240                                  
   241                                  PreTermStar:
   242 00000185 C744040100                  mov     word [Stars.Z+si],1 ;this is here so that the star will get erased
   243 0000018A EBEE                        jmp     short Cont      ;next time through if I just went off and killed
   244                                                              ;the star, it would leave a dot on the screen
   245                                  TermStar:
   246 0000018C C744040000                  mov     word [Stars.Z+si],0 ;this actually kills the star, after it has
   247 00000191 FF0E[C704]                  dec     word [NumActive]  ;been erased
   248 00000195 EBE3                        jmp     short Cont
   249                                  
   250                                  ;=== GLOBALS
   251                                  ;=== Data Includes
   252                                  
   253                                  ;%include starrnd.dw      ;file that has label StarRnd numbers 
   254                                  
   255 00000197 A600                    StarRnd: dw  166
   256 00000199 430066002E0053FF66-     dw   67, 102,  46,-173,-154,-210,-192, 173,-196, -81 
   257 000001A2 FF2EFF40FFAD003CFF-
   258 000001AB AFFF               
   259 000001AD CEFF2400320038FFA1-     dw  -50,  36,  50,-200, -95, 209, -16,-179, -30,  18 
   260 000001B6 FFD100F0FF4DFFE2FF-
   261 000001BF 1200               
   262 000001C1 AE00C5007F0047001D-     dw  174, 197, 127,  71,  29,-121,-160,-176,  19, -52 
   263 000001CA 0087FF60FF50FF1300-
   264 000001D3 CCFF               
   265 000001D5 47FF5900AC004A0064-     dw -185,  89, 172,  74,-156, 157,-125, 144, -34,  69 
   266 000001DE FF9D0083FF9000DEFF-
   267 000001E7 4500               
   268 000001E9 1100D8FF40009EFF67-     dw   17, -40,  64, -98,-153, 125, 160, 140,-204, 141 
   269 000001F2 FF7D00A0008C0034FF-
   270 000001FB 8D00               
   271 000001FD 89005BFFF2FF9A006E-     dw  137,-165, -14, 154,-146, 119, 123, 165,-130, 168 
   272 00000206 FF77007B00A5007EFF-
   273 0000020F A800               
   274 00000211 4CFF8F0034006B0095-     dw -180, 143,  52, 107,-107,-102,  57,  27, 117,  37 
   275 0000021A FF9AFF39001B007500-
   276 00000223 2500               
   277 00000225 7E000F00A7FFB80074-     dw  126,  15, -89, 184, 116, 183, -99,-139, 150, 188 
   278 0000022E 00B7009DFF75FF9600-
   279 00000237 BC00               
   280 00000239 26005A005D003EFFCF-     dw   38,  90,  93,-194, 207,-187,  62,  59, 196,  12 
   281 00000242 0045FF3E003B00C400-
   282 0000024B 0C00               
   283 0000024D 52FF3600920077FFC6-     dw -174,  54, 146,-137, 198, 162, 155,-163, -77,-144 
   284 00000256 00A2009B005DFFB3FF-
   285 0000025F 70FF               
   286 00000261 BF007CFFD5FF970099-     dw  191,-132, -43, 151,-103,  20, -46,  13,-140,  31 
   287 0000026A FF1400D2FF0D0074FF-
   288 00000273 1F00               
   289 00000275 820057FF44FF6D00DF-     dw  130,-169,-188, 109, -33,-150,-170,  68, -75,-201 
   290 0000027E FF6AFF56FF4400B5FF-
   291 00000287 37FF               
   292 00000289 9CFF55FFEDFFC3FF32-     dw -100,-171, -19, -61,-206, 149,  99, -76,-186, -44 
   293 00000292 FF95006300B4FF46FF-
   294 0000029B D4FF               
   295 0000029D 4EFF22003D001C0072-     dw -178,  34,  61,  28, 114, 199, 201, -83, -27,  63 
   296 000002A6 00C700C900ADFFE5FF-
   297 000002AF 3F00               
   298 000002B1 DAFFCC00D00090FF30-     dw  -38, 204, 208,-112,-208, 122, -90,  23,-122, 161 
   299 000002BA FF7A00A6FF170086FF-
   300 000002C3 A100               
   301 000002C5 230058FFAA005CFF69-     dw   35,-168, 170,-164,-151,  75, -60,-109,  85, 193 
   302 000002CE FF4B00C4FF93FF5500-
   303 000002D7 C100               
   304 000002D9 2D0051FF7AFFCD00EB-     dw   45,-175,-134, 205, -21,  49, 133, -85, -47, -37 
   305 000002E2 FF31008500ABFFD1FF-
   306 000002EB DBFF               
   307 000002ED E3FFA0FFBEFF49008A-     dw  -29, -96, -66,  73,-118, 147, -53, 120, 153,-155 
   308 000002F6 FF9300CBFF78009900-
   309 000002FF 65FF               
   310 00000301 F5FF0B005F00E6FF86-     dw  -11,  11,  95, -26, 134,-145, -49, -74,  42,-124 
   311 0000030A 006FFFCFFFB6FF2A00-
   312 00000313 84FF               
   313 00000315 BD00D6FF5C0059FF58-     dw  189, -42,  92,-167,  88,-126,-129,-108,-193, 195 
   314 0000031E 0082FF7FFF94FF3FFF-
   315 00000327 C300               
   316 00000329 BE0096FF8BFFCB0054-     dw  190,-106,-117, 203,  84, 139,-123, -94, -88,-158 
   317 00000332 008B0085FFA2FFA8FF-
   318 0000033B 62FF               
   319 0000033D B5009FFFECFF5200C7-     dw  181, -97, -20,  82, -57, 112, -35,  14, -56, -58 
   320 00000346 FF7000DDFF0E00C8FF-
   321 0000034F C6FF               
   322 00000351 C800500049FF6A0057-     dw  200,  80,-183, 106,  87,  30,  51, -28,  98, -12 
   323 0000035A 001E003300E4FF6200-
   324 00000363 F4FF               
   325 00000365 41FF80FFF3FF48FF88-     dw -191,-128, -13,-184, 136,  43,-166, -62, -73,-116 
   326 0000036E 002B005AFFC2FFB7FF-
   327 00000377 8CFF               
   328 00000379 E1FF79FF9BFF190029-     dw  -31,-135,-101,  25,  41, -82, 110,  10, -45, -41 
   329 00000382 00AEFF6E000A00D3FF-
   330 0000038B D7FF               
   331 0000038D 6100AF008A00AB0048-     dw   97, 175, 138, 171,  72,-133,-157,  58,-104, 187 
   332 00000396 007BFF63FF3A0098FF-
   333 0000039F BB00               
   334 000003A1 C000BCFFA9FFA90092-     dw  192, -68, -87, 169,-110,  91, 129, 104, -70,-114 
   335 000003AA FF5B0081006800BAFF-
   336 000003B3 8EFF               
   337 000003B5 76FF8DFF73FFBDFF3D-     dw -138,-115,-141, -67,-195, -79, -69,  40,-147, -80 
   338 000003BE FFB1FFBBFF28006DFF-
   339 000003C7 B0FF               
   340 000003C9 89FF800098002FFF53-     dw -119, 128, 152,-209,  83,  53, 159,  66,-190,  81 
   341 000003D2 0035009F00420042FF-
   342 000003DB 5100               
   343 000003DD A4FFF6FF4BFF87003C-     dw  -92, -10,-181, 135,  60,  33, -25,  70,  22, -72 
   344 000003E6 002100E7FF46001600-
   345 000003EF B8FF               
   346 000003F1 6700E9FF83004F00C0-     dw  103, -23, 131,  79, -64,  55, -86, -32,-182,-136 
   347 000003FA FF3700AAFFE0FF4AFF-
   348 00000403 78FF               
   349 00000405 1A00CAFF54FF6CFF94-     dw   26, -54,-172,-148, 148, -65,-152,-207, -39, -71 
   350 0000040E 00BFFF68FF31FFD9FF-
   351 00000417 B9FF               
   352 00000419 4100B3004FFF180076-     dw   65, 179,-177,  24, 118, -59, -63,  44, 105, 206 
   353 00000422 00C5FFC1FF2C006900-
   354 0000042B CE00               
   355 0000042D B200ACFF36FF8400BA-     dw  178, -84,-202, 132, 186, -17,  76, 176, -22, 177 
   356 00000436 00EFFF4C00B000EAFF-
   357 0000043F B100               
   358 00000441 3AFF61FF5EFF4E004D-     dw -198,-159,-162,  78,  77, -55,-120,-203,-113, 156 
   359 0000044A 00C9FF88FF35FF8FFF-
   360 00000453 9C00               
   361 00000455 43FF3BFF7C00790072-     dw -189,-197, 124, 121,-142, -15,-205,  56, 158, -18 
   362 0000045E FFF1FF33FF38009E00-
   363 00000467 EEFF               
   364 00000469 A3FF5FFF2700300065-     dw  -93,-161,  39,  48, 101, -91, 182,-127, 108, 111 
   365 00000472 00A5FFB60081FF6C00-
   366 0000047B 6F00               
   367 0000047D DCFF71FF15006BFFB2-     dw  -36,-143,  21,-149, -78, -48, 164, 202, 185, 180 
   368 00000486 FFD0FFA400CA00B900-
   369 0000048F B400               
   370 00000491 CDFF39FF6400C20020-     dw  -51,-199, 100, 194,  32, -24, 142,  86,-111,  47 
   371 0000049A 00E8FF8E00560091FF-
   372 000004A3 2F00               
   373 000004A5 730097FF1000A7005E-     dw  115,-105,  16, 167,  94, 163,  96, 113,-131, 145 
   374 000004AE 00A300600071007DFF-
   375 000004B7 9100               
   376                                  
   377                                  ;=== DATA Structures
   378                                      
   379                                      ;Star_Struc      STRUC   
   380                                      ;    X       dw  0
   381                                      ;    Y       dw  0
   382                                      ;    Z       dw  0
   383                                      ;    OldDi   dw  0      ;where to erase last dot
   384                                      ;    Color   db  0      ;BASE color. a number 0-16 is added to it
   385                                      ;Star_Struc      ENDS
   386                                  
   387                                      ;StarStrucSize = 9     ;number of bytes per entry
   388                                  
   389                                  ;=== DATA
   390                                  
   391                                  ScreenWidth EQU 320
   392                                  ScreenHeight EQU 200
   393                                  
   394                                  NumRnds     EQU 400     ;number of random numbers defined
   395                                  
   396                                  MaxZpos     EQU 4096
   397                                  MinZpos     EQU 2
   398                                  MaxStars    EQU 190
   399                                  NumColors   EQU 5       ;number of Base colors in the Color Chart
   400                                  
   401 000004B9 0F00                    WarpSpeed:  dw  15      ;how quickly the stars move toward ya
   402                                  MaxWarp     EQU 90
   403                                  
   404 000004BB 1E00                    Xindex:     dw  30      ;index into the StarRnd chart for X & Y
   405 000004BD E600                    Yindex:     dw  230     ; -note they must be different; set em the same to
   406                                                          ;see why
   407 000004BF 0000                    Cindex:     dw  0       ;index into ColorChart
   408                                  
   409 000004C1 001020304050            ColorChart: db  0,16,32,48,64,80    ;a list of base colors (-1)
   410                                  
   411                                  ;Stars      Star_Struc MaxStars DUP (<>) ;where all the data is held
   412 000004C7 0000                    NumActive:  dw  0       ;number of stars active
   413                                  
   414                                  Palette:    ;the palette.. first entrie is BG color (black)
   415 000004C9 000000                      db 0,0,0
   416 000004CC 1E2D3C                      db 2*15,3*15,4*15
   417 000004CF 1C2A38                      db 2*14,3*14,4*14
   418 000004D2 1A2734                      db 2*13,3*13,4*13
   419 000004D5 182430                      db 2*12,3*12,4*12
   420 000004D8 16212C                      db 2*11,3*11,4*11
   421 000004DB 141E28                      db 2*10,3*10,4*10
   422 000004DE 121B24                      db 2*9,3*9,4*9
   423 000004E1 101820                      db 2*8,3*8,4*8
   424 000004E4 0E151C                      db 2*7,3*7,4*7
   425 000004E7 0C1218                      db 2*6,3*6,4*6
   426 000004EA 0A0F14                      db 2*5,3*5,4*5
   427 000004ED 080C10                      db 2*4,3*4,4*4
   428 000004F0 06090C                      db 2*3,3*3,4*3
   429 000004F3 040608                      db 2*2,3*2,4*2
   430 000004F6 020304                      db 2*1,3*1,4*1
   431 000004F9 000000                      db 2*0,3*0,4*0
   432 000004FC 1E1E3C                      db 2*15,2*15,4*15
   433 000004FF 1C1C38                      db 2*14,2*14,4*14
   434 00000502 1A1A34                      db 2*13,2*13,4*13
   435 00000505 181830                      db 2*12,2*12,4*12
   436 00000508 16162C                      db 2*11,2*11,4*11
   437 0000050B 141428                      db 2*10,2*10,4*10
   438 0000050E 121224                      db 2*9,2*9,4*9
   439 00000511 101020                      db 2*8,2*8,4*8
   440 00000514 0E0E1C                      db 2*7,2*7,4*7
   441 00000517 0C0C18                      db 2*6,2*6,4*6
   442 0000051A 0A0A14                      db 2*5,2*5,4*5
   443 0000051D 080810                      db 2*4,2*4,4*4
   444 00000520 06060C                      db 2*3,2*3,4*3
   445 00000523 040408                      db 2*2,2*2,4*2
   446 00000526 020204                      db 2*1,2*1,4*1
   447 00000529 000000                      db 2*0,2*0,4*0
   448 0000052C 2D2D3C                      db 3*15,3*15,4*15
   449 0000052F 2A2A38                      db 3*14,3*14,4*14
   450 00000532 272734                      db 3*13,3*13,4*13
   451 00000535 242430                      db 3*12,3*12,4*12
   452 00000538 21212C                      db 3*11,3*11,4*11
   453 0000053B 1E1E28                      db 3*10,3*10,4*10
   454 0000053E 1B1B24                      db 3*9,3*9,4*9
   455 00000541 181820                      db 3*8,3*8,4*8
   456 00000544 15151C                      db 3*7,3*7,4*7
   457 00000547 121218                      db 3*6,3*6,4*6
   458 0000054A 0F0F14                      db 3*5,3*5,4*5
   459 0000054D 0C0C10                      db 3*4,3*4,4*4
   460 00000550 09090C                      db 3*3,3*3,4*3
   461 00000553 060608                      db 3*2,3*2,4*2
   462 00000556 030304                      db 3*1,3*1,4*1
   463 00000559 000000                      db 3*0,3*0,4*0
   464 0000055C 2D1E3C                      db 3*15,2*15,4*15
   465 0000055F 2A1C38                      db 3*14,2*14,4*14
   466 00000562 271A34                      db 3*13,2*13,4*13
   467 00000565 241830                      db 3*12,2*12,4*12
   468 00000568 21162C                      db 3*11,2*11,4*11
   469 0000056B 1E1428                      db 3*10,2*10,4*10
   470 0000056E 1B1224                      db 3*9,2*9,4*9
   471 00000571 181020                      db 3*8,2*8,4*8
   472 00000574 150E1C                      db 3*7,2*7,4*7
   473 00000577 120C18                      db 3*6,2*6,4*6
   474 0000057A 0F0A14                      db 3*5,2*5,4*5
   475 0000057D 0C0810                      db 3*4,2*4,4*4
   476 00000580 09060C                      db 3*3,2*3,4*3
   477 00000583 060408                      db 3*2,2*2,4*2
   478 00000586 030204                      db 3*1,2*1,4*1
   479 00000589 000000                      db 3*0,2*0,4*0
   480 0000058C 2D2D2D                      db 3*15,3*15,3*15
   481 0000058F 2A2A2A                      db 3*14,3*14,3*14
   482 00000592 272727                      db 3*13,3*13,3*13
   483 00000595 242424                      db 3*12,3*12,3*12
   484 00000598 212121                      db 3*11,3*11,3*11
   485 0000059B 1E1E1E                      db 3*10,3*10,3*10
   486 0000059E 1B1B1B                      db 3*9,3*9,3*9
   487 000005A1 181818                      db 3*8,3*8,3*8
   488 000005A4 151515                      db 3*7,3*7,3*7
   489 000005A7 121212                      db 3*6,3*6,3*6
   490 000005AA 0F0F0F                      db 3*5,3*5,3*5
   491 000005AD 0C0C0C                      db 3*4,3*4,3*4
   492 000005B0 090909                      db 3*3,3*3,3*3
   493 000005B3 060606                      db 3*2,3*2,3*2
   494 000005B6 030303                      db 3*1,3*1,3*1
   495 000005B9 000000                      db 3*0,3*0,3*0
   496 000005BC 1E3C2D                      db 2*15,4*15,3*15
   497 000005BF 1C382A                      db 2*14,4*14,3*14
   498 000005C2 1A3427                      db 2*13,4*13,3*13
   499 000005C5 183024                      db 2*12,4*12,3*12
   500 000005C8 162C21                      db 2*11,4*11,3*11
   501 000005CB 14281E                      db 2*10,4*10,3*10
   502 000005CE 12241B                      db 2*9,4*9,3*9
   503 000005D1 102018                      db 2*8,4*8,3*8
   504 000005D4 0E1C15                      db 2*7,4*7,3*7
   505 000005D7 0C1812                      db 2*6,4*6,3*6
   506 000005DA 0A140F                      db 2*5,4*5,3*5
   507 000005DD 08100C                      db 2*4,4*4,3*4
   508 000005E0 060C09                      db 2*3,4*3,3*3
   509 000005E3 040806                      db 2*2,4*2,3*2
   510 000005E6 020403                      db 2*1,4*1,3*1
   511 000005E9 000000                      db 2*0,4*0,3*0
   512                                  
   513                                  bss_start:
   514                                  
   515                                  ABSOLUTE bss_start
   516                                  
   517                                  alignb 2
   518                                  
   519                                  Star_Struct:
   520                                       Stars.X   equ   0        ; X-position of star
   521                                       Stars.Y   equ   2        ; Y-position of star
   522                                       Stars.Z   equ   4        ; Z-position of star
   523                                       Stars.OldDi equ 6        ; Where to erase old star
   524                                       Stars.Color equ 8        ; Color of star
   525                                  
   526                                  StarStrucSize equ 9    ; Number of bytes per entry ( 4 wordz and a byte )
   527                                  
   528                                  Stars:
   529 000005EC <res 000006AE>               resb StarStrucSize * MaxStars  ; Array of star-records
   530                                  
   531                                  bss_end:
