📄 main.s01
字号:
NAME main(17)
RSEG CODE(0)
RSEG CSTR(0)
RSEG UDATA0(0)
RSEG IDATA0(0)
RSEG CDATA0(0)
PUBLIC ActiveDriveOK
EXTERN ClearScreen
EXTERN DRV_ActiveDrive
EXTERN DRV_ActiveUD
EXTERN DRV_DetectUD
EXTERN GetDefaultComval
EXTERN InitFileSelector
EXTERN ResClose
EXTERN ResOpen
EXTERN ResShowMultiString
EXTERN SetBackgdColor
EXTERN SetPenColor
EXTERN VMRead
EXTERN VMWrite
EXTERN ap_get_message
EXTERN ap_message_init
EXTERN ap_sleep
EXTERN fselGetLocation
PUBLIC g_DiskStateFlag
PUBLIC g_comval
PUBLIC g_from_browser
PUBLIC g_menu_active
PUBLIC g_reader_vars
PUBLIC main
PUBLIC read_var
EXTERN res_fp
EXTERN show_stop
EXTERN ui_show_msg
PUBLIC val_p
EXTERN ?CLZ80B_4_04_L00
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?STRCPY_L11
RSEG CODE
read_var:
; 1. /*********************************
; 2. * FileName: Main.c
; 3. * Write By:
; 4. * Date : 2006-4-11 18:27
; 5. *
; 6. *Buglist :
; 7. *
; 8. *
; 9. **********************************/
; 10.
; 11.
; 12. #include "actos.h"
; 13. #include "enhanced.h"
; 14. #include "ap_common.h"
; 15. #include "display.h"
; 16. #include "ap_reader.h"
; 17.
; 18.
; 19. bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
; 20. comval_t g_comval;
; 21. reader_vars_t g_reader_vars;
; 22. char *val_p;
; 23. bool ActiveDriveOK;//磁盘可用标志
; 24. BYTE g_DiskStateFlag = 0;
; 25. bool g_from_browser = FALSE;
; 26. /*************************************
; 27. * Function name : ViewApVarRead()
; 28. * Author : Jack lee
; 29. * Date :2004-9-30 17:34
; 30. *
; 31. *
; 32. *
; 33. *
; 34. ****************************************/
; 35.
; 36. void read_var(void)
; 37. {
PUSH BC
PUSH DE
PUSH IX
LD HL,65490
ADD HL,SP
LD SP,HL
; 38. int result;
; 39. browser_vars_t temp_browser_vars;
; 40. result = VMRead(&g_comval, VM_SYSTEM, sizeof(g_comval)); // read the information of system
LD HL,32
PUSH HL
LD BC,512
LD DE,g_comval
CALL LWRD VMRead
POP HL
; 41.
; 42. //check if valid
; 43. if(g_comval.magic != MAGIC_COMVAL)
LD HL,57005
LD BC,(g_comval)
AND A
SBC HL,BC
JR Z,?0003
?0002:
; 44. {
; 45. DUMP_STRING("comval init-ed!");
; 46.
; 47. //COMVAL_INIT(g_comval);
; 48. GetDefaultComval(&g_comval);
LD DE,g_comval
CALL LWRD GetDefaultComval
?0003:
; 49. }
; 50.
; 51. //init message for auto standby
; 52. 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
; 53.
; 54. result = VMRead(&g_reader_vars, VM_AP_READER, sizeof(g_reader_vars)); //read the setting of user part1
LD HL,620
PUSH HL
LD BC,17408
LD DE,g_reader_vars
CALL LWRD VMRead
POP HL
; 55.
; 56. val_p=(char *)&g_reader_vars;
LD HL,g_reader_vars
LD (val_p),HL
; 57.
; 58. result = VMRead(val_p+512, VM_AP_READER1, sizeof(g_reader_vars)-512); //read the setting of user part2
LD DE,108
PUSH DE
LD BC,17920
LD A,2
ADD A,H
LD H,A
EX DE,HL
CALL LWRD VMRead
POP HL
; 59.
; 60. if(g_reader_vars.magic != MAGIC_READER)
LD HL,29816
LD BC,(g_reader_vars)
AND A
SBC HL,BC
JR Z,?0005
?0004:
; 61. {
; 62. g_reader_vars.magic = MAGIC_READER;
LD HL,29816
LD (g_reader_vars),HL
; 63. g_reader_vars.playflag = 0;
XOR A
LD (g_reader_vars+2),A
; 64. g_reader_vars.autoplaytime = 1;
LD A,1
LD (g_reader_vars+3),A
; 65.
; 66. g_reader_vars.g_txt.PrevSeek=0;
LD BC,0
LD L,C
LD H,B
LD (g_reader_vars+55),HL
LD (g_reader_vars+57),BC
; 67. g_reader_vars.g_txt.CurrentSeek=0;
LD (g_reader_vars+59),HL
LD (g_reader_vars+61),BC
; 68.
; 69. g_reader_vars.location.disk = 'C';
LD A,67
LD (g_reader_vars+6),A
; 70. strcpy(g_reader_vars.location.path, FS_CD_ROOT);
LD DE,?0006
LD HL,g_reader_vars+20
CALL LWRD ?STRCPY_L11
; 71. g_reader_vars.location.filename[0] = 0;
XOR A
LD (g_reader_vars+32),A
?0005:
; 72. }
; 73. g_reader_vars.g_txt.langid = g_comval.langid;
LD A,(g_comval+12)
LD (g_reader_vars+67),A
; 74. if(g_from_browser)
LD A,(g_from_browser)
OR A
JR Z,?0008
?0007:
; 75. {
; 76. VMRead(&temp_browser_vars, VM_AP_BROWSER, sizeof(browser_vars_t));
LD HL,45
PUSH HL
LD BC,19456
LD L,2
ADD HL,SP
EX DE,HL
CALL LWRD VMRead
POP HL
; 77. memcpy(&g_reader_vars.location, &temp_browser_vars.location, sizeof(file_location_t));
LD BC,43
LD DE,g_reader_vars+6
LD L,B
LD H,B
ADD HL,SP
LD C,2
ADD HL,BC
LD C,43
LDIR
; 78. g_reader_vars.g_txt.PrevSeek=0;
LD L,C
LD H,B
LD (g_reader_vars+55),HL
LD (g_reader_vars+57),BC
; 79. g_reader_vars.g_txt.CurrentSeek=0;
LD (g_reader_vars+59),HL
LD (g_reader_vars+61),BC
?0008:
; 80. }
; 81.
; 82. }
LD HL,46
ADD HL,SP
LD SP,HL
POP IX
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
main:
; 83.
; 84.
; 85. /*****************************************************
; 86. *function name:int main(int param)
; 87. *write by jacklee
; 88. *date 2005-3-21 9:29
; 89. *Description:
; 90. * this function control the jpeg decoding system
; 91. *
; 92. *****************************************************/
; 93. int main(int param)
; 94. {
PUSH BC
PUSH IX
PUSH DE
; 95. int result;
; 96. DC oldDC_sav;
; 97.
; 98. if(param)
LD A,E
OR D
JR Z,?0010
?0009:
; 99. {
; 100. g_from_browser = TRUE;
LD A,1
LD (g_from_browser),A
?0010:
; 101. }
; 102. //install drivers
; 103. DRV_ActiveUD(0,MODE_SLOW);
LD C,1
LD E,0
CALL LWRD DRV_ActiveUD
; 104. res_fp = ResOpen("ui30.res");
LD DE,?0011
LD A,BYTE3 ResOpen
LD HL,LWRD ResOpen
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (res_fp),HL
; 105. if(!res_fp)
LD A,L
OR H
JR NZ,?0013
?0012:
; 106. {
; 107. ResClose(res_fp);
EX DE,HL
LD A,BYTE3 ResClose
LD HL,LWRD ResClose
CALL LWRD ?BANK_CALL_DIRECT_L08
; 108. return RESULT_MAIN;
LD HL,10
; 109. }
JP LWRD ?0035
?0013:
; 110. //read var
; 111. read_var();
LD A,BYTE3 read_var
LD HL,LWRD read_var
CALL LWRD ?BANK_CALL_DIRECT_L08
; 112. ActiveDriveOK = DRV_ActiveDrive('C', MODE_SLOW); //04-2-28 16:29
LD C,1
LD E,67
CALL LWRD DRV_ActiveDrive
LD (ActiveDriveOK),A
; 113. if (!ActiveDriveOK)
OR A
JR NZ,?0015
?0014:
; 114. {
; 115. ui_show_msg (MREADERR, MREADERR, g_comval.langid); //temp ybfu
LD BC,(g_comval+12)
LD B,A
PUSH BC
LD BC,508
LD E,C
LD D,B
LD A,BYTE3 ui_show_msg
LD HL,LWRD ui_show_msg
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0017:
; 116. while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
CALL LWRD ap_get_message
OR A
JR NZ,?0017
?0018:
?0016:
; 117. ap_sleep(4);
LD DE,4
LD A,BYTE3 ap_sleep
LD HL,LWRD ap_sleep
CALL LWRD ?BANK_CALL_DIRECT_L08
; 118. g_reader_vars.location.disk='H'; //磁盘出错 从卡上读文件 zxs add
LD A,72
LD (g_reader_vars+6),A
; 119. }
; 120. else
JR ?0019
?0015:
; 121. g_DiskStateFlag |= SetDiskOKFlag_def;//标志 flash 已格式化
LD HL,g_DiskStateFlag
SET 7,(HL)
?0019:
; 122.
; 123. if (DRV_DetectUD(1) == 0x20)
LD E,1
CALL LWRD DRV_DetectUD
CP 32
JR NZ,?0021
?0020:
; 124. { //有卡
; 125. DRV_ActiveUD(1,MODE_SLOW);
LD C,1
LD E,C
CALL LWRD DRV_ActiveUD
; 126. if (!DRV_ActiveDrive('H', MODE_SLOW))
LD C,1
LD E,72
CALL LWRD DRV_ActiveDrive
OR A
JR NZ,?0023
?0022:
; 127. {
; 128. ui_show_msg (CREADERR, CREADERR, g_comval.langid); //temp ybfu
LD BC,(g_comval+12)
LD B,A
PUSH BC
LD BC,630
LD E,C
LD D,B
LD A,BYTE3 ui_show_msg
LD HL,LWRD ui_show_msg
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0025:
; 129. while( ap_get_message() != NULL ); //清空消息池,确保DELAY时间准确
CALL LWRD ap_get_message
OR A
JR NZ,?0025
?0026:
?0024:
; 130. ap_sleep(4);
LD DE,4
LD A,BYTE3 ap_sleep
LD HL,LWRD ap_sleep
CALL LWRD ?BANK_CALL_DIRECT_L08
; 131. g_reader_vars.location.disk='C'; //卡出错从Flash磁盘读文件
LD A,67
LD (g_reader_vars+6),A
; 132. if (!ActiveDriveOK)
LD A,(ActiveDriveOK)
OR A
JR NZ,?0032
?0027:
; 133. {
; 134. ResClose(res_fp);
JR ?0037
; 135. return 0;
; 136. }
?0028:
; 137. }
; 138. else
?0023:
; 139. g_DiskStateFlag |= SetCardOKFlag_def;//标志 card 已格式化
LD HL,g_DiskStateFlag
SET 3,(HL)
?0029:
; 140. }
; 141. else
JR ?0032
?0021:
; 142. { //没卡
; 143. g_reader_vars.location.disk='C'; //卡出错从Flash磁盘读文件
LD A,67
LD (g_reader_vars+6),A
; 144. if (!ActiveDriveOK)
LD A,(ActiveDriveOK)
OR A
JR NZ,?0032
?0031:
; 145. {
; 146. ResClose(res_fp);
?0037:
LD DE,(res_fp)
LD A,BYTE3 ResClose
LD HL,LWRD ResClose
CALL LWRD ?BANK_CALL_DIRECT_L08
; 147. return 0;
LD HL,0
; 148. }
JP LWRD ?0035
?0032:
?0030:
; 149. }
; 150.
; 151. SetPenColor(Color_BLACK_def);
LD BC,0
LD E,C
LD D,B
CALL LWRD SetPenColor
; 152. SetBackgdColor(Color_MENU_def);
LD BC,0
LD DE,65535
CALL LWRD SetBackgdColor
; 153. //show initializing...
; 154. ClearScreen(NULL);
LD DE,0
CALL LWRD ClearScreen
; 155. ResShowMultiString(WAITPASS, g_comval.langid, 255, 58);
LD C,58
PUSH BC
LD C,255
PUSH BC
LD BC,(g_comval+12)
LD DE,600
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 156. result = InitFileSelector();
LD A,BYTE3 InitFileSelector
LD HL,LWRD InitFileSelector
CALL LWRD ?BANK_CALL_DIRECT_L08
PUSH HL
POP IX
; 157. if(result!=0)
LD A,L
OR H
JR Z,?0034
?0033:
; 158. {
; 159. result=show_stop();
LD A,BYTE3 show_stop
LD HL,LWRD show_stop
CALL LWRD ?BANK_CALL_DIRECT_L08
PUSH HL
POP IX
?0034:
; 160. }
; 161.
; 162. ap_sleep(4);
LD DE,4
LD A,BYTE3 ap_sleep
LD HL,LWRD ap_sleep
CALL LWRD ?BANK_CALL_DIRECT_L08
; 163. output8(0x4e,input8(0x4e)|0x8);
IN A,(78)
SET 3,A
OUT (78),A
; 164. ResClose(res_fp);
LD DE,(res_fp)
LD A,BYTE3 ResClose
LD HL,LWRD ResClose
CALL LWRD ?BANK_CALL_DIRECT_L08
; 165. fselGetLocation(& g_reader_vars.location);
LD DE,g_reader_vars+6
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 166. VMWrite(&g_reader_vars, VM_AP_READER); //保存前512字节
LD BC,17408
LD DE,g_reader_vars
CALL LWRD VMWrite
; 167.
; 168. val_p= (char *)&g_reader_vars;
LD HL,g_reader_vars
LD (val_p),HL
; 169.
; 170. VMWrite(val_p+512, VM_AP_READER1); //保存后512字节
LD BC,17920
LD A,2
ADD A,H
LD H,A
EX DE,HL
CALL LWRD VMWrite
; 171. return result;
PUSH IX
POP HL
; 172. }
?0035:
POP AF
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
RSEG CSTR
?0006:
DEFB ':'
DEFB 0
?0011:
DEFB 'ui30.res'
DEFB 0
RSEG UDATA0
g_menu_active:
DEFS 1
g_comval:
DEFS 32
g_reader_vars:
DEFS 620
val_p:
DEFS 2
ActiveDriveOK:
DEFS 1
RSEG IDATA0
g_DiskStateFlag:
DEFS 1
g_from_browser:
DEFS 1
RSEG CDATA0
DEFB 0
DEFB 0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -