navi_file.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 2,198 行 · 第 1/3 页

S01
2,198
字号
	LD	SP,IX
	POP	IX
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
WrFoldNextIDM:
; 513.	void WrFoldNextIDM(long addr,WORD Nextoffset)
; 514.	{
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	PUSH	BC
	PUSH	DE
	PUSH	AF
; 515.	     char   IO05bak;
; 516.	     output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 517.	     if(addr>=0x18000)  //96k
	LD	HL,1
	PUSH	HL
	LD	HL,32768
	PUSH	HL
	EX	DE,HL
	CALL	LWRD ?SL_CMP_L03
	JR	NC,?0125
?0120:
?0121:
; 518.	         return;
; 519.	     
; 520.	     IO05bak = input8(0x05);
	IN	A,(5)
	LD	(IX-6),A
; 521.	     if(addr<0xc000)
	LD	L,E
	LD	H,E
	PUSH	HL
	LD	H,192
	PUSH	HL
	LD	L,(IX-4)
	LD	H,(IX-3)
	CALL	LWRD ?SL_CMP_L03
	LD	L,E
	LD	H,E
	PUSH	HL
	LD	H,64
	PUSH	HL
	LD	L,(IX-4)
	LD	H,(IX-3)
	CALL	LWRD ?SL_DIV_L03
	JR	C,?0206
?0122:
; 522.	        PageNum = addr/0x4000;
; 523.	     else
?0123:
; 524.	        PageNum = 1+addr/0x4000;
	INC	L
?0206:
	LD	A,L
	LD	(PageNum),A
?0124:
; 525.	     output8(0x05,0xf0|PageNum);
	OR	240
	OUT	(5),A
; 526.	     memcpy((char *)(IDM_START_ADDR+addr%0x4000+13),&Nextoffset,2);
	LD	BC,2
	LD	L,B
	LD	H,B
	PUSH	HL
	LD	H,64
	PUSH	HL
	LD	C,(IX-2)
	LD	B,(IX-1)
	LD	L,(IX-4)
	LD	H,(IX-3)
	CALL	LWRD ?SL_MOD_L03
	PUSH	BC
	PUSH	HL
	LD	HL,16397
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	POP	BC
	LD	HL,12
	ADD	HL,SP
	LD	BC,2
	LDIR
; 527.	      
; 528.	     output8(0x05,IO05bak);   
	LD	A,(IX-6)
	OUT	(5),A
; 529.	}
?0125:
	LD	SP,IX
	POP	IX
	JP	LWRD ?BANK_FAST_LEAVE_L08
DISC_Location_process:
; 530.	BOOL DISC_Location_process()
; 531.	{
	PUSH	BC
	PUSH	DE
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	LD	HL,65446
	ADD	HL,SP
	LD	SP,HL
; 532.	   char   IO05bak;
; 533.	      
; 534.	   char   m_szTemp[12];
; 535.	   
; 536.	   Location_Path_t pathinfo;
; 537.	   long Stackoffset[TOTALDIRLAYER];
; 538.	   
; 539.	   long FileNum;
; 540.	   long DirNum;
; 541.	   char i;
; 542.	  
; 543.	   long pathoffset;   
; 544.	   g_offset = 0;
	LD	BC,0
	LD	(g_offset),BC
	LD	(g_offset+2),BC
; 545.	   output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 546.	   memset(&pathinfo,0,sizeof(Location_Path_t));
	LD	C,64
	LD	HL,14
	ADD	HL,SP
	EX	DE,HL
	LD	L,B
	LD	H,B
	CALL	LWRD ?MEMSET_L11
; 547.	   pathinfo.PathorFile=0;
	LD	(IX-76),H
; 548.	   
; 549.	   for(i=0;i<3;i++)
	LD	(IX-90),H
?0127:
	LD	A,(IX-90)
	CP	3
	JR	NC,?0126
?0128:
; 550.	   {
; 551.	     output8(0x4e,input8(0x4e)|0x08);
; 552.	     IO05bak = input8(0x05);
; 553.	     output8(0x05,0xf0|i);
; 554.	     memset((char *)(IDM_START_ADDR),0,0x4000);
	CALL	LWRD ?0212
; 555.	   
; 556.	     output8(0x05,IO05bak); 
	LD	A,(IX-89)
	OUT	(5),A
	INC	(IX-90)
	JR	?0127
?0126:
; 557.	   }
; 558.	   PageNum = 4; //idm 4,5,6
	LD	A,4
	LD	(PageNum),A
; 559.	   for(i=PageNum;i<7;i++)
	LD	(IX-90),A
?0131:
	LD	A,(IX-90)
	CP	7
	JR	NC,?0130
?0132:
; 560.	   {
; 561.	     output8(0x4e,input8(0x4e)|0x08);
; 562.	     IO05bak = input8(0x05);
; 563.	     output8(0x05,0xf0|i);
; 564.	     memset((char *)(IDM_START_ADDR),0,0x4000);
	CALL	LWRD ?0212
; 565.	   
; 566.	     output8(0x05,IO05bak); 
	LD	A,(IX-89)
	OUT	(5),A
	INC	(IX-90)
	JR	?0131
?0130:
; 567.	   }
; 568.	   
; 569.	   FS_CD(":"); 
	LD	DE,?0004
	CALL	LWRD FS_CD
; 570.	   
; 571.	   
; 572.	   //处理根目录          
; 573.	   m_szTemp[0]=':';
	LD	(IX-12),58
; 574.	   m_szTemp[1]=0; 
	LD	(IX-11),0
; 575.	   pathoffset = g_offset;
; 576.	   StackPathoffset[fselDirLayer]=pathoffset;
; 577.	   g_offset=g_offset+sizeof(Location_Path_t);
	CALL	LWRD ?0213
; 578.	   DirNum=WrFoldertoIDM(&g_offset);
; 579.	   FileNum=WrFiletoIDM(&g_offset);
	LD	(IX-78),C
	LD	(IX-77),B
; 580.	   GetPathinfo(&pathinfo,DirNum,FileNum,m_szTemp);
	LD	HL,78
	ADD	HL,SP
	PUSH	HL
	PUSH	BC
	LD	L,(IX-80)
	LD	H,(IX-79)
	PUSH	HL
	LD	L,(IX-82)
	LD	H,(IX-81)
	PUSH	HL
	LD	L,(IX-84)
	LD	H,(IX-83)
	PUSH	HL
	LD	HL,24
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 GetPathinfo
	LD	HL,LWRD GetPathinfo
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
	POP	HL
	POP	HL
	POP	HL
	POP	HL
; 581.	   WrPathtoIDM(pathinfo,pathoffset);
	LD	L,(IX-86)
	LD	H,(IX-85)
	PUSH	HL
	LD	L,(IX-88)
	LD	H,(IX-87)
	PUSH	HL
	LD	HL,18
	ADD	HL,SP
	EX	DE,HL
	LD	HL,65472
	ADD	HL,SP
	LD	SP,HL
	EX	DE,HL
	LD	BC,64
	LDIR
	LD	A,BYTE3 WrPathtoIDM
	LD	HL,LWRD WrPathtoIDM
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	HL,68
	ADD	HL,SP
	LD	SP,HL
; 582.	   
; 583.	   if(DirNum==0&&FileNum==0)
	LD	A,(IX-84)
	OR	(IX-83)
	OR	(IX-82)
	OR	(IX-81)
	JR	NZ,?0135
	LD	A,(IX-80)
	OR	(IX-79)
	OR	(IX-78)
	OR	(IX-77)
	JR	NZ,?0135
?0137:
?0136:
?0134:
; 584.	   {
; 585.	       return FALSE;
	LD	L,B
; 586.	   }
	JP	LWRD ?0165
?0135:
?0140:
; 587.	   
; 588.	   do
; 589.	   {
; 590.	       if(fselNextDir(m_szTemp))  //平级遍历
	LD	HL,78
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 fselNextDir
	LD	HL,LWRD fselNextDir
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	JP	Z,?0142
?0141:
; 591.	       {
; 592.	           // Stackoffset[fselDirLayer]=offset;
; 593.	         output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 594.	         if(512-g_offset%512<48)  //对齐
	LD	HL,0
	PUSH	HL
	LD	L,48
	PUSH	HL
	LD	L,H
	PUSH	HL
	LD	H,2
	PUSH	HL
	LD	BC,(g_offset+2)
	LD	HL,(g_offset)
	CALL	LWRD ?SL_MOD_L03
	LD	E,C
	LD	D,B
	LD	C,L
	LD	B,H
	LD	HL,512
	AND	A
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,0
	SBC	HL,DE
	PUSH	HL
	LD	L,C
	LD	H,B
	POP	BC
	CALL	LWRD ?SL_CMP_L03
	JR	NC,?0144
?0143:
; 595.	         {
; 596.	              g_offset = g_offset+512-g_offset%512;
	LD	BC,0
	PUSH	BC
	LD	B,2
	PUSH	BC
	LD	BC,(g_offset+2)
	LD	HL,(g_offset)
	CALL	LWRD ?SL_MOD_L03
	LD	E,C
	LD	D,B
	AND	A
	LD	BC,512
	SBC	HL,BC
	EX	DE,HL
	LD	B,C
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,g_offset
	CALL	LWRD ?L_SUBASG_L03
?0144:
; 597.	         }  
; 598.	           
; 599.	         WrFoldNextIDM(StackPathoffset[fselDirLayer]+sizeof(Location_Path_t)+(fselDirNo[fselDirLayer]-1)*sizeof(file_info_t),g_offset/16);
	LD	HL,0
	PUSH	HL
	LD	L,16
	PUSH	HL
	LD	BC,(g_offset+2)
	LD	HL,(g_offset)
	CALL	LWRD ?SL_DIV_L03
	PUSH	HL
	LD	BC,(fselDirLayer)
	LD	B,0
	LD	HL,fselDirNo
	ADD	HL,BC
	LD	L,(HL)
	LD	H,B
	DEC	HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	LD	C,B
	PUSH	BC
	PUSH	HL
	LD	HL,(fselDirLayer)
	LD	H,B
	ADD	HL,HL
	ADD	HL,HL
	LD	BC,StackPathoffset
	ADD	HL,BC
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	LD	L,C
	LD	H,B
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	POP	BC
	ADC	HL,BC
	PUSH	HL
	PUSH	DE
	LD	HL,64
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	HL,0
	POP	BC
	ADC	HL,BC
	LD	C,L
	LD	B,H
	LD	A,BYTE3 WrFoldNextIDM
	LD	HL,LWRD WrFoldNextIDM
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
; 600.	         if(FS_CD(m_szTemp))  //深度遍历
	LD	HL,78
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_CD
	OR	A
	JP	Z,?0138
?0145:
; 601.	         {
; 602.	           if( fselDirNo[fselDirLayer]!=0 )
	LD	BC,(fselDirLayer)
	LD	B,0
	LD	HL,fselDirNo
	ADD	HL,BC
	LD	A,(HL)
	OR	A
	JR	Z,?0149
?0147:
; 603.	           {
; 604.	                fselDirLayer++;
	LD	HL,fselDirLayer
	INC	(HL)
; 605.	                 for(i=fselDirLayer; i<TOTALDIRLAYER; i++)
	LD	A,(fselDirLayer)
	LD	(IX-90),A
?0150:
	LD	A,(IX-90)
	CP	8
	JR	NC,?0149
?0151:
; 606.	                    fselDirNo[i]=0 ;
	LD	C,A
	LD	HL,fselDirNo
	ADD	HL,BC
	LD	(HL),B
	INC	(IX-90)
; 607.	           }
	JR	?0150
?0149:
?0148:
; 608.	           if ( fselDirLayer <= 7 )
	LD	A,(fselDirLayer)
	LD	B,A
	LD	A,7
	CP	B
	JR	C,?0154
?0153:
; 609.	           {
; 610.	               
; 611.	               //fselDirNo[fselDirLayer] = 0;  //第一个子目录
; 612.	               
; 613.	               pathoffset = g_offset;
; 614.	               StackPathoffset[fselDirLayer]=pathoffset;
; 615.	               g_offset=g_offset+sizeof(Location_Path_t);
	CALL	LWRD ?0213
; 616.	               DirNum=WrFoldertoIDM(&g_offset);
; 617.	               FileNum=WrFiletoIDM(&g_offset);
; 618.	               GetPathinfo(&pathinfo,DirNum,FileNum,m_szTemp);
	LD	HL,78
	ADD	HL,SP
	PUSH	HL
	PUSH	BC
	LD	L,(IX-80)
	LD	H,(IX-79)
	PUSH	HL
	LD	L,(IX-82)
	LD	H,(IX-81)
	PUSH	HL
	LD	L,(IX-84)
	LD	H,(IX-83)
	PUSH	HL
	LD	HL,24
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 GetPathinfo
	LD	HL,LWRD GetPathinfo
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
	POP	HL
	POP	HL
	POP	HL
	POP	HL
; 619.	               WrPathtoIDM(pathinfo,pathoffset);
	LD	L,(IX-86)
	LD	H,(IX-85)
	PUSH	HL
	LD	L,(IX-88)
	LD	H,(IX-87)
	PUSH	HL
	LD	HL,18
	ADD	HL,SP
	EX	DE,HL
	LD	HL,65472
	ADD	HL,SP
	LD	SP,HL
	EX	DE,HL
	LD	BC,64
	LDIR
	LD	A,BYTE3 WrPathtoIDM
	LD	HL,LWRD WrPathtoIDM
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	HL,68
	ADD	HL,SP
	LD	SP,HL
; 620.	               
; 621.	           }
; 622.	           else
	JP	LWRD ?0135
?0154:
; 623.	           {
; 624.	               if(FS_CD("\\"))
	LD	DE,?0158
	CALL	LWRD FS_CD
	OR	A
	JP	Z,?0135
?0156:
; 625.	               {
; 626.	                  fselDirLayer--;
	JR	?0208
	DEC	(HL)
?0157:
?0155:
; 627.	               }
; 628.	           }
; 629.	           
; 630.	           
; 631.	         }
; 632.	         else
	JP	LWRD ?0135
?0146:
; 633.	         {
; 634.	              break;
	JR	?0138
?0159:
; 635.	         }
; 636.	       }
; 637.	       else
	JP	LWRD ?0135
?0142:
; 638.	       {
; 639.	           if(fselDirLayer==0)
	LD	A,(fselDirLayer)
	OR	A
	JR	Z,?0138
?0161:
; 640.	              break;
?0162:
; 641.	           if(FS_CD("\\"))
	LD	DE,?0158
	CALL	LWRD FS_CD
	OR	A
	JP	Z,?0135
?0163:
; 642.	           {
; 643.	              fselDirLayer--;
?0208:
	LD	HL,fselDirLayer
	DEC	(HL)
?0164:
?0160:
; 644.	           }
; 645.	       }
; 646.	   }while(1);
	JP	LWRD ?0135
?0138:
; 647.	   
; 648.	     
; 649.	    return TRUE;
	LD	L,1
; 650.	}
?0165:
	JP	LWRD ?0119
	POP	IX
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0212:
	IN	A,(78)
	SET	3,A
	OUT	(78),A
	IN	A,(5)
	LD	(IX-89),A
	LD	A,(IX-90)
	OR	240
	OUT	(5),A
	LD	BC,16384
	LD	E,C
	LD	D,B
	JP	LWRD ?MEMSET_L11
?0213:
	LD	BC,(g_offset+2)
	LD	HL,(g_offset)
	LD	(IX-88),L
	LD	(IX-87),H
	LD	(IX-86),C
	LD	(IX-85),B
	LD	HL,(fselDirLayer)
	LD	H,0
	ADD	HL,HL
	ADD	HL,HL
	LD	BC,StackPathoffset
	ADD	HL,BC
	LD	C,(IX-86)
	LD	B,(IX-85)
	LD	E,(IX-88)
	LD	(HL),E
	LD	D,(IX-87)
	INC	HL
	LD	(HL),D
	INC	HL
	LD	(HL),C
	INC	HL
	LD	(HL),B
	LD	HL,g_offset
	LD	BC,0
	LD	DE,64
	CALL	LWRD ?L_ADDASG_L03
	EX	DE,HL
	LD	A,BYTE3 WrFoldertoIDM
	LD	HL,LWRD WrFoldertoIDM
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(IX-84),L
	LD	(IX-83),H
	LD	(IX-82),C
	LD	(IX-81),B
	LD	DE,g_offset
	LD	A,BYTE3 WrFiletoIDM
	LD	HL,LWRD WrFiletoIDM
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(IX-80),L
	LD	(IX-79),H
	RET
	RSEG	CSTR
?0004:
	DEFB	':'
	DEFB	0
?0158:
	DEFB	92,0
	RSEG	UDATA0
fselPLOrCommonDir:
	DEFS	1
fselType:
	DEFS	1
fselMode:
	DEFS	1
fselFileNo:
	DEFS	2
fselExtNo:
	DEFS	1
fselDiskLetter:
	DEFS	1
fselError:
	DEFS	1
fselRandCount:
	DEFS	2
fselDirNo:
	DEFS	8
StackPathoffset:
	DEFS	32
PageNum:
	DEFS	1
g_offset:
	DEFS	4
fselDirLayer:
	DEFS	1
fselTotal:
	DEFS	2
	RSEG	MOD_EH_API
ExtMusic2:
	DEFB	'MP3'
	DEFB	0
	DEFB	'WMA'
	DEFB	0
	DEFB	'ASF'
	DEFB	0
	DEFB	'WMV'
	DEFB	0
	DEFB	'OGG'
	DEFB	0
	DEFB	'APE'
	DEFB	0
	DEFB	'WAV'
	DEFB	0
	DEFB	'ACT'
	DEFB	0
	DEFB	'JPG'
	DEFB	0
	DEFB	'BMP'
	DEFB	0
	DEFB	'GIF'
	DEFB	0
	DEFB	'TXT'
	DEFB	0
	DEFB	'AMV'
	DEFB	0
ExtVoice2:
	DEFB	'WAV'
	DEFB	0
	DEFB	'ACT'
	DEFB	0
RootName2:
	DEFB	':'
	DEFB	0
IgnoreExt2:
	DEFB	'*  '
	DEFB	0
ExtDsc2:
	DEFB	'JPG'
	DEFB	0
	DEFB	'BMP'
	DEFB	0
	DEFB	'GIF'
	DEFB	0
ExtTxt2:
	DEFB	'TXT'
	DEFB	0
ExtAmv2:
	DEFB	'AMV'
	DEFB	0
	RSEG	MOC_EH_FSLAPI
m_szTemp:
	DEFS	12
m_szTemp1:
	DEFS	12
	END

⌨️ 快捷键说明

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