📄 sub_ui_stop.s01
字号:
NAME sub_ui_stop(17)
RSEG CODE_1(0)
RSEG COM_FSL(0)
EXTERN FS_GetName
EXTERN PutS
EXTERN ResShowPic
EXTERN SetBackgdColor
EXTERN SetPenColor
EXTERN SetTextPos
PUBLIC com_fname
EXTERN fileName
EXTERN file_name
EXTERN fselGetByNO
EXTERN menu_pos
PUBLIC read_idm_data_reader
PUBLIC reinit_idm_buf_reader
PUBLIC reset_cur_list_bg_color_reader
PUBLIC show_active_list_reader
EXTERN unitochar
PUBLIC write_idm_data_reader
EXTERN ?CLZ80B_4_04_L00
EXTERN ?SS_MOD_L02
EXTERN ?S_MUL_L02
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?STRCPY_L11
RSEG CODE_1
write_idm_data_reader:
; 1.
; 2.
; 3. #include "ap_common.h"
; 4. #include "ap_reader.h"
; 5.
; 6.
; 7. #pragma codeseg(CODE_1)
; 8.
; 9. #pragma memory=dataseg(COM_FSL)
; 10. char com_fname[explorer_row_count_def][50];
; 11. #pragma memory=default
; 12. extern char fileName[50];
; 13.
; 14.
; 15. BOOL write_idm_data_reader(char *name, int count)
; 16. {
PUSH BC
PUSH DE
PUSH AF
; 17. byte status;
; 18. status = input8(0x05);
IN A,(5)
LD HL,0
ADD HL,SP
LD (HL),A
; 19. output8(0x05, 0xf6);
LD A,246
OUT (5),A
; 20. memcpy( com_fname[count], name, 50);
LD DE,50
CALL LWRD ?S_MUL_L02
LD HL,com_fname
ADD HL,DE
EX DE,HL
LD HL,2
ADD HL,SP
LD B,(HL)
INC HL
LD H,(HL)
LD L,B
LD BC,50
?0013:
LDIR
; 21. output8(0x05, status);
LD L,C
LD H,B
ADD HL,SP
LD A,(HL)
OUT (5),A
; 22. }
POP HL
POP HL
POP HL
JP LWRD ?BANK_FAST_LEAVE_L08
?0014:
LD (HL),A
LD A,246
OUT (5),A
LD BC,50
PUSH IX
POP DE
CALL LWRD ?S_MUL_L02
LD HL,com_fname
ADD HL,DE
EX DE,HL
LD HL,fileName
CALL LWRD ?STRCPY_L11
LD L,B
LD H,B
RET
reinit_idm_buf_reader:
; 23.
; 24. /*
; 25. ********************************************************************************
; 26. * Description : 重新初始化IDM数据区
; 27. *
; 28. * Arguments :
; 29. *
; 30. * Returns :
; 31. *
; 32. * Notes :dir: 0:select file , 1: select dir
; 33. *
; 34. ********************************************************************************
; 35. */
; 36. void reinit_idm_buf_reader(int top, int bottom, int dir, int string_id)
; 37. {
PUSH IY
PUSH IX
LD IX,0
ADD IX,SP
PUSH BC
PUSH DE
LD HL,65484
ADD HL,SP
LD SP,HL
; 38. int i,NameNum;
; 39. char Longnamebuf[50];
; 40.
; 41. for(i = top; i <= bottom; i++)
PUSH DE
POP IY
?0003:
PUSH IY
POP BC
LD L,(IX-2)
LD H,(IX-1)
OR 128
SBC HL,BC
JP PO,?0009
XOR H
?0009:
JP M,?0002
?0004:
; 42. {
; 43. fselGetByNO(file_name, i + 1);
CALL LWRD ?0015
; 44.
; 45. memcpy(Longnamebuf,file_name,12);
LD BC,12
LD HL,2
ADD HL,SP
EX DE,HL
LD HL,file_name
LDIR
; 46. NameNum = FS_GetName(Longnamebuf,24); //获取当前目录名的长文件名
LD C,24
LD HL,2
ADD HL,SP
EX DE,HL
CALL LWRD FS_GetName
LD C,A
LD B,0
; 47. if(NameNum!=0)
LD A,C
OR A
JR Z,?0007
?0006:
; 48. {
; 49. unitochar(Longnamebuf,NameNum*2+2,string_id); //
LD L,(IX+10)
PUSH HL
LD L,C
LD H,B
ADD HL,HL
LD C,L
LD B,H
INC BC
INC BC
LD HL,4
ADD HL,SP
EX DE,HL
LD A,BYTE3 unitochar
LD HL,LWRD unitochar
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 50. write_idm_data_reader(Longnamebuf, i - top);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
AND A
SBC HL,BC
LD C,L
LD B,H
LD HL,2
ADD HL,SP
EX DE,HL
JR ?0010
; 51. }
; 52. else
?0007:
; 53. write_idm_data_reader(file_name, i - top);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
SBC HL,BC
LD C,L
LD B,H
LD DE,file_name
?0010:
LD A,BYTE3 write_idm_data_reader
LD HL,LWRD write_idm_data_reader
CALL LWRD ?BANK_CALL_DIRECT_L08
?0008:
; 54.
; 55. }
; 56. }
INC IY
JR ?0003
?0002:
LD SP,IX
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
?0015:
INC BC
LD DE,file_name
LD A,BYTE3 fselGetByNO
LD HL,LWRD fselGetByNO
JP LWRD ?BANK_CALL_DIRECT_L08
show_active_list_reader:
; 57.
; 58. /*
; 59. ********************************************************************************
; 60. * Description : 反转上次活动项和当前活动项.
; 61. *
; 62. * Arguments :
; 63. *
; 64. * Returns :
; 65. *
; 66. * Notes :
; 67. *
; 68. ********************************************************************************
; 69. */
; 70. void show_active_list_reader(int old_active, int active, int top)
; 71. {
PUSH IY
PUSH IX
PUSH DE
PUSH AF
PUSH BC
POP IY
; 72. byte status;
; 73. int tmp;
; 74.
; 75. tmp = old_active%6;
LD BC,6
CALL LWRD ?SS_MOD_L02
PUSH DE
POP IX
; 76. ResShowPic(MENUBCK1, 0, menu_pos[tmp]-1);
LD HL,menu_pos
ADD HL,DE
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
LD C,B
LD DE,181
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 77. SetPenColor(Color_BLACK_def);
LD BC,0
LD E,C
LD D,B
CALL LWRD SetPenColor
; 78. SetBackgdColor(Color_MENU_def);
LD BC,0
LD DE,65535
CALL LWRD SetBackgdColor
; 79. SetTextPos(0, menu_pos[tmp]);
LD HL,menu_pos
PUSH IX
POP BC
ADD HL,BC
LD C,(HL)
LD E,0
CALL LWRD SetTextPos
; 80. status = input8(0x05);
IN A,(5)
LD HL,0
ADD HL,SP
; 81. output8(0x05 ,0xf6);
; 82. strcpy(fileName, com_fname[tmp]);
CALL LWRD ?0014
; 83. output8(0x05, status);
ADD HL,SP
LD A,(HL)
OUT (5),A
; 84. PutS(fileName, -1);
LD C,255
LD DE,fileName
CALL LWRD PutS
; 85.
; 86. tmp = active%6;
LD BC,6
PUSH IY
POP DE
CALL LWRD ?SS_MOD_L02
PUSH DE
POP IX
; 87. ResShowPic(MENUBCK, 0, menu_pos[tmp]-1);
LD HL,menu_pos
ADD HL,DE
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
LD C,B
LD DE,180
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 88. SetTextPos(0, menu_pos[tmp]);
LD HL,menu_pos
PUSH IX
POP BC
ADD HL,BC
LD C,(HL)
LD E,0
CALL LWRD SetTextPos
; 89. status = input8(0x05);
IN A,(5)
LD HL,0
ADD HL,SP
; 90. output8(0x05 ,0xf6);
; 91. strcpy(fileName, com_fname[tmp]);
CALL LWRD ?0014
; 92. output8(0x05, status);
ADD HL,SP
LD A,(HL)
OUT (5),A
; 93. SetPenColor(Color_WHITE_def);
LD C,B
LD DE,65535
CALL LWRD SetPenColor
; 94. SetBackgdColor(0x00003358);
LD BC,0
LD DE,13144
CALL LWRD SetBackgdColor
; 95. PutS(fileName, -1);
LD C,255
LD DE,fileName
CALL LWRD PutS
; 96. fselGetByNO(file_name, active + 1);
PUSH IY
POP BC
CALL LWRD ?0015
; 97. }
POP HL
POP HL
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
read_idm_data_reader:
; 98.
; 99.
; 100.
; 101. void read_idm_data_reader(char *name, int count)
; 102. {
PUSH BC
PUSH DE
PUSH AF
; 103. byte status;
; 104.
; 105. status = input8(0x05);
IN A,(5)
LD HL,0
ADD HL,SP
LD (HL),A
; 106. output8(0x05 ,0xf6);
LD A,246
OUT (5),A
; 107. memcpy(name, com_fname[count], 30);
LD BC,30
PUSH DE
LD C,50
LD HL,6
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD ?S_MUL_L02
LD HL,com_fname
ADD HL,DE
POP DE
LD C,30
JP LWRD ?0013
; 108. output8(0x05, status);
; 109. }
reset_cur_list_bg_color_reader:
; 110.
; 111. void reset_cur_list_bg_color_reader(int i, int pos)
; 112. {
PUSH IX
PUSH BC
PUSH DE
POP IX
; 113. SetTextPos(0, pos);
LD E,0
CALL LWRD SetTextPos
; 114. read_idm_data_reader(fileName, i);
PUSH IX
POP BC
LD DE,fileName
LD A,BYTE3 read_idm_data_reader
LD HL,LWRD read_idm_data_reader
CALL LWRD ?BANK_CALL_DIRECT_L08
; 115. PutS(fileName, -1);
LD C,255
LD DE,fileName
CALL LWRD PutS
; 116. fselGetByNO(file_name, i + 1);
PUSH IX
POP BC
CALL LWRD ?0015
; 117. }
POP HL
POP IX
JP LWRD ?BANK_FAST_LEAVE_L08
RSEG COM_FSL
com_fname:
DEFS 250
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -