📄 main.ls
字号:
3820 01a2 4a dec a
3821 01a3 2707 jreq L7232
3822 01a5 L1432:
3825 01a5 1e01 ldw x,(OFST+1,sp)
3826 01a7 a630 ld a,#48
3827 01a9 f7 ld (x),a
3828 01aa 2077 jra L1042
3829 01ac L7232:
3830 ; 94 *str = (dec / 10000 + '0');
3832 01ac 1e05 ldw x,(OFST+5,sp)
3833 01ae 90ae2710 ldw y,#10000
3834 01b2 65 divw x,y
3835 01b3 1c0030 addw x,#48
3836 01b6 1601 ldw y,(OFST+1,sp)
3837 01b8 01 rrwa x,a
3838 01b9 90f7 ld (y),a
3839 01bb 02 rlwa x,a
3840 ; 95 dec %= 10000;
3842 01bc 1e05 ldw x,(OFST+5,sp)
3843 01be 90ae2710 ldw y,#10000
3844 01c2 65 divw x,y
3845 01c3 51 exgw x,y
3846 01c4 1f05 ldw (OFST+5,sp),x
3847 ; 96 break;
3849 01c6 205b jra L1042
3850 01c8 L1332:
3851 ; 100 *str = (dec / 1000 + '0');
3853 01c8 1e05 ldw x,(OFST+5,sp)
3854 01ca 90ae03e8 ldw y,#1000
3855 01ce 65 divw x,y
3856 01cf 1c0030 addw x,#48
3857 01d2 1601 ldw y,(OFST+1,sp)
3858 01d4 01 rrwa x,a
3859 01d5 90f7 ld (y),a
3860 01d7 02 rlwa x,a
3861 ; 101 dec %= 1000;
3863 01d8 1e05 ldw x,(OFST+5,sp)
3864 01da 90ae03e8 ldw y,#1000
3865 01de 65 divw x,y
3866 01df 51 exgw x,y
3867 01e0 1f05 ldw (OFST+5,sp),x
3868 ; 102 break;
3870 01e2 203f jra L1042
3871 01e4 L3332:
3872 ; 106 *str = (dec/100+'0');
3874 01e4 1e05 ldw x,(OFST+5,sp)
3875 01e6 90ae0064 ldw y,#100
3876 01ea 65 divw x,y
3877 01eb 1c0030 addw x,#48
3878 01ee 1601 ldw y,(OFST+1,sp)
3879 01f0 01 rrwa x,a
3880 01f1 90f7 ld (y),a
3881 01f3 02 rlwa x,a
3882 ; 107 dec %= 100;
3884 01f4 1e05 ldw x,(OFST+5,sp)
3885 01f6 90ae0064 ldw y,#100
3886 01fa 65 divw x,y
3887 01fb 51 exgw x,y
3888 01fc 1f05 ldw (OFST+5,sp),x
3889 ; 108 break;
3891 01fe 2023 jra L1042
3892 0200 L5332:
3893 ; 112 *str = (dec/10+'0');
3895 0200 1e05 ldw x,(OFST+5,sp)
3896 0202 90ae000a ldw y,#10
3897 0206 65 divw x,y
3898 0207 1c0030 addw x,#48
3899 020a 1601 ldw y,(OFST+1,sp)
3900 020c 01 rrwa x,a
3901 020d 90f7 ld (y),a
3902 020f 02 rlwa x,a
3903 ; 113 dec %= 10;
3905 0210 1e05 ldw x,(OFST+5,sp)
3906 0212 90ae000a ldw y,#10
3907 0216 65 divw x,y
3908 0217 51 exgw x,y
3909 0218 1f05 ldw (OFST+5,sp),x
3910 ; 114 break;
3912 021a 2007 jra L1042
3913 021c L7332:
3914 ; 118 *str = (dec+'0');
3916 021c 7b06 ld a,(OFST+6,sp)
3917 021e ab30 add a,#48
3918 0220 1e01 ldw x,(OFST+1,sp)
3919 0222 f7 ld (x),a
3920 ; 119 break;
3922 0223 L1042:
3923 ; 123 width--;
3925 0223 0a07 dec (OFST+7,sp)
3926 ; 124 str++;
3928 0225 1e01 ldw x,(OFST+1,sp)
3929 0227 1c0001 addw x,#1
3930 022a 1f01 ldw (OFST+1,sp),x
3931 022c L3732:
3932 ; 88 while(width)
3934 022c 0d07 tnz (OFST+7,sp)
3935 022e 2703 jreq L24
3936 0230 cc0191 jp L1732
3937 0233 L24:
3938 ; 126 }
3941 0233 85 popw x
3942 0234 81 ret
4004 ; 128 void hexToAscii(u8* str,u16 hex,u8 width)
4004 ; 129 {
4005 switch .text
4006 0235 _hexToAscii:
4008 0235 89 pushw x
4009 0236 89 pushw x
4010 00000002 OFST: set 2
4013 0237 acf102f1 jpf L1542
4014 023b L7442:
4015 ; 133 switch(width)
4017 023b 7b09 ld a,(OFST+7,sp)
4019 ; 163 default: *str = '0';
4020 023d 4a dec a
4021 023e 2603 jrne L05
4022 0240 cc02c5 jp L1142
4023 0243 L05:
4024 0243 4a dec a
4025 0244 2758 jreq L7042
4026 0246 4a dec a
4027 0247 2730 jreq L5042
4028 0249 4a dec a
4029 024a 2709 jreq L3042
4030 024c L3142:
4033 024c 1e03 ldw x,(OFST+1,sp)
4034 024e a630 ld a,#48
4035 0250 f7 ld (x),a
4036 0251 ace802e8 jpf L7542
4037 0255 L3042:
4038 ; 137 tmp = (hex >> 12);
4040 0255 1e07 ldw x,(OFST+5,sp)
4041 0257 01 rrwa x,a
4042 0258 4f clr a
4043 0259 41 exg a,xl
4044 025a 4e swap a
4045 025b a40f and a,#15
4046 025d 02 rlwa x,a
4047 025e 1f01 ldw (OFST-1,sp),x
4048 ; 138 if(tmp > 9) *str = tmp + ('A' - 10);
4050 0260 1e01 ldw x,(OFST-1,sp)
4051 0262 a3000a cpw x,#10
4052 0265 2509 jrult L1642
4055 0267 7b02 ld a,(OFST+0,sp)
4056 0269 ab37 add a,#55
4057 026b 1e03 ldw x,(OFST+1,sp)
4058 026d f7 ld (x),a
4060 026e 2078 jra L7542
4061 0270 L1642:
4062 ; 139 else *str = tmp + '0';
4064 0270 7b02 ld a,(OFST+0,sp)
4065 0272 ab30 add a,#48
4066 0274 1e03 ldw x,(OFST+1,sp)
4067 0276 f7 ld (x),a
4068 0277 206f jra L7542
4069 0279 L5042:
4070 ; 144 tmp = (hex >> 8) & 0x000F;
4072 0279 1e07 ldw x,(OFST+5,sp)
4073 027b 4f clr a
4074 027c 01 rrwa x,a
4075 027d 01 rrwa x,a
4076 027e a40f and a,#15
4077 0280 5f clrw x
4078 0281 02 rlwa x,a
4079 0282 1f01 ldw (OFST-1,sp),x
4080 0284 01 rrwa x,a
4081 ; 145 if(tmp > 9) *str = tmp + ('A' - 10);
4083 0285 1e01 ldw x,(OFST-1,sp)
4084 0287 a3000a cpw x,#10
4085 028a 2509 jrult L5642
4088 028c 7b02 ld a,(OFST+0,sp)
4089 028e ab37 add a,#55
4090 0290 1e03 ldw x,(OFST+1,sp)
4091 0292 f7 ld (x),a
4093 0293 2053 jra L7542
4094 0295 L5642:
4095 ; 146 else *str = tmp + '0';
4097 0295 7b02 ld a,(OFST+0,sp)
4098 0297 ab30 add a,#48
4099 0299 1e03 ldw x,(OFST+1,sp)
4100 029b f7 ld (x),a
4101 029c 204a jra L7542
4102 029e L7042:
4103 ; 151 tmp = (hex >> 4) & 0x000F;
4105 029e 1e07 ldw x,(OFST+5,sp)
4106 02a0 54 srlw x
4107 02a1 54 srlw x
4108 02a2 54 srlw x
4109 02a3 54 srlw x
4110 02a4 01 rrwa x,a
4111 02a5 a40f and a,#15
4112 02a7 5f clrw x
4113 02a8 5f clrw x
4114 02a9 97 ld xl,a
4115 02aa 1f01 ldw (OFST-1,sp),x
4116 ; 152 if(tmp > 9) *str = tmp + ('A' - 10);
4118 02ac 1e01 ldw x,(OFST-1,sp)
4119 02ae a3000a cpw x,#10
4120 02b1 2509 jrult L1742
4123 02b3 7b02 ld a,(OFST+0,sp)
4124 02b5 ab37 add a,#55
4125 02b7 1e03 ldw x,(OFST+1,sp)
4126 02b9 f7 ld (x),a
4128 02ba 202c jra L7542
4129 02bc L1742:
4130 ; 153 else *str = tmp + '0';
4132 02bc 7b02 ld a,(OFST+0,sp)
4133 02be ab30 add a,#48
4134 02c0 1e03 ldw x,(OFST+1,sp)
4135 02c2 f7 ld (x),a
4136 02c3 2023 jra L7542
4137 02c5 L1142:
4138 ; 158 tmp = hex & 0x000F;
4140 02c5 7b07 ld a,(OFST+5,sp)
4141 02c7 97 ld xl,a
4142 02c8 7b08 ld a,(OFST+6,sp)
4143 02ca a40f and a,#15
4144 02cc 5f clrw x
4145 02cd 02 rlwa x,a
4146 02ce 1f01 ldw (OFST-1,sp),x
4147 02d0 01 rrwa x,a
4148 ; 159 if(tmp > 9) *str = tmp + ('A' - 10);
4150 02d1 1e01 ldw x,(OFST-1,sp)
4151 02d3 a3000a cpw x,#10
4152 02d6 2509 jrult L5742
4155 02d8 7b02 ld a,(OFST+0,sp)
4156 02da ab37 add a,#55
4157 02dc 1e03 ldw x,(OFST+1,sp)
4158 02de f7 ld (x),a
4160 02df 2007 jra L7542
4161 02e1 L5742:
4162 ; 160 else *str = tmp + '0';
4164 02e1 7b02 ld a,(OFST+0,sp)
4165 02e3 ab30 add a,#48
4166 02e5 1e03 ldw x,(OFST+1,sp)
4167 02e7 f7 ld (x),a
4168 02e8 L7542:
4169 ; 165 width--;
4171 02e8 0a09 dec (OFST+7,sp)
4172 ; 166 str++;
4174 02ea 1e03 ldw x,(OFST+1,sp)
4175 02ec 1c0001 addw x,#1
4176 02ef 1f03 ldw (OFST+1,sp),x
4177 02f1 L1542:
4178 ; 131 while(width)
4180 02f1 0d09 tnz (OFST+7,sp)
4181 02f3 2703 jreq L25
4182 02f5 cc023b jp L7442
4183 02f8 L25:
4184 ; 168 }
4187 02f8 5b04 addw sp,#4
4188 02fa 81 ret
4281 ; 170 void showLine(const u8 x,const u8 y,u8* lcd_stack,char * str,...)
4281 ; 171 {
4282 switch .text
4283 02fb _showLine:
4285 02fb 89 pushw x
4286 02fc 5204 subw sp,#4
4287 00000004 OFST: set 4
4290 ; 172 u8 coordinate = 16 * y + x;
4292 02fe 9f ld a,xl
4293 02ff 97 ld xl,a
4294 0300 a610 ld a,#16
4295 0302 42 mul x,a
4296 0303 9f ld a,xl
4297 0304 1b05 add a,(OFST+1,sp)
4298 0306 6b04 ld (OFST+0,sp),a
4299 ; 175 va_start(marker,str); // Initialize variable arguments.
4301 0308 96 ldw x,sp
4302 0309 1c000d addw x,#OFST+9
4303 030c 1f02 ldw (OFST-2,sp),x
4304 ; 176 for(i=0;i<64;i++)
4306 030e 0f01 clr (OFST-3,sp)
4307 0310 L7452:
4310 0310 0c01 inc (OFST-3,sp)
4313 0312 7b01 ld a,(OFST-3,sp)
4314 0314 a140 cp a,#64
4315 0316 25f8 jrult L7452
4317 0318 ac260426 jpf L7552
4318 031c L5552:
4319 ; 182 if(coordinate > 64) break; //防止堆栈溢出
4321 031c 7b04 ld a,(OFST+0,sp)
4322 031e a141 cp a,#65
4323 0320 2503 jrult L3652
4325 0322 L1652:
4326 ; 217 va_end( marker ); // Reset variable arguments.
4328 ; 218 }
4331 0322 5b06 addw sp,#6
4332 0324 81 ret
4333 0325 L3652:
4334 ; 184 if(*str == '\\')
4336 0325 1e0b ldw x,(OFST+7,sp)
4337 0327 f6 ld a,(x)
4338 0328 a15c cp a,#92
4339 032a 261b jrne L5652
4340 ; 186 str++;
4342 032c 1e0b ldw x,(OFST+7,sp)
4343 032e 1c0001 addw x,#1
4344 0331 1f0b ldw (OFST+7,sp),x
4345 ; 187 lcd_stack[coordinate] = *str;
4347 0333 7b09 ld a,(OFST+5,sp)
4348 0335 97 ld xl,a
4349 0336 7b0a ld a,(OFST+6,sp)
4350 0338 1b04 add a,(OFST+0,sp)
4351 033a 2401 jrnc L65
4352 033c 5c incw x
4353 033d L65:
4354 033d 02 rlwa x,a
4355 033e 160b ldw y,(OFST+7,sp)
4356 0340 90f6 ld a,(y)
4357 0342 f7 ld (x),a
4359 0343 ac1d041d jpf L7652
4360 0347 L5652:
4361 ; 189 else if(*str == '%')
4363 0347 1e0b ldw x,(OFST+7,sp)
4364 0349 f6 ld a,(x)
4365 034a a125 cp a,#37
4366 034c 2703 jreq L07
4367 034e cc040d jp L1752
4368 0351 L07:
4369 ; 191 str++;
4371 0351 1e0b ldw x,(OFST+7,sp)
4372 0353 1c0001 addw x,#1
4373 0356 1f0b ldw (OFST+7,sp),x
4374 ; 192 if (*str == 'd' || *str == 'D')
4376 0358 1e0b ldw x,(OFST+7,sp)
4377 035a f6 ld a,(x)
4378 035b a164 cp a,#100
4379 035d 2707 jreq L5752
4381 035f 1e0b ldw x,(OFST+7,sp)
4382 0361 f6 ld a,(x)
4383 0362 a144 cp a,#68
4384 0364 2637 jrne L3752
4385 0366 L5752:
4386 ; 194 str++;
4388 0366 1e0b ldw x,(OFST+7,sp)
4389 0368 1c0001 addw x,#1
4390 036b 1f0b ldw (OFST+7,sp),x
4391 ; 195 decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
4393 036d 1e0b ldw x,(OFST+7,sp)
4394 036f f6 ld a,(x)
4395 0370 a030 sub a,#48
4396 0372 88 push a
4397 0373 1e03 ldw x,(OFST-1,sp)
4398 0375 1c0002 addw x,#2
4399 0378 1f03 ldw (OFST-1,sp),x
4400 037a 1e03 ldw x,(OFST-1,sp)
4401 037c 5a decw x
4402 037d 5a decw x
4403 037e fe ldw x,(x)
4404 037f 89 pushw x
4405 0380 7b0c ld a,(OFST+8,sp)
4406 0382 97 ld xl,a
4407 0383 7b0d ld a,(OFST+9,sp)
4408 0385 1b07 add a,(OFST+3,sp)
4409 0387 2401 jrnc L06
4410 0389 5c incw x
4411 038a L06:
4412 038a 02 rlwa x,a
4413 038b cd018c call _decToAscii
4415 038e 5b03 addw sp,#3
4416 ; 196 coordinate += (*str-'0'-1);
4418 0390 1e0b ldw x,(OFST+7,sp)
4419 0392 f6 ld a,(x)
4420 0393 a031 sub a,#49
4421 0395 1b04 add a,(OFST+0,sp)
4422 0397 6b04 ld (OFST+0,sp),a
4424 0399 ac1d041d jpf L7652
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -