📄 ui_scroll2.lst
字号:
58 }
59 else
\ 0075 ?0010:
60 {//ASCII
61 code = *tmpstrpt1;
\ 0075 ?0011:
\ 0075 ?0008:
62 }
63 }
64 else if (*tmpstrpt1 >= FirstSectionCode)
\ 0075 FEA1 CP 161
\ 0077 380B JR C,?0014
\ 0079 ?0013:
65 {//汉字
66 code = *(int *)tmpstrpt1;
\ 0079 ?0023:
\ 0079 DD6E00 LD L,(IX+0)
\ 007C DD6601 LD H,(IX+1)
\ 007F E5 PUSH HL
\ 0080 FDE1 POP IY
67 }
68 else
\ 0082 1808 JR ?0015
\ 0084 ?0014:
69 {//ASCII
70 code = *tmpstrpt1;
\ 0084 DD4E00 LD C,(IX+0)
\ 0087 0600 LD B,0
\ 0089 C5 PUSH BC
\ 008A FDE1 POP IY
\ 008C ?0015:
\ 008C ?0012:
\ 008C ?0006:
71 }
72 return code;
\ 008C FDE5 PUSH IY
\ 008E E1 POP HL
73 }
\ 008F F1 POP AF
\ 0090 DDE1 POP IX
\ 0092 FDE1 POP IY
\ 0094 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0097 ScrollInit_sub:
74
75 void ScrollInit_sub(char *str,char language)
76 {
\ 0097 FDE5 PUSH IY
\ 0099 DDE5 PUSH IX
\ 009B C5 PUSH BC
\ 009C F5 PUSH AF
\ 009D F5 PUSH AF
\ 009E D5 PUSH DE
\ 009F DDE1 POP IX
77 int code;
78 ///bool result;
79 region_t kregion;//余下部分区域
80
81
82 scroll_cnt = 0;
\ 00A1 AF XOR A
\ 00A2 320000 LD (scroll_cnt),A
83
84 SetTextPos(scrollregionx_def, scrollregiony_def);
\ 00A5 0E2D LD C,45
\ 00A7 1E30 LD E,48
\ 00A9 CD0000 CALL LWRD SetTextPos
85 strhead_pt = str_pt = str;
\ 00AC DDE5 PUSH IX
\ 00AE E1 POP HL
\ 00AF 220000 LD (str_pt),HL
\ 00B2 DD220000 LD (strhead_pt),IX
86
87 str_pt = PutS(str_pt, -1);
\ 00B6 0EFF LD C,255
\ 00B8 EB EX DE,HL
\ 00B9 CD0000 CALL LWRD PutS
\ 00BC 220000 LD (str_pt),HL
88
89 if (GetOutPutErr() == RESULT_PUTCHAR_X_ERR)
\ 00BF CD0000 CALL LWRD GetOutPutErr
\ 00C2 3D DEC A
\ 00C3 204B JR NZ,?0017
\ 00C5 ?0016:
90 {//x超限
91
92 code = ReadCode_sub(str_pt, language);
\ 00C5 210400 LD HL,4
\ 00C8 39 ADD HL,SP
\ 00C9 4E LD C,(HL)
\ 00CA ED5B0000 LD DE,(str_pt)
\ 00CE 3E00 LD A,BYTE3 ReadCode_sub
\ 00D0 215200 LD HL,LWRD ReadCode_sub
\ 00D3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00D6 E5 PUSH HL
\ 00D7 FDE1 POP IY
93
94 GetTextPos(&kregion.x, &kregion.y);
\ 00D9 210000 LD HL,0
\ 00DC 39 ADD HL,SP
\ 00DD 010100 LD BC,1
\ 00E0 09 ADD HL,BC
\ 00E1 4D LD C,L
\ 00E2 44 LD B,H
\ 00E3 2B DEC HL
\ 00E4 EB EX DE,HL
\ 00E5 CD0000 CALL LWRD GetTextPos
95
96 kregion.width = scrollregionw_def+scrollregionx_def - kregion.x;
\ 00E8 210200 LD HL,2
\ 00EB 39 ADD HL,SP
\ 00EC E5 PUSH HL
\ 00ED 2B DEC HL
\ 00EE 2B DEC HL
\ 00EF 3EB0 LD A,176
\ 00F1 96 SUB (HL)
\ 00F2 E1 POP HL
\ 00F3 77 LD (HL),A
97 kregion.height = scrollregionh_def;
\ 00F4 210300 LD HL,3
\ 00F7 39 ADD HL,SP
\ 00F8 3610 LD (HL),16
98
99 //输出最后一个字
100 ///result = CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt);
101 CharOutRect(code, *(str_pt+1), &kregion, 0);
\ 00FA 0E00 LD C,0
\ 00FC C5 PUSH BC
\ 00FD 2B DEC HL
\ 00FE 2B DEC HL
\ 00FF 2B DEC HL
\ 0100 E5 PUSH HL
\ 0101 2A0000 LD HL,(str_pt)
\ 0104 23 INC HL
\ 0105 4E LD C,(HL)
\ 0106 0600 LD B,0
\ 0108 FDE5 PUSH IY
\ 010A D1 POP DE
\ 010B CD0000 CALL LWRD CharOutRect
\ 010E E1 POP HL
\ 010F E1 POP HL
\ 0110 ?0017:
102 ///if (!result)
103 ///{
104 /// scroll_cnt = 0;
105 /// str_pt = strhead_pt;
106 /// return;
107 ///}
108 ///scroll_cnt = kregion.width;
109 }
110 str_pt = strhead_pt;
\ 0110 2A0000 LD HL,(strhead_pt)
\ 0113 220000 LD (str_pt),HL
111 scroll_cnt = 0;
\ 0116 AF XOR A
\ 0117 320000 LD (scroll_cnt),A
112 }
\ 011A E1 POP HL
\ 011B E1 POP HL
\ 011C E1 POP HL
\ 011D DDE1 POP IX
\ 011F FDE1 POP IY
\ 0121 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0124 END
Errors: none
Warnings: none
Code size: 292
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -