Mercurial > public > hwos_code
view src/menu_processor.inc @ 580:1ab93aca7fa9
2.97 work...
author | heinrichsweikamp |
---|---|
date | Wed, 21 Feb 2018 19:30:28 +0100 |
parents | 653a3ab08062 |
children | b455b31ce022 |
line wrap: on
line source
;============================================================================= ; ; File menu_processor.asm ; ; Routines to handle all OSTC graphic/text menus. ; ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. ;============================================================================= ; HISTORY ; 2011-05-30 : [jDG] Creation. ; Restart menu-system from first icon/line: extern menu_processor_reset ; Recal last (automatically) saved icon/line when returning from submenu. extern menu_processor_pop ; Rexecute the menu block extern menu_processor extern menu_processor_bottom_line ;============================================================================= ; Menus parameters ;NOTE: should be idenric in .inc and .asm ! #define MENU_LINES_MAX .7 ; Number of lines per screen? #define MENU_HEIGHT .27 ; Spacing on screen. #define MENU_VCENTER .125 ; Position on screen. ;============================================================================= COMMON_BEGIN_MENU MACRO dynamic, txt, nb_items local center If nb_items > MENU_LINES_MAX center set MENU_VCENTER - (MENU_HEIGHT/2) * MENU_LINES_MAX Else center set MENU_VCENTER - (MENU_HEIGHT/2) * nb_items Endif If nb_items <= 0 Error "Zero items in menu ", x Endif extern txt call menu_processor ; Push 6 bytes of menu header data. db nb_items, dynamic db LOW(txt), HIGH(txt) db UPPER(txt), center ENDM ;============================================================================= ; Macro to generat (and check) menu vertical menu blocks with data. ; MENU_BEGIN MACRO menu_title, nb_items COMMON_BEGIN_MENU 0, menu_title, nb_items ENDM MENU_BEGIN_DYNAMIC macro title_proc, nb_items COMMON_BEGIN_MENU 1, title_proc, nb_items ENDM ;============================================================================= ; Submenu MENU_CALL MACRO txt, proc extern txt db 0, 0, 0, 0 db LOW(proc), HIGH(proc), UPPER(proc), 0 db LOW(txt), HIGH(txt) ENDM ; Generic option menu MENU_OPTION MACRO txt, option, callback extern txt extern option db 2, LOW(callback), HIGH(callback), UPPER(callback) db LOW(option),HIGH(option),UPPER(option), 0 db LOW(txt), HIGH(txt) ENDM MENU_DYNAMIC MACRO callback, proc extern callback db 3, LOW(callback), HIGH(callback), UPPER(callback) db LOW(proc), HIGH(proc), UPPER(proc), 0 db 0, 0 ENDM MENU_END MACRO ENDM