Update sources, rebuild artifacts, add .gitignore
This commit is contained in:
+22
@@ -0,0 +1,22 @@
|
||||
# Build output (SDCC/Z80 toolchain — regenerated by build.bat)
|
||||
obj/
|
||||
bin/
|
||||
build/
|
||||
|
||||
# SDCC-generated files if they ever end up outside obj/
|
||||
*.rel
|
||||
*.lst
|
||||
*.map
|
||||
*.noi
|
||||
*.sym
|
||||
*.lk
|
||||
*.ihx
|
||||
*.adb
|
||||
*.cdb
|
||||
*.omf
|
||||
|
||||
# Editor/OS cruft
|
||||
.vscode/
|
||||
*.swp
|
||||
Thumbs.db
|
||||
.DS_Store
|
||||
BIN
Binary file not shown.
+22
-27
@@ -74,12 +74,12 @@ _hdr:
|
||||
.db #0x4d ; 77 'M'
|
||||
.db #0x44 ; 68 'D'
|
||||
.db #0x4c ; 76 'L'
|
||||
.db #0x07 ; 7
|
||||
.db #0x0a ; 10
|
||||
.db 0x00
|
||||
.db #0x01 ; 1
|
||||
.db #0x00 ; 0
|
||||
.db #0x00 ; 0
|
||||
.db #0x1e ; 30
|
||||
.db #0x1d ; 29
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
@@ -204,12 +204,7 @@ _hdr:
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.byte #0xff, #0xff, #0xff, #0xff ; 4294967295
|
||||
.ascii "XM Player"
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.ascii "XM Player v0.1"
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
@@ -291,25 +286,25 @@ _hdr:
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db #0x12 ; 18
|
||||
.db #0x01 ; 1
|
||||
.db #0x73 ; 115 's'
|
||||
.db #0x74 ; 116 't'
|
||||
.db #0x6f ; 111 'o'
|
||||
.db #0x70 ; 112 'p'
|
||||
.db #0x6f ; 111 'o'
|
||||
.db #0x6e ; 110 'n'
|
||||
.db #0x65 ; 101 'e'
|
||||
.db #0x72 ; 114 'r'
|
||||
.db #0x72 ; 114 'r'
|
||||
.db #0x6f ; 111 'o'
|
||||
.db #0x72 ; 114 'r'
|
||||
.db #0x02 ; 2
|
||||
.db #0x30 ; 48 '0'
|
||||
.db #0x00 ; 0
|
||||
.db #0x31 ; 49 '1'
|
||||
.db #0x00 ; 0
|
||||
.db #0x00 ; 0
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
.db 0x00
|
||||
|
||||
BIN
Binary file not shown.
+3
-3
@@ -1,12 +1,12 @@
|
||||
:200200000000000000000000000000000000000057696C64436F6D6D616E6465724D444CDB
|
||||
:2002200007000100001E000000000000000000000000000000000000000000000000000098
|
||||
:200220000A000100001D000000000000000000000000000000000000000000000000000096
|
||||
:20024000584D20584D5A53334D000000000000000000000000000000000000000000000007
|
||||
:2002600000000000000000000000000000000000000000000000000000000000000000007E
|
||||
:2002800000000000000000000000000000000000000000000000000000000000000000005E
|
||||
:2002A00000FFFFFFFF584D20506C6179657200000000000000000000000000000000000010
|
||||
:2002A00000FFFFFFFF584D20506C617965722076302E3100000000000000000000000000EB
|
||||
:2002C00000000000000300000000000000000000000000000000000000000000000000001B
|
||||
:2002E0000000000000000000000000000000000000000000000000000000000000000000FE
|
||||
:200300000000000000000000000000000000000000000000000000000000000000000000DD
|
||||
:2003000000000000120173746F706F6E6572726F720230003100000000000000000000009A
|
||||
:200320000000000000000000000000000000000000000000000000000000000000000000BD
|
||||
:2003400000000000000000000000000000000000000000000000000000000000000000009D
|
||||
:2003600000000000000000000000000000000000000000000000000000000000000000007D
|
||||
|
||||
+339
-344
@@ -74,12 +74,12 @@
|
||||
0000001D 4D 74 .db #0x4d ; 77 'M'
|
||||
0000001E 44 75 .db #0x44 ; 68 'D'
|
||||
0000001F 4C 76 .db #0x4c ; 76 'L'
|
||||
00000020 07 77 .db #0x07 ; 7
|
||||
00000020 0A 77 .db #0x0a ; 10
|
||||
00000021 00 78 .db 0x00
|
||||
00000022 01 79 .db #0x01 ; 1
|
||||
00000023 00 80 .db #0x00 ; 0
|
||||
00000024 00 81 .db #0x00 ; 0
|
||||
00000025 1E 82 .db #0x1e ; 30
|
||||
00000025 1D 82 .db #0x1d ; 29
|
||||
00000026 00 83 .db 0x00
|
||||
00000027 00 84 .db 0x00
|
||||
00000028 00 85 .db 0x00
|
||||
@@ -204,345 +204,340 @@
|
||||
0000009F 00 204 .db 0x00
|
||||
000000A0 00 205 .db 0x00
|
||||
000000A1 FF FF FF FF 206 .byte #0xff, #0xff, #0xff, #0xff ; 4294967295
|
||||
000000A5 58 4D 20 50 6C 61 79 207 .ascii "XM Player"
|
||||
65 72
|
||||
000000AE 00 208 .db 0x00
|
||||
000000AF 00 209 .db 0x00
|
||||
000000B0 00 210 .db 0x00
|
||||
000000B1 00 211 .db 0x00
|
||||
000000B2 00 212 .db 0x00
|
||||
000000B3 00 213 .db 0x00
|
||||
000000B4 00 214 .db 0x00
|
||||
000000B5 00 215 .db 0x00
|
||||
000000B6 00 216 .db 0x00
|
||||
000000B7 00 217 .db 0x00
|
||||
000000B8 00 218 .db 0x00
|
||||
000000B9 00 219 .db 0x00
|
||||
000000BA 00 220 .db 0x00
|
||||
000000BB 00 221 .db 0x00
|
||||
000000BC 00 222 .db 0x00
|
||||
000000BD 00 223 .db 0x00
|
||||
000000BE 00 224 .db 0x00
|
||||
000000BF 00 225 .db 0x00
|
||||
000000C0 00 226 .db 0x00
|
||||
000000C1 00 227 .db 0x00
|
||||
000000C2 00 228 .db 0x00
|
||||
000000C3 00 229 .db 0x00
|
||||
000000C4 00 230 .db 0x00
|
||||
000000C5 03 231 .db #0x03 ; 3
|
||||
000000C6 00 232 .db 0x00
|
||||
000000C7 00 233 .db 0x00
|
||||
000000C8 00 234 .db 0x00
|
||||
000000C9 00 235 .db 0x00
|
||||
000000CA 00 236 .db 0x00
|
||||
000000CB 00 237 .db 0x00
|
||||
000000CC 00 238 .db 0x00
|
||||
000000CD 00 239 .db 0x00
|
||||
000000CE 00 240 .db 0x00
|
||||
000000CF 00 241 .db 0x00
|
||||
000000D0 00 242 .db 0x00
|
||||
000000D1 00 243 .db 0x00
|
||||
000000D2 00 244 .db 0x00
|
||||
000000D3 00 245 .db 0x00
|
||||
000000D4 00 246 .db 0x00
|
||||
000000D5 00 247 .db 0x00
|
||||
000000D6 00 248 .db 0x00
|
||||
000000D7 00 249 .db 0x00
|
||||
000000D8 00 250 .db 0x00
|
||||
000000D9 00 251 .db 0x00
|
||||
000000DA 00 252 .db 0x00
|
||||
000000DB 00 253 .db 0x00
|
||||
000000DC 00 254 .db 0x00
|
||||
000000DD 00 255 .db 0x00
|
||||
000000DE 00 256 .db 0x00
|
||||
000000DF 00 257 .db 0x00
|
||||
000000E0 00 258 .db 0x00
|
||||
000000E1 00 259 .db 0x00
|
||||
000000E2 00 260 .db 0x00
|
||||
000000E3 00 261 .db 0x00
|
||||
000000E4 00 262 .db 0x00
|
||||
000000E5 00 263 .db 0x00
|
||||
000000E6 00 264 .db 0x00
|
||||
000000E7 00 265 .db 0x00
|
||||
000000E8 00 266 .db 0x00
|
||||
000000E9 00 267 .db 0x00
|
||||
000000EA 00 268 .db 0x00
|
||||
000000EB 00 269 .db 0x00
|
||||
000000EC 00 270 .db 0x00
|
||||
000000ED 00 271 .db 0x00
|
||||
000000EE 00 272 .db 0x00
|
||||
000000EF 00 273 .db 0x00
|
||||
000000F0 00 274 .db 0x00
|
||||
000000F1 00 275 .db 0x00
|
||||
000000F2 00 276 .db 0x00
|
||||
000000F3 00 277 .db 0x00
|
||||
000000F4 00 278 .db 0x00
|
||||
000000F5 00 279 .db 0x00
|
||||
000000F6 00 280 .db 0x00
|
||||
000000F7 00 281 .db 0x00
|
||||
000000F8 00 282 .db 0x00
|
||||
000000F9 00 283 .db 0x00
|
||||
000000FA 00 284 .db 0x00
|
||||
000000FB 00 285 .db 0x00
|
||||
000000FC 00 286 .db 0x00
|
||||
000000FD 00 287 .db 0x00
|
||||
000000FE 00 288 .db 0x00
|
||||
000000FF 00 289 .db 0x00
|
||||
00000100 00 290 .db 0x00
|
||||
00000101 00 291 .db 0x00
|
||||
00000102 00 292 .db 0x00
|
||||
00000103 00 293 .db 0x00
|
||||
00000104 00 294 .db 0x00
|
||||
00000105 00 295 .db 0x00
|
||||
00000106 00 296 .db 0x00
|
||||
00000107 00 297 .db 0x00
|
||||
00000108 00 298 .db 0x00
|
||||
00000109 00 299 .db 0x00
|
||||
0000010A 00 300 .db 0x00
|
||||
0000010B 00 301 .db 0x00
|
||||
0000010C 00 302 .db 0x00
|
||||
0000010D 00 303 .db 0x00
|
||||
0000010E 00 304 .db 0x00
|
||||
0000010F 00 305 .db 0x00
|
||||
00000110 00 306 .db 0x00
|
||||
00000111 00 307 .db 0x00
|
||||
00000112 00 308 .db 0x00
|
||||
00000113 00 309 .db 0x00
|
||||
00000114 00 310 .db 0x00
|
||||
00000115 00 311 .db 0x00
|
||||
00000116 00 312 .db 0x00
|
||||
00000117 00 313 .db 0x00
|
||||
00000118 00 314 .db 0x00
|
||||
00000119 00 315 .db 0x00
|
||||
0000011A 00 316 .db 0x00
|
||||
0000011B 00 317 .db 0x00
|
||||
0000011C 00 318 .db 0x00
|
||||
0000011D 00 319 .db 0x00
|
||||
0000011E 00 320 .db 0x00
|
||||
0000011F 00 321 .db 0x00
|
||||
00000120 00 322 .db 0x00
|
||||
00000121 00 323 .db 0x00
|
||||
00000122 00 324 .db 0x00
|
||||
00000123 00 325 .db 0x00
|
||||
00000124 00 326 .db 0x00
|
||||
00000125 00 327 .db 0x00
|
||||
00000126 00 328 .db 0x00
|
||||
00000127 00 329 .db 0x00
|
||||
00000128 00 330 .db 0x00
|
||||
00000129 00 331 .db 0x00
|
||||
0000012A 00 332 .db 0x00
|
||||
0000012B 00 333 .db 0x00
|
||||
0000012C 00 334 .db 0x00
|
||||
0000012D 00 335 .db 0x00
|
||||
0000012E 00 336 .db 0x00
|
||||
0000012F 00 337 .db 0x00
|
||||
00000130 00 338 .db 0x00
|
||||
00000131 00 339 .db 0x00
|
||||
00000132 00 340 .db 0x00
|
||||
00000133 00 341 .db 0x00
|
||||
00000134 00 342 .db 0x00
|
||||
00000135 00 343 .db 0x00
|
||||
00000136 00 344 .db 0x00
|
||||
00000137 00 345 .db 0x00
|
||||
00000138 00 346 .db 0x00
|
||||
00000139 00 347 .db 0x00
|
||||
0000013A 00 348 .db 0x00
|
||||
0000013B 00 349 .db 0x00
|
||||
0000013C 00 350 .db 0x00
|
||||
0000013D 00 351 .db 0x00
|
||||
0000013E 00 352 .db 0x00
|
||||
0000013F 00 353 .db 0x00
|
||||
00000140 00 354 .db 0x00
|
||||
00000141 00 355 .db 0x00
|
||||
00000142 00 356 .db 0x00
|
||||
00000143 00 357 .db 0x00
|
||||
00000144 00 358 .db 0x00
|
||||
00000145 00 359 .db 0x00
|
||||
00000146 00 360 .db 0x00
|
||||
00000147 00 361 .db 0x00
|
||||
00000148 00 362 .db 0x00
|
||||
00000149 00 363 .db 0x00
|
||||
0000014A 00 364 .db 0x00
|
||||
0000014B 00 365 .db 0x00
|
||||
0000014C 00 366 .db 0x00
|
||||
0000014D 00 367 .db 0x00
|
||||
0000014E 00 368 .db 0x00
|
||||
0000014F 00 369 .db 0x00
|
||||
00000150 00 370 .db 0x00
|
||||
00000151 00 371 .db 0x00
|
||||
00000152 00 372 .db 0x00
|
||||
00000153 00 373 .db 0x00
|
||||
00000154 00 374 .db 0x00
|
||||
00000155 00 375 .db 0x00
|
||||
00000156 00 376 .db 0x00
|
||||
00000157 00 377 .db 0x00
|
||||
00000158 00 378 .db 0x00
|
||||
00000159 00 379 .db 0x00
|
||||
0000015A 00 380 .db 0x00
|
||||
0000015B 00 381 .db 0x00
|
||||
0000015C 00 382 .db 0x00
|
||||
0000015D 00 383 .db 0x00
|
||||
0000015E 00 384 .db 0x00
|
||||
0000015F 00 385 .db 0x00
|
||||
00000160 00 386 .db 0x00
|
||||
00000161 00 387 .db 0x00
|
||||
00000162 00 388 .db 0x00
|
||||
00000163 00 389 .db 0x00
|
||||
00000164 00 390 .db 0x00
|
||||
00000165 00 391 .db 0x00
|
||||
00000166 00 392 .db 0x00
|
||||
00000167 00 393 .db 0x00
|
||||
00000168 00 394 .db 0x00
|
||||
00000169 00 395 .db 0x00
|
||||
0000016A 00 396 .db 0x00
|
||||
0000016B 00 397 .db 0x00
|
||||
0000016C 00 398 .db 0x00
|
||||
0000016D 00 399 .db 0x00
|
||||
0000016E 00 400 .db 0x00
|
||||
0000016F 00 401 .db 0x00
|
||||
00000170 00 402 .db 0x00
|
||||
00000171 00 403 .db 0x00
|
||||
00000172 00 404 .db 0x00
|
||||
00000173 00 405 .db 0x00
|
||||
00000174 00 406 .db 0x00
|
||||
00000175 00 407 .db 0x00
|
||||
00000176 00 408 .db 0x00
|
||||
00000177 00 409 .db 0x00
|
||||
00000178 00 410 .db 0x00
|
||||
00000179 00 411 .db 0x00
|
||||
0000017A 00 412 .db 0x00
|
||||
0000017B 00 413 .db 0x00
|
||||
0000017C 00 414 .db 0x00
|
||||
0000017D 00 415 .db 0x00
|
||||
0000017E 00 416 .db 0x00
|
||||
0000017F 00 417 .db 0x00
|
||||
00000180 00 418 .db 0x00
|
||||
00000181 00 419 .db 0x00
|
||||
00000182 00 420 .db 0x00
|
||||
00000183 00 421 .db 0x00
|
||||
00000184 00 422 .db 0x00
|
||||
00000185 00 423 .db 0x00
|
||||
00000186 00 424 .db 0x00
|
||||
00000187 00 425 .db 0x00
|
||||
00000188 00 426 .db 0x00
|
||||
00000189 00 427 .db 0x00
|
||||
0000018A 00 428 .db 0x00
|
||||
0000018B 00 429 .db 0x00
|
||||
0000018C 00 430 .db 0x00
|
||||
0000018D 00 431 .db 0x00
|
||||
0000018E 00 432 .db 0x00
|
||||
0000018F 00 433 .db 0x00
|
||||
00000190 00 434 .db 0x00
|
||||
00000191 00 435 .db 0x00
|
||||
00000192 00 436 .db 0x00
|
||||
00000193 00 437 .db 0x00
|
||||
00000194 00 438 .db 0x00
|
||||
00000195 00 439 .db 0x00
|
||||
00000196 00 440 .db 0x00
|
||||
00000197 00 441 .db 0x00
|
||||
00000198 00 442 .db 0x00
|
||||
00000199 00 443 .db 0x00
|
||||
0000019A 00 444 .db 0x00
|
||||
0000019B 00 445 .db 0x00
|
||||
0000019C 00 446 .db 0x00
|
||||
0000019D 00 447 .db 0x00
|
||||
0000019E 00 448 .db 0x00
|
||||
0000019F 00 449 .db 0x00
|
||||
000001A0 00 450 .db 0x00
|
||||
000001A1 00 451 .db 0x00
|
||||
000001A2 00 452 .db 0x00
|
||||
000001A3 00 453 .db 0x00
|
||||
000001A4 00 454 .db 0x00
|
||||
000001A5 00 455 .db 0x00
|
||||
000001A6 00 456 .db 0x00
|
||||
000001A7 00 457 .db 0x00
|
||||
000001A8 00 458 .db 0x00
|
||||
000001A9 00 459 .db 0x00
|
||||
000001AA 00 460 .db 0x00
|
||||
000001AB 00 461 .db 0x00
|
||||
000001AC 00 462 .db 0x00
|
||||
000001AD 00 463 .db 0x00
|
||||
000001AE 00 464 .db 0x00
|
||||
000001AF 00 465 .db 0x00
|
||||
000001B0 00 466 .db 0x00
|
||||
000001B1 00 467 .db 0x00
|
||||
000001B2 00 468 .db 0x00
|
||||
000001B3 00 469 .db 0x00
|
||||
000001B4 00 470 .db 0x00
|
||||
000001B5 00 471 .db 0x00
|
||||
000001B6 00 472 .db 0x00
|
||||
000001B7 00 473 .db 0x00
|
||||
000001B8 00 474 .db 0x00
|
||||
000001B9 00 475 .db 0x00
|
||||
000001BA 00 476 .db 0x00
|
||||
000001BB 00 477 .db 0x00
|
||||
000001BC 00 478 .db 0x00
|
||||
000001BD 00 479 .db 0x00
|
||||
000001BE 00 480 .db 0x00
|
||||
000001BF 00 481 .db 0x00
|
||||
000001C0 00 482 .db 0x00
|
||||
000001C1 00 483 .db 0x00
|
||||
000001C2 00 484 .db 0x00
|
||||
000001C3 00 485 .db 0x00
|
||||
000001C4 00 486 .db 0x00
|
||||
000001C5 00 487 .db 0x00
|
||||
000001C6 00 488 .db 0x00
|
||||
000001C7 00 489 .db 0x00
|
||||
000001C8 00 490 .db 0x00
|
||||
000001C9 00 491 .db 0x00
|
||||
000001CA 00 492 .db 0x00
|
||||
000001CB 00 493 .db 0x00
|
||||
000001CC 00 494 .db 0x00
|
||||
000001CD 00 495 .db 0x00
|
||||
000001CE 00 496 .db 0x00
|
||||
000001CF 00 497 .db 0x00
|
||||
000001D0 00 498 .db 0x00
|
||||
000001D1 00 499 .db 0x00
|
||||
000001D2 00 500 .db 0x00
|
||||
000001D3 00 501 .db 0x00
|
||||
000001D4 00 502 .db 0x00
|
||||
000001D5 00 503 .db 0x00
|
||||
000001D6 00 504 .db 0x00
|
||||
000001D7 00 505 .db 0x00
|
||||
000001D8 00 506 .db 0x00
|
||||
000001D9 00 507 .db 0x00
|
||||
000001DA 00 508 .db 0x00
|
||||
000001DB 00 509 .db 0x00
|
||||
000001DC 00 510 .db 0x00
|
||||
000001DD 00 511 .db 0x00
|
||||
000001DE 00 512 .db 0x00
|
||||
000001DF 00 513 .db 0x00
|
||||
000001E0 00 514 .db 0x00
|
||||
000001E1 00 515 .db 0x00
|
||||
000001E2 00 516 .db 0x00
|
||||
000001E3 00 517 .db 0x00
|
||||
000001E4 00 518 .db 0x00
|
||||
000001E5 00 519 .db 0x00
|
||||
000001E6 00 520 .db 0x00
|
||||
000001E7 00 521 .db 0x00
|
||||
000001E8 00 522 .db 0x00
|
||||
000001E9 00 523 .db 0x00
|
||||
000001EA 00 524 .db 0x00
|
||||
000001EB 00 525 .db 0x00
|
||||
000001EC 00 526 .db 0x00
|
||||
000001ED 00 527 .db 0x00
|
||||
000001EE 00 528 .db 0x00
|
||||
000001EF 00 529 .db 0x00
|
||||
000001F0 00 530 .db 0x00
|
||||
000001F1 00 531 .db 0x00
|
||||
000001F2 00 532 .db 0x00
|
||||
000001F3 00 533 .db 0x00
|
||||
000001F4 00 534 .db 0x00
|
||||
000001F5 00 535 .db 0x00
|
||||
000001F6 00 536 .db 0x00
|
||||
000001F7 00 537 .db 0x00
|
||||
000001F8 00 538 .db 0x00
|
||||
000001F9 00 539 .db 0x00
|
||||
000001FA 00 540 .db 0x00
|
||||
000001FB 00 541 .db 0x00
|
||||
000001FC 00 542 .db 0x00
|
||||
000001FD 00 543 .db 0x00
|
||||
000001FE 00 544 .db 0x00
|
||||
000001FF 00 545 .db 0x00
|
||||
546 .area _INITIALIZER
|
||||
547 .area _CABS (ABS)
|
||||
000000A5 58 4D 20 50 6C 61 79 207 .ascii "XM Player v0.1"
|
||||
65 72 20 76 30 2E 31
|
||||
000000B3 00 208 .db 0x00
|
||||
000000B4 00 209 .db 0x00
|
||||
000000B5 00 210 .db 0x00
|
||||
000000B6 00 211 .db 0x00
|
||||
000000B7 00 212 .db 0x00
|
||||
000000B8 00 213 .db 0x00
|
||||
000000B9 00 214 .db 0x00
|
||||
000000BA 00 215 .db 0x00
|
||||
000000BB 00 216 .db 0x00
|
||||
000000BC 00 217 .db 0x00
|
||||
000000BD 00 218 .db 0x00
|
||||
000000BE 00 219 .db 0x00
|
||||
000000BF 00 220 .db 0x00
|
||||
000000C0 00 221 .db 0x00
|
||||
000000C1 00 222 .db 0x00
|
||||
000000C2 00 223 .db 0x00
|
||||
000000C3 00 224 .db 0x00
|
||||
000000C4 00 225 .db 0x00
|
||||
000000C5 03 226 .db #0x03 ; 3
|
||||
000000C6 00 227 .db 0x00
|
||||
000000C7 00 228 .db 0x00
|
||||
000000C8 00 229 .db 0x00
|
||||
000000C9 00 230 .db 0x00
|
||||
000000CA 00 231 .db 0x00
|
||||
000000CB 00 232 .db 0x00
|
||||
000000CC 00 233 .db 0x00
|
||||
000000CD 00 234 .db 0x00
|
||||
000000CE 00 235 .db 0x00
|
||||
000000CF 00 236 .db 0x00
|
||||
000000D0 00 237 .db 0x00
|
||||
000000D1 00 238 .db 0x00
|
||||
000000D2 00 239 .db 0x00
|
||||
000000D3 00 240 .db 0x00
|
||||
000000D4 00 241 .db 0x00
|
||||
000000D5 00 242 .db 0x00
|
||||
000000D6 00 243 .db 0x00
|
||||
000000D7 00 244 .db 0x00
|
||||
000000D8 00 245 .db 0x00
|
||||
000000D9 00 246 .db 0x00
|
||||
000000DA 00 247 .db 0x00
|
||||
000000DB 00 248 .db 0x00
|
||||
000000DC 00 249 .db 0x00
|
||||
000000DD 00 250 .db 0x00
|
||||
000000DE 00 251 .db 0x00
|
||||
000000DF 00 252 .db 0x00
|
||||
000000E0 00 253 .db 0x00
|
||||
000000E1 00 254 .db 0x00
|
||||
000000E2 00 255 .db 0x00
|
||||
000000E3 00 256 .db 0x00
|
||||
000000E4 00 257 .db 0x00
|
||||
000000E5 00 258 .db 0x00
|
||||
000000E6 00 259 .db 0x00
|
||||
000000E7 00 260 .db 0x00
|
||||
000000E8 00 261 .db 0x00
|
||||
000000E9 00 262 .db 0x00
|
||||
000000EA 00 263 .db 0x00
|
||||
000000EB 00 264 .db 0x00
|
||||
000000EC 00 265 .db 0x00
|
||||
000000ED 00 266 .db 0x00
|
||||
000000EE 00 267 .db 0x00
|
||||
000000EF 00 268 .db 0x00
|
||||
000000F0 00 269 .db 0x00
|
||||
000000F1 00 270 .db 0x00
|
||||
000000F2 00 271 .db 0x00
|
||||
000000F3 00 272 .db 0x00
|
||||
000000F4 00 273 .db 0x00
|
||||
000000F5 00 274 .db 0x00
|
||||
000000F6 00 275 .db 0x00
|
||||
000000F7 00 276 .db 0x00
|
||||
000000F8 00 277 .db 0x00
|
||||
000000F9 00 278 .db 0x00
|
||||
000000FA 00 279 .db 0x00
|
||||
000000FB 00 280 .db 0x00
|
||||
000000FC 00 281 .db 0x00
|
||||
000000FD 00 282 .db 0x00
|
||||
000000FE 00 283 .db 0x00
|
||||
000000FF 00 284 .db 0x00
|
||||
00000100 00 285 .db 0x00
|
||||
00000101 00 286 .db 0x00
|
||||
00000102 00 287 .db 0x00
|
||||
00000103 00 288 .db 0x00
|
||||
00000104 12 289 .db #0x12 ; 18
|
||||
00000105 01 290 .db #0x01 ; 1
|
||||
00000106 73 291 .db #0x73 ; 115 's'
|
||||
00000107 74 292 .db #0x74 ; 116 't'
|
||||
00000108 6F 293 .db #0x6f ; 111 'o'
|
||||
00000109 70 294 .db #0x70 ; 112 'p'
|
||||
0000010A 6F 295 .db #0x6f ; 111 'o'
|
||||
0000010B 6E 296 .db #0x6e ; 110 'n'
|
||||
0000010C 65 297 .db #0x65 ; 101 'e'
|
||||
0000010D 72 298 .db #0x72 ; 114 'r'
|
||||
0000010E 72 299 .db #0x72 ; 114 'r'
|
||||
0000010F 6F 300 .db #0x6f ; 111 'o'
|
||||
00000110 72 301 .db #0x72 ; 114 'r'
|
||||
00000111 02 302 .db #0x02 ; 2
|
||||
00000112 30 303 .db #0x30 ; 48 '0'
|
||||
00000113 00 304 .db #0x00 ; 0
|
||||
00000114 31 305 .db #0x31 ; 49 '1'
|
||||
00000115 00 306 .db #0x00 ; 0
|
||||
00000116 00 307 .db #0x00 ; 0
|
||||
00000117 00 308 .db 0x00
|
||||
00000118 00 309 .db 0x00
|
||||
00000119 00 310 .db 0x00
|
||||
0000011A 00 311 .db 0x00
|
||||
0000011B 00 312 .db 0x00
|
||||
0000011C 00 313 .db 0x00
|
||||
0000011D 00 314 .db 0x00
|
||||
0000011E 00 315 .db 0x00
|
||||
0000011F 00 316 .db 0x00
|
||||
00000120 00 317 .db 0x00
|
||||
00000121 00 318 .db 0x00
|
||||
00000122 00 319 .db 0x00
|
||||
00000123 00 320 .db 0x00
|
||||
00000124 00 321 .db 0x00
|
||||
00000125 00 322 .db 0x00
|
||||
00000126 00 323 .db 0x00
|
||||
00000127 00 324 .db 0x00
|
||||
00000128 00 325 .db 0x00
|
||||
00000129 00 326 .db 0x00
|
||||
0000012A 00 327 .db 0x00
|
||||
0000012B 00 328 .db 0x00
|
||||
0000012C 00 329 .db 0x00
|
||||
0000012D 00 330 .db 0x00
|
||||
0000012E 00 331 .db 0x00
|
||||
0000012F 00 332 .db 0x00
|
||||
00000130 00 333 .db 0x00
|
||||
00000131 00 334 .db 0x00
|
||||
00000132 00 335 .db 0x00
|
||||
00000133 00 336 .db 0x00
|
||||
00000134 00 337 .db 0x00
|
||||
00000135 00 338 .db 0x00
|
||||
00000136 00 339 .db 0x00
|
||||
00000137 00 340 .db 0x00
|
||||
00000138 00 341 .db 0x00
|
||||
00000139 00 342 .db 0x00
|
||||
0000013A 00 343 .db 0x00
|
||||
0000013B 00 344 .db 0x00
|
||||
0000013C 00 345 .db 0x00
|
||||
0000013D 00 346 .db 0x00
|
||||
0000013E 00 347 .db 0x00
|
||||
0000013F 00 348 .db 0x00
|
||||
00000140 00 349 .db 0x00
|
||||
00000141 00 350 .db 0x00
|
||||
00000142 00 351 .db 0x00
|
||||
00000143 00 352 .db 0x00
|
||||
00000144 00 353 .db 0x00
|
||||
00000145 00 354 .db 0x00
|
||||
00000146 00 355 .db 0x00
|
||||
00000147 00 356 .db 0x00
|
||||
00000148 00 357 .db 0x00
|
||||
00000149 00 358 .db 0x00
|
||||
0000014A 00 359 .db 0x00
|
||||
0000014B 00 360 .db 0x00
|
||||
0000014C 00 361 .db 0x00
|
||||
0000014D 00 362 .db 0x00
|
||||
0000014E 00 363 .db 0x00
|
||||
0000014F 00 364 .db 0x00
|
||||
00000150 00 365 .db 0x00
|
||||
00000151 00 366 .db 0x00
|
||||
00000152 00 367 .db 0x00
|
||||
00000153 00 368 .db 0x00
|
||||
00000154 00 369 .db 0x00
|
||||
00000155 00 370 .db 0x00
|
||||
00000156 00 371 .db 0x00
|
||||
00000157 00 372 .db 0x00
|
||||
00000158 00 373 .db 0x00
|
||||
00000159 00 374 .db 0x00
|
||||
0000015A 00 375 .db 0x00
|
||||
0000015B 00 376 .db 0x00
|
||||
0000015C 00 377 .db 0x00
|
||||
0000015D 00 378 .db 0x00
|
||||
0000015E 00 379 .db 0x00
|
||||
0000015F 00 380 .db 0x00
|
||||
00000160 00 381 .db 0x00
|
||||
00000161 00 382 .db 0x00
|
||||
00000162 00 383 .db 0x00
|
||||
00000163 00 384 .db 0x00
|
||||
00000164 00 385 .db 0x00
|
||||
00000165 00 386 .db 0x00
|
||||
00000166 00 387 .db 0x00
|
||||
00000167 00 388 .db 0x00
|
||||
00000168 00 389 .db 0x00
|
||||
00000169 00 390 .db 0x00
|
||||
0000016A 00 391 .db 0x00
|
||||
0000016B 00 392 .db 0x00
|
||||
0000016C 00 393 .db 0x00
|
||||
0000016D 00 394 .db 0x00
|
||||
0000016E 00 395 .db 0x00
|
||||
0000016F 00 396 .db 0x00
|
||||
00000170 00 397 .db 0x00
|
||||
00000171 00 398 .db 0x00
|
||||
00000172 00 399 .db 0x00
|
||||
00000173 00 400 .db 0x00
|
||||
00000174 00 401 .db 0x00
|
||||
00000175 00 402 .db 0x00
|
||||
00000176 00 403 .db 0x00
|
||||
00000177 00 404 .db 0x00
|
||||
00000178 00 405 .db 0x00
|
||||
00000179 00 406 .db 0x00
|
||||
0000017A 00 407 .db 0x00
|
||||
0000017B 00 408 .db 0x00
|
||||
0000017C 00 409 .db 0x00
|
||||
0000017D 00 410 .db 0x00
|
||||
0000017E 00 411 .db 0x00
|
||||
0000017F 00 412 .db 0x00
|
||||
00000180 00 413 .db 0x00
|
||||
00000181 00 414 .db 0x00
|
||||
00000182 00 415 .db 0x00
|
||||
00000183 00 416 .db 0x00
|
||||
00000184 00 417 .db 0x00
|
||||
00000185 00 418 .db 0x00
|
||||
00000186 00 419 .db 0x00
|
||||
00000187 00 420 .db 0x00
|
||||
00000188 00 421 .db 0x00
|
||||
00000189 00 422 .db 0x00
|
||||
0000018A 00 423 .db 0x00
|
||||
0000018B 00 424 .db 0x00
|
||||
0000018C 00 425 .db 0x00
|
||||
0000018D 00 426 .db 0x00
|
||||
0000018E 00 427 .db 0x00
|
||||
0000018F 00 428 .db 0x00
|
||||
00000190 00 429 .db 0x00
|
||||
00000191 00 430 .db 0x00
|
||||
00000192 00 431 .db 0x00
|
||||
00000193 00 432 .db 0x00
|
||||
00000194 00 433 .db 0x00
|
||||
00000195 00 434 .db 0x00
|
||||
00000196 00 435 .db 0x00
|
||||
00000197 00 436 .db 0x00
|
||||
00000198 00 437 .db 0x00
|
||||
00000199 00 438 .db 0x00
|
||||
0000019A 00 439 .db 0x00
|
||||
0000019B 00 440 .db 0x00
|
||||
0000019C 00 441 .db 0x00
|
||||
0000019D 00 442 .db 0x00
|
||||
0000019E 00 443 .db 0x00
|
||||
0000019F 00 444 .db 0x00
|
||||
000001A0 00 445 .db 0x00
|
||||
000001A1 00 446 .db 0x00
|
||||
000001A2 00 447 .db 0x00
|
||||
000001A3 00 448 .db 0x00
|
||||
000001A4 00 449 .db 0x00
|
||||
000001A5 00 450 .db 0x00
|
||||
000001A6 00 451 .db 0x00
|
||||
000001A7 00 452 .db 0x00
|
||||
000001A8 00 453 .db 0x00
|
||||
000001A9 00 454 .db 0x00
|
||||
000001AA 00 455 .db 0x00
|
||||
000001AB 00 456 .db 0x00
|
||||
000001AC 00 457 .db 0x00
|
||||
000001AD 00 458 .db 0x00
|
||||
000001AE 00 459 .db 0x00
|
||||
000001AF 00 460 .db 0x00
|
||||
000001B0 00 461 .db 0x00
|
||||
000001B1 00 462 .db 0x00
|
||||
000001B2 00 463 .db 0x00
|
||||
000001B3 00 464 .db 0x00
|
||||
000001B4 00 465 .db 0x00
|
||||
000001B5 00 466 .db 0x00
|
||||
000001B6 00 467 .db 0x00
|
||||
000001B7 00 468 .db 0x00
|
||||
000001B8 00 469 .db 0x00
|
||||
000001B9 00 470 .db 0x00
|
||||
000001BA 00 471 .db 0x00
|
||||
000001BB 00 472 .db 0x00
|
||||
000001BC 00 473 .db 0x00
|
||||
000001BD 00 474 .db 0x00
|
||||
000001BE 00 475 .db 0x00
|
||||
000001BF 00 476 .db 0x00
|
||||
000001C0 00 477 .db 0x00
|
||||
000001C1 00 478 .db 0x00
|
||||
000001C2 00 479 .db 0x00
|
||||
000001C3 00 480 .db 0x00
|
||||
000001C4 00 481 .db 0x00
|
||||
000001C5 00 482 .db 0x00
|
||||
000001C6 00 483 .db 0x00
|
||||
000001C7 00 484 .db 0x00
|
||||
000001C8 00 485 .db 0x00
|
||||
000001C9 00 486 .db 0x00
|
||||
000001CA 00 487 .db 0x00
|
||||
000001CB 00 488 .db 0x00
|
||||
000001CC 00 489 .db 0x00
|
||||
000001CD 00 490 .db 0x00
|
||||
000001CE 00 491 .db 0x00
|
||||
000001CF 00 492 .db 0x00
|
||||
000001D0 00 493 .db 0x00
|
||||
000001D1 00 494 .db 0x00
|
||||
000001D2 00 495 .db 0x00
|
||||
000001D3 00 496 .db 0x00
|
||||
000001D4 00 497 .db 0x00
|
||||
000001D5 00 498 .db 0x00
|
||||
000001D6 00 499 .db 0x00
|
||||
000001D7 00 500 .db 0x00
|
||||
000001D8 00 501 .db 0x00
|
||||
000001D9 00 502 .db 0x00
|
||||
000001DA 00 503 .db 0x00
|
||||
000001DB 00 504 .db 0x00
|
||||
000001DC 00 505 .db 0x00
|
||||
000001DD 00 506 .db 0x00
|
||||
000001DE 00 507 .db 0x00
|
||||
000001DF 00 508 .db 0x00
|
||||
000001E0 00 509 .db 0x00
|
||||
000001E1 00 510 .db 0x00
|
||||
000001E2 00 511 .db 0x00
|
||||
000001E3 00 512 .db 0x00
|
||||
000001E4 00 513 .db 0x00
|
||||
000001E5 00 514 .db 0x00
|
||||
000001E6 00 515 .db 0x00
|
||||
000001E7 00 516 .db 0x00
|
||||
000001E8 00 517 .db 0x00
|
||||
000001E9 00 518 .db 0x00
|
||||
000001EA 00 519 .db 0x00
|
||||
000001EB 00 520 .db 0x00
|
||||
000001EC 00 521 .db 0x00
|
||||
000001ED 00 522 .db 0x00
|
||||
000001EE 00 523 .db 0x00
|
||||
000001EF 00 524 .db 0x00
|
||||
000001F0 00 525 .db 0x00
|
||||
000001F1 00 526 .db 0x00
|
||||
000001F2 00 527 .db 0x00
|
||||
000001F3 00 528 .db 0x00
|
||||
000001F4 00 529 .db 0x00
|
||||
000001F5 00 530 .db 0x00
|
||||
000001F6 00 531 .db 0x00
|
||||
000001F7 00 532 .db 0x00
|
||||
000001F8 00 533 .db 0x00
|
||||
000001F9 00 534 .db 0x00
|
||||
000001FA 00 535 .db 0x00
|
||||
000001FB 00 536 .db 0x00
|
||||
000001FC 00 537 .db 0x00
|
||||
000001FD 00 538 .db 0x00
|
||||
000001FE 00 539 .db 0x00
|
||||
000001FF 00 540 .db 0x00
|
||||
541 .area _INITIALIZER
|
||||
542 .area _CABS (ABS)
|
||||
|
||||
+6
-6
@@ -18,9 +18,9 @@ T 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 0C 00 00 00 00 00 00 00 57 69 6C 64 43 6F 6D 6D
|
||||
R 00 00 00 00
|
||||
T 18 00 00 00 61 6E 64 65 72 4D 44 4C 07 00 01 00
|
||||
T 18 00 00 00 61 6E 64 65 72 4D 44 4C 0A 00 01 00
|
||||
R 00 00 00 00
|
||||
T 24 00 00 00 00 1E 00 00 00 00 00 00 00 00 00 00
|
||||
T 24 00 00 00 00 1D 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
@@ -42,7 +42,7 @@ T 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 9C 00 00 00 00 00 00 00 00 FF FF FF FF 58 4D 20
|
||||
R 00 00 00 00
|
||||
T A8 00 00 00 50 6C 61 79 65 72 00 00 00 00 00 00
|
||||
T A8 00 00 00 50 6C 61 79 65 72 20 76 30 2E 31 00
|
||||
R 00 00 00 00
|
||||
T B4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
@@ -56,11 +56,11 @@ T E4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T FC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
T FC 00 00 00 00 00 00 00 00 00 00 00 12 01 73 74
|
||||
R 00 00 00 00
|
||||
T 08 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
T 08 01 00 00 6F 70 6F 6E 65 72 72 6F 72 02 30 00
|
||||
R 00 00 00 00
|
||||
T 14 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
T 14 01 00 00 31 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
T 20 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
R 00 00 00 00
|
||||
|
||||
+879
-546
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+126
-118
@@ -1,119 +1,127 @@
|
||||
:20800300ED7B00B8C906000E023E0EC306604F3E13D3773E01D357AFD357DB5779D357AF39
|
||||
:20802300D3573E03D377C94F3E13D3773E02D35779D357DB57DB57DB574F3E03D37779C916
|
||||
:20804300DDE5DD210000DD39F5F54F3E13D3773E02D35779D357DB57DB57DB574FDB5757F8
|
||||
:2080630059DB57DD77FCAFDD77FDDD77FEDD77FFDD7EFCDD77FEAFDD77FFDD77FCDD77FD31
|
||||
:20808300DD6EFEDB57DD77FCAFDD77FDDD77FEDD77FFDD7EFCDD77FFAFDD77FCDD77FDDD96
|
||||
:2080A30077FEDD66FF3E03D377DDF9DDE1C94F3E13D3773E02D35779D357DB57DB57FD21A5
|
||||
:2080C3000200FD39FD4E00790DB72807DB571213C3CA803E03D377E133E9474D3E13D37793
|
||||
:2080E3003E01D35778D357DB5779D3573E03D377C94F3E13D3773E01D35779D357DB57FD24
|
||||
:20810300210200FD39FD7E00D357FD7E01D357FD7E02D357FD7E03D3573E03D377E1F1F11B
|
||||
:20812300E93E13D3773E07D357DB573E03D377C97D01AF1AED797C01AF1BED79FD21020049
|
||||
:20814300FD39FD7E0001AF1CED79FD7E01FD4E02FD23CB39CB1F3D01AF26ED79FD7E023D2F
|
||||
:2081630001AF28ED793E13D3773E03D357DB57DB573E8201AF27ED793E27DBAF0738F93EF2
|
||||
:2081830003D377CD24811160EA210000CDE181E1F1F133E93E13D3773E08D357DB573E0315
|
||||
:2081A300D377C9DDE5DD210000DD394FDD5E04DD5605DD6E06DD66077BC6FF5F7ACEFF5735
|
||||
:2081C3007DCEFF6F7CCEFF67B5B2B3280EE5C5D53E01CD2A80D1C1E19120DDDDE1C97BC6E5
|
||||
:2081E300FF5F7ACEFF577DCEFF6F7CCEFF67B5B2B3C8E5D53E01CD2A80D1E1FE0228DFC943
|
||||
:20820300E5D53E03CDF480FD210200FD39FD6E003E02CDDD803EE0CD118011204E210000D8
|
||||
:20822300CDE1813E0BCD2A805F1600E133E9AFCD1180CD9781CD24813E01C90100180A202B
|
||||
:20824300052F00000000009882A282A3820100FFFF20052F00000000009882A282B98201B7
|
||||
:2082630000FFFF20052F00000000009882A282D9828100190A280B4F0000000000F782A2CF
|
||||
:20828300820C830100160A24054F00000000001A83A28223830E204572726F722120000051
|
||||
:2082A3000E0C014E6F20455350333220646574656374656421000E0C014F7574206F66208B
|
||||
:2082C3006D656D6F7279202866696C6520746F6F2062696729000E0C01506C617962616356
|
||||
:2082E3006B206572726F7220286261642066696C653F29000E20584D2F584D5A2F53334D2C
|
||||
:2083030020506C6179657220000E0C01506C6179696E672E2E2E000E2041626F75742000EB
|
||||
:208323000E0C01584D20506C617965722076312E3000DDE5DD210000DD3921ECFF39F93E76
|
||||
:20834300A2CD1180111027210000CDE1813EE4CD1180111027210000CDE1813A06B83D280D
|
||||
:208363000A3A06B8D6022808C378833E08C37A833E0CC37A833E05F533ED5B02B82A04B8CF
|
||||
:20838300CD03822130B8733E01CD2A803208B83A08B83D2804AFC36385210C0039EB210233
|
||||
:2083A300B8010400EDB0AFDD77FCDD77FDDD77FEDD77FFDD7EFBDDB6FADDB6F9DDB6F8CAA7
|
||||
:2083C300D284DD7EF9D610DD7EFADE00DD7EFBDE00301121000039EB210C0039010400EDC5
|
||||
:2083E300B0C3F683DD36EC00DD36ED10AFDD77EEDD77EF21050039EB21000039010400EDB5
|
||||
:20840300B0DD7EF1C6FFDD7EF2CE01473E00CE005F3E00CE005748435ACB3BCB18CB19DDD8
|
||||
:2084230071F779F5332100A8CD3D8B210000E5DD6EF1DD66F2E53E03CDF480DD6EFEDD6668
|
||||
:20844300FFE5DD6EFCDD66FDE53E07CDF4803EE1CD1180210000E521D007E53E03CDA681AE
|
||||
:20846300F1F1DD7EF7DD77F5DD36F6003A0260DD77F7DD6EF52600E5210002E5DD7EF7F5F2
|
||||
:20848300332100A8CD3381DD5EF1DD56F2DD6EFCDD66FD19DD75FCDD74FDDD7EFEDD8EF318
|
||||
:2084A300DD77FE3003DD34FFDD7EF8DD96F1DD77F8DD7EF9DD9EF2DD77F9DD7EFADD9EF350
|
||||
:2084C300DD77FADD7EFBDD9EF4DD77FBC3B6833A06B83D203D3A30B86F3E0BCDDD802E0572
|
||||
:2084E3003E02CDDD802A04B8E52A02B8E53E03CDF4803EF2CD1180111027210000CDE181D3
|
||||
:208503003E01CD2A803208B83A08B83D2804AFC363853EA0CD1180114042210F00CDE181C5
|
||||
:208523003E01CD2A803208B83A08B83D2804AFC363853A30B86F3E0BCDDD802E013E3ACD5B
|
||||
:20854300DD803EA6CD1180111027210000CDE1813EA1CD1180111027210000CDE1813E01CD
|
||||
:20856300DDF9DDE1C976CD0B8CB728F9C94F790DB7C876C37185218682CD948BCD688521AD
|
||||
:208583008682CDF28BAFC30380213E82CD948BCD6885213E82CDF28BAFC30380215082CD2A
|
||||
:2085A300948B3E32CD7085215082CDF28B3E02C30380216282CD948B3E32CD70852162827C
|
||||
:2085C300CDF28B3E02C30380ED4B09B81E006B260009563E0B836F3EB8CE00677AB7280AF8
|
||||
:2085E3007BD6203005721CC3D1853600C93E45F533210500E5210101E5111A86217482CDD9
|
||||
:20860300AB8B210BB8CDFF8BD5210107E5110BB8217482CD5E8BC946696C653A00DDE5DD40
|
||||
:20862300210000DD39EB014C86DD7E0407070707E60F6F2600097E1213DD7E04E60F6F26A8
|
||||
:2086430000097E12DDE1E133E93031323334353637383941424344454600DDE5DD21000061
|
||||
:20866300DD39F54D44E1D5C5116400DD6EFEDD66FFCD0E8BEB110A00CD598BC17BC630028F
|
||||
:20868300696023E5C5110A00DD6EFEDD66FFCD0E8BEB110A00CD598BC1E17BC630770303EE
|
||||
:2086A300C5110A00DD6EFEDD66FFCD598BC17BC63002DDF9DDE1C9DDE5DD210000DD39E54F
|
||||
:2086C300210000E52E3CE5DD5E04DD5605DD6E06DD6607CDE6B8F1F1010000C50E64C5CD19
|
||||
:2086E3005FB8F1F14BC5210000E52E3CE5DD5E04DD5605DD6E06DD6607CD5FB8F1F1C1512F
|
||||
:20870300D52E0A7ACD098B7B2E0ACD528B7BD1C630E1E577C1C503C5D52E0A7ACD528B7B98
|
||||
:20872300D1C1C63002E1E52323363AC1C5030303C5D52E0A7BCD098B7B2E0ACD528B7BD14A
|
||||
:20874300C1C63002DD7EFEC6044FDD7EFFCE0047C52E0A7BCD528B7BC1C63002DDF9DDE192
|
||||
:20876300E1F1F1E9210900E5210301E511BD87217482CD5E8B210700E521030CE511C7878E
|
||||
:20878300217482CD5E8B210600E5210315E511CF87217482CD5E8B210500E5210501E51183
|
||||
:2087A300D687217482CD5E8B210300E521050CE511DC87217482CD5E8BC9506174746572F2
|
||||
:2087C3006E3A23002020526F773A2300202042504D3A0054696D653A00202F2000DDE5DDC6
|
||||
:2087E300210000DD394B42EBDD7E07DDB606DDB605DDB6042830D5C5112200210000CD6921
|
||||
:20880300B9F1F1DD4E06DD4607C5DD4E04DD4605C5CDE6B8F1F14B423E22BB3E009A300978
|
||||
:20882300012200C32C88010000110000213CB8197B917A9830053E3DC340883E2D77136BA2
|
||||
:20884300627DD6227CDE0038E3212200E5210601E5113CB8217482CD5E8BDDE1E1F1F1E958
|
||||
:20886300DDE5DD210000DD3921F8FF39F93A30B86F3E0BCDDD803EA8CD118011D007210084
|
||||
:2088830000CDE1813E28CD2A80DD77FF3A31B8D6212020DD7EFFD62020193EE4CD11801102
|
||||
:2088A3001027210000CDE181217482CDF28B3E02CD0380DD7EFF3231B83E2BCD2A80DD7794
|
||||
:2088C300FA3E2CCD2A80DD77FB3E02F53321010039EB3E31CDB1803E2DCD4380DD73FCDD2C
|
||||
:2088E30072FDDD75FEDD74FF3A2FB8FD212CB8FDB602FDB601FDB600200C3E36CD4380ED0A
|
||||
:20890300532CB8222EB8DD7EFAF5332132B8CD2086210200E521030AE51132B8217482CD20
|
||||
:208923005E8BDD7EFBF5332132B8CD2086210200E5210313E51132B8217482CD5E8BD1D5BD
|
||||
:208943002134B8CD5D86210300E521031BE51134B8217482CD5E8B210000E52144ACE5DD87
|
||||
:208963005EFCDD56FDDD6EFEDD66FFCDE6B8F1E3D52137B8CDBA86210500E5210507E51180
|
||||
:2089830037B8217482CD5E8B210000E52144ACE5ED5B2CB82A2EB8CDE6B8F1E3D52137B8BC
|
||||
:2089A300CDBA86210500E521050FE51137B8217482CD5E8B2A2EB8E52A2CB8E5DD5EFCDDB9
|
||||
:2089C30056FDDD6EFEDD66FFCDE087DDF9DDE1C93BCD0880CDCB853A5EB83C200DCD31823F
|
||||
:2089E300B73E0120023E02325EB83A5EB83D280733C38C85C3DE8AAF322CB8322DB8322EAA
|
||||
:208A0300B8322FB8CD3583B720123A08B8D699200733C39F85C3DE8A33C3B585217482CD2B
|
||||
:208A2300948BCDF085CD67872131B83621CD6388FD210000FD39FD36000076FD210000FDE6
|
||||
:208A430039FD3400FD7E00D60A3807FD360000CD6388CDA18BB728273EA2CD11801110279F
|
||||
:208A6300210000CDE1813EE4CD1180111027210000CDE181217482CDF28B3E02CD0380CDCD
|
||||
:208A8300158CB728273EA2CD1180111027210000CDE1813EE4CD1180111027210000CDE1BF
|
||||
:208AA30081217482CDF28B3E04CD0380CD0B8CB728883EA2CD1180111027210000CDE1819E
|
||||
:208AC3003EE4CD1180111027210000CDE181217482CDF28BAFCD0380C33D8A33C9ED730035
|
||||
:208AE300B83207B8ED4309B8083206B82202B8ED5304B83A07B8B7CAD3893A07B8D603CA97
|
||||
:068B03007985AFC3038079
|
||||
:01BA4C00FFFA
|
||||
:03800000C3E08A50
|
||||
:208B09005D6F2600547BE680B220110610ED6A17933001833FED6A10F65FEBC906097D6CD0
|
||||
:208B29002600CB1DED6AED523001193F1710F5CB10505FC9DDE5DD210000DD39DD46043E55
|
||||
:208B490030CD0660DDE1E133E95D6FCD0B8BEBC9CD0E8BEBC9DDE5E5D5DD210000DD39DD84
|
||||
:208B6900460BDD4E0ADD5608DD5E09DD6E00DD6601D9DD6E02DD6603E5DDE1D93E03CD065C
|
||||
:188B890060D1E1DDE1E133333333E9DDE5E5DDE13E01CD0660DDE1C910
|
||||
:20B85F00DDE5DD210000DD39010000DD7E07073838DDCB0426DDCB0516DDCB0616DDCB0711
|
||||
:20B87F00167BDD96047ADD9E057DDD9E067CDD9E073012DDCB073EDDCB061EDDCB051EDD08
|
||||
:20B89F00CB041E1804044818C27BDD96047ADD9E057DDD9E067CDD9E0738147BDD96045FD5
|
||||
:20B8BF007ADD9E05577DDD9E066F7CDD9E0767DDCB073EDDCB061EDDCB051EDDCB041E797F
|
||||
:20B8DF000DB720C5DDE1C9DDE5DD210000DD39F5F5AFDD77FCDD77FDDD77FEDD77FF06203E
|
||||
:20B8FF007C07E6014FCB23CB12ED6ADDCBFC26DDCBFD16DDCBFE16DDCBFF16CB412804DD3B
|
||||
:20B91F00CBFCC6DD7EFCDD9604DD7EFDDD9E05DD7EFEDD9E06DD7EFFDD9E073826DD7EFC6A
|
||||
:20B93F00DD9604DD77FCDD7EFDDD9E05DD77FDDD7EFEDD9E06DD77FEDD7EFFDD9E07DD779C
|
||||
:0AB95F00FFCBC3109BDDF9DDE1C949
|
||||
:208BA100DDE53E1ACD0660DDE1C9DDE5E5D5DD210000DD39DD460BDD4E0ADD5608DD5E096E
|
||||
:208BC100DD6E00DD6601D9DD6E02DD6603DD7E0CF5E5DDE1D93E03CD0660F108D9E5DDE1D8
|
||||
:208BE100D93E04CD0660D1E1DDE1E13333333333E9DDE5E5DDE13E02CD0660DDE1C9AF4798
|
||||
:1E8C01004FEDB121FFFFED42EBC9DDE53E17CD0660DDE1C9DDE53E19CD0660DDE1C9C2
|
||||
:20B96900DDE5DD210000DD39F5F5F5DD73FCDD72FDDD75FEDD74FF4D44DD5E04DD56056960
|
||||
:20B9890060CD1F8C4B42DD71FEDD70FFDD7E06DD77FADD7E07DD77FBE1D1D5E5C5DD6EFACB
|
||||
:20B9A900DD66FBCD1F8CEBC1094D44DD71FEDD70FFDD5EFDDD6605C52E00550608293001BA
|
||||
:20B9C9001910FAC109DD75FEDD74FFDD5E04DD66FD2E005506082930011910FA4D44DD5E78
|
||||
:20B9E900FCDD6605C52E005506082930011910FAC1DD7505DD740609DD7505DD7406AFED65
|
||||
:20BA0900423E0017DD7707DD5EFCDD66042E005506082930011910FADD75FCDD74FDDD36F0
|
||||
:20BA29000400DD7EFCDD86045FDD7EFDDD8E0557DD7EFEDD8E066FDD7EFFDD8E0767DDF97B
|
||||
:03BA4900DDE1C973
|
||||
:178C1F004D44AF6FB00610200406087929CB111730011910F7EBC9FD
|
||||
:20800300ED7B00B8C94F3E13D3773E01D357AFD357DB5779D357AFD3573E03D377C94F3EB9
|
||||
:2080230013D3773E02D35779D357DB57DB57DB574F3E03D37779C9DDE5DD210000DD39F556
|
||||
:20804300F54F3E13D3773E02D35779D357DB57DB57DB574FDB575759DB57DD77FCAFDD77E5
|
||||
:20806300FDDD77FEDD77FFDD7EFCDD77FEAFDD77FFDD77FCDD77FDDD6EFEDB57DD77FCAF95
|
||||
:20808300DD77FDDD77FEDD77FFDD7EFCDD77FFAFDD77FCDD77FDDD77FEDD66FF3E03D377CE
|
||||
:2080A300DDF9DDE1C94F3E13D3773E02D35779D357DB57DB57FD210200FD39FD4E00790DDE
|
||||
:2080C300B72807DB571213C3C1803E03D377E133E9474D3E13D3773E01D35778D357DB5768
|
||||
:2080E30079D3573E03D377C94F3E13D3773E01D35779D357DB57FD210200FD39FD7E00D3BA
|
||||
:2081030057FD7E01D357FD7E02D357FD7E03D3573E03D377E1F1F1E93E13D3773E07D357CF
|
||||
:20812300DB573E03D377C97D01AF1AED797C01AF1BED79FD210200FD39FD7E0001AF1CEDD2
|
||||
:2081430079FD7E01FD4E02FD23CB39CB1F3D01AF26ED79FD7E023D01AF28ED793E13D377C0
|
||||
:208163003E03D357DB57DB573E8201AF27ED793E27DBAF0738F93E03D377CD1B8121640090
|
||||
:20818300CDE881E1F1F133E93E13D3773E08D357DB573E03D377C9DDE5DD210000DD39213F
|
||||
:2081A300FBFF39F9DD77FFDD73FDDD72FE2109607EDD77FB237EDD77FC2A09607DDD96FBDD
|
||||
:2081C3004F7CDD9EFC4779DD96FD78DD9EFE300F3E01CD2180DD96FF20DF3E01C3E381AFC7
|
||||
:2081E300DDF9DDE1C9DDE5DD210000DD39F5F5DD75FEDD74FF2109607EDD77FC237EDD7772
|
||||
:20820300FD2A09607DDD96FC4F7CDD9EFD4779DD96FE78DD9EFF300E3E01CD2180FE022866
|
||||
:20822300E03E01C32A82AFDDF9DDE1C9E5D53E03CDEB80FD210200FD39FD6E003E02CDD4CC
|
||||
:20824300803EE0CD0880216400CDE8813E0BCD21805F1600E133E9AFCD0880CD8B81CD1B7F
|
||||
:20826300813E01C98100190A280C7000000000008B82A582A5820100160A24054F00000036
|
||||
:208283000000A682A582AF820E20584D2F584D5A2F53334D20506C617965722076302E31A6
|
||||
:2082A3002000000E2041626F757420000E0C01584D20506C617965722076302E3100DDE51E
|
||||
:2082C300DD210000DD3921ECFF39F93EA2CD0880216400CDE8813EE4CD0880216400CDE8A8
|
||||
:2082E300813A06B83D280A3A06B8D6022808C3FE823E08C300833E0CC300833E05F533EDDC
|
||||
:208303005B02B82A04B8CD2F822130B8733E01CD21803208B83A08B83D2804AFC3E8842164
|
||||
:208323000C0039EB2102B8010400EDB0AFDD77FCDD77FDDD77FEDD77FFDD7EFBDDB6FADDD8
|
||||
:20834300B6F9DDB6F8CA5184DD7EF9D610DD7EFADE00DD7EFBDE00301121000039EB210CED
|
||||
:208363000039010400EDB0C37C83DD36EC00DD36ED10AFDD77EEDD77EF21050039EB2100AF
|
||||
:208383000039010400EDB0DD7EF1C6FFDD7EF2CE01473E00CE005F3E00CE005748435ACB0D
|
||||
:2083A3003BCB18CB19DD71F779F5332100A8CD0E8D210000E5DD6EF1DD66F2E53E03CDEB4C
|
||||
:2083C30080DD6EFEDD66FFE5DD6EFCDD66FDE53E07CDEB803EE1CD08801164003E03CD9A30
|
||||
:2083E30081DD7EF7DD77F5DD36F6003A0260DD77F7DD6EF52600E5210002E5DD7EF7F533A1
|
||||
:208403002100A8CD2A81DD5EF1DD56F2DD6EFCDD66FD19DD75FCDD74FDDD7EFEDD8EF3DDF7
|
||||
:2084230077FE3003DD34FFDD7EF8DD96F1DD77F8DD7EF9DD9EF2DD77F9DD7EFADD9EF3DDD0
|
||||
:2084430077FADD7EFBDD9EF4DD77FBC33C833A06B83D203A3A30B86F3E0BCDD4802E053E17
|
||||
:2084630002CDD4802A04B8E52A02B8E53E03CDEB803EF2CD088021FA00CDE8813E01CD21C6
|
||||
:20848300803208B83A08B83D2804AFC3E8843EA0CD0880219001CDE8813E01CD2180320824
|
||||
:2084A300B83A08B83D2804AFC3E8843A30B86F3E0BCDD4802E013E3ACDD4803EA6CD0880C4
|
||||
:2084C300216400CDE8813EA1CD0880216400CDE8813E01CD21803208B83A08B83D2804AF3E
|
||||
:2084E300C3E8843E01DDF9DDE1C976CD108EB728F9C94F790DB7C876C3F684217982CD65D7
|
||||
:208503008DCDED84217982CDF78DAFC303803BFD210000FD39FD77003EA2CD08802164006E
|
||||
:20852300CDE8813EE4CD0880216400CDE881216782CDF78D210000397E33C3038033C92107
|
||||
:208543006782CDF78DAFC3038076CD818DB728053E02CD1185CD1A8EB728053E04CD118513
|
||||
:20856300CD108EB728E3AFCD1185C34C853A8EB8F533218885CD1987CDED84216782CDF7D6
|
||||
:208583008DAFC303804E6F20455350333220666F756E64003E01CD728DFE023E01C8AFC966
|
||||
:2085A3003A08B8F53321C785CD1987CD9785B72803CD4C853E32CDF584216782CDF78D3E04
|
||||
:2085C30002C3038046696C6520746F6F206C61726765003A08B8F53321FA85CD1987CD97A0
|
||||
:2085E30085B72803CD4C853E32CDF584216782CDF78D3E02C30380506C61796261636B2095
|
||||
:208603006572726F7200ED4B09B81E006B260009563E0B836F3EB8CE00677AB7280A7BD60C
|
||||
:20862300203005721CC30F863600C9210500E5210201E5117A86216782CD2F8D210BB8CD94
|
||||
:20864300048E3E71F533D5210207E5110BB8216782CDB08D210700E5210301E51180862193
|
||||
:208663006782CD2F8D212400E5210A02E5118886216782CD2F8DC946696C653A00537461EC
|
||||
:208683007475733A00506755702F5067446E3A547261636B204573633A53746F7020537000
|
||||
:2086A3006163653A4C6561766500DDE5DD210000DD39F51E007B854F3E008C470A4FB728E6
|
||||
:2086C3001F7BD618301A3E3283DD77FE3EB8CE00DD77FFE5DD6EFEDD66FF71E11CC3B8868A
|
||||
:2086E3007BD618300C2132B81600191C3620C3E386216782DD7E04F533111800D51103094E
|
||||
:20870300D51132B8CDB08DDDF9DDE1E133E93E71F533CDAD86C9DDE5DD210000DD393BEB4F
|
||||
:208723000E0069260019463E4A816F3EB8CE0067793CDD77FF78B7280C79D611300770DD48
|
||||
:208743004EFFC32587DD4EFF3620690C2600114AB8193628690C2600114AB8193630690C13
|
||||
:208763002600114AB8193678690C2600114AB819DD7E0407070707E60FC6C05F3E00CE8747
|
||||
:20878300571A77690C2600114AB819DD7E04E60FC6C05F3E00CE87571A77690C2600114A7D
|
||||
:2087A300B8193629692600114AB81936003E72F533214AB8CDAD8633DDE1E133E930313219
|
||||
:2087C3003334353637383941424344454600DDE5DD210000DD39EB01FD87DD7E04070707CD
|
||||
:2087E30007E60F6F2600097E1213DD7E04E60F6F2600097E12DDE1E133E9303132333435CD
|
||||
:208803003637383941424344454600DDE5DD210000DD39F54D44E1D5C5116400DD6EFEDD70
|
||||
:2088230066FFCDD58CEB110A00CD2A8DC17BC63002696023E5C5110A00DD6EFEDD66FFCDDB
|
||||
:20884300D58CEB110A00CD2A8DC1E17BC630770303C5110A00DD6EFEDD66FFCD2A8DC17B6F
|
||||
:20886300C63002DDF9DDE1C9DDE5DD210000DD39E5210000E52E3CE5DD5E04DD5605DD6ECE
|
||||
:2088830006DD6607CD16B9F1F1010000C50E64C5CD8FB8F1F14BC5210000E52E3CE5DD5E74
|
||||
:2088A30004DD5605DD6E06DD6607CD8FB8F1F1C151D52E0A7ACDD08C7B2E0ACD238D7BD1AA
|
||||
:2088C300C630E1E577C1C503C5D52E0A7ACD238D7BD1C1C63002E1E52323363AC1C5030303
|
||||
:2088E30003C5D52E0A7BCDD08C7B2E0ACD238D7BD1C1C63002DD7EFEC6044FDD7EFFCE002D
|
||||
:2089030047C52E0A7BCD238D7BC1C63002DDF9DDE1E1F1F1E9210900E5210401E511B78939
|
||||
:20892300216782CD2F8D210700E521040CE511C189216782CD2F8D210600E5210415E51154
|
||||
:20894300C989216782CD2F8D210500E5210601E511D089216782CD2F8D210300E521060CDE
|
||||
:20896300E511D689216782CD2F8D116CB80E006926001936200C79D62038F4212000E521DD
|
||||
:208983000804E5216782CD2F8D210804E5216782CD8B8D7AE63F57CBFBED538CB80E002AD7
|
||||
:2089A3008CB85D7CC6C0576926001936070C79D62038ECC95061747465726E3A23002020F2
|
||||
:2089C300526F773A2300202042504D3A0054696D653A00202F2000DDE5DD210000DD394B4D
|
||||
:2089E30042EBDD7E07DDB606DDB605DDB604283069603E0529CB13CB123D20F8DD4E06DD72
|
||||
:208A03004607C5DD4E04DD4605C5EBCD16B9F1F14B423E20BB3E009A3009012000C3268A71
|
||||
:208A23000100001100002A8CB87CC6C067197B917A9830053E40C33E8A3E0777136B627DBC
|
||||
:208A4300D6207CDE0038DFDDE1E1F1F1E9DDE5DD210000DD3921F8FF39F93A30B86F3E0B48
|
||||
:208A6300CDD4803EA8CD0880213200CDE8813E28CD2180DD77FF3A31B8D621201DDD7EFF36
|
||||
:208A8300D62020163EE4CD0880216400CDE881216782CDF78D3E02CD0380DD7EFF3231B815
|
||||
:208AA3003E2BCD2180DD77FA3E2CCD2180DD77FB3E02F53321010039EB3E31CDA8803E2DEA
|
||||
:208AC300CD3A80DD73FCDD72FDDD75FEDD74FF3A2FB8FD212CB8FDB602FDB601FDB6002075
|
||||
:208AE3000C3E36CD3A80ED532CB8222EB8DD7EFAF5332162B8CDD1873E71F533210200E584
|
||||
:208B030021040AE51162B8216782CDB08DDD7EFBF5332162B8CDD1873E71F533210200E542
|
||||
:208B2300210413E51162B8216782CDB08DD1D52164B8CD0E883E71F533210300E521041B70
|
||||
:208B4300E51164B8216782CDB08D210000E52144ACE5DD5EFCDD56FDDD6EFEDD66FFCD161B
|
||||
:208B6300B9F1E3D52167B8CD6B883E71F533210500E5210607E51167B8216782CDB08D2136
|
||||
:208B83000000E52144ACE5ED5B2CB82A2EB8CD16B9F1E3D52167B8CD6B883E71F533210579
|
||||
:208BA30000E521060FE51167B8216782CDB08D2A2EB8E52A2CB8E5DD5EFCDD56FDDD6EFED6
|
||||
:208BC300DD66FFCDDA89DDF9DDE1C93BCD0986216782CD658DCD2E8621878CCD11873A8E81
|
||||
:208BE300B83C200DCD5A82B73E0120023E02328EB83A8EB83D280733C37085C3858CAF324C
|
||||
:208C03002CB8322DB8322EB8322FB8CDC182B720123A08B8D699200733C3A385C3858C3377
|
||||
:208C2300C3D685219F8CCD1187CD18892131B83621CD508AFD210000FD39FD36000076FDF2
|
||||
:208C4300210000FD39FD3400FD7E00D60A3807FD360000CD508ACD818DB728053E02CD1138
|
||||
:208C630085CD1A8EB728053E04CD1185CD108EB72804AFCD1185CD048DB728C2CD4285C3B8
|
||||
:208C8300418C33C94C6F6164696E672C20706C6561736520776169742E2E2E00506C61798F
|
||||
:208CA300696E6700ED7300B83207B8ED4309B8083206B82202B8ED5304B83A07B8B7CACE61
|
||||
:0D8CC3008B3A07B8D603CAFE84AFC3038006
|
||||
:01B99900FFAE
|
||||
:03800000C3A78C87
|
||||
:208CD0005D6F2600547BE680B220110610ED6A17933001833FED6A10F65FEBC906097D6C08
|
||||
:208CF0002600CB1DED6AED523001193F1710F5CB10505FC9DDE53E10CD0660DDE1C9DDE53C
|
||||
:208D1000DD210000DD39DD46043E30CD0660DDE1E133E95D6FCDD28CEBC9CDD58CEBC9DD42
|
||||
:208D3000E5E5D5DD210000DD39DD460BDD4E0ADD5608DD5E09DD6E00DD6601D9DD6E02DDFC
|
||||
:208D50006603E5DDE1D93E03CD0660D1E1DDE1E133333333E9DDE5E5DDE13E01CD0660DDF0
|
||||
:118D7000E1C908DDE53E53CD066020023EFFDDE1C9D4
|
||||
:20B88F00DDE5DD210000DD39010000DD7E07073838DDCB0426DDCB0516DDCB0616DDCB07E1
|
||||
:20B8AF00167BDD96047ADD9E057DDD9E067CDD9E073012DDCB073EDDCB061EDDCB051EDDD8
|
||||
:20B8CF00CB041E1804044818C27BDD96047ADD9E057DDD9E067CDD9E0738147BDD96045FA5
|
||||
:20B8EF007ADD9E05577DDD9E066F7CDD9E0767DDCB073EDDCB061EDDCB051EDDCB041E794F
|
||||
:20B90F000DB720C5DDE1C9DDE5DD210000DD39F5F5AFDD77FCDD77FDDD77FEDD77FF06200D
|
||||
:20B92F007C07E6014FCB23CB12ED6ADDCBFC26DDCBFD16DDCBFE16DDCBFF16CB412804DD0A
|
||||
:20B94F00CBFCC6DD7EFCDD9604DD7EFDDD9E05DD7EFEDD9E06DD7EFFDD9E073826DD7EFC3A
|
||||
:20B96F00DD9604DD77FCDD7EFDDD9E05DD77FDDD7EFEDD9E06DD77FEDD7EFFDD9E07DD776C
|
||||
:0AB98F00FFCBC3109BDDF9DDE1C919
|
||||
:208D8100DDE53E1ACD0660DDE1C9DDE5E5DD210000DD39DD5606DD5E07DD6E00DD6601E554
|
||||
:208DA100DDE13E05CD0660EBE1DDE1E13333E9DDE5E5D5DD210000DD39DD460BDD4E0ADDF4
|
||||
:208DC1005608DD5E09DD6E00DD6601D9DD6E02DD6603DD7E0CF5E5DDE1D93E03CD0660F1B8
|
||||
:208DE10008D9E5DDE1D93E04CD0660D1E1DDE1E13333333333E9DDE5E5DDE13E02CD06608F
|
||||
:208E0100DDE1C9AF474FEDB121FFFFED42EBC9DDE53E17CD0660DDE1C9DDE53E19CD0660C8
|
||||
:038E2100DDE1C9C7
|
||||
:00000001FF
|
||||
|
||||
+2339
-2002
File diff suppressed because it is too large
Load Diff
+84
-78
@@ -7,7 +7,7 @@ Area Addr Size Decimal Bytes (A
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
00000000 .__.ABS. mul
|
||||
00000000 .__.ABS. wc_key_pgup
|
||||
00000000 l__BSEG
|
||||
00000000 l__BSS
|
||||
00000000 l__CABS
|
||||
@@ -23,98 +23,103 @@ Area Addr Size Decimal Bytes (A
|
||||
00000001 l__INITIALIZED
|
||||
00000001 l__INITIALIZER
|
||||
00000003 l__HEADER0
|
||||
000001ED l__HOME
|
||||
00000C33 l__CODE
|
||||
0000105E l__DATA
|
||||
0000010A l__HOME
|
||||
00000E21 l__CODE
|
||||
0000108E l__DATA
|
||||
00008003 s__CODE
|
||||
0000A800 s__DATA
|
||||
0000B85E s__INITIALIZED
|
||||
0000B85F s__HOME
|
||||
0000BA4C s__GSFINAL
|
||||
0000BA4C s__GSINIT
|
||||
0000BA4C s__INITIALIZER
|
||||
0000BA4D s__BSEG
|
||||
0000BA4D s__BSS
|
||||
0000BA4D s__HEAP
|
||||
0000B88E s__INITIALIZED
|
||||
0000B88F s__HOME
|
||||
0000B999 s__GSFINAL
|
||||
0000B999 s__GSINIT
|
||||
0000B999 s__INITIALIZER
|
||||
0000B99A s__BSEG
|
||||
0000B99A s__BSS
|
||||
0000B99A s__HEAP
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 2.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_CODE 00008003 00000C33 = 3123. bytes (REL,CON)
|
||||
_CODE 00008003 00000E21 = 3617. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
00008003 _wc_exit main
|
||||
00008008 _wc_set_freq_14mhz main
|
||||
00008011 _esp_cmd main
|
||||
0000802A _esp_rd_reg8 main
|
||||
00008043 _esp_rd_reg32 main
|
||||
000080B1 _esp_rd_regs main
|
||||
000080DD _esp_wr_reg8 main
|
||||
000080F4 _esp_wr_reg32 main
|
||||
00008124 _esp_wr_end main
|
||||
00008133 _esp_send_dma main
|
||||
00008197 _esp_rd_end main
|
||||
000081A6 _esp_wait_status main
|
||||
000081E1 _esp_wait_busy main
|
||||
00008203 _esp_create_obj main
|
||||
00008231 _esp_init main
|
||||
0000823E _err_no_esp main
|
||||
00008250 _err_out_of_mem main
|
||||
00008262 _err_playback main
|
||||
00008274 _win_xm main
|
||||
00008286 _win_about main
|
||||
00008335 _play_xm main
|
||||
00008568 _wait_esc_key main
|
||||
00008570 _wait_frames main
|
||||
00008579 _about main
|
||||
0000858C _error_esp main
|
||||
0000859F _error_oom main
|
||||
000085B5 _error_playback main
|
||||
000085CB _copy_file_name main
|
||||
000085F0 _xm_draw_static_labels main
|
||||
00008620 _put_hex2 main
|
||||
0000865D _put_dec3 main
|
||||
000086BA _put_time main
|
||||
00008767 _xm_draw_stats_labels main
|
||||
000087E0 _draw_progress_bar main
|
||||
00008863 _xm_update_info main
|
||||
000089D3 _main_start main
|
||||
00008AE0 _main main
|
||||
00008B09 __divuchar divunsigned
|
||||
00008B0B __divu8 divunsigned
|
||||
00008B0E __divu16 divunsigned
|
||||
00008B0E __divuint divunsigned
|
||||
00008B3D _wc_load512 wc_load512
|
||||
00008B52 __moduchar modunsigned
|
||||
00008B59 __moduint modunsigned
|
||||
00008B5E _wc_prsrw wc_prsrw
|
||||
00008B94 _wc_prwow wc_prwow
|
||||
00008BA1 _wc_key_pgdn wc_key_pgdn
|
||||
00008BAB _wc_prsrw_attr wc_prsrw_attr
|
||||
00008BF2 _wc_rresb wc_rresb
|
||||
00008BFF _strlen strlen
|
||||
00008008 _esp_cmd main
|
||||
00008021 _esp_rd_reg8 main
|
||||
0000803A _esp_rd_reg32 main
|
||||
000080A8 _esp_rd_regs main
|
||||
000080D4 _esp_wr_reg8 main
|
||||
000080EB _esp_wr_reg32 main
|
||||
0000811B _esp_wr_end main
|
||||
0000812A _esp_send_dma main
|
||||
0000818B _esp_rd_end main
|
||||
0000819A _esp_wait_status main
|
||||
000081E8 _esp_wait_busy main
|
||||
0000822F _esp_create_obj main
|
||||
0000825A _esp_init main
|
||||
00008267 _win_xm main
|
||||
00008279 _win_about main
|
||||
000082C1 _play_xm main
|
||||
000084ED _wait_esc_key main
|
||||
000084F5 _wait_frames main
|
||||
000084FE _about main
|
||||
00008511 _unload_and_exit main
|
||||
00008542 _leave_playing_and_exit main
|
||||
0000854C _wait_for_manual_exit main
|
||||
00008570 _error_esp main
|
||||
00008597 _stop_on_error main
|
||||
000085A3 _error_oom main
|
||||
000085D6 _error_playback main
|
||||
00008609 _copy_file_name main
|
||||
0000862E _xm_draw_static_labels main
|
||||
000086AD _xm_set_status_attr main
|
||||
00008711 _xm_set_status main
|
||||
00008719 _xm_set_status_code main
|
||||
000087D1 _put_hex2 main
|
||||
0000880E _put_dec3 main
|
||||
0000886B _put_time main
|
||||
00008918 _xm_draw_stats_labels main
|
||||
000089DA _draw_progress_bar main
|
||||
00008A50 _xm_update_info main
|
||||
00008BCE _main_start main
|
||||
00008CA7 _main main
|
||||
00008CD0 __divuchar divunsigned
|
||||
00008CD2 __divu8 divunsigned
|
||||
00008CD5 __divu16 divunsigned
|
||||
00008CD5 __divuint divunsigned
|
||||
00008D04 _wc_key_space wc_key_space
|
||||
00008D0E _wc_load512 wc_load512
|
||||
00008D23 __moduchar modunsigned
|
||||
00008D2A __moduint modunsigned
|
||||
00008D2F _wc_prsrw wc_prsrw
|
||||
00008D65 _wc_prwow wc_prwow
|
||||
ASxxxx Linker V05.50.4-SDLD, page 3.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_CODE 00008003 00000C33 = 3123. bytes (REL,CON)
|
||||
_CODE 00008003 00000E21 = 3617. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
00008C0B _wc_key_esc wc_key_esc
|
||||
00008C15 _wc_key_pgup wc_key_pgup
|
||||
00008C1F __mulint mul
|
||||
00008C21 __mul16 mul
|
||||
00008D72 _wc_prm_pl wc_prm_pl
|
||||
00008D81 _wc_key_pgdn wc_key_pgdn
|
||||
00008D8B _wc_gadrw wc_gadrw
|
||||
00008DB0 _wc_prsrw_attr wc_prsrw_attr
|
||||
00008DF7 _wc_rresb wc_rresb
|
||||
00008E04 _strlen strlen
|
||||
00008E10 _wc_key_esc wc_key_esc
|
||||
00008E1A _wc_key_pgup wc_key_pgup
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 4.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_DATA 0000A800 0000105E = 4190. bytes (REL,CON)
|
||||
_DATA 0000A800 0000108E = 4238. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
@@ -129,36 +134,36 @@ _DATA 0000A800 0000105E = 4190. bytes (R
|
||||
0000B82C _total_samples main
|
||||
0000B830 _xm_handle main
|
||||
0000B831 _last_track_status main
|
||||
|
||||
0000B88C _bar_attr_ofs main
|
||||
ASxxxx Linker V05.50.4-SDLD, page 5.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_INITIALIZED 0000B85E 00000001 = 1. bytes (REL,CON)
|
||||
_INITIALIZED 0000B88E 00000001 = 1. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
0000B85E _state_esp main
|
||||
0000B88E _state_esp main
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 6.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_HOME 0000B85F 000001ED = 493. bytes (REL,CON)
|
||||
_HOME 0000B88F 0000010A = 266. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
0000B85F __modulong _modulong
|
||||
0000B8E6 __divulong _divulong
|
||||
0000B969 __mullong _mullong
|
||||
0000B88F __modulong _modulong
|
||||
0000B916 __divulong _divulong
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 7.
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Addr Size Decimal Bytes (Attributes)
|
||||
-------------------------------- ---- ---- ------- ----- ------------
|
||||
_INITIALIZER 0000BA4C 00000001 = 1. bytes (REL,CON)
|
||||
_INITIALIZER 0000B999 00000001 = 1. bytes (REL,CON)
|
||||
|
||||
Value Global Global Defined In Module
|
||||
----- -------------------------------- ------------------------
|
||||
@@ -182,20 +187,21 @@ obj/crt0.rel [ crt0 ]
|
||||
Libraries Linked [ object file ]
|
||||
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ divunsigned.rel ]
|
||||
vgm_wc_api.lib [ wc_key_space.rel ]
|
||||
vgm_wc_api.lib [ wc_load512.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ modunsigned.rel ]
|
||||
vgm_wc_api.lib [ wc_prsrw.rel ]
|
||||
vgm_wc_api.lib [ wc_prwow.rel ]
|
||||
vgm_wc_api.lib [ wc_prm_pl.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ _modulong.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ _divulong.rel ]
|
||||
vgm_wc_api.lib [ wc_key_pgdn.rel ]
|
||||
vgm_wc_api.lib [ wc_gadrw.rel ]
|
||||
vgm_wc_api.lib [ wc_prsrw_attr.rel ]
|
||||
vgm_wc_api.lib [ wc_rresb.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ strlen.rel ]
|
||||
vgm_wc_api.lib [ wc_key_esc.rel ]
|
||||
vgm_wc_api.lib [ wc_key_pgup.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ _mullong.rel ]
|
||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ mul.rel ]
|
||||
|
||||
ASxxxx Linker V05.50.4-SDLD, page 10.
|
||||
|
||||
|
||||
+72
-68
@@ -14,73 +14,77 @@ DEF s__HEADER0 0x0
|
||||
DEF l__INITIALIZED 0x1
|
||||
DEF l__INITIALIZER 0x1
|
||||
DEF l__HEADER0 0x3
|
||||
DEF l__HOME 0x1ED
|
||||
DEF l__CODE 0xC33
|
||||
DEF l__DATA 0x105E
|
||||
DEF l__HOME 0x10A
|
||||
DEF l__CODE 0xE21
|
||||
DEF l__DATA 0x108E
|
||||
DEF s__CODE 0x8003
|
||||
DEF s__DATA 0xA800
|
||||
DEF s__INITIALIZED 0xB85E
|
||||
DEF s__HOME 0xB85F
|
||||
DEF s__GSFINAL 0xBA4C
|
||||
DEF s__GSINIT 0xBA4C
|
||||
DEF s__INITIALIZER 0xBA4C
|
||||
DEF s__BSEG 0xBA4D
|
||||
DEF s__BSS 0xBA4D
|
||||
DEF s__HEAP 0xBA4D
|
||||
DEF s__INITIALIZED 0xB88E
|
||||
DEF s__HOME 0xB88F
|
||||
DEF s__GSFINAL 0xB999
|
||||
DEF s__GSINIT 0xB999
|
||||
DEF s__INITIALIZER 0xB999
|
||||
DEF s__BSEG 0xB99A
|
||||
DEF s__BSS 0xB99A
|
||||
DEF s__HEAP 0xB99A
|
||||
DEF _wc_exit 0x8003
|
||||
DEF _wc_set_freq_14mhz 0x8008
|
||||
DEF _esp_cmd 0x8011
|
||||
DEF _esp_rd_reg8 0x802A
|
||||
DEF _esp_rd_reg32 0x8043
|
||||
DEF _esp_rd_regs 0x80B1
|
||||
DEF _esp_wr_reg8 0x80DD
|
||||
DEF _esp_wr_reg32 0x80F4
|
||||
DEF _esp_wr_end 0x8124
|
||||
DEF _esp_send_dma 0x8133
|
||||
DEF _esp_rd_end 0x8197
|
||||
DEF _esp_wait_status 0x81A6
|
||||
DEF _esp_wait_busy 0x81E1
|
||||
DEF _esp_create_obj 0x8203
|
||||
DEF _esp_init 0x8231
|
||||
DEF _err_no_esp 0x823E
|
||||
DEF _err_out_of_mem 0x8250
|
||||
DEF _err_playback 0x8262
|
||||
DEF _win_xm 0x8274
|
||||
DEF _win_about 0x8286
|
||||
DEF _play_xm 0x8335
|
||||
DEF _wait_esc_key 0x8568
|
||||
DEF _wait_frames 0x8570
|
||||
DEF _about 0x8579
|
||||
DEF _error_esp 0x858C
|
||||
DEF _error_oom 0x859F
|
||||
DEF _error_playback 0x85B5
|
||||
DEF _copy_file_name 0x85CB
|
||||
DEF _xm_draw_static_labels 0x85F0
|
||||
DEF _put_hex2 0x8620
|
||||
DEF _put_dec3 0x865D
|
||||
DEF _put_time 0x86BA
|
||||
DEF _xm_draw_stats_labels 0x8767
|
||||
DEF _draw_progress_bar 0x87E0
|
||||
DEF _xm_update_info 0x8863
|
||||
DEF _main_start 0x89D3
|
||||
DEF _main 0x8AE0
|
||||
DEF __divuchar 0x8B09
|
||||
DEF __divu8 0x8B0B
|
||||
DEF __divu16 0x8B0E
|
||||
DEF __divuint 0x8B0E
|
||||
DEF _wc_load512 0x8B3D
|
||||
DEF __moduchar 0x8B52
|
||||
DEF __moduint 0x8B59
|
||||
DEF _wc_prsrw 0x8B5E
|
||||
DEF _wc_prwow 0x8B94
|
||||
DEF _wc_key_pgdn 0x8BA1
|
||||
DEF _wc_prsrw_attr 0x8BAB
|
||||
DEF _wc_rresb 0x8BF2
|
||||
DEF _strlen 0x8BFF
|
||||
DEF _wc_key_esc 0x8C0B
|
||||
DEF _wc_key_pgup 0x8C15
|
||||
DEF __mulint 0x8C1F
|
||||
DEF __mul16 0x8C21
|
||||
DEF _esp_cmd 0x8008
|
||||
DEF _esp_rd_reg8 0x8021
|
||||
DEF _esp_rd_reg32 0x803A
|
||||
DEF _esp_rd_regs 0x80A8
|
||||
DEF _esp_wr_reg8 0x80D4
|
||||
DEF _esp_wr_reg32 0x80EB
|
||||
DEF _esp_wr_end 0x811B
|
||||
DEF _esp_send_dma 0x812A
|
||||
DEF _esp_rd_end 0x818B
|
||||
DEF _esp_wait_status 0x819A
|
||||
DEF _esp_wait_busy 0x81E8
|
||||
DEF _esp_create_obj 0x822F
|
||||
DEF _esp_init 0x825A
|
||||
DEF _win_xm 0x8267
|
||||
DEF _win_about 0x8279
|
||||
DEF _play_xm 0x82C1
|
||||
DEF _wait_esc_key 0x84ED
|
||||
DEF _wait_frames 0x84F5
|
||||
DEF _about 0x84FE
|
||||
DEF _unload_and_exit 0x8511
|
||||
DEF _leave_playing_and_exit 0x8542
|
||||
DEF _wait_for_manual_exit 0x854C
|
||||
DEF _error_esp 0x8570
|
||||
DEF _stop_on_error 0x8597
|
||||
DEF _error_oom 0x85A3
|
||||
DEF _error_playback 0x85D6
|
||||
DEF _copy_file_name 0x8609
|
||||
DEF _xm_draw_static_labels 0x862E
|
||||
DEF _xm_set_status_attr 0x86AD
|
||||
DEF _xm_set_status 0x8711
|
||||
DEF _xm_set_status_code 0x8719
|
||||
DEF _put_hex2 0x87D1
|
||||
DEF _put_dec3 0x880E
|
||||
DEF _put_time 0x886B
|
||||
DEF _xm_draw_stats_labels 0x8918
|
||||
DEF _draw_progress_bar 0x89DA
|
||||
DEF _xm_update_info 0x8A50
|
||||
DEF _main_start 0x8BCE
|
||||
DEF _main 0x8CA7
|
||||
DEF __divuchar 0x8CD0
|
||||
DEF __divu8 0x8CD2
|
||||
DEF __divu16 0x8CD5
|
||||
DEF __divuint 0x8CD5
|
||||
DEF _wc_key_space 0x8D04
|
||||
DEF _wc_load512 0x8D0E
|
||||
DEF __moduchar 0x8D23
|
||||
DEF __moduint 0x8D2A
|
||||
DEF _wc_prsrw 0x8D2F
|
||||
DEF _wc_prwow 0x8D65
|
||||
DEF _wc_prm_pl 0x8D72
|
||||
DEF _wc_key_pgdn 0x8D81
|
||||
DEF _wc_gadrw 0x8D8B
|
||||
DEF _wc_prsrw_attr 0x8DB0
|
||||
DEF _wc_rresb 0x8DF7
|
||||
DEF _strlen 0x8E04
|
||||
DEF _wc_key_esc 0x8E10
|
||||
DEF _wc_key_pgup 0x8E1A
|
||||
DEF _fs_buf 0xA800
|
||||
DEF _ret_sp 0xB800
|
||||
DEF _filesize 0xB802
|
||||
@@ -92,8 +96,8 @@ DEF _file_name 0xB80B
|
||||
DEF _total_samples 0xB82C
|
||||
DEF _xm_handle 0xB830
|
||||
DEF _last_track_status 0xB831
|
||||
DEF _state_esp 0xB85E
|
||||
DEF __modulong 0xB85F
|
||||
DEF __divulong 0xB8E6
|
||||
DEF __mullong 0xB969
|
||||
DEF _bar_attr_ofs 0xB88C
|
||||
DEF _state_esp 0xB88E
|
||||
DEF __modulong 0xB88F
|
||||
DEF __divulong 0xB916
|
||||
LOAD obj/out.ihx
|
||||
|
||||
+819
-639
File diff suppressed because it is too large
Load Diff
+71
-59
@@ -63,105 +63,117 @@ Hexadecimal [32-Bits]
|
||||
|
||||
Symbol Table
|
||||
|
||||
0 ___str_11 000007BA R
|
||||
0 ___str_12 000007C4 R
|
||||
0 ___str_13 000007CC R
|
||||
0 ___str_14 000007D3 R
|
||||
0 ___str_15 000007D9 R
|
||||
0 ___str_9 00000617 R
|
||||
0 ___str_12 000009B4 R
|
||||
0 ___str_13 000009BE R
|
||||
0 ___str_14 000009C6 R
|
||||
0 ___str_15 000009CD R
|
||||
0 ___str_16 000009D3 R
|
||||
0 ___str_17 00000C84 R
|
||||
0 ___str_18 00000C9C R
|
||||
0 ___str_4 00000585 R
|
||||
0 ___str_5 000005C4 R
|
||||
0 ___str_6 000005F7 R
|
||||
0 ___str_7 00000677 R
|
||||
0 ___str_8 0000067D R
|
||||
0 ___str_9 00000685 R
|
||||
__divuchar ******** GX
|
||||
__divuint ******** GX
|
||||
__divulong ******** GX
|
||||
__moduchar ******** GX
|
||||
__moduint ******** GX
|
||||
__modulong ******** GX
|
||||
__mullong ******** GX
|
||||
0 __str_0 00000295 R
|
||||
0 __str_1 0000029F R
|
||||
0 __str_2 000002A0 R
|
||||
0 __str_3 000002B6 R
|
||||
0 __str_4 000002D6 R
|
||||
0 __str_5 000002F4 R
|
||||
0 __str_6 00000309 R
|
||||
0 __str_7 00000317 R
|
||||
0 __str_8 00000320 R
|
||||
0 __str_0 00000288 R
|
||||
0 __str_1 000002A2 R
|
||||
0 __str_2 000002A3 R
|
||||
0 __str_3 000002AC R
|
||||
7 __xinit__state_esp 00000000 R
|
||||
0 _about 00000576 GR
|
||||
1 _barbuf 0000103C R
|
||||
0 _about 000004FB GR
|
||||
1 _bar_attr_ofs 0000108C GR
|
||||
1 _barbuf 0000106C R
|
||||
1 _call_type 00001007 GR
|
||||
0 _copy_file_name 000005C8 GR
|
||||
1 _decbuf 00001034 R
|
||||
0 _draw_progress_bar 000007DD GR
|
||||
0 _err_no_esp 0000023B GR
|
||||
0 _err_out_of_mem 0000024D GR
|
||||
0 _err_playback 0000025F GR
|
||||
0 _error_esp 00000589 GR
|
||||
0 _error_oom 0000059C GR
|
||||
0 _error_playback 000005B2 GR
|
||||
0 _esp_cmd 0000000E GR
|
||||
0 _esp_create_obj 00000200 GR
|
||||
0 _esp_init 0000022E GR
|
||||
0 _esp_rd_end 00000194 GR
|
||||
0 _esp_rd_reg32 00000040 GR
|
||||
0 _esp_rd_reg8 00000027 GR
|
||||
0 _esp_rd_regs 000000AE GR
|
||||
0 _esp_send_dma 00000130 GR
|
||||
0 _esp_wait_busy 000001DE GR
|
||||
0 _esp_wait_status 000001A3 GR
|
||||
0 _esp_wr_end 00000121 GR
|
||||
0 _esp_wr_reg32 000000F1 GR
|
||||
0 _esp_wr_reg8 000000DA GR
|
||||
0 _copy_file_name 00000606 GR
|
||||
1 _decbuf 00001064 R
|
||||
0 _draw_progress_bar 000009D7 GR
|
||||
0 _error_esp 0000056D GR
|
||||
0 _error_oom 000005A0 GR
|
||||
0 _error_playback 000005D3 GR
|
||||
0 _esp_cmd 00000005 GR
|
||||
0 _esp_create_obj 0000022C GR
|
||||
0 _esp_init 00000257 GR
|
||||
0 _esp_rd_end 00000188 GR
|
||||
0 _esp_rd_reg32 00000037 GR
|
||||
0 _esp_rd_reg8 0000001E GR
|
||||
0 _esp_rd_regs 000000A5 GR
|
||||
0 _esp_send_dma 00000127 GR
|
||||
0 _esp_wait_busy 000001E5 GR
|
||||
0 _esp_wait_status 00000197 GR
|
||||
0 _esp_wr_end 00000118 GR
|
||||
0 _esp_wr_reg32 000000E8 GR
|
||||
0 _esp_wr_reg8 000000D1 GR
|
||||
1 _file_ext 00001006 GR
|
||||
1 _file_name 0000100B GR
|
||||
1 _filesize 00001002 GR
|
||||
1 _fs_buf 00000000 GR
|
||||
1 _hexbuf 00001032 R
|
||||
1 _hexbuf 00001062 R
|
||||
1 _last_esp_status 00001008 GR
|
||||
1 _last_track_status 00001031 GR
|
||||
0 _leave_playing_and_exit 0000053F GR
|
||||
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 3
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Symbol Table
|
||||
|
||||
0 _main 00000ADD GR
|
||||
0 _main_start 000009D0 GR
|
||||
0 _main 00000CA4 GR
|
||||
0 _main_start 00000BCB GR
|
||||
1 _p_file_name 00001009 GR
|
||||
0 _play_xm 00000332 GR
|
||||
0 _put_dec3 0000065A GR
|
||||
0 _put_hex2 0000061D GR
|
||||
0 _put_hex2_hexch_10000_106 00000649 R
|
||||
0 _put_time 000006B7 GR
|
||||
0 _play_xm 000002BE GR
|
||||
0 _put_dec3 0000080B GR
|
||||
0 _put_hex2 000007CE GR
|
||||
0 _put_hex2_hexch_10000_132 000007FA R
|
||||
0 _put_time 00000868 GR
|
||||
1 _ret_sp 00001000 GR
|
||||
2 _state_esp 00000000 GR
|
||||
1 _status_buf 00001032 R
|
||||
1 _status_code_buf 0000104A R
|
||||
0 _stop_on_error 00000594 GR
|
||||
_strlen ******** GX
|
||||
1 _timebuf 00001037 R
|
||||
1 _timebuf 00001067 R
|
||||
1 _total_samples 0000102C GR
|
||||
0 _wait_esc_key 00000565 GR
|
||||
0 _wait_frames 0000056D GR
|
||||
0 _unload_and_exit 0000050E GR
|
||||
0 _wait_esc_key 000004EA GR
|
||||
0 _wait_for_manual_exit 00000549 GR
|
||||
0 _wait_frames 000004F2 GR
|
||||
0 _wc_exit 00000000 GR
|
||||
_wc_gadrw ******** GX
|
||||
_wc_key_esc ******** GX
|
||||
_wc_key_pgdn ******** GX
|
||||
_wc_key_pgup ******** GX
|
||||
_wc_key_space ******** GX
|
||||
_wc_load512 ******** GX
|
||||
_wc_prm_pl ******** GX
|
||||
_wc_prsrw ******** GX
|
||||
_wc_prsrw_attr ******** GX
|
||||
_wc_prwow ******** GX
|
||||
_wc_rresb ******** GX
|
||||
0 _wc_set_freq_14mhz 00000005 GR
|
||||
0 _win_about 00000283 GR
|
||||
0 _win_xm 00000271 GR
|
||||
0 _xm_draw_static_labels 000005ED GR
|
||||
0 _xm_draw_stats_labels 00000764 GR
|
||||
0 _win_about 00000276 GR
|
||||
0 _win_xm 00000264 GR
|
||||
0 _xm_draw_static_labels 0000062B GR
|
||||
0 _xm_draw_stats_labels 00000915 GR
|
||||
1 _xm_handle 00001030 GR
|
||||
0 _xm_update_info 00000860 GR
|
||||
0 _xm_set_status 0000070E GR
|
||||
0 _xm_set_status_attr 000006AA GR
|
||||
0 _xm_set_status_code 00000716 GR
|
||||
0 _xm_set_status_code_hexch_10000_129 000007BD R
|
||||
0 _xm_update_info 00000A4D GR
|
||||
|
||||
|
||||
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 4
|
||||
Hexadecimal [32-Bits]
|
||||
|
||||
Area Table
|
||||
|
||||
0 _CODE size B06 flags 0
|
||||
1 _DATA size 105E flags 0
|
||||
0 _CODE size CCD flags 0
|
||||
1 _DATA size 108E flags 0
|
||||
2 _INITIALIZED size 1 flags 0
|
||||
3 _DABS size 0 flags 8
|
||||
4 _HOME size 0 flags 0
|
||||
|
||||
+30
-10
@@ -13,7 +13,7 @@
|
||||
#define SPI_ESP_CS_ON 0x13
|
||||
#define SPI_ESP_CS_OFF 0x03
|
||||
|
||||
u32 esp_wait_busy(u32 timeout);
|
||||
u8 esp_wait_busy(u16 max_frames);
|
||||
|
||||
void esp_cmd(u8 cmd)
|
||||
{
|
||||
@@ -117,7 +117,7 @@ void esp_send_dma(u16 a, u8 p, u16 l, u16 n)
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
|
||||
esp_wr_end();
|
||||
esp_wait_busy(60000);
|
||||
esp_wait_busy(100); // 2s - esp32 consuming one DMA'd chunk should be near-instant
|
||||
}
|
||||
|
||||
void esp_rd_end()
|
||||
@@ -128,18 +128,38 @@ void esp_rd_end()
|
||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||
}
|
||||
|
||||
u32 esp_wait_status(u8 status, u32 timeout)
|
||||
// Both wait against WC's own frame timer (_TMN, 0x6009 - a 16-bit counter
|
||||
// incremented at 50Hz by WC's interrupt) instead of a raw SPI-poll
|
||||
// iteration count. An iteration count isn't real time - it depends on the
|
||||
// current Z80 clock, which xmplay doesn't control (WC's turbo setting
|
||||
// could be anything when the plugin starts) - and an uncalibrated guess
|
||||
// already caused one real bug (TRACK_INIT timing out early on heavier
|
||||
// files, see main.c's esp_wait_ready() history/comment). Returns 1 if the
|
||||
// awaited condition was seen within max_frames, 0 on timeout.
|
||||
u8 esp_wait_status(u8 status, u16 max_frames)
|
||||
{
|
||||
while (--timeout) if (esp_rd_reg8(ESP_REG_STATUS) == status) break;
|
||||
u16 start = *(u16*)_TMN;
|
||||
|
||||
return timeout;
|
||||
while ((u16)(*(u16*)_TMN - start) < max_frames)
|
||||
{
|
||||
if (esp_rd_reg8(ESP_REG_STATUS) == status)
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 esp_wait_busy(u32 timeout)
|
||||
{
|
||||
while (--timeout) if (esp_rd_reg8(ESP_REG_STATUS) != ESP_ST_BUSY) break;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return timeout;
|
||||
u8 esp_wait_busy(u16 max_frames)
|
||||
{
|
||||
u16 start = *(u16*)_TMN;
|
||||
|
||||
while ((u16)(*(u16*)_TMN - start) < max_frames)
|
||||
{
|
||||
if (esp_rd_reg8(ESP_REG_STATUS) != ESP_ST_BUSY)
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int esp_create_obj(u32 size, u8 type)
|
||||
@@ -147,7 +167,7 @@ int esp_create_obj(u32 size, u8 type)
|
||||
esp_wr_reg32(ESP_REG_DATA_SIZE, size);
|
||||
esp_wr_reg8(ESP_REG_OBJ_TYPE, type);
|
||||
esp_cmd(ESP_CMD_MAKE_OBJECT);
|
||||
esp_wait_busy(20000);
|
||||
esp_wait_busy(100); // 2s - object allocation should be near-instant
|
||||
// +++ check error
|
||||
|
||||
return esp_rd_reg8(ESP_REG_OBJ_HANDLE);
|
||||
|
||||
+258
-136
@@ -61,51 +61,6 @@ enum
|
||||
};
|
||||
|
||||
// --- Windows ------------------------------
|
||||
const WC_TX_WINDOW err_no_esp =
|
||||
{
|
||||
/* window with header and text */ WC_WIND_HDR_TXT,
|
||||
/* cursor color mask */ 0,
|
||||
/* X,Y (position) */ 24, 10,
|
||||
/* W,H (size) */ 32, 5,
|
||||
/* paper/ink (window color) */ 0x2F,
|
||||
/* -reserved- */ 0,
|
||||
/* window restore buffer address */ 0,
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " Error! ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "No ESP32 detected!",
|
||||
};
|
||||
|
||||
const WC_TX_WINDOW err_out_of_mem =
|
||||
{
|
||||
/* window with header and text */ WC_WIND_HDR_TXT,
|
||||
/* cursor color mask */ 0,
|
||||
/* X,Y (position) */ 255, 255,
|
||||
/* W,H (size) */ 32, 5,
|
||||
/* paper/ink (window color) */ 0x2F,
|
||||
/* -reserved- */ 0,
|
||||
/* window restore buffer address */ 0,
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " Error! ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "Out of memory (file too big)",
|
||||
};
|
||||
|
||||
const WC_TX_WINDOW err_playback =
|
||||
{
|
||||
/* window with header and text */ WC_WIND_HDR_TXT,
|
||||
/* cursor color mask */ 0,
|
||||
/* X,Y (position) */ 255, 255,
|
||||
/* W,H (size) */ 32, 5,
|
||||
/* paper/ink (window color) */ 0x2F,
|
||||
/* -reserved- */ 0,
|
||||
/* window restore buffer address */ 0,
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " Error! ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "Playback error (bad file?)",
|
||||
};
|
||||
|
||||
// STEP 1 of the gradual reintroduction: bigger, fixed position (not
|
||||
// auto-center) - no wc_prsrw() calls yet, still just static wnd_txt like
|
||||
// before. This exact size/position was already confirmed stable on its own
|
||||
@@ -115,14 +70,14 @@ const WC_TX_WINDOW win_xm =
|
||||
/* window with header and text + shadow (0x80) */ WC_WIND_HDR_TXT | 0x80,
|
||||
/* cursor color mask */ 0,
|
||||
/* X,Y (position) */ 25, 10,
|
||||
/* W,H (size) */ 40, 11,
|
||||
/* paper/ink (window color) */ 0x4F,
|
||||
/* W,H (size) */ 40, 12,
|
||||
/* paper/ink (window color) */ 0x70, // white paper, black ink/border - matches VGMPLAY.WMF's CLR_WIN = WC_COLOR(WC_WHITE, WC_BLACK)
|
||||
/* -reserved- */ 0,
|
||||
/* window restore buffer address */ 0,
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " XM/XMZ/S3M Player ",
|
||||
/* header text */ "\x0E" " XM/XMZ/S3M Player v0.1 ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "Playing..."
|
||||
/* window text */ "" // replaced by the dynamic "Status:" line, see xm_set_status()
|
||||
};
|
||||
|
||||
const WC_TX_WINDOW win_about =
|
||||
@@ -137,9 +92,12 @@ const WC_TX_WINDOW win_about =
|
||||
/* separators */ 0, 0,
|
||||
/* header text */ "\x0E" " About ",
|
||||
/* footer text */ "",
|
||||
/* window text */ "\x0E\x0C\x01" "XM Player v1.0"
|
||||
/* window text */ "\x0E\x0C\x01" "XM Player v0.1"
|
||||
};
|
||||
|
||||
void xm_set_status(const char *msg); // defined below, used by error_*() before that point
|
||||
void xm_set_status_code(const char *msg, u8 code); // ditto
|
||||
|
||||
bool esp_init()
|
||||
{
|
||||
esp_cmd(ESP_CMD_NOP);
|
||||
@@ -156,9 +114,9 @@ bool esp_init()
|
||||
bool play_xm()
|
||||
{
|
||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
||||
esp_wait_busy(10000);
|
||||
esp_wait_busy(100); // 2s - both should be near-instant
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(10000);
|
||||
esp_wait_busy(100);
|
||||
|
||||
u8 obj_type;
|
||||
switch (file_ext)
|
||||
@@ -186,7 +144,7 @@ bool play_xm()
|
||||
esp_wr_reg32(ESP_REG_DATA_SIZE, s);
|
||||
esp_wr_reg32(ESP_REG_DATA_OFFSET, offs);
|
||||
esp_cmd(ESP_CMD_WRITE_OBJECT);
|
||||
esp_wait_status(ESP_ST_DATA_M2S, 2000);
|
||||
esp_wait_status(ESP_ST_DATA_M2S, 100); // 2s - near-instant state transition
|
||||
esp_send_dma((u16)fs_buf, *(u8*)_PAGE2, 512, sec);
|
||||
|
||||
offs += s;
|
||||
@@ -202,7 +160,7 @@ bool play_xm()
|
||||
esp_wr_reg8(ESP_REG_OBJ_TYPE, OBJ_TYPE_XM);
|
||||
esp_wr_reg32(ESP_REG_DATA_SIZE, filesize);
|
||||
esp_cmd(ESP_CMD_UNZIP);
|
||||
esp_wait_busy(10000);
|
||||
esp_wait_busy(250); // 5s - decompression time scales with file size
|
||||
|
||||
last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
||||
if (last_esp_status != ESP_ST_READY)
|
||||
@@ -210,14 +168,12 @@ bool play_xm()
|
||||
}
|
||||
|
||||
esp_cmd(ESP_CMD_TRACK_INIT);
|
||||
// TRACK_INIT now blocks on the firmware side while it measures the song's
|
||||
// total sample count, capped at XM_MEASURE_MAX_US = 5s (tracker.cpp) - so
|
||||
// this needs to comfortably cover 5s of real time, not the ~150ms the old
|
||||
// 10000-iteration budget worked out to at 14MHz (each esp_wait_busy()
|
||||
// iteration is a raw SPI status-register read, not a real-time wait).
|
||||
// Iteration count isn't hardware-calibrated, so this is padded well past
|
||||
// the 5s firmware cap - bump further if TRACK_INIT still times out.
|
||||
esp_wait_busy(1000000);
|
||||
// 400 frames = 8s, comfortably past the firmware's 5s song-length
|
||||
// measurement cap (XM_MEASURE_MAX_US in tracker.cpp) - see esp_wait_busy()
|
||||
// in esp32.c for why this needs to be real-time-based, not an iteration
|
||||
// count (an uncalibrated guess here previously caused ESP_ERR_INV_XM_HANDLE
|
||||
// failures on heavier files that legitimately needed close to the full 5s).
|
||||
esp_wait_busy(400);
|
||||
|
||||
last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
||||
if (last_esp_status != ESP_ST_READY)
|
||||
@@ -229,10 +185,14 @@ bool play_xm()
|
||||
esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
||||
esp_wr_reg8(ESP_REG_TRACK_MAX_LOOP_COUNT, 1);
|
||||
esp_cmd(ESP_CMD_TRACK_SET_PARAMS);
|
||||
esp_wait_busy(10000);
|
||||
esp_wait_busy(100); // 2s - both should be near-instant
|
||||
|
||||
esp_cmd(ESP_CMD_TRACK_PLAY);
|
||||
esp_wait_busy(10000);
|
||||
esp_wait_busy(100);
|
||||
|
||||
last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
||||
if (last_esp_status != ESP_ST_READY)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -269,27 +229,99 @@ void about()
|
||||
wc_exit(WC_EXIT);
|
||||
}
|
||||
|
||||
// Shared by the main playback key-poll loop and wait_for_manual_exit() -
|
||||
// stops the track, kills the esp32 objects, closes the window and hands
|
||||
// control back to WC with the given signal.
|
||||
void unload_and_exit(WC_EXIT_SIGNAL sig)
|
||||
{
|
||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
||||
esp_wait_busy(100); // 2s - both should be near-instant
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(100);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(sig);
|
||||
}
|
||||
|
||||
// Space - just leave, no esp32 commands at all: the track keeps playing on
|
||||
// its own after the plugin exits, only our window/UI goes away.
|
||||
void leave_playing_and_exit()
|
||||
{
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_EXIT);
|
||||
}
|
||||
|
||||
// Used after an error when stoponerror=1: keeps responding to the same
|
||||
// navigation keys as normal playback, but issues no esp32 commands and
|
||||
// touches nothing on screen on its own - only acts once the user actually
|
||||
// presses PgDn/PgUp/Esc, so the error stays visible for as long as needed.
|
||||
void wait_for_manual_exit()
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
__asm
|
||||
halt
|
||||
__endasm;
|
||||
|
||||
if (wc_key_pgdn())
|
||||
unload_and_exit(WC_NEXT_FILE);
|
||||
|
||||
if (wc_key_pgup())
|
||||
unload_and_exit(WC_PREV_FILE);
|
||||
|
||||
if (wc_key_esc())
|
||||
unload_and_exit(WC_EXIT);
|
||||
}
|
||||
}
|
||||
|
||||
// Errors used to open their own separate popup window; now they're just
|
||||
// another Status value on the already-open win_xm, per user request - one
|
||||
// less window type to keep track of, and errors show up in the same place
|
||||
// as everything else instead of a separate modal-looking box.
|
||||
void error_esp()
|
||||
{
|
||||
wc_prwow(&err_no_esp);
|
||||
// esp_init() currently always returns true (no real detection logic yet,
|
||||
// see its "+++ detect" comment), so state_esp is the only thing that can
|
||||
// land here - shown anyway for when real detection is added.
|
||||
xm_set_status_code("No ESP32 found", state_esp);
|
||||
wait_esc_key();
|
||||
wc_rresb(&err_no_esp);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_EXIT);
|
||||
}
|
||||
|
||||
// wc_prm_pl(1) reads the "stoponerror" INI parameter declared in wc_h.c -
|
||||
// the FIRST (and only) declared parameter, and per WC's own PRM_PL doc
|
||||
// ("i:A' - номер параметра (от 1 до 8)") that's queried 1-based, not
|
||||
// 0-based as a third-party reference wrongly suggested (which is why this
|
||||
// never actually triggered - always asking for a nonexistent parameter 0).
|
||||
// Option 2 ("1") means stop instead of moving on to the next file; option 1
|
||||
// ("0", the default) keeps the old auto-advance behavior. 0xFF (param
|
||||
// missing from an old/malformed header) is treated the same as the default.
|
||||
u8 stop_on_error()
|
||||
{
|
||||
return wc_prm_pl(1) == 2;
|
||||
}
|
||||
|
||||
void error_oom()
|
||||
{
|
||||
wc_prwow(&err_out_of_mem);
|
||||
xm_set_status_code("File too large", last_esp_status);
|
||||
|
||||
if (stop_on_error())
|
||||
wait_for_manual_exit();
|
||||
|
||||
wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
|
||||
wc_rresb(&err_out_of_mem);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_NEXT_FILE);
|
||||
}
|
||||
|
||||
void error_playback()
|
||||
{
|
||||
wc_prwow(&err_playback);
|
||||
xm_set_status_code("Playback error", last_esp_status);
|
||||
|
||||
if (stop_on_error())
|
||||
wait_for_manual_exit();
|
||||
|
||||
wait_frames(50); // show the error for ~1 second (50Hz), then auto-advance
|
||||
wc_rresb(&err_playback);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_NEXT_FILE);
|
||||
}
|
||||
|
||||
@@ -314,21 +346,106 @@ void copy_file_name()
|
||||
// Coloring (PRIAT) via demyanenko-d/VGMPLAY.WMF's wc_prsrw_attr() - our own
|
||||
// three hand-rolled attempts all corrupted esp32 file loading; retesting
|
||||
// with their library now that build.bat pins SDCC 4.6.0 + --sdcccall 1.
|
||||
#define ROW_FILE 1
|
||||
#define ATTR_CAPTION 0x45 // cyan ink - "File:" caption
|
||||
#define ROW_FILE 2 // row 1 left blank - a gap below the header, was too cramped right against it
|
||||
// Attribute byte for wc_prsrw_attr() is (paper<<4)|ink, 0=black..7=white
|
||||
// (confirmed on hardware via the old cyan "File:" caption, 0x45 = paper 4
|
||||
// green/ink 5 cyan). White paper (7) throughout to match win_xm's own base
|
||||
// color (0x70). Static captions ("File:", "Status:", "Pattern:", etc.) just
|
||||
// use plain wc_prsrw() and inherit the window's own black ink - no override
|
||||
// needed. ATTR_VALUE (blue) is for anything we actually write/update
|
||||
// (filename, status text, live stats, progress bar); ATTR_ERROR (red)
|
||||
// overrides that specifically for error text (see xm_set_status_code()).
|
||||
#define ATTR_VALUE 0x71 // blue on white
|
||||
#define ATTR_ERROR 0x72 // red on white
|
||||
|
||||
// Status: replaces the window's old baked-in "Playing..." text with a
|
||||
// dynamic field - shows "Loading..." while play_xm() streams the file to
|
||||
// the esp32 (can take a noticeable while for a big file - without this the
|
||||
// window opens with just "File:" and nothing else visibly changes until
|
||||
// playback starts, which reads as a hung interface), then whatever state/
|
||||
// error is worth surfacing from there on (checked against ESP_REG_STATUS/
|
||||
// ESP_REG_TRACK_STATUS as those checks get added).
|
||||
#define ROW_STATUS 3
|
||||
#define STATUS_VALUE_X 9
|
||||
#define STATUS_VALUE_WIDTH 24
|
||||
|
||||
static char status_buf[STATUS_VALUE_WIDTH];
|
||||
|
||||
#define ROW_HINT 10 // one blank row after it, before the bottom border
|
||||
#define HINT_TEXT "PgUp/PgDn:Track Esc:Stop Space:Leave"
|
||||
|
||||
void xm_draw_static_labels()
|
||||
{
|
||||
wc_prsrw_attr(&win_xm, "File:", ROW_FILE, 1, 5, ATTR_CAPTION);
|
||||
wc_prsrw(&win_xm, file_name, ROW_FILE, 7, strlen(file_name));
|
||||
wc_prsrw(&win_xm, "File:", ROW_FILE, 1, 5);
|
||||
wc_prsrw_attr(&win_xm, file_name, ROW_FILE, 7, strlen(file_name), ATTR_VALUE);
|
||||
wc_prsrw(&win_xm, "Status:", ROW_STATUS, 1, 7);
|
||||
// Centered: 38 usable columns (1..38) minus 36-char HINT_TEXT leaves a
|
||||
// 1-column margin each side, so it starts at column 2.
|
||||
wc_prsrw(&win_xm, HINT_TEXT, ROW_HINT, 2, sizeof(HINT_TEXT) - 1);
|
||||
}
|
||||
|
||||
// msg must be in #8000-#BFFF (a string literal or a global/static buffer,
|
||||
// same constraint as every other wc_prsrw() text pointer here) - pads with
|
||||
// spaces to STATUS_VALUE_WIDTH so a shorter message never leaves stray
|
||||
// characters from a longer previous one.
|
||||
void xm_set_status_attr(const char *msg, u8 attr)
|
||||
{
|
||||
u8 i = 0;
|
||||
|
||||
while (msg[i] && i < STATUS_VALUE_WIDTH)
|
||||
{
|
||||
status_buf[i] = msg[i];
|
||||
i++;
|
||||
}
|
||||
while (i < STATUS_VALUE_WIDTH)
|
||||
status_buf[i++] = ' ';
|
||||
|
||||
wc_prsrw_attr(&win_xm, status_buf, ROW_STATUS, STATUS_VALUE_X, STATUS_VALUE_WIDTH, attr);
|
||||
}
|
||||
|
||||
void xm_set_status(const char *msg)
|
||||
{
|
||||
xm_set_status_attr(msg, ATTR_VALUE);
|
||||
}
|
||||
|
||||
// Same as xm_set_status(), but appends " (0xXX)" with the raw esp status/
|
||||
// error code - for on-screen diagnostics, so a failure doesn't need a
|
||||
// hardware debugger to tell exactly which ESP_ST_*/ESP_ERR_* value it was.
|
||||
static char status_code_buf[24];
|
||||
|
||||
void xm_set_status_code(const char *msg, u8 code)
|
||||
{
|
||||
static const char hexch[] = "0123456789ABCDEF";
|
||||
u8 i = 0;
|
||||
|
||||
while (msg[i] && i < sizeof(status_code_buf) - 7)
|
||||
{
|
||||
status_code_buf[i] = msg[i];
|
||||
i++;
|
||||
}
|
||||
|
||||
status_code_buf[i++] = ' ';
|
||||
status_code_buf[i++] = '(';
|
||||
status_code_buf[i++] = '0';
|
||||
status_code_buf[i++] = 'x';
|
||||
status_code_buf[i++] = hexch[(code >> 4) & 0xF];
|
||||
status_code_buf[i++] = hexch[code & 0xF];
|
||||
status_code_buf[i++] = ')';
|
||||
status_code_buf[i] = 0;
|
||||
|
||||
xm_set_status_attr(status_code_buf, ATTR_ERROR);
|
||||
}
|
||||
|
||||
// --- Live status display (STEP 3, no coloring - plain wc_prsrw only) -----
|
||||
#define ROW_STATS 3
|
||||
#define ROW_TIME 5
|
||||
#define ROW_BAR 6
|
||||
#define BAR_X 1
|
||||
#define BAR_WIDTH 34
|
||||
#define ROW_STATS 4
|
||||
#define ROW_TIME 6
|
||||
#define ROW_BAR 8 // blank rows between each of these for spacing
|
||||
// Window content is 40 wide with a 1-char border each side (38 usable
|
||||
// columns, x=1..38) - BAR_X=4/BAR_WIDTH=32 gives a 3-column margin on
|
||||
// both sides (4-1=3 before, 38-(4+32-1)=3 after). Adjust if the actual
|
||||
// border turns out different on hardware.
|
||||
#define BAR_X 4
|
||||
#define BAR_WIDTH 32
|
||||
|
||||
void put_hex2(char *dst, u8 val)
|
||||
{
|
||||
@@ -356,16 +473,6 @@ void put_time(char *dst, u32 sec)
|
||||
dst[4] = '0' + s % 10;
|
||||
}
|
||||
|
||||
void xm_draw_stats_labels()
|
||||
{
|
||||
wc_prsrw(&win_xm, "Pattern:#", ROW_STATS, 1, 9);
|
||||
wc_prsrw(&win_xm, " Row:#", ROW_STATS, 12, 7);
|
||||
wc_prsrw(&win_xm, " BPM:", ROW_STATS, 21, 6);
|
||||
|
||||
wc_prsrw(&win_xm, "Time:", ROW_TIME, 1, 5);
|
||||
wc_prsrw(&win_xm, " / ", ROW_TIME, 12, 3);
|
||||
}
|
||||
|
||||
// wc_prsrw()'s text pointer MUST be in #8000-#BFFF (our own code/data
|
||||
// window) - but this plugin runs on WC's OWN stack, which lives in a
|
||||
// DIFFERENT window (#4000-#7FFF, per plugins/READ_ME.TXT: "стек... в Win 1
|
||||
@@ -380,8 +487,39 @@ static char decbuf[3];
|
||||
static char timebuf[5];
|
||||
static char barbuf[BAR_WIDTH];
|
||||
|
||||
#define BAR_FILLED_CH '='
|
||||
#define BAR_EMPTY_CH '-'
|
||||
// Attribute plane offset for a character cell = (char_addr & 0x3FFF) | 0x0080
|
||||
// (same convention VGMPLAY.WMF's own progress bar uses on this same TS-Conf
|
||||
// text hardware) - both planes sit in the #C000-#FFFF window that PRWOW/
|
||||
// PRSRW/GADRW etc. all leave mapped in on exit. Computed once in
|
||||
// xm_draw_stats_labels() (window position is fixed for the plugin's
|
||||
// lifetime) - draw_progress_bar() only ever writes attribute bytes there,
|
||||
// recoloring the background to grow a solid bar instead of drawing "="/"-"
|
||||
// characters.
|
||||
u16 bar_attr_ofs;
|
||||
|
||||
#define ATTR_BAR_FILLED 0x40 // green paper, black ink - filled portion (matches VGMPLAY.WMF's WC_COLOR(WC_GREEN, WC_BLACK))
|
||||
#define ATTR_BAR_EMPTY 0x07 // black paper, white ink - unfilled portion
|
||||
|
||||
void xm_draw_stats_labels()
|
||||
{
|
||||
u8 i;
|
||||
|
||||
wc_prsrw(&win_xm, "Pattern:#", ROW_STATS, 1, 9);
|
||||
wc_prsrw(&win_xm, " Row:#", ROW_STATS, 12, 7);
|
||||
wc_prsrw(&win_xm, " BPM:", ROW_STATS, 21, 6);
|
||||
|
||||
wc_prsrw(&win_xm, "Time:", ROW_TIME, 1, 5);
|
||||
wc_prsrw(&win_xm, " / ", ROW_TIME, 12, 3);
|
||||
|
||||
for (i = 0; i < BAR_WIDTH; i++)
|
||||
barbuf[i] = ' ';
|
||||
wc_prsrw(&win_xm, barbuf, ROW_BAR, BAR_X, BAR_WIDTH);
|
||||
|
||||
bar_attr_ofs = (wc_gadrw(&win_xm, ROW_BAR, BAR_X) & 0x3FFF) | 0x0080;
|
||||
|
||||
for (i = 0; i < BAR_WIDTH; i++)
|
||||
*(volatile u8*)(0xC000 + bar_attr_ofs + i) = ATTR_BAR_EMPTY;
|
||||
}
|
||||
|
||||
void draw_progress_bar(u32 samples, u32 total)
|
||||
{
|
||||
@@ -397,9 +535,7 @@ void draw_progress_bar(u32 samples, u32 total)
|
||||
filled = 0; // total length unknown (measurement timed out) - show empty
|
||||
|
||||
for (i = 0; i < BAR_WIDTH; i++)
|
||||
barbuf[i] = (i < filled) ? BAR_FILLED_CH : BAR_EMPTY_CH;
|
||||
|
||||
wc_prsrw(&win_xm, barbuf, ROW_BAR, BAR_X, BAR_WIDTH);
|
||||
*(volatile u8*)(0xC000 + bar_attr_ofs + i) = (i < filled) ? ATTR_BAR_FILLED : ATTR_BAR_EMPTY;
|
||||
}
|
||||
|
||||
void xm_update_info()
|
||||
@@ -410,7 +546,7 @@ void xm_update_info()
|
||||
|
||||
esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
||||
esp_cmd(ESP_CMD_TRACK_GET_INFO);
|
||||
esp_wait_busy(2000);
|
||||
esp_wait_busy(50); // 1s - a plain info read should be near-instant
|
||||
|
||||
// TRACK_GET_INFO already writes ESP_REG_TRACK_STATUS (same register
|
||||
// TRACK_GET_STATE reports), so no separate command is needed to catch the
|
||||
@@ -419,7 +555,7 @@ void xm_update_info()
|
||||
if (last_track_status == TRACK_OBJ_ST_PLAYING && status == TRACK_OBJ_ST_STOPPED)
|
||||
{
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(10000);
|
||||
esp_wait_busy(100);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_NEXT_FILE);
|
||||
}
|
||||
@@ -434,19 +570,19 @@ void xm_update_info()
|
||||
total_samples = esp_rd_reg32(ESP_REG_TRACK_TOTAL_SAMPLES);
|
||||
|
||||
put_hex2(hexbuf, pattern);
|
||||
wc_prsrw(&win_xm, hexbuf, ROW_STATS, 10, 2);
|
||||
wc_prsrw_attr(&win_xm, hexbuf, ROW_STATS, 10, 2, ATTR_VALUE);
|
||||
|
||||
put_hex2(hexbuf, row);
|
||||
wc_prsrw(&win_xm, hexbuf, ROW_STATS, 19, 2);
|
||||
wc_prsrw_attr(&win_xm, hexbuf, ROW_STATS, 19, 2, ATTR_VALUE);
|
||||
|
||||
put_dec3(decbuf, bpm);
|
||||
wc_prsrw(&win_xm, decbuf, ROW_STATS, 27, 3);
|
||||
wc_prsrw_attr(&win_xm, decbuf, ROW_STATS, 27, 3, ATTR_VALUE);
|
||||
|
||||
put_time(timebuf, samples / 44100UL);
|
||||
wc_prsrw(&win_xm, timebuf, ROW_TIME, 7, 5);
|
||||
wc_prsrw_attr(&win_xm, timebuf, ROW_TIME, 7, 5, ATTR_VALUE);
|
||||
|
||||
put_time(timebuf, total_samples / 44100UL);
|
||||
wc_prsrw(&win_xm, timebuf, ROW_TIME, 15, 5);
|
||||
wc_prsrw_attr(&win_xm, timebuf, ROW_TIME, 15, 5, ATTR_VALUE);
|
||||
|
||||
draw_progress_bar(samples, total_samples);
|
||||
|
||||
@@ -456,14 +592,22 @@ void main_start()
|
||||
{
|
||||
u8 frame_ctr;
|
||||
|
||||
// Pin the Z80 clock for the whole plugin lifetime - our esp_wait_busy()
|
||||
// timeouts are iteration counters, not real time, so leaving WC's turbo
|
||||
// setting as-is would make esp32 SPI timing margins depend on whatever
|
||||
// frequency happened to be active before the plugin started.
|
||||
wc_set_freq_14mhz();
|
||||
|
||||
copy_file_name();
|
||||
|
||||
// Open the window before anything esp32-related runs, including the
|
||||
// detection check - errors go into "Status:" on this same window (see
|
||||
// error_esp() etc.) rather than a separate popup, and a big file's
|
||||
// transfer in play_xm() can take a noticeable while, so nothing on
|
||||
// screen during either would read as a hung interface. This used to be
|
||||
// deferred until after play_xm() succeeded, because opening a window
|
||||
// before esp32 activity used to corrupt the transfer - that was tied to
|
||||
// our old hand-rolled PRSRW/PRIAT wrappers, not to window timing itself,
|
||||
// and no longer applies now that we're on the real vgm_wc_api library
|
||||
// (see project memory).
|
||||
wc_prwow(&win_xm);
|
||||
xm_draw_static_labels();
|
||||
xm_set_status("Loading, please wait...");
|
||||
|
||||
if (state_esp == 0xFF)
|
||||
state_esp = esp_init() ? 1 : 2;
|
||||
|
||||
@@ -484,11 +628,7 @@ void main_start()
|
||||
return;
|
||||
}
|
||||
|
||||
// Draw the status window only AFTER play_xm() has already finished the
|
||||
// file transfer and issued TRACK_INIT/TRACK_PLAY - drawing a window
|
||||
// beforehand previously corrupted the esp32 transfer (see project memory).
|
||||
wc_prwow(&win_xm);
|
||||
xm_draw_static_labels();
|
||||
xm_set_status("Playing");
|
||||
xm_draw_stats_labels();
|
||||
last_track_status = TRACK_OBJ_ST_PLAYING;
|
||||
xm_update_info();
|
||||
@@ -509,34 +649,16 @@ void main_start()
|
||||
}
|
||||
|
||||
if (wc_key_pgdn()) // PgDn - unload and go to next file
|
||||
{
|
||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
||||
esp_wait_busy(10000);
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(10000);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_NEXT_FILE);
|
||||
}
|
||||
unload_and_exit(WC_NEXT_FILE);
|
||||
|
||||
if (wc_key_pgup()) // PgUp - unload and go to previous file
|
||||
{
|
||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
||||
esp_wait_busy(10000);
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(10000);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_PREV_FILE);
|
||||
}
|
||||
unload_and_exit(WC_PREV_FILE);
|
||||
|
||||
if (wc_key_esc()) // Esc - unload and exit
|
||||
{
|
||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
||||
esp_wait_busy(10000);
|
||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||
esp_wait_busy(10000);
|
||||
wc_rresb(&win_xm);
|
||||
wc_exit(WC_EXIT);
|
||||
}
|
||||
unload_and_exit(WC_EXIT);
|
||||
|
||||
if (wc_key_space()) // Space - leave the track playing, just exit
|
||||
leave_playing_and_exit();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+13
-22
@@ -23,9 +23,22 @@ u8 wc_load512(u16 dest, u8 blocks);
|
||||
u8 wc_key_esc(void);
|
||||
u8 wc_key_pgup(void);
|
||||
u8 wc_key_pgdn(void);
|
||||
u8 wc_key_space(void);
|
||||
void wc_prsrw(void *win, const u8 *text, u8 y, u8 x, u16 len);
|
||||
void wc_prsrw_attr(void *win, const u8 *text, u8 y, u8 x, u16 len, u8 attr);
|
||||
|
||||
// y/x are 1-based; returns the character cell's address (relative to the
|
||||
// #C000 window GADRW/PRWOW/PRSRW etc. all leave mapped in on exit) - see
|
||||
// main.c's bar_attr_ofs for how the attribute-plane byte is derived from it.
|
||||
u16 wc_gadrw(void *win, u8 y, u8 x);
|
||||
|
||||
// param_num is 1-based (matching WC's own PRM_PL doc, "i:A' - номер
|
||||
// параметра (от 1 до 8)" - NOT 0-based as a third-party reference wrongly
|
||||
// suggested, see main.c's stop_on_error()); returns the 1-based selected
|
||||
// option index ("от 1 до 10"), or 0xFF if the plugin header doesn't declare
|
||||
// that parameter at all.
|
||||
u8 wc_prm_pl(u8 param_num);
|
||||
|
||||
// wc_exit is ours, not theirs - it unwinds our own crt0.s's saved SP
|
||||
// (_ret_sp) to return control to WC, so there's no equivalent in their
|
||||
// library to borrow. Adjusted for sdcccall(1): a single u8 argument now
|
||||
@@ -39,25 +52,3 @@ void wc_exit(u8 rc) __naked
|
||||
ret
|
||||
__endasm;
|
||||
}
|
||||
|
||||
// _TURBOPL (0x0E) is also ours - not wrapped by vgm_wc_api.lib. Our
|
||||
// esp_wait_busy()/esp_wr_end()/etc. timeouts are plain iteration counters,
|
||||
// not real-time based, so they implicitly assume a specific Z80 clock; if WC
|
||||
// was left in turbo mode before the plugin started, the same iteration
|
||||
// budget covers less real time and could cut SPI exchanges with the esp32
|
||||
// short. Pinning a known frequency for the whole plugin lifetime removes
|
||||
// that as a variable - set once at startup, left as-is on exit (per user
|
||||
// request, not restored to whatever WC had before). No parameters (avoids
|
||||
// depending on exactly how two u8 args would be register-assigned under
|
||||
// --sdcccall 1 - not worth the risk for a fixed value), and IX isn't
|
||||
// preserved since _WCAPI clobbering it is already tolerated by every other
|
||||
// call in this file.
|
||||
void wc_set_freq_14mhz() __naked
|
||||
{
|
||||
__asm
|
||||
ld b, #0x00 ; type: Z80 frequency
|
||||
ld c, #0x02 ; %10 = 14 MHz
|
||||
ld a, #_TURBOPL
|
||||
jp _WCAPI
|
||||
__endasm;
|
||||
}
|
||||
|
||||
+19
-3
@@ -2,11 +2,18 @@
|
||||
#include <defs.h>
|
||||
#include <wc_h.h>
|
||||
|
||||
// STOPONERROR_PARAM: index passed to wc_prm_pl() to read this back (0-based,
|
||||
// so this is the 1st and only declared parameter). Its declared options are
|
||||
// "0" (default, at 1-based option index 1 - keep the old auto-advance
|
||||
// behavior) and "1" (option index 2 - stop instead of moving to the next
|
||||
// file after an error). See main.c's error_oom()/error_playback().
|
||||
#define STOPONERROR_PARAM 0
|
||||
|
||||
static const WC_HDR hdr =
|
||||
{
|
||||
/* +00 -reserved- */ "",
|
||||
/* +16 Magic string */ {'W', 'i', 'l', 'd', 'C', 'o', 'm', 'm', 'a', 'n', 'd', 'e', 'r', 'M', 'D', 'L'},
|
||||
/* +32 Format version */ 7,
|
||||
/* +32 Format version */ 10, // WC_PLUGIN_VERSION - v1.09+ needed for the INI param list below (PRM_PL)
|
||||
/* +33 -reserved- */ "",
|
||||
/* +34 Number of pages */ 1,
|
||||
/* +35 Page at 0x8000 */ 0,
|
||||
@@ -21,6 +28,15 @@ static const WC_HDR hdr =
|
||||
/* */ },
|
||||
/* +160 0x00 */ "",
|
||||
/* +161 Max file size */ 0xFFFFFFFF,
|
||||
/* +165 Plugin name */ "XM Player",
|
||||
/* +197 Starting condition */ SC_MENU // also run by extension
|
||||
/* +165 Plugin name */ "XM Player v0.1",
|
||||
/* +197 Starting condition */ SC_MENU, // also run by extension
|
||||
/* +198 -reserved- */ "",
|
||||
/* +260 INI parameters */ {
|
||||
/* record length (incl. this byte): 1+1+11+1+4 = 18 */ 18,
|
||||
/* default option (1-based) */ 1,
|
||||
/* parameter name, no terminator, no CAPS */ 's','t','o','p','o','n','e','r','r','o','r',
|
||||
/* option count */ 2,
|
||||
/* "0",0, "1",0 */ '0', 0, '1', 0,
|
||||
/* end of parameter list */ 0
|
||||
/* */ }
|
||||
};
|
||||
|
||||
+2
-1
@@ -32,5 +32,6 @@ typedef struct
|
||||
u32 file_max_size; /* +161 Max file size */
|
||||
char name[32]; /* +165 Plugin name */
|
||||
SCOND cond; /* +197 Starting condition */
|
||||
u8 res4[314]; /* +198 -reserved- */
|
||||
u8 res4[62]; /* +198 -reserved- */
|
||||
u8 ini_params[252]; /* +260 INI parameter list (WC v1.09+, PRM_PL) */
|
||||
} WC_HDR;
|
||||
|
||||
Reference in New Issue
Block a user