📄 trigonom.asl
字号:
+ 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;don't chang
+ 2
0007 3 Length EQU 07h
000E 4 Length_Z EQU Length+Length
0009 5 TableLength EQU 09
+ 6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ 7
+ 8
+ 9 .area S_C_T(data,abs)
+ 10 .org 0x4f
+ 11
+B 00 01
004F 12 SignAns:: .ds 1
0050 13 SignT:: .ds 1
+ 14
0051 15 PointT:: .ds 1
0052 16 BufferTan:: .ds Length+1
+ 17
005A 18 SignXn:: .ds 1
+ 19
005B 20 PointXn:: .ds 1
+ 21
005C 22 BufferXn:: .ds Length+1
+ 23
+ 24
+ 25 .area Tan_code(code)
+ 26
+ 27 ;**************************************
+B 00 02
0000 28 Sin::
+ 29
0000 F1 00 30 lda SignX
0002 FD 00 31 sta SignTemp
+ 32 ;;Added by Golden
0004 F3 00 33 lda #0
0006 F9 00 34 sta0 SignX
+ 35
0008 20 00 00 36 call ClearBuffer
+ 37
000B F3 00 38 lda #0
000D FD 07 39 sta OperandX+Length
+ 40
000F F3 5C 41 lda #BufferXn
0011 FD 00 42 sta Addr1
+ 43
0013 20 00 00 44 call ClearData
+ 45
0016 F3 52 46 lda #BufferTan
0018 FD 00 47 sta Addr1
+ 48
001A 20 00 00 49 call ClearData
+ 50
001D F3 00 51 lda #0
001F FD 5B 52 sta PointXn
0021 FD 51 53 sta PointT
0023 FD 5A 54 sta SignXn
0025 FD 50 55 sta SignT
0027 FD 00 56 sta TanTemp
+ 57
0029 20 09 17 58 call CheckQuadrandtal
+ 59
002C F1 00 60 lda Temp1
002E 8B 00 61 adda #0
0030 06 00 47 62 brz 1$
0033 7F 63 rorc
0034 04 03 13 64 brc Sin90
0037 7F 65 rorc
0038 04 02 D9 66 brc Sin180
003B 7F 67 rorc
003C 04 02 F1 68 brc Sin270
003F 7F 69 rorc
0040 04 02 D9 70 brc Sin360
0043 7F 71 rorc
0044 04 03 51 72 brc Sin30
+ 73 1$: ;;;cau seta
0047 F3 00 74 lda #0h
0049 FD 00 75 sta Xn
+ 76
004B F3 00 77 lda #^Pdata
004D FD 02 78 sta TableC+2
+ 79
004F F3 0B 80 lda #@Pdata
0051 FD 01 81 sta TableC+1
+ 82
0053 F3 FC 83 lda #<Pdata
0055 FD 00 84 sta TableC
+ 85
0057 F3 00 86 lda #0
0059 FD 00 87 sta Temp2
+ 88 ;;;get pi
005B 20 08 A9 89 call GetData
+ 90
005E F3 00 91 lda #0
0060 FD 00 92 sta Temp2
+ 93 ;;;get X
0062 20 00 00 94 call Multiplation
+ 95 ;;;move X to operandX
0065 F3 00 96 lda #OperandZ
0067 FD 00 97 sta Addr1
+ 98
0069 F3 00 99 lda #OperandX
006B FD 00 100 sta Addr2
+ 101
006D 20 00 00 102 call CopyData
+ 103
0070 F1 00 104 lda PointZ
0072 FD 00 105 sta PointX
+ 106 ;;;save X to bufferZ
0074 F3 00 107 lda #BufferZ
0076 FD 00 108 sta Addr2
+ 109
0078 20 00 00 110 call CopyData
+ 111
007B F1 00 112 lda PointZ
007D FD 00 113 sta PointBz
+ 114 ;;;;get X^2
007F 20 0B A7 115 call GetXX
+ 116 ;;;;save X^2 to bufferXn
0082 F3 00 117 lda #OperandZ
0084 FD 00 118 sta Addr1
+ 119
0086 F3 5C 120 lda #BufferXn
0088 FD 00 121 sta Addr2
+ 122
008A 20 00 00 123 call CopyData
+ 124
008D F1 00 125 lda PointZ
008F FD 5B 126 sta PointXn
+ 127
0091 F3 00 128 lda #0
0093 FD 00 129 sta Xn
+ 130
0095 131 SinLoop:
+ 132 ;;;get (X^2/17!)
+ 133 ;;;get 1/17!
0095 F3 00 134 lda #^SinData
0097 FD 02 135 sta TableC+2
+ 136
0099 F3 0C 137 lda #@SinData
009B FD 01 138 sta TableC+1
+ 139
009D F3 05 140 lda #<SinData
009F FD 00 141 sta TableC
+ 142
00A1 F1 00 143 lda Xn
00A3 FD 00 144 sta Temp2
00A5 1F 145 inca
00A6 FD 00 146 sta Xn
+ 147
00A8 20 08 A9 148 call GetData
+ 149 ;;;move X^2 to operandX
00AB F3 5C 150 lda #BufferXn
00AD FD 00 151 sta Addr1
+ 152
00AF F3 00 153 lda #OperandX
00B1 FD 00 154 sta Addr2
+ 155
00B3 20 00 00 156 call CopyData
+ 157
00B6 F1 5B 158 lda PointXn
00B8 FD 00 159 sta PointX
+ 160 0$: ;;;get (X^2/17!)
00BA 20 00 00 161 call Multiplation
+ 162
00BD F3 00 163 lda #^SinData
00BF FD 02 164 sta TableC+2
+ 165 ;;;get 1/Xn!
00C1 F3 0C 166 lda #@SinData
00C3 FD 01 167 sta TableC+1
+ 168
00C5 F3 05 169 lda #<SinData
00C7 FD 00 170 sta TableC
+ 171
00C9 F1 00 172 lda Xn
00CB FD 00 173 sta Temp2
00CD 1F 174 inca
00CE FD 00 175 sta Xn
00D0 A7 08 176 cmpe #08h
00D2 04 01 1A 177 brc 3$
+ 178
00D5 20 08 A9 179 call GetData
+ 180 ;;;move to operandX
00D8 F3 00 181 lda #OperandY
00DA FD 00 182 sta Addr1
+ 183
00DC F3 00 184 lda #OperandX
00DE FD 00 185 sta Addr2
+ 186
00E0 20 00 00 187 call CopyData
+ 188
00E3 F1 00 189 lda PointY
00E5 FD 00 190 sta PointX
+ 191
00E7 F3 00 192 lda #OperandZ
00E9 FD 00 193 sta Addr1
+ 194
00EB F3 00 195 lda #OperandY
00ED FD 00 196 sta Addr2
+ 197
00EF 20 00 00 198 call CopyData
+ 199
00F2 F1 00 200 lda PointZ
00F4 FD 00 201 sta PointY
+ 202
00F6 20 00 00 203 call Subtration
+ 204 2$:
+ 205 ;;;move ans to operandX
00F9 F3 00 206 lda #OperandZ
00FB FD 00 207 sta Addr1
+ 208
00FD F3 00 209 lda #OperandX
00FF FD 00 210 sta Addr2
+ 211
0101 20 00 00 212 call CopyData
+ 213
0104 F1 00 214 lda PointZ
0106 FD 00 215 sta PointX
+ 216 ;;;move X^2 to operandY
0108 F3 5C 217 lda #BufferXn
010A FD 00 218 sta Addr1
+ 219
010C F3 00 220 lda #OperandY
010E FD 00 221 sta Addr2
+ 222
0110 20 00 00 223 call CopyData
+ 224
0113 F1 5B 225 lda PointXn
0115 FD 00 226 sta PointY
+ 227
0117 02 00 BA 228 br 0$
+ 229
+ 230 3$:
+ 231 ;;;move OperandZ to OperandY
011A F3 00 232 lda #OperandZ
011C FD 00 233 sta Addr1
+ 234
011E F3 00 235 lda #OperandY
0120 FD 00 236 sta Addr2
+ 237
0122 20 00 00 238 call CopyData
+ 239
0125 F1 00 240 lda PointZ
0127 FD 00 241 sta PointY
+ 242 ;;;move X to OperandX
0129 F3 00 243 lda #BufferZ
012B FD 00 244 sta Addr1
+ 245
012D F3 00 246 lda #OperandX
012F FD 00 247 sta Addr2
+ 248
0131 20 00 00 249 call CopyData
+ 250
0134 F1 00 251 lda PointBz
0136 FD 00 252 sta PointX
+ 253
0138 20 00 00 254 call Multiplation
+ 255
013B F3 00 256 lda #OperandZ
013D FD 00 257 sta Addr1
+ 258
013F F3 00 259 lda #OperandY
0141 FD 00 260 sta Addr2
+ 261
0143 20 00 00 262 call CopyData
+ 263
0146 F1 00 264 lda PointZ
0148 FD 00 265 sta PointY
+ 266
014A F3 00 267 lda #BufferZ
014C FD 00 268 sta Addr1
+ 269
014E F3 00 270 lda #OperandX
0150 FD 00 271 sta Addr2
+ 272
0152 20 00 00 273 call CopyData
+ 274
0155 F1 00 275 lda PointBz
0157 FD 00 276 sta PointX
+ 277
0159 20 00 00 278 call Subtration
+ 279
015C 280 EndSin:
+ 281
015C F1 4F 282 lda SignAns
015E A7 03 283 cmpe #03h
0160 04 01 68 284 brc 1$
+ 285
0163 F1 00 286 lda SignTemp
0165 FD 00 287 sta SignZ
+ 288
0167 24 289 ret
+ 290 1$:
0168 F3 01 291 lda #01h
016A E9 00 292 xora SignTemp
016C FD 00 293 sta SignZ
016E 24 294 ret
+ 295
+ 296
+ 297 ;*************************************
+ 298 ;
+ 299 ;*************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -