📄 basic_fn.lst
字号:
+0 664 664 ;V1.21 cmp a,MAX_DIGIT
0000002D 50 +0 665 665 push wa ;V1.21
0000002E 480000 R +0 666 666 ld wa,M14
00000031 E10000FC R +0 667 667 test (M14>>4).a ;bit -reverse-> jump status
00000035 85 +0 668 668 j t,tenkey_x ;if jump status is 1 -> branch
00000036 D0 +0 669 669 pop wa ;V1.21
00000037 670E +0 670 670 cmp a,14 ;V1.21
00000039 FE0000 R +0 671 671 jp tenkey_z ;V1.21
0000003C +0 672 672 tenkey_x: ;V1.21
0000003C 480000 R +0 673 673 ld wa,M10
0000003F E10000FC R +0 674 674 test (M10>>4).a ;bit -reverse-> jump status
00000043 A5 +0 675 675 j f,tenkey_y ;if jump status is 0 -> branch
00000044 D0 +0 676 676 pop wa ;V1.21
00000045 670C +0 677 677 cmp a,12 ;V1.21
00000047 FE0000 R +0 678 678 jp tenkey_z ;V1.21
0000004A +0 679 679 tenkey_y:
0000004A D0 +0 680 680 pop wa ;V1.21
0000004B 670A +0 681 681 cmp a,10 ;V1.21
0000004D +0 682 682 tenkey_z: ;V1.21
0000004D DA18 +0 683 683 j lt,tenkey_01 ;tenkey over flow? no ->
0000004F 1B00 +0 684 684 ld b,0 ;V3.05
00000051 FE0000 R +0 685 685 jp tenkey_01 ;V3.07
00000054 FE0000 R +0 686 686 j no_operation ; over -> ignore current key
00000057 +0 687 687 tenkey_00:
00000057 FD0000 R +0 688 688 call ten_clear
0000005A FD0000 R +0 689 689 call spc_dt ;clear #/D key buffer
0000005D F10000F900 R +0 690 690 ld (DT_CT),0 ;clear #/D data entry counter
00000062 F10000F900 R +0 691 691 ld (DT_DOT_CNT),0 ;V1.06
00000067 +0 692 692 tenkey_01:
00000067 1B00 +0 693 693 ld b,0 ;V3.07
00000069 E1000040 R +0 694 694 ld a,(KEYIN) ;check key code
0000006D 6700 +0 695 695 cmp a,K_ZERO ;0 key?
0000006F D904 +0 696 696 j ne,tenkey_02 ;no ->
00000071 1B00 +0 697 697 ld b,0 ;yes -> set no loop
00000073 FC0E +0 698 698 j tenkey_04
00000075 +0 699 699 tenkey_02:
00000075 670A +0 700 700 cmp a,K_ZERO2 ;00 key?
00000077 D904 +0 701 701 j ne,tenkey_03 ;no ->
00000079 1B01 +0 702 702 ld b,1 ;yes -> set loop 2times
0000007B FC06 +0 703 703 j tenkey_04
0000007D +0 704 704 tenkey_03:
0000007D 670B +0 705 705 cmp a,K_ZERO3
0000007F D921 +0 706 706 j ne,tenkey_06 ;000 key? no ->
00000081 1B02 +0 707 707 ld b,2 ;yes -> set loop 3times
00000083 +0 708 708 tenkey_04:
00000083 F10000F900 R +0 709 709 ld (KEYIN),K_ZERO ;00,000 key yes->over write 0 to key code
00000088 480000 R +0 710 710 ld wa,F_DPIN
0000008B E10000FC R +0 711 711 test (F_DPIN>>4).a ;bit -reverse-> jump status
0000008F DF11 +0 712 712 j f,tenkey_08 ;if jump status is 0 -> branch
00000091 070000 R +0 713 713 cmp (TEN_CT),0 ;is it first zero entry?
00000094 D90C +0 714 714 j ne,tenkey_08 ; no ->
+0 715 715 ;V3.06 cmp (DT_CT),0 ;V1.27
+0 716 716 ;V3.06 j ne,tenkey_19 ;V1.27
+0 717 717
00000096 +0 718 718 tenkey_04x:
00000096 E1000041 R +0 719 719 ld w,(KEYIN) ;V3.10 ;w <- tenkey data
0000009A FD0000 R +0 720 720 call dt_update ;V3.10 ;DT_BUF update for #/D print
0000009D 2B +0 721 721 dec b ;V3.10 ;check loop counter
0000009E B6 +0 722 722 j f,tenkey_04x ;V3.10 ;if b is FFh? yes -> exit
0000009F FE0000 R +0 723 723 jp tenkey_19 ;V3.10
+0 724 724
000000A2 +0 725 725 tenkey_06:
+0 726 726 ;V3.07 ld b,0 ;not 00,000 key -> set no loop
000000A2 +0 727 727 tenkey_08:
000000A2 480000 R +0 728 728 ld wa,M14
000000A5 E10000FC R +0 729 729 test (M14>>4).a ;bit -reverse-> jump status
000000A9 A5 +0 730 730 j f,tenkey_08x ;if jump status is 0 -> branch
000000AA 07000C R +0 731 731 cmp (TEN_CT),12 ;V3.07
000000AD FE0000 R +0 732 732 jp tenkey_09 ;V4.07
000000B0 +0 733 733 tenkey_08x: ;V4.07
000000B0 07000E R +0 734 734 cmp (TEN_CT),14 ;V4.06
000000B3 +0 735 735 tenkey_09: ;V4.06
000000B3 DB20 +0 736 736 j ge,tenkey_10 ;V3.07
000000B5 4B0000 R +0 737 737 ld hl,TENKEY
000000B8 FD0000 R +0 738 738 call stg_sfl47 ;TENKEY left shift by nibble
000000BB 0C00 R +0 739 739 ld a,(TEN_LSD)
000000BD E1000006 R +0 740 740 or a,(KEYIN)
000000C1 0E00 R +0 741 741 ld (TEN_LSD),a
000000C3 E000F0 R +0 742 742 inc (TEN_CT) ;increment tenkey counter
000000C6 E10000F0 R +0 743 743 inc (DT_CHR_CNT) ;V1.06
000000CA 480000 R +0 744 744 ld wa,F_DPIN
000000CD E10000FC R +0 745 745 test (F_DPIN>>4).a ;bit -reverse-> jump status
000000D1 82 +0 746 746 j t,tenkey_10 ;if jump status is 1 -> branch
000000D2 E000F0 R +0 747 747 inc (TEN_DP) ;increment DP counter
000000D5 +0 748 748 tenkey_10:
000000D5 E1000041 R +0 749 749 ld w,(KEYIN) ;w <- tenkey data
000000D9 FD0000 R +0 750 750 call dt_update ;DT_BUF update for #/D print
000000DC +0 751 751 tenkey_11:
000000DC 2B +0 752 752 dec b ;check loop counter
000000DD 82 +0 753 753 j t,tenkey_19 ;if b is FFh? yes -> exit
+0 754 754 ;V3.07 push wa ;V1.21
+0 755 755 ;V3.07 @BBC (M14,tenkey_10x) ;V1.21
+0 756 756 ;V3.07 cmp (TEN_CT),14 ;V1.21
+0 757 757 ;V3.07 jp tenkey_10z ;V1.21
+0 758 758 ;V3.07tenkey_10x: ;V1.21
+0 759 759 ;V3.07 @BBS (M10,tenkey_10y) ;V1.21
+0 760 760 ;V3.07 cmp (TEN_CT),12 ;V1.21
+0 761 761 ;V3.07 jp tenkey_10z ;V1.21
+0 762 762 ;V3.07tenkey_10y: ;V1.21
+0 763 763 ;V3.07 cmp (TEN_CT),10 ;V1.21
+0 764 764 ;V3.07tenkey_10z: ;V1.21
+0 765 765 ;V3.07 pop wa ;V1.21
+0 766 766 ;V3.10 j lt,tenkey_08 ; loop if not tenkey overflow(in case of 00,000 key)
000000DE FE0000 R +0 767 767 jp tenkey_08 ;V3.10
000000E1 +0 768 768 tenkey_19:
000000E1 FE0000 R +0 769 769 j tenkey_end
+0 770 770 ;sub routine for #/D.........................
+0 771 771 ;input: reg.w <- entry data
000000E4 +0 772 772 dt_update:
000000E4 E1000040 R +0 773 773 ld a,(DT_CT)
000000E8 E1000058 R +0 774 774 test (FLG_MODE).0
000000EC 84 +0 775 775 j t,dt_upd3
000000ED 670F +0 776 776 cmp a,MAX_DIGIT_DT ;
000000EF FE0000 R +0 777 777 jp dt_upd4 ;V4.07
000000F2 +0 778 778 dt_upd3: ;V4.07
000000F2 6712 +0 779 779 cmp a,18 ;V4.07
000000F4 +0 780 780 dt_upd4: ;V4.07
000000F4 DB16 +0 781 781 j ge,dt_upd9 ;#/D entry over flow? yes-> doesn't keep current data (just count up DT_CT)
+0 782 782
000000F6 4B0000 R +0 783 783 ld hl,DT_BUF
000000F9 FD0000 R +0 784 784 call stg_sfl49 ;DT_BUF left shift by nibble
+0 785 785
000000FC E1000040 R +0 786 786 ld a,(DT_BUF_LSD)
00000100 E906 +0 787 787 or a,w ;store entry data(reg.w)
00000102 F1000078 R +0 788 788 ld (DT_BUF_LSD),a
00000106 FC00 +0 789 789 j dt_upd8
00000108 +0 790 790 dt_upd5:
+0 791 791 ;V3.01 cmp w,C_DP
+0 792 792 ;V3.01 j eq,dt_upd9 ;in case DP entry? yes-> doesn't count up DT_CT
00000108 +0 793 793 dt_upd8:
00000108 E10000F0 R +0 794 794 inc (DT_CT) ;increment #/D entry counter
0000010C +0 795 795 dt_upd9:
0000010C FA +0 796 796 ret
+0 797 797
+0 798 798 ;===============================================================================
+0 799 799 ; DP
+0 800 800 ;===============================================================================
0000010D +0 801 801 dp_key:
0000010D 480000 R +0 802 802 ld wa,F_TNKEY
00000110 E10000FC R +0 803 803 test (F_TNKEY>>4).a ;bit -reverse-> jump status
00000114 DF12 +0 804 804 j f,dp_key_00 ;if jump status is 0 -> branch
00000116 480000 R +0 805 805 ld wa,F_TNKEY
00000119 E10000F2 R +0 806 806 set (F_TNKEY>>4).a
0000011D 0C00 R +0 807 807 ld a,(TEN_CT)
0000011F D907 +0 808 808 j nz,dp_key_00 ;first DP key entry?(TEN_CT=0)
00000121 FD0000 R +0 809 809 call ten_clear ;yes -> clear TENKEY
+0 810 810 ;V3.12 inc (TEN_CT)
00000124 0C00 R +0 811 811 ld a,(PRE_KEY) ;V1.52
00000126 0E00 R +0 812 812 ld (PRE_KEY_BK),a ;V1.52 this only is used for [IC] after ten key entry
00000128 +0 813 813 dp_key_00:
00000128 070000 R +0 814 814 cmp (TEN_CT),0 ;V3.12
0000012B D903 +0 815 815 j nz,dp_key_01 ;V3.12 ;first DP key entry?(TEN_CT=0)
0000012D E000F0 R +0 816 816 inc (TEN_CT) ;V3.12
00000130 +0 817 817 dp_key_01: ;V3.12
00000130 480000 R +0 818 818 ld wa,F_TNKEY
00000133 E10000F2 R +0 819 819 set (F_TNKEY>>4).a
00000137 480000 R +0 820 820 ld wa,F_DPIN
0000013A E10000F2 R +0 821 821 set (F_DPIN>>4).a
+0 822 822 ;for update #/D entry.............
0000013E E1000040 R +0 823 823 ld a,(DT_CT)
00000142 D903 +0 824 824 j nz,dp_key_02 ;first DP key entry?
00000144 FD0000 R +0 825 825 call spc_dt ;clear #/D key buffer
+0 826 826 ;V3.01 jp dp_key_09 ;V1.07
+0 827 827 ;V1.32 jp dp_key_080 ;V1.32
00000147 +0 828 828 dp_key_02:
+0 829 829 ;V3.01 ld a,(DT_BUF_LSD) ;V1.06
+0 830 830 ;V3.01 and a,0x0f ;V1.06
+0 831 831 ;V3.01 cmp a,C_DP ;V1.06
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -