// HEADER OF DISPLAY LIST START - BEGIN
ft800memWrite32 (RAM_CMD + cmdOffset, (CMD_DLSTART));// Start the display list
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
ft800memWrite32 (RAM_CMD + cmdOffset, (DL_CLEAR_RGB | BackgroundColor));// Set the default clear color to black
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
ft800memWrite32 (RAM_CMD + cmdOffset, (DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG));// Clear the screen - this and the previous prevent artifacts between lists
// Attributes are the color, stencil and tag buffers
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
// HEADER OF DISPLAY LIST START - END
#if (CREATE_BUTTON_METHOD_NUMBER == 0)
// BUTTON - BEGIN
// Command Button
// Address 0-3; 4 bytes
ft800memWrite32 (RAM_CMD + cmdOffset, (CMD_BUTTON));
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
// X-coordinate of button top-left, in pixels; Address 4-5; 2 bytes
// Y-coordinate of button top-left, in pixels; Address 6-7; 2 bytes
ft800memWrite32 (RAM_CMD + cmdOffset, ( (100 << 16) | (100) ));
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
// Width of button, in pixels; Address 8-9; 2 byte
// Height of button, in pixels; Address 10-11; 2 bytes
ft800memWrite32 (RAM_CMD + cmdOffset, ( (50 << 16) | (25) ));
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
// Font of button; Address 12-13; 2 bytes
// Options of button; Address 14-15; 2 bytes
//
ft800memWrite32 (RAM_CMD + cmdOffset, ( (31 << 16) | (0) ));
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
// Text of button - "OK": "O" + "K" + "NULL"
// Address 16-19; 4 byte
ft800memWrite32 (RAM_CMD + cmdOffset, ( (0x4F << 24) | (0x4B << 16) | (0x00 << 8) | (0x00 << 0)));
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
// BUTTON - END
#endif
#if (CREATE_BUTTON_METHOD_NUMBER == 1)
// BUTTON - BEGIN
// Command Button
// Address 0-3; 4 bytes
ft800memWrite32 (RAM_CMD + cmdOffset, (CMD_BUTTON));
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
// X-coordinate of button top-left, in pixels
// Address 4-5; 2 bytes
ft800memWrite16 (RAM_CMD + cmdOffset, 100);
cmdOffset = incCMDOffset (cmdOffset, 2);// Update the command pointer
// Y-coordinate of button top-left, in pixels
// Address 6-7; 2 bytes
ft800memWrite16 (RAM_CMD + cmdOffset, 100);
cmdOffset = incCMDOffset (cmdOffset, 2);// Update the command pointer
// Width of button, in pixels
// Address 8-9; 2 byte
ft800memWrite16 (RAM_CMD + cmdOffset, 50);
cmdOffset = incCMDOffset (cmdOffset, 2);// Update the command pointer
// Height of button, in pixels
// Address 10-11; 2 bytes
ft800memWrite16 (RAM_CMD + cmdOffset, 25);
cmdOffset = incCMDOffset (cmdOffset, 2);// Update the command pointer
// Font of button
// Address 12-13; 2 bytes
ft800memWrite16 (RAM_CMD + cmdOffset, 31);
cmdOffset = incCMDOffset (cmdOffset, 2);// Update the command pointer
// Options of button
// Address 14-15; 2 bytes
ft800memWrite16 (RAM_CMD + cmdOffset, 0);
cmdOffset = incCMDOffset (cmdOffset, 2);// Update the command pointer
// Text of button - "OK": "O"
// Address 16; 1 byte
ft800memWrite8 (RAM_CMD + cmdOffset, 0x4F);
cmdOffset = incCMDOffset (cmdOffset, 1);// Update the command pointer
// Text of button - "OK": "K"
// Address 17; 1 byte
ft800memWrite8 (RAM_CMD + cmdOffset, 0x4B);
cmdOffset = incCMDOffset (cmdOffset, 1);// Update the command pointer
// String terminated with null character, i.e. '\0'
ft800memWrite8 (RAM_CMD + cmdOffset, 0x00);
cmdOffset = incCMDOffset (cmdOffset, 1);// Update the command pointer
// BUTTON - END
#endif
#if (CREATE_TOGGLE_POINT == 1)
// DRAW POINT - BEGIN
ft800memWrite32 (RAM_CMD + cmdOffset, (DL_COLOR_RGB | color));// Set the color of the following item(s) - toggle red/white from above
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
ft800memWrite32 (RAM_CMD + cmdOffset, (DL_POINT_SIZE | point_size));// Select the size of the dot to draw
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
ft800memWrite32 (RAM_CMD + cmdOffset, (DL_BEGIN | FTPOINTS));// Indicate to draw a point (dot)
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
ft800memWrite32 (RAM_CMD + cmdOffset, (DL_VERTEX2F | (point_x << 15) | point_y));// Set the point center location
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
ft800memWrite32 (RAM_CMD + cmdOffset, (DL_END));// End the point
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
// DRAW POINT - END
#endif
// ENDING OF DISPLAY LIST START - BEGIN
ft800memWrite32 (RAM_CMD + cmdOffset, (DL_DISPLAY));// Instruct the graphics processor to show the list
cmdOffset = incCMDOffset(cmdOffset, 4);// Update the command pointer
ft800memWrite32 (RAM_CMD + cmdOffset, (CMD_SWAP));// Make this list active
cmdOffset = incCMDOffset (cmdOffset, 4);// Update the command pointer
ft800memWrite16 (REG_CMD_WRITE, (cmdOffset));// Update the ring buffer pointer so the graphics processor starts executing
// ENDING OF DISPLAY LIST START - END
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////// DISPLAY LIST - END //////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////// |