⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic_fn.lst

📁 calculator code ,use toshibaor nec LSI
💻 LST
📖 第 1 页 / 共 5 页
字号:
                                 +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 + -