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

📄 display.lst

📁 calculator code ,use toshibaor nec LSI
💻 LST
📖 第 1 页 / 共 5 页
字号:
000000D1  00                     +0  805    805 		db	0y00000000	; 	2bh
000000D2  00                     +0  806    806 		db	0y00000000	; 	2ch
                                 +0  807    807 ;V4.01		db	0y00000000	; 	2dh
                                 +0  808    808 ;V4.01		db	0y00000000	; 	2eh
                                 +0  809    809 ;V4.01		db	0y00000000	; 	2fh
                                 +0  810    810 ;V4.01		db	0y00000000	; 	30h
                                 +0  811    811 ;V4.01		db	0y00000000	; 	31h
                                 +0  812    812 ;V4.01		db	0y00000000	; 	32h
                                 +0  813    813 ;V4.01		db	0y00000000	; 	33h
                                 +0  814    814 ;V4.01		db	0y00000000	; 	34h
                                 +0  815    815 ;V4.01		db	0y00000000	; 	35h
                                 +0  816    816 ;V4.01		db	0y00000000	; 	36h
                                 +0  817    817 ;V4.01		db	0y00000000	; 	37h
                                 +0  818    818 ;V4.01		db	0y00000000	; 	38h
                                 +0  819    819 ;V4.01		db	0y00000000	; 	39h
                                 +0  820    820 ;V4.01		db	0y00000000	; 	3ah
                                 +0  821    821 ;V4.01		db	0y00000000	; 	3bh
                                 +0  822    822 ;V4.01		db	0y00000000	; 	3ch
                                 +0  823    823 ;V4.01		db	0y00000000	; 	3dh
                                 +0  824    824 ;V4.01		db	0y00000000	; 	3eh
                                 +0  825    825 ;V4.01		db	0y00000000	; 	3fh
                                 +0  826    826 ;V4.01		db	0y00000000	; 	40h
000000D3                         +0  827    827 tbl_vft_ini:
                                 +0  828    828 ;			 V7------V0
000000D3  01                     +0  829    829 		db	0y00000001	
000000D4  02                     +0  830    830 		db	0y00000010	
000000D5  04                     +0  831    831 		db	0y00000100	
000000D6  08                     +0  832    832 		db	0y00001000		
000000D7  10                     +0  833    833 		db	0y00010000	
000000D8  20                     +0  834    834 		db	0y00100000	
000000D9  40                     +0  835    835 		db	0y01000000	
000000DA  80                     +0  836    836 		db	0y10000000	
000000DB  00                     +0  837    837 		db	0y00000000	    
000000DC  00                     +0  838    838 		db	0y00000000	 
000000DD  00                     +0  839    839 		db	0y00000000		  
000000DE  00                     +0  840    840 		db	0y00000000		 
000000DF  00                     +0  841    841 		db	0y00000000		  
000000E0  00                     +0  842    842 		db	0y00000000		 
000000E1  00                     +0  843    843 		db	0y00000000		
000000E2  00                     +0  844    844 		db	0y00000000		
                                 +0  845    845 
                                 +0  846    846 ;			 15-----V8
000000E3  00                     +0  847    847 		db	0y00000000		  
000000E4  00                     +0  848    848 		db	0y00000000		
000000E5  00                     +0  849    849 		db	0y00000000		
000000E6  00                     +0  850    850 		db	0y00000000		
000000E7  00                     +0  851    851 		db	0y00000000		
000000E8  00                     +0  852    852 		db	0y00000000		
000000E9  00                     +0  853    853 		db	0y00000000		
000000EA  00                     +0  854    854 		db	0y00000000		  
000000EB  01                     +0  855    855 		db	0y00000001		
000000EC  02                     +0  856    856 		db	0y00000010		
000000ED  04                     +0  857    857 		db	0y00000100		
000000EE  08                     +0  858    858 		db	0y00001000		
000000EF  10                     +0  859    859 		db	0y00010000		
000000F0  20                     +0  860    860 		db	0y00100000		
000000F1  40                     +0  861    861 		db	0y01000000		
000000F2  80                     +0  862    862 		db	0y10000000		
000000F3                         +0  863    863 tbl_vft_ini_end:
                                 +0  864    864 
                                 +0  865    865 ;==============================================================================
                                 +0  866    866 ;	Name:     edit_disp
                                 +0  867    867 ;	Function: copy work resister data to DISP with zero suppression and
                                 +0  868    868 ;                  set commma, DP, minus sign
                                 +0  869    869 ;	Input:	  hl <- work resister address
                                 +0  870    870 ;	Output:	  DISP +0~+13,ICON_MIN flag
                                 +0  871    871 ;	Work reg.: ix,iy,c,a,w
                                 +0  872    872 ;==============================================================================
000000F3                         +0  873    873 edit_disp:
000000F3  480000               R +0  874    874 	ld	wa,F_DOFF
000000F6  E10000F2             R +0  875    875 	set	(F_DOFF>>4).a
000000FA  EB4C                   +0  876    876 		ld	ix,hl			
000000FC  EC690000             R +0  877    877 		add	ix,OFF_LSD		;ix..address of work register 
00000100  4D0000               R +0  878    878 		ld	iy,DISP_LSD		;iy..address of DISP
00000103  1A00                   +0  879    879 		ld	c,0			;c...digit pointer of DISP(0-13)
00000105                         +0  880    880 edit_disp0:
00000105  E440                   +0  881    881 		ld	a,(ix)
00000107  EA58                   +0  882    882 		ld	cf,c.0			;check digit pointer
00000109  DB03                   +0  883    883 		j	cc,edit_disp2		;c is even number? yes->
0000010B  E8FF                   +0  884    884 		swap	a			;swap by nibble
0000010D  3C                     +0  885    885 		dec	ix			;odd digit -> move source address to next digit
0000010E                         +0  886    886 edit_disp2:
0000010E  640F                   +0  887    887 		and	a,0x0f			;get low nibble data
00000110  D70017               R +0  888    888 		cmp	c,(hl+OFF_DP)		;check DP location
00000113  D80B                   +0  889    889 		j	eq,edit_disp4
00000115  F578                   +0  890    890 		ld	(iy),a			;store to DISP
00000117  3D                     +0  891    891 		dec	iy			;move distination address to next digit
00000118  22                     +0  892    892 		inc	c			;digit counter +1
00000119  EA6700               R +0  893    893 		cmp	c,LENG_WK*2
0000011C  DAE7                   +0  894    894 		j	lt,edit_disp0		;transfer end? no->loop
0000011E  FC22                   +0  895    895 		j	edit_disp9		;for make sure
                                 +0  896    896 ;Found DP...............
00000120                         +0  897    897 edit_disp4:
00000120  E8C6                   +0  898    898 		set	a.6			;set DP flag to DISP	
00000122  F578                   +0  899    899 		ld	(iy),a			;store to DISP
00000124  3D                     +0  900    900 		dec	iy			;move distination address to next digit
00000125  22                     +0  901    901 		inc	c			;digit counter+1
00000126  1902                   +0  902    902 		ld	w,2			;for set comma separater
00000128                         +0  903    903 edit_disp5:		
00000128  E440                   +0  904    904 		ld	a,(ix)			;get source data
0000012A  EA58                   +0  905    905 		ld	cf,c.0			;check digit pointer
0000012C  DB03                   +0  906    906 		j	cc,edit_disp6		;even digit? yes->
0000012E  E8FF                   +0  907    907 		swap	a			;odd digit -> swap by nibble
00000130  3C                     +0  908    908 		dec	ix			;odd digit -> move source address to next digit
00000131                         +0  909    909 edit_disp6:
00000131  640F                   +0  910    910 		and	a,0x0f			;get low nibble data
00000133  29                     +0  911    911 		dec	w
00000134  A3                     +0  912    912 		j	f,edit_disp8		;if no borrow? yes->
                                 +0  913    913 
                                 +0  914    914 ;V4.13	@if(@eqs(@UP_COM,@ON))then(
                                 +0  915    915 ;V4.13		or	(iy+1),0y10000000	;set comma to DISP(current DISP address-1) <- for upper ' display style	
                                 +0  916    916 ;V4.13	)else(
00000135  E8C7                   +0  917    917 		set	a.7			;set comma flag to DISP(current DISP) <- for lower , display style
                                 +0  918    918 ;V4.13	)fi
                                 +0  919    919 
00000137  1902                   +0  920    920 		ld	w,2			;for set comma separater
00000139                         +0  921    921 edit_disp8:
00000139  F578                   +0  922    922 		ld	(iy),a			;store to DISP
0000013B  3D                     +0  923    923 		dec	iy			;move distination address to next digit
0000013C  22                     +0  924    924 		inc	c			;digit counter+1
0000013D  EA6700               R +0  925    925 		cmp	c,LENG_WK*2		;transfer end?
00000140  DAE6                   +0  926    926 		j	lt,edit_disp5		;no ->loop
00000142                         +0  927    927 edit_disp9:
                                 +0  928    928 ;zero suppression...............
00000142  35                     +0  929    929 		inc	iy			;DISP address move to MSD
00000143  2A                     +0  930    930 		dec	c
00000144                         +0  931    931 edit_disp10:
00000144  E540                   +0  932    932 		ld	a,(iy)			;check DISP data from MSD
00000146  643F                   +0  933    933 		and	a,0y00111111		;hide comma,DP flag
00000148  D910                   +0  934    934 		j	nz,edit_disp11		;found data  yes-> stop zero suppression
                                 +0  935    935 ;current digit is zero.....
0000014A  E540                   +0  936    936 		ld	a,(iy)			;check current DISP digit
0000014C  6440                   +0  937    937 		and	a,0y01000000		;check DP
0000014E  D90A                   +0  938    938 		j	nz,edit_disp11		;found DP  yes-> stop zero suppression  (in case of 0.xxx--- format)
00000150  F5F93F                 +0  939    939 		ld	(iy),D_SPC		;fill space code
00000153  35                     +0  940    940 		inc	iy			;DISP address move to next digit
00000154  2A                     +0  941    941 		dec	c			;digit counter -1
00000155  EA6700                 +0  942    942 		cmp	c,0			;LSD?
00000158  DDEA                   +0  943    943 		j	gt,edit_disp10		;no-> loop
0000015A                         +0  944    944 edit_disp11:
                                 +0  945    945 ;V4.13	@if(@eqs(@UP_COM,@ON))then(
                                 +0  946    946 ;V4.13		and	(iy),0y01111111		;clear commma for left most digit <- for upper ' display style (no need this instruction when lower , display)
                                 +0  947    947 ;V4.13	)else(
                                 +0  948    948 ;V4.13	)fi
                                 +0  949    949 
                                 +0  950    950 ;set minus sign...........
0000015A  480000               R +0  951    951 	ld	wa,ICON_MIN
0000015D  E10000FA             R +0  952    952 	clr	(ICON_MIN>>4).a
00000161  D70040               R +0  953    953 		ld	a,(hl+OFF_S)		;-value?
00000164  D82E                   +0  954    954 		j	z,edit_disp19		;no ->exit
                                 +0  955    955 ;V3.00		@BBS	(M_JET,edit_disp12)	;V2.07
                                 +0  956    956 ;V1.21	@if(@eqs(@D14,@ON))then(
                                 +0  957    957 ;V1.21		cmp	c,LENG_WK*2-1		;MSD?	in case of 14digit
                                 +0  958    958 ;V1.21	)else(
                                 +0  959    959 ;V1.21		cmp	c,(LENG_WK-1)*2-1	;MSD?	in case of 12digit
                                 +0  960    960 ;V1.21	)fi
                                 +0  961    961 
                                 +0  962    962 ;V2.07		push	wa			;V1.21
00000166  480000               R +0  963    963 	ld	wa,M14
00000169  E10000FC             R +0  964    964 	test	(M14>>4).a		;bit -reverse-> jump status
0000016D  AD                     +0  965    965 	j	f,edit_disp11x		;if jump status is 0 -> branch
0000016E  480000               R +0  966    966 	ld	wa,M10
00000171  E10000FC             R +0  967    967 	test	(M10>>4).a		;bit -reverse-> jump status
00000175  8B                     +0  968    968 	j	t,edit_disp11y		;if jump status is 1 -> branch
                                 +0  969    969 ;V2.07		pop	wa			;V1.21
00000176  EA6700               R +0  970    970 		cmp	C,(LENG_WK-2)*2-1	;V1.21
00000179  FE0000               R +0  971    971 		jp	edit_disp11z		;V1.21
0000017C                    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -