⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basal_reader_de.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 3 页
字号:
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	EX	DE,HL
	LD	(IX-8),L
	LD	(IX-7),H
	LD	(IX-6),C
	LD	(IX-5),B
; 140.	    RowHeadPosition = 0;
; 141.	    for( row=0; row<SCR_ROW; )
	LD	(IX-17),1
	LD	IY,0
	LD	(IX-19),0
?0042:
	LD	A,(IX-19)
	CP	7
	JP	NC,?0041
?0043:
; 142.	    {
; 143.	        if( ReReadFlag )
	XOR	A
	OR	(IX-17)
	JP	Z,?0054
?0044:
; 144.	        {
; 145.	            ReReadFlag = FALSE;
; 146.	            ReadFileLength += RowHeadPosition;     // 已读长度 + 显示长度
	LD	HL,12
	ADD	HL,SP
	PUSH	IY
	POP	DE
	LD	BC,0
	CALL	LWRD ?L_ADDASG_L03
; 147.	            LeftFileLength -= RowHeadPosition;  // 剩余长度 - 显示长度
	LD	HL,8
	ADD	HL,SP
	PUSH	IY
	POP	DE
	LD	BC,0
	CALL	LWRD ?L_SUBASG_L03
; 148.	            RowHeadPosition = 0;
; 149.	
; 150.	            if( LeftFileLength == 0 )
	LD	(IX-17),0
	LD	IY,0
	LD	A,E
	OR	D
	OR	C
	OR	B
	JP	Z,?0041
?0046:
; 151.	                break;          // 读文件结束
?0047:
; 152.	            if( LeftFileLength > BUFF_ONE_ROW *2)    
	LD	L,(IX-10)
	LD	H,(IX-9)
	PUSH	HL
	LD	L,(IX-12)
	LD	H,(IX-11)
	PUSH	HL
	LD	BC,0
	LD	HL,40
	CALL	LWRD ?SL_CMP_L03
	JR	NC,?0049
?0048:
; 153.	                ReadLengthOneTime = BUFF_ONE_ROW*2;
	LD	(IX-14),L
	LD	(IX-13),B
; 154.	            else
	JR	?0050
?0049:
; 155.	                ReadLengthOneTime = LeftFileLength;
	LD	L,(IX-12)
	LD	H,(IX-11)
	LD	(IX-14),L
	LD	(IX-13),H
?0050:
; 156.	
; 157.	            str = read_buff(ViewFileStructPoint, ReadFileLength, ReadLengthOneTime );
	LD	H,(IX-13)
	PUSH	HL
	LD	L,(IX-6)
	LD	H,(IX-5)
	PUSH	HL
	LD	L,(IX-8)
	LD	H,(IX-7)
	PUSH	HL
	CALL	LWRD ?0191
	POP	AF
	POP	AF
	POP	AF
	LD	(IX-16),L
	LD	(IX-15),H
; 158.	            if( str == NULL )
	LD	A,L
	OR	H
	JR	NZ,?0052
?0051:
; 159.	                return 0;
	LD	L,B
	JP	LWRD ?0092
?0052:
; 160.	                
; 161.	            if(row==0)                             //取当前屏第一行的数据作为书签的标题
	XOR	A
	OR	(IX-19)
	JR	NZ,?0054
?0053:
; 162.	            {
; 163.	            memcpy(fileName,str,sizeof(fileName));    //fileName--当前建立书签时的标题           
	LD	C,50
	LD	DE,fileName
	LDIR
?0054:
?0045:
?0056:
; 164.	            }  
; 165.	        }
; 166.	
; 167.	        for( ; RowHeadPosition<ReadLengthOneTime; RowHeadPosition++ )
	LD	C,(IX-14)
	LD	B,(IX-13)
	PUSH	IY
	POP	HL
	AND	A
	SBC	HL,BC
	JR	NC,?0055
?0057:
; 168.	        {
; 169.	            CLEAR_WATCHDOG();   //清WATCH DOG
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 170.	            // 过滤 0x0d & 0x0a
; 171.	            if( str[RowHeadPosition]!=0x0d && str[RowHeadPosition]!=0x0a )
	PUSH	IY
	POP	HL
	LD	C,(IX-16)
	LD	B,(IX-15)
	ADD	HL,BC
	LD	A,(HL)
	CP	13
	JR	Z,?0060
	PUSH	IY
	POP	HL
	ADD	HL,BC
	LD	A,(HL)
	CP	10
	JR	NZ,?0055
?0062:
?0061:
?0059:
; 172.	                break;
?0060:
	INC	IY
	JR	?0054
?0055:
; 173.	        }
; 174.	
; 175.	        if( (RowHeadPosition==ReadLengthOneTime) || ((RowHeadPosition+SCR_COL>=ReadLengthOneTime) && (ReadLengthOneTime!=LeftFileLength)) )
	LD	L,(IX-14)
	LD	H,(IX-13)
	PUSH	IY
	POP	BC
	AND	A
	SBC	HL,BC
	JR	Z,?0181
	LD	HL,20
	ADD	HL,BC
	LD	C,(IX-14)
	LD	B,(IX-13)
	AND	A
	SBC	HL,BC
	JR	C,?0064
	LD	L,C
	LD	H,B
	LD	DE,0
	LD	C,(IX-12)
	LD	B,(IX-11)
	SBC	HL,BC
	JR	NZ,?0181
	EX	DE,HL
	LD	C,(IX-10)
	LD	B,(IX-9)
	SBC	HL,BC
	JR	Z,?0064
?0181:
?0068:
?0067:
?0065:
?0066:
?0063:
; 176.	        {
; 177.	            ReReadFlag = TRUE;      // 需要重新读入数据(第一种情况是一次读取的数据已经显示完毕;
	LD	(IX-17),1
; 178.	                        //第二种情况是一次读取的剩余数据不足显示一行)
; 179.	        }
; 180.	        else
	JP	LWRD ?0042
?0064:
; 181.	        {
; 182.	            // 计算显示一行的字数(包括汉字或英文字)
; 183.	            for( col=CountWords=0; (col<SCR_COL)&&(RowHeadPosition+col<ReadLengthOneTime); CountWords++ )    
	LD	(IX-18),0
	LD	(IX-20),0
?0071:
	LD	A,(IX-20)
	CP	20
	JR	NC,?0070
	LD	C,A
	LD	B,0
	PUSH	IY
	POP	HL
	ADD	HL,BC
	LD	C,(IX-14)
	LD	B,(IX-13)
	AND	A
	SBC	HL,BC
	JR	NC,?0070
?0074:
?0073:
?0072:
; 184.	            {
; 185.	                if( str[ RowHeadPosition+col ]==0x0d || str[ RowHeadPosition+col ]==0x0a )    //换行
	LD	C,A
	LD	B,0
	PUSH	IY
	POP	HL
	ADD	HL,BC
	LD	C,(IX-16)
	LD	B,(IX-15)
	ADD	HL,BC
	LD	A,(HL)
	CP	13
	JR	Z,?0070
	LD	C,(IX-20)
	LD	B,0
	PUSH	IY
	POP	HL
	ADD	HL,BC
	LD	C,(IX-16)
	LD	B,(IX-15)
	ADD	HL,BC
	LD	A,(HL)
	CP	10
	JR	Z,?0070
?0078:
?0079:
?0076:
; 186.	                    break;
?0077:
; 187.	
; 188.	                if( str[ RowHeadPosition+col ]<0x80 )
	LD	C,(IX-20)
	LD	B,0
	PUSH	IY
	POP	HL
	ADD	HL,BC
	LD	C,(IX-16)
	LD	B,(IX-15)
	ADD	HL,BC
	LD	A,(HL)
	CP	128
	JR	NC,?0081
?0080:
; 189.	                    col += 1;
	INC	(IX-20)
	JR	?0085
?0081:
; 190.	                else if( col<SCR_COL-1 )
	LD	A,(IX-20)
	CP	19
	JR	NC,?0070
?0083:
; 191.	                    col += 2;
	ADD	A,2
	LD	(IX-20),A
; 192.	                else
?0084:
; 193.	                    break;
?0085:
?0082:
	INC	(IX-18)
	JR	?0071
?0070:
; 194.	            }
; 195.	
; 196.	            if( !DealMode )
	XOR	A
	OR	(IX-2)
	JR	NZ,?0087
?0086:
; 197.	            {   // 显示
; 198.	                if( !CheckLangID( ViewFileStructPoint->langid ) )
	LD	HL,18
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	LD	E,(HL)
	LD	A,BYTE3 CheckLangID
	LD	HL,LWRD CheckLangID
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	JR	NZ,?0089
?0088:
; 199.	                    CountWords = col;
	LD	B,(IX-20)
	LD	(IX-18),B
?0089:
; 200.	                ///-SetTextPos(POSITION_TXT_START_POSX, (SCR_ROW-row)*16-9);
; 201.	                SetTextPos(POSITION_TXT_START_POSX, row*16+8);
	LD	A,(IX-19)
	ADD	A,A
	ADD	A,A
	ADD	A,A
	ADD	A,A
	ADD	A,8
	LD	C,A
	LD	E,6
	CALL	LWRD SetTextPos
; 202.	                PutS( &str[RowHeadPosition], CountWords );
	LD	C,(IX-18)
	PUSH	IY
	POP	HL
	LD	E,(IX-16)
	LD	D,(IX-15)
	ADD	HL,DE
	EX	DE,HL
	CALL	LWRD PutS
?0087:
; 203.	            }
; 204.	            RowHeadPosition += col;
	LD	C,(IX-20)
	LD	B,0
	ADD	IY,BC
; 205.	            row ++;
	INC	(IX-19)
?0069:
	JP	LWRD ?0042
?0041:
; 206.	        }
; 207.	    }
; 208.	
; 209.	
; 210.	    if(DealMode != 2)
	LD	B,(IX-2)
	DEC	B
	DEC	B
	JR	Z,?0091
?0090:
; 211.	    {
; 212.	        ViewFileStructPoint->PrevSeek = ViewFileStructPoint->CurrentSeek;          //保留有效屏的位置
	LD	HL,10
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	PUSH	BC
	LD	HL,6
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	POP	BC
	PUSH	DE
	LD	(HL),C
	LD	D,B
	POP	BC
	INC	HL
	LD	(HL),D
	INC	HL
	LD	(HL),C
	INC	HL
	LD	(HL),B
; 213.	        ViewFileStructPoint->CurrentSeek = ReadFileLength + RowHeadPosition;            // 计算下一页的起始地址
	LD	HL,10
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	PUSH	HL
	PUSH	IY
	POP	DE
	LD	BC,0
	PUSH	BC
	PUSH	DE
	LD	L,(IX-8)
	LD	H,(IX-7)
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	L,(IX-6)
	LD	H,(IX-5)
	POP	BC
	ADC	HL,BC
	LD	C,L
	LD	B,H
	POP	HL
	LD	(HL),E
	INC	HL
	LD	(HL),D
	INC	HL
	LD	(HL),C
	INC	HL
	LD	(HL),B
?0091:
; 214.	    }
; 215.	
; 216.	    return row;
	LD	L,(IX-19)
; 217.	
; 218.	}
?0092:
	JP	LWRD ?0015
?0191:
	LD	E,(IX-4)
	LD	D,(IX-3)
	LD	A,BYTE3 read_buff
	LD	HL,LWRD read_buff
	JP	LWRD ?BANK_CALL_DIRECT_L08
view_page_up:
; 219.	
; 220.	//////////////////////////////////////////////////
; 221.	//向前翻阅
; 222.	byte view_page_up(STRUCT_VIEW_FILE *ViewFileStructPoint , int BackGroundID)
; 223.	{
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	PUSH	BC
	PUSH	DE
	LD	HL,65518
	ADD	HL,SP
	LD	SP,HL
; 224.	    //long lBakSeek[SCR_ROW+1];
; 225.	    long ReadFileLength;                // 已读取的文件长度
; 226.	    uint ReadLengthOneTime;        //读取一次数据的长度
; 227.	    uint RowHeadPosition;        //行首地址(在一次所读数据中的位置)
; 228.	    uint ByteCount;            //字符数累加    
; 229.	    BOOL ReturnFlag;            //换行标志
; 230.	    BOOL ReReadFlag;            //重读标志
; 231.	    char FileHeadFlag=0; 
; 232.	    byte row, col;            //显示的行列号
; 233.	    byte chr;
; 234.	
; 235.	    byte *str, *p;
; 236.	    //SetBackgdColor(Color_BLACK_def);
; 237.	    ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 238.	
; 239.	    if( ViewFileStructPoint->PrevSeek != 0 )
	LD	(IX-5),0
	LD	HL,6
	LD	E,(IX-4)
	LD	D,(IX-3)
	ADD	HL,DE
	LD	A,(HL)
	INC	HL
	OR	(HL)
	INC	HL
	OR	(HL)
	INC	HL
	OR	(HL)
	JR	Z,?0094
?0093:
; 240.	    {
; 241.	        ToPrevScreenPosition(ViewFileStructPoint);
	LD	A,BYTE3 ToPrevScreenPosition
	LD	HL,LWRD ToPrevScreenPosition
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 242.	        ViewFileStructPoint->PrevSeek = 0;
	LD	HL,6
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	XOR	A
	LD	(HL),A
	INC	HL
	LD	(HL),A
	INC	HL
	LD	(HL),A
	INC	HL
	LD	(HL),A
?0094:
; 243.	    }
; 244.	    if( 0 == ViewFileStructPoint->CurrentSeek )
	LD	HL,10
	LD	C,(IX-4)
	LD	B,(IX-3)
	ADD	HL,BC
	LD	A,(HL)
	INC	HL
	OR	(HL)
	INC	HL
	OR	(HL)
	INC	HL
	OR	(HL)
	JP	Z,?0186
?0095:
; 245.	        return 0;   // 不能向前翻页
?0096:
; 246.	
; 247.	    // 计算向前翻页最接近的偏移(ReadFileLength)
; 248.	    ReturnFlag = FALSE;  // 0x0D, 0x0A 标志
; 249.	    ByteCount = 0;
; 250.	    ReadLengthOneTime = 0 ;
; 251.	    ReadFileLength = ViewFileStructPoint->CurrentSeek;
	LD	HL,10
	ADD	HL,BC
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	EX	DE,HL
	LD	(IX-22),L
	LD	(IX-21),H
	LD	(IX-20),C
	LD	(IX-19),B
	LD	(IX-6),0
	XOR	A
	LD	(IX-16),A
	LD	(IX-15),A
	LD	IY,0
?0098:
; 252.	    while( ReadFileLength != 0 )
	LD	A,(IX-22)
	OR	(IX-21)
	OR	(IX-20)
	OR	(IX-19)
	JP	Z,?0097
?0099:
; 253.	    {
; 254.	        if( ReadLengthOneTime == 0 )
	PUSH	IY
	POP	HL
	LD	A,L
	OR	H
	JR	NZ,?0101
?0100:
; 255.	        {
; 256.	            if( ReadFileLength > BUFF_ONE_ROW *2)    
	LD	L,(IX-20)
	LD	H,(IX-19)
	PUSH	HL
	LD	L,(IX-22)
	LD	H,(IX-21)
	PUSH	HL
	LD	C,A
	LD	B,A
	LD	HL,40
	CALL	LWRD ?SL_CMP_L03
	JR	NC,?0103
?0102:
; 257.	                ReadLengthOneTime = BUFF_ONE_ROW*2;
	LD	IY,40
; 258.	            else
	JR	?0104

⌨️ 快捷键说明

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