Skip to navigation


Lander D source

Name: lineJump [Show more] Type: Variable Category: Drawing lines Summary: Jump table for drawing a horizontal line of between 0 and 17 pixels 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
.lineJump EQUD DrawLineSegment + 17 * 4 \ Draw a horizontal line of 0 pixels EQUD DrawLineSegment + 16 * 4 \ Draw a horizontal line of 1 pixels EQUD DrawLineSegment + 15 * 4 \ Draw a horizontal line of 2 pixels EQUD DrawLineSegment + 14 * 4 \ Draw a horizontal line of 3 pixels EQUD DrawLineSegment + 13 * 4 \ Draw a horizontal line of 4 pixels EQUD DrawLineSegment + 12 * 4 \ Draw a horizontal line of 5 pixels EQUD DrawLineSegment + 11 * 4 \ Draw a horizontal line of 6 pixels EQUD DrawLineSegment + 10 * 4 \ Draw a horizontal line of 7 pixels EQUD DrawLineSegment + 9 * 4 \ Draw a horizontal line of 8 pixels EQUD DrawLineSegment + 8 * 4 \ Draw a horizontal line of 9 pixels EQUD DrawLineSegment + 7 * 4 \ Draw a horizontal line of 10 pixels EQUD DrawLineSegment + 6 * 4 \ Draw a horizontal line of 11 pixels EQUD DrawLineSegment + 5 * 4 \ Draw a horizontal line of 12 pixels EQUD DrawLineSegment + 4 * 4 \ Draw a horizontal line of 13 pixels EQUD DrawLineSegment + 3 * 4 \ Draw a horizontal line of 14 pixels EQUD DrawLineSegment + 2 * 4 \ Draw a horizontal line of 15 pixels EQUD DrawLineSegment + 1 * 4 \ Draw a horizontal line of 16 pixels EQUD DrawLineSegment \ 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
Context: See this subroutine on its own page References: This subroutine is called as follows: * DrawFuelLevel calls DrawHorizontalLine * DrawTriangle (Part 4 of 11) calls DrawHorizontalLine * DrawTriangle (Part 11 of 11) calls DrawHorizontalLine

Arguments: R8 Line colour (in the form of a four-pixel colour word) R10 Line length R11 Screen address of the left end of the line
.DrawHorizontalLine CMP R10, #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% ADDLO R0, PC, R10, LSL #2 \ If R10 < 18, jump to the address in entry LDRLO PC, [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 more ADD R10, 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) BIC R0, 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 R11 TST R11, #%00000011 \ If R11 is not a multiple of 4 then one or STRNEB R8, [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 along TSTNE R11, #%00000011 \ If R11 is still not a multiple of 4 then STRNEB R8, [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 along TSTNE R11, #%00000011 \ If R11 is still not a multiple of 4 then STRNEB R8, [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 .hlin1 STR R8, [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 \ word CMP R11, R0 \ If R11 < R0 then we have not yet reached STRLO R8, [R11], #4 \ the right cap, so draw another word in \ memory and increment R11 again CMPLO R11, R0 \ If R11 < R0 then we have still not reached BLO hlin1 \ the right cap, so loop back to hlin1 to \ keep drawing the centre portion of the \ line until we do reach the right cap CMP R11, R10 \ If R11 < R10 then we have not yet reached STRLOB R8, [R11], #1 \ the end of the line, so we draw up to CMPLO R11, R10 \ three pixels in the final word of the line STRLOB R8, [R11], #1 \ by simply drawing each pixel, incrementing CMPLO R11, R10 \ R11 and then re-checking whether R11 has STRLOB R8, [R11], #1 \ reached R10 (and drawing the next pixel if \ it hasn't) MOV PC, 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 to the relevant entry point Deep dive: Drawing triangles
Context: See this subroutine on its own page References: This subroutine is called as follows: * lineJump calls DrawLineSegment

Arguments: R8 Line colour (in the form of a four-pixel colour word) R11 Screen address of left end of line
.DrawLineSegment STRB R8, [R11, #16] \ Draw a horizontal line of 17 pixels STRB R8, [R11, #15] \ Draw a horizontal line of 16 pixels STRB R8, [R11, #14] \ Draw a horizontal line of 15 pixels STRB R8, [R11, #13] \ Draw a horizontal line of 14 pixels STRB R8, [R11, #12] \ Draw a horizontal line of 13 pixels STRB R8, [R11, #11] \ Draw a horizontal line of 12 pixels STRB R8, [R11, #10] \ Draw a horizontal line of 11 pixels STRB R8, [R11, #9] \ Draw a horizontal line of 10 pixels STRB R8, [R11, #8] \ Draw a horizontal line of 9 pixels STRB R8, [R11, #7] \ Draw a horizontal line of 8 pixels STRB R8, [R11, #6] \ Draw a horizontal line of 7 pixels STRB R8, [R11, #5] \ Draw a horizontal line of 6 pixels STRB R8, [R11, #4] \ Draw a horizontal line of 5 pixels STRB R8, [R11, #3] \ Draw a horizontal line of 4 pixels STRB R8, [R11, #2] \ Draw a horizontal line of 3 pixels STRB R8, [R11, #1] \ Draw a horizontal line of 2 pixels STRB R8, [R11] \ Draw a horizontal line of 1 pixel MOV PC, R14 \ Return from the subroutine
Name: workspaceAddr [Show more] Type: Variable Category: Start and end Summary: The address of the game's variable workspace
Context: See this variable on its own page References: This variable is used as follows: * Entry uses workspaceAddr
.workspaceAddr EQUD workspace
Name: stackAddr [Show more] Type: Variable Category: Start and end Summary: The address of the game's stack
Context: See this variable on its own page References: This variable is used as follows: * Entry uses stackAddr
.stackAddr EQUD stack
Name: memoryTestAddr [Show more] Type: Variable Category: Start and end Summary: The memory location to check to ensure we have enough memory for the game
Context: See this variable on its own page References: This variable is used as follows: * Entry uses memoryTestAddr
.memoryTestAddr EQUD 0
Name: initialScore [Show more] Type: Variable Category: Score bar Summary: The score at the start of each game
Context: See this variable on its own page References: This variable is used as follows: * Entry uses initialScore * StartNewGame uses initialScore
.initialScore EQUD 500
Name: initialHighScore [Show more] Type: Variable Category: Score bar Summary: The high score when we first load the game
Context: See this variable on its own page References: This variable is used as follows: * Entry uses initialHighScore
.initialHighScore EQUD 500
Name: initialFuelLevel [Show more] Type: Variable Category: Score bar Summary: The fuel level at the start of each new game
Context: See this variable on its own page References: This variable is used as follows: * StartNewGame uses initialFuelLevel
.initialFuelLevel EQUD 3413
Name: stackPointerOnEntry [Show more] Type: Variable Category: Start and end Summary: Stores the stack pointer from when the game was run
Context: See this variable on its own page References: This variable is used as follows: * Entry uses stackPointerOnEntry * ReturnToDesktop uses stackPointerOnEntry
.stackPointerOnEntry EQUD 0
Name: mouseParameters [Show more] Type: Variable Category: Player Summary: The parameters for OS_Word 21,3 for resetting the mouse position
Context: See this variable on its own page References: This variable is used as follows: * mouseParametersAddr uses mouseParameters
.mouseParameters EQUB 3 \ This is OS_Word 21,3, so the reason code \ in the first byte is 3 EQUW 511 \ The X position for the mouse EQUW 511 \ 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
Context: See this variable on its own page References: This variable is used as follows: * ResetMousePosition uses mouseParametersAddr
.mouseParametersAddr EQUD mouseParameters
Name: ResetMousePosition [Show more] Type: Subroutine Category: Player Summary: Reset the mouse position to (511, 511), ready for the game
Context: See this subroutine on its own page References: This subroutine is called as follows: * PlacePlayerOnLaunchpad calls ResetMousePosition
.ResetMousePosition LDR R1, mouseParametersAddr \ Call OS_Word 21,3 to reset the mouse MOV R0, #21 \ position to (511, 511) SWI OS_Word MOV PC, R14 \ Return from the subroutine
Name: AbortWithMemoryError [Show more] Type: Subroutine Category: Start and end Summary: Show a memory error and abort the game
Context: See this subroutine on its own page References: This subroutine is called as follows: * Entry calls AbortWithMemoryError
.AbortWithMemoryError STRB R1, [R0] \ Restore the byte that we have been poking \ in the Entry routine to determine whether \ there is enough memory SWI OS_WriteS \ Print an error explaining that there isn't EQUS "There is not enough " \ enough free memory to run the game EQUS "memory to run this " EQUS "game." EQUW &0D0A EQUS "Please *CONFIGURE your " EQUS "machine to free more " EQUS "memory." EQUB 0 ALIGN B ReturnToDesktop \ 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
.Entry MOV R0, #22 \ Change to screen mode 15, which uses 160K SWI OS_WriteC \ of screen memory, the same amount that we MOV R0, #15 \ need for the game (though in the game we SWI OS_WriteC \ actually use two mode 13 screens, each of \ which is 80K) STR R13, stackPointerOnEntry \ Store the stack pointer from when the game \ started in stackPointerOnEntry, so we can \ retore it when we quit the game LDR R13, stackAddr \ Set the stack pointer in R13 to stackAddr, \ so the 512 bytes descending from stackAddr \ can be used as the game's stack LDR R11, 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] STMFD R13!, {R14} \ R14 contains the address we should return \ to when quitting the game, so store it on \ the stack so we can retrieve it later LDR R0, 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 game LDRB R1, [R0] \ Set R1 to the current contents of memory \ at R0, so we can restore it after running \ our memory tests MOV R2, #&AA \ Store the value &AA in our test memory STRB R2, [R0] \ location in R0, read it back, and if the LDRB R3, [R0] \ returned value is different to &AA, jump CMP R2, R3 \ to AbortWithMemoryError to abort the game, BNE AbortWithMemoryError \ as there isn't enough free memory MOV R2, #&55 \ Store the value &55 in our test memory STRB R2, [R0] \ location in R0, read it back, and if the LDRB R3, [R0] \ returned value is different to &55, jump CMP R2, R3 \ to AbortWithMemoryError to abort the game, BNE AbortWithMemoryError \ as there isn't enough free memory STRB R1, [R0] \ Restore the original contents of address \ R0 so it's unchanged by our memory tests MOV R0, #4 \ Call OS_Byte 4 to set the cursor keys to MOV R1, #1 \ return ASCII values, so they don't move MOV R2, #0 \ the cursor during the game SWI OS_Byte BL InitialiseParticleData \ Initialise the particle data buffer and \ associated variables MOV R0, #22 \ Change to screen mode 13 (320×256 pixels SWI OS_WriteC \ with 256 colours), which will display MOV R0, #13 \ screen bank 1 SWI OS_WriteC SWI OS_WriteS \ Write the game's title into the top line EQUS "Lander Demo/Practice " \ of the screen, where it remains for the EQUS "(C) D.J.Braben 1987" \ whole game EQUB 0 ALIGN BL SwitchScreenBank \ Switch screen bank, so VDU commands go to \ screen bank 2 MOV R0, #22 \ Change to screen mode 13 with shadow SWI OS_WriteC \ memory enabled (i.e. mode 128 + 13), which MOV R0, #128+13 \ creates two mode 13 screen banks SWI OS_WriteC \ MOV R0, #23 \ Start printing the following VDU command: SWI OS_WriteC \ MOV R0, #1 \ VDU 23, 1, 0, 0, 0, 0, 0, 0, 0, 0 SWI OS_WriteC \ \ which disables the cursor MOV R8, #8 \ We now want to print the eight zeroes in \ the above command, so set a loop counter \ in R8 .entr1 MOV R0, #0 \ This loop prints the eight zeroes in the SWI OS_WriteC \ above VDU command SUBS R8, R8, #1 \ Decrement the loop counter BNE entr1 \ Loop back until we have printed all eight \ zeroes SWI OS_WriteS \ Write the game's title into the top line EQUS "Lander Demo/Practice " \ of screen bank 2, so the same title EQUS "(C) D.J.Braben 1987" \ appears at the top of both screen banks EQUB 0 ALIGN LDR R0, initialScore \ Initialise currentScore to the score that STR R0, [R11, #currentScore] \ we start each game with, which is set in \ initialScore LDR R0, initialHighScore \ Initialise highScore to the high score STR R0, [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 newly generated set of objects
Context: See this subroutine on its own page References: This subroutine is called as follows: * GameOver calls StartNewGame
.StartNewGame \ We start by initialising the scores and \ printing them on the score bar LDR R0, [R11, #highScore] \ Set R0 to the current high score LDR R1, [R11, #currentScore] \ Set R1 to our current score CMP R1, R0 \ If R1 - R0 is positive, i.e. R1 >= R0, MOVPL R0, 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 \ score STRHS R0, [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 highScore MOV R1, #35 \ Set (R1, R2) = (35, 1) so the following MOV R2, #1 \ call to PrintScoreInBothBanks prints the \ high score at column 35 on row 1 BL PrintScoreInBothBanks \ Print the high score in R0 at column 35 on \ row 1, at the right end of the score bar LDR R0, initialScore \ Initialise currentScore to the score that STR R0, [R11, #currentScore] \ we start each game with, which is set in \ initialScore \ We now initialise more game variables LDR R0, initialFuelLevel \ Initialise fuelLevel to the fuel level STR R0, [R11, #fuelLevel] \ that we start each game with, which is set \ in initialFuelLevel MOV R0, #&30000 \ Initialise gravity to &30000 STR R0, [R11, #gravity] MOV R0, #3 \ Initialise the number of lives to 3 STR R0, [R11, #remainingLives]
Name: PlaceObjectsOnMap [Show more] Type: Subroutine Category: 3D objects Summary: Randomly place a number of objects on the map, avoiding the sea and 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 map MVN R0, #0 \ Set R0 to R3 to &FF so we can poke them MVN R1, #0 \ into memory at objectMap (this sets each MVN R2, #0 \ 32-bit register to &FFFFFFFF, which is the MVN R3, #0 \ same as four bytes, each of which is &FF) MOV R4, #256*256 \ Set R4 to use as a byte counter in the \ following loop, which works through each \ of the coordinates in the 256x256 map ADD R6, R11, #objectMap \ Set R6 to the address of the object map .snew1 STMIA R6!, {R0-R3} \ Store four words, or 16 bytes, at R6, \ updating R6 as we go, with each byte \ containing &FF SUBS R4, R4, #16 \ Subtract 16 from the byte counter in R4 \ as we just initialised 16 bytes BNE snew1 \ 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 type ADD R6, R11, #objectMap \ Set R6 to the address of the object map MOV R5, #2048 \ Set R5 to a loop counter as we work \ through all 2048 objects .snew2 BL GetRandomNumbers \ Set R0 and R1 to random numbers MOV R8, 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 object MOV R9, 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 different STMFD R13!, {R0} \ Store R0 on the stack so it doesn't get \ corrupted by the following call to \ GetLandscapeAltitude BL GetLandscapeAltitude \ Set R0 to the altitude of the landscape at \ coordinates (x, z) = (R8, R9) MOV R14, R0 \ Set R14 to the landscape altitude returned \ in R0 LDMFD R13!, {R0} \ Retrieve the value of R0 from the stack \ that we stored above CMP R14, #SEA_LEVEL \ If R14 = LAUNCHPAD_ALTITUDE or SEA_LEVEL, CMPNE R14, #LAUNCHPAD_ALTITUDE \ jump to snew3 to skip the following, so we BEQ snew3 \ do not place any objects on the sea or the \ launchpad AND R0, R0, #7 \ Reduce R0 to the range 1 to 8, so this is ADD R0, 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 types AND R9, 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-coordinate ADD R14, R6, R8, LSR #24 \ Set R14 = R6 + (R8 >> 24) + (R9 >> 16) ADD R14, R14, R9, LSR #16 STRB R0, [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) .snew3 SUBS R5, R5, #1 \ Decrement the loop counter BPL snew2 \ 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 7 MOV R0, #LAUNCHPAD_OBJECT \ Set R0 to the type of object along the \ right edge of the launchpad, which is a \ rocket of type 9 STRB R0, [R6, #&0107] \ Add the front rocket to coordinate (7, 1) STRB R0, [R6, #&0307] \ Add the middle rocket to coordinate (7, 3) STRB R0, [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
Context: See this subroutine on its own page References: This subroutine is called as follows: * LoseLife calls PlacePlayerOnLaunchpad
.PlacePlayerOnLaunchpad LDR R0, [R11, #remainingLives] \ Set R0 to the number of remaining lives MOV R1, #30 \ Set (R1, R2) = (30, 1) so the following MOV R2, #1 \ call to PrintScoreInBothBanks prints the \ number of lives at column 30 on row 1 BL PrintScoreInBothBanks \ 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 bar MVN R0, #0 \ Set playingGame = -1 to flag that the game STR R0, [R11, #playingGame] \ is being played and that this is not the \ crash animation MOV R0, #0 \ Set xCamera = 0 and zCamera = 0 STR R0, [R11, #xCamera] \ STR R0, [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 values STR R0, [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) MOV R0, #1 \ Set shipPitch = 1 so the ship is very STR R0, [R11, #shipPitch] \ slightly pitched up for take-off MOV R0, #LAUNCHPAD_SIZE/2 \ Set the starting coordinates of the MOV R2, R0 \ player's ship as follows: ADD R3, R11, #xPlayer \ MOV R1, #LAUNCHPAD_Y \ xPlayer = LAUNCHPAD_SIZE / 2 STMIA R3!, {R0-R2} \ yPlayer = LAUNCHPAD_Y \ zPlayer = LAUNCHPAD_SIZE / 2 \ \ which is in the middle of the launchpad MOV R0, #0 \ Set the player's velocity to zero as MOV R1, #0 \ follows: MOV R2, #0 \ STMIA R3!, {R0-R2} \ xVelocity = 0 \ yVelocity = 0 \ zVelocity = 0 BL ResetMousePosition \ 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
.MainLoop MOV R0, #129 \ Call OS_Byte 129 to read the keyboard with MOV R1, #0 \ the time limit in R1 and R2 (so that's MOV R2, #0 \ with no time limit as R1 and R2 are zero), SWI OS_Byte \ returning the result in R2 TEQ R2, #&1B \ If R2 = &1B then an escape condition BEQ EndGame \ occurred during the keyboard scan (in \ other words, Escape was pressed), so jump \ to EndGame to acknowledge the escape \ condition and quit the game BL MoveAndDrawPlayer \ 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) LDR R0, [R11, #mainLoopCount] \ Set R0 = mainLoopCount << 24 MOV R0, R0, LSL #24 MOV R1, R0, LSL #1 \ Set R1 = mainLoopCount << 25 BL CalculateRotationMatrix \ 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) BL DropRocksFromTheSky \ If the score is 800 or more, then randomly \ drop rocks from the sky BL MoveAndDrawParticles \ Move and draw all the particles, such as \ smoke clouds and bullets, into the \ graphics buffers BL DrawObjects \ Draw all the objects, such as trees and \ buildings, into the graphics buffers BL AddTerminatorsToBuffers \ Add terminators to the ends of the \ graphics buffers so we know when to stop \ drawing BL DrawLandscapeAndBuffers \ Draw the landscape and the contents of the \ graphics buffers BL PrintCurrentScore \ Print the number of remaining bullets at \ the left end of the score bar BL DrawFuelLevel \ Draw the fuel bar BL SwitchScreenBank \ Switch screen banks and clear the newly \ hidden screen bank to black LDR R14, [R11, #mainLoopCount] \ Increment the main loop counter ADD R14, R14, #1 STR R14, [R11, #mainLoopCount] B MainLoop \ Loop back to repeat the main loop
Name: EndGame [Show more] Type: Subroutine Category: Main loop Summary: Finish the game
Context: See this subroutine on its own page References: This subroutine is called as follows: * MainLoop calls EndGame
.EndGame MOV R0, #126 \ Call OS_Byte 126 to acknowledge the escape SWI OS_Byte \ condition caused by the player pressing \ Escape in the main loop MOV R0, #22 \ Change to screen mode 0 SWI OS_WriteC MOV R0, #0 SWI OS_WriteC MOV R0, #4 \ Call OS_Byte 4 to set the cursor keys to MOV R1, #0 \ move the cursor, so they work normally MOV R2, #0 \ again SWI OS_Byte
Name: ReturnToDesktop [Show more] Type: Subroutine Category: Start and end Summary: Return to the desktop
Context: See this subroutine on its own page References: This subroutine is called as follows: * AbortWithMemoryError calls ReturnToDesktop
.ReturnToDesktop LDMFD R13!, {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 game LDR R13, 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 \ routine MOV PC, 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 the second 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: R1 The number to print
.PrintHexNumber MOV R0, #30 \ Print a VDU 30 command to move the text SWI OS_WriteC \ cursor to the top-left corner of the \ screen MOV R0, #&0A \ Print a line feed (ASCII &0A) to move the SWI OS_WriteC \ cursor down one line, to the start of the \ second line, which is where we print the \ score bar STMFD R13!, {R0-R12, R14} \ Store the registers that we want to use on \ the stack so they can be preserved MOV R0, R1, LSR #28 \ Print the top nibble of the value in R1 BL PrintHexDigit MOV R0, R1, LSR #24 \ Print the next nibble of the value in R1 BL PrintHexDigit MOV R0, R1, LSR #20 \ Print the next nibble of the value in R1 BL PrintHexDigit MOV R0, R1, LSR #16 \ Print the next nibble of the value in R1 BL PrintHexDigit MOV R0, R1, LSR #12 \ Print the next nibble of the value in R1 BL PrintHexDigit MOV R0, R1, LSR #8 \ Print the next nibble of the value in R1 BL PrintHexDigit MOV R0, R1, LSR #4 \ Print the next nibble of the value in R1 BL PrintHexDigit MOV R0, R1 \ Print the bottom nibble of the value in R1 BL PrintHexDigit MOV R0, #&A \ Print a line feed (ASCII &0A) and carriage SWI OS_WriteC \ return (ASCII &0D) to move the cursor down MOV R0, #&D \ to the start of the next line, ready to SWI OS_WriteC \ print further numbers if required LDMFD R13!, {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 in the score bar Deep dive: Unused code in Lander
Context: See this subroutine on its own page References: This subroutine is called as follows: * PrintHexNumber calls PrintHexDigit

Arguments: R0 The number to print (only the low nibble is printed, the rest of the number is ignored)
.PrintHexDigit AND R0, R0, #&F \ Extract the low nibble from the number in \ R0 CMP R0, #&A \ If the low nibble in R0 >= &A then the hex ADDHS R0, 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) ADDLO R0, 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 digit SWI OS_WriteC \ Print the character in R0 MOV PC, R14 \ Return from the subroutine
Name: objectRock [Show more] Type: Variable Category: 3D objects Summary: Object blueprint for a rock Deep dive: Object blueprints
Context: See this variable on its own page References: This variable is used as follows: * objectRockAddr uses objectRock
.objectRock EQUD 6 \ Number of vertices EQUD 8 \ Number of faces EQUD objectRockFaces - objectRock EQUD %00000011 \ Flags: Bit 0 = 1 = object rotates \ Bit 1 = 0 = object has a shadow .objectRockVertices \ xObject, yObject, zObject EQUD &00000000, &00000000, &00A00000 \ Vertex 0 EQUD &00A00000, &00A00000, &00000000 \ Vertex 1 EQUD &FF600000, &00A00000, &00000000 \ Vertex 2 EQUD &00A00000, &FF600000, &00000000 \ Vertex 3 EQUD &FF600000, &FF600000, &00000000 \ Vertex 4 EQUD &00000000, &00000000, &FF600000 \ Vertex 5 .objectRockFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &54DA5200, &54DA5200, 0, 1, 2, &444 \ 0 EQUD &54DA5200, &00000000, &54DA5200, 0, 3, 1, &444 \ 1 EQUD &00000000, &AB25AE00, &54DA5200, 0, 4, 3, &444 \ 2 EQUD &AB25AE00, &00000000, &54DA5200, 0, 2, 4, &444 \ 3 EQUD &00000000, &54DA5200, &AB25AE00, 5, 1, 2, &444 \ 4 EQUD &54DA5200, &00000000, &AB25AE00, 5, 3, 1, &444 \ 5 EQUD &00000000, &AB25AE00, &AB25AE00, 5, 4, 3, &444 \ 6 EQUD &AB25AE00, &00000000, &AB25AE00, 5, 2, 4, &444 \ 7
Name: objectPyramid [Show more] Type: Variable Category: 3D objects Summary: Object blueprint for a pyramid Deep dive: Object blueprints
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectPyramid
.objectPyramid EQUD 5 \ Number of vertices EQUD 6 \ Number of faces EQUD objectPyramidFaces - objectPyramid EQUD %00000001 \ Flags: Bit 0 = 1 = object rotates \ Bit 1 = 0 = object has no shadow .objectPyramidVertices \ xObject, yObject, zObject EQUD &00000000, &01000000, &00000000 \ Vertex 0 EQUD &00C00000, &FF800000, &00C00000 \ Vertex 1 EQUD &FF400000, &FF800000, &00C00000 \ Vertex 2 EQUD &00C00000, &FF800000, &FF400000 \ Vertex 3 EQUD &FF400000, &FF800000, &FF400000 \ Vertex 4 .objectPyramidFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &35AA66D2, &6B54CDA5, 0, 1, 2, &800 \ 0 EQUD &6B54CDA5, &35AA66D2, &00000000, 0, 3, 1, &088 \ 1 EQUD &00000000, &35AA66D2, &94AB325B, 0, 4, 3, &880 \ 2 EQUD &94AB325B, &35AA66D2, &00000000, 0, 2, 4, &808 \ 3 EQUD &00000000, &88000000, &00000000, 1, 2, 3, &444 \ 4 EQUD &00000000, &88000000, &00000000, 2, 3, 4, &008 \ 5
Name: objectPlayer [Show more] Type: Variable Category: 3D objects Summary: Object blueprint for the player's ship Deep dive: Object blueprints
Context: See this variable on its own page References: This variable is used as follows: * objectPlayerAddr uses objectPlayer
.objectPlayer EQUD 9 \ Number of vertices EQUD 9 \ Number of faces EQUD objectPlayerFaces - objectPlayer EQUD %00000011 \ Flags: Bit 0 = 1 = object rotates \ Bit 1 = 0 = object has a shadow .objectPlayerVertices \ xObject, yObject, zObject EQUD &01000000, &00500000, &00800000 \ Vertex 0 EQUD &01000000, &00500000, &FF800000 \ Vertex 1 EQUD &00000000, &000A0000, &FECCCCCD \ Vertex 2 EQUD &FF19999A, &00500000, &00000000 \ Vertex 3 EQUD &00000000, &000A0000, &01333333 \ Vertex 4 EQUD &FFE66667, &FF880000, &00000000 \ Vertex 5 EQUD &00555555, &00500000, &00400000 \ Vertex 6 EQUD &00555555, &00500000, &FFC00000 \ Vertex 7 EQUD &FFCCCCCD, &00500000, &00000000 \ Vertex 8 .objectPlayerFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &457C441A, &9E2A1F4C, &00000000, 0, 1, 5, &080 \ 0 EQUD &35F5D83B, &9BC03EC1, &DA12D71D, 1, 2, 5, &040 \ 1 EQUD &35F5D83B, &9BC03EC1, &25ED28E3, 0, 5, 4, &040 \ 2 EQUD &B123D51C, &AF3F50EE, &D7417278, 2, 3, 5, &040 \ 3 EQUD &B123D51D, &AF3F50EE, &28BE8D88, 3, 4, 5, &040 \ 4 EQUD &F765D8CD, &73242236, &DF4FD176, 1, 2, 3, &088 \ 5 EQUD &F765D8CD, &73242236, &20B02E8A, 0, 3, 4, &088 \ 6 EQUD &00000000, &78000000, &00000000, 0, 1, 3, &044 \ 7 EQUD &00000000, &78000000, &00000000, 6, 7, 8, &C80 \ 8
Name: objectSmallLeafyTree [Show more] Type: Variable Category: 3D objects Summary: Object blueprint for the small leafy tree Deep dive: Object blueprints
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectSmallLeafyTree
.objectSmallLeafyTree EQUD 11 \ Number of vertices EQUD 5 \ Number of faces EQUD objectSmallLeafyTreeFaces - objectSmallLeafyTree EQUD %00000010 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has a shadow .objectSmallLeafyTreeVertices \ xObject, yObject, zObject EQUD &00300000, &FE800000, &00300000 \ Vertex 0 EQUD &FFD9999A, &00000000, &00000000 \ Vertex 1 EQUD &00266666, &00000000, &00000000 \ Vertex 2 EQUD &00000000, &FEF33334, &FF400000 \ Vertex 3 EQUD &00800000, &FF400000, &FF800000 \ Vertex 4 EQUD &FF400000, &FECCCCCD, &FFD55556 \ Vertex 5 EQUD &FF800000, &FEA66667, &00400000 \ Vertex 6 EQUD &00800000, &FE59999A, &002AAAAA \ Vertex 7 EQUD &00C00000, &FEA66667, &FFC00000 \ Vertex 8 EQUD &FFA00000, &FECCCCCD, &00999999 \ Vertex 9 EQUD &00C00000, &FF400000, &00C00000 \ Vertex 10 .objectSmallLeafyTreeFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &14A01873, &AF8F9F93, &56A0681E, 0, 9, 10, &040 \ 0 EQUD &00000000, &00000000, &00000000, 0, 1, 2, &400 \ 1 EQUD &499A254E, &B123FC2C, &CB6D5299, 0, 3, 4, &080 \ 2 EQUD &E4D2EEBE, &8DC82837, &E72FE5E9, 0, 5, 6, &080 \ 3 EQUD &D5710585, &B29EF364, &AEC07EB3, 0, 7, 8, &080 \ 4
Name: objectTallLeafyTree [Show more] Type: Variable Category: 3D objects Summary: Object blueprint for the tall leafy tree Deep dive: Object blueprints
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectTallLeafyTree
.objectTallLeafyTree EQUD 14 \ Number of vertices EQUD 6 \ Number of faces EQUD objectTallLeafyTreeFaces - objectTallLeafyTree EQUD %00000010 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has a shadow .objectTallLeafyTreeVertices \ xObject, yObject, zObject EQUD &0036DB6D, &FD733334, &00300000 \ Vertex 0 EQUD &FFD00000, &00000000, &00000000 \ Vertex 1 EQUD &00300000, &00000000, &00000000 \ Vertex 2 EQUD &00000000, &FE0CCCCD, &FF400000 \ Vertex 3 EQUD &00800000, &FE59999A, &FF800000 \ Vertex 4 EQUD &FF533334, &FE333334, &FFC92493 \ Vertex 5 EQUD &FF400000, &FEA66667, &00600000 \ Vertex 6 EQUD &00000000, &FF19999A, &FF666667 \ Vertex 7 EQUD &FF800000, &FF400000, &FFA00000 \ Vertex 8 EQUD &FFA00000, &FE800000, &00999999 \ Vertex 9 EQUD &00C00000, &FECCCCCD, &00C00000 \ Vertex 10 EQUD &FFB33334, &FF19999A, &00E66666 \ Vertex 11 EQUD &00800000, &FF400000, &00C00000 \ Vertex 12 EQUD &00300000, &FE59999A, &00300000 \ Vertex 13 .objectTallLeafyTreeFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &FD3D01DD, &D2CB371E, &6F20024E, 0, 9, 10, &040 \ 0 EQUD &1E6F981A, &BB105ECE, &5D638B16, 13, 11, 12, &080 \ 1 EQUD &00000000, &00000000, &00000000, 0, 1, 2, &400 \ 2 EQUD &49D96509, &B8E72762, &C19E3A19, 0, 3, 4, &080 \ 3 EQUD &AD213B74, &B641CA5D, &2DC40650, 0, 5, 6, &040 \ 4 EQUD &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
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectSmokingRemainsLeft
.objectSmokingRemainsLeft EQUD 5 \ Number of vertices EQUD 2 \ Number of faces EQUD objectSmokingRemainsLeftFaces - objectSmokingRemainsLeft EQUD %00000000 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has no shadow .objectSmokingRemainsLeftVertices \ xObject, yObject, zObject EQUD &FFD9999A, &00000000, &00000000 \ Vertex 0 EQUD &00266666, &00000000, &00000000 \ Vertex 1 EQUD &002B3333, &FFC00000, &00000000 \ Vertex 2 EQUD &00300000, &FF800000, &00000000 \ Vertex 3 EQUD &FFD55556, &FECCCCCD, &00000000 \ Vertex 4 .objectSmokingRemainsLeftFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &00000000, &00000000, 0, 1, 3, &000 \ 0 EQUD &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
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectSmokingRemainsRight
.objectSmokingRemainsRight EQUD 5 \ Number of vertices EQUD 2 \ Number of faces EQUD objectSmokingRemainsRightFaces - objectSmokingRemainsRight EQUD %00000000 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has no shadow .objectSmokingRemainsRightVertices \ xObject, yObject, zObject EQUD &002AAAAA, &00000000, &00000000 \ Vertex 0 EQUD &FFD55556, &00000000, &00000000 \ Vertex 1 EQUD &FFD4CCCD, &FFD00000, &00000000 \ Vertex 2 EQUD &FFD00000, &FFA00000, &00000000 \ Vertex 3 EQUD &002AAAAA, &FEA66667, &00000000 \ Vertex 4 .objectSmokingRemainsRightFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &00000000, &00000000, 0, 1, 3, &000 \ 0 EQUD &00000000, &00000000, &00000000, 2, 3, 4, &000 \ 1
Name: objectFirTree [Show more] Type: Variable Category: 3D objects Summary: Object blueprint for the fir tree Deep dive: Object blueprints
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectFirTree
.objectFirTree EQUD 5 \ Number of vertices EQUD 2 \ Number of faces EQUD objectFirTreeFaces - objectFirTree EQUD %00000010 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has a shadow .objectFirTreeVertices \ xObject, yObject, zObject EQUD &FFA00000, &FFC92493, &FFC92493 \ Vertex 0 EQUD &00600000, &FFC92493, &FFC92493 \ Vertex 1 EQUD &00000000, &FE333334, &0036DB6D \ Vertex 2 EQUD &00266666, &00000000, &00000000 \ Vertex 3 EQUD &FFD9999A, &00000000, &00000000 \ Vertex 4 .objectFirTreeFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &00000000, &00000000, 2, 3, 4, &400 \ 0 EQUD &00000000, &E0B0E050, &8C280943, 0, 1, 2, &040 \ 1
Name: objectGazebo [Show more] Type: Variable Category: 3D objects Summary: Object blueprint for the gazebo Deep dive: Object blueprints
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectGazebo
.objectGazebo EQUD 13 \ Number of vertices EQUD 8 \ Number of faces EQUD objectGazeboFaces - objectGazebo EQUD %00000010 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has a shadow .objectGazeboVertices \ xObject, yObject, zObject EQUD &00000000, &FF000000, &00000000 \ Vertex 0 EQUD &FF800000, &FF400000, &00800000 \ Vertex 1 EQUD &FF800000, &FF400000, &FF800000 \ Vertex 2 EQUD &00800000, &FF400000, &FF800000 \ Vertex 3 EQUD &00800000, &FF400000, &00800000 \ Vertex 4 EQUD &FF800000, &00000000, &00800000 \ Vertex 5 EQUD &FF800000, &00000000, &FF800000 \ Vertex 6 EQUD &00800000, &00000000, &FF800000 \ Vertex 7 EQUD &00800000, &00000000, &00800000 \ Vertex 8 EQUD &FF99999A, &FF400000, &00800000 \ Vertex 9 EQUD &FF99999A, &FF400000, &FF800000 \ Vertex 10 EQUD &00666666, &FF400000, &FF800000 \ Vertex 11 EQUD &00666666, &FF400000, &00800000 \ Vertex 12 .objectGazeboFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &00000000, &78000000, 1, 5, 9, &444 \ 0 EQUD &00000000, &00000000, &88000000, 2, 6, 10, &444 \ 1 EQUD &00000000, &94AB325B, &35AA66D2, 0, 1, 4, &400 \ 2 EQUD &00000000, &00000000, &88000000, 3, 7, 11, &444 \ 3 EQUD &00000000, &00000000, &78000000, 4, 8, 12, &444 \ 4 EQUD &CA55992E, &94AB325B, &00000000, 0, 1, 2, &840 \ 5 EQUD &35AA66D2, &94AB325B, &00000000, 0, 3, 4, &840 \ 6 EQUD &00000000, &94AB325B, &CA55992E, 0, 2, 3, &400 \ 7
Name: objectBuilding [Show more] Type: Variable Category: 3D objects Summary: Object blueprint for the building Deep dive: Object blueprints
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectBuilding
.objectBuilding EQUD 16 \ Number of vertices EQUD 12 \ Number of faces EQUD objectBuildingFaces - objectBuilding EQUD %00000000 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has no shadow .objectBuildingVertices \ xObject, yObject, zObject EQUD &FF19999A, &FF266667, &00000000 \ Vertex 0 EQUD &FF400000, &FF266667, &00000000 \ Vertex 1 EQUD &00C00000, &FF266667, &00000000 \ Vertex 2 EQUD &00E66666, &FF266667, &00000000 \ Vertex 3 EQUD &FF19999A, &FF8CCCCD, &00A66666 \ Vertex 4 EQUD &FF19999A, &FF8CCCCD, &FF59999A \ Vertex 5 EQUD &00E66666, &FF8CCCCD, &00A66666 \ Vertex 6 EQUD &00E66666, &FF8CCCCD, &FF59999A \ Vertex 7 EQUD &FF400000, &FF666667, &00800000 \ Vertex 8 EQUD &FF400000, &FF666667, &FF800000 \ Vertex 9 EQUD &00C00000, &FF666667, &00800000 \ Vertex 10 EQUD &00C00000, &FF666667, &FF800000 \ Vertex 11 EQUD &FF400000, &00000000, &00800000 \ Vertex 12 EQUD &FF400000, &00000000, &FF800000 \ Vertex 13 EQUD &00C00000, &00000000, &00800000 \ Vertex 14 EQUD &00C00000, &00000000, &FF800000 \ Vertex 15 .objectBuildingFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &99CD0E6D, &3EE445CC, 0, 4, 6, &400 \ 0 EQUD &00000000, &99CD0E6D, &3EE445CC, 0, 3, 6, &400 \ 1 EQUD &88000000, &00000000, &00000000, 1, 8, 9, &DDD \ 2 EQUD &78000000, &00000000, &00000000, 2, 10, 11, &555 \ 3 EQUD &88000000, &00000000, &00000000, 8, 12, 13, &FFF \ 4 EQUD &88000000, &00000000, &00000000, 8, 9, 13, &FFF \ 5 EQUD &78000000, &00000000, &00000000, 10, 14, 15, &777 \ 6 EQUD &78000000, &00000000, &00000000, 10, 11, 15, &777 \ 7 EQUD &00000000, &00000000, &88000000, 9, 13, 15, &BBB \ 8 EQUD &00000000, &00000000, &88000000, 9, 11, 15, &BBB \ 9 EQUD &00000000, &99CD0E6D, &C11BBA34, 0, 5, 7, &800 \ 10 EQUD &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
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectSmokingBuilding
.objectSmokingBuilding EQUD 6 \ Number of vertices EQUD 6 \ Number of faces EQUD objectSmokingBuildingFaces - objectSmokingBuilding EQUD %00000000 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has no shadow .objectSmokingBuildingVertices \ xObject, yObject, zObject EQUD &FF400000, &00000001, &00800000 \ Vertex 0 EQUD &FF400000, &00000001, &FF800000 \ Vertex 1 EQUD &00C00000, &00000001, &00800000 \ Vertex 2 EQUD &00C00000, &00000001, &FF800000 \ Vertex 3 EQUD &FF400000, &FF99999A, &00800000 \ Vertex 4 EQUD &00C00000, &FFB33334, &FF800000 \ Vertex 5 .objectSmokingBuildingFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &78000000, &00000000, 0, 1, 2, &000 \ 0 EQUD &00000000, &78000000, &00000000, 1, 2, 3, &000 \ 1 EQUD &00000000, &00000000, &78000000, 0, 2, 4, &333 \ 2 EQUD &88000000, &00000000, &00000000, 0, 1, 4, &666 \ 3 EQUD &78000000, &00000000, &00000000, 2, 3, 5, &555 \ 4 EQUD &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
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectSmokingGazebo
.objectSmokingGazebo EQUD 6 \ Number of vertices EQUD 4 \ Number of faces EQUD objectSmokingGazeboFaces - objectSmokingGazebo EQUD %00000010 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has a shadow .objectSmokingGazeboVertices \ xObject, yObject, zObject EQUD &00000000, &FF8CCCCD, &FFF00000 \ Vertex 0 EQUD &00199999, &FF8CCCCD, &FFF00000 \ Vertex 1 EQUD &00800000, &00000000, &00800000 \ Vertex 2 EQUD &FF800000, &00000000, &00800000 \ Vertex 3 EQUD &00800000, &00000000, &FF800000 \ Vertex 4 EQUD &FF800000, &00000000, &FF800000 \ Vertex 5 .objectSmokingGazeboFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &A24BB5BE, &4AF6A1AD, 0, 1, 2, &000 \ 0 EQUD &00000000, &A24BB5BE, &4AF6A1AD, 0, 1, 3, &333 \ 1 EQUD &00000000, &AC59C060, &A9F5EA98, 0, 1, 4, &444 \ 2 EQUD &00000000, &AC59C060, &A9F5EA98, 0, 1, 5, &000 \ 3
Name: objectRocket [Show more] Type: Variable Category: 3D objects Summary: Object blueprint for the rocket Deep dive: Object blueprints
Context: See this variable on its own page References: This variable is used as follows: * objectTypes uses objectRocket
.objectRocket EQUD 13 \ Number of vertices EQUD 8 \ Number of faces EQUD objectRocketFaces - objectRocket EQUD %00000010 \ Flags: Bit 0 = 0 = object is static \ Bit 1 = 0 = object has a shadow .objectRocketVertices \ xObject, yObject, zObject EQUD &00000000, &FE400000, &00000000 \ Vertex 0 EQUD &FFC80000, &FFD745D2, &00380000 \ Vertex 1 EQUD &FFC80000, &FFD745D2, &FFC80000 \ Vertex 2 EQUD &00380000, &FFD745D2, &00380000 \ Vertex 3 EQUD &00380000, &FFD745D2, &FFC80000 \ Vertex 4 EQUD &FF900000, &00000000, &00700000 \ Vertex 5 EQUD &FF900000, &00000000, &FF900000 \ Vertex 6 EQUD &00700000, &00000000, &00700000 \ Vertex 7 EQUD &00700000, &00000000, &FF900000 \ Vertex 8 EQUD &FFE40000, &FF071C72, &001C0000 \ Vertex 9 EQUD &FFE40000, &FF071C72, &FFE40000 \ Vertex 10 EQUD &001C0000, &FF071C72, &001C0000 \ Vertex 11 EQUD &001C0000, &FF071C72, &FFE40000 \ Vertex 12 .objectRocketFaces \ xNormal, yNormal, zNormal, vertex1, vertex2, vertex3, colour EQUD &00000000, &00000000, &00000000, 9, 1, 5, &CC0 \ 0 EQUD &00000000, &00000000, &00000000, 11, 3, 7, &CC0 \ 1 EQUD &00000000, &EFA75F67, &76E1A76B, 0, 1, 3, &C00 \ 2 EQUD &891E5895, &EFA75F67, &00000000, 0, 1, 2, &800 \ 3 EQUD &76E1A76B, &EFA75F67, &00000000, 3, 0, 4, &800 \ 4 EQUD &00000000, &EFA75F67, &891E5895, 0, 2, 4, &C00 \ 5 EQUD &00000000, &00000000, &00000000, 10, 2, 6, &CC0 \ 6 EQUD &00000000, &00000000, &00000000, 12, 4, 8, &CC0 \ 7
Name: sinTable [Show more] Type: Variable Category: Maths (Geometry) Summary: Sine/cosine lookup table
Context: See this variable on its own page References: This variable is used as follows: * sinTableAddr uses sinTable

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.
.sinTable EQUD &00000000, &00C90F87, &01921D1F, &025B26D7 EQUD &03242ABE, &03ED26E6, &04B6195D, &057F0034 EQUD &0647D97C, &0710A344, &07D95B9E, &08A2009A EQUD &096A9049, &0A3308BC, &0AFB6805, &0BC3AC35 EQUD &0C8BD35D, &0D53DB92, &0E1BC2E3, &0EE38765 EQUD &0FAB272B, &1072A047, &1139F0CE, &120116D4 EQUD &12C8106E, &138EDBB0, &145576B1, &151BDF85 EQUD &15E21444, &16A81304, &176DD9DE, &183366E8 EQUD &18F8B83C, &19BDCBF2, &1A82A025, &1B4732EE EQUD &1C0B826A, &1CCF8CB2, &1D934FE4, &1E56CA1D EQUD &1F19F97A, &1FDCDC1A, &209F701C, &2161B39F EQUD &2223A4C5, &22E541AE, &23A6887E, &24677757 EQUD &25280C5D, &25E845B5, &26A82185, &27679DF3 EQUD &2826B928, &28E5714A, &29A3C484, &2A61B101 EQUD &2B1F34EB, &2BDC4E6E, &2C98FBBA, &2D553AFB EQUD &2E110A61, &2ECC681D, &2F875262, &3041C760 EQUD &30FBC54C, &31B54A5D, &326E54C6, &3326E2C2 EQUD &33DEF286, &3496824F, &354D9056, &36041AD8 EQUD &36BA2013, &376F9E45, &382493AF, &38D8FE92 EQUD &398CDD31, &3A402DD1, &3AF2EEB6, &3BA51E28 EQUD &3C56BA6F, &3D07C1D5, &3DB832A5, &3E680B2C EQUD &3F1749B7, &3FC5EC97, &4073F21C, &4121589A EQUD &41CE1E63, &427A41D0, &4325C135, &43D09AEC EQUD &447ACD4F, &452456BC, &45CD358E, &46756827 EQUD &471CECE6, &47C3C22E, &4869E664, &490F57ED EQUD &49B41533, &4A581C9D, &4AFB6C97, &4B9E038E EQUD &4C3FDFF3, &4CE10033, &4D8162C3, &4E210616 EQUD &4EBFE8A4, &4F5E08E2, &4FFB654C, &5097FC5D EQUD &5133CC93, &51CED46D, &5269126D, &53028517 EQUD &539B2AEF, &5433027C, &54CA0A49, &556040E2 EQUD &55F5A4D1, &568A34A8, &571DEEF8, &57B0D255 EQUD &5842DD53, &58D40E8B, &59646497, &59F3DE11 EQUD &5A827999, &5B1035CE, &5B9D1153, &5C290ACB EQUD &5CB420DF, &5D3E5236, &5DC79D7B, &5E50015C EQUD &5ED77C89, &5F5E0DB2, &5FE3B38C, &60686CCD EQUD &60EC382E, &616F146A, &61F1003E, &6271FA68 EQUD &62F201AB, &637114CB, &63EF328E, &646C59BE EQUD &64E88925, &6563BF91, &65DDFBD2, &66573CBA EQUD &66CF811E, &6746C7D6, &67BD0FBB, &683257A9 EQUD &68A69E80, &6919E31F, &698C246B, &69FD6149 EQUD &6A6D98A3, &6ADCC963, &6B4AF277, &6BB812CF EQUD &6C24295F, &6C8F351A, &6CF934FB, &6D6227F9 EQUD &6DCA0D13, &6E30E349, &6E96A99C, &6EFB5F11 EQUD &6F5F02B1, &6FC19384, &70231098, &708378FE EQUD &70E2CBC5, &71410803, &719E2CD1, &71FA3947 EQUD &72552C84, &72AF05A6, &7307C3CF, &735F6625 EQUD &73B5EBD0, &740B53F9, &745F9DD0, &74B2C882 EQUD &7504D344, &7555BD4A, &75A585CE, &75F42C09 EQUD &7641AF3B, &768E0EA4, &76D94988, &77235F2C EQUD &776C4EDA, &77B417DE, &77FAB987, &78403327 EQUD &78848413, &78C7ABA0, &7909A92B, &794A7C10 EQUD &798A23B0, &79C89F6C, &7A05EEAC, &7A4210D7 EQUD &7A7D055A, &7AB6CBA2, &7AEF6322, &7B26CB4E EQUD &7B5D039C, &7B920B88, &7BC5E28E, &7BF8882F EQUD &7C29FBED, &7C5A3D4E, &7C894BDC, &7CB72723 EQUD &7CE3CEB0, &7D0F4217, &7D3980EB, &7D628AC5 EQUD &7D8A5F3F, &7DB0FDF6, &7DD6668D, &7DFA98A7 EQUD &7E1D93E8, &7E3F57FD, &7E5FE492, &7E7F3955 EQUD &7E9D55FB, &7EBA3A38, &7ED5E5C5, &7EF0585E EQUD &7F0991C2, &7F2191B3, &7F3857F5, &7F4DE44F EQUD &7F62368E, &7F754E7E, &7F872BF2, &7F97CEBC EQUD &7FA736B3, &7FB563B2, &7FC25595, &7FCE0C3D EQUD &7FD8878D, &7FE1C76A, &7FE9CBBF, &7FF09477 EQUD &7FF62181, &7FFA72D0, &7FFD8859, &7FFF6216 EQUD &7FFFFFFE, &7FFF6216, &7FFD8859, &7FFA72D0 EQUD &7FF62181, &7FF09477, &7FE9CBBF, &7FE1C76A EQUD &7FD8878D, &7FCE0C3D, &7FC25595, &7FB563B2 EQUD &7FA736B3, &7F97CEBC, &7F872BF2, &7F754E7E EQUD &7F62368E, &7F4DE44F, &7F3857F5, &7F2191B3 EQUD &7F0991C2, &7EF0585E, &7ED5E5C5, &7EBA3A38 EQUD &7E9D55FB, &7E7F3955, &7E5FE492, &7E3F57FD EQUD &7E1D93E8, &7DFA98A7, &7DD6668D, &7DB0FDF6 EQUD &7D8A5F3F, &7D628AC5, &7D3980EB, &7D0F4217 EQUD &7CE3CEB0, &7CB72723, &7C894BDC, &7C5A3D4E EQUD &7C29FBED, &7BF8882F, &7BC5E28E, &7B920B88 EQUD &7B5D039C, &7B26CB4E, &7AEF6322, &7AB6CBA2 EQUD &7A7D055A, &7A4210D7, &7A05EEAC, &79C89F6C EQUD &798A23B0, &794A7C10, &7909A92B, &78C7ABA0 EQUD &78848413, &78403327, &77FAB987, &77B417DE EQUD &776C4EDA, &77235F2C, &76D94988, &768E0EA4 EQUD &7641AF3B, &75F42C09, &75A585CE, &7555BD4A EQUD &7504D344, &74B2C882, &745F9DD0, &740B53FA EQUD &73B5EBD0, &735F6625, &7307C3CF, &72AF05A5 EQUD &72552C84, &71FA3948, &719E2CD1, &71410803 EQUD &70E2CBC5, &708378FD, &70231098, &6FC19384 EQUD &6F5F02B0, &6EFB5F11, &6E96A99C, &6E30E348 EQUD &6DCA0D13, &6D6227F9, &6CF934FB, &6C8F351A EQUD &6C24295F, &6BB812D0, &6B4AF277, &6ADCC963 EQUD &6A6D98A3, &69FD6149, &698C246B, &6919E320 EQUD &68A69E80, &683257AA, &67BD0FBC, &6746C7D6 EQUD &66CF811E, &66573CBA, &65DDFBD1, &6563BF91 EQUD &64E88925, &646C59BF, &63EF328E, &637114CB EQUD &62F201AC, &6271FA68, &61F1003E, &616F146B EQUD &60EC382E, &60686CCE, &5FE3B38D, &5F5E0DB2 EQUD &5ED77C89, &5E50015D, &5DC79D7B, &5D3E5236 EQUD &5CB420DF, &5C290ACB, &5B9D1153, &5B1035CF EQUD &5A82799A, &59F3DE11, &59646497, &58D40E8C EQUD &5842DD53, &57B0D256, &571DEEFA, &568A34A8 EQUD &55F5A4D2, &556040E2, &54CA0A49, &5433027D EQUD &539B2AEF, &53028516, &5269126E, &51CED46E EQUD &5133CC93, &5097FC5D, &4FFB654D, &4F5E08E2 EQUD &4EBFE8A4, &4E210617, &4D8162C4, &4CE10033 EQUD &4C3FDFF3, &4B9E0390, &4AFB6C97, &4A581C9D EQUD &49B41533, &490F57ED, &4869E664, &47C3C22F EQUD &471CECE6, &46756827, &45CD358F, &452456BC EQUD &447ACD50, &43D09AEC, &4325C134, &427A41D0 EQUD &41CE1E64, &4121589B, &4073F21C, &3FC5EC98 EQUD &3F1749B8, &3E680B2C, &3DB832A6, &3D07C1D6 EQUD &3C56BA6F, &3BA51E28, &3AF2EEB7, &3A402DD0 EQUD &398CDD32, &38D8FE93, &382493AF, &376F9E45 EQUD &36BA2013, &36041AD7, &354D9056, &3496824F EQUD &33DEF287, &3326E2C1, &326E54C7, &31B54A5E EQUD &30FBC54C, &3041C760, &2F875262, &2ECC681D EQUD &2E110A61, &2D553AFC, &2C98FBB9, &2BDC4E6F EQUD &2B1F34EB, &2A61B100, &29A3C484, &28E5714B EQUD &2826B927, &27679DF3, &26A82186, &25E845B6 EQUD &25280C5D, &24677757, &23A6887F, &22E541AE EQUD &2223A4C5, &2161B3A0, &209F701B, &1FDCDC1A EQUD &1F19F97B, &1E56CA1D, &1D934FE5, &1CCF8CB3 EQUD &1C0B8269, &1B4732EF, &1A82A026, &19BDCBF1 EQUD &18F8B83C, &183366E8, &176DD9DD, &16A81304 EQUD &15E21444, &151BDF86, &145576B0, &138EDBB1 EQUD &12C8106F, &120116D4, &1139F0CF, &1072A048 EQUD &0FAB272A, &0EE38765, &0E1BC2E4, &0D53DB91 EQUD &0C8BD35E, &0BC3AC35, &0AFB6804, &0A3308BC EQUD &096A9049, &08A20099, &07D95B9E, &0710A345 EQUD &0647D97D, &057F0034, &04B6195D, &03ED26E7 EQUD &03242ABE, &025B26D7, &01921D20, &00C90F87 EQUD &00000000, &FF36F079, &FE6DE2E0, &FDA4D929 EQUD &FCDBD542, &FC12D91A, &FB49E6A3, &FA80FFCD EQUD &F9B82684, &F8EF5CBC, &F826A463, &F75DFF67 EQUD &F6956FB7, &F5CCF745, &F50497FC, &F43C53CB EQUD &F3742CA3, &F2AC2470, &F1E43D1D, &F11C789B EQUD &F054D8D6, &EF8D5FB9, &EEC60F32, &EDFEE92D EQUD &ED37EF92, &EC712450, &EBAA8950, &EAE4207B EQUD &EA1DEBBC, &E957ECFC, &E8922624, &E7CC9918 EQUD &E70747C5, &E642340F, &E57D5FDB, &E4B8CD12 EQUD &E3F47D97, &E330734D, &E26CB01C, &E1A935E4 EQUD &E0E60685, &E02323E6, &DF608FE5, &DE9E4C61 EQUD &DDDC5B3C, &DD1ABE53, &DC597782, &DB9888A9 EQUD &DAD7F3A4, &DA17BA4A, &D957DE7B, &D898620D EQUD &D7D946DA, &D71A8EB6, &D65C3B7C, &D59E4F01 EQUD &D4E0CB15, &D423B192, &D3670447, &D2AAC505 EQUD &D1EEF59F, &D13397E3, &D078AD9E, &CFBE38A1 EQUD &CF043AB5, &CE4AB5A3, &CD91AB3A, &CCD91D3F EQUD &CC210D79, &CB697DB1, &CAB26FAB, &C9FBE529 EQUD &C945DFED, &C89061BC, &C7DB6C52, &C727016E EQUD &C67322CF, &C5BFD230, &C50D114A, &C45AE1D8 EQUD &C3A94592, &C2F83E2B, &C247CD5B, &C197F4D5 EQUD &C0E8B649, &C03A1369, &BF8C0DE5, &BEDEA766 EQUD &BE31E19D, &BD85BE31, &BCDA3ECD, &BC2F6514 EQUD &BB8532B1, &BADBA945, &BA32CA72, &B98A97DA EQUD &B8E3131B, &B83C3DD2, &B796199D, &B6F0A814 EQUD &B64BEACD, &B5A7E364, &B504936A, &B461FC71 EQUD &B3C0200E, &B31EFFCE, &B27E9D3D, &B1DEF9EA EQUD &B140175D, &B0A1F71F, &B0049AB4, &AF6803A3 EQUD &AECC336E, &AE312B93, &AD96ED93, &ACFD7AEA EQUD &AC64D511, &ABCCFD84, &AB35F5B7, &AA9FBF1E EQUD &AA0A5B2F, &A975CB58, &A8E21107, &A84F2DAB EQUD &A7BD22AD, &A72BF174, &A69B9B69, &A60C21EF EQUD &A57D8667, &A4EFCA32, &A462EEAE, &A3D6F536 EQUD &A34BDF21, &A2C1ADCB, &A2386286, &A1AFFEA4 EQUD &A1288378, &A0A1F24F, &A01C4C74, &9F979333 EQUD &9F13C7D2, &9E90EB96, &9E0EFFC4, &9D8E0599 EQUD &9D0DFE55, &9C8EEB37, &9C10CD72, &9B93A642 EQUD &9B1776DD, &9A9C4070, &9A22042E, &99A8C347 EQUD &99307EE2, &98B93829, &9842F046, &97CDA857 EQUD &97596180, &96E61CE2, &9673DB96, &96029EB6 EQUD &9592675E, &9523369D, &94B50D88, &9447ED31 EQUD &93DBD6A1, &9370CAE4, &9306CB06, &929DD807 EQUD &9235F2EC, &91CF1CB8, &91695664, &9104A0EE EQUD &90A0FD50, &903E6C7C, &8FDCEF67, &8F7C8703 EQUD &8F1D343B, &8EBEF7FC, &8E61D32F, &8E05C6B8 EQUD &8DAAD37D, &8D50FA5B, &8CF83C31, &8CA099DC EQUD &8C4A1430, &8BF4AC06, &8BA06231, &8B4D377E EQUD &8AFB2CBC, &8AAA42B6, &8A5A7A32, &8A0BD3F6 EQUD &89BE50C5, &8971F15C, &8926B678, &88DCA0D5 EQUD &8893B126, &884BE821, &88054679, &87BFCCD9 EQUD &877B7BED, &87385460, &86F656D5, &86B583EF EQUD &8675DC51, &86376094, &85FA1154, &85BDEF29 EQUD &8582FAA6, &8549345D, &85109CDE, &84D934B2 EQUD &84A2FC63, &846DF478, &843A1D72, &840777D1 EQUD &83D60413, &83A5C2B1, &8376B424, &8348D8DD EQUD &831C3150, &82F0BDEA, &82C67F15, &829D753B EQUD &8275A0C2, &824F020A, &82299973, &8205675A EQUD &81E26C18, &81C0A803, &81A01B6F, &8180C6AB EQUD &8162AA05, &8145C5C9, &812A1A3B, &810FA7A2 EQUD &80F66E3E, &80DE6E4D, &80C7A80B, &80B21BB1 EQUD &809DC972, &808AB181, &8078D40E, &80683144 EQUD &8058C94D, &804A9C4E, &803DAA6B, &8031F3C3 EQUD &80277873, &801E3896, &80163441, &800F6B89 EQUD &8009DE7F, &80058D30, &800277A7, &80009DEB EQUD &80000001, &80009DEB, &800277A7, &80058D30 EQUD &8009DE7F, &800F6B89, &80163441, &801E3895 EQUD &80277873, &8031F3C3, &803DAA6B, &804A9C4E EQUD &8058C94D, &80683145, &8078D40E, &808AB182 EQUD &809DC972, &80B21BB1, &80C7A80B, &80DE6E4D EQUD &80F66E3E, &810FA7A1, &812A1A3B, &8145C5C8 EQUD &8162AA05, &8180C6AA, &81A01B6E, &81C0A803 EQUD &81E26C18, &8205675A, &82299972, &824F0209 EQUD &8275A0C2, &829D753B, &82C67F15, &82F0BDEA EQUD &831C314F, &8348D8DD, &8376B424, &83A5C2B1 EQUD &83D60413, &840777D0, &843A1D71, &846DF478 EQUD &84A2FC63, &84D934B2, &85109CDE, &8549345D EQUD &8582FAA6, &85BDEF29, &85FA1153, &86376093 EQUD &8675DC50, &86B583EF, &86F656D4, &87385460 EQUD &877B7BED, &87BFCCD8, &88054679, &884BE821 EQUD &8893B126, &88DCA0D4, &8926B678, &8971F15B EQUD &89BE50C5, &8A0BD3F6, &8A5A7A32, &8AAA42B6 EQUD &8AFB2CBB, &8B4D377D, &8BA06231, &8BF4AC06 EQUD &8C4A1430, &8CA099DB, &8CF83C30, &8D50FA5A EQUD &8DAAD37D, &8E05C6B8, &8E61D32F, &8EBEF7FB EQUD &8F1D343A, &8F7C8702, &8FDCEF66, &903E6C7B EQUD &90A0FD4F, &9104A0EE, &91695664, &91CF1CB7 EQUD &9235F2EC, &929DD806, &9306CB05, &9370CAE4 EQUD &93DBD6A0, &9447ED31, &94B50D88, &9523369D EQUD &9592675E, &96029EB6, &9673DB95, &96E61CE2 EQUD &9759617F, &97CDA856, &9842F045, &98B93829 EQUD &99307EE2, &99A8C347, &9A22042D, &9A9C406F EQUD &9B1776DC, &9B93A641, &9C10CD72, &9C8EEB36 EQUD &9D0DFE54, &9D8E0598, &9E0EFFC3, &9E90EB95 EQUD &9F13C7D2, &9F979334, &A01C4C73, &A0A1F24E EQUD &A1288376, &A1AFFEA3, &A2386285, &A2C1ADC9 EQUD &A34BDF21, &A3D6F535, &A462EEAC, &A4EFCA31 EQUD &A57D8667, &A60C21ED, &A69B9B69, &A72BF175 EQUD &A7BD22AB, &A84F2DAA, &A8E21108, &A975CB56 EQUD &AA0A5B2E, &AA9FBF1F, &AB35F5B5, &ABCCFD83 EQUD &AC64D512, &ACFD7AE8, &AD96ED92, &AE312B93 EQUD &AECC336C, &AF6803A3, &B0049AB5, &B0A1F71D EQUD &B140175C, &B1DEF9EA, &B27E9D3C, &B31EFFCD EQUD &B3C0200F, &B461FC70, &B5049369, &B5A7E365 EQUD &B64BEACD, &B6F0A813, &B796199A, &B83C3DD1 EQUD &B8E3131A, &B98A97D7, &BA32CA71, &BADBA944 EQUD &BB8532AF, &BC2F6514, &BCDA3ECC, &BD85BE2F EQUD &BE31E19C, &BEDEA767, &BF8C0DE2, &C03A1368 EQUD &C0E8B649, &C197F4D3, &C247CD5A, &C2F83E2C EQUD &C3A9458F, &C45AE1D8, &C50D114B, &C5BFD22E EQUD &C67322CE, &C727016F, &C7DB6C4F, &C89061BB EQUD &C945DFEE, &C9FBE527, &CAB26FAA, &CB697DB2 EQUD &CC210D78, &CCD91D3E, &CD91AB3B, &CE4AB5A2 EQUD &CF043AB4, &CFBE38A2, &D078AD9D, &D13397E3 EQUD &D1EEF5A0, &D2AAC504, &D3670446, &D423B18F EQUD &D4E0CB14, &D59E4F00, &D65C3B7A, &D71A8EB5 EQUD &D7D946D9, &D898620B, &D957DE7A, &DA17BA4B EQUD &DAD7F3A1, &DB9888A8, &DC597783, &DD1ABE50 EQUD &DDDC5B3B, &DE9E4C62, &DF608FE2, &E02323E5 EQUD &E0E60686, &E1A935E1, &E26CB01B, &E330734F EQUD &E3F47D95, &E4B8CD11, &E57D5FDC, &E642340C EQUD &E70747C4, &E7CC9919, &E8922621, &E957ECFC EQUD &EA1DEBBD, &EAE4207A, &EBAA894F, &EC712451 EQUD &ED37EF91, &EDFEE92C, &EEC60F33, &EF8D5FB8 EQUD &F054D8D5, &F11C7898, &F1E43D1C, &F2AC246F EQUD &F3742CA0, &F43C53CA, &F50497FC, &F5CCF742 EQUD &F6956FB6, &F75DFF67, &F826A460, &F8EF5CBB EQUD &F9B82685, &FA80FFCA, &FB49E6A2, &FC12D91B EQUD &FCDBD540, &FDA4D928, &FE6DE2E1, &FF36F077
Name: arctanTable [Show more] Type: Variable Category: Maths (Geometry) Summary: Arctan lookup table Deep dive: Flying by mouse
Context: See this variable on its own page References: This variable is used as follows: * arctanTableAddr uses arctanTable

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.
.arctanTable EQUD &00000000, &00517C55, &00A2F61E, &00F46AD0 EQUD &0145D7E1, &01973AC7, &01E890FC, &0239D7FB EQUD &028B0D43, &02DC2E53, &032D38B3, &037E29EB EQUD &03CEFF89, &041FB721, &04704E4A, &04C0C2A4 EQUD &051111D4, &05613983, &05B13767, &06010937 EQUD &0650ACB6, &06A01FAE, &06EF5FF1, &073E6B5A EQUD &078D3FCE, &07DBDB3A, &082A3B94, &08785EDF EQUD &08C64325, &0913E67C, &09614703, &09AE62E6 EQUD &09FB385B, &0A47C5A2, &0A940907, &0AE000E1 EQUD &0B2BAB95, &0B77078F, &0BC2134B, &0C0CCD4E EQUD &0C57342A, &0CA1467C, &0CEB02EF, &0D346836 EQUD &0D7D7514, &0DC62856, &0E0E80D4, &0E567D73 EQUD &0E9E1D23, &0EE55EE2, &0F2C41B6, &0F72C4B3 EQUD &0FB8E6F9, &0FFEA7B0, &1044060F, &10890156 EQUD &10CD98D1, &1111CBD6, &115599C6, &1199020E EQUD &11DC0423, &121E9F86, &1260D3C1, &12A2A069 EQUD &12E4051D, &13250183, &1365954E, &13A5C038 EQUD &13E58203, &1424DA7D, &1463C97A, &14A24ED7 EQUD &14E06A7A, &151E1C50, &155B6450, &15984275 EQUD &15D4B6C4, &1610C149, &164C6216, &16879945 EQUD &16C266F6, &16FCCB50, &1736C67E, &177058B5 EQUD &17A9822C, &17E24322, &181A9BDA, &18528C9E EQUD &188A15BB, &18C13785, &18F7F252, &192E467F EQUD &1964346D, &1999BC80, &19CEDF21, &1A039CBD EQUD &1A37F5C4, &1A6BEAA9, &1A9F7BE4, &1AD2A9EF EQUD &1B057548, &1B37DE6E, &1B69E5E5, &1B9B8C33 EQUD &1BCCD1DF, &1BFDB775, &1C2E3D81, &1C5E6491 EQUD &1C8E2D38, &1CBD9807, &1CECA593, &1D1B5671 EQUD &1D49AB3A, &1D77A486, &1DA542F0, &1DD28713 EQUD &1DFF718C, &1E2C02F7, &1E583BF4, &1E841D21 EQUD &1EAFA71E, &1EDADA8D, &1F05B80D, &1F304042 EQUD &1F5A73CC, &1F84534E, &1FADDF6B, &1FD718C5
Name: squareRootTable [Show more] Type: Variable Category: Maths (Arithmetic) Summary: Square root lookup table Deep dive: Flying by mouse
Context: See this variable on its own page References: This variable is used as follows: * squareRootTableAddr uses squareRootTable

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.
.squareRootTable EQUD &00000000, &03FFFFFF, &05A82799, &06ED9EBA EQUD &07FFFFFF, &08F1BBCD, &09CC4709, &0A953FD4 EQUD &0B504F33, &0BFFFFFF, &0CA62C1D, &0D443949 EQUD &0DDB3D74, &0E6C15A2, &0EF77508, &0F7DEF58 EQUD &0FFFFFFF, &107E0F66, &10F876CC, &116F8334 EQUD &11E3779B, &12548EB9, &12C2FC59, &132EEE75 EQUD &13988E13, &13FFFFFF, &1465655F, &14C8DC2E EQUD &152A7FA9, &158A68A4, &15E8ADD2, &16456405 EQUD &16A09E66, &16FA6EA1, &1752E50D, &17AA10D1 EQUD &17FFFFFF, &1854BFB3, &18A85C24, &18FAE0C1 EQUD &194C583A, &199CCC99, &19EC4749, &1A3AD129 EQUD &1A887293, &1AD53369, &1B211B1C, &1B6C30B8 EQUD &1BB67AE8, &1BFFFFFF, &1C48C5FF, &1C90D29C EQUD &1CD82B44, &1D1ED520, &1D64D51D, &1DAA2FEF EQUD &1DEEEA11, &1E3307CC, &1E768D39, &1EB97E45 EQUD &1EFBDEB1, &1F3DB217, &1F7EFBEB, &1FBFBF7E EQUD &1FFFFFFF, &203FC07E, &207F03EC, &20BDCD1D EQUD &20FC1ECD, &2139FB9A, &2177660F, &21B4609B EQUD &21F0ED99, &222D0F51, &2268C7F4, &22A419A2 EQUD &22DF0668, &23199043, &2353B91E, &238D82D6 EQUD &23C6EF37, &23FFFFFF, &2438B6E1, &2471157F EQUD &24A91D72, &24E0D043, &25182F72, &254F3C74 EQUD &2585F8B2, &25BC658C, &25F28458, &26285661 EQUD &265DDCEA, &2693192F, &26C80C60, &26FCB7A7 EQUD &27311C27, &27653AFA, &27991533, &27CCABDD EQUD &27FFFFFF, &28331298, &2865E49F, &28987707 EQUD &28CACABE, &28FCE0A9, &292EB9AA, &2960569E EQUD &2991B85C, &29C2DFB5, &29F3CD77, &2A24826A EQUD &2A54FF53, &2A8544F1, &2AB55400, &2AE52D36 EQUD &2B14D149, &2B4440E6, &2B737CBA, &2BA2856D EQUD &2BD15BA4, &2BFFFFFF, &2C2E731E, &2C5CB599 EQUD &2C8AC80A, &2CB8AB04, &2CE65F19, &2D13E4D8 EQUD &2D413CCC, &2D6E677F, &2D9B6577, &2DC83737 EQUD &2DF4DD42, &2E215816, &2E4DA830, &2E79CE09 EQUD &2EA5CA1B, &2ED19CDA, &2EFD46BA, &2F28C82D EQUD &2F5421A3, &2F7F5388, &2FAA5E48, &2FD5424D EQUD &2FFFFFFF, &302A97C4, &30550A00, &307F5716 EQUD &30A97F66, &30D38350, &30FD6331, &31271F66 EQUD &3150B849, &317A2E33, &31A3817C, &31CCB27A EQUD &31F5C182, &321EAEE7, &32477AFB, &32702610 EQUD &3298B075, &32C11A78, &32E96466, &33118E8B EQUD &33399932, &336184A5, &3389512C, &33B0FF0F EQUD &33D88E93, &33FFFFFF, &34275396, &344E899C EQUD &3475A253, &349C9DFD, &34C37CD9, &34EA3F28 EQUD &3510E527, &35376F15, &355DDD2E, &35842FAF EQUD &35AA66D2, &35D082D2, &35F683E8, &361C6A4C EQUD &36423638, &3667E7E2, &368D7F80, &36B2FD48 EQUD &36D86170, &36FDAC2A, &3722DDAC, &3747F628 EQUD &376CF5D0, &3791DCD5, &37B6AB6A, &37DB61BD EQUD &37FFFFFF, &3824865F, &3848F50B, &386D4C31 EQUD &38918BFF, &38B5B4A2, &38D9C644, &38FDC113 EQUD &3921A539, &394572E2, &39692A36, &398CCB60 EQUD &39B05688, &39D3CBD7, &39F72B76, &3A1A758C EQUD &3A3DAA40, &3A60C9B9, &3A83D41C, &3AA6C991 EQUD &3AC9AA3B, &3AEC7641, &3B0F2DC6, &3B31D0EF EQUD &3B545FDE, &3B76DAB9, &3B9941A1, &3BBB94B8 EQUD &3BDDD422, &3BFFFFFF, &3C221871, &3C441D99 EQUD &3C660F98, &3C87EE8D, &3CA9BA99, &3CCB73DB EQUD &3CED1A72, &3D0EAE7E, &3D30301C, &3D519F6C EQUD &3D72FC8A, &3D944794, &3DB580A9, &3DD6A7E4 EQUD &3DF7BD62, &3E18C140, &3E39B399, &3E5A948A EQUD &3E7B642E, &3E9C22A0, &3EBCCFFB, &3EDD6C59 EQUD &3EFDF7D6, &3F1E728B, &3F3EDC92, &3F5F3605 EQUD &3F7F7EFD, &3F9FB792, &3FBFDFDF, &3FDFF7FB EQUD &3FFFFFFF, &401FF803, &403FE01F, &405FB86A EQUD &407F80FD, &409F39ED, &40BEE353, &40DE7D44 EQUD &40FE07D8, &411D8325, &413CEF40, &415C4C40 EQUD &417B9A3B, &419AD946, &41BA0976, &41D92AE0 EQUD &41F83D9A, &421741B8, &4236374E, &42551E71 EQUD &4273F735, &4292C1AF, &42B17DF1, &42D02C0F EQUD &42EECC1E, &430D5E30, &432BE257, &434A58A9 EQUD &4368C136, &43871C11, &43A5694E, &43C3A8FE EQUD &43E1DB33, &43FFFFFF, &441E1775, &443C21A5 EQUD &445A1EA2, &44780E7C, &4495F145, &44B3C70E EQUD &44D18FE8, &44EF4BE3, &450CFB11, &452A9D81 EQUD &45483344, &4565BC6A, &45833904, &45A0A921 EQUD &45BE0CD1, &45DB6423, &45F8AF28, &4615EDEF EQUD &46332087, &465046FE, &466D6165, &468A6FCB EQUD &46A7723D, &46C468CB, &46E15383, &46FE3274 EQUD &471B05AC, &4737CD39, &4754892A, &4771398C EQUD &478DDE6E, &47AA77DC, &47C705E6, &47E38898 EQUD &47FFFFFF, &481C6C2A, &4838CD26, &485522FF EQUD &48716DC3, &488DAD7E, &48A9E23E, &48C60C10 EQUD &48E22AFF, &48FE3F19, &491A486B, &493646FF EQUD &49523AE4, &496E2424, &498A02CC, &49A5D6E9 EQUD &49C1A086, &49DD5FAE, &49F9146E, &4A14BED2 EQUD &4A305EE4, &4A4BF4B1, &4A678044, &4A8301A8 EQUD &4A9E78E8, &4AB9E610, &4AD5492B, &4AF0A243 EQUD &4B0BF165, &4B273699, &4B4271ED, &4B5DA369 EQUD &4B78CB19, &4B93E907, &4BAEFD3E, &4BCA07C8 EQUD &4BE508B0, &4BFFFFFF, &4C1AEDC1, &4C35D1FE EQUD &4C50ACC2, &4C6B7E16, &4C864604, &4CA10496 EQUD &4CBBB9D5, &4CD665CC, &4CF10884, &4D0BA207 EQUD &4D26325E, &4D40B993, &4D5B37AE, &4D75ACBB EQUD &4D9018C0, &4DAA7BC9, &4DC4D5DE, &4DDF2708 EQUD &4DF96F4F, &4E13AEBF, &4E2DE55E, &4E481336 EQUD &4E62384F, &4E7C54B3, &4E96686B, &4EB0737E EQUD &4ECA75F5, &4EE46FD9, &4EFE6132, &4F184A09 EQUD &4F322A66, &4F4C0251, &4F65D1D3, &4F7F98F4 EQUD &4F9957BB, &4FB30E32, &4FCCBC5F, &4FE6624C EQUD &4FFFFFFF, &50199582, &503322DB, &504CA812 EQUD &50662530, &507F9A3B, &5099073D, &50B26C3B EQUD &50CBC93E, &50E51E4D, &50FE6B70, &5117B0AE EQUD &5130EE0F, &514A2399, &51635155, &517C7748 EQUD &5195957C, &51AEABF5, &51C7BABD, &51E0C1DA EQUD &51F9C152, &5212B92D, &522BA972, &52449228 EQUD &525D7355, &52764D01, &528F1F31, &52A7E9EE EQUD &52C0AD3D, &52D96926, &52F21DAE, &530ACADD EQUD &532370B8, &533C0F47, &5354A691, &536D369A EQUD &5385BF6A, &539E4108, &53B6BB79, &53CF2EC4 EQUD &53E79AEE, &53FFFFFF, &54185DFD, &5430B4EC EQUD &544904D5, &54614DBC, &54798FA8, &5491CA9F EQUD &54A9FEA7, &54C22BC5, &54DA5200, &54F2715D EQUD &550A89E3, &55229B96, &553AA67E, &5552AA9F EQUD &556AA800, &55829EA6, &559A8E96, &55B277D7 EQUD &55CA5A6D, &55E23660, &55FA0BB3, &5611DA6C EQUD &5629A292, &56416429, &56591F37, &5670D3C1 EQUD &568881CC, &56A0295F, &56B7CA7E, &56CF652E EQUD &56E6F975, &56FE8757, &57160EDB, &572D9005 EQUD &57450ADB, &575C7F61, &5773ED9C, &578B5592 EQUD &57A2B748, &57BA12C3, &57D16807, &57E8B719 EQUD &57FFFFFF, &581742BE, &582E7F59, &5845B5D7 EQUD &585CE63C, &5874108C, &588B34CD, &58A25303 EQUD &58B96B33, &58D07D62, &58E78994, &58FE8FCE EQUD &59159015, &592C8A6D, &59437EDA, &595A6D62 EQUD &59715609, &598838D3, &599F15C6, &59B5ECE4 EQUD &59CCBE33, &59E389B8, &59FA4F76, &5A110F72 EQUD &5A27C9B1, &5A3E7E36, &5A552D06, &5A6BD626 EQUD &5A827999, &5A991764, &5AAFAF8B, &5AC64213 EQUD &5ADCCEFF, &5AF35653, &5B09D814, &5B205447 EQUD &5B36CAEE, &5B4D3C0E, &5B63A7AC, &5B7A0DCB EQUD &5B906E6F, &5BA6C99D, &5BBD1F57, &5BD36FA4 EQUD &5BE9BA85, &5BFFFFFF, &5C164017, &5C2C7ACF EQUD &5C42B02D, &5C58E033, &5C6F0AE6, &5C853049 EQUD &5C9B5060, &5CB16B2F, &5CC780BB, &5CDD9105 EQUD &5CF39C13, &5D09A1E8, &5D1FA288, &5D359DF6 EQUD &5D4B9436, &5D61854C, &5D77713B, &5D8D5807 EQUD &5DA339B4, &5DB91645, &5DCEEDBE, &5DE4C022 EQUD &5DFA8D75, &5E1055BA, &5E2618F5, &5E3BD72A EQUD &5E51905B, &5E67448D, &5E7CF3C2, &5E929DFE EQUD &5EA84346, &5EBDE39B, &5ED37F01, &5EE9157C EQUD &5EFEA710, &5F1433BE, &5F29BB8C, &5F3F3E7B EQUD &5F54BC90, &5F6A35CE, &5F7FAA37, &5F9519D0 EQUD &5FAA849B, &5FBFEA9C, &5FD54BD5, &5FEAA84B EQUD &5FFFFFFF, &601552F6, &602AA132, &603FEAB8 EQUD &60552F89, &606A6FA9, &607FAB1A, &6094E1E1 EQUD &60AA1401, &60BF417B, &60D46A54, &60E98E8E EQUD &60FEAE2C, &6113C932, &6128DFA2, &613DF17F EQUD &6152FECC, &6168078D, &617D0BC4, &61920B74 EQUD &61A706A0, &61BBFD4B, &61D0EF78, &61E5DD2A EQUD &61FAC663, &620FAB27, &62248B78, &62396759 EQUD &624E3ECD, &626311D7, &6277E079, &628CAAB7 EQUD &62A17093, &62B6320F, &62CAEF30, &62DFA7F7 EQUD &62F45C67, &63090C83, &631DB84D, &63325FC9 EQUD &634702F9, &635BA1DF, &63703C7F, &6384D2DA EQUD &639964F5, &63ADF2D0, &63C27C6F, &63D701D5 EQUD &63EB8304, &63FFFFFF, &641478C8, &6428ED61 EQUD &643D5DCE, &6451CA11, &6466322D, &647A9623 EQUD &648EF5F7, &64A351AB, &64B7A942, &64CBFCBE EQUD &64E04C21, &64F4976E, &6508DEA8, &651D21D0 EQUD &653160EA, &65459BF8, &6559D2FC, &656E05F8 EQUD &658234F0, &65965FE5, &65AA86DA, &65BEA9D0 EQUD &65D2C8CC, &65E6E3CE, &65FAFADA, &660F0DF1 EQUD &66231D17, &6637284C, &664B2F94, &665F32F1 EQUD &66733265, &66872DF3, &669B259C, &66AF1963 EQUD &66C3094B, &66D6F555, &66EADD84, &66FEC1DA EQUD &6712A259, &67267F04, &673A57DC, &674E2CE4 EQUD &6761FE1E, &6775CB8D, &67899532, &679D5B0F EQUD &67B11D27, &67C4DB7C, &67D89611, &67EC4CE6 EQUD &67FFFFFF, &6813AF5D, &68275B03, &683B02F2 EQUD &684EA72D, &686247B6, &6875E48F, &68897DBA EQUD &689D1339, &68B0A50E, &68C4333C, &68D7BDC3 EQUD &68EB44A7, &68FEC7E9, &6912478C, &6925C391 EQUD &69393BFA, &694CB0CA, &69602202, &69738FA4 EQUD &6986F9B3, &699A6030, &69ADC31D, &69C1227C EQUD &69D47E50, &69E7D69A, &69FB2B5B, &6A0E7C97 EQUD &6A21CA4F, &6A351484, &6A485B39, &6A5B9E70 EQUD &6A6EDE2B, &6A821A6A, &6A955332, &6AA88882 EQUD &6ABBBA5D, &6ACEE8C5, &6AE213BD, &6AF53B44 EQUD &6B085F5E, &6B1B800D, &6B2E9D51, &6B41B72E EQUD &6B54CDA4, &6B67E0B6, &6B7AF066, &6B8DFCB4 EQUD &6BA105A4, &6BB40B36, &6BC70D6D, &6BDA0C4A EQUD &6BED07D0, &6BFFFFFF, &6C12F4DA, &6C25E662 EQUD &6C38D499, &6C4BBF81, &6C5EA71C, &6C718B6B EQUD &6C846C71, &6C974A2D, &6CAA24A4, &6CBCFBD5 EQUD &6CCFCFC4, &6CE2A071, &6CF56DDE, &6D08380D EQUD &6D1AFF00, &6D2DC2B8, &6D408337, &6D53407F EQUD &6D65FA91, &6D78B16F, &6D8B651A, &6D9E1594 EQUD &6DB0C2E0, &6DC36CFD, &6DD613EF, &6DE8B7B7 EQUD &6DFB5855, &6E0DF5CD, &6E20901F, &6E33274D EQUD &6E45BB59, &6E584C44, &6E6ADA10, &6E7D64BE EQUD &6E8FEC50, &6EA270C8, &6EB4F227, &6EC7706E EQUD &6ED9EBA0, &6EEC63BE, &6EFED8C8, &6F114AC2 EQUD &6F23B9AB, &6F362587, &6F488E56, &6F5AF41A EQUD &6F6D56D4, &6F7FB686, &6F921332, &6FA46CD8 EQUD &6FB6C37B, &6FC9171B, &6FDB67BB, &6FEDB55C EQUD &6FFFFFFF, &701247A5, &70248C51, &7036CE04 EQUD &70490CBE, &705B4883, &706D8152, &707FB72D EQUD &7091EA17, &70A41A0F, &70B64719, &70C87134 EQUD &70DA9863, &70ECBCA7, &70FEDE02, &7110FC74 EQUD &712317FF, &713530A5, &71474667, &71595946 EQUD &716B6944, &717D7661, &718F80A1, &71A18803 EQUD &71B38C89, &71C58E35, &71D78D08, &71E98902 EQUD &71FB8227, &720D7876, &721F6BF2, &72315C9B EQUD &72434A73, &7255357C, &72671DB6, &72790323 EQUD &728AE5C4, &729CC59A, &72AEA2A8, &72C07CED EQUD &72D2546C, &72E42926, &72F5FB1B, &7307CA4E EQUD &731996C0, &732B6071, &733D2763, &734EEB98 EQUD &7360AD10, &73726BCE, &738427D1, &7395E11C EQUD &73A797AF, &73B94B8D, &73CAFCB6, &73DCAB2B EQUD &73EE56ED, &73FFFFFF, &7411A660, &74234A13 EQUD &7434EB19, &74468972, &74582520, &7469BE25 EQUD &747B5481, &748CE835, &749E7943, &74B007AC EQUD &74C19372, &74D31C95, &74E4A316, &74F626F7 EQUD &7507A839, &751926DD, &752AA2E5, &753C1C50 EQUD &754D9322, &755F075A, &757078FA, &7581E804 EQUD &75935477, &75A4BE56, &75B625A1, &75C78A5A EQUD &75D8EC82, &75EA4C1A, &75FBA923, &760D039E EQUD &761E5B8C, &762FB0EF, &764103C8, &76525417 EQUD &7663A1DE, &7674ED1D, &768635D7, &76977C0C EQUD &76A8BFBD, &76BA00EC, &76CB3F99, &76DC7BC5 EQUD &76EDB572, &76FEECA1, &77102152, &77215388 EQUD &77328342, &7743B082, &7754DB49, &77660399 EQUD &77772971, &77884CD4, &77996DC2, &77AA8C3D EQUD &77BBA844, &77CCC1DB, &77DDD900, &77EEEDB7 EQUD &77FFFFFF, &78110FD9, &78221D48, &7833284A EQUD &784430E3, &78553712, &78663AD9, &78773C39 EQUD &78883B33, &789937C8, &78AA31F8, &78BB29C5 EQUD &78CC1F30, &78DD123A, &78EE02E4, &78FEF12E EQUD &790FDD1B, &7920C6AA, &7931ADDD, &794292B5 EQUD &79537532, &79645557, &79753323, &79860E98 EQUD &7996E7B6, &79A7BE80, &79B892F5, &79C96516 EQUD &79DA34E5, &79EB0263, &79FBCD90, &7A0C966D EQUD &7A1D5CFC, &7A2E213E, &7A3EE332, &7A4FA2DB EQUD &7A606039, &7A711B4D, &7A81D419, &7A928A9C EQUD &7AA33ED8, &7AB3F0CE, &7AC4A07F, &7AD54DEB EQUD &7AE5F914, &7AF6A1FB, &7B0748A0, &7B17ED05 EQUD &7B288F29, &7B392F0F, &7B49CCB8, &7B5A6823 EQUD &7B6B0152, &7B7B9846, &7B8C2D00, &7B9CBF80 EQUD &7BAD4FC8, &7BBDDDD8, &7BCE69B1, &7BDEF355 EQUD &7BEF7AC4, &7BFFFFFF, &7C108306, &7C2103DC EQUD &7C318280, &7C41FEF3, &7C527937, &7C62F14C EQUD &7C736732, &7C83DAEC, &7C944C7A, &7CA4BBDC EQUD &7CB52914, &7CC59423, &7CD5FD08, &7CE663C6 EQUD &7CF6C85C, &7D072ACC, &7D178B17, &7D27E93D EQUD &7D384540, &7D489F20, &7D58F6DD, &7D694C7A EQUD &7D799FF6, &7D89F153, &7D9A4090, &7DAA8DB0 EQUD &7DBAD8B3, &7DCB219A, &7DDB6865, &7DEBAD16 EQUD &7DFBEFAD, &7E0C302B, &7E1C6E91, &7E2CAADF EQUD &7E3CE517, &7E4D1D39, &7E5D5346, &7E6D873F EQUD &7E7DB925, &7E8DE8F8, &7E9E16BA, &7EAE426A EQUD &7EBE6C0A, &7ECE939B, &7EDEB91E, &7EEEDC92 EQUD &7EFEFDFA, &7F0F1D55, &7F1F3AA5, &7F2F55EA EQUD &7F3F6F25, &7F4F8657, &7F5F9B81, &7F6FAEA3 EQUD &7F7FBFBE, &7F8FCED4, &7F9FDBE4, &7FAFE6EF EQUD &7FBFEFF7, &7FCFF6FB, &7FDFFBFE, &7FEFFEFF
Name: divisionTable [Show more] Type: Variable Category: Maths (Arithmetic) Summary: Division lookup tables
Context: See this variable on its own page References: This variable is used as follows: * divisionTableAddr uses divisionTable

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.
.divisionTable EQUD &FFFFFFFF, &00000000, &00000000, &00000000 \ n / 0 (n = 0 to 63) EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &00000000, &00000000, &00000000, &00000000 EQUD &FFFFFFFF, &00010000, &00008000, &00005555 \ n / 1 (n = 0 to 63) EQUD &00004000, &00003333, &00002AAA, &00002492 EQUD &00002000, &00001C71, &00001999, &00001745 EQUD &00001555, &000013B1, &00001249, &00001111 EQUD &00001000, &00000F0F, &00000E38, &00000D79 EQUD &00000CCC, &00000C30, &00000BA2, &00000B21 EQUD &00000AAA, &00000A3D, &000009D8, &0000097B EQUD &00000924, &000008D3, &00000888, &00000842 EQUD &00000800, &000007C1, &00000787, &00000750 EQUD &0000071C, &000006EB, &000006BC, &00000690 EQUD &00000666, &0000063E, &00000618, &000005F4 EQUD &000005D1, &000005B0, &00000590, &00000572 EQUD &00000555, &00000539, &0000051E, &00000505 EQUD &000004EC, &000004D4, &000004BD, &000004A7 EQUD &00000492, &0000047D, &00000469, &00000456 EQUD &00000444, &00000432, &00000421, &00000410 EQUD &FFFFFFFF, &00020000, &00010000, &0000AAAA \ n / 2 (n = 0 to 63) EQUD &00008000, &00006666, &00005555, &00004924 EQUD &00004000, &000038E3, &00003333, &00002E8B EQUD &00002AAA, &00002762, &00002492, &00002222 EQUD &00002000, &00001E1E, &00001C71, &00001AF2 EQUD &00001999, &00001861, &00001745, &00001642 EQUD &00001555, &0000147A, &000013B1, &000012F6 EQUD &00001249, &000011A7, &00001111, &00001084 EQUD &00001000, &00000F83, &00000F0F, &00000EA0 EQUD &00000E38, &00000DD6, &00000D79, &00000D20 EQUD &00000CCC, &00000C7C, &00000C30, &00000BE8 EQUD &00000BA2, &00000B60, &00000B21, &00000AE4 EQUD &00000AAA, &00000A72, &00000A3D, &00000A0A EQUD &000009D8, &000009A9, &0000097B, &0000094F EQUD &00000924, &000008FB, &000008D3, &000008AD EQUD &00000888, &00000864, &00000842, &00000820 EQUD &FFFFFFFF, &00030000, &00018000, &00010000 \ n / 3 (n = 0 to 63) EQUD &0000C000, &00009999, &00008000, &00006DB6 EQUD &00006000, &00005555, &00004CCC, &000045D1 EQUD &00004000, &00003B13, &000036DB, &00003333 EQUD &00003000, &00002D2D, &00002AAA, &0000286B EQUD &00002666, &00002492, &000022E8, &00002164 EQUD &00002000, &00001EB8, &00001D89, &00001C71 EQUD &00001B6D, &00001A7B, &00001999, &000018C6 EQUD &00001800, &00001745, &00001696, &000015F1 EQUD &00001555, &000014C1, &00001435, &000013B1 EQUD &00001333, &000012BB, &00001249, &000011DC EQUD &00001174, &00001111, &000010B2, &00001057 EQUD &00001000, &00000FAC, &00000F5C, &00000F0F EQUD &00000EC4, &00000E7D, &00000E38, &00000DF6 EQUD &00000DB6, &00000D79, &00000D3D, &00000D04 EQUD &00000CCC, &00000C97, &00000C63, &00000C30 EQUD &FFFFFFFF, &00040000, &00020000, &00015555 \ n / 4 (n = 0 to 63) EQUD &00010000, &0000CCCC, &0000AAAA, &00009249 EQUD &00008000, &000071C7, &00006666, &00005D17 EQUD &00005555, &00004EC4, &00004924, &00004444 EQUD &00004000, &00003C3C, &000038E3, &000035E5 EQUD &00003333, &000030C3, &00002E8B, &00002C85 EQUD &00002AAA, &000028F5, &00002762, &000025ED EQUD &00002492, &0000234F, &00002222, &00002108 EQUD &00002000, &00001F07, &00001E1E, &00001D41 EQUD &00001C71, &00001BAC, &00001AF2, &00001A41 EQUD &00001999, &000018F9, &00001861, &000017D0 EQUD &00001745, &000016C1, &00001642, &000015C9 EQUD &00001555, &000014E5, &0000147A, &00001414 EQUD &000013B1, &00001352, &000012F6, &0000129E EQUD &00001249, &000011F7, &000011A7, &0000115B EQUD &00001111, &000010C9, &00001084, &00001041 EQUD &FFFFFFFF, &00050000, &00028000, &0001AAAA \ n / 5 (n = 0 to 63) EQUD &00014000, &00010000, &0000D555, &0000B6DB EQUD &0000A000, &00008E38, &00008000, &0000745D EQUD &00006AAA, &00006276, &00005B6D, &00005555 EQUD &00005000, &00004B4B, &0000471C, &0000435E EQUD &00004000, &00003CF3, &00003A2E, &000037A6 EQUD &00003555, &00003333, &0000313B, &00002F68 EQUD &00002DB6, &00002C23, &00002AAA, &0000294A EQUD &00002800, &000026C9, &000025A5, &00002492 EQUD &0000238E, &00002298, &000021AF, &000020D2 EQUD &00002000, &00001F38, &00001E79, &00001DC4 EQUD &00001D17, &00001C71, &00001BD3, &00001B3B EQUD &00001AAA, &00001A1F, &00001999, &00001919 EQUD &0000189D, &00001826, &000017B4, &00001745 EQUD &000016DB, &00001674, &00001611, &000015B1 EQUD &00001555, &000014FB, &000014A5, &00001451 EQUD &FFFFFFFF, &00060000, &00030000, &00020000 \ n / 6 (n = 0 to 63) EQUD &00018000, &00013333, &00010000, &0000DB6D EQUD &0000C000, &0000AAAA, &00009999, &00008BA2 EQUD &00008000, &00007627, &00006DB6, &00006666 EQUD &00006000, &00005A5A, &00005555, &000050D7 EQUD &00004CCC, &00004924, &000045D1, &000042C8 EQUD &00004000, &00003D70, &00003B13, &000038E3 EQUD &000036DB, &000034F7, &00003333, &0000318C EQUD &00003000, &00002E8B, &00002D2D, &00002BE2 EQUD &00002AAA, &00002983, &0000286B, &00002762 EQUD &00002666, &00002576, &00002492, &000023B8 EQUD &000022E8, &00002222, &00002164, &000020AE EQUD &00002000, &00001F58, &00001EB8, &00001E1E EQUD &00001D89, &00001CFB, &00001C71, &00001BED EQUD &00001B6D, &00001AF2, &00001A7B, &00001A08 EQUD &00001999, &0000192E, &000018C6, &00001861 EQUD &FFFFFFFF, &00070000, &00038000, &00025555 \ n / 7 (n = 0 to 63) EQUD &0001C000, &00016666, &00012AAA, &00010000 EQUD &0000E000, &0000C71C, &0000B333, &0000A2E8 EQUD &00009555, &000089D8, &00008000, &00007777 EQUD &00007000, &00006969, &0000638E, &00005E50 EQUD &00005999, &00005555, &00005174, &00004DE9 EQUD &00004AAA, &000047AE, &000044EC, &0000425E EQUD &00004000, &00003DCB, &00003BBB, &000039CE EQUD &00003800, &0000364D, &000034B4, &00003333 EQUD &000031C7, &0000306E, &00002F28, &00002DF2 EQUD &00002CCC, &00002BB5, &00002AAA, &000029AC EQUD &000028BA, &000027D2, &000026F4, &00002620 EQUD &00002555, &00002492, &000023D7, &00002323 EQUD &00002276, &000021CF, &0000212F, &00002094 EQUD &00002000, &00001F70, &00001EE5, &00001E5F EQUD &00001DDD, &00001D60, &00001CE7, &00001C71 EQUD &FFFFFFFF, &00080000, &00040000, &0002AAAA \ n / 8 (n = 0 to 63) EQUD &00020000, &00019999, &00015555, &00012492 EQUD &00010000, &0000E38E, &0000CCCC, &0000BA2E EQUD &0000AAAA, &00009D89, &00009249, &00008888 EQUD &00008000, &00007878, &000071C7, &00006BCA EQUD &00006666, &00006186, &00005D17, &0000590B EQUD &00005555, &000051EB, &00004EC4, &00004BDA EQUD &00004924, &0000469E, &00004444, &00004210 EQUD &00004000, &00003E0F, &00003C3C, &00003A83 EQUD &000038E3, &00003759, &000035E5, &00003483 EQUD &00003333, &000031F3, &000030C3, &00002FA0 EQUD &00002E8B, &00002D82, &00002C85, &00002B93 EQUD &00002AAA, &000029CB, &000028F5, &00002828 EQUD &00002762, &000026A4, &000025ED, &0000253C EQUD &00002492, &000023EE, &0000234F, &000022B6 EQUD &00002222, &00002192, &00002108, &00002082 EQUD &FFFFFFFF, &00090000, &00048000, &00030000 \ n / 9 (n = 0 to 63) EQUD &00024000, &0001CCCC, &00018000, &00014924 EQUD &00012000, &00010000, &0000E666, &0000D174 EQUD &0000C000, &0000B13B, &0000A492, &00009999 EQUD &00009000, &00008787, &00008000, &00007943 EQUD &00007333, &00006DB6, &000068BA, &0000642C EQUD &00006000, &00005C28, &0000589D, &00005555 EQUD &00005249, &00004F72, &00004CCC, &00004A52 EQUD &00004800, &000045D1, &000043C3, &000041D4 EQUD &00004000, &00003E45, &00003CA1, &00003B13 EQUD &00003999, &00003831, &000036DB, &00003594 EQUD &0000345D, &00003333, &00003216, &00003105 EQUD &00003000, &00002F05, &00002E14, &00002D2D EQUD &00002C4E, &00002B78, &00002AAA, &000029E4 EQUD &00002924, &0000286B, &000027B9, &0000270D EQUD &00002666, &000025C5, &00002529, &00002492 EQUD &FFFFFFFF, &000A0000, &00050000, &00035555 \ n / 10 (n = 0 to 63) EQUD &00028000, &00020000, &0001AAAA, &00016DB6 EQUD &00014000, &00011C71, &00010000, &0000E8BA EQUD &0000D555, &0000C4EC, &0000B6DB, &0000AAAA EQUD &0000A000, &00009696, &00008E38, &000086BC EQUD &00008000, &000079E7, &0000745D, &00006F4D EQUD &00006AAA, &00006666, &00006276, &00005ED0 EQUD &00005B6D, &00005846, &00005555, &00005294 EQUD &00005000, &00004D93, &00004B4B, &00004924 EQUD &0000471C, &00004530, &0000435E, &000041A4 EQUD &00004000, &00003E70, &00003CF3, &00003B88 EQUD &00003A2E, &000038E3, &000037A6, &00003677 EQUD &00003555, &0000343E, &00003333, &00003232 EQUD &0000313B, &0000304D, &00002F68, &00002E8B EQUD &00002DB6, &00002CE9, &00002C23, &00002B63 EQUD &00002AAA, &000029F7, &0000294A, &000028A2 EQUD &FFFFFFFF, &000B0000, &00058000, &0003AAAA \ n / 11 (n = 0 to 63) EQUD &0002C000, &00023333, &0001D555, &00019249 EQUD &00016000, &000138E3, &00011999, &00010000 EQUD &0000EAAA, &0000D89D, &0000C924, &0000BBBB EQUD &0000B000, &0000A5A5, &00009C71, &00009435 EQUD &00008CCC, &00008618, &00008000, &00007A6F EQUD &00007555, &000070A3, &00006C4E, &0000684B EQUD &00006492, &0000611A, &00005DDD, &00005AD6 EQUD &00005800, &00005555, &000052D2, &00005075 EQUD &00004E38, &00004C1B, &00004A1A, &00004834 EQUD &00004666, &000044AE, &0000430C, &0000417D EQUD &00004000, &00003E93, &00003D37, &00003BEA EQUD &00003AAA, &00003978, &00003851, &00003737 EQUD &00003627, &00003521, &00003425, &00003333 EQUD &00003249, &00003167, &0000308D, &00002FBA EQUD &00002EEE, &00002E29, &00002D6B, &00002CB2 EQUD &FFFFFFFF, &000C0000, &00060000, &00040000 \ n / 12 (n = 0 to 63) EQUD &00030000, &00026666, &00020000, &0001B6DB EQUD &00018000, &00015555, &00013333, &00011745 EQUD &00010000, &0000EC4E, &0000DB6D, &0000CCCC EQUD &0000C000, &0000B4B4, &0000AAAA, &0000A1AF EQUD &00009999, &00009249, &00008BA2, &00008590 EQUD &00008000, &00007AE1, &00007627, &000071C7 EQUD &00006DB6, &000069EE, &00006666, &00006318 EQUD &00006000, &00005D17, &00005A5A, &000057C5 EQUD &00005555, &00005306, &000050D7, &00004EC4 EQUD &00004CCC, &00004AED, &00004924, &00004771 EQUD &000045D1, &00004444, &000042C8, &0000415C EQUD &00004000, &00003EB1, &00003D70, &00003C3C EQUD &00003B13, &000039F6, &000038E3, &000037DA EQUD &000036DB, &000035E5, &000034F7, &00003411 EQUD &00003333, &0000325C, &0000318C, &000030C3 EQUD &FFFFFFFF, &000D0000, &00068000, &00045555 \ n / 13 (n = 0 to 63) EQUD &00034000, &00029999, &00022AAA, &0001DB6D EQUD &0001A000, &000171C7, &00014CCC, &00012E8B EQUD &00011555, &00010000, &0000EDB6, &0000DDDD EQUD &0000D000, &0000C3C3, &0000B8E3, &0000AF28 EQUD &0000A666, &00009E79, &00009745, &000090B2 EQUD &00008AAA, &0000851E, &00008000, &00007B42 EQUD &000076DB, &000072C2, &00006EEE, &00006B5A EQUD &00006800, &000064D9, &000061E1, &00005F15 EQUD &00005C71, &000059F2, &00005794, &00005555 EQUD &00005333, &0000512B, &00004F3C, &00004D65 EQUD &00004BA2, &000049F4, &00004859, &000046CE EQUD &00004555, &000043EB, &0000428F, &00004141 EQUD &00004000, &00003ECA, &00003DA1, &00003C82 EQUD &00003B6D, &00003A62, &00003961, &00003868 EQUD &00003777, &0000368E, &000035AD, &000034D3 EQUD &FFFFFFFF, &000E0000, &00070000, &0004AAAA \ n / 14 (n = 0 to 63) EQUD &00038000, &0002CCCC, &00025555, &00020000 EQUD &0001C000, &00018E38, &00016666, &000145D1 EQUD &00012AAA, &000113B1, &00010000, &0000EEEE EQUD &0000E000, &0000D2D2, &0000C71C, &0000BCA1 EQUD &0000B333, &0000AAAA, &0000A2E8, &00009BD3 EQUD &00009555, &00008F5C, &000089D8, &000084BD EQUD &00008000, &00007B96, &00007777, &0000739C EQUD &00007000, &00006C9B, &00006969, &00006666 EQUD &0000638E, &000060DD, &00005E50, &00005BE5 EQUD &00005999, &0000576A, &00005555, &00005359 EQUD &00005174, &00004FA4, &00004DE9, &00004C41 EQUD &00004AAA, &00004924, &000047AE, &00004646 EQUD &000044EC, &0000439F, &0000425E, &00004129 EQUD &00004000, &00003EE0, &00003DCB, &00003CBE EQUD &00003BBB, &00003AC1, &000039CE, &000038E3 EQUD &FFFFFFFF, &000F0000, &00078000, &00050000 \ n / 15 (n = 0 to 63) EQUD &0003C000, &00030000, &00028000, &00022492 EQUD &0001E000, &0001AAAA, &00018000, &00015D17 EQUD &00014000, &00012762, &00011249, &00010000 EQUD &0000F000, &0000E1E1, &0000D555, &0000CA1A EQUD &0000C000, &0000B6DB, &0000AE8B, &0000A6F4 EQUD &0000A000, &00009999, &000093B1, &00008E38 EQUD &00008924, &00008469, &00008000, &00007BDE EQUD &00007800, &0000745D, &000070F0, &00006DB6 EQUD &00006AAA, &000067C8, &0000650D, &00006276 EQUD &00006000, &00005DA8, &00005B6D, &0000594D EQUD &00005745, &00005555, &0000537A, &000051B3 EQUD &00005000, &00004E5E, &00004CCC, &00004B4B EQUD &000049D8, &00004873, &0000471C, &000045D1 EQUD &00004492, &0000435E, &00004234, &00004115 EQUD &00004000, &00003EF3, &00003DEF, &00003CF3 EQUD &FFFFFFFF, &00100000, &00080000, &00055555 \ n / 16 (n = 0 to 63) EQUD &00040000, &00033333, &0002AAAA, &00024924 EQUD &00020000, &0001C71C, &00019999, &0001745D EQUD &00015555, &00013B13, &00012492, &00011111 EQUD &00010000, &0000F0F0, &0000E38E, &0000D794 EQUD &0000CCCC, &0000C30C, &0000BA2E, &0000B216 EQUD &0000AAAA, &0000A3D7, &00009D89, &000097B4 EQUD &00009249, &00008D3D, &00008888, &00008421 EQUD &00008000, &00007C1F, &00007878, &00007507 EQUD &000071C7, &00006EB3, &00006BCA, &00006906 EQUD &00006666, &000063E7, &00006186, &00005F41 EQUD &00005D17, &00005B05, &0000590B, &00005726 EQUD &00005555, &00005397, &000051EB, &00005050 EQUD &00004EC4, &00004D48, &00004BDA, &00004A79 EQUD &00004924, &000047DC, &0000469E, &0000456C EQUD &00004444, &00004325, &00004210, &00004104 EQUD &FFFFFFFF, &00110000, &00088000, &0005AAAA \ n / 17 (n = 0 to 63) EQUD &00044000, &00036666, &0002D555, &00026DB6 EQUD &00022000, &0001E38E, &0001B333, &00018BA2 EQUD &00016AAA, &00014EC4, &000136DB, &00012222 EQUD &00011000, &00010000, &0000F1C7, &0000E50D EQUD &0000D999, &0000CF3C, &0000C5D1, &0000BD37 EQUD &0000B555, &0000AE14, &0000A762, &0000A12F EQUD &00009B6D, &00009611, &00009111, &00008C63 EQUD &00008800, &000083E0, &00008000, &00007C57 EQUD &000078E3, &0000759F, &00007286, &00006F96 EQUD &00006CCC, &00006A25, &0000679E, &00006535 EQUD &000062E8, &000060B6, &00005E9B, &00005C98 EQUD &00005AAA, &000058D0, &0000570A, &00005555 EQUD &000053B1, &0000521C, &00005097, &00004F20 EQUD &00004DB6, &00004C59, &00004B08, &000049C3 EQUD &00004888, &00004758, &00004631, &00004514 EQUD &FFFFFFFF, &00120000, &00090000, &00060000 \ n / 18 (n = 0 to 63) EQUD &00048000, &00039999, &00030000, &00029249 EQUD &00024000, &00020000, &0001CCCC, &0001A2E8 EQUD &00018000, &00016276, &00014924, &00013333 EQUD &00012000, &00010F0F, &00010000, &0000F286 EQUD &0000E666, &0000DB6D, &0000D174, &0000C859 EQUD &0000C000, &0000B851, &0000B13B, &0000AAAA EQUD &0000A492, &00009EE5, &00009999, &000094A5 EQUD &00009000, &00008BA2, &00008787, &000083A8 EQUD &00008000, &00007C8A, &00007943, &00007627 EQUD &00007333, &00007063, &00006DB6, &00006B29 EQUD &000068BA, &00006666, &0000642C, &0000620A EQUD &00006000, &00005E0A, &00005C28, &00005A5A EQUD &0000589D, &000056F1, &00005555, &000053C8 EQUD &00005249, &000050D7, &00004F72, &00004E1A EQUD &00004CCC, &00004B8A, &00004A52, &00004924 EQUD &FFFFFFFF, &00130000, &00098000, &00065555 \ n / 19 (n = 0 to 63) EQUD &0004C000, &0003CCCC, &00032AAA, &0002B6DB EQUD &00026000, &00021C71, &0001E666, &0001BA2E EQUD &00019555, &00017627, &00015B6D, &00014444 EQUD &00013000, &00011E1E, &00010E38, &00010000 EQUD &0000F333, &0000E79E, &0000DD17, &0000D37A EQUD &0000CAAA, &0000C28F, &0000BB13, &0000B425 EQUD &0000ADB6, &0000A7B9, &0000A222, &00009CE7 EQUD &00009800, &00009364, &00008F0F, &00008AF8 EQUD &0000871C, &00008375, &00008000, &00007CB7 EQUD &00007999, &000076A2, &000073CF, &0000711D EQUD &00006E8B, &00006C16, &000069BD, &0000677D EQUD &00006555, &00006343, &00006147, &00005F5F EQUD &00005D89, &00005BC6, &00005A12, &0000586F EQUD &000056DB, &00005555, &000053DC, &00005270 EQUD &00005111, &00004FBC, &00004E73, &00004D34 EQUD &FFFFFFFF, &00140000, &000A0000, &0006AAAA \ n / 20 (n = 0 to 63) EQUD &00050000, &00040000, &00035555, &0002DB6D EQUD &00028000, &000238E3, &00020000, &0001D174 EQUD &0001AAAA, &000189D8, &00016DB6, &00015555 EQUD &00014000, &00012D2D, &00011C71, &00010D79 EQUD &00010000, &0000F3CF, &0000E8BA, &0000DE9B EQUD &0000D555, &0000CCCC, &0000C4EC, &0000BDA1 EQUD &0000B6DB, &0000B08D, &0000AAAA, &0000A529 EQUD &0000A000, &00009B26, &00009696, &00009249 EQUD &00008E38, &00008A60, &000086BC, &00008348 EQUD &00008000, &00007CE0, &000079E7, &00007711 EQUD &0000745D, &000071C7, &00006F4D, &00006CEF EQUD &00006AAA, &0000687D, &00006666, &00006464 EQUD &00006276, &0000609A, &00005ED0, &00005D17 EQUD &00005B6D, &000059D3, &00005846, &000056C7 EQUD &00005555, &000053EF, &00005294, &00005145 EQUD &FFFFFFFF, &00150000, &000A8000, &00070000 \ n / 21 (n = 0 to 63) EQUD &00054000, &00043333, &00038000, &00030000 EQUD &0002A000, &00025555, &00021999, &0001E8BA EQUD &0001C000, &00019D89, &00018000, &00016666 EQUD &00015000, &00013C3C, &00012AAA, &00011AF2 EQUD &00010CCC, &00010000, &0000F45D, &0000E9BD EQUD &0000E000, &0000D70A, &0000CEC4, &0000C71C EQUD &0000C000, &0000B961, &0000B333, &0000AD6B EQUD &0000A800, &0000A2E8, &00009E1E, &00009999 EQUD &00009555, &0000914C, &00008D79, &000089D8 EQUD &00008666, &0000831F, &00008000, &00007D05 EQUD &00007A2E, &00007777, &000074DE, &00007262 EQUD &00007000, &00006DB6, &00006B85, &00006969 EQUD &00006762, &0000656F, &0000638E, &000061BE EQUD &00006000, &00005E50, &00005CB0, &00005B1E EQUD &00005999, &00005821, &000056B5, &00005555 EQUD &FFFFFFFF, &00160000, &000B0000, &00075555 \ n / 22 (n = 0 to 63) EQUD &00058000, &00046666, &0003AAAA, &00032492 EQUD &0002C000, &000271C7, &00023333, &00020000 EQUD &0001D555, &0001B13B, &00019249, &00017777 EQUD &00016000, &00014B4B, &000138E3, &0001286B EQUD &00011999, &00010C30, &00010000, &0000F4DE EQUD &0000EAAA, &0000E147, &0000D89D, &0000D097 EQUD &0000C924, &0000C234, &0000BBBB, &0000B5AD EQUD &0000B000, &0000AAAA, &0000A5A5, &0000A0EA EQUD &00009C71, &00009837, &00009435, &00009069 EQUD &00008CCC, &0000895D, &00008618, &000082FA EQUD &00008000, &00007D27, &00007A6F, &000077D4 EQUD &00007555, &000072F0, &000070A3, &00006E6E EQUD &00006C4E, &00006A43, &0000684B, &00006666 EQUD &00006492, &000062CE, &0000611A, &00005F75 EQUD &00005DDD, &00005C53, &00005AD6, &00005965 EQUD &FFFFFFFF, &00170000, &000B8000, &0007AAAA \ n / 23 (n = 0 to 63) EQUD &0005C000, &00049999, &0003D555, &00034924 EQUD &0002E000, &00028E38, &00024CCC, &00021745 EQUD &0001EAAA, &0001C4EC, &0001A492, &00018888 EQUD &00017000, &00015A5A, &0001471C, &000135E5 EQUD &00012666, &00011861, &00010BA2, &00010000 EQUD &0000F555, &0000EB85, &0000E276, &0000DA12 EQUD &0000D249, &0000CB08, &0000C444, &0000BDEF EQUD &0000B800, &0000B26C, &0000AD2D, &0000A83A EQUD &0000A38E, &00009F22, &00009AF2, &000096F9 EQUD &00009333, &00008F9C, &00008C30, &000088EE EQUD &000085D1, &000082D8, &00008000, &00007D46 EQUD &00007AAA, &00007829, &000075C2, &00007373 EQUD &0000713B, &00006F18, &00006D09, &00006B0D EQUD &00006924, &0000674C, &00006584, &000063CB EQUD &00006222, &00006086, &00005EF7, &00005D75 EQUD &FFFFFFFF, &00180000, &000C0000, &00080000 \ n / 24 (n = 0 to 63) EQUD &00060000, &0004CCCC, &00040000, &00036DB6 EQUD &00030000, &0002AAAA, &00026666, &00022E8B EQUD &00020000, &0001D89D, &0001B6DB, &00019999 EQUD &00018000, &00016969, &00015555, &0001435E EQUD &00013333, &00012492, &00011745, &00010B21 EQUD &00010000, &0000F5C2, &0000EC4E, &0000E38E EQUD &0000DB6D, &0000D3DC, &0000CCCC, &0000C631 EQUD &0000C000, &0000BA2E, &0000B4B4, &0000AF8A EQUD &0000AAAA, &0000A60D, &0000A1AF, &00009D89 EQUD &00009999, &000095DA, &00009249, &00008EE2 EQUD &00008BA2, &00008888, &00008590, &000082B9 EQUD &00008000, &00007D63, &00007AE1, &00007878 EQUD &00007627, &000073EC, &000071C7, &00006FB5 EQUD &00006DB6, &00006BCA, &000069EE, &00006822 EQUD &00006666, &000064B8, &00006318, &00006186 EQUD &FFFFFFFF, &00190000, &000C8000, &00085555 \ n / 25 (n = 0 to 63) EQUD &00064000, &00050000, &00042AAA, &00039249 EQUD &00032000, &0002C71C, &00028000, &000245D1 EQUD &00021555, &0001EC4E, &0001C924, &0001AAAA EQUD &00019000, &00017878, &0001638E, &000150D7 EQUD &00014000, &000130C3, &000122E8, &00011642 EQUD &00010AAA, &00010000, &0000F627, &0000ED09 EQUD &0000E492, &0000DCB0, &0000D555, &0000CE73 EQUD &0000C800, &0000C1F0, &0000BC3C, &0000B6DB EQUD &0000B1C7, &0000ACF9, &0000A86B, &0000A41A EQUD &0000A000, &00009C18, &00009861, &000094D6 EQUD &00009174, &00008E38, &00008B21, &0000882B EQUD &00008555, &0000829C, &00008000, &00007D7D EQUD &00007B13, &000078C1, &00007684, &0000745D EQUD &00007249, &00007047, &00006E58, &00006C79 EQUD &00006AAA, &000068EB, &00006739, &00006596 EQUD &FFFFFFFF, &001A0000, &000D0000, &0008AAAA \ n / 26 (n = 0 to 63) EQUD &00068000, &00053333, &00045555, &0003B6DB EQUD &00034000, &0002E38E, &00029999, &00025D17 EQUD &00022AAA, &00020000, &0001DB6D, &0001BBBB EQUD &0001A000, &00018787, &000171C7, &00015E50 EQUD &00014CCC, &00013CF3, &00012E8B, &00012164 EQUD &00011555, &00010A3D, &00010000, &0000F684 EQUD &0000EDB6, &0000E584, &0000DDDD, &0000D6B5 EQUD &0000D000, &0000C9B2, &0000C3C3, &0000BE2B EQUD &0000B8E3, &0000B3E4, &0000AF28, &0000AAAA EQUD &0000A666, &0000A257, &00009E79, &00009ACA EQUD &00009745, &000093E9, &000090B2, &00008D9D EQUD &00008AAA, &000087D6, &0000851E, &00008282 EQUD &00008000, &00007D95, &00007B42, &00007904 EQUD &000076DB, &000074C5, &000072C2, &000070D0 EQUD &00006EEE, &00006D1D, &00006B5A, &000069A6 EQUD &FFFFFFFF, &001B0000, &000D8000, &00090000 \ n / 27 (n = 0 to 63) EQUD &0006C000, &00056666, &00048000, &0003DB6D EQUD &00036000, &00030000, &0002B333, &0002745D EQUD &00024000, &000213B1, &0001EDB6, &0001CCCC EQUD &0001B000, &00019696, &00018000, &00016BCA EQUD &00015999, &00014924, &00013A2E, &00012C85 EQUD &00012000, &0001147A, &000109D8, &00010000 EQUD &0000F6DB, &0000EE58, &0000E666, &0000DEF7 EQUD &0000D800, &0000D174, &0000CB4B, &0000C57C EQUD &0000C000, &0000BACF, &0000B5E5, &0000B13B EQUD &0000ACCC, &0000A895, &0000A492, &0000A0BE EQUD &00009D17, &00009999, &00009642, &00009310 EQUD &00009000, &00008D0F, &00008A3D, &00008787 EQUD &000084EC, &0000826A, &00008000, &00007DAC EQUD &00007B6D, &00007943, &0000772C, &00007527 EQUD &00007333, &0000714F, &00006F7B, &00006DB6 EQUD &FFFFFFFF, &001C0000, &000E0000, &00095555 \ n / 28 (n = 0 to 63) EQUD &00070000, &00059999, &0004AAAA, &00040000 EQUD &00038000, &00031C71, &0002CCCC, &00028BA2 EQUD &00025555, &00022762, &00020000, &0001DDDD EQUD &0001C000, &0001A5A5, &00018E38, &00017943 EQUD &00016666, &00015555, &000145D1, &000137A6 EQUD &00012AAA, &00011EB8, &000113B1, &0001097B EQUD &00010000, &0000F72C, &0000EEEE, &0000E739 EQUD &0000E000, &0000D936, &0000D2D2, &0000CCCC EQUD &0000C71C, &0000C1BA, &0000BCA1, &0000B7CB EQUD &0000B333, &0000AED4, &0000AAAA, &0000A6B2 EQUD &0000A2E8, &00009F49, &00009BD3, &00009882 EQUD &00009555, &00009249, &00008F5C, &00008C8C EQUD &000089D8, &0000873E, &000084BD, &00008253 EQUD &00008000, &00007DC1, &00007B96, &0000797D EQUD &00007777, &00007582, &0000739C, &000071C7 EQUD &FFFFFFFF, &001D0000, &000E8000, &0009AAAA \ n / 29 (n = 0 to 63) EQUD &00074000, &0005CCCC, &0004D555, &00042492 EQUD &0003A000, &000338E3, &0002E666, &0002A2E8 EQUD &00026AAA, &00023B13, &00021249, &0001EEEE EQUD &0001D000, &0001B4B4, &00019C71, &000186BC EQUD &00017333, &00016186, &00015174, &000142C8 EQUD &00013555, &000128F5, &00011D89, &000112F6 EQUD &00010924, &00010000, &0000F777, &0000EF7B EQUD &0000E800, &0000E0F8, &0000DA5A, &0000D41D EQUD &0000CE38, &0000C8A6, &0000C35E, &0000BE5B EQUD &0000B999, &0000B512, &0000B0C3, &0000ACA6 EQUD &0000A8BA, &0000A4FA, &0000A164, &00009DF5 EQUD &00009AAA, &00009782, &0000947A, &00009191 EQUD &00008EC4, &00008C13, &0000897B, &000086FB EQUD &00008492, &0000823E, &00008000, &00007DD4 EQUD &00007BBB, &000079B4, &000077BD, &000075D7 EQUD &FFFFFFFF, &001E0000, &000F0000, &000A0000 \ n / 30 (n = 0 to 63) EQUD &00078000, &00060000, &00050000, &00044924 EQUD &0003C000, &00035555, &00030000, &0002BA2E EQUD &00028000, &00024EC4, &00022492, &00020000 EQUD &0001E000, &0001C3C3, &0001AAAA, &00019435 EQUD &00018000, &00016DB6, &00015D17, &00014DE9 EQUD &00014000, &00013333, &00012762, &00011C71 EQUD &00011249, &000108D3, &00010000, &0000F7BD EQUD &0000F000, &0000E8BA, &0000E1E1, &0000DB6D EQUD &0000D555, &0000CF91, &0000CA1A, &0000C4EC EQUD &0000C000, &0000BB51, &0000B6DB, &0000B29A EQUD &0000AE8B, &0000AAAA, &0000A6F4, &0000A367 EQUD &0000A000, &00009CBC, &00009999, &00009696 EQUD &000093B1, &000090E7, &00008E38, &00008BA2 EQUD &00008924, &000086BC, &00008469, &0000822B EQUD &00008000, &00007DE6, &00007BDE, &000079E7 EQUD &FFFFFFFF, &001F0000, &000F8000, &000A5555 \ n / 31 (n = 0 to 63) EQUD &0007C000, &00063333, &00052AAA, &00046DB6 EQUD &0003E000, &000371C7, &00031999, &0002D174 EQUD &00029555, &00026276, &000236DB, &00021111 EQUD &0001F000, &0001D2D2, &0001B8E3, &0001A1AF EQUD &00018CCC, &000179E7, &000168BA, &0001590B EQUD &00014AAA, &00013D70, &0001313B, &000125ED EQUD &00011B6D, &000111A7, &00010888, &00010000 EQUD &0000F800, &0000F07C, &0000E969, &0000E2BE EQUD &0000DC71, &0000D67C, &0000D0D7, &0000CB7C EQUD &0000C666, &0000C18F, &0000BCF3, &0000B88E EQUD &0000B45D, &0000B05B, &0000AC85, &0000A8D9 EQUD &0000A555, &0000A1F5, &00009EB8, &00009B9B EQUD &0000989D, &000095BC, &000092F6, &0000904A EQUD &00008DB6, &00008B3A, &000088D3, &00008682 EQUD &00008444, &00008219, &00008000, &00007DF7 EQUD &FFFFFFFF, &00200000, &00100000, &000AAAAA \ n / 32 (n = 0 to 63) EQUD &00080000, &00066666, &00055555, &00049249 EQUD &00040000, &00038E38, &00033333, &0002E8BA EQUD &0002AAAA, &00027627, &00024924, &00022222 EQUD &00020000, &0001E1E1, &0001C71C, &0001AF28 EQUD &00019999, &00018618, &0001745D, &0001642C EQUD &00015555, &000147AE, &00013B13, &00012F68 EQUD &00012492, &00011A7B, &00011111, &00010842 EQUD &00010000, &0000F83E, &0000F0F0, &0000EA0E EQUD &0000E38E, &0000DD67, &0000D794, &0000D20D EQUD &0000CCCC, &0000C7CE, &0000C30C, &0000BE82 EQUD &0000BA2E, &0000B60B, &0000B216, &0000AE4C EQUD &0000AAAA, &0000A72F, &0000A3D7, &0000A0A0 EQUD &00009D89, &00009A90, &000097B4, &000094F2 EQUD &00009249, &00008FB8, &00008D3D, &00008AD8 EQUD &00008888, &0000864B, &00008421, &00008208 EQUD &FFFFFFFF, &00210000, &00108000, &000B0000 \ n / 33 (n = 0 to 63) EQUD &00084000, &00069999, &00058000, &0004B6DB EQUD &00042000, &0003AAAA, &00034CCC, &00030000 EQUD &0002C000, &000289D8, &00025B6D, &00023333 EQUD &00021000, &0001F0F0, &0001D555, &0001BCA1 EQUD &0001A666, &00019249, &00018000, &00016F4D EQUD &00016000, &000151EB, &000144EC, &000138E3 EQUD &00012DB6, &0001234F, &00011999, &00011084 EQUD &00010800, &00010000, &0000F878, &0000F15F EQUD &0000EAAA, &0000E453, &0000DE50, &0000D89D EQUD &0000D333, &0000CE0C, &0000C924, &0000C477 EQUD &0000C000, &0000BBBB, &0000B7A6, &0000B3BE EQUD &0000B000, &0000AC68, &0000A8F5, &0000A5A5 EQUD &0000A276, &00009F65, &00009C71, &00009999 EQUD &000096DB, &00009435, &000091A7, &00008F2F EQUD &00008CCC, &00008A7D, &00008842, &00008618 EQUD &FFFFFFFF, &00220000, &00110000, &000B5555 \ n / 34 (n = 0 to 63) EQUD &00088000, &0006CCCC, &0005AAAA, &0004DB6D EQUD &00044000, &0003C71C, &00036666, &00031745 EQUD &0002D555, &00029D89, &00026DB6, &00024444 EQUD &00022000, &00020000, &0001E38E, &0001CA1A EQUD &0001B333, &00019E79, &00018BA2, &00017A6F EQUD &00016AAA, &00015C28, &00014EC4, &0001425E EQUD &000136DB, &00012C23, &00012222, &000118C6 EQUD &00011000, &000107C1, &00010000, &0000F8AF EQUD &0000F1C7, &0000EB3E, &0000E50D, &0000DF2D EQUD &0000D999, &0000D44A, &0000CF3C, &0000CA6B EQUD &0000C5D1, &0000C16C, &0000BD37, &0000B931 EQUD &0000B555, &0000B1A1, &0000AE14, &0000AAAA EQUD &0000A762, &0000A439, &0000A12F, &00009E41 EQUD &00009B6D, &000098B3, &00009611, &00009386 EQUD &00009111, &00008EB0, &00008C63, &00008A28 EQUD &FFFFFFFF, &00230000, &00118000, &000BAAAA \ n / 35 (n = 0 to 63) EQUD &0008C000, &00070000, &0005D555, &00050000 EQUD &00046000, &0003E38E, &00038000, &00032E8B EQUD &0002EAAA, &0002B13B, &00028000, &00025555 EQUD &00023000, &00020F0F, &0001F1C7, &0001D794 EQUD &0001C000, &0001AAAA, &00019745, &00018590 EQUD &00017555, &00016666, &0001589D, &00014BDA EQUD &00014000, &000134F7, &00012AAA, &00012108 EQUD &00011800, &00010F83, &00010787, &00010000 EQUD &0000F8E3, &0000F229, &0000EBCA, &0000E5BE EQUD &0000E000, &0000DA89, &0000D555, &0000D05F EQUD &0000CBA2, &0000C71C, &0000C2C8, &0000BEA3 EQUD &0000BAAA, &0000B6DB, &0000B333, &0000AFAF EQUD &0000AC4E, &0000A90E, &0000A5ED, &0000A2E8 EQUD &0000A000, &00009D31, &00009A7B, &000097DD EQUD &00009555, &000092E2, &00009084, &00008E38 EQUD &FFFFFFFF, &00240000, &00120000, &000C0000 \ n / 36 (n = 0 to 63) EQUD &00090000, &00073333, &00060000, &00052492 EQUD &00048000, &00040000, &00039999, &000345D1 EQUD &00030000, &0002C4EC, &00029249, &00026666 EQUD &00024000, &00021E1E, &00020000, &0001E50D EQUD &0001CCCC, &0001B6DB, &0001A2E8, &000190B2 EQUD &00018000, &000170A3, &00016276, &00015555 EQUD &00014924, &00013DCB, &00013333, &0001294A EQUD &00012000, &00011745, &00010F0F, &00010750 EQUD &00010000, &0000F914, &0000F286, &0000EC4E EQUD &0000E666, &0000E0C7, &0000DB6D, &0000D653 EQUD &0000D174, &0000CCCC, &0000C859, &0000C415 EQUD &0000C000, &0000BC14, &0000B851, &0000B4B4 EQUD &0000B13B, &0000ADE3, &0000AAAA, &0000A790 EQUD &0000A492, &0000A1AF, &00009EE5, &00009C34 EQUD &00009999, &00009714, &000094A5, &00009249 EQUD &FFFFFFFF, &00250000, &00128000, &000C5555 \ n / 37 (n = 0 to 63) EQUD &00094000, &00076666, &00062AAA, &00054924 EQUD &0004A000, &00041C71, &0003B333, &00035D17 EQUD &00031555, &0002D89D, &0002A492, &00027777 EQUD &00025000, &00022D2D, &00020E38, &0001F286 EQUD &0001D999, &0001C30C, &0001AE8B, &00019BD3 EQUD &00018AAA, &00017AE1, &00016C4E, &00015ED0 EQUD &00015249, &0001469E, &00013BBB, &0001318C EQUD &00012800, &00011F07, &00011696, &00010EA0 EQUD &0001071C, &00010000, &0000F943, &0000F2DF EQUD &0000ECCC, &0000E706, &0000E186, &0000DC47 EQUD &0000D745, &0000D27D, &0000CDE9, &0000C988 EQUD &0000C555, &0000C14E, &0000BD70, &0000B9B9 EQUD &0000B627, &0000B2B7, &0000AF68, &0000AC37 EQUD &0000A924, &0000A62C, &0000A34F, &0000A08A EQUD &00009DDD, &00009B47, &000098C6, &00009659 EQUD &FFFFFFFF, &00260000, &00130000, &000CAAAA \ n / 38 (n = 0 to 63) EQUD &00098000, &00079999, &00065555, &00056DB6 EQUD &0004C000, &000438E3, &0003CCCC, &0003745D EQUD &00032AAA, &0002EC4E, &0002B6DB, &00028888 EQUD &00026000, &00023C3C, &00021C71, &00020000 EQUD &0001E666, &0001CF3C, &0001BA2E, &0001A6F4 EQUD &00019555, &0001851E, &00017627, &0001684B EQUD &00015B6D, &00014F72, &00014444, &000139CE EQUD &00013000, &000126C9, &00011E1E, &000115F1 EQUD &00010E38, &000106EB, &00010000, &0000F96F EQUD &0000F333, &0000ED44, &0000E79E, &0000E23B EQUD &0000DD17, &0000D82D, &0000D37A, &0000CEFA EQUD &0000CAAA, &0000C687, &0000C28F, &0000BEBE EQUD &0000BB13, &0000B78C, &0000B425, &0000B0DF EQUD &0000ADB6, &0000AAAA, &0000A7B9, &0000A4E1 EQUD &0000A222, &00009F79, &00009CE7, &00009A69 EQUD &FFFFFFFF, &00270000, &00138000, &000D0000 \ n / 39 (n = 0 to 63) EQUD &0009C000, &0007CCCC, &00068000, &00059249 EQUD &0004E000, &00045555, &0003E666, &00038BA2 EQUD &00034000, &00030000, &0002C924, &00029999 EQUD &00027000, &00024B4B, &00022AAA, &00020D79 EQUD &0001F333, &0001DB6D, &0001C5D1, &0001B216 EQUD &0001A000, &00018F5C, &00018000, &000171C7 EQUD &00016492, &00015846, &00014CCC, &00014210 EQUD &00013800, &00012E8B, &000125A5, &00011D41 EQUD &00011555, &00010DD6, &000106BC, &00010000 EQUD &0000F999, &0000F383, &0000EDB6, &0000E82F EQUD &0000E2E8, &0000DDDD, &0000D90B, &0000D46C EQUD &0000D000, &0000CBC1, &0000C7AE, &0000C3C3 EQUD &0000C000, &0000BC60, &0000B8E3, &0000B586 EQUD &0000B249, &0000AF28, &0000AC23, &0000A938 EQUD &0000A666, &0000A3AC, &0000A108, &00009E79 EQUD &FFFFFFFF, &00280000, &00140000, &000D5555 \ n / 40 (n = 0 to 63) EQUD &000A0000, &00080000, &0006AAAA, &0005B6DB EQUD &00050000, &000471C7, &00040000, &0003A2E8 EQUD &00035555, &000313B1, &0002DB6D, &0002AAAA EQUD &00028000, &00025A5A, &000238E3, &00021AF2 EQUD &00020000, &0001E79E, &0001D174, &0001BD37 EQUD &0001AAAA, &00019999, &000189D8, &00017B42 EQUD &00016DB6, &0001611A, &00015555, &00014A52 EQUD &00014000, &0001364D, &00012D2D, &00012492 EQUD &00011C71, &000114C1, &00010D79, &00010690 EQUD &00010000, &0000F9C1, &0000F3CF, &0000EE23 EQUD &0000E8BA, &0000E38E, &0000DE9B, &0000D9DF EQUD &0000D555, &0000D0FA, &0000CCCC, &0000C8C8 EQUD &0000C4EC, &0000C135, &0000BDA1, &0000BA2E EQUD &0000B6DB, &0000B3A6, &0000B08D, &0000AD8F EQUD &0000AAAA, &0000A7DE, &0000A529, &0000A28A EQUD &FFFFFFFF, &00290000, &00148000, &000DAAAA \ n / 41 (n = 0 to 63) EQUD &000A4000, &00083333, &0006D555, &0005DB6D EQUD &00052000, &00048E38, &00041999, &0003BA2E EQUD &00036AAA, &00032762, &0002EDB6, &0002BBBB EQUD &00029000, &00026969, &0002471C, &0002286B EQUD &00020CCC, &0001F3CF, &0001DD17, &0001C859 EQUD &0001B555, &0001A3D7, &000193B1, &000184BD EQUD &000176DB, &000169EE, &00015DDD, &00015294 EQUD &00014800, &00013E0F, &000134B4, &00012BE2 EQUD &0001238E, &00011BAC, &00011435, &00010D20 EQUD &00010666, &00010000, &0000F9E7, &0000F417 EQUD &0000EE8B, &0000E93E, &0000E42C, &0000DF51 EQUD &0000DAAA, &0000D634, &0000D1EB, &0000CDCD EQUD &0000C9D8, &0000C609, &0000C25E, &0000BED6 EQUD &0000BB6D, &0000B823, &0000B4F7, &0000B1E5 EQUD &0000AEEE, &0000AC10, &0000A94A, &0000A69A EQUD &FFFFFFFF, &002A0000, &00150000, &000E0000 \ n / 42 (n = 0 to 63) EQUD &000A8000, &00086666, &00070000, &00060000 EQUD &00054000, &0004AAAA, &00043333, &0003D174 EQUD &00038000, &00033B13, &00030000, &0002CCCC EQUD &0002A000, &00027878, &00025555, &000235E5 EQUD &00021999, &00020000, &0001E8BA, &0001D37A EQUD &0001C000, &0001AE14, &00019D89, &00018E38 EQUD &00018000, &000172C2, &00016666, &00015AD6 EQUD &00015000, &000145D1, &00013C3C, &00013333 EQUD &00012AAA, &00012298, &00011AF2, &000113B1 EQUD &00010CCC, &0001063E, &00010000, &0000FA0B EQUD &0000F45D, &0000EEEE, &0000E9BD, &0000E4C4 EQUD &0000E000, &0000DB6D, &0000D70A, &0000D2D2 EQUD &0000CEC4, &0000CADE, &0000C71C, &0000C37D EQUD &0000C000, &0000BCA1, &0000B961, &0000B63C EQUD &0000B333, &0000B043, &0000AD6B, &0000AAAA EQUD &FFFFFFFF, &002B0000, &00158000, &000E5555 \ n / 43 (n = 0 to 63) EQUD &000AC000, &00089999, &00072AAA, &00062492 EQUD &00056000, &0004C71C, &00044CCC, &0003E8BA EQUD &00039555, &00034EC4, &00031249, &0002DDDD EQUD &0002B000, &00028787, &0002638E, &0002435E EQUD &00022666, &00020C30, &0001F45D, &0001DE9B EQUD &0001CAAA, &0001B851, &0001A762, &000197B4 EQUD &00018924, &00017B96, &00016EEE, &00016318 EQUD &00015800, &00014D93, &000143C3, &00013A83 EQUD &000131C7, &00012983, &000121AF, &00011A41 EQUD &00011333, &00010C7C, &00010618, &00010000 EQUD &0000FA2E, &0000F49F, &0000EF4D, &0000EA36 EQUD &0000E555, &0000E0A7, &0000DC28, &0000D7D7 EQUD &0000D3B1, &0000CFB2, &0000CBDA, &0000C825 EQUD &0000C492, &0000C11F, &0000BDCB, &0000BA93 EQUD &0000B777, &0000B475, &0000B18C, &0000AEBA EQUD &FFFFFFFF, &002C0000, &00160000, &000EAAAA \ n / 44 (n = 0 to 63) EQUD &000B0000, &0008CCCC, &00075555, &00064924 EQUD &00058000, &0004E38E, &00046666, &00040000 EQUD &0003AAAA, &00036276, &00032492, &0002EEEE EQUD &0002C000, &00029696, &000271C7, &000250D7 EQUD &00023333, &00021861, &00020000, &0001E9BD EQUD &0001D555, &0001C28F, &0001B13B, &0001A12F EQUD &00019249, &00018469, &00017777, &00016B5A EQUD &00016000, &00015555, &00014B4B, &000141D4 EQUD &000138E3, &0001306E, &0001286B, &000120D2 EQUD &00011999, &000112BB, &00010C30, &000105F4 EQUD &00010000, &0000FA4F, &0000F4DE, &0000EFA8 EQUD &0000EAAA, &0000E5E0, &0000E147, &0000DCDC EQUD &0000D89D, &0000D487, &0000D097, &0000CCCC EQUD &0000C924, &0000C59D, &0000C234, &0000BEEA EQUD &0000BBBB, &0000B8A7, &0000B5AD, &0000B2CB EQUD &FFFFFFFF, &002D0000, &00168000, &000F0000 \ n / 45 (n = 0 to 63) EQUD &000B4000, &00090000, &00078000, &00066DB6 EQUD &0005A000, &00050000, &00048000, &00041745 EQUD &0003C000, &00037627, &000336DB, &00030000 EQUD &0002D000, &0002A5A5, &00028000, &00025E50 EQUD &00024000, &00022492, &00020BA2, &0001F4DE EQUD &0001E000, &0001CCCC, &0001BB13, &0001AAAA EQUD &00019B6D, &00018D3D, &00018000, &0001739C EQUD &00016800, &00015D17, &000152D2, &00014924 EQUD &00014000, &00013759, &00012F28, &00012762 EQUD &00012000, &000118F9, &00011249, &00010BE8 EQUD &000105D1, &00010000, &0000FA6F, &0000F51B EQUD &0000F000, &0000EB1A, &0000E666, &0000E1E1 EQUD &0000DD89, &0000D95B, &0000D555, &0000D174 EQUD &0000CDB6, &0000CA1A, &0000C69E, &0000C341 EQUD &0000C000, &0000BCDA, &0000B9CE, &0000B6DB EQUD &FFFFFFFF, &002E0000, &00170000, &000F5555 \ n / 46 (n = 0 to 63) EQUD &000B8000, &00093333, &0007AAAA, &00069249 EQUD &0005C000, &00051C71, &00049999, &00042E8B EQUD &0003D555, &000389D8, &00034924, &00031111 EQUD &0002E000, &0002B4B4, &00028E38, &00026BCA EQUD &00024CCC, &000230C3, &00021745, &00020000 EQUD &0001EAAA, &0001D70A, &0001C4EC, &0001B425 EQUD &0001A492, &00019611, &00018888, &00017BDE EQUD &00017000, &000164D9, &00015A5A, &00015075 EQUD &0001471C, &00013E45, &000135E5, &00012DF2 EQUD &00012666, &00011F38, &00011861, &000111DC EQUD &00010BA2, &000105B0, &00010000, &0000FA8D EQUD &0000F555, &0000F053, &0000EB85, &0000E6E6 EQUD &0000E276, &0000DE30, &0000DA12, &0000D61B EQUD &0000D249, &0000CE98, &0000CB08, &0000C797 EQUD &0000C444, &0000C10C, &0000BDEF, &0000BAEB EQUD &FFFFFFFF, &002F0000, &00178000, &000FAAAA \ n / 47 (n = 0 to 63) EQUD &000BC000, &00096666, &0007D555, &0006B6DB EQUD &0005E000, &000538E3, &0004B333, &000445D1 EQUD &0003EAAA, &00039D89, &00035B6D, &00032222 EQUD &0002F000, &0002C3C3, &00029C71, &00027943 EQUD &00025999, &00023CF3, &000222E8, &00020B21 EQUD &0001F555, &0001E147, &0001CEC4, &0001BDA1 EQUD &0001ADB6, &00019EE5, &00019111, &00018421 EQUD &00017800, &00016C9B, &000161E1, &000157C5 EQUD &00014E38, &00014530, &00013CA1, &00013483 EQUD &00012CCC, &00012576, &00011E79, &000117D0 EQUD &00011174, &00010B60, &00010590, &00010000 EQUD &0000FAAA, &0000F58D, &0000F0A3, &0000EBEB EQUD &0000E762, &0000E304, &0000DED0, &0000DAC3 EQUD &0000D6DB, &0000D316, &0000CF72, &0000CBEE EQUD &0000C888, &0000C53E, &0000C210, &0000BEFB EQUD &FFFFFFFF, &00300000, &00180000, &00100000 \ n / 48 (n = 0 to 63) EQUD &000C0000, &00099999, &00080000, &0006DB6D EQUD &00060000, &00055555, &0004CCCC, &00045D17 EQUD &00040000, &0003B13B, &00036DB6, &00033333 EQUD &00030000, &0002D2D2, &0002AAAA, &000286BC EQUD &00026666, &00024924, &00022E8B, &00021642 EQUD &00020000, &0001EB85, &0001D89D, &0001C71C EQUD &0001B6DB, &0001A7B9, &00019999, &00018C63 EQUD &00018000, &0001745D, &00016969, &00015F15 EQUD &00015555, &00014C1B, &0001435E, &00013B13 EQUD &00013333, &00012BB5, &00012492, &00011DC4 EQUD &00011745, &00011111, &00010B21, &00010572 EQUD &00010000, &0000FAC6, &0000F5C2, &0000F0F0 EQUD &0000EC4E, &0000E7D9, &0000E38E, &0000DF6B EQUD &0000DB6D, &0000D794, &0000D3DC, &0000D045 EQUD &0000CCCC, &0000C971, &0000C631, &0000C30C EQUD &FFFFFFFF, &00310000, &00188000, &00105555 \ n / 49 (n = 0 to 63) EQUD &000C4000, &0009CCCC, &00082AAA, &00070000 EQUD &00062000, &000571C7, &0004E666, &0004745D EQUD &00041555, &0003C4EC, &00038000, &00034444 EQUD &00031000, &0002E1E1, &0002B8E3, &00029435 EQUD &00027333, &00025555, &00023A2E, &00022164 EQUD &00020AAA, &0001F5C2, &0001E276, &0001D097 EQUD &0001C000, &0001B08D, &0001A222, &000194A5 EQUD &00018800, &00017C1F, &000170F0, &00016666 EQUD &00015C71, &00015306, &00014A1A, &000141A4 EQUD &00013999, &000131F3, &00012AAA, &000123B8 EQUD &00011D17, &000116C1, &000110B2, &00010AE4 EQUD &00010555, &00010000, &0000FAE1, &0000F5F5 EQUD &0000F13B, &0000ECAD, &0000E84B, &0000E412 EQUD &0000E000, &0000DC11, &0000D846, &0000D49C EQUD &0000D111, &0000CDA3, &0000CA52, &0000C71C EQUD &FFFFFFFF, &00320000, &00190000, &0010AAAA \ n / 50 (n = 0 to 63) EQUD &000C8000, &000A0000, &00085555, &00072492 EQUD &00064000, &00058E38, &00050000, &00048BA2 EQUD &00042AAA, &0003D89D, &00039249, &00035555 EQUD &00032000, &0002F0F0, &0002C71C, &0002A1AF EQUD &00028000, &00026186, &000245D1, &00022C85 EQUD &00021555, &00020000, &0001EC4E, &0001DA12 EQUD &0001C924, &0001B961, &0001AAAA, &00019CE7 EQUD &00019000, &000183E0, &00017878, &00016DB6 EQUD &0001638E, &000159F2, &000150D7, &00014834 EQUD &00014000, &00013831, &000130C3, &000129AC EQUD &000122E8, &00011C71, &00011642, &00011057 EQUD &00010AAA, &00010539, &00010000, &0000FAFA EQUD &0000F627, &0000F182, &0000ED09, &0000E8BA EQUD &0000E492, &0000E08F, &0000DCB0, &0000D8F2 EQUD &0000D555, &0000D1D6, &0000CE73, &0000CB2C EQUD &FFFFFFFF, &00330000, &00198000, &00110000 \ n / 51 (n = 0 to 63) EQUD &000CC000, &000A3333, &00088000, &00074924 EQUD &00066000, &0005AAAA, &00051999, &0004A2E8 EQUD &00044000, &0003EC4E, &0003A492, &00036666 EQUD &00033000, &00030000, &0002D555, &0002AF28 EQUD &00028CCC, &00026DB6, &00025174, &000237A6 EQUD &00022000, &00020A3D, &0001F627, &0001E38E EQUD &0001D249, &0001C234, &0001B333, &0001A529 EQUD &00019800, &00018BA2, &00018000, &00017507 EQUD &00016AAA, &000160DD, &00015794, &00014EC4 EQUD &00014666, &00013E70, &000136DB, &00012FA0 EQUD &000128BA, &00012222, &00011BD3, &000115C9 EQUD &00011000, &00010A72, &0001051E, &00010000 EQUD &0000FB13, &0000F656, &0000F1C7, &0000ED61 EQUD &0000E924, &0000E50D, &0000E11A, &0000DD49 EQUD &0000D999, &0000D608, &0000D294, &0000CF3C EQUD &FFFFFFFF, &00340000, &001A0000, &00115555 \ n / 52 (n = 0 to 63) EQUD &000D0000, &000A6666, &0008AAAA, &00076DB6 EQUD &00068000, &0005C71C, &00053333, &0004BA2E EQUD &00045555, &00040000, &0003B6DB, &00037777 EQUD &00034000, &00030F0F, &0002E38E, &0002BCA1 EQUD &00029999, &000279E7, &00025D17, &000242C8 EQUD &00022AAA, &0002147A, &00020000, &0001ED09 EQUD &0001DB6D, &0001CB08, &0001BBBB, &0001AD6B EQUD &0001A000, &00019364, &00018787, &00017C57 EQUD &000171C7, &000167C8, &00015E50, &00015555 EQUD &00014CCC, &000144AE, &00013CF3, &00013594 EQUD &00012E8B, &000127D2, &00012164, &00011B3B EQUD &00011555, &00010FAC, &00010A3D, &00010505 EQUD &00010000, &0000FB2B, &0000F684, &0000F209 EQUD &0000EDB6, &0000E98B, &0000E584, &0000E1A0 EQUD &0000DDDD, &0000DA3A, &0000D6B5, &0000D34D EQUD &FFFFFFFF, &00350000, &001A8000, &0011AAAA \ n / 53 (n = 0 to 63) EQUD &000D4000, &000A9999, &0008D555, &00079249 EQUD &0006A000, &0005E38E, &00054CCC, &0004D174 EQUD &00046AAA, &000413B1, &0003C924, &00038888 EQUD &00035000, &00031E1E, &0002F1C7, &0002CA1A EQUD &0002A666, &00028618, &000268BA, &00024DE9 EQUD &00023555, &00021EB8, &000209D8, &0001F684 EQUD &0001E492, &0001D3DC, &0001C444, &0001B5AD EQUD &0001A800, &00019B26, &00018F0F, &000183A8 EQUD &000178E3, &00016EB3, &0001650D, &00015BE5 EQUD &00015333, &00014AED, &0001430C, &00013B88 EQUD &0001345D, &00012D82, &000126F4, &000120AE EQUD &00011AAA, &000114E5, &00010F5C, &00010A0A EQUD &000104EC, &00010000, &0000FB42, &0000F6B0 EQUD &0000F249, &0000EE08, &0000E9EE, &0000E5F7 EQUD &0000E222, &0000DE6D, &0000DAD6, &0000D75D EQUD &FFFFFFFF, &00360000, &001B0000, &00120000 \ n / 54 (n = 0 to 63) EQUD &000D8000, &000ACCCC, &00090000, &0007B6DB EQUD &0006C000, &00060000, &00056666, &0004E8BA EQUD &00048000, &00042762, &0003DB6D, &00039999 EQUD &00036000, &00032D2D, &00030000, &0002D794 EQUD &0002B333, &00029249, &0002745D, &0002590B EQUD &00024000, &000228F5, &000213B1, &00020000 EQUD &0001EDB6, &0001DCB0, &0001CCCC, &0001BDEF EQUD &0001B000, &0001A2E8, &00019696, &00018AF8 EQUD &00018000, &0001759F, &00016BCA, &00016276 EQUD &00015999, &0001512B, &00014924, &0001417D EQUD &00013A2E, &00013333, &00012C85, &00012620 EQUD &00012000, &00011A1F, &0001147A, &00010F0F EQUD &000109D8, &000104D4, &00010000, &0000FB58 EQUD &0000F6DB, &0000F286, &0000EE58, &0000EA4E EQUD &0000E666, &0000E29F, &0000DEF7, &0000DB6D EQUD &FFFFFFFF, &00370000, &001B8000, &00125555 \ n / 55 (n = 0 to 63) EQUD &000DC000, &000B0000, &00092AAA, &0007DB6D EQUD &0006E000, &00061C71, &00058000, &00050000 EQUD &00049555, &00043B13, &0003EDB6, &0003AAAA EQUD &00037000, &00033C3C, &00030E38, &0002E50D EQUD &0002C000, &00029E79, &00028000, &0002642C EQUD &00024AAA, &00023333, &00021D89, &0002097B EQUD &0001F6DB, &0001E584, &0001D555, &0001C631 EQUD &0001B800, &0001AAAA, &00019E1E, &00019249 EQUD &0001871C, &00017C8A, &00017286, &00016906 EQUD &00016000, &0001576A, &00014F3C, &00014771 EQUD &00014000, &000138E3, &00013216, &00012B93 EQUD &00012555, &00011F58, &00011999, &00011414 EQUD &00010EC4, &000109A9, &000104BD, &00010000 EQUD &0000FB6D, &0000F704, &0000F2C2, &0000EEA4 EQUD &0000EAAA, &0000E6D1, &0000E318, &0000DF7D EQUD &FFFFFFFF, &00380000, &001C0000, &0012AAAA \ n / 56 (n = 0 to 63) EQUD &000E0000, &000B3333, &00095555, &00080000 EQUD &00070000, &000638E3, &00059999, &00051745 EQUD &0004AAAA, &00044EC4, &00040000, &0003BBBB EQUD &00038000, &00034B4B, &00031C71, &0002F286 EQUD &0002CCCC, &0002AAAA, &00028BA2, &00026F4D EQUD &00025555, &00023D70, &00022762, &000212F6 EQUD &00020000, &0001EE58, &0001DDDD, &0001CE73 EQUD &0001C000, &0001B26C, &0001A5A5, &00019999 EQUD &00018E38, &00018375, &00017943, &00016F96 EQUD &00016666, &00015DA8, &00015555, &00014D65 EQUD &000145D1, &00013E93, &000137A6, &00013105 EQUD &00012AAA, &00012492, &00011EB8, &00011919 EQUD &000113B1, &00010E7D, &0001097B, &000104A7 EQUD &00010000, &0000FB82, &0000F72C, &0000F2FB EQUD &0000EEEE, &0000EB04, &0000E739, &0000E38E EQUD &FFFFFFFF, &00390000, &001C8000, &00130000 \ n / 57 (n = 0 to 63) EQUD &000E4000, &000B6666, &00098000, &00082492 EQUD &00072000, &00065555, &0005B333, &00052E8B EQUD &0004C000, &00046276, &00041249, &0003CCCC EQUD &00039000, &00035A5A, &00032AAA, &00030000 EQUD &0002D999, &0002B6DB, &00029745, &00027A6F EQUD &00026000, &000247AE, &0002313B, &00021C71 EQUD &00020924, &0001F72C, &0001E666, &0001D6B5 EQUD &0001C800, &0001BA2E, &0001AD2D, &0001A0EA EQUD &00019555, &00018A60, &00018000, &00017627 EQUD &00016CCC, &000163E7, &00015B6D, &00015359 EQUD &00014BA2, &00014444, &00013D37, &00013677 EQUD &00013000, &000129CB, &000123D7, &00011E1E EQUD &0001189D, &00011352, &00010E38, &0001094F EQUD &00010492, &00010000, &0000FB96, &0000F752 EQUD &0000F333, &0000EF36, &0000EB5A, &0000E79E EQUD &FFFFFFFF, &003A0000, &001D0000, &00135555 \ n / 58 (n = 0 to 63) EQUD &000E8000, &000B9999, &0009AAAA, &00084924 EQUD &00074000, &000671C7, &0005CCCC, &000545D1 EQUD &0004D555, &00047627, &00042492, &0003DDDD EQUD &0003A000, &00036969, &000338E3, &00030D79 EQUD &0002E666, &0002C30C, &0002A2E8, &00028590 EQUD &00026AAA, &000251EB, &00023B13, &000225ED EQUD &00021249, &00020000, &0001EEEE, &0001DEF7 EQUD &0001D000, &0001C1F0, &0001B4B4, &0001A83A EQUD &00019C71, &0001914C, &000186BC, &00017CB7 EQUD &00017333, &00016A25, &00016186, &0001594D EQUD &00015174, &000149F4, &000142C8, &00013BEA EQUD &00013555, &00012F05, &000128F5, &00012323 EQUD &00011D89, &00011826, &000112F6, &00010DF6 EQUD &00010924, &0001047D, &00010000, &0000FBA9 EQUD &0000F777, &0000F368, &0000EF7B, &0000EBAE EQUD &FFFFFFFF, &003B0000, &001D8000, &0013AAAA \ n / 59 (n = 0 to 63) EQUD &000EC000, &000BCCCC, &0009D555, &00086DB6 EQUD &00076000, &00068E38, &0005E666, &00055D17 EQUD &0004EAAA, &000489D8, &000436DB, &0003EEEE EQUD &0003B000, &00037878, &0003471C, &00031AF2 EQUD &0002F333, &0002CF3C, &0002AE8B, &000290B2 EQUD &00027555, &00025C28, &000244EC, &00022F68 EQUD &00021B6D, &000208D3, &0001F777, &0001E739 EQUD &0001D800, &0001C9B2, &0001BC3C, &0001AF8A EQUD &0001A38E, &00019837, &00018D79, &00018348 EQUD &00017999, &00017063, &0001679E, &00015F41 EQUD &00015745, &00014FA4, &00014859, &0001415C EQUD &00013AAA, &0001343E, &00012E14, &00012828 EQUD &00012276, &00011CFB, &000117B4, &0001129E EQUD &00010DB6, &000108FB, &00010469, &00010000 EQUD &0000FBBB, &0000F79B, &0000F39C, &0000EFBE EQUD &FFFFFFFF, &003C0000, &001E0000, &00140000 \ n / 60 (n = 0 to 63) EQUD &000F0000, &000C0000, &000A0000, &00089249 EQUD &00078000, &0006AAAA, &00060000, &0005745D EQUD &00050000, &00049D89, &00044924, &00040000 EQUD &0003C000, &00038787, &00035555, &0003286B EQUD &00030000, &0002DB6D, &0002BA2E, &00029BD3 EQUD &00028000, &00026666, &00024EC4, &000238E3 EQUD &00022492, &000211A7, &00020000, &0001EF7B EQUD &0001E000, &0001D174, &0001C3C3, &0001B6DB EQUD &0001AAAA, &00019F22, &00019435, &000189D8 EQUD &00018000, &000176A2, &00016DB6, &00016535 EQUD &00015D17, &00015555, &00014DE9, &000146CE EQUD &00014000, &00013978, &00013333, &00012D2D EQUD &00012762, &000121CF, &00011C71, &00011745 EQUD &00011249, &00010D79, &000108D3, &00010456 EQUD &00010000, &0000FBCD, &0000F7BD, &0000F3CF EQUD &FFFFFFFF, &003D0000, &001E8000, &00145555 \ n / 61 (n = 0 to 63) EQUD &000F4000, &000C3333, &000A2AAA, &0008B6DB EQUD &0007A000, &0006C71C, &00061999, &00058BA2 EQUD &00051555, &0004B13B, &00045B6D, &00041111 EQUD &0003D000, &00039696, &0003638E, &000335E5 EQUD &00030CCC, &0002E79E, &0002C5D1, &0002A6F4 EQUD &00028AAA, &000270A3, &0002589D, &0002425E EQUD &00022DB6, &00021A7B, &00020888, &0001F7BD EQUD &0001E800, &0001D936, &0001CB4B, &0001BE2B EQUD &0001B1C7, &0001A60D, &00019AF2, &00019069 EQUD &00018666, &00017CE0, &000173CF, &00016B29 EQUD &000162E8, &00015B05, &0001537A, &00014C41 EQUD &00014555, &00013EB1, &00013851, &00013232 EQUD &00012C4E, &000126A4, &0001212F, &00011BED EQUD &000116DB, &000111F7, &00010D3D, &000108AD EQUD &00010444, &00010000, &0000FBDE, &0000F7DF EQUD &FFFFFFFF, &003E0000, &001F0000, &0014AAAA \ n / 62 (n = 0 to 63) EQUD &000F8000, &000C6666, &000A5555, &0008DB6D EQUD &0007C000, &0006E38E, &00063333, &0005A2E8 EQUD &00052AAA, &0004C4EC, &00046DB6, &00042222 EQUD &0003E000, &0003A5A5, &000371C7, &0003435E EQUD &00031999, &0002F3CF, &0002D174, &0002B216 EQUD &00029555, &00027AE1, &00026276, &00024BDA EQUD &000236DB, &0002234F, &00021111, &00020000 EQUD &0001F000, &0001E0F8, &0001D2D2, &0001C57C EQUD &0001B8E3, &0001ACF9, &0001A1AF, &000196F9 EQUD &00018CCC, &0001831F, &000179E7, &0001711D EQUD &000168BA, &000160B6, &0001590B, &000151B3 EQUD &00014AAA, &000143EB, &00013D70, &00013737 EQUD &0001313B, &00012B78, &000125ED, &00012094 EQUD &00011B6D, &00011674, &000111A7, &00010D04 EQUD &00010888, &00010432, &00010000, &0000FBEF EQUD &FFFFFFFF, &003F0000, &001F8000, &00150000 \ n / 63 (n = 0 to 63) EQUD &000FC000, &000C9999, &000A8000, &00090000 EQUD &0007E000, &00070000, &00064CCC, &0005BA2E EQUD &00054000, &0004D89D, &00048000, &00043333 EQUD &0003F000, &0003B4B4, &00038000, &000350D7 EQUD &00032666, &00030000, &0002DD17, &0002BD37 EQUD &0002A000, &0002851E, &00026C4E, &00025555 EQUD &00024000, &00022C23, &00021999, &00020842 EQUD &0001F800, &0001E8BA, &0001DA5A, &0001CCCC EQUD &0001C000, &0001B3E4, &0001A86B, &00019D89 EQUD &00019333, &0001895D, &00018000, &00017711 EQUD &00016E8B, &00016666, &00015E9B, &00015726 EQUD &00015000, &00014924, &0001428F, &00013C3C EQUD &00013627, &0001304D, &00012AAA, &0001253C EQUD &00012000, &00011AF2, &00011611, &0001115B EQUD &00010CCC, &00010864, &00010421, &00010000
Two-pass assembly loop
.endCode ] NEXT pass% \ Loop back for the second pass
Save GameCode.bin
OSCLI "SAVE GameCode "+STR$~CODE%+" "+STR$~O%+" "+STR$~Entry+" "+STR$~CODE