comparison src/menu_processor.asm @ 640:8c1f1f334275

3.13 release
author heinrichsweikamp
date Thu, 29 Oct 2020 09:29:15 +0100
parents 4050675965ea
children 7d8a4c60ec1a
comparison
equal deleted inserted replaced
639:0ff82370991d 640:8c1f1f334275
1 ;============================================================================= 1 ;=============================================================================
2 ; 2 ;
3 ; File menu_processor.asm * combined next generation V3.09.5 3 ; File menu_processor.asm * combined next generation V3.12.1
4 ; 4 ;
5 ; Routines to handle all hwOS graphic/text menus. 5 ; Routines to handle all hwOS graphic/text menus.
6 ; 6 ;
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. 7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
8 ;============================================================================= 8 ;=============================================================================
67 clrf STKPTR ; never return from here 67 clrf STKPTR ; never return from here
68 68
69 VARARGS_GET8 menu_item_count ; get number of items 69 VARARGS_GET8 menu_item_count ; get number of items
70 VARARGS_GET8 menu_vertical_start ; get vertical start position of 1st menu item 70 VARARGS_GET8 menu_vertical_start ; get vertical start position of 1st menu item
71 71
72 movf menu_vertical_start,W ; excite flags 72 movf menu_vertical_start,W ; excite flags, vertical start = 0, i.e. no menu title text?
73 bz menu_processor_no_title ; no menu title text -> skip reading menu title text address 73 bz menu_processor_no_title ; YES - skip reading menu title text address
74 74
75 VARARGS_GET16 menu_title_addr ; get address of menu title text 75 VARARGS_GET16 menu_title_addr ; get address of menu title text
76 76
77 menu_processor_no_title: 77 menu_processor_no_title:
78 78
79 movff TBLPTRL, menu_item_data_start+0 ; store base address for menu_read_menu_item_data 79 movff TBLPTRL, menu_item_data_start+0 ; store base address of menu items for menu_read_menu_item_data
80 movff TBLPTRH, menu_item_data_start+1 ; ... 80 movff TBLPTRH, menu_item_data_start+1 ; ...
81 movff TBLPTRU, menu_item_data_start+2 ; ... 81 movff TBLPTRU, menu_item_data_start+2 ; ...
82 82
83 btfss divemode ; in dive mode? 83 btfss divemode ; in dive mode?
84 bra menu_processor_menu_title ; NO - no frame in surface mode menu 84 bra menu_processor_menu_title ; NO - no frame in surface mode menu
93 WIN_FRAME_COLOR dm_menu_row, dm_menu_lower, dm_menu_left ,dm_menu_right ; top, bottom, left, right 93 WIN_FRAME_COLOR dm_menu_row, dm_menu_lower, dm_menu_left ,dm_menu_right ; top, bottom, left, right
94 bra menu_processor_menu_body ; the dive mode menu has no menu title and footer 94 bra menu_processor_menu_body ; the dive mode menu has no menu title and footer
95 95
96 menu_processor_menu_title: 96 menu_processor_menu_title:
97 ; prepare screen 97 ; prepare screen
98 btfsc screen_type3 ; screen type 3 ?
99 bra menu_processor_menu_title1 ; YES - screen type 3 has no backlight
98 clrf CCP1CON ; stop PWM 100 clrf CCP1CON ; stop PWM
99 bcf PORTC,2 ; fade out backlight 101 bcf PORTC,2 ; fade out backlight
102 menu_processor_menu_title1:
100 call TFT_ClearScreen ; clear screen 103 call TFT_ClearScreen ; clear screen
101 104
102 ; draw menu title 105 ; draw menu title
103 WIN_BOX_BLACK .2,.23,.0,.159 ; clear menu title area 106 WIN_BOX_BLACK .2,.23,.0,.159 ; clear menu title area
104 WIN_STD .0, .2 ; set menu title font and position 107 WIN_STD .0, .2 ; set menu title font and position
250 movf selected_item,W ; get cursor position into WREG 253 movf selected_item,W ; get cursor position into WREG
251 rcall menu_read_menu_item_data ; read menu item data 254 rcall menu_read_menu_item_data ; read menu item data
252 movf item_funct_addr+0,W ; check if execute function call address is NULL 255 movf item_funct_addr+0,W ; check if execute function call address is NULL
253 iorwf item_funct_addr+1,W ; ... 256 iorwf item_funct_addr+1,W ; ...
254 bz next_line_menu ; YES - not selectable, step cursor to next menu item 257 bz next_line_menu ; YES - not selectable, step cursor to next menu item
255 btfss divemode ; NO - in dive mode? 258 btfsc divemode ; NO - in dive mode?
259 bra menu_line_loop_pre1 ; YES - skip next
256 rcall menu_draw_cursor_surf ; NO - draw the cursor (main menu style) 260 rcall menu_draw_cursor_surf ; NO - draw the cursor (main menu style)
257 btfss imprint_time_date ; - currently imprinting the current time & date? 261 btfss imprint_time_date ; - currently imprinting the current time & date?
258 bra menu_line_loop_pre1 ; NO - skip
259 btfss switch_right ; YES - right button pressed, i.e. time or date changed?
260 bra menu_line_loop_pre1 ; NO - skip 262 bra menu_line_loop_pre1 ; NO - skip
261 call TFT_imprint_time_date_fast ; YES - show a fast response on the screen (may momentarily show an illegal day/month combination) 263 btfss switch_right ; YES - right button pressed, i.e. time or date changed?
262 call rtc_set_rtc ; - update time and date on RTC module (corrects illegal day/month combinations) 264 bra menu_line_loop_pre1 ; NO - skip
265 call TFT_imprint_time_date_fast ; YES - show a fast response on the screen (may momentarily show an illegal day/month combination)
266 call rtc_set_rtc ; - update time and date on RTC module (corrects illegal day/month combinations)
263 267
264 menu_line_loop_pre1: 268 menu_line_loop_pre1:
265 bcf switch_right ; clear left-over right button event 269 bcf switch_right ; clear left-over right button event
266 bcf switch_left ; clear left-over left button event 270 bcf switch_left ; clear left-over left button event
267 271
268 menu_line_loop_pre2: 272 menu_line_loop_pre2:
269 btfsc divemode ; in dive mode? 273 btfsc divemode ; in dive mode?
270 goto divemode_option_divemenu_return ; YES - return to it 274 goto divemode_option_divemenu_return ; YES - return to it
271 call reset_timeout_surfmode ; NO - reset timeout 275 call reset_timeout_surfmode ; NO - reset timeout
276 ;bra menu_line_loop ; - operate menu HMI
272 277
273 menu_line_loop: 278 menu_line_loop:
274 call housekeeping ; - handle data imprinting, screen dump request, timeout and entering dive mode 279 call housekeeping ; handle data imprinting, screen dump request, timeout and entering dive mode
275 btfsc switch_right ; - right button pressed? 280 btfsc switch_right ; right button pressed?
276 bra do_line_menu ; YES - execute menu item function 281 bra do_line_menu ; YES - execute menu item function
277 btfss switch_left ; NO - left button pressed? 282 btfss switch_left ; NO - left button pressed?
278 bra menu_line_loop ; NO - loop 283 bra menu_line_loop ; NO - loop
279 next_line_menu: ; YES - step cursor to next menu item 284 next_line_menu: ; YES - step cursor to next menu item
280 bcf switch_left ; - clear button event 285 bcf switch_left ; - clear button event
281 incf selected_item,F ; - increment cursor position to next item 286 incf selected_item,F ; - increment cursor position to next item
282 movf selected_item,W ; - copy new item number to WREG 287 movf selected_item,W ; - copy new item number to WREG
283 cpfseq menu_item_count ; - new item number beyond number of menu items? 288 cpfseq menu_item_count ; - new item number beyond number of menu items?
284 bra menu_vertical_loop ; NO - redraw cursor 289 bra menu_vertical_loop ; NO - redraw cursor
285 clrf selected_item ; YES - reset cursor position to first item 290 clrf selected_item ; YES - reset cursor position to first item
286 bra menu_vertical_loop ; - redraw cursor 291 bra menu_vertical_loop ; - redraw cursor
287 292
288 293
289 ;----------------------------------------------------------------------------- 294 ;-----------------------------------------------------------------------------
290 ; Execute Menu Item Function 295 ; Execute Menu Item Function
291 ; 296 ;
332 bra menu_draw_lines_surfmode ; NO 337 bra menu_draw_lines_surfmode ; NO
333 ;bra menu_draw_lines_divemode ; YES 338 ;bra menu_draw_lines_divemode ; YES
334 339
335 global menu_draw_lines_divemode 340 global menu_draw_lines_divemode
336 menu_draw_lines_divemode: 341 menu_draw_lines_divemode:
337 movlw dm_menu_item1_row ; get row position for 1st item 342 movff menu_item_count,menu_pos_max ; copy number of item in menu block to menu_pos_max (used by divemode instead of menu_item_count for no reason)
338 movwf win_top ; set vertical output position 343
339 movlw dm_menu_item1_column ; get column position for 1st item 344 IFDEF _big_divemenu
340 movwf win_leftx2 ; set horizontal output position 345
346 btfss alt_layout_active ; big menu selected?
347 bra menu_draw_lines_divemode_small ; NO
348 ;bra menu_draw_lines_divemode_big ; YES
349
350 menu_draw_lines_divemode_big:
351 WIN_STD dm_menu_item1_column+.16,dm_menu_item1_row+.22
352 decf menu_pos_cur,W ; get selected item as 0..5 into WREG
353 movwf menu_item_start ; set first item to draw = selected item
354 bra menu_draw_menu_items_common ; continue with common part
355
356 ENDIF ; _big_divemenu
357
358 menu_draw_lines_divemode_small:
359 WIN_SMALL dm_menu_item1_column,dm_menu_item1_row
341 clrf menu_item_start ; set first item in menu block as first item to draw 360 clrf menu_item_start ; set first item in menu block as first item to draw
342 movff menu_item_count,menu_pos_max ; copy number of item in menu block to menu_pos_max
343 bra menu_draw_menu_items_common ; continue with common part 361 bra menu_draw_menu_items_common ; continue with common part
344 362
345 menu_draw_lines_surfmode: 363 menu_draw_lines_surfmode:
346 WIN_SMALL MENU_LEFT, 0 ; initialize start position and font 364 WIN_SMALL MENU_LEFT, 0 ; initialize start position and font
347 movff menu_vertical_start,win_top ; set vertical output position 365 movff menu_vertical_start,win_top ; set vertical output position
349 367
350 IFDEF scrolling_menu_enabled 368 IFDEF scrolling_menu_enabled
351 ; does the menu have more than 7 item ? 369 ; does the menu have more than 7 item ?
352 movf menu_item_count,W ; get number of menu items 370 movf menu_item_count,W ; get number of menu items
353 addlw -(MENU_LINES_MAX+1) ; more than 7 item? 371 addlw -(MENU_LINES_MAX+1) ; more than 7 item?
354 bn menu_draw_menu_items_common ; NO - continue with common part 372 bn menu_draw_menu_items_common ; NO - continue with common part
355 movf selected_item,W ; YES - compute first item to be drawn as current cursor position - 6 373 movf selected_item,W ; YES - compute first item to be drawn as current cursor position - 6
356 addlw -(MENU_LINES_MAX-1) ; - ... 374 addlw -(MENU_LINES_MAX-1) ; - ...
357 btfsc STATUS,N ; - is this < 0 ? 375 btfsc STATUS,N ; - is this < 0 ?
358 clrf WREG ; YES - revert to starting from first item 376 clrf WREG ; YES - revert to starting from first item
359 movwf menu_item_start ; - set first item to be drawn 377 movwf menu_item_start ; - set first item to be drawn
360 ENDIF ; scrolling_menu_enabled 378 ENDIF ; scrolling_menu_enabled
361 379
362 menu_draw_menu_items_common: 380 menu_draw_menu_items_common:
363 movff menu_item_start,menu_item_curr ; initialize menu item counter 381 movff menu_item_start,menu_item_curr ; initialize menu item counter
364 FONT_SIZE FT_SMALL ; set font size
365 382
366 menu_draw_menu_items_loop: 383 menu_draw_menu_items_loop:
367 FONT_COLOR_MEMO ; set default font color (may be changed by dynamic titles) 384 FONT_COLOR_MEMO ; set default font color (may had been changed by a dynamic title)
385 REINIT_BUFFER ; initialize output buffer again
368 movf menu_item_curr,W ; get menu item to draw 386 movf menu_item_curr,W ; get menu item to draw
369 rcall menu_read_menu_item_data ; read menu item data 387 rcall menu_read_menu_item_data ; read menu item data
370 movf item_type,W ; switch on menu item type: 388 movf item_type,W ; switch on menu item type:
371 bz menu_draw_menu_item_dynamic ; -> 0: call with dynamic title 389 bz menu_draw_menu_item_dynamic ; -> 0: call with dynamic title
372 dcfsnz WREG ; 390 dcfsnz WREG ;
373 bra menu_draw_menu_item_call ; -> 1: call with fixed title 391 bra menu_draw_menu_item_call ; -> 1: call with fixed title
374 dcfsnz WREG ; 392 dcfsnz WREG ;
375 bra menu_draw_menu_item_option ; -> 2: option increment 393 bra menu_draw_menu_item_option ; -> 2: option increment
376 bra menu_draw_menu_item_print ; no output in case of illegal type 394 bra menu_draw_menu_item_print ; no output in case of illegal type
377 395
378 menu_draw_menu_item_dynamic: 396 menu_draw_menu_item_dynamic:
379
380 movf item_title_addr+0,W ; check if call address is NULL 397 movf item_title_addr+0,W ; check if call address is NULL
381 iorwf item_title_addr+1,W ; ... 398 iorwf item_title_addr+1,W ; ...
382 btfsc STATUS,Z ; is null? 399 btfsc STATUS,Z ; is null?
383 bra menu_draw_menu_item_no_print ; YES - no printing on this menu line 400 bra menu_draw_menu_item_after_print ; YES - no printing on this menu line
384 INIT_BUFFER ; NO - initialize buffer 401 movff menu_item_curr,PRODL ; NO - pass menu item position to call function
385 movff menu_item_curr,PRODL ; - pass menu item position to call function
386 rcall menu_text_call ; - call dynamic title function 402 rcall menu_text_call ; - call dynamic title function
387 bra menu_draw_menu_item_print ; - print menu item 403 bra menu_draw_menu_item_print ; - print menu item
388 404
389 menu_draw_menu_item_call: 405 menu_draw_menu_item_call:
390 movff item_title_addr+0,FSR1L ; point to multi-lingual text 406 movff item_title_addr+0,FSR1L ; point to multi-lingual text
391 movff item_title_addr+1,FSR1H ; ... 407 movff item_title_addr+1,FSR1H ; ...
392 call strcpy_text_FSR ; copy translated text to buffer 408 call strcat_text_FSR ; copy translated text to buffer
393 bra menu_draw_menu_item_print ; print menu item 409 bra menu_draw_menu_item_print ; print menu item
394 410
395 menu_draw_menu_item_option: 411 menu_draw_menu_item_option:
396 movff item_title_addr+0,FSR1L ; point to multi-lingual text 412 movff item_title_addr+0,FSR1L ; point to multi-lingual text
397 movff item_title_addr+1,FSR1H ; ... 413 movff item_title_addr+1,FSR1H ; ...
398 call strcpy_text_FSR ; copy translated text to buffer 414 call strcat_text_FSR ; copy translated text to buffer
399 movff option_addr+0,FSR0L ; hand over address of option definition data 415 movff option_addr+0,FSR0L ; hand over address of option definition data
400 movff option_addr+1,FSR0H ; ... 416 movff option_addr+1,FSR0H ; ...
401 btfsc option_addr+1,6 ; is the selected option an option group member? 417 btfsc option_addr+1,6 ; is the selected option an option group member?
402 call option_adjust_group_member ; YES - adjust address to selected group member 418 call option_adjust_group_member ; YES - adjust address to selected group member
403 btfss block_option_value ; displaying of option value suspended? 419 btfss block_option_value ; displaying of option value suspended?
408 movlw MAX_LINE_LENGTH_SURF ; load maximum length for a surface menu item 424 movlw MAX_LINE_LENGTH_SURF ; load maximum length for a surface menu item
409 btfsc divemode ; in dive mode? 425 btfsc divemode ; in dive mode?
410 movlw MAX_LINE_LENGTH_DIVE ; YES - replace with maximum length for a dive mode menu item 426 movlw MAX_LINE_LENGTH_DIVE ; YES - replace with maximum length for a dive mode menu item
411 call TFT_buffer_trim_length ; fill up or cut buffer to max length 427 call TFT_buffer_trim_length ; fill up or cut buffer to max length
412 PRINT ; print menu item to screen 428 PRINT ; print menu item to screen
413 ;bra menu_draw_menu_item_no_print ; continue with after-print actions 429 ;bra menu_draw_menu_item_after_print ; continue with after-print actions
414 430
415 menu_draw_menu_item_no_print: 431 menu_draw_menu_item_after_print:
416 movlw MENU_HEIGHT_SURF ; get menu items vertical spacing for surface mode
417 btfsc divemode ; in dive mode?
418 movlw MENU_HEIGHT_DIVE ; YES - replace with vertical spacing for dive mode
419
420 addwf win_top,F ; adjust vertical output position
421 incf menu_item_curr,F ; go to next menu item
422
423 btfss divemode ; in dive mode? 432 btfss divemode ; in dive mode?
424 bra menu_draw_menu_item_surfmode ; NO 433 bra menu_draw_menu_item_common ; NO
425 ;bra menu_draw_menu_item_divemode ; YES 434 ;bra menu_draw_menu_item_divemode ; YES
426 435
427 menu_draw_menu_item_divemode: 436 menu_draw_menu_item_divemode:
428 movlw .3 ; load a 3 437 IFDEF _big_divemenu
429 cpfseq menu_item_curr ; just done menu item 3 ? 438 btfsc alt_layout_active ; big menu selected?
439 return ; YES - done
440 ENDIF
441
442 movlw .2 ; load a 2
443 cpfseq menu_item_curr ; just done menu item 2 (last item in left column) ?
430 bra menu_draw_menu_item_common ; NO - continue with common part 444 bra menu_draw_menu_item_common ; NO - continue with common part
431 movlw dm_menu_item4_row ; YES - set vertical position for 2nd column 445 movlw dm_menu_item4_row ; YES - set vertical position for 2nd column
432 movff WREG,win_top ; - ... 446 movff WREG,win_top ; - ...
433 movlw dm_menu_item4_column ; - set horizontal position for 2nd column 447 movlw dm_menu_item4_column ; - set horizontal position for 2nd column
434 movff WREG,win_leftx2 ; - ... 448 movff WREG,win_leftx2 ; - ...
435 bra menu_draw_menu_item_common ; - continue with common part 449 bra menu_draw_menu_item_common_1 ; - continue in common part
436 450
437 menu_draw_menu_item_surfmode: 451 menu_draw_menu_item_common:
452 movlw MENU_HEIGHT_SURF ; get menu items vertical spacing for surface mode
453 btfsc divemode ; in dive mode?
454 movlw MENU_HEIGHT_DIVE ; YES - replace with vertical spacing for dive mode
455 addwf win_top,F ; adjust vertical output position
456
457 menu_draw_menu_item_common_1:
458 incf menu_item_curr,F ; increment menu item number
459
438 IFDEF scrolling_menu_enabled 460 IFDEF scrolling_menu_enabled
439 movf menu_item_start,W ; get the number of the menu item that menu drawing started with 461 btfsc divemode ; in dive mode?
440 subwf menu_item_curr,W ; compute how many item have been drawn already 462 bra menu_draw_menu_item_common_2 ; YES - skip
441 xorlw MENU_LINES_MAX ; compare with how max item fit the screen 463 movf menu_item_start,W ; NO - get the number of the menu item that menu drawing started with
442 btfsc STATUS,Z ; screen full? 464 subwf menu_item_curr,W ; - compute how many item have been drawn already
443 return ; YES - done 465 xorlw MENU_LINES_MAX ; - compare with how max item fit the screen
444 ;bra menu_draw_menu_item_common ; NO - continue with common part 466 btfsc STATUS,Z ; - screen full?
467 return ; - YES - done
468 ;bra menu_draw_menu_item_common_2 ; NO - continue
445 ENDIF ; scrolling_menu_enabled 469 ENDIF ; scrolling_menu_enabled
446 470
447 menu_draw_menu_item_common: 471 menu_draw_menu_item_common_2:
448 movf menu_item_curr,W ; get current menu item 472 movf menu_item_curr,W ; get current menu item
449 xorwf menu_item_count,W ; compare with total number of menu items, more item to do? 473 xorwf menu_item_count,W ; compare with total number of menu items, more item to do?
450 bnz menu_draw_menu_items_loop ; YES - loop 474 bnz menu_draw_menu_items_loop ; YES - loop
451 return ; NO - done 475 return ; NO - done
452 476
463 487
464 ;----------------------------------------------------------------------------- 488 ;-----------------------------------------------------------------------------
465 ; Draw the Cursor (Main Menu Style) 489 ; Draw the Cursor (Main Menu Style)
466 ; 490 ;
467 menu_draw_cursor_surf: 491 menu_draw_cursor_surf:
468 WIN_LEFT MENU_LEFT-8 ; set horizontal start of cursor column 492 WIN_LEFT MENU_LEFT-8 ; set horizontal start of cursor column
469 WIN_WIDTH .6 ; set width of cursor column 493 WIN_WIDTH .6 ; set width of cursor column
470 WIN_HEIGHT .223 ; set preliminary hight of cursor column 494 WIN_HEIGHT .223 ; set preliminary hight of cursor column
471 495
472 movf menu_vertical_start,W ; get vertical start of menu items 496 movf menu_vertical_start,W ; get vertical start of menu items
473 movwf win_top ; set vertical start of cursor column 497 movwf win_top ; set vertical start of cursor column
474 subwf win_height,F ; final hight = prelim.height - vertical start 498 subwf win_height,F ; final hight = prelim.height - vertical start
475 499
476 clrf WREG ; set color to black 500 clrf WREG ; set color to black
477 BOX_COLOR ; clear cursor area 501 BOX_COLOR ; clear cursor area
502
503 FONT_SIZE FT_SMALL ; set font size
478 504
479 movf menu_item_start,W ; get number of menu item that is on the first line 505 movf menu_item_start,W ; get number of menu item that is on the first line
480 subwf selected_item,W ; compute line number of current menu item 506 subwf selected_item,W ; compute line number of current menu item
481 507
482 mullw MENU_HEIGHT_SURF ; multiply line number with vertical menu items spacing 508 mullw MENU_HEIGHT_SURF ; multiply line number with vertical menu items spacing
483 movf PRODL,W ; get computed vertical offset 509 movf PRODL,W ; get computed vertical offset
484 addwf menu_vertical_start,W ; add offset to vertical start position 510 addwf menu_vertical_start,W ; add offset to vertical start position
485 movwf win_top ; set final vertical position 511 movwf win_top ; set final vertical position
486 bra menu_draw_cursor_common ; print cursor and return 512 bra menu_draw_cursor_common ; print cursor
487 513
488 514
489 ;----------------------------------------------------------------------------- 515 ;-----------------------------------------------------------------------------
490 ; Draw the Cursor (Dive Mode Style) 516 ; Draw the Cursor (Dive Mode Style)
491 ; 517 ;
492 global menu_draw_cursor_dive 518 global menu_draw_cursor_dive
493 menu_draw_cursor_dive: 519 menu_draw_cursor_dive:
520 IFDEF _big_divemenu
521 btfss alt_layout_active ; big menu selected?
522 bra menu_draw_cursor_dive_small ; NO
523 ;bra menu_draw_cursor_dive_big ; YES
524
525 menu_draw_cursor_dive_big:
526 WIN_STD dm_menu_item1_column,dm_menu_item1_row+.20
527 bra menu_draw_cursor_common ; print cursor
528 ENDIF ; _big_divemenu
529
530 menu_draw_cursor_dive_small:
494 ; clear cursor areas 531 ; clear cursor areas
495 WIN_BOX_BLACK dm_menu_row+.1, dm_menu_lower-.1, dm_menu_item1_column-.8, dm_menu_item1_column-.1 532 WIN_BOX_BLACK dm_menu_row+.1, dm_menu_lower-.1, dm_menu_item1_column-.8, dm_menu_item1_column-.1
496 WIN_BOX_BLACK dm_menu_row+.1, dm_menu_lower-.1, dm_menu_item4_column-.8, dm_menu_item4_column-.1 533 WIN_BOX_BLACK dm_menu_row+.1, dm_menu_lower-.1, dm_menu_item4_column-.8, dm_menu_item4_column-.1
534
535 FONT_SIZE FT_SMALL ; set font size
497 536
498 movlw dm_menu_item1_column-.8 ; load position of left column 537 movlw dm_menu_item1_column-.8 ; load position of left column
499 btfsc menu_pos_cur,2 ; cursor at menu item 4..6 ? 538 btfsc menu_pos_cur,2 ; cursor at menu item 4..6 ?
500 movlw dm_menu_item4_column-.8 ; YES - replace with position of right column 539 movlw dm_menu_item4_column-.8 ; YES - replace with position of right column
501 movwf win_leftx2 ; set horizontal position 540 movwf win_leftx2 ; set horizontal position
502 541
503 decf menu_pos_cur,W ; get cursor position as 0..5 into WREG 542 decf menu_pos_cur,W ; get cursor position as 0..5 into WREG
504 btfsc menu_pos_cur,2 ; cursor at menu item 4..6 ? 543 btfsc menu_pos_cur,2 ; cursor at menu item 4..6 ?
505 addlw -.3 ; YES - subtract 3 to get line number in right column 544 addlw -.3 ; YES - subtract 3 to get line number in right column
506 545
507 mullw MENU_HEIGHT_DIVE ; multiply line number with vertical menu items spacing 546 mullw MENU_HEIGHT_DIVE ; multiply line number (0..2) with vertical menu items spacing
508 movf PRODL,W ; get computed vertical offset 547 movf PRODL,W ; get computed vertical offset
509 addlw dm_menu_item1_row ; add offset to vertical start position 548 addlw dm_menu_item1_row ; add offset to vertical start position
510 movwf win_top ; set final vertical position 549 movwf win_top ; set final vertical position
511 ;bra menu_draw_cursor_common ; print cursor and return 550 ;bra menu_draw_cursor_common ; print cursor
512 551
513 552
514 ;----------------------------------------------------------------------------- 553 ;-----------------------------------------------------------------------------
515 ; Helper Function - common Part of drawing the Cursor 554 ; Helper Function - common Part of drawing the Cursor
516 ; 555 ;
517 menu_draw_cursor_common: 556 menu_draw_cursor_common:
518 FONT_COLOR_MEMO ; set font color 557 FONT_COLOR_MEMO ; set font color (may have changed in-between)
519 FONT_SIZE FT_SMALL ; set font size
520 STRCPY_PRINT "\xb7" ; print cursor 558 STRCPY_PRINT "\xb7" ; print cursor
521 return ; done 559 return ; done
522 560
523 ;----------------------------------------------------------------------------- 561 ;-----------------------------------------------------------------------------
524 562