📄 main.ls
字号:
4429 0283 1e05 ldw x,(OFST+5,sp)
4430 0285 90ae03e8 ldw y,#1000
4431 0289 65 divw x,y
4432 028a 1c0030 addw x,#48
4433 028d 1601 ldw y,(OFST+1,sp)
4434 028f 01 rrwa x,a
4435 0290 90f7 ld (y),a
4436 0292 02 rlwa x,a
4437 ; 101 dec %= 1000;
4439 0293 1e05 ldw x,(OFST+5,sp)
4440 0295 90ae03e8 ldw y,#1000
4441 0299 65 divw x,y
4442 029a 51 exgw x,y
4443 029b 1f05 ldw (OFST+5,sp),x
4444 ; 102 break;
4446 029d 203f jra L7462
4447 029f L1062:
4448 ; 106 *str = (dec/100+'0');
4450 029f 1e05 ldw x,(OFST+5,sp)
4451 02a1 90ae0064 ldw y,#100
4452 02a5 65 divw x,y
4453 02a6 1c0030 addw x,#48
4454 02a9 1601 ldw y,(OFST+1,sp)
4455 02ab 01 rrwa x,a
4456 02ac 90f7 ld (y),a
4457 02ae 02 rlwa x,a
4458 ; 107 dec %= 100;
4460 02af 1e05 ldw x,(OFST+5,sp)
4461 02b1 90ae0064 ldw y,#100
4462 02b5 65 divw x,y
4463 02b6 51 exgw x,y
4464 02b7 1f05 ldw (OFST+5,sp),x
4465 ; 108 break;
4467 02b9 2023 jra L7462
4468 02bb L3062:
4469 ; 112 *str = (dec/10+'0');
4471 02bb 1e05 ldw x,(OFST+5,sp)
4472 02bd 90ae000a ldw y,#10
4473 02c1 65 divw x,y
4474 02c2 1c0030 addw x,#48
4475 02c5 1601 ldw y,(OFST+1,sp)
4476 02c7 01 rrwa x,a
4477 02c8 90f7 ld (y),a
4478 02ca 02 rlwa x,a
4479 ; 113 dec %= 10;
4481 02cb 1e05 ldw x,(OFST+5,sp)
4482 02cd 90ae000a ldw y,#10
4483 02d1 65 divw x,y
4484 02d2 51 exgw x,y
4485 02d3 1f05 ldw (OFST+5,sp),x
4486 ; 114 break;
4488 02d5 2007 jra L7462
4489 02d7 L5062:
4490 ; 118 *str = (dec+'0');
4492 02d7 7b06 ld a,(OFST+6,sp)
4493 02d9 ab30 add a,#48
4494 02db 1e01 ldw x,(OFST+1,sp)
4495 02dd f7 ld (x),a
4496 ; 119 break;
4498 02de L7462:
4499 ; 123 width--;
4501 02de 0a07 dec (OFST+7,sp)
4502 ; 124 str++;
4504 02e0 1e01 ldw x,(OFST+1,sp)
4505 02e2 1c0001 addw x,#1
4506 02e5 1f01 ldw (OFST+1,sp),x
4507 02e7 L1462:
4508 ; 88 while(width)
4510 02e7 0d07 tnz (OFST+7,sp)
4511 02e9 2703 jreq L26
4512 02eb cc024c jp L7362
4513 02ee L26:
4514 ; 126 }
4517 02ee 85 popw x
4518 02ef 81 ret
4580 ; 128 void hexToAscii(u8* str,u16 hex,u8 width)
4580 ; 129 {
4581 switch .text
4582 02f0 _hexToAscii:
4584 02f0 89 pushw x
4585 02f1 89 pushw x
4586 00000002 OFST: set 2
4589 02f2 acac03ac jpf L7172
4590 02f6 L5172:
4591 ; 133 switch(width)
4593 02f6 7b09 ld a,(OFST+7,sp)
4595 ; 163 default: *str = '0';
4596 02f8 4a dec a
4597 02f9 2603 jrne L07
4598 02fb cc0380 jp L7562
4599 02fe L07:
4600 02fe 4a dec a
4601 02ff 2758 jreq L5562
4602 0301 4a dec a
4603 0302 2730 jreq L3562
4604 0304 4a dec a
4605 0305 2709 jreq L1562
4606 0307 L1662:
4609 0307 1e03 ldw x,(OFST+1,sp)
4610 0309 a630 ld a,#48
4611 030b f7 ld (x),a
4612 030c aca303a3 jpf L5272
4613 0310 L1562:
4614 ; 137 tmp = (hex >> 12);
4616 0310 1e07 ldw x,(OFST+5,sp)
4617 0312 01 rrwa x,a
4618 0313 4f clr a
4619 0314 41 exg a,xl
4620 0315 4e swap a
4621 0316 a40f and a,#15
4622 0318 02 rlwa x,a
4623 0319 1f01 ldw (OFST-1,sp),x
4624 ; 138 if(tmp > 9) *str = tmp + ('A' - 10);
4626 031b 1e01 ldw x,(OFST-1,sp)
4627 031d a3000a cpw x,#10
4628 0320 2509 jrult L7272
4631 0322 7b02 ld a,(OFST+0,sp)
4632 0324 ab37 add a,#55
4633 0326 1e03 ldw x,(OFST+1,sp)
4634 0328 f7 ld (x),a
4636 0329 2078 jra L5272
4637 032b L7272:
4638 ; 139 else *str = tmp + '0';
4640 032b 7b02 ld a,(OFST+0,sp)
4641 032d ab30 add a,#48
4642 032f 1e03 ldw x,(OFST+1,sp)
4643 0331 f7 ld (x),a
4644 0332 206f jra L5272
4645 0334 L3562:
4646 ; 144 tmp = (hex >> 8) & 0x000F;
4648 0334 1e07 ldw x,(OFST+5,sp)
4649 0336 4f clr a
4650 0337 01 rrwa x,a
4651 0338 01 rrwa x,a
4652 0339 a40f and a,#15
4653 033b 5f clrw x
4654 033c 02 rlwa x,a
4655 033d 1f01 ldw (OFST-1,sp),x
4656 033f 01 rrwa x,a
4657 ; 145 if(tmp > 9) *str = tmp + ('A' - 10);
4659 0340 1e01 ldw x,(OFST-1,sp)
4660 0342 a3000a cpw x,#10
4661 0345 2509 jrult L3372
4664 0347 7b02 ld a,(OFST+0,sp)
4665 0349 ab37 add a,#55
4666 034b 1e03 ldw x,(OFST+1,sp)
4667 034d f7 ld (x),a
4669 034e 2053 jra L5272
4670 0350 L3372:
4671 ; 146 else *str = tmp + '0';
4673 0350 7b02 ld a,(OFST+0,sp)
4674 0352 ab30 add a,#48
4675 0354 1e03 ldw x,(OFST+1,sp)
4676 0356 f7 ld (x),a
4677 0357 204a jra L5272
4678 0359 L5562:
4679 ; 151 tmp = (hex >> 4) & 0x000F;
4681 0359 1e07 ldw x,(OFST+5,sp)
4682 035b 54 srlw x
4683 035c 54 srlw x
4684 035d 54 srlw x
4685 035e 54 srlw x
4686 035f 01 rrwa x,a
4687 0360 a40f and a,#15
4688 0362 5f clrw x
4689 0363 5f clrw x
4690 0364 97 ld xl,a
4691 0365 1f01 ldw (OFST-1,sp),x
4692 ; 152 if(tmp > 9) *str = tmp + ('A' - 10);
4694 0367 1e01 ldw x,(OFST-1,sp)
4695 0369 a3000a cpw x,#10
4696 036c 2509 jrult L7372
4699 036e 7b02 ld a,(OFST+0,sp)
4700 0370 ab37 add a,#55
4701 0372 1e03 ldw x,(OFST+1,sp)
4702 0374 f7 ld (x),a
4704 0375 202c jra L5272
4705 0377 L7372:
4706 ; 153 else *str = tmp + '0';
4708 0377 7b02 ld a,(OFST+0,sp)
4709 0379 ab30 add a,#48
4710 037b 1e03 ldw x,(OFST+1,sp)
4711 037d f7 ld (x),a
4712 037e 2023 jra L5272
4713 0380 L7562:
4714 ; 158 tmp = hex & 0x000F;
4716 0380 7b07 ld a,(OFST+5,sp)
4717 0382 97 ld xl,a
4718 0383 7b08 ld a,(OFST+6,sp)
4719 0385 a40f and a,#15
4720 0387 5f clrw x
4721 0388 02 rlwa x,a
4722 0389 1f01 ldw (OFST-1,sp),x
4723 038b 01 rrwa x,a
4724 ; 159 if(tmp > 9) *str = tmp + ('A' - 10);
4726 038c 1e01 ldw x,(OFST-1,sp)
4727 038e a3000a cpw x,#10
4728 0391 2509 jrult L3472
4731 0393 7b02 ld a,(OFST+0,sp)
4732 0395 ab37 add a,#55
4733 0397 1e03 ldw x,(OFST+1,sp)
4734 0399 f7 ld (x),a
4736 039a 2007 jra L5272
4737 039c L3472:
4738 ; 160 else *str = tmp + '0';
4740 039c 7b02 ld a,(OFST+0,sp)
4741 039e ab30 add a,#48
4742 03a0 1e03 ldw x,(OFST+1,sp)
4743 03a2 f7 ld (x),a
4744 03a3 L5272:
4745 ; 165 width--;
4747 03a3 0a09 dec (OFST+7,sp)
4748 ; 166 str++;
4750 03a5 1e03 ldw x,(OFST+1,sp)
4751 03a7 1c0001 addw x,#1
4752 03aa 1f03 ldw (OFST+1,sp),x
4753 03ac L7172:
4754 ; 131 while(width)
4756 03ac 0d09 tnz (OFST+7,sp)
4757 03ae 2703 jreq L27
4758 03b0 cc02f6 jp L5172
4759 03b3 L27:
4760 ; 168 }
4763 03b3 5b04 addw sp,#4
4764 03b5 81 ret
4857 ; 170 void showLine(const u8 x,const u8 y,u8* lcd_stack,char * str,...)
4857 ; 171 {
4858 switch .text
4859 03b6 _showLine:
4861 03b6 89 pushw x
4862 03b7 5204 subw sp,#4
4863 00000004 OFST: set 4
4866 ; 172 u8 coordinate = 16 * y + x;
4868 03b9 9f ld a,xl
4869 03ba 97 ld xl,a
4870 03bb a610 ld a,#16
4871 03bd 42 mul x,a
4872 03be 9f ld a,xl
4873 03bf 1b05 add a,(OFST+1,sp)
4874 03c1 6b04 ld (OFST+0,sp),a
4875 ; 175 va_start(marker,str); // Initialize variable arguments.
4877 03c3 96 ldw x,sp
4878 03c4 1c000d addw x,#OFST+9
4879 03c7 1f02 ldw (OFST-2,sp),x
4880 ; 176 for(i=0;i<64;i++)
4882 03c9 0f01 clr (OFST-3,sp)
4883 03cb L5103:
4886 03cb 0c01 inc (OFST-3,sp)
4889 03cd 7b01 ld a,(OFST-3,sp)
4890 03cf a140 cp a,#64
4891 03d1 25f8 jrult L5103
4893 03d3 ace104e1 jpf L5203
4894 03d7 L3203:
4895 ; 182 if(coordinate > 64) break; //防止堆栈溢出
4897 03d7 7b04 ld a,(OFST+0,sp)
4898 03d9 a141 cp a,#65
4899 03db 2503 jrult L1303
4901 03dd L7203:
4902 ; 217 va_end( marker ); // Reset variable arguments.
4904 ; 218 }
4907 03dd 5b06 addw sp,#6
4908 03df 81 ret
4909 03e0 L1303:
4910 ; 184 if(*str == '\\')
4912 03e0 1e0b ldw x,(OFST+7,sp)
4913 03e2 f6 ld a,(x)
4914 03e3 a15c cp a,#92
4915 03e5 261b jrne L3303
4916 ; 186 str++;
4918 03e7 1e0b ldw x,(OFST+7,sp)
4919 03e9 1c0001 addw x,#1
4920 03ec 1f0b ldw (OFST+7,sp),x
4921 ; 187 lcd_stack[coordinate] = *str;
4923 03ee 7b09 ld a,(OFST+5,sp)
4924 03f0 97 ld xl,a
4925 03f1 7b0a ld a,(OFST+6,sp)
4926 03f3 1b04 add a,(OFST+0,sp)
4927 03f5 2401 jrnc L67
4928 03f7 5c incw x
4929 03f8 L67:
4930 03f8 02 rlwa x,a
4931 03f9 160b ldw y,(OFST+7,sp)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -