⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_menu.lst

📁 5807收音机模块用于炬力平台
💻 LST
📖 第 1 页 / 共 2 页
字号:
     93                      }
     94                      else    //>5, to show arrow
     95                      {
     96                          //active item on middle
     97                          if(menu->active < 5)        /* iiaii >*/
     98                          {
     99                              //show icon
    100                              for(i=0; i<5; i++)
    101                              {
    102                                  ResShowPic(menu->pic_inactive[i], menu_pos[i], 0);
    103                              }
    104                              //show active, 2 frame movie effect!!
    105                              ResShowPic(menu->pic_active[menu->active], menu_pos[menu->active]-2, 0);
    106                              //show right arrow
    107                              ResShowPic(CARROWR, POSITION_MENUR, 0);
    108                              //clear left arrow
    109                              ResShowPic(CARROWN, POSITION_MENUL, 0);
    110                          } /* iiaii >*/
    111                          //active item on right
    112                          else        /* < iiiia >*/
    113                          {
    114                              for(i=menu->active-4; i<= menu->active; i++)
    115                              {
    116                                  ResShowPic(menu->pic_inactive[i], menu_pos[i-(menu->active-4)], 0);
    117                              }
    118          
    119                              //show active, 2 frame movie effect!!
    120                              ResShowPic(menu->pic_active[menu->active], menu_pos[4]-2, 0);
    121          
    122                              //show arrow
    123                              if(menu->active == menu->total-1)
    124                              {
    125                                  //clear right arrow
    126                                  ResShowPic(CARROWN, POSITION_MENUR, 0);
    127                              }
    128                              else
    129                              {
    130                                  //show right arrow
    131                                  ResShowPic(CARROWR, POSITION_MENUR, 0);
    132                              }
    133                              //show left arrow
    134                              ResShowPic(CARROWL, POSITION_MENUL, 0);
    135                          }  /* < iiiia >*/
    136                      }// >5
    137          #endif
    138                      //show text in middle of screen
    139                      ResShowMultiString(menu->string[menu->active], menu->string_id, 255, 16);
   \   0145  0E10              LD      C,16
   \   0147  C5                PUSH    BC
   \   0148  0EFF              LD      C,255
   \   014A  C5                PUSH    BC
   \   014B  FD4E0A            LD      C,(IY+10)
   \   014E  FD6E02            LD      L,(IY+2)
   \   0151  FD6603            LD      H,(IY+3)
   \   0154  29                ADD     HL,HL
   \   0155  FD5E08            LD      E,(IY+8)
   \   0158  FD5609            LD      D,(IY+9)
   \   015B  19                ADD     HL,DE
   \   015C  5E                LD      E,(HL)
   \   015D  23                INC     HL
   \   015E  56                LD      D,(HL)
   \   015F  3E00              LD      A,BYTE3 ResShowMultiString
   \   0161  210000            LD      HL,LWRD ResShowMultiString
   \   0164  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0167  F1                POP     AF
   \   0168  F1                POP     AF
    140          
    141                      //check auto_update
    142                      if(!ui_auto_update) UpdateScreen(NULL);
   \   0169  3A0000            LD      A,(ui_auto_update)
   \   016C  B7                OR      A
   \   016D  2005              JR      NZ,?0022
   \   016F            ?0021:
   \   016F  5F                LD      E,A
   \   0170  57                LD      D,A
   \   0171  CD0000            CALL    LWRD UpdateScreen
   \   0174            ?0022:
    143          
    144                      need_draw = FALSE;
   \   0174  DD36F500          LD      (IX-11),0
   \   0178            ?0024:
    145                      while (ap_get_message() != 0);
   \   0178  CD0000            CALL    LWRD ap_get_message
   \   017B  B7                OR      A
   \   017C  20FA              JR      NZ,?0024
   \   017E            ?0025:
    146                  }//need draw
   \   017E            ?0023:
   \   017E            ?0008:
    147          
    148                  //handle message
    149                  key = ap_get_message();
   \   017E  CD0000            CALL    LWRD ap_get_message
    150              switch( key)
   \   0181  5F                LD      E,A
   \   0182  CD0000            CALL    LWRD ?C_V_SWITCH_L06
   \   0185  0700              DEFW    7
   \   0187  05                DEFB    5
   \   0188  06                DEFB    6
   \   0189  1E                DEFB    30
   \   018A  21                DEFB    33
   \   018B  27                DEFB    39
   \   018C  45                DEFB    69
   \   018D  46                DEFB    70
   \   018E  0802              DEFW    ?0040
   \   0190  9E01              DEFW    ?0027
   \   0192  C901              DEFW    ?0031
   \   0194  F801              DEFW    ?0036
   \   0196  0302              DEFW    ?0060
   \   0198  FD01              DEFW    ?0037
   \   019A  9E01              DEFW    ?0027
   \   019C  C901              DEFW    ?0031
   \   019E            ?0027:
    151                  {
    152                  case AP_KEY_NEXT:
    153                  case AP_KEY_NEXT | AP_KEY_HOLD:
    154                      if(menu->active < menu->total-1)
   \   019E  FD4E00            LD      C,(IY+0)
   \   01A1  FD4601            LD      B,(IY+1)
   \   01A4  0B                DEC     BC
   \   01A5  FD6E02            LD      L,(IY+2)
   \   01A8  FD6603            LD      H,(IY+3)
   \   01AB  F680              OR      128
   \   01AD  ED42              SBC     HL,BC
   \   01AF  E2B301            JP      PO,?0055
   \   01B2  AC                XOR     H
   \   01B3            ?0055:
   \   01B3  F2C001            JP      P,?0029
   \   01B6            ?0028:
    155                      {
    156                          menu->active++;
   \   01B6  FD3402            INC     (IY+2)
   \   01B9  2037              JR      NZ,?0034
   \   01BB  FD3403            INC     (IY+3)
    157                      }
    158                      else
   \   01BE  1832              JR      ?0034
   \   01C0            ?0029:
    159                      {
    160                          menu->active = 0;
   \   01C0  AF                XOR     A
   \   01C1  FD7702            LD      (IY+2),A
   \   01C4  FD7703            LD      (IY+3),A
   \   01C7            ?0030:
    161                      }
    162                      value_changed = TRUE;
    163                      need_draw = TRUE;
   \   01C7  1829              JR      ?0034
    164                      break;
   \   01C9            ?0031:
    165                  case AP_KEY_PREV:
    166                  case AP_KEY_PREV | AP_KEY_HOLD:
    167                      if(menu->active > 0)
   \   01C9  FD4E02            LD      C,(IY+2)
   \   01CC  FD4603            LD      B,(IY+3)
   \   01CF  210000            LD      HL,0
   \   01D2  F680              OR      128
   \   01D4  ED42              SBC     HL,BC
   \   01D6  E2DA01            JP      PO,?0057
   \   01D9  AC                XOR     H
   \   01DA            ?0057:
   \   01DA  F2E501            JP      P,?0033
   \   01DD            ?0032:
    168                      {
    169                          menu->active--;
   \   01DD  FD6E02            LD      L,(IY+2)
   \   01E0  FD6603            LD      H,(IY+3)
   \   01E3  1806              JR      ?0063
    170          
    171                      }
    172                      else
   \   01E5            ?0033:
    173                      {
    174                          menu->active = menu->total-1;
   \   01E5  FD6E00            LD      L,(IY+0)
   \   01E8  FD6601            LD      H,(IY+1)
   \   01EB            ?0063:
   \   01EB  2B                DEC     HL
   \   01EC  FD7502            LD      (IY+2),L
   \   01EF  FD7403            LD      (IY+3),H
   \   01F2            ?0034:
    175                      }
    176                      value_changed = TRUE;
    177                      need_draw = TRUE;
   \   01F2  DD36FE01          LD      (IX-2),1
   \   01F6  181A              JR      ?0062
    178                      break;
   \   01F8            ?0035:
    179                  case AP_KEY_PLAY | AP_KEY_UP:   //取消退出
    180                      return RESULT_IGNORE;
    181          
    182                  case AP_KEY_MODE | AP_KEY_UP:   //确认退出
   \   01F8            ?0036:
    183                      return 0;
   \   01F8  210000            LD      HL,0
    184                      //break;
    185                  case AP_MSG_WAIT_TIMEOUT:
   \   01FB  1824              JR      ?0050
   \   01FD            ?0037:
    186                      //if(ui_auto_select)  return 0;
    187          
    188                      //this is recommoned by johnlee, 2004/03/02
    189                      if(ui_auto_select)  return RESULT_IGNORE;
   \   01FD  3A0000            LD      A,(ui_auto_select)
   \   0200  B7                OR      A
   \   0201  2828              JR      Z,?0045
   \   0203            ?0038:
   \   0203            ?0060:
   \   0203  213000            LD      HL,48
    190          
    191                      break;
   \   0206  1819              JR      ?0050
   \   0208            ?0039:
   \   0208            ?0040:
    192                  default:
    193                      key = ap_handle_hotkey(key);
   \   0208  CD0000            CALL    LWRD ap_handle_hotkey
   \   020B  DD77F4            LD      (IX-12),A
    194                      if(key == RESULT_REDRAW) need_draw = TRUE;
   \   020E  FE2E              CP      46
   \   0210  2006              JR      NZ,?0042
   \   0212            ?0041:
   \   0212            ?0062:
   \   0212  DD36F501          LD      (IX-11),1
   \   0216  1813              JR      ?0045
   \   0218            ?0042:
    195                      else if(key != 0) return key;
   \   0218  AF                XOR     A
   \   0219  DDB6F4            OR      (IX-12)
   \   021C  280D              JR      Z,?0045
   \   021E            ?0044:
   \   021E  6F                LD      L,A
   \   021F  2600              LD      H,0
    196                  }
   \   0221            ?0050:
   \   0221  DDF9              LD      SP,IX
   \   0223  DDE1              POP     IX
   \   0225  FDE1              POP     IY
   \   0227  C1                POP     BC
   \   0228  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   022B            ?0045:
   \   022B            ?0043:
   \   022B            ?0026:
    197                  ASSERT( menu->active < menu->total);
    198          
    199                      //handle callback
    200                      if(callback != NULL && value_changed)
   \   022B  DD7E0A            LD      A,(IX+10)
   \   022E  DDB60B            OR      (IX+11)
   \   0231  DDB60C            OR      (IX+12)
   \   0234  CA4500            JP      Z,?0003
   \   0237  AF                XOR     A
   \   0238  DDB6FE            OR      (IX-2)
   \   023B  CA4500            JP      Z,?0003
   \   023E            ?0049:
   \   023E            ?0048:
   \   023E            ?0046:
    201                  {
    202                      callback(menu->active);
   \   023E  FD5E02            LD      E,(IY+2)
   \   0241  FD5603            LD      D,(IY+3)
   \   0244  DD7E0C            LD      A,(IX+12)
   \   0247  DD6E0A            LD      L,(IX+10)
   \   024A  DD660B            LD      H,(IX+11)
   \   024D  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
    203                      value_changed = FALSE;
   \   0250  DD36FE00          LD      (IX-2),0
   \   0254            ?0047:
    204                      }
    205          
    206              }//while (1)
    207              //return 0;
    208          
    209          }
   \   0254  C34500            JP      LWRD ?0003
   \   0257            ?0064:
   \   0257  19                ADD     HL,DE
   \   0258  5E                LD      E,(HL)
   \   0259  23                INC     HL
   \   025A  56                LD      D,(HL)
   \   025B            ?0065:
   \   025B  3E00              LD      A,BYTE3 ResShowPic
   \   025D  210000            LD      HL,LWRD ResShowPic
   \   0260  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
    210          
   \   0000                    RSEG    CONST
   \   0000            menu_pos:
   \   0000  13                DEFB    19
   \   0001  26                DEFB    '&'
   \   0002  39                DEFB    '9'
   \   0003  4C                DEFB    'L'
   \   0004  5F                DEFB    '_'
   \   0005                    END

Errors: none
Warnings: none
Code size: 611
Constant size: 5
Static variable size: Data(0) Iram(0)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -