📄 ui_directory2_scroll.s01
字号:
CALL LWRD ?US_MOD_L02
LD (IX-8),E
LD (IX-7),D
; 180. TransOneRecord(&temp_record,&OnePageRecord[tmp]); //将idm中记录数据读取到temp_record中
LD C,75
CALL LWRD ?0110
; 181. ResShowPic(FILEBCK, explorer_str_x_def-1, menu_pos_list[tmp]-4);
LD HL,menu_pos_list
LD C,(IX-8)
LD B,(IX-7)
ADD HL,BC
LD A,(HL)
ADD A,252
LD C,A
PUSH BC
LD C,31
LD DE,44
CALL LWRD ?0108
POP AF
; 182. if(temp_record.filetype==TYPE_FILE)
LD A,(temp_record)
DEC A
JR NZ,?0016
?0015:
; 183. ResShowPic(MFILE,13,menu_pos_list[tmp]-1);
LD HL,menu_pos_list
LD C,(IX-8)
LD B,(IX-7)
ADD HL,BC
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
LD C,13
LD DE,198
JR ?0089
?0016:
; 184. else if(temp_record.filetype==TYPE_DIR)
LD A,(temp_record)
OR A
JR NZ,?0019
?0018:
; 185. {
; 186. ResShowPic(MDIR,10,menu_pos_list[tmp]-4);
LD HL,menu_pos_list
LD C,(IX-8)
LD B,(IX-7)
ADD HL,BC
LD A,(HL)
ADD A,252
LD C,A
PUSH BC
LD C,10
LD DE,175
?0089:
CALL LWRD ?0108
POP AF
?0019:
?0017:
; 187. }
; 188. ResShowPic(DHTHK,194, menu_pos_list[tmp]+5);
LD HL,menu_pos_list
LD C,(IX-8)
LD B,(IX-7)
ADD HL,BC
LD A,(HL)
ADD A,5
LD E,A
PUSH DE
LD C,194
LD DE,39
CALL LWRD ?0108
POP AF
; 189. region_scroll.y = menu_pos_list[tmp]-2;
LD HL,menu_pos_list
LD C,(IX-8)
LD B,(IX-7)
ADD HL,BC
LD A,(HL)
ADD A,254
LD (region_scroll+1),A
; 190. memcpy(scroll_buf,temp_record.longname,31); //取要滚动的数据到buf 截取31 bytes
LD BC,31
LD DE,scroll_buf
LD HL,temp_record+25
LDIR
; 191. scroll_buf[31]=0;
XOR A
LD (scroll_buf+31),A
; 192. ScrollString(scroll_buf,TRUE,string_id,®ion_scroll);
LD HL,region_scroll
PUSH HL
LD L,(IX+12)
PUSH HL
CALL LWRD ?0107
POP HL
POP HL
; 193. if(strlen(scroll_buf)<20)
LD HL,scroll_buf
CALL LWRD ?STRLEN_L11
LD BC,20
AND A
SBC HL,BC
JP NC,?0044
?0020:
; 194. ScrollFlag=0;
JP LWRD ?0097
; 195. else
?0021:
; 196. ScrollFlag=1;
?0022:
; 197. }
; 198.
; 199. else //if(Old_active==active) //新旧活动项相同表示是新的一屏数据,需要全部刷新
?0009:
; 200. {
; 201. SetTextOutMode(1);
LD E,1
CALL LWRD SetTextOutMode
; 202. ResShowPic(MENUTWO,0,0);
LD C,0
PUSH BC
LD DE,195
CALL LWRD ?0108
POP AF
; 203. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
CALL LWRD ?0109
POP AF
; 204. if(!Disk) //主盘目录
XOR A
OR (IX+14)
LD C,148
PUSH BC
LD C,22
PUSH BC
LD C,(IX+12)
JR NZ,?0025
?0024:
; 205. ResShowMultiString( VSTOPM1,string_id, list_str_x_def, list_str_y_def);
LD DE,633
JR ?0091
; 206. else
?0025:
; 207. ResShowMultiString( VSTOPM2,string_id, list_str_x_def, list_str_y_def);
LD DE,634
?0091:
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
?0026:
; 208. for(i=top;i<=bottom;i++)
LD L,(IX-4)
LD H,(IX-3)
PUSH HL
POP IY
?0028:
PUSH IY
POP BC
LD L,(IX-2)
LD H,(IX-1)
AND A
SBC HL,BC
JP C,?0027
?0029:
; 209. {
; 210. output8(0x4e,input8(0x4e) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 211. TransOneRecord(&temp_record,&OnePageRecord[i-top]); //将idm中记录数据读取到temp_record中
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
SBC HL,BC
LD C,L
LD B,H
LD DE,75
CALL LWRD ?0110
; 212. if(i==active)
LD L,(IX+10)
LD H,(IX+11)
PUSH IY
POP BC
AND A
SBC HL,BC
JP NZ,?0032
?0031:
; 213. {
; 214. ResShowPic(FILEBCK, explorer_str_x_def-1, menu_pos_list[i-top]-4);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
AND A
SBC HL,BC
LD DE,menu_pos_list
ADD HL,DE
LD A,(HL)
ADD A,252
LD E,A
PUSH DE
LD C,31
LD DE,44
CALL LWRD ?0108
POP AF
; 215. ResShowPic(DHTHK,194, menu_pos_list[i-top]+5);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
AND A
SBC HL,BC
LD DE,menu_pos_list
ADD HL,DE
LD A,(HL)
ADD A,5
LD E,A
PUSH DE
LD C,194
LD DE,39
CALL LWRD ?0108
POP AF
; 216. region_scroll.y= menu_pos_list[i-top]-2;
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
AND A
SBC HL,BC
LD BC,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,254
LD (region_scroll+1),A
; 217. memcpy(scroll_buf,temp_record.longname,31);
LD BC,31
LD DE,scroll_buf
LD HL,temp_record+25
LDIR
; 218. scroll_buf[31] = 0;
XOR A
LD (scroll_buf+31),A
; 219. if(temp_record.filetype==TYPE_FILE)
LD A,(temp_record)
DEC A
JR NZ,?0034
?0033:
; 220. ResShowPic(MFILE,13,menu_pos_list[i-top]-1);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
SBC HL,BC
LD BC,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
LD C,13
LD DE,198
JR ?0092
?0034:
; 221. else if(temp_record.filetype==TYPE_DIR)
LD A,(temp_record)
OR A
JR NZ,?0030
?0036:
; 222. ResShowPic(MDIR,10,menu_pos_list[i-top]-4);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
SBC HL,BC
LD BC,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,252
LD C,A
PUSH BC
LD C,10
LD DE,175
?0092:
CALL LWRD ?0108
POP AF
?0037:
?0035:
; 223. continue;
JR ?0030
?0032:
; 224. }
; 225. else
; 226. {
; 227. if(temp_record.filetype==TYPE_FILE)
LD A,(temp_record)
DEC A
JR NZ,?0039
?0038:
; 228. ResShowPic(MFILE,13,menu_pos_list[i-top]-1);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
AND A
SBC HL,BC
LD BC,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
LD C,13
LD DE,198
JR ?0093
?0039:
; 229. else if(temp_record.filetype==TYPE_DIR)
LD A,(temp_record)
OR A
JR NZ,?0042
?0041:
; 230. ResShowPic(MDIR,10,menu_pos_list[i-top]-4);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
SBC HL,BC
LD BC,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,252
LD C,A
PUSH BC
LD C,10
LD DE,175
?0093:
CALL LWRD ?0108
POP AF
?0042:
?0040:
; 231. }
; 232. SetTextPos(explorer_str_x_def, menu_pos_list[i-top]-2);
LD C,(IX-4)
LD B,(IX-3)
PUSH IY
POP HL
AND A
SBC HL,BC
LD BC,menu_pos_list
CALL LWRD ?0111
; 233. DisplayBytes =Count_Byte(temp_record.longname,string_id);
; 234. PutS(temp_record.longname,DisplayBytes);
?0030:
INC IY
JP LWRD ?0028
?0027:
; 235. } // for
; 236. ScrollString(scroll_buf, TRUE,string_id,®ion_scroll);
LD HL,region_scroll
PUSH HL
LD L,(IX+12)
PUSH HL
CALL LWRD ?0107
POP HL
POP HL
; 237. if(strlen(scroll_buf)<20)
LD HL,scroll_buf
CALL LWRD ?STRLEN_L11
LD BC,20
AND A
SBC HL,BC
JR NC,?0044
?0043:
; 238. ScrollFlag=0;
?0097:
XOR A
JR ?0094
; 239. else
?0044:
; 240. ScrollFlag=1;
LD A,1
?0094:
LD (ScrollFlag),A
?0045:
?0023:
?0007:
; 241. }
; 242. } //else scrollflag = 0
; 243. }
LD SP,IX
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
?0107:
LD C,1
?0106:
LD DE,scroll_buf
LD A,BYTE3 ScrollString
LD HL,LWRD ScrollString
JP LWRD ?BANK_CALL_DIRECT_L08
?0109:
LD C,194
LD DE,38
?0108:
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0110:
CALL LWRD ?S_MUL_L02
LD HL,OnePageRecord
ADD HL,DE
LD C,L
LD B,H
LD DE,temp_record
LD A,BYTE3 TransOneRecord
LD HL,LWRD TransOneRecord
CALL LWRD ?BANK_CALL_DIRECT_L08
RET
?0111:
ADD HL,BC
LD A,(HL)
ADD A,254
LD C,A
LD E,32
CALL LWRD SetTextPos
LD C,(IX+12)
LD DE,temp_record+25
LD A,BYTE3 Count_Byte
LD HL,LWRD Count_Byte
CALL LWRD ?BANK_CALL_DIRECT_L08
LD C,L
LD DE,temp_record+25
CALL LWRD PutS
RET
init_dir_buf:
; 244.
; 245.
; 246. //********************************************************************************
; 247. //* Description :建立快速查询表,目录更新时需要重新调用此函数
; 248. //*
; 249. //** Arguments :
; 250. //*
; 251. //* Returns :
; 252. //*
; 253. //* Notes :
; 254. //*
; 255. //********************************************************************************
; 256. void init_dir_buf(void)
; 257. {
PUSH BC
PUSH DE
PUSH IY
PUSH IX
LD HL,65500
ADD HL,SP
LD SP,HL
; 258. WORD i, tmp, total;
; 259. char Backbuf[32];
; 260. BOOL direxist;
; 261.
; 262. Initdirbuf(); //清除目录检索表
LD A,BYTE3 Initdirbuf
LD HL,LWRD Initdirbuf
CALL LWRD ?BANK_CALL_DIRECT_L08
; 263. tmp = 1;
; 264.
; 265. FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
LD HL,0
PUSH HL
LD C,2
LD L,6
ADD HL,SP
EX DE,HL
CALL LWRD FS_Backup
POP HL
; 266. dir_total_num=count_dir_num();
LD A,BYTE3 count_dir_num
LD HL,LWRD count_dir_num
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (dir_total_num),HL
; 267. file_total_num=GetFileTotalCur(FALSE);
LD E,0
LD A,BYTE3 GetFileTotalCur
LD HL,LWRD GetFileTotalCur
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (file_total_num),HL
; 268. list_total_num=dir_total_num+file_total_num+1;
LD BC,(dir_total_num)
ADD HL,BC
INC HL
LD (list_total_num),HL
; 269. fselTotal=file_total_num;
LD HL,(file_total_num)
LD (fselTotal),HL
; 270.
; 271. for(i = 1; i <= dir_total_num; i++)
LD IX,1
LD HL,0
ADD HL,SP
LD (HL),1
INC HL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -