//**********************************************************************
define appv 'Brick Program V1.02' //
//**********************************************************************
//
define MAX_NO_OF_BLOCKS 19 // Max number of blocks (inc. File, Start and loop)
//
define TEMPLATE_FILE 'template.rbf' //
define RUN_FILE 'run.rbf' //
//
define BPRG_FILE 'BrkProg_' //
//
define FILEBLOCK_FILENO 'fileno.rtf' //
//
define OBP_CENTER_X ((LCD_WIDTH / 2) - 1) // Center of Programming window
define OBP_MIN_X (0) //
define OBP_MAX_X (LCD_WIDTH) //
//
define BROWSER_STARTX 8 //
define BROWSER_STARTY 40 //
define BROWSER_WIDTH 166 //
define BROWSER_HEIGHT 85 //
//
define BLOCKS ((MAX_NO_OF_BLOCKS * 2) - 1) // Max number of blocks (inc. separators)
define LIBBLOCKS 20 //
//
define STARTBLOCK 2 // Start block
define LOOPBLOCK 3 // Loop block
define EMPTYBLOCK 4 // Empty block
define DOUBLEMOTORBLOCK 5 // Double motor block
define SINGLEMOTORBLOCK 6 // Single motor block
define MEDIUMMOTORBLOCK 7 // Medium motor block
define SOUNDBLOCK 8 // Sound playback
define DISPLAYBLOCK 9 // Display image
define LEDBLOCK 10 // Button light
define TOUCHBLOCK 11 // Wait for touch
define REFLECTEDBLOCK 12 // Wait for reflected light
define COLORBLOCK 13 // Wait for color
define BEACONBLOCK 14 // Wait for beacon button
define PROXIMITYBLOCK 15 // Wait for proximity
define TEMPERATUREBLOCK 16 // Wait for temperature
define ULTRASONICBLOCK 17 // Wait for ultrasonic
define ANGLEBLOCK 18 // Wait for angle
define ENCODERBLOCK 19 // Wait for generic encoder
define BUTTONBLOCK 20 // Wait for brick button
define DELAYBLOCK 21 // Delay block
//
define TRASHBIN 29 // Trash bin
define FILEBLOCK 30 // File block
define SEPARATOR 31 // Separator block
//
define INIT 0 // Initialise (parameters)
define GET_WIDTH 1 // Get block width
define REFRESH 2 // Refresh graphics
define ACTIVATE 3 // Activate block
define DRAW_ICON 4 // Draw icon
//
DATA16 hBlockLib // Block library
DATA16 hBlockStream // Block stream (program)
DATA16 hBlockPar1 // Par1 array
DATA16 hBlockPar2 // Par2 array
//
DATA8 Changed // Changes in program flag
//
// MAIN ************************************************************************************************
//
//
vmthread MAIN // void MAIN(void)
{ // {
DATA32 Index //
DATA16 Cursor //
DATA16 Block //
DATA16 Tmp16 //
DATA16 Start //
DATA16 End //
DATA8 Run //
DATA8 Update //
DATA8 Status //
DATA8 State //
DATA8 Stat //
DATA8 Volume //
DATA8 Exist //
DATA8 ShowVersion //
//
UI_BUTTON(PRESSED,RIGHT_BUTTON,ShowVersion) // UI_BUTTON(PRESSED,RIGHT_BUTTON,ShowVersion)
JR_FALSE(ShowVersion,DontShowVersion) // if (ShowVersion)
// {
UI_DRAW(FILLRECT,BG_COLOR,4,50,170,28) // UI_DRAW(FILLRECT,BG_COLOR,4,50,170,28)
UI_DRAW(RECT,FG_COLOR,6,52,166,24) // UI_DRAW(RECT,FG_COLOR,6,52,166,24)
UI_DRAW(TEXT,FG_COLOR,13,60,appv) // UI_DRAW(TEXT,FG_COLOR,13,60,appv)
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
ShowVersionWait: // do
// {
UI_BUTTON(PRESSED,RIGHT_BUTTON,ShowVersion) // UI_BUTTON(PRESSED,RIGHT_BUTTON,ShowVersion)
// }
JR_TRUE(ShowVersion,ShowVersionWait) // while (ShowVersion)
//
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
DontShowVersion: // }
//
UI_DRAW(RESTORE,0) // UI_DRAW(RESTORE,0)
UI_DRAW(TOPLINE,1) // UI_DRAW(TOPLINE,1)
UI_BUTTON(SET_BACK_BLOCK,1) // UI_BUTTON(SET_BACK_BLOCK,1)
UI_WRITE(LED,LED_GREEN) // UI_WRITE(LED,LED_GREEN)
//
FILENAME(EXIST,PROGRAM_FOLDER,Exist) // FILENAME(EXIST,PROGRAM_FOLDER,Exist)
JR_TRUE(Exist,FolderExist) // if (!Exist)
// {
FILE(MAKE_FOLDER,PROGRAM_FOLDER,Exist) // FILE(MAKE_FOLDER,PROGRAM_FOLDER,Exist)
//
FolderExist: // }
//
// Create hBlockLib //
ARRAY(CREATE16,LIBBLOCKS,hBlockLib) // ARRAY(CREATE16,LIBBLOCKS,hBlockLib)
//
// Create hBlockStream //
ARRAY(CREATE16,BLOCKS,hBlockStream) // ARRAY(CREATE16,BLOCKS,hBlockStream)
//
// Create hBlockPar1 //
ARRAY(CREATE16,BLOCKS,hBlockPar1) // ARRAY(CREATE16,BLOCKS,hBlockPar1)
//
// Create hBlockPar2 //
ARRAY(CREATE16,BLOCKS,hBlockPar2) // ARRAY(CREATE16,BLOCKS,hBlockPar2)
//
// Init hBlockLib //
CALL(InitBlockLib) // CALL(InitBlockLib)
//
// Init hBlockStream //
CALL(InitBlockStream) // CALL(InitBlockStream)
//
// Init Cursor //
CALL(FindBlockType,STARTBLOCK,Cursor) // CALL(FindBlockType,hBlockStream,STARTBLOCK,Cursor)
//
ADD16(Cursor,1,Cursor) // Cursor++
//
MOVE8_8(1,Update) // Update = 1
//
MOVE8_8(0,Changed) // Changed = 0
//
MOVE8_8(1,Run) // Run = 1
//
// do
Loop: // {
//
JR_FALSE(Update,NotUpdate) // if (Update)
// {
// Update graphics //
CALL(UpdateStreamGraphics,Cursor) // CALL(UpdateStreamGraphics,Cursor)
//
MOVE8_8(0,Update) // Update = 0
//
// Test for file block selected //
JR_NEQ16(Cursor,0,NotZero) // if (Cursor == 0)
// {
CALL(ActivateBlock,Cursor) // CALL(ActivateBlock,Cursor)
CALL(UpdateStreamGraphics,Cursor) // CALL(UpdateStreamGraphics,Cursor)
NotZero: // }
//
NotUpdate: // }
//
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
MOVE8_8(1,Update) // Update = 1
//
UI_BUTTON(GET_HORZ,Tmp16) // UI_BUTTON(GET_HORZ,Tmp16)
JR_EQ16(Tmp16,0,NotHorz) // if (Tmp16)
// {
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
ADD16(Cursor,Tmp16,Cursor) // Cursor += Tmp16
CALL(FindBlockType,LOOPBLOCK,Tmp16) // CALL(FindBlockType,LOOPBLOCK,Tmp16)
JR_LTEQ16(Cursor,Tmp16,NotTooHigh) // if (Cursor > Tmp16)
// {
MOVE16_16(Tmp16,Cursor) // Cursor = Tmp16
MOVE8_8(0,Update) // Update = 0
NotTooHigh: // }
CALL(FindBlockType,FILEBLOCK,Tmp16) // CALL(FindBlockType,FILEBLOCK,Tmp16)
JR_GTEQ16(Cursor,Tmp16,NotTooLow) // if (Cursor < Tmp16)
// {
MOVE16_16(Tmp16,Cursor) // Cursor = Tmp16
MOVE8_8(0,Update) // Update = 0
NotTooLow: // }
NotHorz: // }
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,State) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,State)
JR_FALSE(State,NotEnter) // if (State)
// {
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
// Activate block //
CALL(ActivateBlock,Cursor) // CALL(ActivateBlock,Cursor)
//
NotEnter: // }
UI_BUTTON(SHORTPRESS,UP_BUTTON,State) // UI_BUTTON(SHORTPRESS,UP_BUTTON,State)
JR_FALSE(State,NotUp) // if (State)
// {
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
CALL(FindBlockType,STARTBLOCK,Start) // CALL(FindBlockType,STARTBLOCK,Start)
CALL(FindBlockType,LOOPBLOCK,End) // CALL(FindBlockType,LOOPBLOCK,End)
JR_LTEQ16(Cursor,Start,Outside) // if ((Cursor > Start) &&
JR_GTEQ16(Cursor,End,Outside) // (Cursor < End)
// {
ADD16(End,2,End) // End += 2
MOVE16_32(Cursor,Index) // Index = Cursor
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
JR_NEQ16(Block,SEPARATOR,Ok) // if ((Block != SEPARATOR) ||
JR_GTEQ16(End,BLOCKS,Full) // (End < BLOCKS))
Ok: // {
// Block library //
CALL(BlockLibrary,Cursor) // CALL(BlockLibrary,Cursor)
//
Full: // }
Outside: // }
NotUp: // }
UI_BUTTON(SHORTPRESS,BACK_BUTTON,State) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,State)
JR_FALSE(State,NotBack) // if (State)
// {
CALL(FindBlockType,STARTBLOCK,Start) // CALL(FindBlockType,STARTBLOCK,Start)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
JR_NEQ16(Cursor,Start,NotStart) // if (Cursor == Start)
// {
JR_FALSE(Changed,NoChanges) // if (Changed)
// {
//
INFO(GET_VOLUME,Volume) // INFO(GET_VOLUME,Volume)
SOUND(PLAY,Volume,'GeneralAlarm') // SOUND(PLAY,Volume,'GeneralAlarm')
//
MOVE8_8(0,Stat) // Stat = 0
MOVE8_8(1,Status) // Status = 1
UI_DRAW(QUESTION,FG_COLOR,16,50,WARNSIGN,TO_FILE,'',Stat,Status) // UI_DRAW(QUESTION,FG_COLOR,16,50,WARNSIGN,TO_FILE,'',Stat,Status)
JR_NEQ8(Status,1,DontSave) // if (Status == 1)
// {
CALL(SaveFilename) // CALL(SaveFilename)
MOVE8_8(0,Run) // Run = 0
//
DontSave: // }
JR_NEQ8(Status,0,DontQuit) // if (Status == 0)
// {
MOVE8_8(0,Run) // Run = 0
//
DontQuit: // }
JR(EndChanges) // }
// else
NoChanges: // {
//
MOVE8_8(0,Run) // Run = 0
//
EndChanges: // }
JR(EndBack) // }
// else
NotStart: // {
JR_LTEQ16(Cursor,Start,GreatherThanStart) // if (Cursor > Start)
// {
MOVE16_16(Start,Cursor) // Cursor = Start
//
GreatherThanStart: // }
EndBack: // }
NotBack: // }
// }
JR_TRUE(Run,Loop) // while (Run)
//
// Delete hBlockPar2 //
ARRAY(DELETE,hBlockPar2) // ARRAY(DELETE,hBlockPar2)
//
// Delete hBlockPar1 //
ARRAY(DELETE,hBlockPar1) // ARRAY(DELETE,hBlockPar1)
//
// Delete hBlockStream //
ARRAY(DELETE,hBlockStream) // ARRAY(DELETE,hBlockStream)
//
// Delete hBlockLib //
ARRAY(DELETE,hBlockLib) // ARRAY(DELETE,hBlockLib)
//
UI_BUTTON(SET_BACK_BLOCK,0) //
//
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// InitBlockLib ****************************************************************************************
//
//
subcall InitBlockLib // InitBlockLib
{ // {
//
ARRAY(FILL,hBlockLib,EMPTYBLOCK) // ARRAY(FILL,hBlockLib,EMPTYBLOCK)
//
ARRAY_WRITE(hBlockLib,0,TRASHBIN) // hBlockLib[0] = TRASHBIN
ARRAY_WRITE(hBlockLib,1,MEDIUMMOTORBLOCK) // hBlockLib[0] = MEDIUMMOTORBLOCK
ARRAY_WRITE(hBlockLib,2,SINGLEMOTORBLOCK) // hBlockLib[0] = SINGLEMOTORBLOCK
ARRAY_WRITE(hBlockLib,3,DOUBLEMOTORBLOCK) // hBlockLib[0] = DOUBLEMOTORBLOCK
//
ARRAY_WRITE(hBlockLib,5,DISPLAYBLOCK) // hBlockLib[0] = DISPLAYBLOCK
ARRAY_WRITE(hBlockLib,6,SOUNDBLOCK) // hBlockLib[0] = SOUNDBLOCK
ARRAY_WRITE(hBlockLib,7,LEDBLOCK) // hBlockLib[0] = LEDBLOCK
ARRAY_WRITE(hBlockLib,8,TOUCHBLOCK) // hBlockLib[0] = TOUCHBLOCK
ARRAY_WRITE(hBlockLib,9,REFLECTEDBLOCK) // hBlockLib[0] = REFLECTEDBLOCK
ARRAY_WRITE(hBlockLib,10,COLORBLOCK) // hBlockLib[0] = COLORBLOCK
//
ARRAY_WRITE(hBlockLib,12,ULTRASONICBLOCK) // hBlockLib[0] = ULTRASONICBLOCK
ARRAY_WRITE(hBlockLib,13,PROXIMITYBLOCK) // hBlockLib[0] = PROXIMITYBLOCK
ARRAY_WRITE(hBlockLib,14,BEACONBLOCK) // hBlockLib[0] = BEACONBLOCK
ARRAY_WRITE(hBlockLib,15,ANGLEBLOCK) // hBlockLib[0] = ANGLEBLOCK
ARRAY_WRITE(hBlockLib,16,TEMPERATUREBLOCK) // hBlockLib[0] = TEMPERATUREBLOCK
ARRAY_WRITE(hBlockLib,17,ENCODERBLOCK) // hBlockLib[0] = ENCODERBLOCK
ARRAY_WRITE(hBlockLib,18,BUTTONBLOCK) // hBlockLib[0] = BUTTONBLOCK
ARRAY_WRITE(hBlockLib,19,DELAYBLOCK) // hBlockLib[0] = DELAYBLOCK
//
} // }
//
//
// InitBlockStream *************************************************************************************
//
//
subcall InitBlockStream // InitBlockStream
{ // {
//
ARRAY(FILL,hBlockStream,EMPTYBLOCK) // ARRAY(FILL,hBlockStream,EMPTYBLOCK)
//
ARRAY_WRITE(hBlockStream,0,FILEBLOCK) // hBlockStream[0] = FILEBLOCK
CALL(UpdateBlock,FILEBLOCK,INIT,0,0,0) // CALL(UpdateBlock,FILEBLOCK,INIT,0,0,0)
//
ARRAY_WRITE(hBlockStream,1,STARTBLOCK) // hBlockStream[1] = STARTBLOCK
CALL(UpdateBlock,STARTBLOCK,INIT,1,0,0) // CALL(UpdateBlock,STARTBLOCK,INIT,1,0,0)
//
ARRAY_WRITE(hBlockStream,2,SEPARATOR) // hBlockStream[2] = SEPARATOR
CALL(UpdateBlock,SEPARATOR,INIT,2,0,0) // CALL(UpdateBlock,SEPARATOR,INIT,2,0,0)
//
ARRAY_WRITE(hBlockStream,3,LOOPBLOCK) // hBlockStream[3] = LOOPBLOCK
CALL(UpdateBlock,LOOPBLOCK,INIT,3,0,0) // CALL(UpdateBlock,LOOPBLOCK,INIT,3,0,0)
//
} // }
//
//
// InsertBlockInStream *********************************************************************************
//
//
subcall InsertBlockInStream // InsertBlockInStream
{ // {
IN_16 BlockType //
IO_16 Place //
OUT_8 Status //
//
DATA8 Align //
DATA16 Pointer //
DATA32 Index1 //
DATA32 Index2 //
DATA16 Pointer //
DATA16 Block //
DATA16 Tmp //
DATA16 Par1 //
DATA16 Par2 //
//
MOVE8_8(0,Status) // Status = 0
// Find end of block stream //
CALL(FindBlockType,LOOPBLOCK,Pointer) // CALL(FindBlockType,LOOPBLOCK,Pointer)
//
// Check for room for insertion //
ADD16(Pointer,2,Tmp) // Tmp = Pointer + 2
JR_GTEQ16(Tmp,BLOCKS,BlockStreamFull) // if (Tmp < BLOCKS)
// {
ADD16(Pointer,2,Pointer) // Pointer += 2
// Move all blocks from Pointer to Place 2 places forward //
MakeRoom: // while (Pointer > Place)
JR_LTEQ16(Pointer,Place,Done) //
// {
MOVE16_32(Pointer,Index1) // Index1 = Pointer
SUB32(Index1,2,Index2) // Index2 = Index1 - 2
ARRAY_READ(hBlockStream,Index2,Block) // Block = hBlockStream[Index2]
ARRAY_WRITE(hBlockStream,Index1,Block) // hBlockStream[Index1] = Block
ARRAY_READ(hBlockPar1,Index2,Par1) // Par1 = hBlockPar1[Index2]
ARRAY_WRITE(hBlockPar1,Index1,Par1) // hBlockPar1[Index1] = Par1
ARRAY_READ(hBlockPar2,Index2,Par2) // Par2 = hBlockPar2[Index2]
ARRAY_WRITE(hBlockPar2,Index1,Par2) // hBlockPar2[Index1] = Par2
SUB16(Pointer,1,Pointer) // Pointer--
JR(MakeRoom) // }
Done: //
//
// Insert separator and BlockType //
MOVE16_32(Place,Index1) // Index1 = Place
ARRAY_WRITE(hBlockStream,Index1,SEPARATOR) // hBlockStream[Index1] = SEPARATOR
ADD32(Index1,1,Index1) // Index1++
ARRAY_WRITE(hBlockStream,Index1,BlockType) // hBlockStream[Index1] = BlockType
//
MOVE8_8(1,Status) // Status = 1
BlockStreamFull: // }
//
} // }
//
//
// RemoveBlockInStream *********************************************************************************
//
//
subcall RemoveBlockInStream // RemoveBlockInStream
{ // {
IO_16 Place //
//
DATA32 Index1 //
DATA32 Index2 //
DATA16 Pointer //
DATA16 End //
DATA16 Block //
DATA16 Par1 //
DATA16 Par2 //
//
// Find end of block stream //
CALL(FindBlockType,LOOPBLOCK,End) // CALL(FindBlockType,LOOPBLOCK,End)
//
MOVE16_16(Place,Pointer) // Pointer = Place
Move: // while (Pointer < End)
JR_GTEQ16(Pointer,End,Done) //
// {
MOVE16_32(Pointer,Index1) // Index1 = Pointer
ADD32(Index1,2,Index2) // Index2 = Index1 + 2
ARRAY_READ(hBlockStream,Index2,Block) // Block = hBlockStream[Index2]
ARRAY_WRITE(hBlockStream,Index1,Block) // hBlockStream[Index1] = Block
ARRAY_READ(hBlockPar1,Index2,Par1) // Par1 = hBlockPar1[Index2]
ARRAY_WRITE(hBlockPar1,Index1,Par1) // hBlockPar1[Index1] = Par1
ARRAY_READ(hBlockPar2,Index2,Par2) // Par2 = hBlockPar2[Index2]
ARRAY_WRITE(hBlockPar2,Index1,Par2) // hBlockPar2[Index1] = Par2
ADD16(Pointer,1,Pointer) // Pointer++
JR(Move) // }
Done: //
//
// Insert empty block //
MOVE16_32(End,Index1) // Index1 = End
SUB32(Index1,1,Index1) // Index1 -= 1
ARRAY_WRITE(hBlockStream,Index1,EMPTYBLOCK) // hBlockStream[Index1] = EMPTYBLOCK
ADD32(Index1,1,Index1) // Index1++
ARRAY_WRITE(hBlockStream,Index1,EMPTYBLOCK) // hBlockStream[Index1] = EMPTYBLOCK
SUB16(Place,1,Place) // Place--
} // }
//
//
// FindBlockType ***************************************************************************************
//
//
subcall FindBlockType // FindBlockType
{ // {
IN_16 BlockType //
OUT_16 Place //
//
DATA16 Block //
DATA32 Index //
//
MOVE8_16(0,Place) // Place = 0
FindBlock: // while (Block != BlockType)
// Get block type //
MOVE16_32(Place,Index) // Index = Place
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
JR_EQ16(Block,BlockType,BlockFound) // {
//
// Next block //
ADD16(1,Place,Place) // Place++
//
JR(FindBlock) // }
BlockFound: //
} // }
//
//
// UpdateStreamGraphics ********************************************************************************
//
//
subcall UpdateStreamGraphics // UpdateStreamGraphics
{ // {
IN_16 Cursor //
//
DATA16 X //
//
UI_DRAW(FILLWINDOW,BG_COLOR,TOPLINE_HEIGHT,0) // UI_DRAW(FILLWINDOW,BG_COLOR,TOPLINE_HEIGHT,0)
CALL(UpdateBlockStreamGraphics,Cursor) // CALL(UpdateBlockStreamGraphics,Cursor)
//
CALL(FindBlockType,STARTBLOCK,X) // CALL(FindBlockType,STARTBLOCK,X)
JR_GTEQ16(Cursor,X,Fileblock) // if (Cursor < X)
// {
MOVE16_16(X,Cursor) // Cursor = X
//
Fileblock: // }
//
SUB16(Cursor,X,X) // X -= Cursor
MUL16(X,4,X) // X *= 4
ADD16(X,20,X) // X += 17
UI_DRAW(BMPFILE,FG_COLOR,18,13,'ProgNav') // Draw bitmap
UI_DRAW(BMPFILE,FG_COLOR,X,13,'ProgNavdot') // Draw bitmap
//
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
} // }
//
//
// UpdateBlockStreamGraphics ***************************************************************************
//
//
subcall UpdateBlockStreamGraphics // UpdateBlockStreamGraphics
{ // {
IN_16 Cursor //
//
DATA32 Index //
DATA16 Block //
DATA16 Pointer //
DATA16 Start //
DATA16 End //
DATA16 Width //
DATA16 Height //
DATA16 X1 //
DATA16 X2 //
//
// Find start of block stream //
CALL(FindBlockType,FILEBLOCK,Start) // CALL(FindBlockType,FILEBLOCK,Start)
//
// Find end of block stream //
CALL(FindBlockType,LOOPBLOCK,End) // CALL(FindBlockType,LOOPBLOCK,End)
//
// Get block width at cursor //
MOVE16_16(Cursor,Pointer) // Pointer = Cursor
MOVE16_32(Pointer,Index) // Index = Pointer
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
CALL(UpdateBlock,Block,GET_WIDTH,Pointer,Width,Height) // CALL(UpdateBlock,Block,GET_WIDTH,Pointer,Width,Height)
DIV16(Width,2,X1) // X1 = Width / 2
SUB16(OBP_CENTER_X,X1,X1) // X1 = OBP_CENTER_X - X1
//
// Refresh block //
CALL(RefreshBlock,Pointer,X1,1) // CALL(RefreshBlock,Pointer,X1,1)
//
ADD16(X1,Width,X2) // X2 = X1 + Width
//
// Process blocks to the left of the cursor //
//
MOVE16_16(Cursor,Pointer) // Pointer = Cursor
//
ProcessLeft: // while ((Pointer > Start) && (X1 >= OBP_MIN_X))
JR_LTEQ16(Pointer,Start,ProcessLeftEnd) //
JR_LT16(X1,OBP_MIN_X,ProcessLeftEnd) //
// {
SUB16(Pointer,1,Pointer) // Pointer--
MOVE16_32(Pointer,Index) // Index = Pointer
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
CALL(UpdateBlock,Block,GET_WIDTH,Pointer,Width,Height) // CALL(UpdateBlock,Block,GET_WIDTH,Pointer,Width,Height)
SUB16(X1,Width,X1) // X1 -= Width
//
// Refresh block //
CALL(RefreshBlock,Pointer,X1,0) // CALL(RefreshBlock,Pointer,X1,0)
//
JR(ProcessLeft) // }
ProcessLeftEnd: //
//
MOVE16_16(X2,X1) // X1 = X2
//
// Process blocks to the right of the cursor //
//
MOVE16_16(Cursor,Pointer) // Pointer = Cursor
//
ProcessRight: // while ((Pointer < End) && (X1 < OBP_MAX_X))
JR_GTEQ16(Pointer,End,ProcessRightEnd) //
JR_GTEQ16(X1,OBP_MAX_X,ProcessRightEnd) //
// {
ADD16(Pointer,1,Pointer) // Pointer++
MOVE16_32(Pointer,Index) // Index = Pointer
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
CALL(UpdateBlock,Block,GET_WIDTH,Pointer,Width,Height) // CALL(UpdateBlock,Block,GET_WIDTH,Pointer,Width,Height)
//
// Refresh block //
CALL(RefreshBlock,Pointer,X1,0) // CALL(RefreshBlock,Pointer,X1,0)
//
ADD16(X1,Width,X1) // X1 += Width
//
JR(ProcessRight) // }
ProcessRightEnd: //
} // }
//
//
// RefreshBlock ****************************************************************************************
//
//
subcall RefreshBlock // RefreshBlock
{ // {
IN_16 Pointer //
IO_16 X1 //
IO_16 X2 //
//
DATA32 Index //
DATA16 Block //
//
MOVE16_32(Pointer,Index) // Index = Pointer
//
// Get block type //
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
//
// Activate block //
CALL(UpdateBlock,Block,REFRESH,Pointer,X1,X2) // CALL(UpdateBlock,Block,REFRESH,Pointer,X1,X2)
//
} // }
//
//
// BlockLibrary ****************************************************************************************
//
define LIB_MAX_HORZ 3 //
define LIB_MAX_VERT 4 //
define LIB_MAX_VISIBLE 2 //
//
//
subcall BlockLibrary // BlockLibrary
{ // {
IO_16 Cursor //
//
DATA16 Block //
DATA32 Index //
DATAF DataF //
DATA16 Horz // Horisontal pointer (X)
DATA16 Vert // Vertical pointer (Y)
DATA16 X0 //
DATA16 Y0 //
DATA16 Tmp //
DATA16 Tmp2 //
DATA16 Tmp3 //
DATA16 Pointer //
DATA16 TmpPointer //
DATA16 VertShow //
DATA16 VertCount //
DATA16 HorzCount //
DATA16 Start //
DATA8 State //
DATA8 Update //
DATA8 Run //
DATA8 Status //
//
// Initialise pointers //
MOVE16_16(2,Horz) // Horz = 2
MOVE16_16(LIB_MAX_VERT,Vert) // Vert = 0
SUB16(LIB_MAX_VERT,1,Start) // Start = LIB_MAX_VERT - 1
//
// Initialise variables //
MOVE8_8(1,Run) // Run = 1
MOVE8_8(1,Update) // Update = 1
//
// do
Loop: // {
JR_FALSE(Update,DoNotRefresh) // if (Update)
// {
MOVE8_8(0,Update) // Update = 0
//
// Calculate library block number //
ADD16(LIB_MAX_HORZ,1,Tmp) // Tmp = LIB_MAX_HORZ + 1
SUB16(LIB_MAX_VERT,Vert,Tmp2) // Tmp2 = LIB_MAX_VERT - Vert
MUL16(Tmp2,Tmp,Tmp) // Tmp *= Tmp2
ADD16(Tmp,Horz,Pointer) // Pointer = Horz + Tmp
//
UI_DRAW(FILLWINDOW,BG_COLOR,TOPLINE_HEIGHT,0) // UI_DRAW(FILLWINDOW,BG_COLOR,TOPLINE_HEIGHT,0)
//
// Show library items //
MOVE16_16(Start,VertShow) // VertShow = Start
MOVE16_16(0,VertCount) // VertCount = 0
WhileVertCount: // while (VertCount < LIB_MAX_VISIBLE)
JR_GTEQ16(VertCount,LIB_MAX_VISIBLE,EndWhileVertCount) //
// {
MOVE16_16(0,HorzCount) // HorzCount = 0
WhileHorzCount: // while (HorzCount < LIB_MAX_HORZ)
JR_GT16(HorzCount,LIB_MAX_HORZ,EndWhileHorzCount) //
// {
ADD16(LIB_MAX_HORZ,1,Tmp) // Tmp = LIB_MAX_HORZ + 1
SUB16(LIB_MAX_VERT,VertShow,Tmp2) // Tmp2 = LIB_MAX_VERT - VertShow
MUL16(Tmp2,Tmp,Tmp) // Tmp *= Tmp2
ADD16(Tmp,HorzCount,TmpPointer) // TmpPointer = Horz + Tmp
//
MOVE16_32(TmpPointer,Index) // Index = TmpPointer
ARRAY_READ(hBlockLib,Index,Block) // ARRAY_READ(hBlockLib,Index,Block)
//
JR_EQ16(Block,EMPTYBLOCK,Empty) // if (Block != EMPTYBLOCK)
// {
MUL16(52,VertCount,Y0) // Y0 = VertCount * 52
ADD16(21,Y0,Y0) // Y0 += 21
//
MUL16(42,HorzCount,X0) // X0 = HorzCount * 42
ADD16(3,X0,X0) // X0 += 3
//
CALL(UpdateBlock,Block,DRAW_ICON,Cursor,X0,Y0) // CALL(UpdateBlock,Block,DRAW_ICON,Cursor,X0,Y0)
//
MUL16(52,VertCount,Y0) // Y0 = VertCount * 52
ADD16(20,Y0,Y0) // Y0 += 20
//
MUL16(42,HorzCount,X0) // X0 = HorzCount * 40
ADD16(2,X0,X0) // X0 += 2
//
UI_DRAW(RECT,FG_COLOR,X0,Y0,40,48) // UI_DRAW(RECT,FG_COLOR,X0,Y0,38,48
Empty: // }
//
SUB16(LIB_MAX_VERT,Start,Tmp3) // Tmp3 = LIB_MAX_VERT - Start
//
JR_NEQ16(VertCount,0,EndBottom) // if (VertCount == 0)
// {
//
JR_LTEQ16(Tmp3,1,Bottom) // if (Tmp3 > 1)
// { // show bottom blocks
//
MUL16(42,HorzCount,X0) // X0 = HorzCount * 40
ADD16(2,X0,X0) // X0 += 2
UI_DRAW(RECT,FG_COLOR,X0,124,40,5) // UI_DRAW(RECT,FG_COLOR,X0,Y0,38,48
//
Bottom: // }
EndBottom: // }
//
JR_NEQ16(VertCount,0,EndTop) // if (VertCount == 0)
// {
JR_GTEQ16(Tmp3,LIB_MAX_VERT,Top) // if (Tmp3 < LIB_MAX_VERT)
// { // show top blocks
//
MUL16(42,HorzCount,X0) // X0 = HorzCount * 40
ADD16(2,X0,X0) // X0 += 2
UI_DRAW(RECT,FG_COLOR,X0,11,40,5) // UI_DRAW(RECT,FG_COLOR,X0,Y0,38,48
UI_DRAW(LINE,BG_COLOR,0,11,175,11) // UI_DRAW(LINE,BG_COLOR,0,11,175,11)
//
Top: // }
EndTop: // }
//
ADD16(HorzCount,1,HorzCount) // HorzCount++
JR(WhileHorzCount) // }
EndWhileHorzCount: //
ADD16(VertShow,1,VertShow) // VertShow++
ADD16(VertCount,1,VertCount) // VertCount++
JR(WhileVertCount) // }
EndWhileVertCount: //
//
JR_GT16(Tmp3,1,NotProg) // if (Tmp3 <= 1)
// { // show lib to prog
//
UI_DRAW(BMPFILE,FG_COLOR,74,122,'LibToProg') // Draw bitmap
//
NotProg: // }
// Draw separator line //
JR_NEQ16(Start,3,Not3) // if (Start == 3)
// {
UI_DRAW(DOTLINE,FG_COLOR,2,17,167,17,1,1) // UI_DRAW(DOTLINE,FG_COLOR,2,17,167,17,1,1)
UI_DRAW(DOTLINE,FG_COLOR,3,18,167,18,1,1) // UI_DRAW(DOTLINE,FG_COLOR,3,18,167,18,1,1)
//
Not3: // }
//
JR_NEQ16(Start,2,Not2) // if (Start == 2)
// {
UI_DRAW(DOTLINE,FG_COLOR,2,69,167,69,1,1) // UI_DRAW(DOTLINE,FG_COLOR,2,69,167,69,1,1)
UI_DRAW(DOTLINE,FG_COLOR,3,70,167,70,1,1) // UI_DRAW(DOTLINE,FG_COLOR,3,70,167,70,1,1)
//
Not2: // }
//
JR_NEQ16(Start,1,Not1) // if (Start == 1)
// {
UI_DRAW(DOTLINE,FG_COLOR,2,121,167,121,1,1) // UI_DRAW(DOTLINE,FG_COLOR,2,121,167,121,1,1)
UI_DRAW(DOTLINE,FG_COLOR,3,122,167,122,1,1) // UI_DRAW(DOTLINE,FG_COLOR,3,122,167,122,1,1)
//
Not1: // }
//
// Draw bar //
ADD16(Vert,1,Y0) // Y0 = Vert + 1
UI_DRAW(VERTBAR,FG_COLOR,170,20,6,100,0,5,Y0) // UI_DRAW(VERTBAR,FG_COLOR,170,20,6,100,0,5,Y0)
//
MOVE16_32(Pointer,Index) // Index = Pointer
ARRAY_READ(hBlockLib,Index,Block) // ARRAY_READ(hBlockLib,Index,Block)
//
SUB16(Vert,Start,VertShow) // VertShow = Vert - Start
//
MUL16(52,VertShow,Y0) // Y0 = VertShow * 52
ADD16(14,Y0,Y0) // Y0 += 14
//
MUL16(42,Horz,X0) // X0 = Horz * 40
//
JR_NEQ16(X0,0,NotZero) // if (X0 == 0)
// {
UI_DRAW(BMPFILE,FG_COLOR,X0,Y0,'LIBH2') // Draw bitmap
//
JR(EndZero) // }
// else
NotZero: // {
//
ADD16(-4,X0,X0) // X0 += -4
UI_DRAW(BMPFILE,FG_COLOR,X0,Y0,'LIBH1') // Draw bitmap
//
EndZero: // }
//
MUL16(52,VertShow,Y0) // Y0 = VertShow * 52
ADD16(23,Y0,Y0) // Y0 += 21
//
MUL16(42,Horz,X0) // X0 = Horz * 42
ADD16(5,X0,X0) // X0 += 3
//
CALL(UpdateBlock,Block,DRAW_ICON,Cursor,X0,Y0) // CALL(UpdateBlock,Block,DRAW_ICON,Cursor,X0,Y0)
//
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
DoNotRefresh: // }
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
UI_BUTTON(GET_VERT,Tmp) // UI_BUTTON(GET_VERT,Tmp)
//
JR_NEQ16(Vert,LIB_MAX_VERT,NotEnd) // if ((Vert == LIB_MAX_VERT) &&
JR_NEQ16(Tmp,1,NotEnd) // (Tmp == 1))
// {
MOVE8_8(0,Run) // Run = 0
//
NotEnd: // }
//
CALL(ControlPointer,0,LIB_MAX_VERT,LIB_MAX_VISIBLE,Tmp,Vert,Start,Update) // CALL(ControlPointer,0,LIB_MAX_VERT,LIB_MAX_VISIBLE,Tmp,Vert,Start,Update)
UI_BUTTON(GET_HORZ,Tmp) // UI_BUTTON(GET_HORZ,Tmp)
CALL(ControlPointer,0,LIB_MAX_HORZ,0,Tmp,Horz,Tmp,Update) // CALL(ControlPointer,0,LIB_MAX_HORZ,0,Tmp,Horz,Tmp,Update)
//
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,State) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,State)
JR_FALSE(State,NotEnter) // if (State)
// {
// Get block type //
MOVE16_32(Cursor,Index) // Index = Cursor
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
//
JR_NEQ16(Block,SEPARATOR,NotSeparator) // if (Block == SEPARATOR)
// {
// Insert new block in stream //
MOVE16_32(Pointer,Index) // Index = Pointer
ARRAY_READ(hBlockLib,Index,Block) // Block = hBlockLib[Index]
//
JR_EQ16(Block,EMPTYBLOCK,EmptyBlock1) // if (Block != EMPTYBLOCK)
// {
JR_EQ16(Block,TRASHBIN,SkipTrashBin) // if (Block != TRASHBIN)
// {
MOVE8_8(1,Changed) // Changed = 1
CALL(InsertBlockInStream,Block,Cursor,Status) // CALL(InsertBlockInStream,Block,Cursor,Status)
JR_FALSE(Status,Full1) // if (Status)
// {
ADD16(Cursor,1,Cursor) // Cursor++
Full1: // }
CALL(UpdateBlock,Block,INIT,Cursor,0,0) // CALL(UpdateBlock,Block,INIT,Cursor,0,0)
SkipTrashBin: // }
MOVE8_8(0,Run) // Run = 0
EmptyBlock1: // }
JR(EndSeparator) //
// }
// else
NotSeparator: // {
//
MOVE16_32(Pointer,Index) // Index = Pointer
ARRAY_READ(hBlockLib,Index,Block) // Block = hBlockLib[Index]
//
JR_EQ16(Block,EMPTYBLOCK,EmptyBlock2) // if (Block != EMPTYBLOCK)
// {
MOVE8_8(1,Changed) // Changed = 1
CALL(RemoveBlockInStream,Cursor) // CALL(RemoveBlockInStream,Cursor)
JR_EQ16(Block,TRASHBIN,EndInsert) // if (Block != TRASHBIN)
// {
CALL(InsertBlockInStream,Block,Cursor,Status) // CALL(InsertBlockInStream,Block,Cursor,Status)
JR_FALSE(Status,Full2) // if (Status)
// {
ADD16(Cursor,1,Cursor) // Cursor++
Full2: // }
CALL(UpdateBlock,Block,INIT,Cursor,0,0) // CALL(UpdateBlock,Block,INIT,Cursor,0,0)
EndInsert: // }
MOVE8_8(0,Run) // Run = 0
EmptyBlock2: // }
EndSeparator: // }
NotEnter: // }
UI_BUTTON(SHORTPRESS,BACK_BUTTON,State) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,State)
JR_FALSE(State,NotBack) // if (State)
// {
MOVE8_8(0,Run) // Run = 0
NotBack: // }
// }
JR_TRUE(Run,Loop) // while (Run)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
} // }
//
//
// ActivateBlock ***************************************************************************************
//
//
subcall ActivateBlock // ActivateBlock
{ // {
IO_16 Cursor //
//
DATA32 Index //
DATA16 Block //
DATA16 Width //
DATA16 Height //
DATA16 X1 //
DATA16 X2 //
//
// Get block type //
MOVE16_32(Cursor,Index) // Index = Cursor
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
CALL(UpdateBlock,Block,GET_WIDTH,Cursor,Width,Height) // CALL(UpdateBlock,Block,GET_WIDTH,Cursor,Width,Height)
DIV16(Width,2,X1) // X1 = Width / 2
SUB16(OBP_CENTER_X,X1,X1) // X1 = OBP_CENTER_X - X1
//
// Activate block //
MOVE16_16(0,X2) // X2 = 0
CALL(UpdateBlock,Block,ACTIVATE,Cursor,X1,X2) // CALL(UpdateBlock,Block,ACTIVATE,Cursor,X1,X2)
JR_NEQ16(Block,SEPARATOR,NotSeparator) // if (Block != SEPARATOR)
// {
JR_EQ16(X2,0,NotInsert) // if (X2)
// {
MOVE16_32(Cursor,Index) // Index = Cursor
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
CALL(UpdateBlock,Block,INIT,Cursor,X1,X2) // CALL(UpdateBlock,Block,INIT,Cursor,X1,X2)
//
NotInsert: // }
NotSeparator: // }
} // }
//
//
// UpdateBlock *****************************************************************************************
//
//
subcall UpdateBlock // UpdateBlock
{ // {
IN_16 Block //
IN_16 Function //
IO_16 Pointer //
IO_16 X1 //
IO_16 X2 //
//
JR_NEQ16(Block,TRASHBIN,NotTrashBin) // if (Block == TRASHBIN)
// {
CALL(TrashBin,Function,Pointer,X1,X2) // CALL(TrashBin,Function,Pointer,X1,X2)
NotTrashBin: // }
//
JR_NEQ16(Block,FILEBLOCK,NotFileBlock) // if (Block == FILEBLOCK)
// {
CALL(FileBlock,Function,Pointer,X1,X2) // CALL(FileBlock,Function,Pointer,X1,X2)
NotFileBlock: // }
//
JR_NEQ16(Block,STARTBLOCK,NotStartBlock) // if (Block == STARTBLOCK)
// {
CALL(StartBlock,Function,Pointer,X1,X2) // CALL(StartBlock,Function,Pointer,X1,X2)
NotStartBlock: // }
//
JR_NEQ16(Block,SEPARATOR,NotSeparator) // if (Block == SEPARATOR)
// {
CALL(Separator,Function,Pointer,X1,X2) // CALL(Separator,Function,Pointer,X1,X2)
NotSeparator: // }
//
JR_NEQ16(Block,LOOPBLOCK,NotLoopBlock) // if (Block == LOOPBLOCK)
// {
CALL(LoopBlock,Function,Pointer,X1,X2) // CALL(LoopBlock,Function,Pointer,X1,X2)
NotLoopBlock: // }
//
JR_NEQ16(Block,DOUBLEMOTORBLOCK,NotDoubleMotorBlock) // if (Block == DOUBLEMOTORBLOCK)
// {
CALL(DoubleMotorBlock,Function,Pointer,X1,X2) // CALL(DoubleMotorBlock,Function,Pointer,X1,X2)
NotDoubleMotorBlock: // }
//
JR_NEQ16(Block,SINGLEMOTORBLOCK,NotSingleMotorBlock) // if (Block == SINGLEMOTORBLOCK)
// {
CALL(SingleMotorBlock,Function,Pointer,X1,X2) // CALL(SingleMotorBlock,Function,Pointer,X1,X2)
NotSingleMotorBlock: // }
//
JR_NEQ16(Block,MEDIUMMOTORBLOCK,NotMediumMotorBlock) // if (Block == MEDIUMMOTORBLOCK)
// {
CALL(MediumMotorBlock,Function,Pointer,X1,X2) // CALL(MediumMotorBlock,Function,Pointer,X1,X2)
NotMediumMotorBlock: // }
//
JR_NEQ16(Block,LEDBLOCK,NotLedBlock) // if (Block == LEDBLOCK)
// {
CALL(LedBlock,Function,Pointer,X1,X2) // CALL(LedBlock,Function,Pointer,X1,X2)
NotLedBlock: // }
//
JR_NEQ16(Block,SOUNDBLOCK,NotSoundBlock) // if (Block == SOUNDBLOCK)
// {
CALL(SoundBlock,Function,Pointer,X1,X2) // CALL(SoundBlock,Function,Pointer,X1,X2)
NotSoundBlock: // }
//
JR_NEQ16(Block,DISPLAYBLOCK,NotDisplayBlock) // if (Block == DISPLAYBLOCK)
// {
CALL(DisplayBlock,Function,Pointer,X1,X2) // CALL(DisplayBlock,Function,Pointer,X1,X2)
NotDisplayBlock: // }
//
JR_NEQ16(Block,TOUCHBLOCK,NotTouchBlock) // if (Block == TOUCHBLOCK)
// {
CALL(TouchBlock,Function,Pointer,X1,X2) // CALL(TouchBlock,Function,Pointer,X1,X2)
NotTouchBlock: // }
//
JR_NEQ16(Block,REFLECTEDBLOCK,NotReflectedBlock) // if (Block == REFLECTEDBLOCK)
// {
CALL(ReflectedBlock,Function,Pointer,X1,X2) // CALL(ColorBlock,Function,Pointer,X1,X2)
NotReflectedBlock: // }
//
JR_NEQ16(Block,COLORBLOCK,NotColorBlock) // if (Block == COLORBLOCK)
// {
CALL(ColorBlock,Function,Pointer,X1,X2) // CALL(ColorBlock,Function,Pointer,X1,X2)
NotColorBlock: // }
//
JR_NEQ16(Block,TEMPERATUREBLOCK,NotTemperatureBlock) // if (Block == TEMPERATUREBLOCK)
// {
CALL(TemperatureBlock,Function,Pointer,X1,X2) // CALL(TemperatureBlock,Function,Pointer,X1,X2)
NotTemperatureBlock: // }
//
JR_NEQ16(Block,ULTRASONICBLOCK,NotUltrasonicBlock) // if (Block == ULTRASONICBLOCK)
// {
CALL(UltrasonicBlock,Function,Pointer,X1,X2) // CALL(UltrasonicBlock,Function,Pointer,X1,X2)
NotUltrasonicBlock: // }
//
JR_NEQ16(Block,PROXIMITYBLOCK,NotProximityBlock) // if (Block == PROXIMITYBLOCK)
// {
CALL(ProximityBlock,Function,Pointer,X1,X2) // CALL(ProximityBlock,Function,Pointer,X1,X2)
NotProximityBlock: // }
//
JR_NEQ16(Block,BEACONBLOCK,NotBeaconBlock) // if (Block == BEACONBLOCK)
// {
CALL(BeaconBlock,Function,Pointer,X1,X2) // CALL(BeaconBlock,Function,Pointer,X1,X2)
NotBeaconBlock: // }
//
JR_NEQ16(Block,ANGLEBLOCK,NotAngleBlock) // if (Block == ANGLEBLOCK)
// {
CALL(AngleBlock,Function,Pointer,X1,X2) // CALL(AngleBlock,Function,Pointer,X1,X2)
NotAngleBlock: // }
//
JR_NEQ16(Block,ENCODERBLOCK,NotEncoderBlock) // if (Block == ENCODERBLOCK)
// {
CALL(EncoderBlock,Function,Pointer,X1,X2) // CALL(EncoderBlock,Function,Pointer,X1,X2)
NotEncoderBlock: // }
//
JR_NEQ16(Block,BUTTONBLOCK,NotButtonBlock) // if (Block == BUTTONBLOCK)
// {
CALL(ButtonBlock,Function,Pointer,X1,X2) // CALL(ButtonBlock,Function,Pointer,X1,X2)
NotButtonBlock: // }
//
JR_NEQ16(Block,DELAYBLOCK,NotDelayBlock) // if (Block == DELAYBLOCK)
// {
CALL(DelayBlock,Function,Pointer,X1,X2) // CALL(DelayBlock,Function,Pointer,X1,X2)
NotDelayBlock: // }
//
} // }
//
//
// SaveFilename ****************************************************************************************
//
define FILEBLOCK_WIDTH 62 //
define FILEBLOCK_PAR1_MIN 1 //
define FILEBLOCK_PAR1_DEFAULT 2 //
define FILEBLOCK_PAR1_MAX 2 //
//
subcall SaveFilename // SaveFilename
{ // {
DATAF Tmp //
DATA32 Size //
DATA16 hFile //
DATA16 FileNo //
DATA8 State //
DATAS String FILENAMESIZE //
DATAS Name FILENAMESIZE //
DATAS Filename FILENAMESIZE //
//
// Find file name suggestion //
MOVE16_16(0,FileNo) // FileNo = 0
FILE(OPEN_READ,FILEBLOCK_FILENO,hFile,Size) // FILE(OPEN_READ,FILEBLOCK_FILENO,hFile,Size)
JR_EQ32(Size,0,NotFound) // if (Size != 0)
// {
FILE(READ_VALUE,hFile,DEL_TAB,Tmp) // FILE(READ_VALUE,hFile,DEL_TAB,Tmp)
FILE(CLOSE,hFile) // FILE(CLOSE,hFile)
MOVEF_16(Tmp,FileNo) // FileNo = Tmp
NotFound: // }
ADD16(FileNo,1,FileNo) // FileNo++
STRINGS(NUMBER_TO_STRING,FileNo,3,String) // STRINGS(NUMBER_TO_STRING,FileNo,3,String)
//
STRINGS(ADD,BPRG_FILE,String,Name) // STRINGS(ADD,BPRG_FILE,String,Name)
//
// Save name for compare //
STRINGS(DUPLICATE,Name,String) // STRINGS(DUPLICATE,Name,String)
//
// Get file name from user //
MOVE8_8(CHARSET_NAME,State) // State = CHARSET_NAME
UI_DRAW(KEYBOARD,FG_COLOR,16,26,ICON_DISC,NAMESIZE,'',State,Name) // UI_DRAW(KEYBOARD,FG_COLOR,16,26,ICON_DISC,NAMESIZE,'',State,Name)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
//
JR_FALSE(Name,NoName) // if (Name[0])
// {
STRINGS(COMPARE,Name,String,State) // STRINGS(COMPARE,Name,String,State)
JR_FALSE(State,NotSuggested) // if (State)
// {
MOVE16_F(FileNo,Tmp) // Tmp = FileNo
FILE(OPEN_WRITE,FILEBLOCK_FILENO,hFile) // FILE(OPEN_WRITE,FILEBLOCK_FILENO,hFile)
FILE(WRITE_VALUE,hFile,DEL_TAB,Tmp,3,0) // FILE(WRITE_VALUE,hFile,DEL_TAB,Tmp,3,0)
FILE(CLOSE,hFile) // FILE(CLOSE,hFile)
//
NotSuggested: // }
//
// Save file //
STRINGS(ADD,PROGRAM_FOLDER,'/',String) // STRINGS(ADD,PROGRAM_FOLDER,'/',String)
STRINGS(ADD,String,Name,Filename) // STRINGS(ADD,String,Name,Filename)
STRINGS(ADD,Filename,EXT_PROGRAM,Name) // STRINGS(ADD,Filename,EXT_PROGRAM,Name)
CALL(SaveFile,Name) // CALL(SaveFile,Name)
MOVE8_8(0,Changed) // Changed = 0
//
NoName: // }
} // }
//
//
// FileBlock *******************************************************************************************
//
define FILEBLOCK_WIDTH 62 //
define FILEBLOCK_PAR1_MIN 1 // Save
define FILEBLOCK_PAR1_DEFAULT 2 //
define FILEBLOCK_PAR1_MAX 2 // Load
//
subcall FileBlock // FileBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATA32 Index // Array index
DATA32 Size //
DATA16 hFile //
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Status //
DATA8 Stat //
DATA8 Stay //
DATA8 State //
DATA8 Flag //
DATA8 Type //
DATA8 Volume //
DATAS String FILENAMESIZE //
DATAS Name FILENAMESIZE //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(FILEBLOCK_PAR1_DEFAULT,Par1) // Par1 = FILEBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(FILEBLOCK_WIDTH,X1) // X1 = FILEBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE16_16(FILEBLOCK_PAR1_DEFAULT,Par1) // Par1 = FILEBLOCK_PAR1_DEFAULT
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
// do
Refresh: // {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
JR_NEQ16(Par1,FILEBLOCK_PAR1_MIN,NotMax) // if (Par1 == FILEBLOCK_PAR1_MIN)
// {
ADD16(X1,20,X3) // X3 = X1 + 20
//
UI_DRAW(BMPFILE,FG_COLOR,X3,76,'PrgSaveH') // Draw bitmap
UI_DRAW(BMPFILE,FG_COLOR,X3,49,'PrgOpen') // Draw bitmap
//
JR(EndMax) // }
// else
NotMax: // {
ADD16(X1,20,X3) // X3 = X1 + 20
//
UI_DRAW(BMPFILE,FG_COLOR,X3,76,'PrgSave') // Draw bitmap
UI_DRAW(BMPFILE,FG_COLOR,X3,49,'PrgOpenH') // Draw bitmap
//
EndMax: // }
//
JR(EndStay) // }
// else
NotStay: // {
ADD16(X1,20,X3) // X3 = X1 + 20
//
UI_DRAW(BMPFILE,FG_COLOR,X3,76,'PrgSave') // Draw bitmap
UI_DRAW(BMPFILE,FG_COLOR,X3,49,'PrgOpen') // Draw bitmap
EndStay: // }
//
ADD16(X1,51,X3) // X3 = X1 + 51
UI_DRAW(DOTLINE,FG_COLOR,X3,37,X3,109,1,1) // UI_DRAW(DOTLINE,FG_COLOR,X3,37,X3,109,1,1)
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
UI_BUTTON(GET_VERT,Tmp16) // UI_BUTTON(GET_VERT,Tmp16)
JR_EQ16(Tmp16,0,NotVert) // if (Tmp16)
// {
SUB16(0,Tmp16,Tmp16) // Tmp16 = 0 - Tmp16
ADD16(Par1,Tmp16,Par1) // Par1 += Tmp16
JR_LTEQ16(Par1,FILEBLOCK_PAR1_MAX,NotTooHigh) // if (Par1 > FILEBLOCK_PAR1_MAX)
// {
MOVE16_16(FILEBLOCK_PAR1_MAX,Par1) // Par1 = FILEBLOCK_PAR1_MAX
NotTooHigh: // }
JR_GTEQ16(Par1,FILEBLOCK_PAR1_MIN,NotTooLow) // if (Par1 < FILEBLOCK_PAR1_MIN)
// {
MOVE16_16(FILEBLOCK_PAR1_MIN,Par1) // Par1 = FILEBLOCK_PAR1_MIN
NotTooLow: // }
NotVert: // }
//
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,State) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,State)
JR_FALSE(State,NotEnter) // if (State)
// {
JR_NEQ16(Par1,FILEBLOCK_PAR1_MIN,NotSave) // if (Par1 == FILEBLOCK_PAR1_MIN)
// {
CALL(SaveFilename) // CALL(SaveFilename)
//
JR(EndSave) // }
// else
NotSave: // {
//
MOVE8_8(1,Status) // Status = 1
JR_FALSE(Changed,NoChanges) // if (Changed)
// {
INFO(GET_VOLUME,Volume) // INFO(GET_VOLUME,Volume)
SOUND(PLAY,Volume,'GeneralAlarm') // SOUND(PLAY,Volume,'GeneralAlarm')
//
MOVE8_8(0,Stat) // Stat = 0
UI_DRAW(QUESTION,FG_COLOR,16,50,WARNSIGN,TO_FILE,'',Stat,Status) // UI_DRAW(QUESTION,FG_COLOR,16,50,WARNSIGN,TO_FILE,'',Stat,Status)
JR_NEQ8(Status,1,DontSave) // if (Status == 1)
// {
CALL(SaveFilename) // CALL(SaveFilename)
DontSave: // }
NoChanges: // }
//
JR_EQ8(Status,-1,EndSave) // if (Status != -1)
// {
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_DRAW(BMPFILE,FG_COLOR,17,11,'144x116_POP6') // Draw bitmap
UI_DRAW(ICON,FG_COLOR,32,16,NORMAL_ICON,ICON_OPENFOLDER) // UI_DRAW(ICON,FG_COLOR,24,16,NORMAL_ICON,ICON_OPENFOLDER)
UI_DRAW(SELECT_FONT,1) // UI_DRAW(SELECT_FONT,1)
UI_DRAW(TEXT,FG_COLOR,56,18,'Open') // UI_DRAW(TEXT,FG_COLOR,56,18,'Open')
UI_DRAW(SELECT_FONT,0) // UI_DRAW(SELECT_FONT,0)
UI_DRAW(LINE,FG_COLOR,22,29,155,29) // UI_DRAW(LINE,FG_COLOR,22,29,155,29)
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
//
MOVE8_8(TYPE_RESTART_BROWSER,Type) // Type = TYPE_RESTART_BROWSER
STRINGS(DUPLICATE,PROGRAM_FOLDER,String) // STRINGS(DUPLICATE,PROGRAM_FOLDER,String)
UI_DRAW(BROWSE,BROWSE_FILES,24,33,130,88,FILENAMESIZE,Type,String) // UI_DRAW(BROWSE,BROWSE_FILES,24,33,130,88,FILENAMESIZE,Type,String)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
//
//
CP_EQ8(Type,TYPE_PROGRAM,Flag) // if (Type == TYPE_PROGRAM)
JR_FALSE(Flag,NotProgram) // {
//
STRINGS(ADD,String,EXT_PROGRAM,Name) // STRINGS(ADD,String,EXT_PROGRAM,Name)
// Load file //
CALL(LoadFile,Name) // CALL(LoadFile,Name)
MOVE8_8(0,Changed) // Changed = 0
//
NotProgram: // }
// }
EndSave: // }
ADD16(Pointer,1,Pointer) // Pointer++
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
MOVE8_8(0,Stay) // Stay = 0
MOVE16_16(0,X2) // X2 = 0
//
NotEnter: // }
UI_BUTTON(SHORTPRESS,RIGHT_BUTTON,State) // UI_BUTTON(SHORTPRESS,RIGHT_BUTTON,State)
JR_FALSE(State,NotRight) // if (State)
// {
ADD16(Pointer,1,Pointer) // Pointer++
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
MOVE8_8(0,Stay) // Stay = 0
MOVE16_16(0,X2) // X2 = 0
//
NotRight: // }
UI_BUTTON(SHORTPRESS,BACK_BUTTON,State) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,State)
JR_FALSE(State,NotBack) // if (State)
// {
ADD16(Pointer,1,Pointer) // Pointer++
MOVE8_8(0,Stay) // Stay = 0
MOVE16_16(0,X2) // X2 = 0
//
NotBack: // }
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
//
// TrashBin ********************************************************************************************
//
define STARTBLOCK_WIDTH 24 //
//
subcall TrashBin // TrashBin
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'block_bin') // Draw bitmap
//
NotDrawIcon: // }
//
} // }
//
//
// GetData32 *******************************************************************************************
//
//
subcall GetData32 // GetData32
{ // {
IN_32 Index //
OUT_32 Result //
IN_16 hProgram //
//
DATA8 Data8 //
DATA8 Align //
DATA32 Data32 //
//
ARRAY_READ(hProgram,Index,Data8) // Data8 = hProgram[Index]
MOVE8_32(Data8,Result) // Result = Data8
ADD32(Index,1,Index) // Index++
ARRAY_READ(hProgram,Index,Data8) // Data8 = hProgram[Index]
MOVE8_32(Data8,Data32) // Data32 = Data8
MUL32(Data32,0x100,Data32) // Data32 *= 0x100
ADD32(Result,Data32,Result) // Result += Data32
//
ADD32(Index,1,Index) // Index++
ARRAY_READ(hProgram,Index,Data8) // Data8 = hProgram[Index]
MOVE8_32(Data8,Data32) // Data32 = Data8
MUL32(Data32,0x10000,Data32) // Data32 *= 0x10000
ADD32(Result,Data32,Result) // Result += Data32
ADD32(Index,1,Index) // Index++
ARRAY_READ(hProgram,Index,Data8) // Data8 = hProgram[Index]
MOVE8_32(Data8,Data32) // Data32 = Data8
MUL32(Data32,0x1000000,Data32) // Data32 *= 0x1000000
ADD32(Result,Data32,Result) // Result += Data32
} // }
//
//
// GetData16 *******************************************************************************************
//
//
subcall GetData16 // GetData16
{ // {
IN_32 Index //
OUT_16 Result //
IN_16 hProgram //
//
DATA16 Data16 //
DATA8 Data8 //
//
ARRAY_READ(hProgram,Index,Data8) // Data8 = hProgram[Index]
MOVE8_16(Data8,Result) // Result = Data8
ADD32(Index,1,Index) // Index++
ARRAY_READ(hProgram,Index,Data8) // Data8 = hProgram[Index]
MOVE8_16(Data8,Data16) // Data16 = Data8
MUL16(Data16,0x100,Data16) // Data16 *= 0x100
ADD16(Result,Data16,Result) // Result += Data16
} // }
//
//
// PutData16 *******************************************************************************************
//
//
subcall PutData16 // PutData16
{ // {
IN_32 Index //
IN_16 Data //
IN_16 hProgram //
//
DATA16 Data16 //
DATA8 Data8 //
//
AND16(Data,0xFF,Data16) //
MOVE16_8(Data16,Data8) //
ARRAY_WRITE(hProgram,Index,Data8) // hProgram[Index] = Data8
ADD32(Index,1,Index) // Index++
DIV16(Data,0x100,Data16) //
MOVE16_8(Data16,Data8) //
ARRAY_WRITE(hProgram,Index,Data8) // hProgram[Index] = Data8
} // }
//
//
// GetData8 ********************************************************************************************
//
//
subcall GetData8 // GetData8
{ // {
IN_32 Index //
OUT_16 Result //
IN_16 hProgram //
//
DATA8 Data8 //
//
ARRAY_READ(hProgram,Index,Data8) // Data8 = hProgram[Index]
MOVE8_16(Data8,Result) // Result = Data8
} // }
//
//
// PutData8 ********************************************************************************************
//
//
subcall PutData8 // PutData8
{ // {
IN_32 Index //
IN_16 Data //
IN_16 hProgram //
//
DATA8 Data8 //
//
MOVE16_8(Data,Data8) //
ARRAY_WRITE(hProgram,Index,Data8) // hProgram[Index] = Data8
} // }
//
//
// LoadFile ********************************************************************************************
//
//
subcall LoadFile // void LoadFile(Name)
{ // {
IN_S Name FILENAMESIZE //
//
DATA32 Size //
DATA32 Index // Array index
DATA16 hFile //
DATA16 hProgram //
DATA32 StartOfCalls // Offset to start of calls
DATA16 NoOfObjects // Number of objects
DATA16 Start //
DATA16 Point //
DATA16 Pc //
DATA16 Block //
DATA16 Par //
//
// Read file for OBP //
FILE(OPEN_READ,Name,hFile,Size) // FILE(OPEN_READ,Name,hFile,Size)
ARRAY(CREATE8,Size,hProgram) // ARRAY(CREATE8,Size,hProgram)
FILE(READ_BYTES,hFile,Size,@hProgram) // FILE(READ_BYTES,hFile,Size,@hProgram)
FILE(CLOSE,hFile) // FILE(CLOSE,hFile)
//
// Get header info //
CALL(GetData16,10,NoOfObjects,hProgram) // CALL(GetData16,10,NoOfObjects,hProgram)
CALL(GetData32,16,StartOfCalls,hProgram) //
// Find start block in BlockStream //
CALL(FindBlockType,STARTBLOCK,Start) // CALL(FindBlockType,STARTBLOCK,Start)
//
MOVE16_16(Start,Point) // Point = Start
//
MOVE16_16(StartOfCalls,Pc) // Pc = StartOfCalls
//
// do
Insert: // {
ADD16(Pc,1,Pc) // Pc++
MOVE16_32(Pc,Index) // Index = Pc
CALL(GetData8,Index,Block,hProgram) // CALL(GetData8,Index,Block,hProgram)
MOVE16_32(Point,Index) // Index = Point
ARRAY_WRITE(hBlockStream,Index,Block) // hBlockStream[Index] = Block
//
// Insert par 1 in program //
ADD16(Pc,3,Pc) // Pc += 3
MOVE16_32(Pc,Index) // Index = Pc
CALL(GetData16,Index,Par,hProgram) // CALL(GetData16,Index,Par,hProgram)
MOVE16_32(Point,Index) // Index = Point
ARRAY_WRITE(hBlockPar1,Index,Par) // hBlockPar1[Index] = Par
//
// Insert par 2 in program //
ADD16(Pc,3,Pc) // Pc += 3
MOVE16_32(Pc,Index) // Index = Pc
CALL(GetData16,Index,Par,hProgram) // CALL(GetData16,Index,Par,hProgram)
MOVE16_32(Point,Index) // Index = Point
ARRAY_WRITE(hBlockPar2,Index,Par) // hBlockPar2[Index] = Par
//
// Point at next call opcode //
ADD16(Pc,2,Pc) // Pc += 2
//
JR_EQ16(Block,LOOPBLOCK,NoSeparator) // if (Block != LOOPBLOCK)
// {
ADD16(Point,1,Point) // Point++
//
MOVE16_32(Point,Index) // Index = Point
ARRAY_WRITE(hBlockStream,Index,SEPARATOR) // hBlockStream[Index] = SEPARATOR
ARRAY_WRITE(hBlockPar1,Index,0) // hBlockPar1[Index] = 0
ARRAY_WRITE(hBlockPar2,Index,0) // hBlockPar2[Index] = 0
//
ADD16(Point,1,Point) // Point++
NoSeparator: // }
// }
JR_NEQ16(Block,LOOPBLOCK,Insert) // while (Block != LOOPBLOCK)
//
} // }
//
//
// SaveFile ********************************************************************************************
//
//
subcall SaveFile // void SaveFile(Name)
{ // {
IO_S Name FILENAMESIZE //
//
DATA32 Size //
DATA32 Index // Array index
DATA16 hFile //
DATA16 hProgram //
DATA32 StartOfCalls //
DATA16 NoOfObjects //
DATA16 Start //
DATA16 End //
DATA16 Point //
DATA16 Pc //
DATA16 Block //
DATA16 Par //
//
// Read template for OBP //
FILE(OPEN_READ,TEMPLATE_FILE,hFile,Size) // FILE(OPEN_READ,TEMPLATE_FILE,hFile,Size)
ARRAY(CREATE8,Size,hProgram) // ARRAY(CREATE8,Size,hProgram)
FILE(READ_BYTES,hFile,Size,@hProgram) // FILE(READ_BYTES,hFile,Size,@hProgram)
FILE(CLOSE,hFile) // FILE(CLOSE,hFile)
//
// Adjust template for run //
CALL(GetData16,10,NoOfObjects,hProgram) // CALL(GetData16,10,NoOfObjects,hProgram)
CALL(GetData32,16,StartOfCalls,hProgram) //
//
CALL(FindBlockType,STARTBLOCK,Start) // CALL(FindBlockType,STARTBLOCK,Start)
CALL(FindBlockType,LOOPBLOCK,End) // CALL(FindBlockType,LOOPBLOCK,End)
//
MOVE16_16(Start,Point) // Point = Start
//
MOVE16_16(StartOfCalls,Pc) // Pc = StartOfCalls
//
Insert: // while (Point <= End)
JR_GT16(Point,End,EndInsert) // //
// {
MOVE16_32(Point,Index) // Index = Point
ARRAY_READ(hBlockStream,Index,Block) // Block = hBlockStream[Index]
JR_EQ16(Block,SEPARATOR,NotBlock) // if (Block != SEPARATOR)
// {
// Insert block call in program //
ADD16(Pc,1,Pc) // Pc++
MOVE16_32(Pc,Index) // Index = Pc
CALL(PutData8,Index,Block,hProgram) // CALL(PutData8,Index,Block,hProgram)
//
// Insert par 1 in program //
MOVE16_32(Point,Index) // Index = Point
ARRAY_READ(hBlockPar1,Index,Par) // Par = hBlockPar1[Index]
ADD16(Pc,3,Pc) // Pc += 3
MOVE16_32(Pc,Index) // Index = Pc
CALL(PutData16,Index,Par,hProgram) // CALL(PutData16,Index,Par,hProgram)
//
// Insert par 2 in program //
MOVE16_32(Point,Index) // Index = Point
ARRAY_READ(hBlockPar2,Index,Par) // Par = hBlockPar1[Index]
ADD16(Pc,3,Pc) // Pc += 3
MOVE16_32(Pc,Index) // Index = Pc
CALL(PutData16,Index,Par,hProgram) // CALL(PutData16,Index,Par,hProgram)
//
// Point at next call opcode //
ADD16(Pc,2,Pc) // Pc += 2
//
NotBlock: // }
ADD16(Point,1,Point) // Point++
JR(Insert) // }
EndInsert: //
//
// Save run file //
FILE(OPEN_WRITE,Name,hFile) // FILE(OPEN_WRITE,Name,hFile)
FILE(WRITE_BYTES,hFile,Size,@hProgram) // FILE(WRITE_BYTES,hFile,Size,@hProgram)
FILE(CLOSE,hFile) // FILE(CLOSE,hFile)
ARRAY(DELETE,hProgram) // ARRAY(DELETE,hProgram)
//
} // }
//
//
// StartBlock ******************************************************************************************
//
define STARTBLOCK_WIDTH 24 //
//
subcall StartBlock // StartBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Timer //
DATA32 Size //
DATA32 Index // Array index
DATA16 hFile //
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA8 Icon //
DATA8 Stop //
DATA8 Flag //
DATA8 Status // DATA8 Status
DATAS Name FILENAMESIZE //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(0,Par1) // Par1 = 0
MOVE16_16(0,Par2) // Par2 = 0
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(STARTBLOCK_WIDTH,X1) // X1 = STARTBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
//
// Save file //
STRINGS(ADD,'../apps/Brick Program/',RUN_FILE,Name) // STRINGS(ADD,'../apps/Brick Program/',RUN_FILE,Name)
CALL(SaveFile,Name) // CALL(SaveFile,Name)
// Run file //
FILE(LOAD_IMAGE,USER_SLOT,Name,Size,hFile) // FILE(LOAD_IMAGE,USER_SLOT,Name,Size,hFile)
PROGRAM_START(USER_SLOT,0,hFile,0) // PROGRAM_START(USER_SLOT,0,hFile,0)
//
MOVE8_8(0,Stop) // Stop = 0
// do
FileRunning: // {
//
UI_BUTTON(SHORTPRESS,BACK_BUTTON,Stop) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,Stop)
PROGRAM_INFO(GET_STATUS,USER_SLOT,Status) // PROGRAM_INFO(GET_STATUS,USER,Status)
//
CP_EQ8(Status,STOPPED,Flag) // if (Status == STOPPED)
JR_FALSE(Flag,FileNotStopped) // {
//
MOVE8_8(1,Stop) // Stop = 1
//
FileNotStopped: // }
// }
JR_FALSE(Stop,FileRunning) // while (Stop == 0)
//
PROGRAM_STOP(USER_SLOT) // PROGRAM_STOP(USER_SLOT)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
//
UI_BUTTON(SET_BACK_BLOCK,1) //
UI_DRAW(TOPLINE,1) // UI_DRAW(TOPLINE,1)
UI_WRITE(LED,LED_GREEN) // UI_WRITE(LED,LED_GREEN)
//
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'StartBLKs') // Draw bitmap
//
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'StartBLKn') // Draw bitmap
//
EndSelected: // }
NotRefresh: // }
MOVE16_32(Pointer,Index) //
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
} // }
//
//
// Separator *******************************************************************************************
//
define SEPARATOR_WIDTH 11 //
//
subcall Separator // Separator
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 X4 //
DATA16 Y3 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(4,Par1) // Par1 = 0
MOVE16_16(3,Par2) // Par2 = 0
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(SEPARATOR_WIDTH,X1) // X1 = SEPARATOR_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
// Find end of block stream //
CALL(FindBlockType,LOOPBLOCK,X4) // CALL(FindBlockType,LOOPBLOCK,Pointer)
ADD16(X4,2,X4) // X4 += 2
JR_GTEQ16(X4,BLOCKS,NotSelected) // if (X4 < BLOCKS) &&
JR_NEQ16(X2,1,NotSelected) // (X2))
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,34,'BlockAdd') // Draw bitmap
//
SUB16(X1,10,X3) // X3 = X1 + 10
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,68,'Blocklink') // Draw bitmap
//
EndSelected: // }
NotRefresh: // }
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
} // }
//
//
// ControlPar ******************************************************************************************
//
//
subcall ControlPar // ControlPar
{ // {
IN_32 Index //
IO_16 Par1 //
IO_16 Par2 //
IN_16 Min //
IN_16 Max //
IO_8 Stay //
//
DATA8 State //
DATA16 Inc //
DATA8 ChangeSave //
//
MOVE8_8(Changed,ChangeSave) // ChangeSave = Changed
//
UI_BUTTON(GET_VERT,Inc) // UI_BUTTON(GET_VERT,Inc)
JR_EQ16(Inc,0,NotVert) // if (Inc)
// {
SUB16(0,Inc,Inc) // Inc = 0 - Inc
ADD16(Par1,Inc,Par1) // Par1 += Inc
JR_LTEQ16(Par1,Max,NotTooHigh) // if (Par1 > Max)
// {
MOVE16_16(Max,Par1) // Par1 = MAx
NotTooHigh: // }
JR_GTEQ16(Par1,Min,NotTooLow) // if (Par1 < Min)
// {
MOVE16_16(Min,Par1) // Par1 = Min
NotTooLow: // }
MOVE8_8(1,Changed) // Changed = 1
NotVert: // }
//
UI_BUTTON(SHORTPRESS,ENTER_BUTTON,State) // UI_BUTTON(SHORTPRESS,ENTER_BUTTON,State)
JR_FALSE(State,NotEnter) // if (State)
// {
ARRAY_WRITE(hBlockPar1,Index,Par1) // hBlockPar1[Index] = Par1
ARRAY_WRITE(hBlockPar2,Index,Par2) // hBlockPar2[Index] = Par2
MOVE8_8(0,Stay) // Stay = 0
//
NotEnter: // }
UI_BUTTON(TESTSHORTPRESS,LEFT_BUTTON,State) // UI_BUTTON(TESTSHORTPRESS,LEFT_BUTTON,State)
JR_FALSE(State,NotLeft) // if (State)
// {
ARRAY_WRITE(hBlockPar1,Index,Par1) // hBlockPar1[Index] = Par1
ARRAY_WRITE(hBlockPar2,Index,Par2) // hBlockPar2[Index] = Par2
MOVE8_8(0,Stay) // Stay = 0
//
NotLeft: // }
UI_BUTTON(TESTSHORTPRESS,RIGHT_BUTTON,State) // UI_BUTTON(TESTSHORTPRESS,RIGHT_BUTTON,State)
JR_FALSE(State,NotRight) // if (State)
// {
ARRAY_WRITE(hBlockPar1,Index,Par1) // hBlockPar1[Index] = Par1
ARRAY_WRITE(hBlockPar2,Index,Par2) // hBlockPar2[Index] = Par2
MOVE8_8(0,Stay) // Stay = 0
//
NotRight: // }
UI_BUTTON(SHORTPRESS,BACK_BUTTON,State) // UI_BUTTON(SHORTPRESS,BACK_BUTTON,State)
JR_FALSE(State,NotBack) // if (State)
// {
MOVE8_8(ChangeSave,Changed) // Changed = ChangeSave
MOVE8_8(0,Stay) // Stay = 0
//
NotBack: // }
} // }
//
//
// LoopBlock *******************************************************************************************
//
define LOOPBLOCK_WIDTH 24 //
define LOOPBLOCK_PAR1_MIN 1 //
define LOOPBLOCK_PAR1_DEFAULT 1 //
define LOOPBLOCK_PAR1_MAX 7 //
//
subcall LoopBlock // LoopBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(LOOPBLOCK_PAR1_DEFAULT,Par1) // Par1 = LOOPBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(LOOPBLOCK_WIDTH,X1) // X1 = LOOPBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'RepBlkh') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'RepBlks') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'RepBlkn') // Draw bitmap
//
EndSelected: // }
STRINGS(NUMBER_TO_STRING,Par1,1,No) //
STRINGS(ADD,'A_LoopP',No,Name) //
//
ADD16(X1,4,X3) // X3 = X1 + 4
UI_DRAW(BMPFILE,FG_COLOR,X3,78,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,LOOPBLOCK_PAR1_MIN,LOOPBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// DoubleMotorBlock ************************************************************************************
//
define DOUBLEMOTORBLOCK_WIDTH 80 //
define DOUBLEMOTORBLOCK_PAR1_MIN 1 //
define DOUBLEMOTORBLOCK_PAR1_DEFAULT 5 //
define DOUBLEMOTORBLOCK_PAR1_MAX 9 //
//
subcall DoubleMotorBlock // DoubleMotorBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(DOUBLEMOTORBLOCK_PAR1_DEFAULT,Par1) // Par1 = DOUBLEMOTORBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(DOUBLEMOTORBLOCK_WIDTH,X1) // X1 = DOUBLEMOTORBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'A_Move') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_bc') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_bc') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_bc') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'A_Move') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,1,No) //
STRINGS(ADD,'A_MoveP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,DOUBLEMOTORBLOCK_PAR1_MIN,DOUBLEMOTORBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// SingleMotorBlock ************************************************************************************
//
define SINGLEMOTORBLOCK_WIDTH 80 //
define SINGLEMOTORBLOCK_PAR1_MIN 1 //
define SINGLEMOTORBLOCK_PAR1_DEFAULT 7 //
define SINGLEMOTORBLOCK_PAR1_MAX 9 //
//
subcall SingleMotorBlock // SingleMotorBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(SINGLEMOTORBLOCK_PAR1_DEFAULT,Par1) // Par1 = SINGLEMOTORBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(SINGLEMOTORBLOCK_WIDTH,X1) // X1 = SINGLEMOTORBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'A_Lmot') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_d') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_d') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_d') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'A_Lmot') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,1,No) //
STRINGS(ADD,'A_motP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,SINGLEMOTORBLOCK_PAR1_MIN,SINGLEMOTORBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// MediumMotorBlock ************************************************************************************
//
define MEDIUMMOTORBLOCK_WIDTH 80 //
define MEDIUMMOTORBLOCK_PAR1_MIN 1 //
define MEDIUMMOTORBLOCK_PAR1_DEFAULT 7 //
define MEDIUMMOTORBLOCK_PAR1_MAX 9 //
//
subcall MediumMotorBlock // MediumMotorBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(MEDIUMMOTORBLOCK_PAR1_DEFAULT,Par1) // Par1 = MEDIUMMOTORBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(MEDIUMMOTORBLOCK_WIDTH,X1) // X1 = MEDIUMMOTORBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'A_Mmot') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_a') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_a') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_a') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'A_Mmot') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,1,No) //
STRINGS(ADD,'A_motP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,MEDIUMMOTORBLOCK_PAR1_MIN,MEDIUMMOTORBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// SoundBlock ******************************************************************************************
//
define SOUNDBLOCK_WIDTH 80 //
define SOUNDBLOCK_PAR1_MIN 1 //
define SOUNDBLOCK_PAR1_DEFAULT 2 //
define SOUNDBLOCK_PAR1_MAX 13 //
//
subcall SoundBlock // SoundBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(SOUNDBLOCK_PAR1_DEFAULT,Par1) // Par1 = SOUNDBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(SOUNDBLOCK_WIDTH,X1) // X1 = SOUNDBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'A_Snd') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'A_Snd') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,2,No) //
STRINGS(ADD,'A_numP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,SOUNDBLOCK_PAR1_MIN,SOUNDBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// DisplayBlock ****************************************************************************************
//
define DISPLAYBLOCK_WIDTH 80 //
define DISPLAYBLOCK_PAR1_MIN 1 //
define DISPLAYBLOCK_PAR1_DEFAULT 2 //
define DISPLAYBLOCK_PAR1_MAX 13 //
//
subcall DisplayBlock // DisplayBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(DISPLAYBLOCK_PAR1_DEFAULT,Par1) // Par1 = DISPLAYBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(DISPLAYBLOCK_WIDTH,X1) // X1 = DISPLAYBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'A_Disp') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'A_Disp') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,2,No) //
STRINGS(ADD,'A_numP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,DISPLAYBLOCK_PAR1_MIN,DISPLAYBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// LedBlock ********************************************************************************************
//
define LEDBLOCK_WIDTH 80 //
define LEDBLOCK_PAR1_MIN 1 //
define LEDBLOCK_PAR1_DEFAULT 6 //
define LEDBLOCK_PAR1_MAX 7 //
//
subcall LedBlock // LedBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(LEDBLOCK_PAR1_DEFAULT,Par1) // Par1 = LEDBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(LEDBLOCK_WIDTH,X1) // X1 = LEDBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'A_BLit') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'A_BLit') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,1,No) //
STRINGS(ADD,'A_BLitP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,LEDBLOCK_PAR1_MIN,LEDBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// TouchBlock ******************************************************************************************
//
define TOUCHBLOCK_WIDTH 80 //
define TOUCHBLOCK_PAR1_MIN 1 //
define TOUCHBLOCK_PAR1_DEFAULT 1 //
define TOUCHBLOCK_PAR1_MAX 3 //
//
subcall TouchBlock // TouchBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(TOUCHBLOCK_PAR1_DEFAULT,Par1) // Par1 = TOUCHBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(TOUCHBLOCK_WIDTH,X1) // X1 = TOUCHBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_Touch') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_1') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_1') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_1') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_Touch') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,1,No) //
STRINGS(ADD,'W_TouchP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,TOUCHBLOCK_PAR1_MIN,TOUCHBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// ReflectedBlock **************************************************************************************
//
define REFLECTEDBLOCK_WIDTH 80 //
define REFLECTEDBLOCK_PAR1_MIN 1 //
define REFLECTEDBLOCK_PAR1_DEFAULT 5 //
define REFLECTEDBLOCK_PAR1_MAX 16 //
//
subcall ReflectedBlock // ReflectedBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(REFLECTEDBLOCK_PAR1_DEFAULT,Par1) // Par1 = REFLECTEDBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(REFLECTEDBLOCK_WIDTH,X1) // X1 = REFLECTEDBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_colref') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_3') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_3') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_3') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_colref') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,2,No) //
STRINGS(ADD,'W_colrefP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,REFLECTEDBLOCK_PAR1_MIN,REFLECTEDBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// BeaconBlock *****************************************************************************************
//
define BEACONBLOCK_WIDTH 80 //
define BEACONBLOCK_PAR1_MIN 1 //
define BEACONBLOCK_PAR1_DEFAULT 2 //
define BEACONBLOCK_PAR1_MAX 6 //
//
subcall BeaconBlock // BeaconBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(BEACONBLOCK_PAR1_DEFAULT,Par1) // Par1 = BEACONBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(BEACONBLOCK_WIDTH,X1) // X1 = BEACONBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_irrem') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_4') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_4') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_4') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_irrem') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,2,No) //
STRINGS(ADD,'W_irremP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,BEACONBLOCK_PAR1_MIN,BEACONBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// EncoderBlock ****************************************************************************************
//
define ENCODERBLOCK_WIDTH 80 //
define ENCODERBLOCK_PAR1_MIN 1 //
define ENCODERBLOCK_PAR1_DEFAULT 8 //
define ENCODERBLOCK_PAR1_MAX 12 //
//
subcall EncoderBlock // EncoderBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(ENCODERBLOCK_PAR1_DEFAULT,Par1) // Par1 = ENCODERBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(ENCODERBLOCK_WIDTH,X1) // X1 = ENCODERBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_mmot') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_a') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_a') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_a') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_mmot') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,2,No) //
STRINGS(ADD,'W_angP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,ENCODERBLOCK_PAR1_MIN,ENCODERBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// AngleBlock ******************************************************************************************
//
define ANGLEBLOCK_WIDTH 80 //
define ANGLEBLOCK_PAR1_MIN 1 //
define ANGLEBLOCK_PAR1_DEFAULT 8 //
define ANGLEBLOCK_PAR1_MAX 12 //
//
subcall AngleBlock // AngleBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(ANGLEBLOCK_PAR1_DEFAULT,Par1) // Par1 = ANGLEBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(ANGLEBLOCK_WIDTH,X1) // X1 = ANGLEBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_gyro') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_2') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_2') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_2') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_gyro') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,2,No) //
STRINGS(ADD,'W_angP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,ANGLEBLOCK_PAR1_MIN,ANGLEBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// ColorBlock ******************************************************************************************
//
define COLORBLOCK_WIDTH 80 //
define COLORBLOCK_PAR1_MIN 1 //
define COLORBLOCK_PAR1_DEFAULT 2 //
define COLORBLOCK_PAR1_MAX 8 //
//
subcall ColorBlock // ColorBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(COLORBLOCK_PAR1_DEFAULT,Par1) // Par1 = COLORBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(COLORBLOCK_WIDTH,X1) // X1 = COLORBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_colcol') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_3') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_3') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_3') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_colcol') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,1,No) //
STRINGS(ADD,'W_colcolP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,COLORBLOCK_PAR1_MIN,COLORBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// TemperatureBlock ************************************************************************************
//
define TEMPERATUREBLOCK_WIDTH 80 //
define TEMPERATUREBLOCK_PAR1_MIN 1 //
define TEMPERATUREBLOCK_PAR1_DEFAULT 4 //
define TEMPERATUREBLOCK_PAR1_MAX 16 //
//
subcall TemperatureBlock // TemperatureBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(TEMPERATUREBLOCK_PAR1_DEFAULT,Par1) // Par1 = TEMPERATUREBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(TEMPERATUREBLOCK_WIDTH,X1) // X1 = TEMPERATUREBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_temp') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_2') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_2') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_2') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_temp') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,2,No) //
STRINGS(ADD,'W_tempP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,TEMPERATUREBLOCK_PAR1_MIN,TEMPERATUREBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// UltrasonicBlock *************************************************************************************
//
define ULTRASONICBLOCK_WIDTH 80 //
define ULTRASONICBLOCK_PAR1_MIN 1 //
define ULTRASONICBLOCK_PAR1_DEFAULT 5 //
define ULTRASONICBLOCK_PAR1_MAX 16 //
//
subcall UltrasonicBlock // UltrasonicBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(ULTRASONICBLOCK_PAR1_DEFAULT,Par1) // Par1 = ULTRASONICBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(ULTRASONICBLOCK_WIDTH,X1) // X1 = ULTRASONICBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_us') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_4') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_4') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_4') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_us') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,2,No) //
STRINGS(ADD,'W_usP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,ULTRASONICBLOCK_PAR1_MIN,ULTRASONICBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// ProximityBlock **************************************************************************************
//
define PROXIMITYBLOCK_WIDTH 80 //
define PROXIMITYBLOCK_PAR1_MIN 1 //
define PROXIMITYBLOCK_PAR1_DEFAULT 3 //
define PROXIMITYBLOCK_PAR1_MAX 8 //
//
subcall ProximityBlock // ProximityBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(PROXIMITYBLOCK_PAR1_DEFAULT,Par1) // Par1 = PROXIMITYBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(PROXIMITYBLOCK_WIDTH,X1) // X1 = PROXIMITYBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_irprox') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ph_4') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Ps_4') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
ADD16(X1,44,X3) // X3 = X1 + 44
UI_DRAW(BMPFILE,FG_COLOR,X3,36,'Pn_4') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_irprox') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,2,No) //
STRINGS(ADD,'W_irproxP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,PROXIMITYBLOCK_PAR1_MIN,PROXIMITYBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// ButtonBlock *****************************************************************************************
//
define BUTTONBLOCK_WIDTH 80 //
define BUTTONBLOCK_PAR1_MIN 1 //
define BUTTONBLOCK_PAR1_DEFAULT 1 //
define BUTTONBLOCK_PAR1_MAX 5 //
//
subcall ButtonBlock // ButtonBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(BUTTONBLOCK_PAR1_DEFAULT,Par1) // Par1 = BUTTONBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(BUTTONBLOCK_WIDTH,X1) // X1 = BUTTONBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_bbut') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_bbut') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,1,No) //
STRINGS(ADD,'W_bbutP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,BUTTONBLOCK_PAR1_MIN,BUTTONBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// DelayBlock ******************************************************************************************
//
define DELAYBLOCK_WIDTH 80 //
define DELAYBLOCK_PAR1_MIN 1 //
define DELAYBLOCK_PAR1_DEFAULT 4 //
define DELAYBLOCK_PAR1_MAX 8 //
//
subcall DelayBlock // DelayBlock
{ // {
IN_16 Function // Function
IO_16 Pointer // Pointer (Cursor)
IO_16 X1 // X coord
IO_16 X2 // Y variable
//
DATAF Tmp //
DATA32 Index // Array index
DATA16 Par1 // Local parameter 1
DATA16 Par2 // Local parameter 2
DATA16 X3 //
DATA16 Y3 //
DATA16 Tmp16 //
DATA8 Stay //
DATA8 State //
DATAS Name 32 //
DATAS No 6 //
//
MOVE16_32(Pointer,Index) //
ARRAY_READ(hBlockPar1,Index,Par1) //
ARRAY_READ(hBlockPar2,Index,Par2) //
//
MOVE8_8(0,Stay) // Stay = 0
//
JR_NEQ16(Function,INIT,NotInit) // if (Function == INIT)
// {
MOVE16_16(DELAYBLOCK_PAR1_DEFAULT,Par1) // Par1 = DELAYBLOCK_PAR1_DEFAULT
MOVE16_16(0,Par2) // Par2 = 0
ARRAY_WRITE(hBlockPar1,Index,Par1) //
ARRAY_WRITE(hBlockPar2,Index,Par2) //
NotInit: // }
//
JR_NEQ16(Function,GET_WIDTH,NotGetWidth) // if (Function == GET_WIDTH)
// {
MOVE16_16(DELAYBLOCK_WIDTH,X1) // X1 = DELAYBLOCK_WIDTH
//
NotGetWidth: // }
//
JR_NEQ16(Function,DRAW_ICON,NotDrawIcon) // if (Function == DRAW_ICON)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,X2,'W_time') // Draw bitmap
//
NotDrawIcon: // }
//
JR_NEQ16(Function,ACTIVATE,NotActivate) // if (Function == ACTIVATE)
// {
MOVE8_8(1,Stay) // Stay = 1
MOVE16_16(1,X2) // X2 = 1
MOVE16_16(REFRESH,Function) // Function = REFRESH
NotActivate: // }
//
JR_NEQ16(Function,REFRESH,NotRefresh) // if (Function == REFRESH)
// {
ADD16(X1,25,X3) // X3 = X1 + 25
UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11) // UI_DRAW(FILLRECT,BG_COLOR,X3,23,30,11)
// do
Refresh: // {
JR_NEQ16(X2,1,NotSelected) // if (X2)
// {
JR_FALSE(Stay,NotStay) // if (Stay)
// {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKh') // Draw bitmap
//
JR(EndStay) // }
// else
NotStay: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKs') // Draw bitmap
//
ADD16(X1,25,X3) // X3 = X1 + 25
//
UI_DRAW(BMPFILE,FG_COLOR,X3,23,'ToLib') // Draw bitmap
//
EndStay: // }
JR(EndSelected) // }
// else
NotSelected: // {
UI_DRAW(BMPFILE,FG_COLOR,X1,36,'BLKn') // Draw bitmap
//
EndSelected: // }
ADD16(X1,2,X3) // X3 = X1 + 2
UI_DRAW(BMPFILE,FG_COLOR,X3,60,'W_time') // Draw bitmap
//
STRINGS(NUMBER_TO_STRING,Par1,1,No) //
STRINGS(ADD,'W_timeP',No,Name) //
//
ADD16(X1,46,X3) // X3 = X1 + 46
UI_DRAW(BMPFILE,FG_COLOR,X3,66,Name) // Draw bitmap
//
JR_FALSE(Stay,DoNotWait) // if (Stay)
// {
UI_DRAW(UPDATE) // UI_DRAW(UPDATE)
UI_BUTTON(FLUSH) // UI_BUTTON(FLUSH)
UI_BUTTON(WAIT_FOR_PRESS) // UI_BUTTON(WAIT_FOR_PRESS)
//
CALL(ControlPar,Index,Par1,Par2,DELAYBLOCK_PAR1_MIN,DELAYBLOCK_PAR1_MAX,Stay) //
DoNotWait: // }
// }
JR_TRUE(Stay,Refresh) // while(Stay)
NotRefresh: // }
} // }
//
// ControlPointer **************************************************************************************
//
//
subcall ControlPointer // ControlPointer
{ // {
IN_16 Min // Lowest pointer value
IN_16 Max // Highest pointer value
IN_16 Span // No of visible items
IN_16 Inc // Inc / dec
IO_16 Pointer // Pointer
IO_16 Start // Start of visible
OUT_8 Update // Update flag
//
DATA16 Tmp //
//
MOVE8_8(1,Update) // Update = 1
//
ADD16(Pointer,Inc,Pointer) // Pointer += Inc
//
JR_GTEQ16(Pointer,Min,HighEnough) // if (Pointer < Min)
// {
MOVE16_16(Min,Pointer) // Pointer = Min
MOVE8_8(0,Update) // Update = 0
HighEnough: // }
JR_LTEQ16(Pointer,Max,LowEnough) // if (Pointer > Max)
// {
MOVE16_16(Max,Pointer) // Pointer = Max
MOVE8_8(0,Update) // Update = 0
LowEnough: // }
//
JR_GTEQ16(Pointer,Start,DoNotLower) // if (Pointer < Start)
// {
JR_LT16(Pointer,Min,Label1) // if (Pointer >= Min)
// {
MOVE16_16(Pointer,Start) // Start = Pointer
Label1: // }
DoNotLower: // }
//
ADD16(Start,Span,Tmp) // Tmp = Start + Span
JR_LT16(Pointer,Tmp,Label2) // if (Pointer >= Tmp)
// {
SUB16(Pointer,Span,Tmp) // Tmp = Pointer - Span
ADD16(Start,1,Start) // Start++
Label2: // }
//
} // }
//
//
//!