📄 basal_reader_de.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:35:14 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_reader\basal_reader_de.c #
# List file = d:\case_i_d913f\ap\ap_reader\list\basal_reader_de.lst#
# Object file = d:\case_i_d913f\ap\ap_reader\obj\basal_reader_de.r01#
# ASM file = d:\case_i_d913f\ap\ap_reader\list\basal_reader_de.s01#
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_reader\Obj\ -e -K #
# -w -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d913f\ap\ap_reader\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_reader\List\ #
# -ND:\case_i_d913f\ap\ap_reader\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\AP_READER\basal_reader_de.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME basal_reader_de(17)
\ 0000 RSEG MO_BS_TXT(0)
\ 0000 RSEG UDATA0(0)
\ 0000 PUBLIC CheckLangID
\ 0000 EXTERN ClearScreen
\ 0000 EXTERN FS_FRead
\ 0000 EXTERN FS_FSeek
\ 0000 EXTERN PutS
\ 0000 EXTERN SetTextPos
\ 0000 PUBLIC ToPrevScreenPosition
\ 0000 EXTERN fileName
\ 0000 EXTERN g_reader_vars
\ 0000 PUBLIC lBakSeek
\ 0000 PUBLIC read_buff
\ 0000 PUBLIC read_text
\ 0000 PUBLIC view_page_down
\ 0000 PUBLIC view_page_up
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?SL_DIV_L03
\ 0000 EXTERN ?SL_MOD_L03
\ 0000 EXTERN ?SL_CMP_L03
\ 0000 EXTERN ?L_ADDASG_L03
\ 0000 EXTERN ?L_SUBASG_L03
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?MEMSET_L11
\ 0000 RSEG MO_BS_TXT
\ 0000 ToPrevScreenPosition:
1 /*
2 ********************************************************************************
3 * ACTOS
4 * Reader basal module
5 *
6 * (c) Copyright 2002-2003, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * File : basal_reader_de.c
10 * By :
11 * Version: 1> v1.00 first version 2006-4-13 15:49
12 ********************************************************************************
13 ********************************************************************************
14 */
15 #pragma codeseg(MO_BS_TXT)
16 #include "actos.h"
17 #include "basal.h"
18 #include "ap_reader.h"
19 #include "filesys.h"
20 #include "TxtDec.h"
21
22 #include "ap_common.h"
23 #include "display.h"
24 #include <Intrz80.h>
25 #include "bookmark.h"
26 #pragma memory=default
27 extern char fileName[50]; //存放书签头部信息的buffer
28 long lBakSeek[SCR_ROW+1];
29 #define CLEAR_WATCHDOG() output8(REG4E_RTC_WATCH_DOG, (input8(REG4E_RTC_WATCH_DOG) | 0x08))
30
31 //////////////////////////////////////////////////
32 //恢复前一屏在文件中的位置
33 void ToPrevScreenPosition( STRUCT_VIEW_FILE *ViewFileStructPoint )
34 {
\ 0000 C5 PUSH BC
\ 0001 DDE5 PUSH IX
\ 0003 D5 PUSH DE
\ 0004 DDE1 POP IX
35 // CurrentSeek指向当前屏的起始位置
36 ViewFileStructPoint->CurrentSeek = ViewFileStructPoint->PrevSeek;
\ 0006 210600 LD HL,6
\ 0009 19 ADD HL,DE
\ 000A 5E LD E,(HL)
\ 000B 23 INC HL
\ 000C 56 LD D,(HL)
\ 000D 23 INC HL
\ 000E 4E LD C,(HL)
\ 000F 23 INC HL
\ 0010 46 LD B,(HL)
\ 0011 EB EX DE,HL
\ 0012 DD750A LD (IX+10),L
\ 0015 DD740B LD (IX+11),H
\ 0018 DD710C LD (IX+12),C
\ 001B DD700D LD (IX+13),B
37 }
\ 001E DDE1 POP IX
\ 0020 C1 POP BC
\ 0021 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0024 CheckLangID:
38
39 //////////////////////////////////////////////////
40 //检查是否为双字节字 返回TRUE表示双字节字,FALSE表示单字节字
41 BOOL CheckLangID( byte LangID )
42 {
\ 0024 C5 PUSH BC
\ 0025 D5 PUSH DE
43
44 return ( LangID != LAN_ID_ENGLISH && LangID < 5 );
\ 0026 43 LD B,E
\ 0027 05 DEC B
\ 0028 280D JR Z,?0002
\ 002A 210000 LD HL,0
\ 002D 39 ADD HL,SP
\ 002E 7E LD A,(HL)
\ 002F FE05 CP 5
\ 0031 3004 JR NC,?0002
\ 0033 2E01 LD L,1
\ 0035 1802 JR ?0004
\ 0037 ?0002:
\ 0037 2E00 LD L,0
\ 0039 ?0004:
45 }
\ 0039 F1 POP AF
\ 003A C1 POP BC
\ 003B C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 003E read_text:
46 //////////////////////////////////////////////////
47 //根据扇区号的值读数据到bufFile[],同时将之前的扇区数据保存头尾
48 BOOL read_text(STRUCT_VIEW_FILE *ViewFileStructPoint, uint nFileSector )
49 {
\ 003E FDE5 PUSH IY
\ 0040 DDE5 PUSH IX
\ 0042 DD210000 LD IX,0
\ 0046 DD39 ADD IX,SP
\ 0048 C5 PUSH BC
\ 0049 F5 PUSH AF
\ 004A D5 PUSH DE
\ 004B FDE1 POP IY
50 byte i;
51
52 if( nFileSector >= g_reader_vars.g_txt.SectorTotal )
\ 004D ED5B4100 LD DE,(g_reader_vars+65)
\ 0051 69 LD L,C
\ 0052 60 LD H,B
\ 0053 A7 AND A
\ 0054 ED52 SBC HL,DE
\ 0056 3805 JR C,?0006
\ 0058 ?0005:
53 return FALSE;
\ 0058 2E00 LD L,0
\ 005A C3E700 JP LWRD ?0015
\ 005D ?0006:
54
55 if( (nFileSector != ViewFileStructPoint->BufSector)||(nFileSector==0) )
\ 005D FD6E0E LD L,(IY+14)
\ 0060 FD660F LD H,(IY+15)
\ 0063 A7 AND A
\ 0064 ED42 SBC HL,BC
\ 0066 2004 JR NZ,?0009
\ 0068 79 LD A,C
\ 0069 B0 OR B
\ 006A 2079 JR NZ,?0008
\ 006C ?0009:
\ 006C ?0010:
\ 006C ?0007:
56 {
57 ViewFileStructPoint->BufSector = nFileSector;
\ 006C FD710E LD (IY+14),C
\ 006F FD700F LD (IY+15),B
58
59 for( i=0; i<(BUFF_ONE_ROW); i++ )
\ 0072 DD36FC00 LD (IX-4),0
\ 0076 ?0012:
\ 0076 DD7EFC LD A,(IX-4)
\ 0079 FE14 CP 20
\ 007B 3037 JR NC,?0011
\ 007D ?0013:
60 {
61 // 保留尾部数据到 bufPrev, 保留头部数据到 bufNext
62 ViewFileStructPoint->bufPrev[i] = ViewFileStructPoint->bufFile[ FILE_SECTOR-(BUFF_ONE_ROW)+i ];
\ 007D 4F LD C,A
\ 007E 0600 LD B,0
\ 0080 FDE5 PUSH IY
\ 0082 E1 POP HL
\ 0083 09 ADD HL,BC
\ 0084 011302 LD BC,531
\ 0087 09 ADD HL,BC
\ 0088 46 LD B,(HL)
\ 0089 C5 PUSH BC
\ 008A 4F LD C,A
\ 008B 0600 LD B,0
\ 008D FDE5 PUSH IY
\ 008F E1 POP HL
\ 0090 09 ADD HL,BC
\ 0091 0E13 LD C,19
\ 0093 09 ADD HL,BC
\ 0094 C1 POP BC
\ 0095 70 LD (HL),B
63 ViewFileStructPoint->bufNext[i] = ViewFileStructPoint->bufFile[ i ];
\ 0096 4F LD C,A
\ 0097 0600 LD B,0
\ 0099 FDE5 PUSH IY
\ 009B E1 POP HL
\ 009C 09 ADD HL,BC
\ 009D 0E27 LD C,39
\ 009F 09 ADD HL,BC
\ 00A0 46 LD B,(HL)
\ 00A1 C5 PUSH BC
\ 00A2 4F LD C,A
\ 00A3 0600 LD B,0
\ 00A5 FDE5 PUSH IY
\ 00A7 E1 POP HL
\ 00A8 09 ADD HL,BC
\ 00A9 012702 LD BC,551
\ 00AC 09 ADD HL,BC
\ 00AD C1 POP BC
\ 00AE 70 LD (HL),B
\ 00AF DD34FC INC (IX-4)
\ 00B2 18C2 JR ?0012
\ 00B4 ?0011:
64 }
65 // 读一个扇区到 ViewFileStructPoint->bufFile
66 CLEAR_WATCHDOG(); //清WATCH DOG
\ 00B4 DB4E IN A,(78)
\ 00B6 CBDF SET 3,A
\ 00B8 D34E OUT (78),A
67 FS_FSeek( ViewFileStructPoint->BufSector, SEEK_SET, ViewFileStructPoint->FileHandle );
\ 00BA FD6E00 LD L,(IY+0)
\ 00BD FD6601 LD H,(IY+1)
\ 00C0 E5 PUSH HL
\ 00C1 0E00 LD C,0
\ 00C3 C5 PUSH BC
\ 00C4 FD5E0E LD E,(IY+14)
\ 00C7 FD560F LD D,(IY+15)
\ 00CA 41 LD B,C
\ 00CB CD0000 CALL LWRD FS_FSeek
\ 00CE E1 POP HL
\ 00CF E1 POP HL
68 FS_FRead( (byte*)ViewFileStructPoint->bufFile, 1, ViewFileStructPoint->FileHandle );
\ 00D0 FD6E00 LD L,(IY+0)
\ 00D3 FD6601 LD H,(IY+1)
\ 00D6 E5 PUSH HL
\ 00D7 0E01 LD C,1
\ 00D9 212700 LD HL,39
\ 00DC FDE5 PUSH IY
\ 00DE D1 POP DE
\ 00DF 19 ADD HL,DE
\ 00E0 EB EX DE,HL
\ 00E1 CD0000 CALL LWRD FS_FRead
\ 00E4 E1 POP HL
\ 00E5 ?0008:
69 }
70 return TRUE;
\ 00E5 2E01 LD L,1
71 }
\ 00E7 ?0015:
\ 00E7 DDF9 LD SP,IX
\ 00E9 DDE1 POP IX
\ 00EB FDE1 POP IY
\ 00ED C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00F0 read_buff:
72
73 //////////////////////////////////////////////////
74 //根据给定的文件内地址读数据到bufPrev,bufFile和bufPrev中,并返回当前显示数据在buffer中的位置
75 byte* read_buff(STRUCT_VIEW_FILE *ViewFileStructPoint, long OA_LongAddr, unsigned short ReadDataLength )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -