Возможно ли уйти от автомата состояний в обработчике меню? На данный момент пока получилось сделать точку входа через указатель на блоки меню\подменю, как в DOS. [menu]
menuitem=vc, Volcov Commander
menuitem=pqmagic, Partition Magic 8.0
menuitem=win95, Windows 95
menuitem=win98, Windows 98
menuitem=testmem, Testmem
menuitem=mhdd, MHDD
[vc]
device=a:\system\display.sys con=(ega,,1)
Country=007,866,a:\system\country.sys
device=a:\system\himem.sys /testmem:off
devicehigh=a:\system\ecscdide.sys /v /d:mscd000
installhigh=a:\system\mscdex.exe /d:mscd000 /l:r
lastdrive=z
[pqmagic]
device=a:\system\himem.sys /testmem:off
devicehigh=a:\system\ecscdide.sys /v /d:mscd000
installhigh=a:\system\mscdex.exe /d:mscd000 /l:r
lastdrive=z
Получилось так, по аналогии с config.sys:
Так как пишу на асме, написал, чтобы было понятно.
[MAIN_MENU]
Menu_Main_Stat_Inf:
string_xy 2, 7, T_MAIN
string_xy 3, 9, T_MENU
end_array
Tab_Menu_Main:
// Кнопа След. сост. Адрес блока Функция
KEY_ENTER, _MENU_SETT_ITEM_1, Tab_Menu_Sett_Item_1, Menu_Settings_Init
end_array
T_MAIN:
"ГЛАВНОЕ", 0
T_MENU:
"МЕНЮ", 0, 0
[MENU_SETTINGS]
Menu_Settings_Stat_Inf:
string_xy 1, 6, T_SETTINGS
string_xy 2, 1, T_ITEM_1
string_xy 3, 1, T_ITEM_2
string_xy 4, 1, T_ITEM_3
end_array
Tab_Menu_Sett_Item_1:
// Кнопа След. сост. Адрес блока Функция
KEY_ESC, _MENU_MAIN, Tab_Menu_Main, Menu_Main_Init
KEY_ENTER, _MENU_SETT_ITEM_1, Tab_Menu_Sett_Item_1, Blink_Led_1
KEY_UP, _MENU_SETT_ITEM_3, Tab_Menu_Sett_Item_3, Menu_Sett_Item_3_Init
KEY_DOWN, _MENU_SETT_ITEM_2, Tab_Menu_Sett_Item_2, Menu_Sett_Item_2_Init
end_array
Tab_Menu_Sett_Item_2:
KEY_ESC, _MENU_MAIN, Tab_Menu_Main, Menu_Main_Init
KEY_ENTER, _MENU_SETT_ITEM_2, Tab_Menu_Sett_Item_2, Blink_Led_2
KEY_UP, _MENU_SETT_ITEM_1, Tab_Menu_Sett_Item_1, Menu_Sett_Item_1_Init
KEY_DOWN, _MENU_SETT_ITEM_3, Tab_Menu_Sett_Item_3, Menu_Sett_Item_3_Init
end_array
Tab_Menu_Sett_Item_3:
KEY_ESC, _MENU_MAIN, Tab_Menu_Main, Menu_Main_Init
KEY_ENTER, _MENU_SETT_ITEM_3, Tab_Menu_Sett_Item_3, Blink_Led_3
KEY_UP, _MENU_SETT_ITEM_2, Tab_Menu_Sett_Item_2, Menu_Sett_Item_2_Init
KEY_DOWN, _MENU_SETT_ITEM_1, Tab_Menu_Sett_Item_1, Menu_Sett_Item_1_Init
end_array
T_SETTINGS:
"НАСТРОЙКИ", 0
T_ITEM_1:
"LED_1", 0
T_ITEM_2:
"LED_2", 0
T_ITEM_3:
"LED_3", 0
T_ITEM_4:
"LED_4", 0