diff --git a/Lua_scripts/DSM FwdPrg.lua b/Lua_scripts/DSM FwdPrg.lua index b3cca74..8336be5 100644 --- a/Lua_scripts/DSM FwdPrg.lua +++ b/Lua_scripts/DSM FwdPrg.lua @@ -35,25 +35,15 @@ local RX_VERSION, WAIT_CMD, MENU_TITLE, MENU_LINES, MENU_VALUES, VALUE_CHANGING, local MENU, LIST_MENU_NOCHANGING, LIST_MENU2, PERCENTAGE_VALUE = 0x1C, 0x6C, 0x4C, 0xC0 local Phase = RX_VERSION local Waiting_RX = 0 -local Prev_Menu = 0 -local Cur_Menu = -1 -local Next_line = -1 -local RX_Version = "" -local Menu_Title = "" -local Menu_Line = {} -local Next_Menu = {} -local Menu_Value = {} -local Menu_Type = {} -local Menu_Value_Max = {} -local Menu_Value_Min = {} -local Menu_Value_Def = {} local Text = {} local Retry=100 -local Selected_Line=-1 -local Menu_Edit = nil local Blink = 0 local Value_Changed=0 +local Menu = { Cur=nil, Id=nil, Title="", Prev=nil, PrevId=nil, Next=nil, NextId=nil, Back=nil, BackId=nil, CurLine=nil, SelLine=nil, EditLine=nil } +local Line = {} +local RX = { Name="", Version="" } + local function conv_int16(number) if number >= 0x8000 then return number - 0x10000 @@ -61,6 +51,14 @@ local function conv_int16(number) return number end +local function Get_Text(index) + out = Text[index] + if out == nil then -- unknown... + out = "Unknown_"..string.format("%X",index) + end + return out +end + local function DSM_Release() multiBuffer( 0, 0 ) end @@ -73,96 +71,118 @@ local function DSM_Send(...) multiBuffer( 3, 0x70+#arg) end +local function Value_Add(dir) + local line=Line[Menu.SelLine] + Speed = getRotEncSpeed() + if Speed == ROTENC_MIDSPEED then + line.Val = line.Val + (5 * dir) + elseif Speed == ROTENC_HIGHSPEED then + line.Val = line.Val + (15 * dir) + else + line.Val = line.Val + dir + end + if line.Val > line.Max then + line.Val = line.Max + elseif line.Val < line.Min then + line.Val = line.Min + end + if Line[Menu.SelLine].Type ~= LIST_MENU_NOCHANGING then + Phase = VALUE_CHANGING + Waiting_RX = 0 + end +end + local function DSM_Menu(event) local Speed = 0 if event == EVT_VIRTUAL_NEXT then - if Menu_Edit == nil then + if Menu.EditLine == nil then -- not changing a value - if Selected_Line ~= -1 and Selected_Line < 6 then - for line = Selected_Line + 1, 6, 1 do - if Menu_Line[line] ~= "" and Next_Menu[line] ~= Cur_Menu then - Selected_Line=line - break + if Menu.SelLine ~= nil then + if Menu.SelLine < 7 then + local num = Menu.SelLine + for i = Menu.SelLine + 1, 6, 1 do + if Line[i].Type ~= nil and Line[i].Next ~= nil then + Menu.SelLine=i + break + end end + if num == Menu.SelLine then + if Menu.Next ~= 0 then -- Next + Menu.SelLine = 7 + elseif Menu.Prev ~= 0 then -- Prev + Menu.SelLine = 8 + end + end + elseif Menu.Prev ~= 0 then -- Prev + Menu.SelLine = 8 end end - else - -- need to inc the value - if Menu_Value[Selected_Line] < Menu_Value_Max[Selected_Line] then - Speed = getRotEncSpeed() - if Speed == ROTENC_MIDSPEED then - Menu_Value[Selected_Line] = Menu_Value[Selected_Line] + 5 - elseif Speed == ROTENC_HIGHSPEED then - Menu_Value[Selected_Line] = Menu_Value[Selected_Line] + 15 - else - Menu_Value[Selected_Line] = Menu_Value[Selected_Line] + 1 - end - if Menu_Value[Selected_Line] > Menu_Value_Max[Selected_Line] then - Menu_Value[Selected_Line] = Menu_Value_Max[Selected_Line] - end - if Menu_Type[Selected_Line] ~= LIST_MENU_NOCHANGING then - Phase = VALUE_CHANGING - Waiting_RX = 0 - end - end + else -- need to inc the value + Value_Add(1) end elseif event == EVT_VIRTUAL_PREV then - if Menu_Edit == nil then - if Selected_Line > 0 then - for line = Selected_Line-1, 0, -1 do - if Menu_Line[line] ~= "" and Next_Menu[line] ~= Cur_Menu then - Selected_Line=line - break + if Menu.EditLine == nil then + if Menu.SelLine ~= nil then + if Menu.SelLine == 8 and Menu.Next ~= 0 then + Menu.SelLine = 7 + elseif Menu.SelLine > 0 then + if Menu.SelLine > 6 then + Menu.SelLine = 7 + end + local num = Menu.SelLine + for i = Menu.SelLine-1, 0, -1 do + if Line[i].Type ~= nil and Line[i].Next ~= nil then + Menu.SelLine=i + break + end + end + if num == Menu.SelLine then -- Back + Menu.SelLine = -1 end - end - end - else - -- need to dec the value - if Menu_Value[Selected_Line] > Menu_Value_Min[Selected_Line] then - Speed = getRotEncSpeed() - if Speed == ROTENC_MIDSPEED then - Menu_Value[Selected_Line] = Menu_Value[Selected_Line] - 5 - elseif Speed == ROTENC_HIGHSPEED then - Menu_Value[Selected_Line] = Menu_Value[Selected_Line] - 15 else - Menu_Value[Selected_Line] = Menu_Value[Selected_Line] - 1 - end - if Menu_Value[Selected_Line] < Menu_Value_Min[Selected_Line] then - Menu_Value[Selected_Line] = Menu_Value_Min[Selected_Line] - end - if Menu_Type[Selected_Line] ~= LIST_MENU_NOCHANGING then - Phase = VALUE_CHANGING - Waiting_RX = 0 + Menu.SelLine = -1 -- Back end end + else -- need to dec the value + Value_Add(-1) end elseif event == EVT_VIRTUAL_ENTER then - if Selected_Line ~= -1 then - if Menu_Type[Selected_Line] == MENU then -- Menu entry - if Next_Menu[Selected_Line] ~= nil then -- Next menu exist - Cur_Menu = Next_Menu[Selected_Line] - Phase = MENU_TITLE - Waiting_RX = 0 - end + if Menu.SelLine == -1 then -- Back + Menu.Cur = Menu.Back + Menu.Id = Menu.BackId + Menu.SelLine = 0 + Phase = MENU_TITLE + Waiting_RX = 0 + elseif Menu.SelLine == 7 then -- Next + Menu.Cur = Menu.Next + Menu.Id = Menu.NextId + Menu.SelLine = 0 + Phase = MENU_TITLE + Waiting_RX = 0 + elseif Menu.SelLine == 8 then -- Prev + Menu.Cur = Menu.Prev + Menu.Id = Menu.PrevId + Menu.SelLine = 0 + Phase = MENU_TITLE + Waiting_RX = 0 + elseif Menu.SelLine ~= nil and Line[Menu.SelLine].Next ~= nil then + if Line[Menu.SelLine].Type == MENU then -- Next menu exist + Menu.Cur = Line[Menu.SelLine].Next + Menu.Id = Line[Menu.SelLine].NextId + Phase = MENU_TITLE + Waiting_RX = 0 else -- value entry - if Menu_Edit == Selected_Line then - Menu_Edit = nil - Value_Changed=0 + if Menu.EditLine == Menu.SelLine then + Menu.EditLine = nil + Value_Changed = 0 Phase = VALUE_CHANGED Waiting_RX = 0 else - Menu_Edit = Selected_Line + Menu.EditLine = Menu.SelLine end end end - elseif event == EVT_VIRTUAL_PREV_PAGE then - killEvents(event) - if Cur_Menu ~= 0 then - Cur_Menu = Prev_Menu - Phase = MENU_TITLE - Waiting_RX = 0 - end end end @@ -175,49 +195,49 @@ local function DSM_Send_Receive() elseif Phase == WAIT_CMD then -- keep connection open DSM_Send(0x00,0x04,0x00,0x00) elseif Phase == MENU_TITLE then -- request menu title - if Cur_Menu == -1 then - DSM_Send(0x12,0x06,0x00,0x14,0x00,0x00) - Cur_Menu = 0 + if Menu.Cur == nil then + DSM_Send(0x12,0x06,0x00,0x14,0x00,0x00) -- first menu only + Menu.Cur = 0 else - DSM_Send(0x16,0x06,0x10,Cur_Menu,0x00,0x01) -- last byte is 0 or 1=unknown... + DSM_Send(0x16,0x06,Menu.Id,Menu.Cur,0x00,Menu.SelLine) end elseif Phase == MENU_LINES then -- request menu lines - if Cur_Line == -1 then - DSM_Send(0x13,0x04,0x10,Cur_Menu) -- line 0 - elseif Cur_Line >= 0x80 then + if Menu.CurLine == nil then + DSM_Send(0x13,0x04,Menu.Id,Menu.Cur) -- line 0 + elseif Menu.CurLine >= 0x80 then local last_byte={0x40,0x01,0x02,0x04,0x00,0x00} -- unknown... - DSM_Send(0x20,0x06,Cur_Line-0x80,Cur_Line-0x80,0x00,last_byte[Cur_Line-0x80+1]) -- line X + DSM_Send(0x20,0x06,Menu.CurLine-0x80,Menu.CurLine-0x80,0x00,last_byte[Menu.CurLine-0x80+1]) -- line X else - DSM_Send(0x14,0x06,0x10,Cur_Menu,0x00,Cur_Line) -- line X + DSM_Send(0x14,0x06,Menu.Id,Menu.Cur,0x00,Menu.CurLine) -- line X end elseif Phase == MENU_VALUES then -- request menu values - DSM_Send(0x15,0x06,0x10,Cur_Menu,0x10,Cur_Line) -- line X + DSM_Send(0x15,0x06,Menu.Id,Menu.Cur,Line[Menu.CurLine].ValId,Menu.CurLine) -- line X elseif Phase == VALUE_CHANGING then -- send value - local value=Menu_Value[Selected_Line] + local value=Line[Menu.SelLine].Val if value < 0 then value = 0x10000 + value end - DSM_Send(0x18,0x06,0x10,Selected_Line,bit32.rshift(value,8),bit32.band(value,0xFF)) -- send current value + DSM_Send(0x18,0x06,Line[Menu.SelLine].ValId,Menu.SelLine,bit32.rshift(value,8),bit32.band(value,0xFF)) -- send current value Phase = VALUE_CHANGING_WAIT elseif Phase == VALUE_CHANGED then -- send value if Value_Changed == 0 then - local value=Menu_Value[Selected_Line] + local value=Line[Menu.SelLine].Val if value < 0 then value = 0x10000 + value end - DSM_Send(0x18,0x06,0x10,Selected_Line,bit32.rshift(value,8),bit32.band(value,0xFF)) -- send current value + DSM_Send(0x18,0x06,Line[Menu.SelLine].ValId,Menu.SelLine,bit32.rshift(value,8),bit32.band(value,0xFF)) -- send current value Value_Changed = Value_Changed + 1 Waiting_RX = 0 elseif Value_Changed == 1 then - DSM_Send(0x19,0x06,0x10,Selected_Line) -- validate + DSM_Send(0x19,0x06,Line[Menu.SelLine].ValId,Menu.SelLine) -- validate -- Value_Changed = Value_Changed + 1 -- Waiting_RX = 0 --elseif Value_Changed == 2 then - -- DSM_Send(0x1B,0x06,0x10,Selected_Line) -- validate again? + -- DSM_Send(0x1B,0x06,0x10,Menu.SelLine) -- validate again? -- Value_Changed = Value_Changed + 1 end elseif Phase == VALUE_CHANGING_WAIT then - DSM_Send(0x1A,0x06,0x10,Selected_Line) + DSM_Send(0x1A,0x06,Line[Menu.SelLine].ValId,Menu.SelLine) end multiBuffer(10,0x00); Retry = 50 @@ -225,58 +245,79 @@ local function DSM_Send_Receive() -- Answer received --if multiBuffer(11) == 0x00 then -- waiting for commands? if multiBuffer(11) == 0x01 then -- read version - RX_Version = multiBuffer(14).."."..multiBuffer(15).."."..multiBuffer(16) + --ex: 0x09 0x01 0x00 0x15 0x02 0x22 0x01 0x00 0x14 0x00 0x00 0x00 0x00 0x00 0x00 0x00 + RX.Name = Get_Text(multiBuffer(13)) + RX.Version = multiBuffer(14).."."..multiBuffer(15).."."..multiBuffer(16) Phase = MENU_TITLE elseif multiBuffer(11) == 0x02 then -- read menu title - Menu_Title = Text[multiBuffer(14)+multiBuffer(15)*256] - if Menu_Title == nil then -- missing text... - Menu_Title = "Unknown_"..string.format("%X",multiBuffer(14)+multiBuffer(15)*256) + --ex: 0x09 0x02 0x4F 0x10 0xA5 0x00 0x00 0x00 0x50 0x10 0x10 0x10 0x00 0x00 0x00 0x00 + Menu.Cur = multiBuffer(12) + Menu.Id = multiBuffer(13) + Menu.Title = Get_Text(multiBuffer(14)+multiBuffer(15)*256) + Menu.Prev = multiBuffer(16) + Menu.PrevId = multiBuffer(17) + Menu.Next = multiBuffer(18) + Menu.NextId = multiBuffer(19) + Menu.Back = multiBuffer(20) + Menu.BackId = multiBuffer(21) + for i = 0, 6 do -- clear menu + Line[i] = { Menu = nil, Id = nil, Type = nil, Text="", Next = nil, NextId = nil, ValLine = nil, ValId = nil, Min, Max, Def, Val, Unit, Step } end - for line = 0, 6 do -- clear menu - Menu_Line[line] = "" - Next_Menu[line] = nil - Menu_Type[line] = nil + Menu.CurLine = nil + if Menu.Next ~= 0 then + Menu.SelLine = 7 -- highlight Next + else + Menu.SelLine = -1 -- highlight Back end - Menu_Edit = nil Blink = 0 - Prev_Menu = multiBuffer(20) - Cur_Line = -1 - Selected_Line = -1 Phase = MENU_LINES elseif multiBuffer(11) == 0x03 then -- read menu lines - Cur_Line = multiBuffer(14) - Menu_Type[Cur_Line] = multiBuffer(15) -- not quite sure yet: 1C is text menu only, 4C/6C is text menu followed by text list, C0 is text menu followed by percentage value - Menu_Line[Cur_Line] = Text[multiBuffer(16)+multiBuffer(17)*256] - if Menu_Line[Cur_Line] == nil then -- missing text... - Menu_Line[Cur_Line] = "Unknown_"..string.format("%X",multiBuffer(16)+multiBuffer(17)*256) + --ex: 0x09 0x03 0x00 0x10 0x00 0x1C 0xF9 0x00 0x10 0x10 0x00 0x00 0x00 0x00 0x03 0x00 + -- Menu Id line Type Text_idx Next V_Id Val_Min Val_Max Val_Def + --ex: 0x09 0x03 0x61 0x10 0x00 0x6C 0x50 0x00 0x00 0x10 0x36 0x00 0x49 0x00 0x36 0x00 + Menu.CurLine = multiBuffer(14) + local line = Line[Menu.CurLine] + line.Menu = multiBuffer(12) + line.Id = multiBuffer(13) -- not quite sure yet + line.Type = multiBuffer(15) -- not quite sure yet: 1C is text menu only, 4C/6C is text followed by text list, C0 is text followed by percentage value + line.Text = Get_Text(multiBuffer(16)+multiBuffer(17)*256) + if multiBuffer(18) == Menu.Cur then + line.Next = nil + else + line.Next = multiBuffer(18) -- not quite sure yet: 1C=text menu=>next menu, others=>line number of the value end - Next_Menu[Cur_Line] = multiBuffer(18) - if Selected_Line == -1 and Next_Menu[Cur_Line] ~= Cur_Menu then -- Auto select first line of the menu - Selected_Line = multiBuffer(14) + if Menu.SelLine == -1 and line.Next ~= nil then -- Auto select first line of the menu + Menu.SelLine = Menu.CurLine end - Menu_Value_Min[Cur_Line] = conv_int16(multiBuffer(20)+multiBuffer(21)*256) - Menu_Value_Max[Cur_Line] = conv_int16(multiBuffer(22)+multiBuffer(23)*256) - Menu_Value_Def[Cur_Line] = conv_int16(multiBuffer(24)+multiBuffer(25)*256) - if Menu_Type[Cur_Line] == 0x1C then + line.NextId = multiBuffer(19) -- not quite sure yet + line.ValLine = multiBuffer(18) -- not quite sure yet + line.ValId = multiBuffer(19) -- not quite sure yet + line.Min = conv_int16(multiBuffer(20)+multiBuffer(21)*256) + line.Max = conv_int16(multiBuffer(22)+multiBuffer(23)*256) + line.Def = conv_int16(multiBuffer(24)+multiBuffer(25)*256) + if line.Type == MENU then -- nothing to do on menu entries - elseif Menu_Type[Cur_Line] == LIST_MENU_NOCHANGING or Menu_Type[Cur_Line] == LIST_MENU2 then - Menu_Value[Cur_Line] = Menu_Value_Def[Cur_Line] - Menu_Value_Min[Cur_Line] -- use default value not sure if needed - Menu_Value_Def[Cur_Line] = Menu_Value_Min[Cur_Line] -- pointer to the start of the list in Text - Menu_Value_Max[Cur_Line] = Menu_Value_Max[Cur_Line] - Menu_Value_Min[Cur_Line] -- max index - Menu_Value_Min[Cur_Line] = 0 -- min index + elseif line.Type == LIST_MENU_NOCHANGING or line.Type == LIST_MENU2 then + line.Val = nil --line.Def - line.Min -- use default value not sure if needed + line.Def = line.Min -- pointer to the start of the list in Text + line.Max = line.Max - line.Min -- max index + line.Min = 0 -- min index else -- default to numerical value - Menu_Value[Cur_Line] = Menu_Value_Def[Cur_Line] -- use default value not sure if needed + line.Val = nil --line.Def -- use default value not sure if needed end - if Menu_Type[Cur_Line] ~= 0x1C then -- value to follow - Menu_Line[Cur_Line] = Menu_Line[Cur_Line]..":" + if line.Type ~= 0x1C then -- value to follow + line.Text = line.Text..":" end Phase = MENU_LINES elseif multiBuffer(11) == 0x04 then -- read menu values - Cur_Line = multiBuffer(14) - Menu_Value[Cur_Line] = conv_int16(multiBuffer(16)+multiBuffer(17)*256) + --ex: 0x09 0x04 0x53 0x10 0x00 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 + -- Menu MeId line VaId Value + --ex: 0x09 0x04 0x61 0x10 0x02 0x10 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 + Menu.CurLine = multiBuffer(14) + Line[Menu.CurLine].Val = conv_int16(multiBuffer(16)+multiBuffer(17)*256) Phase = MENU_VALUES elseif multiBuffer(11) == 0x05 then -- unknown... need to get through the lines... - Cur_Line = 0x80 + multiBuffer(12) + Menu.CurLine = 0x80 + multiBuffer(12) Phase = MENU_LINES elseif multiBuffer(11) == 0x00 and Phase == VALUE_CHANGING then Phase = VALUE_CHANGING_WAIT @@ -299,8 +340,6 @@ local function DSM_Send_Receive() end local function DSM_Display() - local line - lcd.clear() if LCD_W == 480 then --Draw title @@ -310,41 +349,66 @@ local function DSM_Display() if Phase == RX_VERSION then lcd.drawText(10,50,"No compatible DSM RX...", BLINK) else - local attrib=0; - lcd.drawText(50,32,Menu_Title) - for line = 0, 6 do - if line == Selected_Line then - attrib = INVERS - else - attrib = 0 - end - if Menu_Type[line] ~= nil and Menu_Type[line] ~= MENU then - local text="" - if Menu_Type[line] == LIST_MENU_NOCHANGING or Menu_Type[line] == LIST_MENU2 then - text = Text[Menu_Value[line]+Menu_Value_Def[line]] - if text == nil then - text = "Unknown_"..Menu_Value[line]+Menu_Value_Def[line] - end - elseif Menu_Type[line] == PERCENTAGE_VALUE then - text = Menu_Value[line].." %" + if Menu.Title ~= nil then + local attrib=0; + lcd.drawText(80,32,Menu.Title,MIDSIZE) + for i = 0, 6 do + if i == Menu.SelLine then + attrib = INVERS else - text = Menu_Value[line] + attrib = 0 end - if Menu_Edit == Selected_Line then - Blink = Blink + 1 - if Blink > 25 then - attrib = 0 - if Blink > 50 then - Blink = 0 + if Line[i] ~= nil and Line[i].Type ~= nil then + if Line[i].Type ~= MENU then-- list/value + if Line[i].Val ~= nil then + local text="" + if Line[i].Type == LIST_MENU_NOCHANGING or Line[i].Type == LIST_MENU2 then + text = Get_Text(Line[i].Val+Line[i].Def) + elseif Line[i].Type == PERCENTAGE_VALUE then + text = Line[i].Val.." %" + else + text = Line[i].Val + end + if Menu.EditLine == Menu.SelLine then -- blink edited entry + Blink = Blink + 1 + if Blink > 25 then + attrib = 0 + if Blink > 50 then + Blink = 0 + end + end + end + lcd.drawText(240,32+20*(i+2), text, attrib) -- display value end + attrib = 0 end + lcd.drawText(10,32+20*(i+2), Line[i].Text, attrib) -- display text end - lcd.drawText(240,32+20*(line+2),text,attrib) - attrib = 0 end - lcd.drawText(10,32+20*(line+2),Menu_Line[line], attrib) + if Menu.SelLine == -1 then + lcd.drawText(437,32, "Back", INVERS) + else + lcd.drawText(437,32, "Back", 0) + end + lcd.drawRectangle(437-5, 32-2, 48, 25) + if Menu.Next ~= 0 then + if Menu.SelLine == 7 then + lcd.drawText(437,220, "Next",INVERS) + else + lcd.drawText(437,220, "Next") + end + lcd.drawRectangle(437-5, 220-2, 48, 25) + end + if Menu.Prev ~= 0 then + if Menu.SelLine == 8 then + lcd.drawText(5,220, "Prev",INVERS) + else + lcd.drawText(5,220, "Prev") + end + lcd.drawRectangle(5-5, 220-2, 48, 25) + end end - lcd.drawText(10,252,"RX v"..RX_Version) + lcd.drawText(170,252, "RX "..RX.Name.." v"..RX.Version) -- display RX info end else -- --Draw RX Menu on LCD_W=128 @@ -391,7 +455,12 @@ local function DSM_Init() multiBuffer( 0, string.byte('D') ) multiBuffer( 1, string.byte('S') ) multiBuffer( 2, string.byte('M') ) + --Text to be displayed -> need to use a file instead? + --RX names-- + Text[0x0014]="SPM4651T" + Text[0x0015]="AR637T" + --Lists-- Text[0x0036]="Throttle" Text[0x0037]="Aileron" Text[0x0038]="Elevator" @@ -407,8 +476,11 @@ local function DSM_Init() Text[0x004B]="Main Menu" Text[0x004E]="Position" Text[0x0050]="Outputs" + --Text[0x005E]="Inhibit" Text[0x005F]="Hold Last" Text[0x0060]="Preset" + --Text[0x0061]="Custom" + --Messages-- Text[0x0090]="Apply" Text[0x0093]="Complete" Text[0x0094]="Done" @@ -423,10 +495,30 @@ local function DSM_Init() Text[0x0103]="before continuing setup." Text[0x0104]="" Text[0x0105]="" + Text[0x0106]="Any wing type, channel assignment," + Text[0x0107]="subtrim, or servo reversing changes" + Text[0x0108]="require running through initial" + Text[0x0109]="setup again." + Text[0x010A]="" + Text[0x010B]="" Text[0x019C]="Enter Receiver Bind Mode" Text[0x020A]="Restore from Backup" Text[0x0209]="Save to Backup" + + Text[0x021A]="Set the model level," + Text[0x021B]="and press Continue." + Text[0x021C]="" + Text[0x021D]="" + + Text[0x021F]="Set the model on its nose," + Text[0x0220]="and press Continue. If the" + Text[0x0221]="orientation on the next" + Text[0x0222]="screen is wrong go back" + Text[0x0223]="and try again." + Text[0x0224]="Continue" + Text[0x0229]="Set Orientation Manually" + Text[0x0227]="Other settings" Text[0x022B]="WARNING!" Text[0x022C]="This will reset the" @@ -444,11 +536,6 @@ local function DSM_Init() Text[0x0238]="that which is in" Text[0x0239]="the backup memory." Text[0x023A]="" - - --Lines to be displayed - for line = 0, 6 do -- clear lines - Menu_Line[line]="" - end end -- Main