📄 sub_function2.s01
字号:
NAME sub_function2(17)
RSEG APC_SUB_FUN(0)
RSEG CSTR(0)
RSEG UDATA0(0)
RSEG APD_SUB_FUN(0)
PUBLIC CheckMusicType
PUBLIC ClearTimePara
PUBLIC DUMP_TEST
PUBLIC DealErrCase
EXTERN EnableDAC
EXTERN EnablePA
EXTERN FS_Backup
EXTERN FS_CD
EXTERN FS_FClose
EXTERN FS_FOpen
EXTERN FS_FRead
EXTERN FS_FSeek
EXTERN FS_GetName
EXTERN FS_Restore
EXTERN GetDefaultComval
PUBLIC GetInformation
PUBLIC GetInformation1
PUBLIC MY_DUMP
EXTERN PutS
EXTERN ResClose
EXTERN SetPAVolume
EXTERN SetTextPos
EXTERN Totaltime
EXTERN UpdateScreen
EXTERN VMRead
EXTERN ap_get_message
EXTERN ap_message_init
EXTERN ap_sleep
EXTERN dir_name
PUBLIC fp
EXTERN fselGetErrID
EXTERN fselGetLocation
EXTERN g_BatteryType
EXTERN g_PAOpenFlag
EXTERN g_Resfp_Sav
EXTERN g_TagInfoBuf
EXTERN g_amv_vars
EXTERN g_comval
PUBLIC g_fileheadinfo
EXTERN g_langid
EXTERN itoa4
PUBLIC make_dirname
PUBLIC openDAC
PUBLIC openPA
PUBLIC read_var
EXTERN ui_show_msg
EXTERN unitochar
EXTERN ?CLZ80B_4_04_L00
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?STRCPY_L11
RSEG APC_SUB_FUN
MY_DUMP:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * This program demostrates how to build an AP
; 5. *
; 6. * (c) Copyright Actions Co,Ld.
; 7. *
; 8. * $Id: sub_function2.c,v 1.1.1.1 2006/05/22 03:24:02 selina Exp $
; 9. *******************************************************************************
; 10. */
; 11. #include "ap_amv.h"
; 12.
; 13. #pragma codeseg(APC_SUB_FUN)
; 14.
; 15. #pragma memory=constseg(APD_SUB_FUN)
; 16. char g_fileheadinfo[512]; //get file first sector data
; 17. #pragma memory=default
; 18.
; 19. extern SD_FILE* g_Resfp_Sav;
; 20. extern bool ActiveDriveOK;
; 21. handle fp;
; 22.
; 23. extern byte fselDirNo[8];
; 24. extern word fselFileNo;
; 25.
; 26. void MY_DUMP(char *string, int value)
; 27. {
PUSH BC
PUSH DE
PUSH AF
PUSH AF
PUSH AF
; 28. char dump_buf[6];
; 29. dump_buf[0] = ',';
LD HL,0
ADD HL,SP
LD (HL),44
; 30. SetTextPos(0, 16);
LD C,16
LD E,0
CALL LWRD SetTextPos
; 31. PutS((string), -1);
LD C,255
LD HL,6
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD PutS
; 32. itoa4((value), &dump_buf[1]);
LD HL,0
ADD HL,SP
LD BC,1
ADD HL,BC
LD C,L
LD B,H
LD HL,8
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 itoa4
LD HL,LWRD itoa4
CALL LWRD ?BANK_CALL_DIRECT_L08
; 33. dump_buf[5] = '>';
LD HL,5
ADD HL,SP
LD (HL),62
; 34.
; 35. PutS(dump_buf, 6);
LD C,6
LD HL,0
ADD HL,SP
EX DE,HL
CALL LWRD PutS
; 36. UpdateScreen(NULL);
LD DE,0
CALL LWRD UpdateScreen
?0003:
; 37. while( ap_get_message() != (AP_KEY_PLAY| AP_KEY_UP)) {;}
CALL LWRD ap_get_message
CP 33
JR NZ,?0003
?0004:
; 38. }
?0002:
LD HL,10
ADD HL,SP
LD SP,HL
JP LWRD ?BANK_FAST_LEAVE_L08
DUMP_TEST:
; 39.
; 40. void DUMP_TEST(char *string)
; 41. {
PUSH BC
PUSH IX
LD HL,65524
ADD HL,SP
LD SP,HL
PUSH DE
POP IX
; 42. char str[9];
; 43. char i;
; 44. for(i = 0; i<8;i++)
LD (HL),0
?0006:
LD A,(HL)
CP 8
JR NC,?0005
?0007:
; 45. {
; 46. str[i] = string[i] + 0x30;
LD C,A
LD B,0
PUSH IX
POP HL
ADD HL,BC
LD A,(HL)
ADD A,48
LD HL,2
ADD HL,SP
ADD HL,BC
LD (HL),A
LD L,B
LD H,B
ADD HL,SP
INC (HL)
JR ?0006
?0005:
; 47. }
; 48. str[8] = 0;
LD HL,10
ADD HL,SP
LD (HL),0
; 49. SetTextPos(0, 16);
LD C,16
LD E,0
CALL LWRD SetTextPos
; 50. PutS((str), -1);
LD C,255
LD HL,2
ADD HL,SP
EX DE,HL
CALL LWRD PutS
; 51. UpdateScreen(NULL);
LD DE,0
CALL LWRD UpdateScreen
?0010:
; 52. while( ap_get_message() != (AP_KEY_PLAY| AP_KEY_UP)) {;}
CALL LWRD ap_get_message
CP 33
JR NZ,?0010
?0011:
; 53. }
?0009:
LD HL,12
ADD HL,SP
LD SP,HL
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
CheckMusicType:
; 54. /*
; 55. ********************************************************************************
; 56. * Music_type_t CheckMusicType(char *filename)
; 57. *
; 58. * Description : 检测当前是哪种类型的MUSIC文件
; 59. *
; 60. * Arguments : char *filename 文件名
; 61. *
; 62. * Returns : Music_type_t 文件类型
; 63. *
; 64. * Notes :
; 65. *
; 66. ********************************************************************************
; 67. */
; 68. Music_type_t CheckMusicType( char * filename )
; 69. {
PUSH DE
; 70.
; 71. }
POP HL
JP LWRD ?BANK_FAST_LEAVE_L08
make_dirname:
; 72.
; 73. /*
; 74. ********************************************************************************
; 75. * void make_dirname(void)
; 76. *
; 77. * Description : 读系统变量和ap局部变量
; 78. *
; 79. * Arguments : void
; 80. *
; 81. * Returns : void
; 82. *
; 83. * Notes :
; 84. *
; 85. ********************************************************************************
; 86. */
; 87. void make_dirname(void)
; 88. {
PUSH BC
PUSH DE
PUSH IX
LD HL,65504
ADD HL,SP
LD SP,HL
; 89. int result;
; 90. char Backbuf[32];
; 91. fselGetLocation(&g_amv_vars.location);
LD DE,g_amv_vars+5
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 92. if(g_amv_vars.location.path[0]==':')
LD A,(g_amv_vars+19)
CP 58
JR NZ,?0013
?0012:
; 93. {
; 94. strcpy(dir_name,"ROOT");
LD DE,?0014
LD HL,dir_name
CALL LWRD ?STRCPY_L11
; 95. }
; 96. else
JR ?0015
?0013:
; 97. {
; 98.
; 99. FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
LD HL,0
PUSH HL
LD C,2
INC HL
INC HL
ADD HL,SP
EX DE,HL
CALL LWRD FS_Backup
POP HL
; 100.
; 101. dir_name[0] = ':';
LD A,58
LD (dir_name),A
; 102. FS_CD(dir_name);
LD DE,dir_name
CALL LWRD FS_CD
; 103. memcpy(dir_name, g_amv_vars.location.path, 12);
LD BC,12
LD DE,dir_name
LD HL,g_amv_vars+19
LDIR
; 104. result = FS_GetName(dir_name, 14); //取出长名
LD C,14
LD DE,dir_name
CALL LWRD FS_GetName
LD B,0
; 105. if (result != 0)
OR A
JR Z,?0017
?0016:
; 106. {
; 107. unitochar(dir_name, sizeof(dir_name), g_langid);
LD A,(g_langid)
LD C,A
PUSH BC
LD C,30
LD DE,dir_name
LD A,BYTE3 unitochar
LD HL,LWRD unitochar
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 108. }
; 109. else
JR ?0018
?0017:
; 110. {
; 111. memcpy(dir_name, g_amv_vars.location.path, 12);
LD C,12
LD DE,dir_name
LD HL,g_amv_vars+19
LDIR
; 112. dir_name[8]=0;
LD (dir_name+8),A
; 113. dir_name[9]=0;
LD (dir_name+9),A
?0018:
; 114. }
; 115. FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
LD HL,0
PUSH HL
LD C,2
INC HL
INC HL
ADD HL,SP
EX DE,HL
CALL LWRD FS_Restore
POP HL
?0015:
; 116. }
; 117.
; 118.
; 119. }
LD HL,32
ADD HL,SP
LD SP,HL
POP IX
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
read_var:
; 120.
; 121. void read_var( void )
; 122. {
PUSH BC
PUSH DE
PUSH IX
; 123. int result;
; 124. //comval_t g_comval; //系统变量,ap不能更改
; 125.
; 126.
; 127. //read comval
; 128. result = VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
LD HL,32
PUSH HL
LD BC,512
LD DE,g_comval
CALL LWRD VMRead
POP HL
; 129. ASSERT(result);
; 130.
; 131. //check if valid
; 132. if (g_comval.magic != MAGIC_COMVAL)
LD HL,57005
LD BC,(g_comval)
AND A
SBC HL,BC
JR Z,?0020
?0019:
; 133. {
; 134. GetDefaultComval(&g_comval);
LD DE,g_comval
CALL LWRD GetDefaultComval
?0020:
; 135. }
; 136.
; 137. g_langid = g_comval.langid;//记录系统语言
LD A,(g_comval+12)
LD (g_langid),A
; 138. g_BatteryType = g_comval.BatteryType;//记录电池类型
LD A,(g_comval+15)
LD (g_BatteryType),A
; 139.
; 140. ap_message_init(& g_comval);
LD DE,g_comval
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
CALL LWRD ?BANK_CALL_DIRECT_L08
; 141.
; 142. //read ap vars
; 143. result = VMRead(& g_amv_vars, VM_AP_AMV, sizeof(g_amv_vars));
LD HL,54
PUSH HL
LD BC,18432
LD DE,g_amv_vars
CALL LWRD VMRead
POP HL
; 144. ASSERT(result);
; 145.
; 146. //check if valid
; 147. if (g_amv_vars.magic != MAGIC_AMV)
LD HL,24941
LD BC,(g_amv_vars)
AND A
SBC HL,BC
JR Z,?0022
?0021:
; 148. {
; 149.
; 150. g_amv_vars.magic = MAGIC_AMV;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -