kod2_driver_InitializeTouchPanel:
;kod2_driver.mbas,98 ::                 sub procedure InitializeTouchPanel() ' static
ADDIU        SP, SP, -12
SW        RA, 0(SP)
;kod2_driver.mbas,99 ::                 TFT_DataPort_Direction = 0
SW        R25, 4(SP)
SW        R26, 8(SP)
SH        R0, Offset(TRISB+0)(GP)
;kod2_driver.mbas,100 ::                 TFT_Init_ILI9341_16bit(320, 240)
ORI        R26, R0, 240
ORI        R25, R0, 320
JAL        _TFT_Init_ILI9341_16bit+0
NOP        
;kod2_driver.mbas,103 ::                 PenDown = 0
SB        R0, Offset(_PenDown+0)(GP)
;kod2_driver.mbas,104 ::                 PressedObject = 0
SW        R0, Offset(_PressedObject+0)(GP)
;kod2_driver.mbas,105 ::                 PressedObjectType = -1
ORI        R2, R0, 65535
SH        R2, Offset(_PressedObjectType+0)(GP)
;kod2_driver.mbas,106 ::                 end sub
L_end_InitializeTouchPanel:
LW        R26, 8(SP)
LW        R25, 4(SP)
LW        RA, 0(SP)
ADDIU        SP, SP, 12
JR        RA
NOP        
; end of kod2_driver_InitializeTouchPanel
kod2_driver_InitializeObjects:
;kod2_driver.mbas,109 ::                 sub procedure InitializeObjects()    ' static
;kod2_driver.mbas,110 ::                 Screen1.Color                     = 0x07FF
ORI        R2, R0, 2047
SH        R2, Offset(_Screen1+0)(GP)
;kod2_driver.mbas,111 ::                 Screen1.Width                     = 320
ORI        R2, R0, 320
SH        R2, Offset(_Screen1+2)(GP)
;kod2_driver.mbas,112 ::                 Screen1.Height                    = 240
ORI        R2, R0, 240
SH        R2, Offset(_Screen1+4)(GP)
;kod2_driver.mbas,113 ::                 Screen1.LabelsCount               = 1
ORI        R2, R0, 1
SH        R2, Offset(_Screen1+8)(GP)
;kod2_driver.mbas,114 ::                 Screen1.Labels                    = @Screen1_Labels
LUI        R2, hi_addr(_Screen1_Labels+0)
ORI        R2, R2, lo_addr(_Screen1_Labels+0)
SW        R2, Offset(_Screen1+12)(GP)
;kod2_driver.mbas,115 ::                 Screen1.CirclesCount              = 3
ORI        R2, R0, 3
SH        R2, Offset(_Screen1+16)(GP)
;kod2_driver.mbas,116 ::                 Screen1.Circles                   = @Screen1_Circles
LUI        R2, hi_addr(_Screen1_Circles+0)
ORI        R2, R2, lo_addr(_Screen1_Circles+0)
SW        R2, Offset(_Screen1+20)(GP)
;kod2_driver.mbas,117 ::                 Screen1.LinesCount                = 2
ORI        R2, R0, 2
SH        R2, Offset(_Screen1+24)(GP)
;kod2_driver.mbas,118 ::                 Screen1.Lines                     = @Screen1_Lines
LUI        R2, hi_addr(_Screen1_Lines+0)
ORI        R2, R2, lo_addr(_Screen1_Lines+0)
SW        R2, Offset(_Screen1+28)(GP)
;kod2_driver.mbas,119 ::                 Screen1.ObjectsCount              = 6
ORI        R2, R0, 6
SH        R2, Offset(_Screen1+6)(GP)
;kod2_driver.mbas,122 ::                 Circle1.OwnerScreenAddress  = @Screen1
LUI        R2, hi_addr(_Screen1+0)
ORI        R2, R2, lo_addr(_Screen1+0)
SW        R2, Offset(_Circle1+0)(GP)
;kod2_driver.mbas,123 ::                 Circle1.Order               = 0
SB        R0, Offset(_Circle1+4)(GP)
;kod2_driver.mbas,124 ::                 Circle1.Left_               = 84
ORI        R2, R0, 84
SH        R2, Offset(_Circle1+6)(GP)
;kod2_driver.mbas,125 ::                 Circle1.Top                 = 84
ORI        R2, R0, 84
SH        R2, Offset(_Circle1+8)(GP)
;kod2_driver.mbas,126 ::                 Circle1.Radius              = 41
ORI        R2, R0, 41
SH        R2, Offset(_Circle1+10)(GP)
;kod2_driver.mbas,127 ::                 Circle1.Pen_Width           = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle1+12)(GP)
;kod2_driver.mbas,128 ::                 Circle1.Pen_Color           = 0x001F
ORI        R2, R0, 31
SH        R2, Offset(_Circle1+14)(GP)
;kod2_driver.mbas,129 ::                 Circle1.Visible             = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle1+16)(GP)
;kod2_driver.mbas,130 ::                 Circle1.Active              = 0
SB        R0, Offset(_Circle1+17)(GP)
;kod2_driver.mbas,131 ::                 Circle1.Transparent         = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle1+18)(GP)
;kod2_driver.mbas,132 ::                 Circle1.Gradient            = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle1+19)(GP)
;kod2_driver.mbas,133 ::                 Circle1.Gradient_Orientation = 0
SB        R0, Offset(_Circle1+20)(GP)
;kod2_driver.mbas,134 ::                 Circle1.Gradient_Start_Color = 0xF800
ORI        R2, R0, 63488
SH        R2, Offset(_Circle1+22)(GP)
;kod2_driver.mbas,135 ::                 Circle1.Gradient_End_Color  = 0xF800
ORI        R2, R0, 63488
SH        R2, Offset(_Circle1+24)(GP)
;kod2_driver.mbas,136 ::                 Circle1.Color               = 0xF800
ORI        R2, R0, 63488
SH        R2, Offset(_Circle1+26)(GP)
;kod2_driver.mbas,137 ::                 Circle1.PressColEnabled     = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle1+28)(GP)
;kod2_driver.mbas,138 ::                 Circle1.Press_Color         = 0xE71C
ORI        R2, R0, 59164
SH        R2, Offset(_Circle1+30)(GP)
;kod2_driver.mbas,139 ::                 Circle1.OnUpPtr             = 0
SW        R0, Offset(_Circle1+32)(GP)
;kod2_driver.mbas,140 ::                 Circle1.OnDownPtr           = 0
SW        R0, Offset(_Circle1+36)(GP)
;kod2_driver.mbas,141 ::                 Circle1.OnClickPtr          = 0
SW        R0, Offset(_Circle1+40)(GP)
;kod2_driver.mbas,142 ::                 Circle1.OnPressPtr          = 0
SW        R0, Offset(_Circle1+44)(GP)
;kod2_driver.mbas,144 ::                 Circle2.OwnerScreenAddress  = @Screen1
LUI        R2, hi_addr(_Screen1+0)
ORI        R2, R2, lo_addr(_Screen1+0)
SW        R2, Offset(_Circle2+0)(GP)
;kod2_driver.mbas,145 ::                 Circle2.Order               = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle2+4)(GP)
;kod2_driver.mbas,146 ::                 Circle2.Left_               = 249
ORI        R2, R0, 249
SH        R2, Offset(_Circle2+6)(GP)
;kod2_driver.mbas,147 ::                 Circle2.Top                 = 54
ORI        R2, R0, 54
SH        R2, Offset(_Circle2+8)(GP)
;kod2_driver.mbas,148 ::                 Circle2.Radius              = 25
ORI        R2, R0, 25
SH        R2, Offset(_Circle2+10)(GP)
;kod2_driver.mbas,149 ::                 Circle2.Pen_Width           = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle2+12)(GP)
;kod2_driver.mbas,150 ::                 Circle2.Pen_Color           = 0x0000
SH        R0, Offset(_Circle2+14)(GP)
;kod2_driver.mbas,151 ::                 Circle2.Visible             = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle2+16)(GP)
;kod2_driver.mbas,152 ::                 Circle2.Active              = 0
SB        R0, Offset(_Circle2+17)(GP)
;kod2_driver.mbas,153 ::                 Circle2.Transparent         = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle2+18)(GP)
;kod2_driver.mbas,154 ::                 Circle2.Gradient            = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle2+19)(GP)
;kod2_driver.mbas,155 ::                 Circle2.Gradient_Orientation = 0
SB        R0, Offset(_Circle2+20)(GP)
;kod2_driver.mbas,156 ::                 Circle2.Gradient_Start_Color = 0x001F
ORI        R2, R0, 31
SH        R2, Offset(_Circle2+22)(GP)
;kod2_driver.mbas,157 ::                 Circle2.Gradient_End_Color  = 0x001F
ORI        R2, R0, 31
SH        R2, Offset(_Circle2+24)(GP)
;kod2_driver.mbas,158 ::                 Circle2.Color               = 0x001F
ORI        R2, R0, 31
SH        R2, Offset(_Circle2+26)(GP)
;kod2_driver.mbas,159 ::                 Circle2.PressColEnabled     = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle2+28)(GP)
;kod2_driver.mbas,160 ::                 Circle2.Press_Color         = 0xE71C
ORI        R2, R0, 59164
SH        R2, Offset(_Circle2+30)(GP)
;kod2_driver.mbas,161 ::                 Circle2.OnUpPtr             = 0
SW        R0, Offset(_Circle2+32)(GP)
;kod2_driver.mbas,162 ::                 Circle2.OnDownPtr           = 0
SW        R0, Offset(_Circle2+36)(GP)
;kod2_driver.mbas,163 ::                 Circle2.OnClickPtr          = 0
SW        R0, Offset(_Circle2+40)(GP)
;kod2_driver.mbas,164 ::                 Circle2.OnPressPtr          = 0
SW        R0, Offset(_Circle2+44)(GP)
;kod2_driver.mbas,166 ::                 Line1.OwnerScreenAddress  = @Screen1
LUI        R2, hi_addr(_Screen1+0)
ORI        R2, R2, lo_addr(_Screen1+0)
SW        R2, Offset(_Line1+0)(GP)
;kod2_driver.mbas,167 ::                 Line1.Order               = 2
ORI        R2, R0, 2
SB        R2, Offset(_Line1+4)(GP)
;kod2_driver.mbas,168 ::                 Line1.First_Point_X       = 1
ORI        R2, R0, 1
SH        R2, Offset(_Line1+6)(GP)
;kod2_driver.mbas,169 ::                 Line1.First_Point_Y       = 1
ORI        R2, R0, 1
SH        R2, Offset(_Line1+8)(GP)
;kod2_driver.mbas,170 ::                 Line1.Second_Point_X      = 319
ORI        R2, R0, 319
SH        R2, Offset(_Line1+10)(GP)
;kod2_driver.mbas,171 ::                 Line1.Second_Point_Y      = 239
ORI        R2, R0, 239
SH        R2, Offset(_Line1+12)(GP)
;kod2_driver.mbas,172 ::                 Line1.Visible             = 1
ORI        R2, R0, 1
SB        R2, Offset(_Line1+15)(GP)
;kod2_driver.mbas,173 ::                 Line1.Pen_Width           = 1
ORI        R2, R0, 1
SB        R2, Offset(_Line1+14)(GP)
;kod2_driver.mbas,174 ::                 Line1.Color               = 0x0000
SH        R0, Offset(_Line1+16)(GP)
;kod2_driver.mbas,176 ::                 Line2.OwnerScreenAddress  = @Screen1
LUI        R2, hi_addr(_Screen1+0)
ORI        R2, R2, lo_addr(_Screen1+0)
SW        R2, Offset(_Line2+0)(GP)
;kod2_driver.mbas,177 ::                 Line2.Order               = 3
ORI        R2, R0, 3
SB        R2, Offset(_Line2+4)(GP)
;kod2_driver.mbas,178 ::                 Line2.First_Point_X       = 320
ORI        R2, R0, 320
SH        R2, Offset(_Line2+6)(GP)
;kod2_driver.mbas,179 ::                 Line2.First_Point_Y       = 0
SH        R0, Offset(_Line2+8)(GP)
;kod2_driver.mbas,180 ::                 Line2.Second_Point_X      = 2
ORI        R2, R0, 2
SH        R2, Offset(_Line2+10)(GP)
;kod2_driver.mbas,181 ::                 Line2.Second_Point_Y      = 238
ORI        R2, R0, 238
SH        R2, Offset(_Line2+12)(GP)
;kod2_driver.mbas,182 ::                 Line2.Visible             = 1
ORI        R2, R0, 1
SB        R2, Offset(_Line2+15)(GP)
;kod2_driver.mbas,183 ::                 Line2.Pen_Width           = 1
ORI        R2, R0, 1
SB        R2, Offset(_Line2+14)(GP)
;kod2_driver.mbas,184 ::                 Line2.Color               = 0x0000
SH        R0, Offset(_Line2+16)(GP)
;kod2_driver.mbas,186 ::                 Circle3.OwnerScreenAddress  = @Screen1
LUI        R2, hi_addr(_Screen1+0)
ORI        R2, R2, lo_addr(_Screen1+0)
SW        R2, Offset(_Circle3+0)(GP)
;kod2_driver.mbas,187 ::                 Circle3.Order               = 4
ORI        R2, R0, 4
SB        R2, Offset(_Circle3+4)(GP)
;kod2_driver.mbas,188 ::                 Circle3.Left_               = 282
ORI        R2, R0, 282
SH        R2, Offset(_Circle3+6)(GP)
;kod2_driver.mbas,189 ::                 Circle3.Top                 = 202
ORI        R2, R0, 202
SH        R2, Offset(_Circle3+8)(GP)
;kod2_driver.mbas,190 ::                 Circle3.Radius              = 18
ORI        R2, R0, 18
SH        R2, Offset(_Circle3+10)(GP)
;kod2_driver.mbas,191 ::                 Circle3.Pen_Width           = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle3+12)(GP)
;kod2_driver.mbas,192 ::                 Circle3.Pen_Color           = 0xFFE0
ORI        R2, R0, 65504
SH        R2, Offset(_Circle3+14)(GP)
;kod2_driver.mbas,193 ::                 Circle3.Visible             = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle3+16)(GP)
;kod2_driver.mbas,194 ::                 Circle3.Active              = 0
SB        R0, Offset(_Circle3+17)(GP)
;kod2_driver.mbas,195 ::                 Circle3.Transparent         = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle3+18)(GP)
;kod2_driver.mbas,196 ::                 Circle3.Gradient            = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle3+19)(GP)
;kod2_driver.mbas,197 ::                 Circle3.Gradient_Orientation = 0
SB        R0, Offset(_Circle3+20)(GP)
;kod2_driver.mbas,198 ::                 Circle3.Gradient_Start_Color = 0xFFFF
ORI        R2, R0, 65535
SH        R2, Offset(_Circle3+22)(GP)
;kod2_driver.mbas,199 ::                 Circle3.Gradient_End_Color  = 0xFFFF
ORI        R2, R0, 65535
SH        R2, Offset(_Circle3+24)(GP)
;kod2_driver.mbas,200 ::                 Circle3.Color               = 0xFFFF
ORI        R2, R0, 65535
SH        R2, Offset(_Circle3+26)(GP)
;kod2_driver.mbas,201 ::                 Circle3.PressColEnabled     = 1
ORI        R2, R0, 1
SB        R2, Offset(_Circle3+28)(GP)
;kod2_driver.mbas,202 ::                 Circle3.Press_Color         = 0xE71C
ORI        R2, R0, 59164
SH        R2, Offset(_Circle3+30)(GP)
;kod2_driver.mbas,203 ::                 Circle3.OnUpPtr             = 0
SW        R0, Offset(_Circle3+32)(GP)
;kod2_driver.mbas,204 ::                 Circle3.OnDownPtr           = 0
SW        R0, Offset(_Circle3+36)(GP)
;kod2_driver.mbas,205 ::                 Circle3.OnClickPtr          = 0
SW        R0, Offset(_Circle3+40)(GP)
;kod2_driver.mbas,206 ::                 Circle3.OnPressPtr          = 0
SW        R0, Offset(_Circle3+44)(GP)
;kod2_driver.mbas,208 ::                 Label1.OwnerScreenAddress  = @Screen1
LUI        R2, hi_addr(_Screen1+0)
ORI        R2, R2, lo_addr(_Screen1+0)
SW        R2, Offset(_Label1+0)(GP)
;kod2_driver.mbas,209 ::                 Label1.Order               = 5
ORI        R2, R0, 5
SB        R2, Offset(_Label1+4)(GP)
;kod2_driver.mbas,210 ::                 Label1.Left_               = 84
ORI        R2, R0, 84
SH        R2, Offset(_Label1+6)(GP)
;kod2_driver.mbas,211 ::                 Label1.Top                 = 14
ORI        R2, R0, 14
SH        R2, Offset(_Label1+8)(GP)
;kod2_driver.mbas,212 ::                 Label1.Width               = 70
ORI        R2, R0, 70
SH        R2, Offset(_Label1+10)(GP)
;kod2_driver.mbas,213 ::                 Label1.Height              = 15
ORI        R2, R0, 15
SH        R2, Offset(_Label1+12)(GP)
;kod2_driver.mbas,214 ::                 Label1.Visible             = 1
ORI        R2, R0, 1
SB        R2, Offset(_Label1+27)(GP)
;kod2_driver.mbas,215 ::                 Label1.Active              = 1
ORI        R2, R0, 1
SB        R2, Offset(_Label1+28)(GP)
;kod2_driver.mbas,216 ::                 Label1.Caption             = @Label1_Caption
LUI        R2, hi_addr(_Label1_Caption+0)
ORI        R2, R2, lo_addr(_Label1_Caption+0)
SW        R2, Offset(_Label1+16)(GP)
;kod2_driver.mbas,217 ::                 Label1_Caption             = "LCD képernyõ"
ADDIU        R3, GP, Offset(_Label1_Caption+0)
ORI        R2, R0, 76
SB        R2, 0(R3)
ORI        R2, R0, 67
SB        R2, 1(R3)
ORI        R2, R0, 68
SB        R2, 2(R3)
ORI        R2, R0, 32
SB        R2, 3(R3)
ORI        R2, R0, 107
SB        R2, 4(R3)
ORI        R2, R0, 233
SB        R2, 5(R3)
ORI        R2, R0, 112
SB        R2, 6(R3)
ORI        R2, R0, 101
SB        R2, 7(R3)
ORI        R2, R0, 114
SB        R2, 8(R3)
ORI        R2, R0, 110
SB        R2, 9(R3)
ORI        R2, R0, 121
SB        R2, 10(R3)
ORI        R2, R0, 245
SB        R2, 11(R3)
SB        R0, 12(R3)
;kod2_driver.mbas,218 ::                 Label1.FontName            = @Tahoma11x13_Regular
LUI        R2, hi_addr(_Tahoma11x13_Regular+0)
ORI        R2, R2, lo_addr(_Tahoma11x13_Regular+0)
SW        R2, Offset(_Label1+20)(GP)
;kod2_driver.mbas,219 ::                 Label1.Font_Color          = 0x0000
SH        R0, Offset(_Label1+24)(GP)
;kod2_driver.mbas,220 ::                 Label1.VerticalText        = 0
SB        R0, Offset(_Label1+26)(GP)
;kod2_driver.mbas,221 ::                 Label1.OnUpPtr             = 0
SW        R0, Offset(_Label1+32)(GP)
;kod2_driver.mbas,222 ::                 Label1.OnDownPtr           = 0
SW        R0, Offset(_Label1+36)(GP)
;kod2_driver.mbas,223 ::                 Label1.OnClickPtr          = 0
SW        R0, Offset(_Label1+40)(GP)
;kod2_driver.mbas,224 ::                 Label1.OnPressPtr          = 0
SW        R0, Offset(_Label1+44)(GP)
;kod2_driver.mbas,225 ::                 end sub
L_end_InitializeObjects:
JR        RA
NOP        
; end of kod2_driver_InitializeObjects
kod2_driver_IsInsideObject:
;kod2_driver.mbas,227 ::                 sub function IsInsideObject (dim X, Y as word, dim Left_, Top, Width, Height as word) as byte ' static
; Width start address is: 20 (R5)
LHU        R5, 0(SP)
; Height start address is: 24 (R6)
LHU        R6, 2(SP)
;kod2_driver.mbas,228 ::                 if ( (Left_<= X) and (Left_+ Width - 1 >= X) and
ANDI        R3, R27, 65535
ANDI        R2, R25, 65535
SLTU        R4, R2, R3
XORI        R4, R4, 1
BEQ        R4, R0, L_kod2_driver_IsInsideObject68
NOP        
ADDIU        R4, R0, -1
L_kod2_driver_IsInsideObject68:
ADDU        R2, R27, R5
; Width end address is: 20 (R5)
ADDIU        R2, R2, -1
ANDI        R3, R2, 65535
ANDI        R2, R25, 65535
SLTU        R2, R3, R2
XORI        R2, R2, 1
BEQ        R2, R0, L_kod2_driver_IsInsideObject70
NOP        
ADDIU        R2, R0, -1
L_kod2_driver_IsInsideObject70:
AND        R4, R4, R2
;kod2_driver.mbas,229 ::                 (Top <= Y)  and (Top + Height - 1 >= Y) ) then
ANDI        R3, R28, 65535
ANDI        R2, R26, 65535
SLTU        R2, R2, R3
XORI        R2, R2, 1
BEQ        R2, R0, L_kod2_driver_IsInsideObject72
NOP        
ADDIU        R2, R0, -1
L_kod2_driver_IsInsideObject72:
AND        R4, R4, R2
ADDU        R2, R28, R6
; Height end address is: 24 (R6)
ADDIU        R2, R2, -1
ANDI        R3, R2, 65535
ANDI        R2, R26, 65535
SLTU        R2, R3, R2
XORI        R2, R2, 1
BEQ        R2, R0, L_kod2_driver_IsInsideObject74
NOP        
ADDIU        R2, R0, -1
L_kod2_driver_IsInsideObject74:
AND        R2, R4, R2
BNE        R2, R0, L_kod2_driver_IsInsideObject76
NOP        
J        L_kod2_driver_IsInsideObject4
NOP        
L_kod2_driver_IsInsideObject76:
;kod2_driver.mbas,230 ::                 Result = 1
; Result start address is: 8 (R2)
ORI        R2, R0, 1
; Result end address is: 8 (R2)
J        L_kod2_driver_IsInsideObject5
NOP        
;kod2_driver.mbas,231 ::                 else
L_kod2_driver_IsInsideObject4:
;kod2_driver.mbas,232 ::                 Result = 0
; Result start address is: 8 (R2)
MOVZ        R2, R0, R0
; Result end address is: 8 (R2)
;kod2_driver.mbas,233 ::                 end if
L_kod2_driver_IsInsideObject5:
;kod2_driver.mbas,234 ::                 end sub
; Result start address is: 8 (R2)
; Result end address is: 8 (R2)
L_end_IsInsideObject:
JR        RA
NOP        
; end of kod2_driver_IsInsideObject
kod2_driver_GetLabel:
;kod2_driver.mbas,237 ::                 dim objPtr as ^ const code ^TLabel
;kod2_driver.mbas,238 ::                 objPtr = CurrentScreen^.Labels + index
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 12
LW        R3, 0(R2)
ANDI        R2, R25, 255
SLL        R2, R2, 2
ADDU        R2, R3, R2
;kod2_driver.mbas,239 ::                 Result = objPtr^
LW        R2, 0(R2)
; Result start address is: 8 (R2)
;kod2_driver.mbas,240 ::                 end sub
; Result end address is: 8 (R2)
L_end_GetLabel:
JR        RA
NOP        
; end of kod2_driver_GetLabel
kod2_driver_GetCircle:
;kod2_driver.mbas,243 ::                 dim objPtr as ^ const code ^TCircle
;kod2_driver.mbas,244 ::                 objPtr = CurrentScreen^.Circles + index
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 20
LW        R3, 0(R2)
ANDI        R2, R25, 255
SLL        R2, R2, 2
ADDU        R2, R3, R2
;kod2_driver.mbas,245 ::                 Result = objPtr^
LW        R2, 0(R2)
; Result start address is: 8 (R2)
;kod2_driver.mbas,246 ::                 end sub
; Result end address is: 8 (R2)
L_end_GetCircle:
JR        RA
NOP        
; end of kod2_driver_GetCircle
kod2_driver_GetLine:
;kod2_driver.mbas,249 ::                 dim objPtr as ^ const code ^TLine
;kod2_driver.mbas,250 ::                 objPtr = CurrentScreen^.Lines + index
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 28
LW        R3, 0(R2)
ANDI        R2, R25, 255
SLL        R2, R2, 2
ADDU        R2, R3, R2
;kod2_driver.mbas,251 ::                 Result = objPtr^
LW        R2, 0(R2)
; Result start address is: 8 (R2)
;kod2_driver.mbas,252 ::                 end sub
; Result end address is: 8 (R2)
L_end_GetLine:
JR        RA
NOP        
; end of kod2_driver_GetLine
_DrawLabel:
;kod2_driver.mbas,256 ::                 sub procedure DrawLabel(dim ALabel as ^TLabel)
ADDIU        SP, SP, -20
SW        RA, 0(SP)
;kod2_driver.mbas,257 ::                 if (ALabel^.Visible <> 0) then
SW        R25, 4(SP)
SW        R26, 8(SP)
SW        R27, 12(SP)
ADDIU        R2, R25, 27
LBU        R2, 0(R2)
ANDI        R2, R2, 255
BNE        R2, R0, L__DrawLabel82
NOP        
J        L__DrawLabel11
NOP        
L__DrawLabel82:
;kod2_driver.mbas,258 ::                 if (ALabel^.VerticalText <> 0) then
ADDIU        R2, R25, 26
LBU        R2, 0(R2)
ANDI        R2, R2, 255
BNE        R2, R0, L__DrawLabel84
NOP        
J        L__DrawLabel14
NOP        
L__DrawLabel84:
;kod2_driver.mbas,259 ::                 TFT_Set_Font(ALabel^.FontName, ALabel^.Font_Color, FO_VERTICAL_COLUMN)
ADDIU        R3, R25, 20
ADDIU        R2, R25, 24
SW        R25, 16(SP)
ORI        R27, R0, 2
LHU        R26, 0(R2)
LW        R25, 0(R3)
JAL        _TFT_Set_Font+0
NOP        
LW        R25, 16(SP)
J        L__DrawLabel15
NOP        
;kod2_driver.mbas,260 ::                 else
L__DrawLabel14:
;kod2_driver.mbas,261 ::                 TFT_Set_Font(ALabel^.FontName, ALabel^.Font_Color, FO_HORIZONTAL)
ADDIU        R3, R25, 20
ADDIU        R2, R25, 24
SW        R25, 16(SP)
MOVZ        R27, R0, R0
LHU        R26, 0(R2)
LW        R25, 0(R3)
JAL        _TFT_Set_Font+0
NOP        
LW        R25, 16(SP)
;kod2_driver.mbas,262 ::                 end if
L__DrawLabel15:
;kod2_driver.mbas,263 ::                 TFT_Write_Text(ALabel^.Caption, ALabel^.Left_, ALabel^.Top)
ADDIU        R4, R25, 16
ADDIU        R3, R25, 6
ADDIU        R2, R25, 8
LHU        R27, 0(R2)
LHU        R26, 0(R3)
LW        R25, 0(R4)
JAL        _TFT_Write_Text+0
NOP        
L__DrawLabel11:
;kod2_driver.mbas,265 ::                 end sub
L_end_DrawLabel:
LW        R27, 12(SP)
LW        R26, 8(SP)
LW        R25, 4(SP)
LW        RA, 0(SP)
ADDIU        SP, SP, 20
JR        RA
NOP        
; end of _DrawLabel
_DrawCircle:
;kod2_driver.mbas,267 ::                 sub procedure DrawCircle(dim ACircle as ^TCircle)
ADDIU        SP, SP, -24
SW        RA, 0(SP)
;kod2_driver.mbas,268 ::                 if (ACircle^.Visible <> 0) then
SW        R25, 4(SP)
SW        R26, 8(SP)
SW        R27, 12(SP)
SW        R28, 16(SP)
ADDIU        R2, R25, 16
LBU        R2, 0(R2)
ANDI        R2, R2, 255
BNE        R2, R0, L__DrawCircle87
NOP        
J        L__DrawCircle18
NOP        
L__DrawCircle87:
;kod2_driver.mbas,269 ::                 if object_pressed = 1 then
LBU        R3, Offset(_object_pressed+0)(GP)
ORI        R2, R0, 1
BEQ        R3, R2, L__DrawCircle88
NOP        
J        L__DrawCircle21
NOP        
L__DrawCircle88:
;kod2_driver.mbas,270 ::                 object_pressed = 0
SB        R0, Offset(_object_pressed+0)(GP)
;kod2_driver.mbas,271 ::                 TFT_Set_Brush(ACircle^.Transparent, ACircle^.Press_Color, ACircle^.Gradient, ACircle^.Gradient_Orientation,
ADDIU        R8, R25, 18
ADDIU        R7, R25, 30
ADDIU        R6, R25, 19
ADDIU        R5, R25, 20
;kod2_driver.mbas,272 ::                 ACircle^.Gradient_End_Color, ACircle^.Gradient_Start_Color)
ADDIU        R4, R25, 24
ADDIU        R2, R25, 22
LHU        R3, 0(R2)
LHU        R2, 0(R4)
SW        R25, 20(SP)
LBU        R28, 0(R5)
LBU        R27, 0(R6)
LHU        R26, 0(R7)
LBU        R25, 0(R8)
ADDIU        SP, SP, -4
SH        R3, 2(SP)
SH        R2, 0(SP)
JAL        _TFT_Set_Brush+0
NOP        
ADDIU        SP, SP, 4
LW        R25, 20(SP)
J        L__DrawCircle22
NOP        
;kod2_driver.mbas,273 ::                 else
L__DrawCircle21:
;kod2_driver.mbas,274 ::                 TFT_Set_Brush(ACircle^.Transparent, ACircle^.Color, ACircle^.Gradient, ACircle^.Gradient_Orientation,
ADDIU        R8, R25, 18
ADDIU        R7, R25, 26
ADDIU        R6, R25, 19
ADDIU        R5, R25, 20
;kod2_driver.mbas,275 ::                 ACircle^.Gradient_Start_Color, ACircle^.Gradient_End_Color)
ADDIU        R4, R25, 22
ADDIU        R2, R25, 24
LHU        R3, 0(R2)
LHU        R2, 0(R4)
SW        R25, 20(SP)
LBU        R28, 0(R5)
LBU        R27, 0(R6)
LHU        R26, 0(R7)
LBU        R25, 0(R8)
ADDIU        SP, SP, -4
SH        R3, 2(SP)
SH        R2, 0(SP)
JAL        _TFT_Set_Brush+0
NOP        
ADDIU        SP, SP, 4
LW        R25, 20(SP)
;kod2_driver.mbas,276 ::                 end if
L__DrawCircle22:
;kod2_driver.mbas,277 ::                 TFT_Set_Pen(ACircle^.Pen_Color, ACircle^.Pen_Width)
ADDIU        R3, R25, 14
ADDIU        R2, R25, 12
SW        R25, 20(SP)
LBU        R26, 0(R2)
LHU        R25, 0(R3)
JAL        _TFT_Set_Pen+0
NOP        
LW        R25, 20(SP)
;kod2_driver.mbas,278 ::                 TFT_Circle(ACircle^.Left_ + ACircle^.Radius,
ADDIU        R3, R25, 6
ADDIU        R2, R25, 10
LHU        R4, 0(R2)
LHU        R2, 0(R3)
ADDU        R3, R2, R4
;kod2_driver.mbas,279 ::                 ACircle^.Top + ACircle^.Radius,
ADDIU        R2, R25, 8
LHU        R2, 0(R2)
ADDU        R2, R2, R4
;kod2_driver.mbas,280 ::                 ACircle^.Radius)
ANDI        R27, R4, 65535
ANDI        R26, R2, 65535
ANDI        R25, R3, 65535
JAL        _TFT_Circle+0
NOP        
L__DrawCircle18:
;kod2_driver.mbas,282 ::                 end sub
L_end_DrawCircle:
LW        R28, 16(SP)
LW        R27, 12(SP)
LW        R26, 8(SP)
LW        R25, 4(SP)
LW        RA, 0(SP)
ADDIU        SP, SP, 24
JR        RA
NOP        
; end of _DrawCircle
_DrawLine:
;kod2_driver.mbas,284 ::                 sub procedure DrawLine(dim Aline as ^TLine)
ADDIU        SP, SP, -24
SW        RA, 0(SP)
;kod2_driver.mbas,285 ::                 if (Aline^.Visible <> 0) then
SW        R25, 4(SP)
SW        R26, 8(SP)
SW        R27, 12(SP)
SW        R28, 16(SP)
ADDIU        R2, R25, 15
LBU        R2, 0(R2)
ANDI        R2, R2, 255
BNE        R2, R0, L__DrawLine91
NOP        
J        L__DrawLine25
NOP        
L__DrawLine91:
;kod2_driver.mbas,286 ::                 TFT_Set_Pen(Aline^.Color, Aline^.Pen_Width)
ADDIU        R3, R25, 16
ADDIU        R2, R25, 14
SW        R25, 20(SP)
LBU        R26, 0(R2)
LHU        R25, 0(R3)
JAL        _TFT_Set_Pen+0
NOP        
LW        R25, 20(SP)
;kod2_driver.mbas,287 ::                 TFT_Line(Aline^.First_Point_X, Aline^.First_Point_Y, Aline^.Second_Point_X, Aline^.Second_Point_Y)
ADDIU        R5, R25, 6
ADDIU        R4, R25, 8
ADDIU        R3, R25, 10
ADDIU        R2, R25, 12
LHU        R28, 0(R2)
LHU        R27, 0(R3)
LHU        R26, 0(R4)
LHU        R25, 0(R5)
JAL        _TFT_Line+0
NOP        
L__DrawLine25:
;kod2_driver.mbas,289 ::                 end sub
L_end_DrawLine:
LW        R28, 16(SP)
LW        R27, 12(SP)
LW        R26, 8(SP)
LW        R25, 4(SP)
LW        RA, 0(SP)
ADDIU        SP, SP, 24
JR        RA
NOP        
; end of _DrawLine
_DrawScreen:
;kod2_driver.mbas,299 ::                 dim save_bled, save_bled_direction as byte
ADDIU        SP, SP, -44
SW        RA, 0(SP)
;kod2_driver.mbas,301 ::                 object_pressed = 0
SW        R25, 4(SP)
SW        R26, 8(SP)
SB        R0, Offset(_object_pressed+0)(GP)
;kod2_driver.mbas,302 ::                 order = 0
SH        R0, 16(SP)
;kod2_driver.mbas,303 ::                 label_idx = 0
SB        R0, 18(SP)
;kod2_driver.mbas,304 ::                 circle_idx = 0
SB        R0, 24(SP)
;kod2_driver.mbas,305 ::                 line_idx = 0
SB        R0, 32(SP)
;kod2_driver.mbas,306 ::                 CurrentScreen = aScreen
SW        R25, Offset(_CurrentScreen+0)(GP)
;kod2_driver.mbas,308 ::                 if (display_width <> CurrentScreen^.Width) or (display_height <> CurrentScreen^.Height) then
ADDIU        R2, R25, 2
LHU        R2, 0(R2)
ANDI        R3, R2, 65535
LHU        R2, Offset(_display_width+0)(GP)
XOR        R4, R2, R3
SLTU        R4, R0, R4
BEQ        R4, R0, L__DrawScreen94
NOP        
ADDIU        R4, R0, -1
L__DrawScreen94:
ADDIU        R2, R25, 4
LHU        R2, 0(R2)
ANDI        R3, R2, 65535
LHU        R2, Offset(_display_height+0)(GP)
XOR        R2, R2, R3
SLTU        R2, R0, R2
BEQ        R2, R0, L__DrawScreen96
NOP        
ADDIU        R2, R0, -1
L__DrawScreen96:
OR        R2, R4, R2
BNE        R2, R0, L__DrawScreen98
NOP        
J        L__DrawScreen29
NOP        
L__DrawScreen98:
;kod2_driver.mbas,309 ::                 save_bled = TFT_BLED
_LX        
EXT        R2, R2, BitPos(LATD6_bit+0), 1
SB        R2, 40(SP)
;kod2_driver.mbas,310 ::                 save_bled_direction = TFT_BLED_Direction
_LX        
EXT        R2, R2, BitPos(TRISD6_bit+0), 1
SB        R2, 41(SP)
;kod2_driver.mbas,311 ::                 TFT_BLED_Direction = 0
LUI        R2, BitMask(TRISD6_bit+0)
ORI        R2, R2, BitMask(TRISD6_bit+0)
_SX        
;kod2_driver.mbas,312 ::                 TFT_BLED           = 0
LUI        R2, BitMask(LATD6_bit+0)
ORI        R2, R2, BitMask(LATD6_bit+0)
_SX        
;kod2_driver.mbas,313 ::                 TFT_Init_ILI9341_16bit(CurrentScreen^.Width, CurrentScreen^.Height)
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R3, R2, 2
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 4
LHU        R26, 0(R2)
LHU        R25, 0(R3)
JAL        _TFT_Init_ILI9341_16bit+0
NOP        
;kod2_driver.mbas,314 ::                 TFT_Fill_Screen(CurrentScreen^.Color)
LW        R2, Offset(_CurrentScreen+0)(GP)
LHU        R25, 0(R2)
JAL        _TFT_Fill_Screen+0
NOP        
;kod2_driver.mbas,315 ::                 display_width = CurrentScreen^.Width
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 2
LHU        R2, 0(R2)
SH        R2, Offset(_display_width+0)(GP)
;kod2_driver.mbas,316 ::                 display_height = CurrentScreen^.Height
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 4
LHU        R2, 0(R2)
SH        R2, Offset(_display_height+0)(GP)
;kod2_driver.mbas,317 ::                 TFT_BLED           = save_bled
LBU        R3, 40(SP)
_LX        
INS        R2, R3, BitPos(LATD6_bit+0), 1
_SX        
;kod2_driver.mbas,318 ::                 TFT_BLED_Direction = save_bled_direction
LBU        R3, 41(SP)
_LX        
INS        R2, R3, BitPos(TRISD6_bit+0), 1
_SX        
J        L__DrawScreen30
NOP        
;kod2_driver.mbas,319 ::                 else
L__DrawScreen29:
;kod2_driver.mbas,320 ::                 TFT_Fill_Screen(CurrentScreen^.Color)
LW        R2, Offset(_CurrentScreen+0)(GP)
LHU        R25, 0(R2)
JAL        _TFT_Fill_Screen+0
NOP        
;kod2_driver.mbas,321 ::                 end if
L__DrawScreen30:
;kod2_driver.mbas,324 ::                 while (order < CurrentScreen^.ObjectsCount)
L__DrawScreen32:
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 6
LHU        R2, 0(R2)
ANDI        R3, R2, 65535
LHU        R2, 16(SP)
SLTU        R2, R2, R3
BNE        R2, R0, L__DrawScreen99
NOP        
J        L__DrawScreen33
NOP        
L__DrawScreen99:
;kod2_driver.mbas,325 ::                 if (label_idx < CurrentScreen^.LabelsCount) then
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 8
LHU        R2, 0(R2)
ANDI        R3, R2, 65535
LBU        R2, 18(SP)
SLTU        R2, R2, R3
BNE        R2, R0, L__DrawScreen100
NOP        
J        L__DrawScreen37
NOP        
L__DrawScreen100:
;kod2_driver.mbas,326 ::                 local_label = GetLabel(label_idx)
SW        R25, 12(SP)
LBU        R25, 18(SP)
JAL        kod2_driver_GetLabel+0
NOP        
LW        R25, 12(SP)
SW        R2, 20(SP)
;kod2_driver.mbas,327 ::                 if (order = local_label^.Order) then
ADDIU        R2, R2, 4
LBU        R2, 0(R2)
ANDI        R3, R2, 255
LHU        R2, 16(SP)
BEQ        R2, R3, L__DrawScreen101
NOP        
J        L__DrawScreen40
NOP        
L__DrawScreen101:
;kod2_driver.mbas,328 ::                 Inc(label_idx)
LBU        R2, 18(SP)
ADDIU        R2, R2, 1
SB        R2, 18(SP)
;kod2_driver.mbas,329 ::                 Inc(order)
LHU        R2, 16(SP)
ADDIU        R2, R2, 1
SH        R2, 16(SP)
;kod2_driver.mbas,330 ::                 DrawLabel(local_label)
SW        R25, 12(SP)
LW        R25, 20(SP)
JAL        _DrawLabel+0
NOP        
LW        R25, 12(SP)
L__DrawScreen40:
;kod2_driver.mbas,331 ::                 end if
L__DrawScreen37:
;kod2_driver.mbas,334 ::                 if (circle_idx < CurrentScreen^.CirclesCount) then
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 16
LHU        R2, 0(R2)
ANDI        R3, R2, 65535
LBU        R2, 24(SP)
SLTU        R2, R2, R3
BNE        R2, R0, L__DrawScreen102
NOP        
J        L__DrawScreen43
NOP        
L__DrawScreen102:
;kod2_driver.mbas,335 ::                 local_circle = GetCircle(circle_idx)
SW        R25, 12(SP)
LBU        R25, 24(SP)
JAL        kod2_driver_GetCircle+0
NOP        
LW        R25, 12(SP)
SW        R2, 28(SP)
;kod2_driver.mbas,336 ::                 if (order = local_circle^.Order) then
ADDIU        R2, R2, 4
LBU        R2, 0(R2)
ANDI        R3, R2, 255
LHU        R2, 16(SP)
BEQ        R2, R3, L__DrawScreen103
NOP        
J        L__DrawScreen46
NOP        
L__DrawScreen103:
;kod2_driver.mbas,337 ::                 Inc(circle_idx)
LBU        R2, 24(SP)
ADDIU        R2, R2, 1
SB        R2, 24(SP)
;kod2_driver.mbas,338 ::                 Inc(order)
LHU        R2, 16(SP)
ADDIU        R2, R2, 1
SH        R2, 16(SP)
;kod2_driver.mbas,339 ::                 DrawCircle(local_circle)
SW        R25, 12(SP)
LW        R25, 28(SP)
JAL        _DrawCircle+0
NOP        
LW        R25, 12(SP)
L__DrawScreen46:
;kod2_driver.mbas,340 ::                 end if
L__DrawScreen43:
;kod2_driver.mbas,343 ::                 if (line_idx < CurrentScreen^.LinesCount) then
LW        R2, Offset(_CurrentScreen+0)(GP)
ADDIU        R2, R2, 24
LHU        R2, 0(R2)
ANDI        R3, R2, 65535
LBU        R2, 32(SP)
SLTU        R2, R2, R3
BNE        R2, R0, L__DrawScreen104
NOP        
J        L__DrawScreen49
NOP        
L__DrawScreen104:
;kod2_driver.mbas,344 ::                 local_line = GetLine(line_idx)
SW        R25, 12(SP)
LBU        R25, 32(SP)
JAL        kod2_driver_GetLine+0
NOP        
LW        R25, 12(SP)
SW        R2, 36(SP)
;kod2_driver.mbas,345 ::                 if (order = local_line^.Order) then
ADDIU        R2, R2, 4
LBU        R2, 0(R2)
ANDI        R3, R2, 255
LHU        R2, 16(SP)
BEQ        R2, R3, L__DrawScreen105
NOP        
J        L__DrawScreen52
NOP        
L__DrawScreen105:
;kod2_driver.mbas,346 ::                 Inc(line_idx)
LBU        R2, 32(SP)
ADDIU        R2, R2, 1
SB        R2, 32(SP)
;kod2_driver.mbas,347 ::                 Inc(order)
LHU        R2, 16(SP)
ADDIU        R2, R2, 1
SH        R2, 16(SP)
;kod2_driver.mbas,348 ::                 DrawLine(local_line)
SW        R25, 12(SP)
LW        R25, 36(SP)
JAL        _DrawLine+0
NOP        
LW        R25, 12(SP)
L__DrawScreen52:
;kod2_driver.mbas,349 ::                 end if
L__DrawScreen49:
;kod2_driver.mbas,352 ::                 wend
J        L__DrawScreen32
NOP        
L__DrawScreen33:
;kod2_driver.mbas,353 ::                 end sub
L_end_DrawScreen:
LW        R26, 8(SP)
LW        R25, 4(SP)
LW        RA, 0(SP)
ADDIU        SP, SP, 44
JR        RA
NOP        
; end of _DrawScreen
kod2_driver_Init_MCU:
;kod2_driver.mbas,355 ::                 sub procedure Init_MCU()
;kod2_driver.mbas,357 ::                 end sub
L_end_Init_MCU:
JR        RA
NOP        
; end of kod2_driver_Init_MCU
_Start_TP:
;kod2_driver.mbas,359 ::                 sub procedure Start_TP()
ADDIU        SP, SP, -8
SW        RA, 0(SP)
;kod2_driver.mbas,360 ::                 Delay_ms(10)
SW        R25, 4(SP)
LUI        R24, 2
ORI        R24, R24, 2260
L__Start_TP56:
ADDIU        R24, R24, -1
BNE        R24, R0, L__Start_TP56
NOP        
NOP        
NOP        
;kod2_driver.mbas,361 ::                 Init_MCU()
JAL        kod2_driver_Init_MCU+0
NOP        
;kod2_driver.mbas,362 ::                 Delay_ms(10)
LUI        R24, 2
ORI        R24, R24, 2260
L__Start_TP58:
ADDIU        R24, R24, -1
BNE        R24, R0, L__Start_TP58
NOP        
NOP        
NOP        
;kod2_driver.mbas,363 ::                 InitializeTouchPanel()
JAL        kod2_driver_InitializeTouchPanel+0
NOP        
;kod2_driver.mbas,364 ::                 Delay_ms(10)
LUI        R24, 2
ORI        R24, R24, 2260
L__Start_TP60:
ADDIU        R24, R24, -1
BNE        R24, R0, L__Start_TP60
NOP        
NOP        
NOP        
;kod2_driver.mbas,365 ::                 InitializeObjects()
JAL        kod2_driver_InitializeObjects+0
NOP        
;kod2_driver.mbas,366 ::                 Delay_ms(10)
LUI        R24, 2
ORI        R24, R24, 2260
L__Start_TP62:
ADDIU        R24, R24, -1
BNE        R24, R0, L__Start_TP62
NOP        
NOP        
NOP        
;kod2_driver.mbas,367 ::                 display_width = Screen1.Width
LHU        R2, Offset(_Screen1+2)(GP)
SH        R2, Offset(_display_width+0)(GP)
;kod2_driver.mbas,368 ::                 display_height = Screen1.Height
LHU        R2, Offset(_Screen1+4)(GP)
SH        R2, Offset(_display_height+0)(GP)
;kod2_driver.mbas,369 ::                 DrawScreen(@Screen1)
LUI        R25, hi_addr(_Screen1+0)
ORI        R25, R25, lo_addr(_Screen1+0)
JAL        _DrawScreen+0
NOP        
;kod2_driver.mbas,370 ::                 end sub
L_end_Start_TP:
LW        R25, 4(SP)
LW        RA, 0(SP)
ADDIU        SP, SP, 8
JR        RA
NOP        
; end of _Start_TP
_kod2_driver_?main:
;kod2_driver.mbas,372 ::                 end.
L_end_kod2_driver_?main:
JR        RA
NOP        
; end of _kod2_driver_?main