Name:lineJump[Show more] Type:Variable Category:Drawing lines Summary:Jump table for drawing a horizontal line of between 0 and 17pixels using the relevant entry point in DrawLineSegment Deep dive:Drawing triangles
Context:See this variable on its own page References:No direct references to this variable in this source file
.lineJumpEQUDDrawLineSegment+17*4\ Draw a horizontal line of 0 pixelsEQUDDrawLineSegment+16*4\ Draw a horizontal line of 1 pixelsEQUDDrawLineSegment+15*4\ Draw a horizontal line of 2 pixelsEQUDDrawLineSegment+14*4\ Draw a horizontal line of 3 pixelsEQUDDrawLineSegment+13*4\ Draw a horizontal line of 4 pixelsEQUDDrawLineSegment+12*4\ Draw a horizontal line of 5 pixelsEQUDDrawLineSegment+11*4\ Draw a horizontal line of 6 pixelsEQUDDrawLineSegment+10*4\ Draw a horizontal line of 7 pixelsEQUDDrawLineSegment+9*4\ Draw a horizontal line of 8 pixelsEQUDDrawLineSegment+8*4\ Draw a horizontal line of 9 pixelsEQUDDrawLineSegment+7*4\ Draw a horizontal line of 10 pixelsEQUDDrawLineSegment+6*4\ Draw a horizontal line of 11 pixelsEQUDDrawLineSegment+5*4\ Draw a horizontal line of 12 pixelsEQUDDrawLineSegment+4*4\ Draw a horizontal line of 13 pixelsEQUDDrawLineSegment+3*4\ Draw a horizontal line of 14 pixelsEQUDDrawLineSegment+2*4\ Draw a horizontal line of 15 pixelsEQUDDrawLineSegment+1*4\ Draw a horizontal line of 16 pixelsEQUDDrawLineSegment\ Draw a horizontal line of 17 pixels
Name:DrawHorizontalLine[Show more] Type:Subroutine Category:Drawing lines Summary:Draw a horizontal line Deep dive:Drawing triangles
Arguments:R8Line colour (in the form of a four-pixel colour word)R10Line lengthR11Screen address of the left end of the line
.DrawHorizontalLineCMPR10,#18\ If R10 < 18 then set the flags so the next\ set of instructions are run (so for lines\ of length 17 pixels and fewer, we jump to\ the relevant routine in the lineJump to\ draw the line]varOffset=P% + 8 - lineJump\ Set labOffset to the offset back to the\ lineJump table from the next instruction[ OPT pass%ADDLOR0,PC,R10,LSL#2\ If R10 < 18, jump to the address in entryLDRLOPC,[R0,#-varOffset]\ R10 in the lineJump table, which will draw\ a horizontal line R10 pixels long and\ return from the subroutine using a tail\ call\ If we get here then we need to draw a line\ of 18 pixels or moreADDR10,R11,R10\ Set R10 to the screen address of the right\ end of the line (i.e. the address of the\ left end in R11 plus the width in R10)BICR0,R10,#%00000011\ Set R0 to the screen address with bits 0\ and 1 cleared, so R0 points to the word in\ screen memory that contains the right end\ of the line (the "right cap")\ So by this point R11 points to the word in\ screen memory that contains the left cap\ of the line (which is the word containing\ the left end of the line), and R0 points\ to the right cap\\ The caps can contain 1, 2, 3 or 4 pixels,\ as each 32-bit word contains four one-byte\ pixels\\ If a cap contains four pixels, then bits 0\ and 1 of the cap address will be zero, so\ in the following we draw the line as\ follows:\\ * If the left cap contains 1, 2 or 3\ pixels, draw those pixels\\ * Draw the portion of the line between\ the left and right caps, drawing it\ one word (four pixels) at a time\\ * If the right cap contains 1, 2 or 3\ pixels, draw those pixels\\ We start with the left cap at screen\ address R11TSTR11,#%00000011\ If R11 is not a multiple of 4 then one orSTRNEBR8,[R11],#1\ both of bits 0 and 1 will be non-zero, so\ set the pixel at R11 to the colour in R8\ and increment R11\\ So this draws the pixel at the end of the\ line, and it increments R11 so R11 now\ points to the next pixel alongTSTNER11,#%00000011\ If R11 is still not a multiple of 4 thenSTRNEBR8,[R11],#1\ bits 0 and 1 will still be non-zero, so\ set the pixel at R11 to the colour in R8\ and increment R11\\ So this draws the second pixel in the line\ if drawing the first one didn't take us to\ a word boundary, and it increments R11 so\ R11 now points to the next pixel alongTSTNER11,#%00000011\ If R11 is still not a multiple of 4 thenSTRNEBR8,[R11],#1\ bits 0 and 1 will still be non-zero, so\ set the pixel at R11 to the colour in R8\ and increment R11\\ So this draws the third pixel in the line\ if drawing the first two didn't take us to\ a word boundary, and it increments R11 so\ R11 now points to the next pixel along\ By this point R11 will definitely be on a\ word boundary and we have successfully\ drawn the left cap of the line, so now we\ draw the centre portion of the line, all\ the way to the right cap\\ We do this in a loop that is unrolled once\ to speed things up a little but.hlin1STRR8,[R11],#4\ Draw a full word (four pixels) in the\ colour in R8 at screen address R11 and\ increment R11 by 4 to move on to the next\ wordCMPR11,R0\ If R11 < R0 then we have not yet reachedSTRLOR8,[R11],#4\ the right cap, so draw another word in\ memory and increment R11 againCMPLOR11,R0\ If R11 < R0 then we have still not reachedBLOhlin1\ the right cap, so loop back to hlin1 to\ keep drawing the centre portion of the\ line until we do reach the right capCMPR11,R10\ If R11 < R10 then we have not yet reachedSTRLOBR8,[R11],#1\ the end of the line, so we draw up toCMPLOR11,R10\ three pixels in the final word of the lineSTRLOBR8,[R11],#1\ by simply drawing each pixel, incrementingCMPLOR11,R10\ R11 and then re-checking whether R11 hasSTRLOBR8,[R11],#1\ reached R10 (and drawing the next pixel if\ it hasn't)MOVPC,R14\ Return from the subroutine
Name:DrawLineSegment[Show more] Type:Subroutine Category:Drawing lines Summary:Draw a horizontal line of between 0 and 17 pixels by jumping tothe relevant entry point Deep dive:Drawing triangles
Arguments:R8Line colour (in the form of a four-pixel colour word)R11Screen address of left end of line
.DrawLineSegmentSTRBR8,[R11,#16]\ Draw a horizontal line of 17 pixelsSTRBR8,[R11,#15]\ Draw a horizontal line of 16 pixelsSTRBR8,[R11,#14]\ Draw a horizontal line of 15 pixelsSTRBR8,[R11,#13]\ Draw a horizontal line of 14 pixelsSTRBR8,[R11,#12]\ Draw a horizontal line of 13 pixelsSTRBR8,[R11,#11]\ Draw a horizontal line of 12 pixelsSTRBR8,[R11,#10]\ Draw a horizontal line of 11 pixelsSTRBR8,[R11,#9]\ Draw a horizontal line of 10 pixelsSTRBR8,[R11,#8]\ Draw a horizontal line of 9 pixelsSTRBR8,[R11,#7]\ Draw a horizontal line of 8 pixelsSTRBR8,[R11,#6]\ Draw a horizontal line of 7 pixelsSTRBR8,[R11,#5]\ Draw a horizontal line of 6 pixelsSTRBR8,[R11,#4]\ Draw a horizontal line of 5 pixelsSTRBR8,[R11,#3]\ Draw a horizontal line of 4 pixelsSTRBR8,[R11,#2]\ Draw a horizontal line of 3 pixelsSTRBR8,[R11,#1]\ Draw a horizontal line of 2 pixelsSTRBR8,[R11]\ Draw a horizontal line of 1 pixelMOVPC,R14\ Return from the subroutine
Name:workspaceAddr[Show more] Type:Variable Category:Start and end Summary:The address of the game's variable workspace
.mouseParametersEQUB3\ This is OS_Word 21,3, so the reason code\ in the first byte is 3EQUW511\ The X position for the mouseEQUW511\ The Y position for the mouse ALIGN
Name:mouseParametersAddr[Show more] Type:Variable Category:Player Summary:The address of the OS_Word block for resetting the mouse position
.ResetMousePositionLDRR1,mouseParametersAddr\ Call OS_Word 21,3 to reset the mouseMOVR0,#21\ position to (511, 511)SWIOS_WordMOVPC,R14\ Return from the subroutine
Name:AbortWithMemoryError[Show more] Type:Subroutine Category:Start and end Summary:Show a memory error and abort the game
.AbortWithMemoryErrorSTRBR1,[R0]\ Restore the byte that we have been poking\ in the Entry routine to determine whether\ there is enough memorySWIOS_WriteS\ Print an error explaining that there isn'tEQUS"There is not enough "\ enough free memory to run the gameEQUS"memory to run this "EQUS"game."EQUW&0D0AEQUS"Please *CONFIGURE your "EQUS"machine to free more "EQUS"memory."EQUB0 ALIGNBReturnToDesktop\ Jump to ReturnToDesktop to quit the game\ and return to the desktop
Name:Entry[Show more] Type:Subroutine Category:Start and end Summary:The main entry point for the game
Context:See this subroutine on its own page References:No direct references to this subroutine in this source file
.EntryMOVR0,#22\ Change to screen mode 15, which uses 160KSWIOS_WriteC\ of screen memory, the same amount that weMOVR0,#15\ need for the game (though in the game weSWIOS_WriteC\ actually use two mode 13 screens, each of\ which is 80K)STRR13,stackPointerOnEntry\ Store the stack pointer from when the game\ started in stackPointerOnEntry, so we can\ retore it when we quit the gameLDRR13,stackAddr\ Set the stack pointer in R13 to stackAddr,\ so the 512 bytes descending from stackAddr\ can be used as the game's stackLDRR11,workspaceAddr\ Set R11 to the address of the workspace,\ which is stored in workspaceAddr, so we\ can access workspace variables by applying\ an offset to R11 using [R11, #offset]STMFDR13!,{R14}\ R14 contains the address we should return\ to when quitting the game, so store it on\ the stack so we can retrieve it laterLDRR0,memoryTestAddr\ Set R0 to the address in memoryTestAddr,\ which points to a byte that will be\ writable if there is enough free memory\ for running the gameLDRBR1,[R0]\ Set R1 to the current contents of memory\ at R0, so we can restore it after running\ our memory testsMOVR2,#&AA\ Store the value &AA in our test memorySTRBR2,[R0]\ location in R0, read it back, and if theLDRBR3,[R0]\ returned value is different to &AA, jumpCMPR2,R3\ to AbortWithMemoryError to abort the game,BNEAbortWithMemoryError\ as there isn't enough free memoryMOVR2,#&55\ Store the value &55 in our test memorySTRBR2,[R0]\ location in R0, read it back, and if theLDRBR3,[R0]\ returned value is different to &55, jumpCMPR2,R3\ to AbortWithMemoryError to abort the game,BNEAbortWithMemoryError\ as there isn't enough free memorySTRBR1,[R0]\ Restore the original contents of address\ R0 so it's unchanged by our memory testsMOVR0,#4\ Call OS_Byte 4 to set the cursor keys toMOVR1,#1\ return ASCII values, so they don't moveMOVR2,#0\ the cursor during the gameSWIOS_ByteBLInitialiseParticleData\ Initialise the particle data buffer and\ associated variablesMOVR0,#22\ Change to screen mode 13 (320×256 pixelsSWIOS_WriteC\ with 256 colours), which will displayMOVR0,#13\ screen bank 1SWIOS_WriteCSWIOS_WriteS\ Write the game's title into the top lineEQUS"Lander Demo/Practice "\ of the screen, where it remains for theEQUS"(C) D.J.Braben 1987"\ whole gameEQUB0 ALIGNBLSwitchScreenBank\ Switch screen bank, so VDU commands go to\ screen bank 2MOVR0,#22\ Change to screen mode 13 with shadowSWIOS_WriteC\ memory enabled (i.e. mode 128 + 13), whichMOVR0,#128+13\ creates two mode 13 screen banksSWIOS_WriteC\ MOVR0,#23\ Start printing the following VDU command:SWIOS_WriteC\ MOVR0,#1\ VDU 23, 1, 0, 0, 0, 0, 0, 0, 0, 0SWIOS_WriteC\ \ which disables the cursorMOVR8,#8\ We now want to print the eight zeroes in\ the above command, so set a loop counter\ in R8.entr1MOVR0,#0\ This loop prints the eight zeroes in theSWIOS_WriteC\ above VDU commandSUBSR8,R8,#1\ Decrement the loop counterBNEentr1\ Loop back until we have printed all eight\ zeroesSWIOS_WriteS\ Write the game's title into the top lineEQUS"Lander Demo/Practice "\ of screen bank 2, so the same titleEQUS"(C) D.J.Braben 1987"\ appears at the top of both screen banksEQUB0 ALIGNLDRR0,initialScore\ Initialise currentScore to the score thatSTRR0,[R11,#currentScore]\ we start each game with, which is set in\ initialScoreLDRR0,initialHighScore\ Initialise highScore to the high scoreSTRR0,[R11,#highScore]\ that we start the game with, which is set\ in initialHighScore
Name:StartNewGame[Show more] Type:Subroutine Category:Main loop Summary:Start a brand new game with a full set of lives and a newlygenerated set of objects
.StartNewGame\ We start by initialising the scores and\ printing them on the score barLDRR0,[R11,#highScore]\ Set R0 to the current high scoreLDRR1,[R11,#currentScore]\ Set R1 to our current scoreCMPR1,R0\ If R1 - R0 is positive, i.e. R1 >= R0,MOVPLR0,R1\ then our latest score is higher than the\ high score, so set R0 to our latest score\\ So R0 is set to the maximum of highScore\ and currentScore, which is the new high\ scoreSTRHSR0,[R11,#highScore]\ If R1 >= R0 then we just updated the high\ score and the new high score is in R0, so\ store the new high score in highScoreMOVR1,#35\ Set (R1, R2) = (35, 1) so the followingMOVR2,#1\ call to PrintScoreInBothBanks prints the\ high score at column 35 on row 1BLPrintScoreInBothBanks\ Print the high score in R0 at column 35 on\ row 1, at the right end of the score barLDRR0,initialScore\ Initialise currentScore to the score thatSTRR0,[R11,#currentScore]\ we start each game with, which is set in\ initialScore\ We now initialise more game variablesLDRR0,initialFuelLevel\ Initialise fuelLevel to the fuel levelSTRR0,[R11,#fuelLevel]\ that we start each game with, which is set\ in initialFuelLevelMOVR0,#&30000\ Initialise gravity to &30000STRR0,[R11,#gravity]MOVR0,#3\ Initialise the number of lives to 3STRR0,[R11,#remainingLives]
Name:PlaceObjectsOnMap[Show more] Type:Subroutine Category:3D objects Summary:Randomly place a number of objects on the map, avoiding the seaand the launchpad Deep dive:Placing objects on the map
Context:See this subroutine on its own page References:No direct references to this subroutine in this source file
The object map at objectMap contains one byte for each tile on the landscape.
This byte determines which object (if any) appears on that tile, where objects
are trees, buildings, rockets and so on.
.PlaceObjectsOnMap\ We start by initialising the object map\ at objectMap with values of &FF, which\ indicates no objects on the mapMVNR0,#0\ Set R0 to R3 to &FF so we can poke themMVNR1,#0\ into memory at objectMap (this sets eachMVNR2,#0\ 32-bit register to &FFFFFFFF, which is theMVNR3,#0\ same as four bytes, each of which is &FF)MOVR4,#256*256\ Set R4 to use as a byte counter in the\ following loop, which works through each\ of the coordinates in the 256x256 mapADDR6,R11,#objectMap\ Set R6 to the address of the object map.snew1STMIAR6!,{R0-R3}\ Store four words, or 16 bytes, at R6,\ updating R6 as we go, with each byte\ containing &FFSUBSR4,R4,#16\ Subtract 16 from the byte counter in R4\ as we just initialised 16 bytesBNEsnew1\ Loop back until we have set all bytes in\ the object map to &FF\ We now add 2048 randomly chosen 3D objects\ to the object map, each one at a random\ coordinate and of a random typeADDR6,R11,#objectMap\ Set R6 to the address of the object mapMOVR5,#2048\ Set R5 to a loop counter as we work\ through all 2048 objects.snew2BLGetRandomNumbers\ Set R0 and R1 to random numbersMOVR8,R0\ Set R8 = R0, so R8 is a random number\\ We use the top byte of R8 below as the\ x-coordinate of the 3D objectMOVR9,R0,LSL#8\ Set R9 = R0 << 8\\ We use the top byte of R9 below as the\ z-coordinate of the 3D object, so the\ shift ensures that the top bytes of R8\ and R9 are differentSTMFDR13!,{R0}\ Store R0 on the stack so it doesn't get\ corrupted by the following call to\ GetLandscapeAltitudeBLGetLandscapeAltitude\ Set R0 to the altitude of the landscape at\ coordinates (x, z) = (R8, R9)MOVR14,R0\ Set R14 to the landscape altitude returned\ in R0LDMFDR13!,{R0}\ Retrieve the value of R0 from the stack\ that we stored aboveCMPR14,#SEA_LEVEL\ If R14 = LAUNCHPAD_ALTITUDE or SEA_LEVEL,CMPNER14,#LAUNCHPAD_ALTITUDE\ jump to snew3 to skip the following, so weBEQsnew3\ do not place any objects on the sea or the\ launchpadANDR0,R0,#7\ Reduce R0 to the range 1 to 8, so this isADDR0,R0,#1\ a random number that we use to determine\ the type of object we're adding (so there\ are lots of trees):\\ * 1 = small leafy tree\ * 2 = tall leafy tree\ * 3 = small leafy tree\ * 4 = small leafy tree\ * 5 = gazebo\ * 6 = tall leafy tree\ * 7 = fir tree\ * 8 = building\\ See the objectTypes table for details of\ object typesANDR9,R9,#&FF000000\ Set the bottom three bytes of R9 to zero,\ leaving just the top byte, so we can use\ it in the following\ The object at coordinate (x, z) is stored\ at offset &zzxx within objectMap, where\ &xx and &zz are the top bytes of the full\ 32-bit coordinates\\ In the following we set this address in\ R14:\\ objectMap + (R8 >> 24) + (R9 >> 16)\\ R8 is shifted into the bottom byte of R14,\ so that's the x-coordinate, and R9 is\ shifted into the second byte of R14, so\ that's the z-coordinateADDR14,R6,R8,LSR#24\ Set R14 = R6 + (R8 >> 24) + (R9 >> 16)ADDR14,R14,R9,LSR#16STRBR0,[R14]\ Store R0 in the address in R14 to add the\ object to the map at the coordinates given\ by the top bytes of R8 and R9, at (R8, R9).snew3SUBSR5,R5,#1\ Decrement the loop counterBPLsnew2\ Loop back until we have done all &800\ iterations\ We now place three rockets along the right\ edge of the launchpad, with a rocket on\ every other tile, working from front to\ back, into the screen and parallel to the\ z-axis, and with each one having an\ x-coordinate of 7MOVR0,#LAUNCHPAD_OBJECT\ Set R0 to the type of object along the\ right edge of the launchpad, which is a\ rocket of type 9STRBR0,[R6,#&0107]\ Add the front rocket to coordinate (7, 1)STRBR0,[R6,#&0307]\ Add the middle rocket to coordinate (7, 3)STRBR0,[R6,#&0507]\ Add the rear rocket to coordinate (7, 5)
Name:PlacePlayerOnLaunchpad[Show more] Type:Subroutine Category:Player Summary:The main entry point for the game
.PlacePlayerOnLaunchpadLDRR0,[R11,#remainingLives]\ Set R0 to the number of remaining livesMOVR1,#30\ Set (R1, R2) = (30, 1) so the followingMOVR2,#1\ call to PrintScoreInBothBanks prints the\ number of lives at column 30 on row 1BLPrintScoreInBothBanks\ Print the number of lives in R0 at column\ 30 on row 1, just before the high score\ towards the right end of the score barMVNR0,#0\ Set playingGame = -1 to flag that the gameSTRR0,[R11,#playingGame]\ is being played and that this is not the\ crash animationMOVR0,#0\ Set xCamera = 0 and zCamera = 0STRR0,[R11,#xCamera]\STRR0,[R11,#zCamera]\ This doesn't have any effect as the camera\ position is set at the start of the main\ loop by the call to MoveAndDrawPlayer,\ which overwrites these valuesSTRR0,[R11,#shipDirection]\ Set shipDirection = 0 so the ship faces\ right when the game starts (though this is\ quickly corrected when the game uses the\ mouse coordinates to calculate the\ direction)MOVR0,#1\ Set shipPitch = 1 so the ship is verySTRR0,[R11,#shipPitch]\ slightly pitched up for take-offMOVR0,#LAUNCHPAD_SIZE/2\ Set the starting coordinates of theMOVR2,R0\ player's ship as follows:ADDR3,R11,#xPlayer\MOVR1,#LAUNCHPAD_Y\ xPlayer = LAUNCHPAD_SIZE / 2STMIAR3!,{R0-R2}\ yPlayer = LAUNCHPAD_Y\ zPlayer = LAUNCHPAD_SIZE / 2\\ which is in the middle of the launchpadMOVR0,#0\ Set the player's velocity to zero asMOVR1,#0\ follows:MOVR2,#0\STMIAR3!,{R0-R2}\ xVelocity = 0\ yVelocity = 0\ zVelocity = 0BLResetMousePosition\ Reset the mouse position to (511, 511),\ ready for the game
Name:MainLoop[Show more] Type:Subroutine Category:Main loop Summary:The main game loop Deep dive:The main game loop
Context:See this subroutine on its own page References:No direct references to this subroutine in this source file
.MainLoopMOVR0,#129\ Call OS_Byte 129 to read the keyboard withMOVR1,#0\ the time limit in R1 and R2 (so that'sMOVR2,#0\ with no time limit as R1 and R2 are zero),SWIOS_Byte\ returning the result in R2TEQR2,#&1B\ If R2 = &1B then an escape conditionBEQEndGame\ occurred during the keyboard scan (in\ other words, Escape was pressed), so jump\ to EndGame to acknowledge the escape\ condition and quit the gameBLMoveAndDrawPlayer\ Move the player's ship and draw it into\ the graphics buffers\ We now set up the rotation matrix for the\ rocks, using the main loop counter to\ generate rotation angles that change along\ with the main loop (so the rocks spin at a\ nice steady speed)LDRR0,[R11,#mainLoopCount]\ Set R0 = mainLoopCount << 24MOVR0,R0,LSL#24MOVR1,R0,LSL#1\ Set R1 = mainLoopCount << 25BLCalculateRotationMatrix\ Calculate the rotation matrix from the\ "angles" given in R0 and R1, which we can\ apply to any rocks we draw in the\ MoveAndDrawParticles routine (as rocks are\ only rotating 3D objects apart from the\ player, and the player calculates its own\ rotation matrix)BLDropRocksFromTheSky\ If the score is 800 or more, then randomly\ drop rocks from the skyBLMoveAndDrawParticles\ Move and draw all the particles, such as\ smoke clouds and bullets, into the\ graphics buffersBLDrawObjects\ Draw all the objects, such as trees and\ buildings, into the graphics buffersBLAddTerminatorsToBuffers\ Add terminators to the ends of the\ graphics buffers so we know when to stop\ drawingBLDrawLandscapeAndBuffers\ Draw the landscape and the contents of the\ graphics buffersBLPrintCurrentScore\ Print the number of remaining bullets at\ the left end of the score barBLDrawFuelLevel\ Draw the fuel barBLSwitchScreenBank\ Switch screen banks and clear the newly\ hidden screen bank to blackLDRR14,[R11,#mainLoopCount]\ Increment the main loop counterADDR14,R14,#1STRR14,[R11,#mainLoopCount]BMainLoop\ Loop back to repeat the main loop
Name:EndGame[Show more] Type:Subroutine Category:Main loop Summary:Finish the game
.EndGameMOVR0,#126\ Call OS_Byte 126 to acknowledge the escapeSWIOS_Byte\ condition caused by the player pressing\ Escape in the main loopMOVR0,#22\ Change to screen mode 0SWIOS_WriteCMOVR0,#0SWIOS_WriteCMOVR0,#4\ Call OS_Byte 4 to set the cursor keys toMOVR1,#0\ move the cursor, so they work normallyMOVR2,#0\ againSWIOS_Byte
Name:ReturnToDesktop[Show more] Type:Subroutine Category:Start and end Summary:Return to the desktop
.ReturnToDesktopLDMFDR13!,{R14}\ Restore the value from the stack and store\ it in R14, so R14 contains the same value\ that it had when the game was first run,\ and which we stored on the stack in the\ Entry routine\\ So this sets R14 to the address we should\ return to when quitting the gameLDRR13,stackPointerOnEntry\ Set R13 to the value that we stored in the\ Entry routine, so that the stack pointer\ is restored to the value that it had when\ the game was first run, and which we\ stored in stackPointerOnEntry in the Entry\ routineMOVPC,R14\ Exit from the game by jumping to the\ address in R14, which will return us to\ the Desktop (or wherever the game was run\ from)
Name:PrintHexNumber[Show more] Type:Subroutine Category:Score bar Summary:An unused routine that prints an 8-digit hexadecimal number on thesecond character row of the screen Deep dive:Unused code in Lander
Context:See this subroutine on its own page References:No direct references to this subroutine in this source file
Arguments:R1The number to print
.PrintHexNumberMOVR0,#30\ Print a VDU 30 command to move the textSWIOS_WriteC\ cursor to the top-left corner of the\ screenMOVR0,#&0A\ Print a line feed (ASCII &0A) to move theSWIOS_WriteC\ cursor down one line, to the start of the\ second line, which is where we print the\ score barSTMFDR13!,{R0-R12,R14}\ Store the registers that we want to use on\ the stack so they can be preservedMOVR0,R1,LSR#28\ Print the top nibble of the value in R1BLPrintHexDigitMOVR0,R1,LSR#24\ Print the next nibble of the value in R1BLPrintHexDigitMOVR0,R1,LSR#20\ Print the next nibble of the value in R1BLPrintHexDigitMOVR0,R1,LSR#16\ Print the next nibble of the value in R1BLPrintHexDigitMOVR0,R1,LSR#12\ Print the next nibble of the value in R1BLPrintHexDigitMOVR0,R1,LSR#8\ Print the next nibble of the value in R1BLPrintHexDigitMOVR0,R1,LSR#4\ Print the next nibble of the value in R1BLPrintHexDigitMOVR0,R1\ Print the bottom nibble of the value in R1BLPrintHexDigitMOVR0,#&A\ Print a line feed (ASCII &0A) and carriageSWIOS_WriteC\ return (ASCII &0D) to move the cursor downMOVR0,#&D\ to the start of the next line, ready toSWIOS_WriteC\ print further numbers if requiredLDMFDR13!,{R0-R12,PC}\ Retrieve the registers that we stored on\ the stack and return from the subroutine
Name:PrintHexDigit[Show more] Type:Subroutine Category:Score bar Summary:An unused routine that prints a single digit hexadecimal number inthe score bar Deep dive:Unused code in Lander
Arguments:R0The number to print (only the low nibble is printed, the rest of the number is ignored)
.PrintHexDigitANDR0,R0,#&F\ Extract the low nibble from the number in\ R0CMPR0,#&A\ If the low nibble in R0 >= &A then the hexADDHSR0,R0,#&37\ digit is A to F, so add &37 to get the\ corresponding hex digit (so this converts\ &A into ASCII &37 + &A = &41, which gives\ us "A", the hex digit we want)ADDLOR0,R0,#&30\ Otherwise the low nibble in R0 is 0 to 9,\ so add the ASCII value of "0" (ASCII &30)\ to get the corresponding hex digitSWIOS_WriteC\ Print the character in R0MOVPC,R14\ Return from the subroutine
Name:objectRock[Show more] Type:Variable Category:3D objects Summary:Object blueprint for a rock Deep dive:Object blueprints
.objectTallLeafyTreeEQUD14\ Number of verticesEQUD6\ Number of facesEQUDobjectTallLeafyTreeFaces-objectTallLeafyTreeEQUD%00000010\ Flags: Bit 0 = 0 = object is static\ Bit 1 = 0 = object has a shadow.objectTallLeafyTreeVertices\ xObject, yObject, zObjectEQUD&0036DB6D,&FD733334,&00300000\ Vertex 0EQUD&FFD00000,&00000000,&00000000\ Vertex 1EQUD&00300000,&00000000,&00000000\ Vertex 2EQUD&00000000,&FE0CCCCD,&FF400000\ Vertex 3EQUD&00800000,&FE59999A,&FF800000\ Vertex 4EQUD&FF533334,&FE333334,&FFC92493\ Vertex 5EQUD&FF400000,&FEA66667,&00600000\ Vertex 6EQUD&00000000,&FF19999A,&FF666667\ Vertex 7EQUD&FF800000,&FF400000,&FFA00000\ Vertex 8EQUD&FFA00000,&FE800000,&00999999\ Vertex 9EQUD&00C00000,&FECCCCCD,&00C00000\ Vertex 10EQUD&FFB33334,&FF19999A,&00E66666\ Vertex 11EQUD&00800000,&FF400000,&00C00000\ Vertex 12EQUD&00300000,&FE59999A,&00300000\ Vertex 13.objectTallLeafyTreeFaces\ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colourEQUD&FD3D01DD,&D2CB371E,&6F20024E,0,9,10,&040\ 0EQUD&1E6F981A,&BB105ECE,&5D638B16,13,11,12,&080\ 1EQUD&00000000,&00000000,&00000000,0,1,2,&400\ 2EQUD&49D96509,&B8E72762,&C19E3A19,0,3,4,&080\ 3EQUD&AD213B74,&B641CA5D,&2DC40650,0,5,6,&040\ 4EQUD&C9102051,&AC846CAD,&BD92A8C1,13,7,8,&040\ 5
Name:objectSmokingRemainsLeft[Show more] Type:Variable Category:3D objects Summary:Object blueprint for the smoking remains that bend to the left Deep dive:Object blueprints
.objectSmokingRemainsLeftEQUD5\ Number of verticesEQUD2\ Number of facesEQUDobjectSmokingRemainsLeftFaces-objectSmokingRemainsLeftEQUD%00000000\ Flags: Bit 0 = 0 = object is static\ Bit 1 = 0 = object has no shadow.objectSmokingRemainsLeftVertices\ xObject, yObject, zObjectEQUD&FFD9999A,&00000000,&00000000\ Vertex 0EQUD&00266666,&00000000,&00000000\ Vertex 1EQUD&002B3333,&FFC00000,&00000000\ Vertex 2EQUD&00300000,&FF800000,&00000000\ Vertex 3EQUD&FFD55556,&FECCCCCD,&00000000\ Vertex 4.objectSmokingRemainsLeftFaces\ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colourEQUD&00000000,&00000000,&00000000,0,1,3,&000\ 0EQUD&00000000,&00000000,&00000000,2,3,4,&000\ 1
Name:objectSmokingRemainsRight[Show more] Type:Variable Category:3D objects Summary:Object blueprint for the smoking remains that bend to the right Deep dive:Object blueprints
.objectBuildingEQUD16\ Number of verticesEQUD12\ Number of facesEQUDobjectBuildingFaces-objectBuildingEQUD%00000000\ Flags: Bit 0 = 0 = object is static\ Bit 1 = 0 = object has no shadow.objectBuildingVertices\ xObject, yObject, zObjectEQUD&FF19999A,&FF266667,&00000000\ Vertex 0EQUD&FF400000,&FF266667,&00000000\ Vertex 1EQUD&00C00000,&FF266667,&00000000\ Vertex 2EQUD&00E66666,&FF266667,&00000000\ Vertex 3EQUD&FF19999A,&FF8CCCCD,&00A66666\ Vertex 4EQUD&FF19999A,&FF8CCCCD,&FF59999A\ Vertex 5EQUD&00E66666,&FF8CCCCD,&00A66666\ Vertex 6EQUD&00E66666,&FF8CCCCD,&FF59999A\ Vertex 7EQUD&FF400000,&FF666667,&00800000\ Vertex 8EQUD&FF400000,&FF666667,&FF800000\ Vertex 9EQUD&00C00000,&FF666667,&00800000\ Vertex 10EQUD&00C00000,&FF666667,&FF800000\ Vertex 11EQUD&FF400000,&00000000,&00800000\ Vertex 12EQUD&FF400000,&00000000,&FF800000\ Vertex 13EQUD&00C00000,&00000000,&00800000\ Vertex 14EQUD&00C00000,&00000000,&FF800000\ Vertex 15.objectBuildingFaces\ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colourEQUD&00000000,&99CD0E6D,&3EE445CC,0,4,6,&400\ 0EQUD&00000000,&99CD0E6D,&3EE445CC,0,3,6,&400\ 1EQUD&88000000,&00000000,&00000000,1,8,9,&DDD\ 2EQUD&78000000,&00000000,&00000000,2,10,11,&555\ 3EQUD&88000000,&00000000,&00000000,8,12,13,&FFF\ 4EQUD&88000000,&00000000,&00000000,8,9,13,&FFF\ 5EQUD&78000000,&00000000,&00000000,10,14,15,&777\ 6EQUD&78000000,&00000000,&00000000,10,11,15,&777\ 7EQUD&00000000,&00000000,&88000000,9,13,15,&BBB\ 8EQUD&00000000,&00000000,&88000000,9,11,15,&BBB\ 9EQUD&00000000,&99CD0E6D,&C11BBA34,0,5,7,&800\ 10EQUD&00000000,&99CD0E6D,&C11BBA34,0,3,7,&800\ 11
Name:objectSmokingBuilding[Show more] Type:Variable Category:3D objects Summary:Object blueprint for the smoking remains of a building Deep dive:Object blueprints
.objectSmokingBuildingEQUD6\ Number of verticesEQUD6\ Number of facesEQUDobjectSmokingBuildingFaces-objectSmokingBuildingEQUD%00000000\ Flags: Bit 0 = 0 = object is static\ Bit 1 = 0 = object has no shadow.objectSmokingBuildingVertices\ xObject, yObject, zObjectEQUD&FF400000,&00000001,&00800000\ Vertex 0EQUD&FF400000,&00000001,&FF800000\ Vertex 1EQUD&00C00000,&00000001,&00800000\ Vertex 2EQUD&00C00000,&00000001,&FF800000\ Vertex 3EQUD&FF400000,&FF99999A,&00800000\ Vertex 4EQUD&00C00000,&FFB33334,&FF800000\ Vertex 5.objectSmokingBuildingFaces\ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colourEQUD&00000000,&78000000,&00000000,0,1,2,&000\ 0EQUD&00000000,&78000000,&00000000,1,2,3,&000\ 1EQUD&00000000,&00000000,&78000000,0,2,4,&333\ 2EQUD&88000000,&00000000,&00000000,0,1,4,&666\ 3EQUD&78000000,&00000000,&00000000,2,3,5,&555\ 4EQUD&00000000,&00000000,&88000001,1,3,5,&777\ 5
Name:objectSmokingGazebo[Show more] Type:Variable Category:3D objects Summary:Object blueprint for the smoking remains of a gazebo Deep dive:Object blueprints
At byte n, the table contains:
(2^31 - 1) * SIN(2 * PI * (n / 1024))
For n = 0 to 1023
In the original BBC BASIC source, this table would have been populated using
something along these lines:
FOR I% = 0 TO 1023
[
OPT pass%
EQUD (2^31 - 1) * SIN(2 * PI * (I% / 1024))
]
NEXT
I have used EQUDs here because different computers have different algorithms
and accuracies in their maths routines, so the only way to ensure a complete
match with the original binaries is to hard-code the values.
The above loop produces the correct values when run on an Archimedes.
At byte n, the table contains:
((2^31 - 1) / PI) * arctan(n / 128)
For n = 0 to 127
In the original BBC BASIC source, this table would have been populated using
something along these lines:
FOR I% = 0 TO 127
[
OPT pass%
EQUD ((2^31 - 1) / PI) * ATN(I% / 128)
]
NEXT
I have used EQUDs here because different computers have different algorithms
and accuracies in their maths routines, so the only way to ensure a complete
match with the original binaries is to hard-code the values.
The above loop produces the correct values when run on an Archimedes.
At byte n, the table contains:
(2^31 - 1) * SQRT(n / 1024)
For n = 0 to 1023
In the original BBC BASIC source, this table would have been populated using
something along these lines:
FOR I% = 0 TO 1023
[
OPT pass%
EQUD (2^31 - 1) * SQR(I% / 1024)
]
NEXT
I have used EQUDs here because different computers have different algorithms
and accuracies in their maths routines, so the only way to ensure a complete
match with the original binaries is to hard-code the values.
The above loop produces the correct values when run on an Archimedes.
There are 64 tables, each one for a different denominator d (d = 0 to 63)
In table d, byte n in the table contains:
65536 * n / d
For n = 0 to 63 (the value is &FFFFFFFF when n = 0)
The address of the table containing the values of n / d is:
divisionTable + d * 256
In the original BBC BASIC source, this table would have been populated using
something along these lines:
FOR I% = 0 TO 63
[
OPT pass%
EQUD &FFFFFFFF
]
FOR J% = 1 TO 63
[
OPT pass%
EQUD 65536 * I% / J%
]
NEXT
NEXT
I have used EQUDs here because different computers have different algorithms
and accuracies in their maths routines, so the only way to ensure a complete
match with the original binaries is to hard-code the values.
The above loop produces the correct values when run on an Archimedes.
.divisionTableEQUD&FFFFFFFF,&00000000,&00000000,&00000000\ n / 0 (n = 0 to 63)EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&00000000,&00000000,&00000000,&00000000EQUD&FFFFFFFF,&00010000,&00008000,&00005555\ n / 1 (n = 0 to 63)EQUD&00004000,&00003333,&00002AAA,&00002492EQUD&00002000,&00001C71,&00001999,&00001745EQUD&00001555,&000013B1,&00001249,&00001111EQUD&00001000,&00000F0F,&00000E38,&00000D79EQUD&00000CCC,&00000C30,&00000BA2,&00000B21EQUD&00000AAA,&00000A3D,&000009D8,&0000097BEQUD&00000924,&000008D3,&00000888,&00000842EQUD&00000800,&000007C1,&00000787,&00000750EQUD&0000071C,&000006EB,&000006BC,&00000690EQUD&00000666,&0000063E,&00000618,&000005F4EQUD&000005D1,&000005B0,&00000590,&00000572EQUD&00000555,&00000539,&0000051E,&00000505EQUD&000004EC,&000004D4,&000004BD,&000004A7EQUD&00000492,&0000047D,&00000469,&00000456EQUD&00000444,&00000432,&00000421,&00000410EQUD&FFFFFFFF,&00020000,&00010000,&0000AAAA\ n / 2 (n = 0 to 63)EQUD&00008000,&00006666,&00005555,&00004924EQUD&00004000,&000038E3,&00003333,&00002E8BEQUD&00002AAA,&00002762,&00002492,&00002222EQUD&00002000,&00001E1E,&00001C71,&00001AF2EQUD&00001999,&00001861,&00001745,&00001642EQUD&00001555,&0000147A,&000013B1,&000012F6EQUD&00001249,&000011A7,&00001111,&00001084EQUD&00001000,&00000F83,&00000F0F,&00000EA0EQUD&00000E38,&00000DD6,&00000D79,&00000D20EQUD&00000CCC,&00000C7C,&00000C30,&00000BE8EQUD&00000BA2,&00000B60,&00000B21,&00000AE4EQUD&00000AAA,&00000A72,&00000A3D,&00000A0AEQUD&000009D8,&000009A9,&0000097B,&0000094FEQUD&00000924,&000008FB,&000008D3,&000008ADEQUD&00000888,&00000864,&00000842,&00000820EQUD&FFFFFFFF,&00030000,&00018000,&00010000\ n / 3 (n = 0 to 63)EQUD&0000C000,&00009999,&00008000,&00006DB6EQUD&00006000,&00005555,&00004CCC,&000045D1EQUD&00004000,&00003B13,&000036DB,&00003333EQUD&00003000,&00002D2D,&00002AAA,&0000286BEQUD&00002666,&00002492,&000022E8,&00002164EQUD&00002000,&00001EB8,&00001D89,&00001C71EQUD&00001B6D,&00001A7B,&00001999,&000018C6EQUD&00001800,&00001745,&00001696,&000015F1EQUD&00001555,&000014C1,&00001435,&000013B1EQUD&00001333,&000012BB,&00001249,&000011DCEQUD&00001174,&00001111,&000010B2,&00001057EQUD&00001000,&00000FAC,&00000F5C,&00000F0FEQUD&00000EC4,&00000E7D,&00000E38,&00000DF6EQUD&00000DB6,&00000D79,&00000D3D,&00000D04EQUD&00000CCC,&00000C97,&00000C63,&00000C30EQUD&FFFFFFFF,&00040000,&00020000,&00015555\ n / 4 (n = 0 to 63)EQUD&00010000,&0000CCCC,&0000AAAA,&00009249EQUD&00008000,&000071C7,&00006666,&00005D17EQUD&00005555,&00004EC4,&00004924,&00004444EQUD&00004000,&00003C3C,&000038E3,&000035E5EQUD&00003333,&000030C3,&00002E8B,&00002C85EQUD&00002AAA,&000028F5,&00002762,&000025EDEQUD&00002492,&0000234F,&00002222,&00002108EQUD&00002000,&00001F07,&00001E1E,&00001D41EQUD&00001C71,&00001BAC,&00001AF2,&00001A41EQUD&00001999,&000018F9,&00001861,&000017D0EQUD&00001745,&000016C1,&00001642,&000015C9EQUD&00001555,&000014E5,&0000147A,&00001414EQUD&000013B1,&00001352,&000012F6,&0000129EEQUD&00001249,&000011F7,&000011A7,&0000115BEQUD&00001111,&000010C9,&00001084,&00001041EQUD&FFFFFFFF,&00050000,&00028000,&0001AAAA\ n / 5 (n = 0 to 63)EQUD&00014000,&00010000,&0000D555,&0000B6DBEQUD&0000A000,&00008E38,&00008000,&0000745DEQUD&00006AAA,&00006276,&00005B6D,&00005555EQUD&00005000,&00004B4B,&0000471C,&0000435EEQUD&00004000,&00003CF3,&00003A2E,&000037A6EQUD&00003555,&00003333,&0000313B,&00002F68EQUD&00002DB6,&00002C23,&00002AAA,&0000294AEQUD&00002800,&000026C9,&000025A5,&00002492EQUD&0000238E,&00002298,&000021AF,&000020D2EQUD&00002000,&00001F38,&00001E79,&00001DC4EQUD&00001D17,&00001C71,&00001BD3,&00001B3BEQUD&00001AAA,&00001A1F,&00001999,&00001919EQUD&0000189D,&00001826,&000017B4,&00001745EQUD&000016DB,&00001674,&00001611,&000015B1EQUD&00001555,&000014FB,&000014A5,&00001451EQUD&FFFFFFFF,&00060000,&00030000,&00020000\ n / 6 (n = 0 to 63)EQUD&00018000,&00013333,&00010000,&0000DB6DEQUD&0000C000,&0000AAAA,&00009999,&00008BA2EQUD&00008000,&00007627,&00006DB6,&00006666EQUD&00006000,&00005A5A,&00005555,&000050D7EQUD&00004CCC,&00004924,&000045D1,&000042C8EQUD&00004000,&00003D70,&00003B13,&000038E3EQUD&000036DB,&000034F7,&00003333,&0000318CEQUD&00003000,&00002E8B,&00002D2D,&00002BE2EQUD&00002AAA,&00002983,&0000286B,&00002762EQUD&00002666,&00002576,&00002492,&000023B8EQUD&000022E8,&00002222,&00002164,&000020AEEQUD&00002000,&00001F58,&00001EB8,&00001E1EEQUD&00001D89,&00001CFB,&00001C71,&00001BEDEQUD&00001B6D,&00001AF2,&00001A7B,&00001A08EQUD&00001999,&0000192E,&000018C6,&00001861EQUD&FFFFFFFF,&00070000,&00038000,&00025555\ n / 7 (n = 0 to 63)EQUD&0001C000,&00016666,&00012AAA,&00010000EQUD&0000E000,&0000C71C,&0000B333,&0000A2E8EQUD&00009555,&000089D8,&00008000,&00007777EQUD&00007000,&00006969,&0000638E,&00005E50EQUD&00005999,&00005555,&00005174,&00004DE9EQUD&00004AAA,&000047AE,&000044EC,&0000425EEQUD&00004000,&00003DCB,&00003BBB,&000039CEEQUD&00003800,&0000364D,&000034B4,&00003333EQUD&000031C7,&0000306E,&00002F28,&00002DF2EQUD&00002CCC,&00002BB5,&00002AAA,&000029ACEQUD&000028BA,&000027D2,&000026F4,&00002620EQUD&00002555,&00002492,&000023D7,&00002323EQUD&00002276,&000021CF,&0000212F,&00002094EQUD&00002000,&00001F70,&00001EE5,&00001E5FEQUD&00001DDD,&00001D60,&00001CE7,&00001C71EQUD&FFFFFFFF,&00080000,&00040000,&0002AAAA\ n / 8 (n = 0 to 63)EQUD&00020000,&00019999,&00015555,&00012492EQUD&00010000,&0000E38E,&0000CCCC,&0000BA2EEQUD&0000AAAA,&00009D89,&00009249,&00008888EQUD&00008000,&00007878,&000071C7,&00006BCAEQUD&00006666,&00006186,&00005D17,&0000590BEQUD&00005555,&000051EB,&00004EC4,&00004BDAEQUD&00004924,&0000469E,&00004444,&00004210EQUD&00004000,&00003E0F,&00003C3C,&00003A83EQUD&000038E3,&00003759,&000035E5,&00003483EQUD&00003333,&000031F3,&000030C3,&00002FA0EQUD&00002E8B,&00002D82,&00002C85,&00002B93EQUD&00002AAA,&000029CB,&000028F5,&00002828EQUD&00002762,&000026A4,&000025ED,&0000253CEQUD&00002492,&000023EE,&0000234F,&000022B6EQUD&00002222,&00002192,&00002108,&00002082EQUD&FFFFFFFF,&00090000,&00048000,&00030000\ n / 9 (n = 0 to 63)EQUD&00024000,&0001CCCC,&00018000,&00014924EQUD&00012000,&00010000,&0000E666,&0000D174EQUD&0000C000,&0000B13B,&0000A492,&00009999EQUD&00009000,&00008787,&00008000,&00007943EQUD&00007333,&00006DB6,&000068BA,&0000642CEQUD&00006000,&00005C28,&0000589D,&00005555EQUD&00005249,&00004F72,&00004CCC,&00004A52EQUD&00004800,&000045D1,&000043C3,&000041D4EQUD&00004000,&00003E45,&00003CA1,&00003B13EQUD&00003999,&00003831,&000036DB,&00003594EQUD&0000345D,&00003333,&00003216,&00003105EQUD&00003000,&00002F05,&00002E14,&00002D2DEQUD&00002C4E,&00002B78,&00002AAA,&000029E4EQUD&00002924,&0000286B,&000027B9,&0000270DEQUD&00002666,&000025C5,&00002529,&00002492EQUD&FFFFFFFF,&000A0000,&00050000,&00035555\ n / 10 (n = 0 to 63)EQUD&00028000,&00020000,&0001AAAA,&00016DB6EQUD&00014000,&00011C71,&00010000,&0000E8BAEQUD&0000D555,&0000C4EC,&0000B6DB,&0000AAAAEQUD&0000A000,&00009696,&00008E38,&000086BCEQUD&00008000,&000079E7,&0000745D,&00006F4DEQUD&00006AAA,&00006666,&00006276,&00005ED0EQUD&00005B6D,&00005846,&00005555,&00005294EQUD&00005000,&00004D93,&00004B4B,&00004924EQUD&0000471C,&00004530,&0000435E,&000041A4EQUD&00004000,&00003E70,&00003CF3,&00003B88EQUD&00003A2E,&000038E3,&000037A6,&00003677EQUD&00003555,&0000343E,&00003333,&00003232EQUD&0000313B,&0000304D,&00002F68,&00002E8BEQUD&00002DB6,&00002CE9,&00002C23,&00002B63EQUD&00002AAA,&000029F7,&0000294A,&000028A2EQUD&FFFFFFFF,&000B0000,&00058000,&0003AAAA\ n / 11 (n = 0 to 63)EQUD&0002C000,&00023333,&0001D555,&00019249EQUD&00016000,&000138E3,&00011999,&00010000EQUD&0000EAAA,&0000D89D,&0000C924,&0000BBBBEQUD&0000B000,&0000A5A5,&00009C71,&00009435EQUD&00008CCC,&00008618,&00008000,&00007A6FEQUD&00007555,&000070A3,&00006C4E,&0000684BEQUD&00006492,&0000611A,&00005DDD,&00005AD6EQUD&00005800,&00005555,&000052D2,&00005075EQUD&00004E38,&00004C1B,&00004A1A,&00004834EQUD&00004666,&000044AE,&0000430C,&0000417DEQUD&00004000,&00003E93,&00003D37,&00003BEAEQUD&00003AAA,&00003978,&00003851,&00003737EQUD&00003627,&00003521,&00003425,&00003333EQUD&00003249,&00003167,&0000308D,&00002FBAEQUD&00002EEE,&00002E29,&00002D6B,&00002CB2EQUD&FFFFFFFF,&000C0000,&00060000,&00040000\ n / 12 (n = 0 to 63)EQUD&00030000,&00026666,&00020000,&0001B6DBEQUD&00018000,&00015555,&00013333,&00011745EQUD&00010000,&0000EC4E,&0000DB6D,&0000CCCCEQUD&0000C000,&0000B4B4,&0000AAAA,&0000A1AFEQUD&00009999,&00009249,&00008BA2,&00008590EQUD&00008000,&00007AE1,&00007627,&000071C7EQUD&00006DB6,&000069EE,&00006666,&00006318EQUD&00006000,&00005D17,&00005A5A,&000057C5EQUD&00005555,&00005306,&000050D7,&00004EC4EQUD&00004CCC,&00004AED,&00004924,&00004771EQUD&000045D1,&00004444,&000042C8,&0000415CEQUD&00004000,&00003EB1,&00003D70,&00003C3CEQUD&00003B13,&000039F6,&000038E3,&000037DAEQUD&000036DB,&000035E5,&000034F7,&00003411EQUD&00003333,&0000325C,&0000318C,&000030C3EQUD&FFFFFFFF,&000D0000,&00068000,&00045555\ n / 13 (n = 0 to 63)EQUD&00034000,&00029999,&00022AAA,&0001DB6DEQUD&0001A000,&000171C7,&00014CCC,&00012E8BEQUD&00011555,&00010000,&0000EDB6,&0000DDDDEQUD&0000D000,&0000C3C3,&0000B8E3,&0000AF28EQUD&0000A666,&00009E79,&00009745,&000090B2EQUD&00008AAA,&0000851E,&00008000,&00007B42EQUD&000076DB,&000072C2,&00006EEE,&00006B5AEQUD&00006800,&000064D9,&000061E1,&00005F15EQUD&00005C71,&000059F2,&00005794,&00005555EQUD&00005333,&0000512B,&00004F3C,&00004D65EQUD&00004BA2,&000049F4,&00004859,&000046CEEQUD&00004555,&000043EB,&0000428F,&00004141EQUD&00004000,&00003ECA,&00003DA1,&00003C82EQUD&00003B6D,&00003A62,&00003961,&00003868EQUD&00003777,&0000368E,&000035AD,&000034D3EQUD&FFFFFFFF,&000E0000,&00070000,&0004AAAA\ n / 14 (n = 0 to 63)EQUD&00038000,&0002CCCC,&00025555,&00020000EQUD&0001C000,&00018E38,&00016666,&000145D1EQUD&00012AAA,&000113B1,&00010000,&0000EEEEEQUD&0000E000,&0000D2D2,&0000C71C,&0000BCA1EQUD&0000B333,&0000AAAA,&0000A2E8,&00009BD3EQUD&00009555,&00008F5C,&000089D8,&000084BDEQUD&00008000,&00007B96,&00007777,&0000739CEQUD&00007000,&00006C9B,&00006969,&00006666EQUD&0000638E,&000060DD,&00005E50,&00005BE5EQUD&00005999,&0000576A,&00005555,&00005359EQUD&00005174,&00004FA4,&00004DE9,&00004C41EQUD&00004AAA,&00004924,&000047AE,&00004646EQUD&000044EC,&0000439F,&0000425E,&00004129EQUD&00004000,&00003EE0,&00003DCB,&00003CBEEQUD&00003BBB,&00003AC1,&000039CE,&000038E3EQUD&FFFFFFFF,&000F0000,&00078000,&00050000\ n / 15 (n = 0 to 63)EQUD&0003C000,&00030000,&00028000,&00022492EQUD&0001E000,&0001AAAA,&00018000,&00015D17EQUD&00014000,&00012762,&00011249,&00010000EQUD&0000F000,&0000E1E1,&0000D555,&0000CA1AEQUD&0000C000,&0000B6DB,&0000AE8B,&0000A6F4EQUD&0000A000,&00009999,&000093B1,&00008E38EQUD&00008924,&00008469,&00008000,&00007BDEEQUD&00007800,&0000745D,&000070F0,&00006DB6EQUD&00006AAA,&000067C8,&0000650D,&00006276EQUD&00006000,&00005DA8,&00005B6D,&0000594DEQUD&00005745,&00005555,&0000537A,&000051B3EQUD&00005000,&00004E5E,&00004CCC,&00004B4BEQUD&000049D8,&00004873,&0000471C,&000045D1EQUD&00004492,&0000435E,&00004234,&00004115EQUD&00004000,&00003EF3,&00003DEF,&00003CF3EQUD&FFFFFFFF,&00100000,&00080000,&00055555\ n / 16 (n = 0 to 63)EQUD&00040000,&00033333,&0002AAAA,&00024924EQUD&00020000,&0001C71C,&00019999,&0001745DEQUD&00015555,&00013B13,&00012492,&00011111EQUD&00010000,&0000F0F0,&0000E38E,&0000D794EQUD&0000CCCC,&0000C30C,&0000BA2E,&0000B216EQUD&0000AAAA,&0000A3D7,&00009D89,&000097B4EQUD&00009249,&00008D3D,&00008888,&00008421EQUD&00008000,&00007C1F,&00007878,&00007507EQUD&000071C7,&00006EB3,&00006BCA,&00006906EQUD&00006666,&000063E7,&00006186,&00005F41EQUD&00005D17,&00005B05,&0000590B,&00005726EQUD&00005555,&00005397,&000051EB,&00005050EQUD&00004EC4,&00004D48,&00004BDA,&00004A79EQUD&00004924,&000047DC,&0000469E,&0000456CEQUD&00004444,&00004325,&00004210,&00004104EQUD&FFFFFFFF,&00110000,&00088000,&0005AAAA\ n / 17 (n = 0 to 63)EQUD&00044000,&00036666,&0002D555,&00026DB6EQUD&00022000,&0001E38E,&0001B333,&00018BA2EQUD&00016AAA,&00014EC4,&000136DB,&00012222EQUD&00011000,&00010000,&0000F1C7,&0000E50DEQUD&0000D999,&0000CF3C,&0000C5D1,&0000BD37EQUD&0000B555,&0000AE14,&0000A762,&0000A12FEQUD&00009B6D,&00009611,&00009111,&00008C63EQUD&00008800,&000083E0,&00008000,&00007C57EQUD&000078E3,&0000759F,&00007286,&00006F96EQUD&00006CCC,&00006A25,&0000679E,&00006535EQUD&000062E8,&000060B6,&00005E9B,&00005C98EQUD&00005AAA,&000058D0,&0000570A,&00005555EQUD&000053B1,&0000521C,&00005097,&00004F20EQUD&00004DB6,&00004C59,&00004B08,&000049C3EQUD&00004888,&00004758,&00004631,&00004514EQUD&FFFFFFFF,&00120000,&00090000,&00060000\ n / 18 (n = 0 to 63)EQUD&00048000,&00039999,&00030000,&00029249EQUD&00024000,&00020000,&0001CCCC,&0001A2E8EQUD&00018000,&00016276,&00014924,&00013333EQUD&00012000,&00010F0F,&00010000,&0000F286EQUD&0000E666,&0000DB6D,&0000D174,&0000C859EQUD&0000C000,&0000B851,&0000B13B,&0000AAAAEQUD&0000A492,&00009EE5,&00009999,&000094A5EQUD&00009000,&00008BA2,&00008787,&000083A8EQUD&00008000,&00007C8A,&00007943,&00007627EQUD&00007333,&00007063,&00006DB6,&00006B29EQUD&000068BA,&00006666,&0000642C,&0000620AEQUD&00006000,&00005E0A,&00005C28,&00005A5AEQUD&0000589D,&000056F1,&00005555,&000053C8EQUD&00005249,&000050D7,&00004F72,&00004E1AEQUD&00004CCC,&00004B8A,&00004A52,&00004924EQUD&FFFFFFFF,&00130000,&00098000,&00065555\ n / 19 (n = 0 to 63)EQUD&0004C000,&0003CCCC,&00032AAA,&0002B6DBEQUD&00026000,&00021C71,&0001E666,&0001BA2EEQUD&00019555,&00017627,&00015B6D,&00014444EQUD&00013000,&00011E1E,&00010E38,&00010000EQUD&0000F333,&0000E79E,&0000DD17,&0000D37AEQUD&0000CAAA,&0000C28F,&0000BB13,&0000B425EQUD&0000ADB6,&0000A7B9,&0000A222,&00009CE7EQUD&00009800,&00009364,&00008F0F,&00008AF8EQUD&0000871C,&00008375,&00008000,&00007CB7EQUD&00007999,&000076A2,&000073CF,&0000711DEQUD&00006E8B,&00006C16,&000069BD,&0000677DEQUD&00006555,&00006343,&00006147,&00005F5FEQUD&00005D89,&00005BC6,&00005A12,&0000586FEQUD&000056DB,&00005555,&000053DC,&00005270EQUD&00005111,&00004FBC,&00004E73,&00004D34EQUD&FFFFFFFF,&00140000,&000A0000,&0006AAAA\ n / 20 (n = 0 to 63)EQUD&00050000,&00040000,&00035555,&0002DB6DEQUD&00028000,&000238E3,&00020000,&0001D174EQUD&0001AAAA,&000189D8,&00016DB6,&00015555EQUD&00014000,&00012D2D,&00011C71,&00010D79EQUD&00010000,&0000F3CF,&0000E8BA,&0000DE9BEQUD&0000D555,&0000CCCC,&0000C4EC,&0000BDA1EQUD&0000B6DB,&0000B08D,&0000AAAA,&0000A529EQUD&0000A000,&00009B26,&00009696,&00009249EQUD&00008E38,&00008A60,&000086BC,&00008348EQUD&00008000,&00007CE0,&000079E7,&00007711EQUD&0000745D,&000071C7,&00006F4D,&00006CEFEQUD&00006AAA,&0000687D,&00006666,&00006464EQUD&00006276,&0000609A,&00005ED0,&00005D17EQUD&00005B6D,&000059D3,&00005846,&000056C7EQUD&00005555,&000053EF,&00005294,&00005145EQUD&FFFFFFFF,&00150000,&000A8000,&00070000\ n / 21 (n = 0 to 63)EQUD&00054000,&00043333,&00038000,&00030000EQUD&0002A000,&00025555,&00021999,&0001E8BAEQUD&0001C000,&00019D89,&00018000,&00016666EQUD&00015000,&00013C3C,&00012AAA,&00011AF2EQUD&00010CCC,&00010000,&0000F45D,&0000E9BDEQUD&0000E000,&0000D70A,&0000CEC4,&0000C71CEQUD&0000C000,&0000B961,&0000B333,&0000AD6BEQUD&0000A800,&0000A2E8,&00009E1E,&00009999EQUD&00009555,&0000914C,&00008D79,&000089D8EQUD&00008666,&0000831F,&00008000,&00007D05EQUD&00007A2E,&00007777,&000074DE,&00007262EQUD&00007000,&00006DB6,&00006B85,&00006969EQUD&00006762,&0000656F,&0000638E,&000061BEEQUD&00006000,&00005E50,&00005CB0,&00005B1EEQUD&00005999,&00005821,&000056B5,&00005555EQUD&FFFFFFFF,&00160000,&000B0000,&00075555\ n / 22 (n = 0 to 63)EQUD&00058000,&00046666,&0003AAAA,&00032492EQUD&0002C000,&000271C7,&00023333,&00020000EQUD&0001D555,&0001B13B,&00019249,&00017777EQUD&00016000,&00014B4B,&000138E3,&0001286BEQUD&00011999,&00010C30,&00010000,&0000F4DEEQUD&0000EAAA,&0000E147,&0000D89D,&0000D097EQUD&0000C924,&0000C234,&0000BBBB,&0000B5ADEQUD&0000B000,&0000AAAA,&0000A5A5,&0000A0EAEQUD&00009C71,&00009837,&00009435,&00009069EQUD&00008CCC,&0000895D,&00008618,&000082FAEQUD&00008000,&00007D27,&00007A6F,&000077D4EQUD&00007555,&000072F0,&000070A3,&00006E6EEQUD&00006C4E,&00006A43,&0000684B,&00006666EQUD&00006492,&000062CE,&0000611A,&00005F75EQUD&00005DDD,&00005C53,&00005AD6,&00005965EQUD&FFFFFFFF,&00170000,&000B8000,&0007AAAA\ n / 23 (n = 0 to 63)EQUD&0005C000,&00049999,&0003D555,&00034924EQUD&0002E000,&00028E38,&00024CCC,&00021745EQUD&0001EAAA,&0001C4EC,&0001A492,&00018888EQUD&00017000,&00015A5A,&0001471C,&000135E5EQUD&00012666,&00011861,&00010BA2,&00010000EQUD&0000F555,&0000EB85,&0000E276,&0000DA12EQUD&0000D249,&0000CB08,&0000C444,&0000BDEFEQUD&0000B800,&0000B26C,&0000AD2D,&0000A83AEQUD&0000A38E,&00009F22,&00009AF2,&000096F9EQUD&00009333,&00008F9C,&00008C30,&000088EEEQUD&000085D1,&000082D8,&00008000,&00007D46EQUD&00007AAA,&00007829,&000075C2,&00007373EQUD&0000713B,&00006F18,&00006D09,&00006B0DEQUD&00006924,&0000674C,&00006584,&000063CBEQUD&00006222,&00006086,&00005EF7,&00005D75EQUD&FFFFFFFF,&00180000,&000C0000,&00080000\ n / 24 (n = 0 to 63)EQUD&00060000,&0004CCCC,&00040000,&00036DB6EQUD&00030000,&0002AAAA,&00026666,&00022E8BEQUD&00020000,&0001D89D,&0001B6DB,&00019999EQUD&00018000,&00016969,&00015555,&0001435EEQUD&00013333,&00012492,&00011745,&00010B21EQUD&00010000,&0000F5C2,&0000EC4E,&0000E38EEQUD&0000DB6D,&0000D3DC,&0000CCCC,&0000C631EQUD&0000C000,&0000BA2E,&0000B4B4,&0000AF8AEQUD&0000AAAA,&0000A60D,&0000A1AF,&00009D89EQUD&00009999,&000095DA,&00009249,&00008EE2EQUD&00008BA2,&00008888,&00008590,&000082B9EQUD&00008000,&00007D63,&00007AE1,&00007878EQUD&00007627,&000073EC,&000071C7,&00006FB5EQUD&00006DB6,&00006BCA,&000069EE,&00006822EQUD&00006666,&000064B8,&00006318,&00006186EQUD&FFFFFFFF,&00190000,&000C8000,&00085555\ n / 25 (n = 0 to 63)EQUD&00064000,&00050000,&00042AAA,&00039249EQUD&00032000,&0002C71C,&00028000,&000245D1EQUD&00021555,&0001EC4E,&0001C924,&0001AAAAEQUD&00019000,&00017878,&0001638E,&000150D7EQUD&00014000,&000130C3,&000122E8,&00011642EQUD&00010AAA,&00010000,&0000F627,&0000ED09EQUD&0000E492,&0000DCB0,&0000D555,&0000CE73EQUD&0000C800,&0000C1F0,&0000BC3C,&0000B6DBEQUD&0000B1C7,&0000ACF9,&0000A86B,&0000A41AEQUD&0000A000,&00009C18,&00009861,&000094D6EQUD&00009174,&00008E38,&00008B21,&0000882BEQUD&00008555,&0000829C,&00008000,&00007D7DEQUD&00007B13,&000078C1,&00007684,&0000745DEQUD&00007249,&00007047,&00006E58,&00006C79EQUD&00006AAA,&000068EB,&00006739,&00006596EQUD&FFFFFFFF,&001A0000,&000D0000,&0008AAAA\ n / 26 (n = 0 to 63)EQUD&00068000,&00053333,&00045555,&0003B6DBEQUD&00034000,&0002E38E,&00029999,&00025D17EQUD&00022AAA,&00020000,&0001DB6D,&0001BBBBEQUD&0001A000,&00018787,&000171C7,&00015E50EQUD&00014CCC,&00013CF3,&00012E8B,&00012164EQUD&00011555,&00010A3D,&00010000,&0000F684EQUD&0000EDB6,&0000E584,&0000DDDD,&0000D6B5EQUD&0000D000,&0000C9B2,&0000C3C3,&0000BE2BEQUD&0000B8E3,&0000B3E4,&0000AF28,&0000AAAAEQUD&0000A666,&0000A257,&00009E79,&00009ACAEQUD&00009745,&000093E9,&000090B2,&00008D9DEQUD&00008AAA,&000087D6,&0000851E,&00008282EQUD&00008000,&00007D95,&00007B42,&00007904EQUD&000076DB,&000074C5,&000072C2,&000070D0EQUD&00006EEE,&00006D1D,&00006B5A,&000069A6EQUD&FFFFFFFF,&001B0000,&000D8000,&00090000\ n / 27 (n = 0 to 63)EQUD&0006C000,&00056666,&00048000,&0003DB6DEQUD&00036000,&00030000,&0002B333,&0002745DEQUD&00024000,&000213B1,&0001EDB6,&0001CCCCEQUD&0001B000,&00019696,&00018000,&00016BCAEQUD&00015999,&00014924,&00013A2E,&00012C85EQUD&00012000,&0001147A,&000109D8,&00010000EQUD&0000F6DB,&0000EE58,&0000E666,&0000DEF7EQUD&0000D800,&0000D174,&0000CB4B,&0000C57CEQUD&0000C000,&0000BACF,&0000B5E5,&0000B13BEQUD&0000ACCC,&0000A895,&0000A492,&0000A0BEEQUD&00009D17,&00009999,&00009642,&00009310EQUD&00009000,&00008D0F,&00008A3D,&00008787EQUD&000084EC,&0000826A,&00008000,&00007DACEQUD&00007B6D,&00007943,&0000772C,&00007527EQUD&00007333,&0000714F,&00006F7B,&00006DB6EQUD&FFFFFFFF,&001C0000,&000E0000,&00095555\ n / 28 (n = 0 to 63)EQUD&00070000,&00059999,&0004AAAA,&00040000EQUD&00038000,&00031C71,&0002CCCC,&00028BA2EQUD&00025555,&00022762,&00020000,&0001DDDDEQUD&0001C000,&0001A5A5,&00018E38,&00017943EQUD&00016666,&00015555,&000145D1,&000137A6EQUD&00012AAA,&00011EB8,&000113B1,&0001097BEQUD&00010000,&0000F72C,&0000EEEE,&0000E739EQUD&0000E000,&0000D936,&0000D2D2,&0000CCCCEQUD&0000C71C,&0000C1BA,&0000BCA1,&0000B7CBEQUD&0000B333,&0000AED4,&0000AAAA,&0000A6B2EQUD&0000A2E8,&00009F49,&00009BD3,&00009882EQUD&00009555,&00009249,&00008F5C,&00008C8CEQUD&000089D8,&0000873E,&000084BD,&00008253EQUD&00008000,&00007DC1,&00007B96,&0000797DEQUD&00007777,&00007582,&0000739C,&000071C7EQUD&FFFFFFFF,&001D0000,&000E8000,&0009AAAA\ n / 29 (n = 0 to 63)EQUD&00074000,&0005CCCC,&0004D555,&00042492EQUD&0003A000,&000338E3,&0002E666,&0002A2E8EQUD&00026AAA,&00023B13,&00021249,&0001EEEEEQUD&0001D000,&0001B4B4,&00019C71,&000186BCEQUD&00017333,&00016186,&00015174,&000142C8EQUD&00013555,&000128F5,&00011D89,&000112F6EQUD&00010924,&00010000,&0000F777,&0000EF7BEQUD&0000E800,&0000E0F8,&0000DA5A,&0000D41DEQUD&0000CE38,&0000C8A6,&0000C35E,&0000BE5BEQUD&0000B999,&0000B512,&0000B0C3,&0000ACA6EQUD&0000A8BA,&0000A4FA,&0000A164,&00009DF5EQUD&00009AAA,&00009782,&0000947A,&00009191EQUD&00008EC4,&00008C13,&0000897B,&000086FBEQUD&00008492,&0000823E,&00008000,&00007DD4EQUD&00007BBB,&000079B4,&000077BD,&000075D7EQUD&FFFFFFFF,&001E0000,&000F0000,&000A0000\ n / 30 (n = 0 to 63)EQUD&00078000,&00060000,&00050000,&00044924EQUD&0003C000,&00035555,&00030000,&0002BA2EEQUD&00028000,&00024EC4,&00022492,&00020000EQUD&0001E000,&0001C3C3,&0001AAAA,&00019435EQUD&00018000,&00016DB6,&00015D17,&00014DE9EQUD&00014000,&00013333,&00012762,&00011C71EQUD&00011249,&000108D3,&00010000,&0000F7BDEQUD&0000F000,&0000E8BA,&0000E1E1,&0000DB6DEQUD&0000D555,&0000CF91,&0000CA1A,&0000C4ECEQUD&0000C000,&0000BB51,&0000B6DB,&0000B29AEQUD&0000AE8B,&0000AAAA,&0000A6F4,&0000A367EQUD&0000A000,&00009CBC,&00009999,&00009696EQUD&000093B1,&000090E7,&00008E38,&00008BA2EQUD&00008924,&000086BC,&00008469,&0000822BEQUD&00008000,&00007DE6,&00007BDE,&000079E7EQUD&FFFFFFFF,&001F0000,&000F8000,&000A5555\ n / 31 (n = 0 to 63)EQUD&0007C000,&00063333,&00052AAA,&00046DB6EQUD&0003E000,&000371C7,&00031999,&0002D174EQUD&00029555,&00026276,&000236DB,&00021111EQUD&0001F000,&0001D2D2,&0001B8E3,&0001A1AFEQUD&00018CCC,&000179E7,&000168BA,&0001590BEQUD&00014AAA,&00013D70,&0001313B,&000125EDEQUD&00011B6D,&000111A7,&00010888,&00010000EQUD&0000F800,&0000F07C,&0000E969,&0000E2BEEQUD&0000DC71,&0000D67C,&0000D0D7,&0000CB7CEQUD&0000C666,&0000C18F,&0000BCF3,&0000B88EEQUD&0000B45D,&0000B05B,&0000AC85,&0000A8D9EQUD&0000A555,&0000A1F5,&00009EB8,&00009B9BEQUD&0000989D,&000095BC,&000092F6,&0000904AEQUD&00008DB6,&00008B3A,&000088D3,&00008682EQUD&00008444,&00008219,&00008000,&00007DF7EQUD&FFFFFFFF,&00200000,&00100000,&000AAAAA\ n / 32 (n = 0 to 63)EQUD&00080000,&00066666,&00055555,&00049249EQUD&00040000,&00038E38,&00033333,&0002E8BAEQUD&0002AAAA,&00027627,&00024924,&00022222EQUD&00020000,&0001E1E1,&0001C71C,&0001AF28EQUD&00019999,&00018618,&0001745D,&0001642CEQUD&00015555,&000147AE,&00013B13,&00012F68EQUD&00012492,&00011A7B,&00011111,&00010842EQUD&00010000,&0000F83E,&0000F0F0,&0000EA0EEQUD&0000E38E,&0000DD67,&0000D794,&0000D20DEQUD&0000CCCC,&0000C7CE,&0000C30C,&0000BE82EQUD&0000BA2E,&0000B60B,&0000B216,&0000AE4CEQUD&0000AAAA,&0000A72F,&0000A3D7,&0000A0A0EQUD&00009D89,&00009A90,&000097B4,&000094F2EQUD&00009249,&00008FB8,&00008D3D,&00008AD8EQUD&00008888,&0000864B,&00008421,&00008208EQUD&FFFFFFFF,&00210000,&00108000,&000B0000\ n / 33 (n = 0 to 63)EQUD&00084000,&00069999,&00058000,&0004B6DBEQUD&00042000,&0003AAAA,&00034CCC,&00030000EQUD&0002C000,&000289D8,&00025B6D,&00023333EQUD&00021000,&0001F0F0,&0001D555,&0001BCA1EQUD&0001A666,&00019249,&00018000,&00016F4DEQUD&00016000,&000151EB,&000144EC,&000138E3EQUD&00012DB6,&0001234F,&00011999,&00011084EQUD&00010800,&00010000,&0000F878,&0000F15FEQUD&0000EAAA,&0000E453,&0000DE50,&0000D89DEQUD&0000D333,&0000CE0C,&0000C924,&0000C477EQUD&0000C000,&0000BBBB,&0000B7A6,&0000B3BEEQUD&0000B000,&0000AC68,&0000A8F5,&0000A5A5EQUD&0000A276,&00009F65,&00009C71,&00009999EQUD&000096DB,&00009435,&000091A7,&00008F2FEQUD&00008CCC,&00008A7D,&00008842,&00008618EQUD&FFFFFFFF,&00220000,&00110000,&000B5555\ n / 34 (n = 0 to 63)EQUD&00088000,&0006CCCC,&0005AAAA,&0004DB6DEQUD&00044000,&0003C71C,&00036666,&00031745EQUD&0002D555,&00029D89,&00026DB6,&00024444EQUD&00022000,&00020000,&0001E38E,&0001CA1AEQUD&0001B333,&00019E79,&00018BA2,&00017A6FEQUD&00016AAA,&00015C28,&00014EC4,&0001425EEQUD&000136DB,&00012C23,&00012222,&000118C6EQUD&00011000,&000107C1,&00010000,&0000F8AFEQUD&0000F1C7,&0000EB3E,&0000E50D,&0000DF2DEQUD&0000D999,&0000D44A,&0000CF3C,&0000CA6BEQUD&0000C5D1,&0000C16C,&0000BD37,&0000B931EQUD&0000B555,&0000B1A1,&0000AE14,&0000AAAAEQUD&0000A762,&0000A439,&0000A12F,&00009E41EQUD&00009B6D,&000098B3,&00009611,&00009386EQUD&00009111,&00008EB0,&00008C63,&00008A28EQUD&FFFFFFFF,&00230000,&00118000,&000BAAAA\ n / 35 (n = 0 to 63)EQUD&0008C000,&00070000,&0005D555,&00050000EQUD&00046000,&0003E38E,&00038000,&00032E8BEQUD&0002EAAA,&0002B13B,&00028000,&00025555EQUD&00023000,&00020F0F,&0001F1C7,&0001D794EQUD&0001C000,&0001AAAA,&00019745,&00018590EQUD&00017555,&00016666,&0001589D,&00014BDAEQUD&00014000,&000134F7,&00012AAA,&00012108EQUD&00011800,&00010F83,&00010787,&00010000EQUD&0000F8E3,&0000F229,&0000EBCA,&0000E5BEEQUD&0000E000,&0000DA89,&0000D555,&0000D05FEQUD&0000CBA2,&0000C71C,&0000C2C8,&0000BEA3EQUD&0000BAAA,&0000B6DB,&0000B333,&0000AFAFEQUD&0000AC4E,&0000A90E,&0000A5ED,&0000A2E8EQUD&0000A000,&00009D31,&00009A7B,&000097DDEQUD&00009555,&000092E2,&00009084,&00008E38EQUD&FFFFFFFF,&00240000,&00120000,&000C0000\ n / 36 (n = 0 to 63)EQUD&00090000,&00073333,&00060000,&00052492EQUD&00048000,&00040000,&00039999,&000345D1EQUD&00030000,&0002C4EC,&00029249,&00026666EQUD&00024000,&00021E1E,&00020000,&0001E50DEQUD&0001CCCC,&0001B6DB,&0001A2E8,&000190B2EQUD&00018000,&000170A3,&00016276,&00015555EQUD&00014924,&00013DCB,&00013333,&0001294AEQUD&00012000,&00011745,&00010F0F,&00010750EQUD&00010000,&0000F914,&0000F286,&0000EC4EEQUD&0000E666,&0000E0C7,&0000DB6D,&0000D653EQUD&0000D174,&0000CCCC,&0000C859,&0000C415EQUD&0000C000,&0000BC14,&0000B851,&0000B4B4EQUD&0000B13B,&0000ADE3,&0000AAAA,&0000A790EQUD&0000A492,&0000A1AF,&00009EE5,&00009C34EQUD&00009999,&00009714,&000094A5,&00009249EQUD&FFFFFFFF,&00250000,&00128000,&000C5555\ n / 37 (n = 0 to 63)EQUD&00094000,&00076666,&00062AAA,&00054924EQUD&0004A000,&00041C71,&0003B333,&00035D17EQUD&00031555,&0002D89D,&0002A492,&00027777EQUD&00025000,&00022D2D,&00020E38,&0001F286EQUD&0001D999,&0001C30C,&0001AE8B,&00019BD3EQUD&00018AAA,&00017AE1,&00016C4E,&00015ED0EQUD&00015249,&0001469E,&00013BBB,&0001318CEQUD&00012800,&00011F07,&00011696,&00010EA0EQUD&0001071C,&00010000,&0000F943,&0000F2DFEQUD&0000ECCC,&0000E706,&0000E186,&0000DC47EQUD&0000D745,&0000D27D,&0000CDE9,&0000C988EQUD&0000C555,&0000C14E,&0000BD70,&0000B9B9EQUD&0000B627,&0000B2B7,&0000AF68,&0000AC37EQUD&0000A924,&0000A62C,&0000A34F,&0000A08AEQUD&00009DDD,&00009B47,&000098C6,&00009659EQUD&FFFFFFFF,&00260000,&00130000,&000CAAAA\ n / 38 (n = 0 to 63)EQUD&00098000,&00079999,&00065555,&00056DB6EQUD&0004C000,&000438E3,&0003CCCC,&0003745DEQUD&00032AAA,&0002EC4E,&0002B6DB,&00028888EQUD&00026000,&00023C3C,&00021C71,&00020000EQUD&0001E666,&0001CF3C,&0001BA2E,&0001A6F4EQUD&00019555,&0001851E,&00017627,&0001684BEQUD&00015B6D,&00014F72,&00014444,&000139CEEQUD&00013000,&000126C9,&00011E1E,&000115F1EQUD&00010E38,&000106EB,&00010000,&0000F96FEQUD&0000F333,&0000ED44,&0000E79E,&0000E23BEQUD&0000DD17,&0000D82D,&0000D37A,&0000CEFAEQUD&0000CAAA,&0000C687,&0000C28F,&0000BEBEEQUD&0000BB13,&0000B78C,&0000B425,&0000B0DFEQUD&0000ADB6,&0000AAAA,&0000A7B9,&0000A4E1EQUD&0000A222,&00009F79,&00009CE7,&00009A69EQUD&FFFFFFFF,&00270000,&00138000,&000D0000\ n / 39 (n = 0 to 63)EQUD&0009C000,&0007CCCC,&00068000,&00059249EQUD&0004E000,&00045555,&0003E666,&00038BA2EQUD&00034000,&00030000,&0002C924,&00029999EQUD&00027000,&00024B4B,&00022AAA,&00020D79EQUD&0001F333,&0001DB6D,&0001C5D1,&0001B216EQUD&0001A000,&00018F5C,&00018000,&000171C7EQUD&00016492,&00015846,&00014CCC,&00014210EQUD&00013800,&00012E8B,&000125A5,&00011D41EQUD&00011555,&00010DD6,&000106BC,&00010000EQUD&0000F999,&0000F383,&0000EDB6,&0000E82FEQUD&0000E2E8,&0000DDDD,&0000D90B,&0000D46CEQUD&0000D000,&0000CBC1,&0000C7AE,&0000C3C3EQUD&0000C000,&0000BC60,&0000B8E3,&0000B586EQUD&0000B249,&0000AF28,&0000AC23,&0000A938EQUD&0000A666,&0000A3AC,&0000A108,&00009E79EQUD&FFFFFFFF,&00280000,&00140000,&000D5555\ n / 40 (n = 0 to 63)EQUD&000A0000,&00080000,&0006AAAA,&0005B6DBEQUD&00050000,&000471C7,&00040000,&0003A2E8EQUD&00035555,&000313B1,&0002DB6D,&0002AAAAEQUD&00028000,&00025A5A,&000238E3,&00021AF2EQUD&00020000,&0001E79E,&0001D174,&0001BD37EQUD&0001AAAA,&00019999,&000189D8,&00017B42EQUD&00016DB6,&0001611A,&00015555,&00014A52EQUD&00014000,&0001364D,&00012D2D,&00012492EQUD&00011C71,&000114C1,&00010D79,&00010690EQUD&00010000,&0000F9C1,&0000F3CF,&0000EE23EQUD&0000E8BA,&0000E38E,&0000DE9B,&0000D9DFEQUD&0000D555,&0000D0FA,&0000CCCC,&0000C8C8EQUD&0000C4EC,&0000C135,&0000BDA1,&0000BA2EEQUD&0000B6DB,&0000B3A6,&0000B08D,&0000AD8FEQUD&0000AAAA,&0000A7DE,&0000A529,&0000A28AEQUD&FFFFFFFF,&00290000,&00148000,&000DAAAA\ n / 41 (n = 0 to 63)EQUD&000A4000,&00083333,&0006D555,&0005DB6DEQUD&00052000,&00048E38,&00041999,&0003BA2EEQUD&00036AAA,&00032762,&0002EDB6,&0002BBBBEQUD&00029000,&00026969,&0002471C,&0002286BEQUD&00020CCC,&0001F3CF,&0001DD17,&0001C859EQUD&0001B555,&0001A3D7,&000193B1,&000184BDEQUD&000176DB,&000169EE,&00015DDD,&00015294EQUD&00014800,&00013E0F,&000134B4,&00012BE2EQUD&0001238E,&00011BAC,&00011435,&00010D20EQUD&00010666,&00010000,&0000F9E7,&0000F417EQUD&0000EE8B,&0000E93E,&0000E42C,&0000DF51EQUD&0000DAAA,&0000D634,&0000D1EB,&0000CDCDEQUD&0000C9D8,&0000C609,&0000C25E,&0000BED6EQUD&0000BB6D,&0000B823,&0000B4F7,&0000B1E5EQUD&0000AEEE,&0000AC10,&0000A94A,&0000A69AEQUD&FFFFFFFF,&002A0000,&00150000,&000E0000\ n / 42 (n = 0 to 63)EQUD&000A8000,&00086666,&00070000,&00060000EQUD&00054000,&0004AAAA,&00043333,&0003D174EQUD&00038000,&00033B13,&00030000,&0002CCCCEQUD&0002A000,&00027878,&00025555,&000235E5EQUD&00021999,&00020000,&0001E8BA,&0001D37AEQUD&0001C000,&0001AE14,&00019D89,&00018E38EQUD&00018000,&000172C2,&00016666,&00015AD6EQUD&00015000,&000145D1,&00013C3C,&00013333EQUD&00012AAA,&00012298,&00011AF2,&000113B1EQUD&00010CCC,&0001063E,&00010000,&0000FA0BEQUD&0000F45D,&0000EEEE,&0000E9BD,&0000E4C4EQUD&0000E000,&0000DB6D,&0000D70A,&0000D2D2EQUD&0000CEC4,&0000CADE,&0000C71C,&0000C37DEQUD&0000C000,&0000BCA1,&0000B961,&0000B63CEQUD&0000B333,&0000B043,&0000AD6B,&0000AAAAEQUD&FFFFFFFF,&002B0000,&00158000,&000E5555\ n / 43 (n = 0 to 63)EQUD&000AC000,&00089999,&00072AAA,&00062492EQUD&00056000,&0004C71C,&00044CCC,&0003E8BAEQUD&00039555,&00034EC4,&00031249,&0002DDDDEQUD&0002B000,&00028787,&0002638E,&0002435EEQUD&00022666,&00020C30,&0001F45D,&0001DE9BEQUD&0001CAAA,&0001B851,&0001A762,&000197B4EQUD&00018924,&00017B96,&00016EEE,&00016318EQUD&00015800,&00014D93,&000143C3,&00013A83EQUD&000131C7,&00012983,&000121AF,&00011A41EQUD&00011333,&00010C7C,&00010618,&00010000EQUD&0000FA2E,&0000F49F,&0000EF4D,&0000EA36EQUD&0000E555,&0000E0A7,&0000DC28,&0000D7D7EQUD&0000D3B1,&0000CFB2,&0000CBDA,&0000C825EQUD&0000C492,&0000C11F,&0000BDCB,&0000BA93EQUD&0000B777,&0000B475,&0000B18C,&0000AEBAEQUD&FFFFFFFF,&002C0000,&00160000,&000EAAAA\ n / 44 (n = 0 to 63)EQUD&000B0000,&0008CCCC,&00075555,&00064924EQUD&00058000,&0004E38E,&00046666,&00040000EQUD&0003AAAA,&00036276,&00032492,&0002EEEEEQUD&0002C000,&00029696,&000271C7,&000250D7EQUD&00023333,&00021861,&00020000,&0001E9BDEQUD&0001D555,&0001C28F,&0001B13B,&0001A12FEQUD&00019249,&00018469,&00017777,&00016B5AEQUD&00016000,&00015555,&00014B4B,&000141D4EQUD&000138E3,&0001306E,&0001286B,&000120D2EQUD&00011999,&000112BB,&00010C30,&000105F4EQUD&00010000,&0000FA4F,&0000F4DE,&0000EFA8EQUD&0000EAAA,&0000E5E0,&0000E147,&0000DCDCEQUD&0000D89D,&0000D487,&0000D097,&0000CCCCEQUD&0000C924,&0000C59D,&0000C234,&0000BEEAEQUD&0000BBBB,&0000B8A7,&0000B5AD,&0000B2CBEQUD&FFFFFFFF,&002D0000,&00168000,&000F0000\ n / 45 (n = 0 to 63)EQUD&000B4000,&00090000,&00078000,&00066DB6EQUD&0005A000,&00050000,&00048000,&00041745EQUD&0003C000,&00037627,&000336DB,&00030000EQUD&0002D000,&0002A5A5,&00028000,&00025E50EQUD&00024000,&00022492,&00020BA2,&0001F4DEEQUD&0001E000,&0001CCCC,&0001BB13,&0001AAAAEQUD&00019B6D,&00018D3D,&00018000,&0001739CEQUD&00016800,&00015D17,&000152D2,&00014924EQUD&00014000,&00013759,&00012F28,&00012762EQUD&00012000,&000118F9,&00011249,&00010BE8EQUD&000105D1,&00010000,&0000FA6F,&0000F51BEQUD&0000F000,&0000EB1A,&0000E666,&0000E1E1EQUD&0000DD89,&0000D95B,&0000D555,&0000D174EQUD&0000CDB6,&0000CA1A,&0000C69E,&0000C341EQUD&0000C000,&0000BCDA,&0000B9CE,&0000B6DBEQUD&FFFFFFFF,&002E0000,&00170000,&000F5555\ n / 46 (n = 0 to 63)EQUD&000B8000,&00093333,&0007AAAA,&00069249EQUD&0005C000,&00051C71,&00049999,&00042E8BEQUD&0003D555,&000389D8,&00034924,&00031111EQUD&0002E000,&0002B4B4,&00028E38,&00026BCAEQUD&00024CCC,&000230C3,&00021745,&00020000EQUD&0001EAAA,&0001D70A,&0001C4EC,&0001B425EQUD&0001A492,&00019611,&00018888,&00017BDEEQUD&00017000,&000164D9,&00015A5A,&00015075EQUD&0001471C,&00013E45,&000135E5,&00012DF2EQUD&00012666,&00011F38,&00011861,&000111DCEQUD&00010BA2,&000105B0,&00010000,&0000FA8DEQUD&0000F555,&0000F053,&0000EB85,&0000E6E6EQUD&0000E276,&0000DE30,&0000DA12,&0000D61BEQUD&0000D249,&0000CE98,&0000CB08,&0000C797EQUD&0000C444,&0000C10C,&0000BDEF,&0000BAEBEQUD&FFFFFFFF,&002F0000,&00178000,&000FAAAA\ n / 47 (n = 0 to 63)EQUD&000BC000,&00096666,&0007D555,&0006B6DBEQUD&0005E000,&000538E3,&0004B333,&000445D1EQUD&0003EAAA,&00039D89,&00035B6D,&00032222EQUD&0002F000,&0002C3C3,&00029C71,&00027943EQUD&00025999,&00023CF3,&000222E8,&00020B21EQUD&0001F555,&0001E147,&0001CEC4,&0001BDA1EQUD&0001ADB6,&00019EE5,&00019111,&00018421EQUD&00017800,&00016C9B,&000161E1,&000157C5EQUD&00014E38,&00014530,&00013CA1,&00013483EQUD&00012CCC,&00012576,&00011E79,&000117D0EQUD&00011174,&00010B60,&00010590,&00010000EQUD&0000FAAA,&0000F58D,&0000F0A3,&0000EBEBEQUD&0000E762,&0000E304,&0000DED0,&0000DAC3EQUD&0000D6DB,&0000D316,&0000CF72,&0000CBEEEQUD&0000C888,&0000C53E,&0000C210,&0000BEFBEQUD&FFFFFFFF,&00300000,&00180000,&00100000\ n / 48 (n = 0 to 63)EQUD&000C0000,&00099999,&00080000,&0006DB6DEQUD&00060000,&00055555,&0004CCCC,&00045D17EQUD&00040000,&0003B13B,&00036DB6,&00033333EQUD&00030000,&0002D2D2,&0002AAAA,&000286BCEQUD&00026666,&00024924,&00022E8B,&00021642EQUD&00020000,&0001EB85,&0001D89D,&0001C71CEQUD&0001B6DB,&0001A7B9,&00019999,&00018C63EQUD&00018000,&0001745D,&00016969,&00015F15EQUD&00015555,&00014C1B,&0001435E,&00013B13EQUD&00013333,&00012BB5,&00012492,&00011DC4EQUD&00011745,&00011111,&00010B21,&00010572EQUD&00010000,&0000FAC6,&0000F5C2,&0000F0F0EQUD&0000EC4E,&0000E7D9,&0000E38E,&0000DF6BEQUD&0000DB6D,&0000D794,&0000D3DC,&0000D045EQUD&0000CCCC,&0000C971,&0000C631,&0000C30CEQUD&FFFFFFFF,&00310000,&00188000,&00105555\ n / 49 (n = 0 to 63)EQUD&000C4000,&0009CCCC,&00082AAA,&00070000EQUD&00062000,&000571C7,&0004E666,&0004745DEQUD&00041555,&0003C4EC,&00038000,&00034444EQUD&00031000,&0002E1E1,&0002B8E3,&00029435EQUD&00027333,&00025555,&00023A2E,&00022164EQUD&00020AAA,&0001F5C2,&0001E276,&0001D097EQUD&0001C000,&0001B08D,&0001A222,&000194A5EQUD&00018800,&00017C1F,&000170F0,&00016666EQUD&00015C71,&00015306,&00014A1A,&000141A4EQUD&00013999,&000131F3,&00012AAA,&000123B8EQUD&00011D17,&000116C1,&000110B2,&00010AE4EQUD&00010555,&00010000,&0000FAE1,&0000F5F5EQUD&0000F13B,&0000ECAD,&0000E84B,&0000E412EQUD&0000E000,&0000DC11,&0000D846,&0000D49CEQUD&0000D111,&0000CDA3,&0000CA52,&0000C71CEQUD&FFFFFFFF,&00320000,&00190000,&0010AAAA\ n / 50 (n = 0 to 63)EQUD&000C8000,&000A0000,&00085555,&00072492EQUD&00064000,&00058E38,&00050000,&00048BA2EQUD&00042AAA,&0003D89D,&00039249,&00035555EQUD&00032000,&0002F0F0,&0002C71C,&0002A1AFEQUD&00028000,&00026186,&000245D1,&00022C85EQUD&00021555,&00020000,&0001EC4E,&0001DA12EQUD&0001C924,&0001B961,&0001AAAA,&00019CE7EQUD&00019000,&000183E0,&00017878,&00016DB6EQUD&0001638E,&000159F2,&000150D7,&00014834EQUD&00014000,&00013831,&000130C3,&000129ACEQUD&000122E8,&00011C71,&00011642,&00011057EQUD&00010AAA,&00010539,&00010000,&0000FAFAEQUD&0000F627,&0000F182,&0000ED09,&0000E8BAEQUD&0000E492,&0000E08F,&0000DCB0,&0000D8F2EQUD&0000D555,&0000D1D6,&0000CE73,&0000CB2CEQUD&FFFFFFFF,&00330000,&00198000,&00110000\ n / 51 (n = 0 to 63)EQUD&000CC000,&000A3333,&00088000,&00074924EQUD&00066000,&0005AAAA,&00051999,&0004A2E8EQUD&00044000,&0003EC4E,&0003A492,&00036666EQUD&00033000,&00030000,&0002D555,&0002AF28EQUD&00028CCC,&00026DB6,&00025174,&000237A6EQUD&00022000,&00020A3D,&0001F627,&0001E38EEQUD&0001D249,&0001C234,&0001B333,&0001A529EQUD&00019800,&00018BA2,&00018000,&00017507EQUD&00016AAA,&000160DD,&00015794,&00014EC4EQUD&00014666,&00013E70,&000136DB,&00012FA0EQUD&000128BA,&00012222,&00011BD3,&000115C9EQUD&00011000,&00010A72,&0001051E,&00010000EQUD&0000FB13,&0000F656,&0000F1C7,&0000ED61EQUD&0000E924,&0000E50D,&0000E11A,&0000DD49EQUD&0000D999,&0000D608,&0000D294,&0000CF3CEQUD&FFFFFFFF,&00340000,&001A0000,&00115555\ n / 52 (n = 0 to 63)EQUD&000D0000,&000A6666,&0008AAAA,&00076DB6EQUD&00068000,&0005C71C,&00053333,&0004BA2EEQUD&00045555,&00040000,&0003B6DB,&00037777EQUD&00034000,&00030F0F,&0002E38E,&0002BCA1EQUD&00029999,&000279E7,&00025D17,&000242C8EQUD&00022AAA,&0002147A,&00020000,&0001ED09EQUD&0001DB6D,&0001CB08,&0001BBBB,&0001AD6BEQUD&0001A000,&00019364,&00018787,&00017C57EQUD&000171C7,&000167C8,&00015E50,&00015555EQUD&00014CCC,&000144AE,&00013CF3,&00013594EQUD&00012E8B,&000127D2,&00012164,&00011B3BEQUD&00011555,&00010FAC,&00010A3D,&00010505EQUD&00010000,&0000FB2B,&0000F684,&0000F209EQUD&0000EDB6,&0000E98B,&0000E584,&0000E1A0EQUD&0000DDDD,&0000DA3A,&0000D6B5,&0000D34DEQUD&FFFFFFFF,&00350000,&001A8000,&0011AAAA\ n / 53 (n = 0 to 63)EQUD&000D4000,&000A9999,&0008D555,&00079249EQUD&0006A000,&0005E38E,&00054CCC,&0004D174EQUD&00046AAA,&000413B1,&0003C924,&00038888EQUD&00035000,&00031E1E,&0002F1C7,&0002CA1AEQUD&0002A666,&00028618,&000268BA,&00024DE9EQUD&00023555,&00021EB8,&000209D8,&0001F684EQUD&0001E492,&0001D3DC,&0001C444,&0001B5ADEQUD&0001A800,&00019B26,&00018F0F,&000183A8EQUD&000178E3,&00016EB3,&0001650D,&00015BE5EQUD&00015333,&00014AED,&0001430C,&00013B88EQUD&0001345D,&00012D82,&000126F4,&000120AEEQUD&00011AAA,&000114E5,&00010F5C,&00010A0AEQUD&000104EC,&00010000,&0000FB42,&0000F6B0EQUD&0000F249,&0000EE08,&0000E9EE,&0000E5F7EQUD&0000E222,&0000DE6D,&0000DAD6,&0000D75DEQUD&FFFFFFFF,&00360000,&001B0000,&00120000\ n / 54 (n = 0 to 63)EQUD&000D8000,&000ACCCC,&00090000,&0007B6DBEQUD&0006C000,&00060000,&00056666,&0004E8BAEQUD&00048000,&00042762,&0003DB6D,&00039999EQUD&00036000,&00032D2D,&00030000,&0002D794EQUD&0002B333,&00029249,&0002745D,&0002590BEQUD&00024000,&000228F5,&000213B1,&00020000EQUD&0001EDB6,&0001DCB0,&0001CCCC,&0001BDEFEQUD&0001B000,&0001A2E8,&00019696,&00018AF8EQUD&00018000,&0001759F,&00016BCA,&00016276EQUD&00015999,&0001512B,&00014924,&0001417DEQUD&00013A2E,&00013333,&00012C85,&00012620EQUD&00012000,&00011A1F,&0001147A,&00010F0FEQUD&000109D8,&000104D4,&00010000,&0000FB58EQUD&0000F6DB,&0000F286,&0000EE58,&0000EA4EEQUD&0000E666,&0000E29F,&0000DEF7,&0000DB6DEQUD&FFFFFFFF,&00370000,&001B8000,&00125555\ n / 55 (n = 0 to 63)EQUD&000DC000,&000B0000,&00092AAA,&0007DB6DEQUD&0006E000,&00061C71,&00058000,&00050000EQUD&00049555,&00043B13,&0003EDB6,&0003AAAAEQUD&00037000,&00033C3C,&00030E38,&0002E50DEQUD&0002C000,&00029E79,&00028000,&0002642CEQUD&00024AAA,&00023333,&00021D89,&0002097BEQUD&0001F6DB,&0001E584,&0001D555,&0001C631EQUD&0001B800,&0001AAAA,&00019E1E,&00019249EQUD&0001871C,&00017C8A,&00017286,&00016906EQUD&00016000,&0001576A,&00014F3C,&00014771EQUD&00014000,&000138E3,&00013216,&00012B93EQUD&00012555,&00011F58,&00011999,&00011414EQUD&00010EC4,&000109A9,&000104BD,&00010000EQUD&0000FB6D,&0000F704,&0000F2C2,&0000EEA4EQUD&0000EAAA,&0000E6D1,&0000E318,&0000DF7DEQUD&FFFFFFFF,&00380000,&001C0000,&0012AAAA\ n / 56 (n = 0 to 63)EQUD&000E0000,&000B3333,&00095555,&00080000EQUD&00070000,&000638E3,&00059999,&00051745EQUD&0004AAAA,&00044EC4,&00040000,&0003BBBBEQUD&00038000,&00034B4B,&00031C71,&0002F286EQUD&0002CCCC,&0002AAAA,&00028BA2,&00026F4DEQUD&00025555,&00023D70,&00022762,&000212F6EQUD&00020000,&0001EE58,&0001DDDD,&0001CE73EQUD&0001C000,&0001B26C,&0001A5A5,&00019999EQUD&00018E38,&00018375,&00017943,&00016F96EQUD&00016666,&00015DA8,&00015555,&00014D65EQUD&000145D1,&00013E93,&000137A6,&00013105EQUD&00012AAA,&00012492,&00011EB8,&00011919EQUD&000113B1,&00010E7D,&0001097B,&000104A7EQUD&00010000,&0000FB82,&0000F72C,&0000F2FBEQUD&0000EEEE,&0000EB04,&0000E739,&0000E38EEQUD&FFFFFFFF,&00390000,&001C8000,&00130000\ n / 57 (n = 0 to 63)EQUD&000E4000,&000B6666,&00098000,&00082492EQUD&00072000,&00065555,&0005B333,&00052E8BEQUD&0004C000,&00046276,&00041249,&0003CCCCEQUD&00039000,&00035A5A,&00032AAA,&00030000EQUD&0002D999,&0002B6DB,&00029745,&00027A6FEQUD&00026000,&000247AE,&0002313B,&00021C71EQUD&00020924,&0001F72C,&0001E666,&0001D6B5EQUD&0001C800,&0001BA2E,&0001AD2D,&0001A0EAEQUD&00019555,&00018A60,&00018000,&00017627EQUD&00016CCC,&000163E7,&00015B6D,&00015359EQUD&00014BA2,&00014444,&00013D37,&00013677EQUD&00013000,&000129CB,&000123D7,&00011E1EEQUD&0001189D,&00011352,&00010E38,&0001094FEQUD&00010492,&00010000,&0000FB96,&0000F752EQUD&0000F333,&0000EF36,&0000EB5A,&0000E79EEQUD&FFFFFFFF,&003A0000,&001D0000,&00135555\ n / 58 (n = 0 to 63)EQUD&000E8000,&000B9999,&0009AAAA,&00084924EQUD&00074000,&000671C7,&0005CCCC,&000545D1EQUD&0004D555,&00047627,&00042492,&0003DDDDEQUD&0003A000,&00036969,&000338E3,&00030D79EQUD&0002E666,&0002C30C,&0002A2E8,&00028590EQUD&00026AAA,&000251EB,&00023B13,&000225EDEQUD&00021249,&00020000,&0001EEEE,&0001DEF7EQUD&0001D000,&0001C1F0,&0001B4B4,&0001A83AEQUD&00019C71,&0001914C,&000186BC,&00017CB7EQUD&00017333,&00016A25,&00016186,&0001594DEQUD&00015174,&000149F4,&000142C8,&00013BEAEQUD&00013555,&00012F05,&000128F5,&00012323EQUD&00011D89,&00011826,&000112F6,&00010DF6EQUD&00010924,&0001047D,&00010000,&0000FBA9EQUD&0000F777,&0000F368,&0000EF7B,&0000EBAEEQUD&FFFFFFFF,&003B0000,&001D8000,&0013AAAA\ n / 59 (n = 0 to 63)EQUD&000EC000,&000BCCCC,&0009D555,&00086DB6EQUD&00076000,&00068E38,&0005E666,&00055D17EQUD&0004EAAA,&000489D8,&000436DB,&0003EEEEEQUD&0003B000,&00037878,&0003471C,&00031AF2EQUD&0002F333,&0002CF3C,&0002AE8B,&000290B2EQUD&00027555,&00025C28,&000244EC,&00022F68EQUD&00021B6D,&000208D3,&0001F777,&0001E739EQUD&0001D800,&0001C9B2,&0001BC3C,&0001AF8AEQUD&0001A38E,&00019837,&00018D79,&00018348EQUD&00017999,&00017063,&0001679E,&00015F41EQUD&00015745,&00014FA4,&00014859,&0001415CEQUD&00013AAA,&0001343E,&00012E14,&00012828EQUD&00012276,&00011CFB,&000117B4,&0001129EEQUD&00010DB6,&000108FB,&00010469,&00010000EQUD&0000FBBB,&0000F79B,&0000F39C,&0000EFBEEQUD&FFFFFFFF,&003C0000,&001E0000,&00140000\ n / 60 (n = 0 to 63)EQUD&000F0000,&000C0000,&000A0000,&00089249EQUD&00078000,&0006AAAA,&00060000,&0005745DEQUD&00050000,&00049D89,&00044924,&00040000EQUD&0003C000,&00038787,&00035555,&0003286BEQUD&00030000,&0002DB6D,&0002BA2E,&00029BD3EQUD&00028000,&00026666,&00024EC4,&000238E3EQUD&00022492,&000211A7,&00020000,&0001EF7BEQUD&0001E000,&0001D174,&0001C3C3,&0001B6DBEQUD&0001AAAA,&00019F22,&00019435,&000189D8EQUD&00018000,&000176A2,&00016DB6,&00016535EQUD&00015D17,&00015555,&00014DE9,&000146CEEQUD&00014000,&00013978,&00013333,&00012D2DEQUD&00012762,&000121CF,&00011C71,&00011745EQUD&00011249,&00010D79,&000108D3,&00010456EQUD&00010000,&0000FBCD,&0000F7BD,&0000F3CFEQUD&FFFFFFFF,&003D0000,&001E8000,&00145555\ n / 61 (n = 0 to 63)EQUD&000F4000,&000C3333,&000A2AAA,&0008B6DBEQUD&0007A000,&0006C71C,&00061999,&00058BA2EQUD&00051555,&0004B13B,&00045B6D,&00041111EQUD&0003D000,&00039696,&0003638E,&000335E5EQUD&00030CCC,&0002E79E,&0002C5D1,&0002A6F4EQUD&00028AAA,&000270A3,&0002589D,&0002425EEQUD&00022DB6,&00021A7B,&00020888,&0001F7BDEQUD&0001E800,&0001D936,&0001CB4B,&0001BE2BEQUD&0001B1C7,&0001A60D,&00019AF2,&00019069EQUD&00018666,&00017CE0,&000173CF,&00016B29EQUD&000162E8,&00015B05,&0001537A,&00014C41EQUD&00014555,&00013EB1,&00013851,&00013232EQUD&00012C4E,&000126A4,&0001212F,&00011BEDEQUD&000116DB,&000111F7,&00010D3D,&000108ADEQUD&00010444,&00010000,&0000FBDE,&0000F7DFEQUD&FFFFFFFF,&003E0000,&001F0000,&0014AAAA\ n / 62 (n = 0 to 63)EQUD&000F8000,&000C6666,&000A5555,&0008DB6DEQUD&0007C000,&0006E38E,&00063333,&0005A2E8EQUD&00052AAA,&0004C4EC,&00046DB6,&00042222EQUD&0003E000,&0003A5A5,&000371C7,&0003435EEQUD&00031999,&0002F3CF,&0002D174,&0002B216EQUD&00029555,&00027AE1,&00026276,&00024BDAEQUD&000236DB,&0002234F,&00021111,&00020000EQUD&0001F000,&0001E0F8,&0001D2D2,&0001C57CEQUD&0001B8E3,&0001ACF9,&0001A1AF,&000196F9EQUD&00018CCC,&0001831F,&000179E7,&0001711DEQUD&000168BA,&000160B6,&0001590B,&000151B3EQUD&00014AAA,&000143EB,&00013D70,&00013737EQUD&0001313B,&00012B78,&000125ED,&00012094EQUD&00011B6D,&00011674,&000111A7,&00010D04EQUD&00010888,&00010432,&00010000,&0000FBEFEQUD&FFFFFFFF,&003F0000,&001F8000,&00150000\ n / 63 (n = 0 to 63)EQUD&000FC000,&000C9999,&000A8000,&00090000EQUD&0007E000,&00070000,&00064CCC,&0005BA2EEQUD&00054000,&0004D89D,&00048000,&00043333EQUD&0003F000,&0003B4B4,&00038000,&000350D7EQUD&00032666,&00030000,&0002DD17,&0002BD37EQUD&0002A000,&0002851E,&00026C4E,&00025555EQUD&00024000,&00022C23,&00021999,&00020842EQUD&0001F800,&0001E8BA,&0001DA5A,&0001CCCCEQUD&0001C000,&0001B3E4,&0001A86B,&00019D89EQUD&00019333,&0001895D,&00018000,&00017711EQUD&00016E8B,&00016666,&00015E9B,&00015726EQUD&00015000,&00014924,&0001428F,&00013C3CEQUD&00013627,&0001304D,&00012AAA,&0001253CEQUD&00012000,&00011AF2,&00011611,&0001115BEQUD&00010CCC,&00010864,&00010421,&00010000
Two-pass assembly loop
.endCode] NEXT pass% \ Loop back for the second pass
The object map determines which objects appear on the landscape, where objects are trees, buildings, rockets and so on (size of object map is 256 * 256 bytes = &10000)
The direction in which the player's ship faces, which is angle b in the rotation matrix, and which is determined by the angle of the mouse from the centre point
The 3D z-coordinate of the camera position (though note that the camera position is actually at the back of the on-screen landscape, not the front, so the camera's z-coordinate is larger than it would be for a more traditional camera position; it is more like the camera's focal point than position, in a sense)