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

📄 caldisp.asl

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASL
📖 第 1 页 / 共 5 页
字号:
+                     1 
0000                  2 MACRO Clear_Mem(%1,%2,%3)        
+                     3  	lda	#%3
+                     4  	sta	PP       
+                     5         
+                     6         
+                     7         lda     #%1       ;0807
+                     8         sta     DP
+                     9 1$:
+                    10         lda     #00h
+                    11         sta     i
+                    12         incdp             ;Clear page 0 (02h to 0cfh)
+                    13 	lda	DP
+                    14         cmpe    #%2     
+                    15         brnz    1$
+                    16         lda	#00h
+                    17     	sta	PP     
+                    18         ENDM
0000                 19 MACRO PP2One()    
+                    20     	lda	#01h
+                    21     	sta	PP
+                    22         ENDM
+                    23         
0000                 24 MACRO PP2Zero()    
+                    25     	lda	#00h
+                    26     	sta	PP
+                    27         ENDM        
+                    28         
+                    29         
+                    30 
0000                 31 MACRO PP2store(%1)    
+                    32  
+                    33     	lda	PP
+                    34     	sta0	%1
+                    35         ENDM
+                    36         
0000                 37 MACRO PP2pop(%1)    
+                    38  
+                    39     	lda0	%1
+                    40     	sta	PP
+                    41     	
+                    42         ENDM        
+                    43 		.area   caldisp_use2(data,abs)
+                    44 ;------------------------------------------------------------------------
+                    45 ;------------------------------------------------------------------------
+                    46 
+                    47 		.org	0x100 	;0x1d0
+B 00 01
0100                 48 GetCount::	.ds	1
0101                 49 BasenFlag::	.ds	1
0102                 50 blankCount::	.ds	1
0103                 51 t1count::	.ds	1
0104                 52 cmpFlag::	.ds	1
0105                 53 cmpDP::		.ds	1
0106                 54 cmpPP::		.ds	1
+                    55 
0107                 56 pointcount::	
0107                 57 chklengthbf::	.ds	1
0108                 58 displength::
0108                 59 pointbf::	.ds	1	
0109                 60 startbf::
0109                 61 dispcount::	.ds	1
010A                 62 EngFlag::	.ds	1
010B                 63 T1Flag::	.ds	1
010C                 64 pzdispbf::	.ds	7
0113                 65 DispFlag::	.ds	1
0114                 66 StateFlag::	.ds	1
+                    67 
+                    68 		.area   caldisp_use3(data,abs)
+                    69 		.org	0x1fa
+B 00 02
01FA                 70 t1dispbf::	.ds	1
01FB                 71 t1fontbf::	.ds	1
+                    72 ;------------------------------------------------------------------------
+                    73 ;------------------------------------------------------------------------		
+                    74 		
+                    75 		.area	forcaldisp(code)
+B 00 03
0000                 76 CalDispLib::        	
+                    77         	       	
0000                 78 ErrorChk:        	
0000 F3 00           79         	lda	#>ErrorFlag
0002 FC 28           80         	sta	PP
0004 F3 00           81         	lda	#<ErrorFlag
0006 FC 21           82         	sta	DP
0008 F2              83         	lda	i
0009 A7 00           84         	cmpe	#C_ZERO
000B 07 03 20        85         	brnz	Allerrordisp
000E                 86 ModeChk:        	
000E F5 00           87         	lda0	.ModeFlag
0010 CB F0           88 		anda	#MASKLO
0012 07 18 25        89 		brnz	Modedisp
+                    90 
0015                 91 StoRclallChk:       	
0015                 92         	PP2One()
0019 F1 00           93         	lda	.SFlag
001B CB 30           94         	anda	#STOCHK|RCLCHK
001D 07 1D 52        95         	brnz	StoRcldisp 
+                    96         	
0020                 97 LogicChk:       	
0020                 98         	PP2One()
0024 F1 01           99         	lda	BasenFlag
0026 CB 0F          100 		anda	#MASKHI
0028 07 2B 7C       101 		brnz	LogicDisp
+                   102 		
+                   103 		
002B                104 CalDispchk:    
002B                105         	PP2One()
002F F1 00          106         	lda	.SFlag
0031 CB 80          107 		anda	#CALCCHK
0033 07 1C CB       108 		brnz	CalDisp
+                   109 
0036                110 NoStepChk:
0036 F5 00          111        		lda0	.DataDP
0038 A7 00          112        		cmpe	#C_ZERO
003A 07 00 42       113        		brnz	EngAllChk
003D F9 00          114        		sta0	.SFDP
003F 02 00 CB       115        		br	CalDispLibend
+                   116 
0042                117 EngAllChk:             	
0042 F5 00          118         	lda0	.KeyPos
0044 A7 C2          119         	cmpe	#ENGKEY1
0046 06 00 51       120         	brz	Eng1Chk
0049 A7 41          121         	cmpe	#ENGKEY2
004B 06 00 61       122         	brz	Eng2Chk
004E 02 00 71       123         	br	InsetModeChk
0051                124 Eng1Chk:
0051 F1 00          125         	lda	.SetFlag
0053 CB 20          126 		anda	#BLANKCHK
0055 06 00 CB       127 		brz	CalDispLibend
0058 F1 0B          128 		lda	T1Flag
005A DB 40          129 		ora	#ENG1GO
005C FD 0B          130 		sta	T1Flag
005E 02 1E 4D       131         	br	ENG1Disp
0061                132 Eng2Chk:
0061 F1 00          133 		lda	.SetFlag
0063 CB 20          134 		anda	#BLANKCHK
0065 06 00 CB       135 		brz	CalDispLibend
0068 F1 0B          136 		lda	T1Flag
006A DB 20          137 		ora	#ENG2GO
006C FD 0B          138 		sta	T1Flag
006E 02 21 ED       139         	br	ENG2Disp        	        					
0071                140 InsetModeChk:	
0071                141 		PP2One()
0075 F1 00          142 		lda	.SetFlag
0077 CB 20          143 		anda	#BLANKCHK
0079 06 00 87       144 		brz	1$
007C F3 00          145 		lda	#>.SRFlag
007E FC 28          146 		sta	PP
0080 F1 00          147 		lda	.SRFlag
0082 CB 01          148        		anda	#C_ONE
0084 07 00 CB       149         	brnz	CalDispLibend
+                   150 1$:				
0087                151 		PP2One()
008B F1 00          152 		lda	Insetflag
008D A7 01          153         	cmpe	#C_ONE
008F 06 00 00       154 		brz	Insetmode
0092 F5 00          155 		lda0	.KeyPos
0094 A7 EE          156 		cmpe	#MODEKEY
0096 06 00 CB       157 		brz	CalDispLibend		;keep the modekey do not to do eveything
0099 A7 6A          158 		cmpe	#LOGICKEY
009B 06 00 CB       159 		brz	CalDispLibend		;keep the logickey do not to do eveything
009E A7 65          160 DelModeChk:	cmpe	#DELKEY
00A0 06 00 00       161 		brz	Delmode
00A3 A7 CC          162 LeftKeyChk:	cmpe	#LEFTKEY
00A5 06 04 09       163 		brz	Leftchk
00A8 A7 DD          164 RightKeyChk:	cmpe	#RIGHTKEY
00AA 06 04 DD       165 		brz	Rightchk
00AD                166 Dispchk:
00AD F3 00          167 		lda	#C_ZERO		
00AF FD 03          168 		sta	t1count
00B1                169 FullStepChk:
00B1 F5 00          170        		lda0	.DataDP
00B3 A7 50          171        		cmpe	#STEPCHK+1
00B5 05 00 BB       172        		brnc	1$
00B8 02 00 CB       173        		br	CalDispLibend
+                   174 1$:
00BB F1 00          175        		lda	.SetFlag
00BD CB DF          176 		anda	#~BLANKCHK
00BF FD 00          177 		sta	.SetFlag
00C1                178 ReplaceFontChk:
00C1 F5 00          179 		lda0	.SFDP
00C3 A7 00          180 		cmpe	#C_ZERO
00C5 07 00 00       181 		brnz	Replace
00C8                182 DispFontChk:
00C8 20 01 14       183 		call	Fulldisp
00CB                184 CalDispLibend:
00CB 24             185         	ret
+                   186 ;------------------------------------------------------------------------
+                   187 ;------------------------------------------------------------------------		
00CC                188 .DispInitial::						
00CC                189 		PP2One()		
00D0 F3 10          190 		lda	#NORAM1DISP
00D2 FD 13          191 		sta	DispFlag
00D4 F3 90          192 		lda	#COMPSTATE|DEGSTATE
00D6 FD 14          193 		sta	StateFlag
00D8 F3 80          194 		lda	#DECMODE
00DA FD 01          195 		sta	BasenFlag
00DC F3 00          196 		lda	#C_ZERO
00DE F9 00          197 		sta0	.SFDP
00E0                198 .DispInitial2::
00E0 F3 01          199 		lda	#MODESTART
00E2 F9 00          200 		sta0	.ModeFlag
00E4 20 1C 70       201 		call	Clrfullmatrix
00E7 20 1C 95       202 		call	Clrfullseg
00EA 20 12 28       203 		call	DispAnsZero
00ED                204 		PP2One()
00F1 F1 01          205 		lda	BasenFlag
00F3 CB F0          206 		anda	#MASKLO
00F5 FD 01          207 		sta	BasenFlag								
00F7 F3 00          208 		lda	#C_ZERO	
00F9 FD 00          209 		sta	Insetflag
00FB FD 0B          210 		sta	T1Flag
00FD F3 80          211 		lda	#STARTENG
00FF FD 0A          212 		sta	EngFlag		
0101 F3 00          213 		lda	#C_ZERO
0103 FD 03          214 		sta	t1count
0105 FD FA          215 		sta	t1dispbf
0107 F3 0B          216 		lda	#C_11
0109 FD 00          217 		sta	GetCount
010B FD 02          218 		sta	blankCount
010D 20 15 BB       219 		call	Clr_signm
0110 20 15 CA       220 		call	Clr_expm			 	
0113 24             221 		ret		
+                   222 ;------------------------------------------------------------------------
+                   223 ;------------------------------------------------------------------------				
0114                224 Fulldisp:
0114 20 1C 70       225 		call	Clrfullmatrix
0117                226 fullchk:		
0117                227 		PP2One()
011B F3 0A          228 		lda	#C_TEN
011D FD 00          229 		sta	GetCount
+                   230 			
011F F3 02          231 		lda	#C_TWO
0121 FD 06          232 		sta	cmpPP
0123 F3 00          233 		lda	#C_ZERO
0125 FD 05          234 		sta	cmpDP
0127                235 fullloop:
0127 20 01 C2       236 		call	Addplace
012A 20 03 0C       237 		call	Chklength
012D                238 		PP2One()
0131 F1 00          239         	lda	GetCount
0133 A9 08          240         	suba	displength
0135 FD 00          241         	sta	GetCount
0137 05 01 6C       242         	brnc	Alldisp 	
013A F5 00          243 		lda0	.DataDP
013C A5 05          244         	cmpe	cmpDP
013E 07 01 27       245         	brnz	fullloop
0141 02 01 44       246 		br	Allnotfdisp
+                   247 		
0144                248 Allnotfdisp:
0144                249 		PP2One()
0148 F3 0B          250 		lda	#C_11
014A FD 00          251 		sta	GetCount
+                   252 			
014C F3 02          253 		lda	#C_TWO
014E FD 06          254 		sta	cmpPP
0150 F3 00          255 		lda	#C_ZERO
0152 FD 05          256 		sta	cmpDP			
0154                257 Allnotfloop:
0154 20 01 C2       258 		call	Addplace
0157 20 01 FA       259 		call	Font2disp
015A                260 		PP2One()
015E F5 00          261 		lda0	.DataDP
0160 A5 05          262 		cmpe	cmpDP
0162 07 01 54       263 		brnz	Allnotfloop
0165 F1 00          264 		lda	GetCount
0167 FD 02          265 		sta	blankCount
0169 02 01 AE       266 		br	Fulldispend1
+                   267 
016C                268 Alldisp:
016C                269 		PP2One()
0170 F3 0B          270 		lda	#C_11
0172 FD 00          271 		sta	GetCount
+                   272 		
0174 F3 02          273 		lda	#C_TWO
0176 FD 06          274 		sta	cmpPP
0178 F5 00          275 		lda0	.DataDP
017A FD 05          276 		sta	cmpDP
017C                277 subloop:
017C 20 01 DF       278         	call	Decplace
017F                279         	PP2One()
0183 20 03 0C       280 		call	Chklength
0186 F1 00          281         	lda	GetCount
0188 A9 08          282         	suba	displength
018A FD 00          283         	sta	GetCount
018C 05 01 92       284         	brnc	set2disp
018F 02 01 7C       285         	br	subloop
0192                286 set2disp:	 
0192                287 		PP2One()
0196 F3 0B          288 		lda	#C_11
0198 FD 00          289 		sta	GetCount
019A 20 01 C2       290 		call	Addplace
019D                291 Fulldisploop:
019D 20 01 C2       292 		call	Addplace
01A0 20 01 FA       293 		call	Font2disp
01A3                294 		PP2One()
01A7 F5 00          295 		lda0	.DataDP
01A9 A5 05          296 		cmpe	cmpDP
01AB 07 01 9D       297 		brnz	Fulldisploop
01AE                298 Fulldispend1:
01AE F1 00          299 		lda	GetCount
01B0 FD 02          300 		sta	blankCount
01B2                301 Fulldispend:
01B2 24             302 		ret
+                   303 ;------------------------------------------------------------------------
+                   304 ;------------------------------------------------------------------------
01B3                305 RightGetCount:
01B3                306 		PP2One()

⌨️ 快捷键说明

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