Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a279a0eed3 | ||
|
|
ee64fb85a9 |
+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.
+21
-26
@@ -74,7 +74,7 @@ _hdr:
|
|||||||
.db #0x4d ; 77 'M'
|
.db #0x4d ; 77 'M'
|
||||||
.db #0x44 ; 68 'D'
|
.db #0x44 ; 68 'D'
|
||||||
.db #0x4c ; 76 'L'
|
.db #0x4c ; 76 'L'
|
||||||
.db #0x07 ; 7
|
.db #0x0a ; 10
|
||||||
.db 0x00
|
.db 0x00
|
||||||
.db #0x01 ; 1
|
.db #0x01 ; 1
|
||||||
.db #0x00 ; 0
|
.db #0x00 ; 0
|
||||||
@@ -204,12 +204,7 @@ _hdr:
|
|||||||
.db 0x00
|
.db 0x00
|
||||||
.db 0x00
|
.db 0x00
|
||||||
.byte #0xff, #0xff, #0xff, #0xff ; 4294967295
|
.byte #0xff, #0xff, #0xff, #0xff ; 4294967295
|
||||||
.ascii "XM Player"
|
.ascii "XM Player v0.1"
|
||||||
.db 0x00
|
|
||||||
.db 0x00
|
|
||||||
.db 0x00
|
|
||||||
.db 0x00
|
|
||||||
.db 0x00
|
|
||||||
.db 0x00
|
.db 0x00
|
||||||
.db 0x00
|
.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 #0x12 ; 18
|
||||||
.db 0x00
|
.db #0x01 ; 1
|
||||||
.db 0x00
|
.db #0x73 ; 115 's'
|
||||||
.db 0x00
|
.db #0x74 ; 116 't'
|
||||||
.db 0x00
|
.db #0x6f ; 111 'o'
|
||||||
.db 0x00
|
.db #0x70 ; 112 'p'
|
||||||
.db 0x00
|
.db #0x6f ; 111 'o'
|
||||||
.db 0x00
|
.db #0x6e ; 110 'n'
|
||||||
.db 0x00
|
.db #0x65 ; 101 'e'
|
||||||
.db 0x00
|
.db #0x72 ; 114 'r'
|
||||||
.db 0x00
|
.db #0x72 ; 114 'r'
|
||||||
.db 0x00
|
.db #0x6f ; 111 'o'
|
||||||
.db 0x00
|
.db #0x72 ; 114 'r'
|
||||||
.db 0x00
|
.db #0x02 ; 2
|
||||||
.db 0x00
|
.db #0x30 ; 48 '0'
|
||||||
.db 0x00
|
.db #0x00 ; 0
|
||||||
.db 0x00
|
.db #0x31 ; 49 '1'
|
||||||
.db 0x00
|
.db #0x00 ; 0
|
||||||
.db 0x00
|
.db #0x00 ; 0
|
||||||
.db 0x00
|
.db 0x00
|
||||||
.db 0x00
|
.db 0x00
|
||||||
.db 0x00
|
.db 0x00
|
||||||
|
|||||||
BIN
Binary file not shown.
+3
-3
@@ -1,12 +1,12 @@
|
|||||||
:200200000000000000000000000000000000000057696C64436F6D6D616E6465724D444CDB
|
:200200000000000000000000000000000000000057696C64436F6D6D616E6465724D444CDB
|
||||||
:2002200007000100001D000000000000000000000000000000000000000000000000000099
|
:200220000A000100001D000000000000000000000000000000000000000000000000000096
|
||||||
:20024000584D20584D5A53334D000000000000000000000000000000000000000000000007
|
:20024000584D20584D5A53334D000000000000000000000000000000000000000000000007
|
||||||
:2002600000000000000000000000000000000000000000000000000000000000000000007E
|
:2002600000000000000000000000000000000000000000000000000000000000000000007E
|
||||||
:2002800000000000000000000000000000000000000000000000000000000000000000005E
|
:2002800000000000000000000000000000000000000000000000000000000000000000005E
|
||||||
:2002A00000FFFFFFFF584D20506C6179657200000000000000000000000000000000000010
|
:2002A00000FFFFFFFF584D20506C617965722076302E3100000000000000000000000000EB
|
||||||
:2002C00000000000000300000000000000000000000000000000000000000000000000001B
|
:2002C00000000000000300000000000000000000000000000000000000000000000000001B
|
||||||
:2002E0000000000000000000000000000000000000000000000000000000000000000000FE
|
:2002E0000000000000000000000000000000000000000000000000000000000000000000FE
|
||||||
:200300000000000000000000000000000000000000000000000000000000000000000000DD
|
:2003000000000000120173746F706F6E6572726F720230003100000000000000000000009A
|
||||||
:200320000000000000000000000000000000000000000000000000000000000000000000BD
|
:200320000000000000000000000000000000000000000000000000000000000000000000BD
|
||||||
:2003400000000000000000000000000000000000000000000000000000000000000000009D
|
:2003400000000000000000000000000000000000000000000000000000000000000000009D
|
||||||
:2003600000000000000000000000000000000000000000000000000000000000000000007D
|
:2003600000000000000000000000000000000000000000000000000000000000000000007D
|
||||||
|
|||||||
+338
-343
@@ -74,7 +74,7 @@
|
|||||||
0000001D 4D 74 .db #0x4d ; 77 'M'
|
0000001D 4D 74 .db #0x4d ; 77 'M'
|
||||||
0000001E 44 75 .db #0x44 ; 68 'D'
|
0000001E 44 75 .db #0x44 ; 68 'D'
|
||||||
0000001F 4C 76 .db #0x4c ; 76 'L'
|
0000001F 4C 76 .db #0x4c ; 76 'L'
|
||||||
00000020 07 77 .db #0x07 ; 7
|
00000020 0A 77 .db #0x0a ; 10
|
||||||
00000021 00 78 .db 0x00
|
00000021 00 78 .db 0x00
|
||||||
00000022 01 79 .db #0x01 ; 1
|
00000022 01 79 .db #0x01 ; 1
|
||||||
00000023 00 80 .db #0x00 ; 0
|
00000023 00 80 .db #0x00 ; 0
|
||||||
@@ -204,345 +204,340 @@
|
|||||||
0000009F 00 204 .db 0x00
|
0000009F 00 204 .db 0x00
|
||||||
000000A0 00 205 .db 0x00
|
000000A0 00 205 .db 0x00
|
||||||
000000A1 FF FF FF FF 206 .byte #0xff, #0xff, #0xff, #0xff ; 4294967295
|
000000A1 FF FF FF FF 206 .byte #0xff, #0xff, #0xff, #0xff ; 4294967295
|
||||||
000000A5 58 4D 20 50 6C 61 79 207 .ascii "XM Player"
|
000000A5 58 4D 20 50 6C 61 79 207 .ascii "XM Player v0.1"
|
||||||
65 72
|
65 72 20 76 30 2E 31
|
||||||
000000AE 00 208 .db 0x00
|
000000B3 00 208 .db 0x00
|
||||||
000000AF 00 209 .db 0x00
|
000000B4 00 209 .db 0x00
|
||||||
000000B0 00 210 .db 0x00
|
000000B5 00 210 .db 0x00
|
||||||
000000B1 00 211 .db 0x00
|
000000B6 00 211 .db 0x00
|
||||||
000000B2 00 212 .db 0x00
|
000000B7 00 212 .db 0x00
|
||||||
000000B3 00 213 .db 0x00
|
000000B8 00 213 .db 0x00
|
||||||
000000B4 00 214 .db 0x00
|
000000B9 00 214 .db 0x00
|
||||||
000000B5 00 215 .db 0x00
|
000000BA 00 215 .db 0x00
|
||||||
000000B6 00 216 .db 0x00
|
000000BB 00 216 .db 0x00
|
||||||
000000B7 00 217 .db 0x00
|
000000BC 00 217 .db 0x00
|
||||||
000000B8 00 218 .db 0x00
|
000000BD 00 218 .db 0x00
|
||||||
000000B9 00 219 .db 0x00
|
000000BE 00 219 .db 0x00
|
||||||
000000BA 00 220 .db 0x00
|
000000BF 00 220 .db 0x00
|
||||||
000000BB 00 221 .db 0x00
|
000000C0 00 221 .db 0x00
|
||||||
000000BC 00 222 .db 0x00
|
000000C1 00 222 .db 0x00
|
||||||
000000BD 00 223 .db 0x00
|
000000C2 00 223 .db 0x00
|
||||||
000000BE 00 224 .db 0x00
|
000000C3 00 224 .db 0x00
|
||||||
000000BF 00 225 .db 0x00
|
000000C4 00 225 .db 0x00
|
||||||
000000C0 00 226 .db 0x00
|
000000C5 03 226 .db #0x03 ; 3
|
||||||
000000C1 00 227 .db 0x00
|
000000C6 00 227 .db 0x00
|
||||||
000000C2 00 228 .db 0x00
|
000000C7 00 228 .db 0x00
|
||||||
000000C3 00 229 .db 0x00
|
000000C8 00 229 .db 0x00
|
||||||
000000C4 00 230 .db 0x00
|
000000C9 00 230 .db 0x00
|
||||||
000000C5 03 231 .db #0x03 ; 3
|
000000CA 00 231 .db 0x00
|
||||||
000000C6 00 232 .db 0x00
|
000000CB 00 232 .db 0x00
|
||||||
000000C7 00 233 .db 0x00
|
000000CC 00 233 .db 0x00
|
||||||
000000C8 00 234 .db 0x00
|
000000CD 00 234 .db 0x00
|
||||||
000000C9 00 235 .db 0x00
|
000000CE 00 235 .db 0x00
|
||||||
000000CA 00 236 .db 0x00
|
000000CF 00 236 .db 0x00
|
||||||
000000CB 00 237 .db 0x00
|
000000D0 00 237 .db 0x00
|
||||||
000000CC 00 238 .db 0x00
|
000000D1 00 238 .db 0x00
|
||||||
000000CD 00 239 .db 0x00
|
000000D2 00 239 .db 0x00
|
||||||
000000CE 00 240 .db 0x00
|
000000D3 00 240 .db 0x00
|
||||||
000000CF 00 241 .db 0x00
|
000000D4 00 241 .db 0x00
|
||||||
000000D0 00 242 .db 0x00
|
000000D5 00 242 .db 0x00
|
||||||
000000D1 00 243 .db 0x00
|
000000D6 00 243 .db 0x00
|
||||||
000000D2 00 244 .db 0x00
|
000000D7 00 244 .db 0x00
|
||||||
000000D3 00 245 .db 0x00
|
000000D8 00 245 .db 0x00
|
||||||
000000D4 00 246 .db 0x00
|
000000D9 00 246 .db 0x00
|
||||||
000000D5 00 247 .db 0x00
|
000000DA 00 247 .db 0x00
|
||||||
000000D6 00 248 .db 0x00
|
000000DB 00 248 .db 0x00
|
||||||
000000D7 00 249 .db 0x00
|
000000DC 00 249 .db 0x00
|
||||||
000000D8 00 250 .db 0x00
|
000000DD 00 250 .db 0x00
|
||||||
000000D9 00 251 .db 0x00
|
000000DE 00 251 .db 0x00
|
||||||
000000DA 00 252 .db 0x00
|
000000DF 00 252 .db 0x00
|
||||||
000000DB 00 253 .db 0x00
|
000000E0 00 253 .db 0x00
|
||||||
000000DC 00 254 .db 0x00
|
000000E1 00 254 .db 0x00
|
||||||
000000DD 00 255 .db 0x00
|
000000E2 00 255 .db 0x00
|
||||||
000000DE 00 256 .db 0x00
|
000000E3 00 256 .db 0x00
|
||||||
000000DF 00 257 .db 0x00
|
000000E4 00 257 .db 0x00
|
||||||
000000E0 00 258 .db 0x00
|
000000E5 00 258 .db 0x00
|
||||||
000000E1 00 259 .db 0x00
|
000000E6 00 259 .db 0x00
|
||||||
000000E2 00 260 .db 0x00
|
000000E7 00 260 .db 0x00
|
||||||
000000E3 00 261 .db 0x00
|
000000E8 00 261 .db 0x00
|
||||||
000000E4 00 262 .db 0x00
|
000000E9 00 262 .db 0x00
|
||||||
000000E5 00 263 .db 0x00
|
000000EA 00 263 .db 0x00
|
||||||
000000E6 00 264 .db 0x00
|
000000EB 00 264 .db 0x00
|
||||||
000000E7 00 265 .db 0x00
|
000000EC 00 265 .db 0x00
|
||||||
000000E8 00 266 .db 0x00
|
000000ED 00 266 .db 0x00
|
||||||
000000E9 00 267 .db 0x00
|
000000EE 00 267 .db 0x00
|
||||||
000000EA 00 268 .db 0x00
|
000000EF 00 268 .db 0x00
|
||||||
000000EB 00 269 .db 0x00
|
000000F0 00 269 .db 0x00
|
||||||
000000EC 00 270 .db 0x00
|
000000F1 00 270 .db 0x00
|
||||||
000000ED 00 271 .db 0x00
|
000000F2 00 271 .db 0x00
|
||||||
000000EE 00 272 .db 0x00
|
000000F3 00 272 .db 0x00
|
||||||
000000EF 00 273 .db 0x00
|
000000F4 00 273 .db 0x00
|
||||||
000000F0 00 274 .db 0x00
|
000000F5 00 274 .db 0x00
|
||||||
000000F1 00 275 .db 0x00
|
000000F6 00 275 .db 0x00
|
||||||
000000F2 00 276 .db 0x00
|
000000F7 00 276 .db 0x00
|
||||||
000000F3 00 277 .db 0x00
|
000000F8 00 277 .db 0x00
|
||||||
000000F4 00 278 .db 0x00
|
000000F9 00 278 .db 0x00
|
||||||
000000F5 00 279 .db 0x00
|
000000FA 00 279 .db 0x00
|
||||||
000000F6 00 280 .db 0x00
|
000000FB 00 280 .db 0x00
|
||||||
000000F7 00 281 .db 0x00
|
000000FC 00 281 .db 0x00
|
||||||
000000F8 00 282 .db 0x00
|
000000FD 00 282 .db 0x00
|
||||||
000000F9 00 283 .db 0x00
|
000000FE 00 283 .db 0x00
|
||||||
000000FA 00 284 .db 0x00
|
000000FF 00 284 .db 0x00
|
||||||
000000FB 00 285 .db 0x00
|
00000100 00 285 .db 0x00
|
||||||
000000FC 00 286 .db 0x00
|
00000101 00 286 .db 0x00
|
||||||
000000FD 00 287 .db 0x00
|
00000102 00 287 .db 0x00
|
||||||
000000FE 00 288 .db 0x00
|
00000103 00 288 .db 0x00
|
||||||
000000FF 00 289 .db 0x00
|
00000104 12 289 .db #0x12 ; 18
|
||||||
00000100 00 290 .db 0x00
|
00000105 01 290 .db #0x01 ; 1
|
||||||
00000101 00 291 .db 0x00
|
00000106 73 291 .db #0x73 ; 115 's'
|
||||||
00000102 00 292 .db 0x00
|
00000107 74 292 .db #0x74 ; 116 't'
|
||||||
00000103 00 293 .db 0x00
|
00000108 6F 293 .db #0x6f ; 111 'o'
|
||||||
00000104 00 294 .db 0x00
|
00000109 70 294 .db #0x70 ; 112 'p'
|
||||||
00000105 00 295 .db 0x00
|
0000010A 6F 295 .db #0x6f ; 111 'o'
|
||||||
00000106 00 296 .db 0x00
|
0000010B 6E 296 .db #0x6e ; 110 'n'
|
||||||
00000107 00 297 .db 0x00
|
0000010C 65 297 .db #0x65 ; 101 'e'
|
||||||
00000108 00 298 .db 0x00
|
0000010D 72 298 .db #0x72 ; 114 'r'
|
||||||
00000109 00 299 .db 0x00
|
0000010E 72 299 .db #0x72 ; 114 'r'
|
||||||
0000010A 00 300 .db 0x00
|
0000010F 6F 300 .db #0x6f ; 111 'o'
|
||||||
0000010B 00 301 .db 0x00
|
00000110 72 301 .db #0x72 ; 114 'r'
|
||||||
0000010C 00 302 .db 0x00
|
00000111 02 302 .db #0x02 ; 2
|
||||||
0000010D 00 303 .db 0x00
|
00000112 30 303 .db #0x30 ; 48 '0'
|
||||||
0000010E 00 304 .db 0x00
|
00000113 00 304 .db #0x00 ; 0
|
||||||
0000010F 00 305 .db 0x00
|
00000114 31 305 .db #0x31 ; 49 '1'
|
||||||
00000110 00 306 .db 0x00
|
00000115 00 306 .db #0x00 ; 0
|
||||||
00000111 00 307 .db 0x00
|
00000116 00 307 .db #0x00 ; 0
|
||||||
00000112 00 308 .db 0x00
|
00000117 00 308 .db 0x00
|
||||||
00000113 00 309 .db 0x00
|
00000118 00 309 .db 0x00
|
||||||
00000114 00 310 .db 0x00
|
00000119 00 310 .db 0x00
|
||||||
00000115 00 311 .db 0x00
|
0000011A 00 311 .db 0x00
|
||||||
00000116 00 312 .db 0x00
|
0000011B 00 312 .db 0x00
|
||||||
00000117 00 313 .db 0x00
|
0000011C 00 313 .db 0x00
|
||||||
00000118 00 314 .db 0x00
|
0000011D 00 314 .db 0x00
|
||||||
00000119 00 315 .db 0x00
|
0000011E 00 315 .db 0x00
|
||||||
0000011A 00 316 .db 0x00
|
0000011F 00 316 .db 0x00
|
||||||
0000011B 00 317 .db 0x00
|
00000120 00 317 .db 0x00
|
||||||
0000011C 00 318 .db 0x00
|
00000121 00 318 .db 0x00
|
||||||
0000011D 00 319 .db 0x00
|
00000122 00 319 .db 0x00
|
||||||
0000011E 00 320 .db 0x00
|
00000123 00 320 .db 0x00
|
||||||
0000011F 00 321 .db 0x00
|
00000124 00 321 .db 0x00
|
||||||
00000120 00 322 .db 0x00
|
00000125 00 322 .db 0x00
|
||||||
00000121 00 323 .db 0x00
|
00000126 00 323 .db 0x00
|
||||||
00000122 00 324 .db 0x00
|
00000127 00 324 .db 0x00
|
||||||
00000123 00 325 .db 0x00
|
00000128 00 325 .db 0x00
|
||||||
00000124 00 326 .db 0x00
|
00000129 00 326 .db 0x00
|
||||||
00000125 00 327 .db 0x00
|
0000012A 00 327 .db 0x00
|
||||||
00000126 00 328 .db 0x00
|
0000012B 00 328 .db 0x00
|
||||||
00000127 00 329 .db 0x00
|
0000012C 00 329 .db 0x00
|
||||||
00000128 00 330 .db 0x00
|
0000012D 00 330 .db 0x00
|
||||||
00000129 00 331 .db 0x00
|
0000012E 00 331 .db 0x00
|
||||||
0000012A 00 332 .db 0x00
|
0000012F 00 332 .db 0x00
|
||||||
0000012B 00 333 .db 0x00
|
00000130 00 333 .db 0x00
|
||||||
0000012C 00 334 .db 0x00
|
00000131 00 334 .db 0x00
|
||||||
0000012D 00 335 .db 0x00
|
00000132 00 335 .db 0x00
|
||||||
0000012E 00 336 .db 0x00
|
00000133 00 336 .db 0x00
|
||||||
0000012F 00 337 .db 0x00
|
00000134 00 337 .db 0x00
|
||||||
00000130 00 338 .db 0x00
|
00000135 00 338 .db 0x00
|
||||||
00000131 00 339 .db 0x00
|
00000136 00 339 .db 0x00
|
||||||
00000132 00 340 .db 0x00
|
00000137 00 340 .db 0x00
|
||||||
00000133 00 341 .db 0x00
|
00000138 00 341 .db 0x00
|
||||||
00000134 00 342 .db 0x00
|
00000139 00 342 .db 0x00
|
||||||
00000135 00 343 .db 0x00
|
0000013A 00 343 .db 0x00
|
||||||
00000136 00 344 .db 0x00
|
0000013B 00 344 .db 0x00
|
||||||
00000137 00 345 .db 0x00
|
0000013C 00 345 .db 0x00
|
||||||
00000138 00 346 .db 0x00
|
0000013D 00 346 .db 0x00
|
||||||
00000139 00 347 .db 0x00
|
0000013E 00 347 .db 0x00
|
||||||
0000013A 00 348 .db 0x00
|
0000013F 00 348 .db 0x00
|
||||||
0000013B 00 349 .db 0x00
|
00000140 00 349 .db 0x00
|
||||||
0000013C 00 350 .db 0x00
|
00000141 00 350 .db 0x00
|
||||||
0000013D 00 351 .db 0x00
|
00000142 00 351 .db 0x00
|
||||||
0000013E 00 352 .db 0x00
|
00000143 00 352 .db 0x00
|
||||||
0000013F 00 353 .db 0x00
|
00000144 00 353 .db 0x00
|
||||||
00000140 00 354 .db 0x00
|
00000145 00 354 .db 0x00
|
||||||
00000141 00 355 .db 0x00
|
00000146 00 355 .db 0x00
|
||||||
00000142 00 356 .db 0x00
|
00000147 00 356 .db 0x00
|
||||||
00000143 00 357 .db 0x00
|
00000148 00 357 .db 0x00
|
||||||
00000144 00 358 .db 0x00
|
00000149 00 358 .db 0x00
|
||||||
00000145 00 359 .db 0x00
|
0000014A 00 359 .db 0x00
|
||||||
00000146 00 360 .db 0x00
|
0000014B 00 360 .db 0x00
|
||||||
00000147 00 361 .db 0x00
|
0000014C 00 361 .db 0x00
|
||||||
00000148 00 362 .db 0x00
|
0000014D 00 362 .db 0x00
|
||||||
00000149 00 363 .db 0x00
|
0000014E 00 363 .db 0x00
|
||||||
0000014A 00 364 .db 0x00
|
0000014F 00 364 .db 0x00
|
||||||
0000014B 00 365 .db 0x00
|
00000150 00 365 .db 0x00
|
||||||
0000014C 00 366 .db 0x00
|
00000151 00 366 .db 0x00
|
||||||
0000014D 00 367 .db 0x00
|
00000152 00 367 .db 0x00
|
||||||
0000014E 00 368 .db 0x00
|
00000153 00 368 .db 0x00
|
||||||
0000014F 00 369 .db 0x00
|
00000154 00 369 .db 0x00
|
||||||
00000150 00 370 .db 0x00
|
00000155 00 370 .db 0x00
|
||||||
00000151 00 371 .db 0x00
|
00000156 00 371 .db 0x00
|
||||||
00000152 00 372 .db 0x00
|
00000157 00 372 .db 0x00
|
||||||
00000153 00 373 .db 0x00
|
00000158 00 373 .db 0x00
|
||||||
00000154 00 374 .db 0x00
|
00000159 00 374 .db 0x00
|
||||||
00000155 00 375 .db 0x00
|
0000015A 00 375 .db 0x00
|
||||||
00000156 00 376 .db 0x00
|
0000015B 00 376 .db 0x00
|
||||||
00000157 00 377 .db 0x00
|
0000015C 00 377 .db 0x00
|
||||||
00000158 00 378 .db 0x00
|
0000015D 00 378 .db 0x00
|
||||||
00000159 00 379 .db 0x00
|
0000015E 00 379 .db 0x00
|
||||||
0000015A 00 380 .db 0x00
|
0000015F 00 380 .db 0x00
|
||||||
0000015B 00 381 .db 0x00
|
00000160 00 381 .db 0x00
|
||||||
0000015C 00 382 .db 0x00
|
00000161 00 382 .db 0x00
|
||||||
0000015D 00 383 .db 0x00
|
00000162 00 383 .db 0x00
|
||||||
0000015E 00 384 .db 0x00
|
00000163 00 384 .db 0x00
|
||||||
0000015F 00 385 .db 0x00
|
00000164 00 385 .db 0x00
|
||||||
00000160 00 386 .db 0x00
|
00000165 00 386 .db 0x00
|
||||||
00000161 00 387 .db 0x00
|
00000166 00 387 .db 0x00
|
||||||
00000162 00 388 .db 0x00
|
00000167 00 388 .db 0x00
|
||||||
00000163 00 389 .db 0x00
|
00000168 00 389 .db 0x00
|
||||||
00000164 00 390 .db 0x00
|
00000169 00 390 .db 0x00
|
||||||
00000165 00 391 .db 0x00
|
0000016A 00 391 .db 0x00
|
||||||
00000166 00 392 .db 0x00
|
0000016B 00 392 .db 0x00
|
||||||
00000167 00 393 .db 0x00
|
0000016C 00 393 .db 0x00
|
||||||
00000168 00 394 .db 0x00
|
0000016D 00 394 .db 0x00
|
||||||
00000169 00 395 .db 0x00
|
0000016E 00 395 .db 0x00
|
||||||
0000016A 00 396 .db 0x00
|
0000016F 00 396 .db 0x00
|
||||||
0000016B 00 397 .db 0x00
|
00000170 00 397 .db 0x00
|
||||||
0000016C 00 398 .db 0x00
|
00000171 00 398 .db 0x00
|
||||||
0000016D 00 399 .db 0x00
|
00000172 00 399 .db 0x00
|
||||||
0000016E 00 400 .db 0x00
|
00000173 00 400 .db 0x00
|
||||||
0000016F 00 401 .db 0x00
|
00000174 00 401 .db 0x00
|
||||||
00000170 00 402 .db 0x00
|
00000175 00 402 .db 0x00
|
||||||
00000171 00 403 .db 0x00
|
00000176 00 403 .db 0x00
|
||||||
00000172 00 404 .db 0x00
|
00000177 00 404 .db 0x00
|
||||||
00000173 00 405 .db 0x00
|
00000178 00 405 .db 0x00
|
||||||
00000174 00 406 .db 0x00
|
00000179 00 406 .db 0x00
|
||||||
00000175 00 407 .db 0x00
|
0000017A 00 407 .db 0x00
|
||||||
00000176 00 408 .db 0x00
|
0000017B 00 408 .db 0x00
|
||||||
00000177 00 409 .db 0x00
|
0000017C 00 409 .db 0x00
|
||||||
00000178 00 410 .db 0x00
|
0000017D 00 410 .db 0x00
|
||||||
00000179 00 411 .db 0x00
|
0000017E 00 411 .db 0x00
|
||||||
0000017A 00 412 .db 0x00
|
0000017F 00 412 .db 0x00
|
||||||
0000017B 00 413 .db 0x00
|
00000180 00 413 .db 0x00
|
||||||
0000017C 00 414 .db 0x00
|
00000181 00 414 .db 0x00
|
||||||
0000017D 00 415 .db 0x00
|
00000182 00 415 .db 0x00
|
||||||
0000017E 00 416 .db 0x00
|
00000183 00 416 .db 0x00
|
||||||
0000017F 00 417 .db 0x00
|
00000184 00 417 .db 0x00
|
||||||
00000180 00 418 .db 0x00
|
00000185 00 418 .db 0x00
|
||||||
00000181 00 419 .db 0x00
|
00000186 00 419 .db 0x00
|
||||||
00000182 00 420 .db 0x00
|
00000187 00 420 .db 0x00
|
||||||
00000183 00 421 .db 0x00
|
00000188 00 421 .db 0x00
|
||||||
00000184 00 422 .db 0x00
|
00000189 00 422 .db 0x00
|
||||||
00000185 00 423 .db 0x00
|
0000018A 00 423 .db 0x00
|
||||||
00000186 00 424 .db 0x00
|
0000018B 00 424 .db 0x00
|
||||||
00000187 00 425 .db 0x00
|
0000018C 00 425 .db 0x00
|
||||||
00000188 00 426 .db 0x00
|
0000018D 00 426 .db 0x00
|
||||||
00000189 00 427 .db 0x00
|
0000018E 00 427 .db 0x00
|
||||||
0000018A 00 428 .db 0x00
|
0000018F 00 428 .db 0x00
|
||||||
0000018B 00 429 .db 0x00
|
00000190 00 429 .db 0x00
|
||||||
0000018C 00 430 .db 0x00
|
00000191 00 430 .db 0x00
|
||||||
0000018D 00 431 .db 0x00
|
00000192 00 431 .db 0x00
|
||||||
0000018E 00 432 .db 0x00
|
00000193 00 432 .db 0x00
|
||||||
0000018F 00 433 .db 0x00
|
00000194 00 433 .db 0x00
|
||||||
00000190 00 434 .db 0x00
|
00000195 00 434 .db 0x00
|
||||||
00000191 00 435 .db 0x00
|
00000196 00 435 .db 0x00
|
||||||
00000192 00 436 .db 0x00
|
00000197 00 436 .db 0x00
|
||||||
00000193 00 437 .db 0x00
|
00000198 00 437 .db 0x00
|
||||||
00000194 00 438 .db 0x00
|
00000199 00 438 .db 0x00
|
||||||
00000195 00 439 .db 0x00
|
0000019A 00 439 .db 0x00
|
||||||
00000196 00 440 .db 0x00
|
0000019B 00 440 .db 0x00
|
||||||
00000197 00 441 .db 0x00
|
0000019C 00 441 .db 0x00
|
||||||
00000198 00 442 .db 0x00
|
0000019D 00 442 .db 0x00
|
||||||
00000199 00 443 .db 0x00
|
0000019E 00 443 .db 0x00
|
||||||
0000019A 00 444 .db 0x00
|
0000019F 00 444 .db 0x00
|
||||||
0000019B 00 445 .db 0x00
|
000001A0 00 445 .db 0x00
|
||||||
0000019C 00 446 .db 0x00
|
000001A1 00 446 .db 0x00
|
||||||
0000019D 00 447 .db 0x00
|
000001A2 00 447 .db 0x00
|
||||||
0000019E 00 448 .db 0x00
|
000001A3 00 448 .db 0x00
|
||||||
0000019F 00 449 .db 0x00
|
000001A4 00 449 .db 0x00
|
||||||
000001A0 00 450 .db 0x00
|
000001A5 00 450 .db 0x00
|
||||||
000001A1 00 451 .db 0x00
|
000001A6 00 451 .db 0x00
|
||||||
000001A2 00 452 .db 0x00
|
000001A7 00 452 .db 0x00
|
||||||
000001A3 00 453 .db 0x00
|
000001A8 00 453 .db 0x00
|
||||||
000001A4 00 454 .db 0x00
|
000001A9 00 454 .db 0x00
|
||||||
000001A5 00 455 .db 0x00
|
000001AA 00 455 .db 0x00
|
||||||
000001A6 00 456 .db 0x00
|
000001AB 00 456 .db 0x00
|
||||||
000001A7 00 457 .db 0x00
|
000001AC 00 457 .db 0x00
|
||||||
000001A8 00 458 .db 0x00
|
000001AD 00 458 .db 0x00
|
||||||
000001A9 00 459 .db 0x00
|
000001AE 00 459 .db 0x00
|
||||||
000001AA 00 460 .db 0x00
|
000001AF 00 460 .db 0x00
|
||||||
000001AB 00 461 .db 0x00
|
000001B0 00 461 .db 0x00
|
||||||
000001AC 00 462 .db 0x00
|
000001B1 00 462 .db 0x00
|
||||||
000001AD 00 463 .db 0x00
|
000001B2 00 463 .db 0x00
|
||||||
000001AE 00 464 .db 0x00
|
000001B3 00 464 .db 0x00
|
||||||
000001AF 00 465 .db 0x00
|
000001B4 00 465 .db 0x00
|
||||||
000001B0 00 466 .db 0x00
|
000001B5 00 466 .db 0x00
|
||||||
000001B1 00 467 .db 0x00
|
000001B6 00 467 .db 0x00
|
||||||
000001B2 00 468 .db 0x00
|
000001B7 00 468 .db 0x00
|
||||||
000001B3 00 469 .db 0x00
|
000001B8 00 469 .db 0x00
|
||||||
000001B4 00 470 .db 0x00
|
000001B9 00 470 .db 0x00
|
||||||
000001B5 00 471 .db 0x00
|
000001BA 00 471 .db 0x00
|
||||||
000001B6 00 472 .db 0x00
|
000001BB 00 472 .db 0x00
|
||||||
000001B7 00 473 .db 0x00
|
000001BC 00 473 .db 0x00
|
||||||
000001B8 00 474 .db 0x00
|
000001BD 00 474 .db 0x00
|
||||||
000001B9 00 475 .db 0x00
|
000001BE 00 475 .db 0x00
|
||||||
000001BA 00 476 .db 0x00
|
000001BF 00 476 .db 0x00
|
||||||
000001BB 00 477 .db 0x00
|
000001C0 00 477 .db 0x00
|
||||||
000001BC 00 478 .db 0x00
|
000001C1 00 478 .db 0x00
|
||||||
000001BD 00 479 .db 0x00
|
000001C2 00 479 .db 0x00
|
||||||
000001BE 00 480 .db 0x00
|
000001C3 00 480 .db 0x00
|
||||||
000001BF 00 481 .db 0x00
|
000001C4 00 481 .db 0x00
|
||||||
000001C0 00 482 .db 0x00
|
000001C5 00 482 .db 0x00
|
||||||
000001C1 00 483 .db 0x00
|
000001C6 00 483 .db 0x00
|
||||||
000001C2 00 484 .db 0x00
|
000001C7 00 484 .db 0x00
|
||||||
000001C3 00 485 .db 0x00
|
000001C8 00 485 .db 0x00
|
||||||
000001C4 00 486 .db 0x00
|
000001C9 00 486 .db 0x00
|
||||||
000001C5 00 487 .db 0x00
|
000001CA 00 487 .db 0x00
|
||||||
000001C6 00 488 .db 0x00
|
000001CB 00 488 .db 0x00
|
||||||
000001C7 00 489 .db 0x00
|
000001CC 00 489 .db 0x00
|
||||||
000001C8 00 490 .db 0x00
|
000001CD 00 490 .db 0x00
|
||||||
000001C9 00 491 .db 0x00
|
000001CE 00 491 .db 0x00
|
||||||
000001CA 00 492 .db 0x00
|
000001CF 00 492 .db 0x00
|
||||||
000001CB 00 493 .db 0x00
|
000001D0 00 493 .db 0x00
|
||||||
000001CC 00 494 .db 0x00
|
000001D1 00 494 .db 0x00
|
||||||
000001CD 00 495 .db 0x00
|
000001D2 00 495 .db 0x00
|
||||||
000001CE 00 496 .db 0x00
|
000001D3 00 496 .db 0x00
|
||||||
000001CF 00 497 .db 0x00
|
000001D4 00 497 .db 0x00
|
||||||
000001D0 00 498 .db 0x00
|
000001D5 00 498 .db 0x00
|
||||||
000001D1 00 499 .db 0x00
|
000001D6 00 499 .db 0x00
|
||||||
000001D2 00 500 .db 0x00
|
000001D7 00 500 .db 0x00
|
||||||
000001D3 00 501 .db 0x00
|
000001D8 00 501 .db 0x00
|
||||||
000001D4 00 502 .db 0x00
|
000001D9 00 502 .db 0x00
|
||||||
000001D5 00 503 .db 0x00
|
000001DA 00 503 .db 0x00
|
||||||
000001D6 00 504 .db 0x00
|
000001DB 00 504 .db 0x00
|
||||||
000001D7 00 505 .db 0x00
|
000001DC 00 505 .db 0x00
|
||||||
000001D8 00 506 .db 0x00
|
000001DD 00 506 .db 0x00
|
||||||
000001D9 00 507 .db 0x00
|
000001DE 00 507 .db 0x00
|
||||||
000001DA 00 508 .db 0x00
|
000001DF 00 508 .db 0x00
|
||||||
000001DB 00 509 .db 0x00
|
000001E0 00 509 .db 0x00
|
||||||
000001DC 00 510 .db 0x00
|
000001E1 00 510 .db 0x00
|
||||||
000001DD 00 511 .db 0x00
|
000001E2 00 511 .db 0x00
|
||||||
000001DE 00 512 .db 0x00
|
000001E3 00 512 .db 0x00
|
||||||
000001DF 00 513 .db 0x00
|
000001E4 00 513 .db 0x00
|
||||||
000001E0 00 514 .db 0x00
|
000001E5 00 514 .db 0x00
|
||||||
000001E1 00 515 .db 0x00
|
000001E6 00 515 .db 0x00
|
||||||
000001E2 00 516 .db 0x00
|
000001E7 00 516 .db 0x00
|
||||||
000001E3 00 517 .db 0x00
|
000001E8 00 517 .db 0x00
|
||||||
000001E4 00 518 .db 0x00
|
000001E9 00 518 .db 0x00
|
||||||
000001E5 00 519 .db 0x00
|
000001EA 00 519 .db 0x00
|
||||||
000001E6 00 520 .db 0x00
|
000001EB 00 520 .db 0x00
|
||||||
000001E7 00 521 .db 0x00
|
000001EC 00 521 .db 0x00
|
||||||
000001E8 00 522 .db 0x00
|
000001ED 00 522 .db 0x00
|
||||||
000001E9 00 523 .db 0x00
|
000001EE 00 523 .db 0x00
|
||||||
000001EA 00 524 .db 0x00
|
000001EF 00 524 .db 0x00
|
||||||
000001EB 00 525 .db 0x00
|
000001F0 00 525 .db 0x00
|
||||||
000001EC 00 526 .db 0x00
|
000001F1 00 526 .db 0x00
|
||||||
000001ED 00 527 .db 0x00
|
000001F2 00 527 .db 0x00
|
||||||
000001EE 00 528 .db 0x00
|
000001F3 00 528 .db 0x00
|
||||||
000001EF 00 529 .db 0x00
|
000001F4 00 529 .db 0x00
|
||||||
000001F0 00 530 .db 0x00
|
000001F5 00 530 .db 0x00
|
||||||
000001F1 00 531 .db 0x00
|
000001F6 00 531 .db 0x00
|
||||||
000001F2 00 532 .db 0x00
|
000001F7 00 532 .db 0x00
|
||||||
000001F3 00 533 .db 0x00
|
000001F8 00 533 .db 0x00
|
||||||
000001F4 00 534 .db 0x00
|
000001F9 00 534 .db 0x00
|
||||||
000001F5 00 535 .db 0x00
|
000001FA 00 535 .db 0x00
|
||||||
000001F6 00 536 .db 0x00
|
000001FB 00 536 .db 0x00
|
||||||
000001F7 00 537 .db 0x00
|
000001FC 00 537 .db 0x00
|
||||||
000001F8 00 538 .db 0x00
|
000001FD 00 538 .db 0x00
|
||||||
000001F9 00 539 .db 0x00
|
000001FE 00 539 .db 0x00
|
||||||
000001FA 00 540 .db 0x00
|
000001FF 00 540 .db 0x00
|
||||||
000001FB 00 541 .db 0x00
|
541 .area _INITIALIZER
|
||||||
000001FC 00 542 .db 0x00
|
542 .area _CABS (ABS)
|
||||||
000001FD 00 543 .db 0x00
|
|
||||||
000001FE 00 544 .db 0x00
|
|
||||||
000001FF 00 545 .db 0x00
|
|
||||||
546 .area _INITIALIZER
|
|
||||||
547 .area _CABS (ABS)
|
|
||||||
|
|||||||
+5
-5
@@ -18,7 +18,7 @@ T 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|||||||
R 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
|
T 0C 00 00 00 00 00 00 00 57 69 6C 64 43 6F 6D 6D
|
||||||
R 00 00 00 00
|
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
|
R 00 00 00 00
|
||||||
T 24 00 00 00 00 1D 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
|
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
|
R 00 00 00 00
|
||||||
T 9C 00 00 00 00 00 00 00 00 FF FF FF FF 58 4D 20
|
T 9C 00 00 00 00 00 00 00 00 FF FF FF FF 58 4D 20
|
||||||
R 00 00 00 00
|
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
|
R 00 00 00 00
|
||||||
T B4 00 00 00 00 00 00 00 00 00 00 00 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
|
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
|
R 00 00 00 00
|
||||||
T F0 00 00 00 00 00 00 00 00 00 00 00 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
|
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
|
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
|
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
|
R 00 00 00 00
|
||||||
T 20 01 00 00 00 00 00 00 00 00 00 00 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
|
R 00 00 00 00
|
||||||
|
|||||||
+1029
-498
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+116
-88
@@ -1,4 +1,4 @@
|
|||||||
:20800300ED7B01B8C94F3E13D3773E01D357AFD357DB5779D357AFD3573E03D377C94F3EB8
|
:20800300ED7B00B8C94F3E13D3773E01D357AFD357DB5779D357AFD3573E03D377C94F3EB9
|
||||||
:2080230013D3773E02D35779D357DB57DB57DB574F3E03D37779C9DDE5DD210000DD39F556
|
:2080230013D3773E02D35779D357DB57DB57DB574F3E03D37779C9DDE5DD210000DD39F556
|
||||||
:20804300F54F3E13D3773E02D35779D357DB57DB57DB574FDB575759DB57DD77FCAFDD77E5
|
:20804300F54F3E13D3773E02D35779D357DB57DB57DB574FDB575759DB57DD77FCAFDD77E5
|
||||||
:20806300FDDD77FEDD77FFDD7EFCDD77FEAFDD77FFDD77FCDD77FDDD6EFEDB57DD77FCAF95
|
:20806300FDDD77FEDD77FFDD7EFCDD77FEAFDD77FFDD77FCDD77FDDD6EFEDB57DD77FCAF95
|
||||||
@@ -9,91 +9,119 @@
|
|||||||
:2081030057FD7E01D357FD7E02D357FD7E03D3573E03D377E1F1F1E93E13D3773E07D357CF
|
:2081030057FD7E01D357FD7E02D357FD7E03D3573E03D377E1F1F1E93E13D3773E07D357CF
|
||||||
:20812300DB573E03D377C97D01AF1AED797C01AF1BED79FD210200FD39FD7E0001AF1CEDD2
|
:20812300DB573E03D377C97D01AF1AED797C01AF1BED79FD210200FD39FD7E0001AF1CEDD2
|
||||||
:2081430079FD7E01FD4E02FD23CB39CB1F3D01AF26ED79FD7E023D01AF28ED793E13D377C0
|
:2081430079FD7E01FD4E02FD23CB39CB1F3D01AF26ED79FD7E023D01AF28ED793E13D377C0
|
||||||
:208163003E03D357DB57DB573E8201AF27ED793E27DBAF0738F93E03D377CD1B811160EABA
|
:208163003E03D357DB57DB573E8201AF27ED793E27DBAF0738F93E03D377CD1B8121640090
|
||||||
:20818300210000CDD881E1F1F133E93E13D3773E08D357DB573E03D377C9DDE5DD21000065
|
:20818300CDE881E1F1F133E93E13D3773E08D357DB573E03D377C9DDE5DD210000DD39213F
|
||||||
:2081A300DD394FDD5E04DD5605DD6E06DD66077BC6FF5F7ACEFF577DCEFF6F7CCEFF67B5EA
|
:2081A300FBFF39F9DD77FFDD73FDDD72FE2109607EDD77FB237EDD77FC2A09607DDD96FBDD
|
||||||
:2081C300B2B3280EE5C5D53E01CD2180D1C1E19120DDDDE1C97BC6FF5F7ACEFF577DCEFFC6
|
:2081C3004F7CDD9EFC4779DD96FD78DD9EFE300F3E01CD2180DD96FF20DF3E01C3E381AFC7
|
||||||
:2081E3006F7CCEFF67B5B2B3C8E5D53E01CD2180D1E1FE0228DFC9E5D53E03CDEB80FD2141
|
:2081E300DDF9DDE1C9DDE5DD210000DD39F5F5DD75FEDD74FF2109607EDD77FC237EDD7772
|
||||||
:208203000200FD39FD6E003E02CDD4803EE0CD088011204E210000CDD8813E0BCD21805F08
|
:20820300FD2A09607DDD96FC4F7CDD9EFD4779DD96FE78DD9EFF300E3E01CD2180FE022866
|
||||||
:208223001600E133E9AFCD0880CD8E81CD1B813E01C90100180A20052F00000000008F824F
|
:20822300E03E01C32A82AFDDF9DDE1C9E5D53E03CDEB80FD210200FD39FD6E003E02CDD4CC
|
||||||
:2082430099829A820100FFFF20052F00000000008F829982B0820100FFFF20052F000000E0
|
:20824300803EE0CD0880216400CDE8813E0BCD21805F1600E133E9AFCD0880CD8B81CD1B7F
|
||||||
:2082630000008F829982D0828100190A280B4F0000000000EE82998203830100160A2405FC
|
:20826300813E01C98100190A280C7000000000008B82A582A5820100160A24054F00000036
|
||||||
:208283004F0000000000118399821A830E204572726F72212000000E0C014E6F20455350E7
|
:208283000000A682A582AF820E20584D2F584D5A2F53334D20506C617965722076302E31A6
|
||||||
:2082A300333220646574656374656421000E0C014F7574206F66206D656D6F727920286624
|
:2082A3002000000E2041626F757420000E0C01584D20506C617965722076302E3100DDE51E
|
||||||
:2082C300696C6520746F6F2062696729000E0C01506C61796261636B206572726F722028A0
|
:2082C300DD210000DD3921ECFF39F93EA2CD0880216400CDE8813EE4CD0880216400CDE8A8
|
||||||
:2082E3006261642066696C653F29000E20584D2F584D5A2F53334D20506C6179657220007C
|
:2082E300813A06B83D280A3A06B8D6022808C3FE823E08C300833E0CC300833E05F533EDDC
|
||||||
:208303000E0C01506C6179696E672E2E2E000E2041626F757420000E0C01584D20506C619B
|
:208303005B02B82A04B8CD2F822130B8733E01CD21803208B83A08B83D2804AFC3E8842164
|
||||||
:208323007965722076312E3000DDE5DD210000DD3921ECFF39F93EA2CD0880111027210013
|
:208323000C0039EB2102B8010400EDB0AFDD77FCDD77FDDD77FEDD77FFDD7EFBDDB6FADDD8
|
||||||
:2083430000CDD8813EE4CD0880111027210000CDD8813A07B83D280A3A07B8D6022808C3C2
|
:20834300B6F9DDB6F8CA5184DD7EF9D610DD7EFADE00DD7EFBDE00301121000039EB210CED
|
||||||
:208363006F833E08C371833E0CC371833E05F533ED5B03B82A05B8CDFA812131B8733E01B1
|
:208363000039010400EDB0C37C83DD36EC00DD36ED10AFDD77EEDD77EF21050039EB2100AF
|
||||||
:20838300CD21803209B83A09B83D2804AFC33C85210C0039EB2103B8010400EDB0AFDD7710
|
:208383000039010400EDB0DD7EF1C6FFDD7EF2CE01473E00CE005F3E00CE005748435ACB0D
|
||||||
:2083A300FCDD77FDDD77FEDD77FFDD7EFBDDB6FADDB6F9DDB6F8CAC984DD7EF9D610DD7E22
|
:2083A3003BCB18CB19DD71F779F5332100A8CD0E8D210000E5DD6EF1DD66F2E53E03CDEB4C
|
||||||
:2083C300FADE00DD7EFBDE00301121000039EB210C0039010400EDB0C3ED83DD36EC00DDF1
|
:2083C30080DD6EFEDD66FFE5DD6EFCDD66FDE53E07CDEB803EE1CD08801164003E03CD9A30
|
||||||
:2083E30036ED10AFDD77EEDD77EF21050039EB21000039010400EDB0DD7EF1C6FFDD7EF26F
|
:2083E30081DD7EF7DD77F5DD36F6003A0260DD77F7DD6EF52600E5210002E5DD7EF7F533A1
|
||||||
:20840300CE01473E00CE005F3E00CE005748435ACB3BCB18CB19DD71F779F5332101A8CD46
|
:208403002100A8CD2A81DD5EF1DD56F2DD6EFCDD66FD19DD75FCDD74FDDD7EFEDD8EF3DDF7
|
||||||
:208423000D8A210000E5DD6EF1DD66F2E53E03CDEB80DD6EFEDD66FFE5DD6EFCDD66FDE5F1
|
:2084230077FE3003DD34FFDD7EF8DD96F1DD77F8DD7EF9DD9EF2DD77F9DD7EFADD9EF3DDD0
|
||||||
:208443003E07CDEB803EE1CD0880210000E521D007E53E03CD9D81F1F1DD7EF7DD77F5DDBF
|
:2084430077FADD7EFBDD9EF4DD77FBC33C833A06B83D203A3A30B86F3E0BCDD4802E053E17
|
||||||
:2084630036F6003A0260DD77F7DD6EF52600E5210002E5DD7EF7F5332101A8CD2A81DD5E9C
|
:2084630002CDD4802A04B8E52A02B8E53E03CDEB803EF2CD088021FA00CDE8813E01CD21C6
|
||||||
:20848300F1DD56F2DD6EFCDD66FD19DD75FCDD74FDDD7EFEDD8EF3DD77FE3003DD34FFDD5E
|
:20848300803208B83A08B83D2804AFC3E8843EA0CD0880219001CDE8813E01CD2180320824
|
||||||
:2084A3007EF8DD96F1DD77F8DD7EF9DD9EF2DD77F9DD7EFADD9EF3DD77FADD7EFBDD9EF4AF
|
:2084A300B83A08B83D2804AFC3E8843A30B86F3E0BCDD4802E013E3ACDD4803EA6CD0880C4
|
||||||
:2084C300DD77FBC3AD833A07B83D203D3A31B86F3E0BCDD4802E053E02CDD4802A05B8E568
|
:2084C300216400CDE8813EA1CD0880216400CDE8813E01CD21803208B83A08B83D2804AF3E
|
||||||
:2084E3002A03B8E53E03CDEB803EF2CD0880111027210000CDD8813E01CD21803209B83A48
|
:2084E300C3E8843E01DDF9DDE1C976CD108EB728F9C94F790DB7C876C3F684217982CD65D7
|
||||||
:2085030009B83D2804AFC33C853EA0CD0880111027210000CDD8813E01CD21803209B83A5F
|
:208503008DCDED84217982CDF78DAFC303803BFD210000FD39FD77003EA2CD08802164006E
|
||||||
:2085230009B83D2804AFC33C853EA1CD0880111027210000CDD8813E01DDF9DDE1C976CD39
|
:20852300CDE8813EE4CD0880216400CDE881216782CDF78D210000397E33C3038033C92107
|
||||||
:20854300DB8AB728F9C94F790DB7C876C34A85217D82CD648ACD4185217D82CDC28AAFC39D
|
:208543006782CDF78DAFC3038076CD818DB728053E02CD1185CD1A8EB728053E04CD118513
|
||||||
:208563000380213582CD648ACD4185213582CDC28AAFC30380214782CD648A3E32CD4985B9
|
:20856300CD108EB728E3AFCD1185C34C853A8EB8F533218885CD1987CDED84216782CDF7D6
|
||||||
:20858300214782CDC28A3E02C30380215982CD648A3E32CD4985215982CDC28A3E02C30372
|
:208583008DAFC303804E6F20455350333220666F756E64003E01CD728DFE023E01C8AFC966
|
||||||
:2085A30080ED4B0AB81E006B260009563E0C836F3EB8CE00677AB7280A7BD6203005721C32
|
:2085A3003A08B8F53321C785CD1987CD9785B72803CD4C853E32CDF584216782CDF78D3E04
|
||||||
:2085C300C3AA853600C93E45F533210500E5210101E511F385216B82CD7B8A210CB8CDCFFF
|
:2085C30002C3038046696C6520746F6F206C61726765003A08B8F53321FA85CD1987CD97A0
|
||||||
:2085E3008AD5210107E5110CB8216B82CD2E8AC946696C653A00DDE5DD210000DD39EB015E
|
:2085E30085B72803CD4C853E32CDF584216782CDF78D3E02C30380506C61796261636B2095
|
||||||
:208603002586DD7E0407070707E60F6F2600097E1213DD7E04E60F6F2600097E12DDE1E1DA
|
:208603006572726F7200ED4B09B81E006B260009563E0B836F3EB8CE00677AB7280A7BD60C
|
||||||
:2086230033E93031323334353637383941424344454600DDE5DD210000DD39F54D44E1D567
|
:20862300203005721CC30F863600C9210500E5210201E5117A86216782CD2F8D210BB8CD94
|
||||||
:20864300C5116400DD6EFEDD66FFCDDE89EB110A00CD298AC17BC63002696023E5C5110AB3
|
:20864300048E3E71F533D5210207E5110BB8216782CDB08D210700E5210301E51180862193
|
||||||
:2086630000DD6EFEDD66FFCDDE89EB110A00CD298AC1E17BC630770303C5110A00DD6EFEF9
|
:208663006782CD2F8D212400E5210A02E5118886216782CD2F8DC946696C653A00537461EC
|
||||||
:20868300DD66FFCD298AC17BC63002DDF9DDE1C9DDE5DD210000DD39E5210000E52E3CE574
|
:208683007475733A00506755702F5067446E3A547261636B204573633A53746F7020537000
|
||||||
:2086A300DD5E04DD5605DD6E06DD6607CDC3B8F1F1010000C50E64C5CD3CB8F1F14BC521AA
|
:2086A3006163653A4C6561766500DDE5DD210000DD39F51E007B854F3E008C470A4FB728E6
|
||||||
:2086C3000000E52E3CE5DD5E04DD5605DD6E06DD6607CD3CB8F1F1C151D52E0A7ACDD989E6
|
:2086C3001F7BD618301A3E3283DD77FE3EB8CE00DD77FFE5DD6EFEDD66FF71E11CC3B8868A
|
||||||
:2086E3007B2E0ACD228A7BD1C630E1E577C1C503C5D52E0A7ACD228A7BD1C1C63002E1E5B3
|
:2086E3007BD618300C2132B81600191C3620C3E386216782DD7E04F533111800D51103094E
|
||||||
:208703002323363AC1C5030303C5D52E0A7BCDD9897B2E0ACD228A7BD1C1C63002DD7EFE0B
|
:20870300D51132B8CDB08DDDF9DDE1E133E93E71F533CDAD86C9DDE5DD210000DD393BEB4F
|
||||||
:20872300C6044FDD7EFFCE0047C52E0A7BCD228A7BC1C63002DDF9DDE1E1F1F1E92109001F
|
:208723000E0069260019463E4A816F3EB8CE0067793CDD77FF78B7280C79D611300770DD48
|
||||||
:20874300E5210301E5119687216B82CD2E8A210700E521030CE511A087216B82CD2E8A2158
|
:208743004EFFC32587DD4EFF3620690C2600114AB8193628690C2600114AB8193630690C13
|
||||||
:208763000600E5210315E511A887216B82CD2E8A210500E5210501E511AF87216B82CD2EB3
|
:208763002600114AB8193678690C2600114AB819DD7E0407070707E60FC6C05F3E00CE8747
|
||||||
:208783008A210300E521050CE511B587216B82CD2E8AC95061747465726E3A2300202052B6
|
:20878300571A77690C2600114AB819DD7E04E60FC6C05F3E00CE87571A77690C2600114A7D
|
||||||
:2087A3006F773A2300202042504D3A0054696D653A00202F2000DDE5DD210000DD3921F8F3
|
:2087A300B8193629692600114AB81936003E72F533214AB8CDAD8633DDE1E133E930313219
|
||||||
:2087C300FF39F93A31B86F3E0BCDD4803EA8CD088011D007210000CDD8813E2BCD2180DD4B
|
:2087C3003334353637383941424344454600DDE5DD210000DD39EB01FD87DD7E04070707CD
|
||||||
:2087E30077FA3E2CCD2180DD77FB3E02F53321010039EB3E31CDA8803E2DCD3A80DD73FC8E
|
:2087E30007E60F6F2600097E1213DD7E04E60F6F2600097E12DDE1E133E9303132333435CD
|
||||||
:20880300DD72FDDD75FEDD74FF3A30B8FD212DB8FDB602FDB601FDB600200C3E36CD3A8001
|
:208803003637383941424344454600DDE5DD210000DD39F54D44E1D5C5116400DD6EFEDD70
|
||||||
:20882300ED532DB8222FB8DD7EFAF5332132B8CDF985210200E521030AE51132B8216B8210
|
:2088230066FFCDD58CEB110A00CD2A8DC17BC63002696023E5C5110A00DD6EFEDD66FFCDDB
|
||||||
:20884300CD2E8ADD7EFBF5332132B8CDF985210200E5210313E51132B8216B82CD2E8AD139
|
:20884300D58CEB110A00CD2A8DC1E17BC630770303C5110A00DD6EFEDD66FFCD2A8DC17B6F
|
||||||
:20886300D52134B8CD3686210300E521031BE51134B8216B82CD2E8A210000E52144ACE5D1
|
:20886300C63002DDF9DDE1C9DDE5DD210000DD39E5210000E52E3CE5DD5E04DD5605DD6ECE
|
||||||
:20888300DD5EFCDD56FDDD6EFEDD66FFCDC3B8F1E3D52137B8CD9386210500E5210507E5DF
|
:2088830006DD6607CD16B9F1F1010000C50E64C5CD8FB8F1F14BC5210000E52E3CE5DD5E74
|
||||||
:2088A3001137B8216B82CD2E8A210000E52144ACE5ED5B2DB82A2FB8CDC3B8F1E3D521379F
|
:2088A30004DD5605DD6E06DD6607CD8FB8F1F1C151D52E0A7ACDD08C7B2E0ACD238D7BD1AA
|
||||||
:2088C300B8CD9386210500E521050FE51137B8216B82CD2E8ADDF9DDE1C9CDA4853A00A80A
|
:2088C300C630E1E577C1C503C5D52E0A7ACD238D7BD1C1C63002E1E52323363AC1C5030303
|
||||||
:2088E300B7200DCD2882B73E0120023E023200A83A00A83DC26585322DB8322EB8322FB8D5
|
:2088E30003C5D52E0A7BCDD08C7B2E0ACD238D7BD1C1C63002DD7EFEC6044FDD7EFFCE002D
|
||||||
:208903003230B8CD2C83B7200B3A09B8D699CA7885C38E85216B82CD648ACDC985CD40875D
|
:2089030047C52E0A7BCD238D7BC1C63002DDF9DDE1E1F1F1E9210900E5210401E511B78939
|
||||||
:20892300CDB98776CD718AB728273EA2CD0880111027210000CDD8813EE4CD088011102760
|
:20892300216782CD2F8D210700E521040CE511C189216782CD2F8D210600E5210415E51154
|
||||||
:20894300210000CDD881216B82CDC28A3E02CD0380CDE58AB728273EA2CD08801110272136
|
:20894300C989216782CD2F8D210500E5210601E511D089216782CD2F8D210300E521060CDE
|
||||||
:208963000000CDD8813EE4CD0880111027210000CDD881216B82CDC28A3E04CD0380CDDB67
|
:20896300E511D689216782CD2F8D116CB80E006926001936200C79D62038F4212000E521DD
|
||||||
:208983008AB7289F3EA2CD0880111027210000CDD8813EE4CD0880111027210000CDD88102
|
:208983000804E5216782CD2F8D210804E5216782CD8B8D7AE63F57CBFBED538CB80E002AD7
|
||||||
:2089A300216B82CDC28AAFCD0380C32689ED7301B83208B8ED430AB8083207B82203B8ED5C
|
:2089A3008CB85D7CC6C0576926001936070C79D62038ECC95061747465726E3A23002020F2
|
||||||
:1689C3005305B83A08B8B7CADD883A08B8D603CA5285AFC3038045
|
:2089C300526F773A2300202042504D3A0054696D653A00202F2000DDE5DD210000DD394B4D
|
||||||
:03800000C3B08981
|
:2089E30042EBDD7E07DDB606DDB605DDB604283069603E0529CB13CB123D20F8DD4E06DD72
|
||||||
:2089D9005D6F2600547BE680B220110610ED6A17933001833FED6A10F65FEBC906097D6C02
|
:208A03004607C5DD4E04DD4605C5EBCD16B9F1F14B423E20BB3E009A3009012000C3268A71
|
||||||
:2089F9002600CB1DED6AED523001193F1710F5CB10505FC9DDE5DD210000DD39DD46043E87
|
:208A23000100001100002A8CB87CC6C067197B917A9830053E40C33E8A3E0777136B627DBC
|
||||||
:208A190030CD0660DDE1E133E95D6FCDDB89EBC9CDDE89EBC9DDE5E5D5DD210000DD39DD19
|
:208A4300D6207CDE0038DFDDE1E1F1F1E9DDE5DD210000DD3921F8FF39F93A30B86F3E0B48
|
||||||
:208A3900460BDD4E0ADD5608DD5E09DD6E00DD6601D9DD6E02DD6603E5DDE1D93E03CD068D
|
:208A6300CDD4803EA8CD0880213200CDE8813E28CD2180DD77FF3A31B8D621201DDD7EFF36
|
||||||
:188A590060D1E1DDE1E133333333E9DDE5E5DDE13E01CD0660DDE1C941
|
:208A8300D62020163EE4CD0880216400CDE881216782CDF78D3E02CD0380DD7EFF3231B815
|
||||||
:20B83C00DDE5DD210000DD39010000DD7E07073838DDCB0426DDCB0516DDCB0616DDCB0734
|
:208AA3003E2BCD2180DD77FA3E2CCD2180DD77FB3E02F53321010039EB3E31CDA8803E2DEA
|
||||||
:20B85C00167BDD96047ADD9E057DDD9E067CDD9E073012DDCB073EDDCB061EDDCB051EDD2B
|
:208AC300CD3A80DD73FCDD72FDDD75FEDD74FF3A2FB8FD212CB8FDB602FDB601FDB6002075
|
||||||
:20B87C00CB041E1804044818C27BDD96047ADD9E057DDD9E067CDD9E0738147BDD96045FF8
|
:208AE3000C3E36CD3A80ED532CB8222EB8DD7EFAF5332162B8CDD1873E71F533210200E584
|
||||||
:20B89C007ADD9E05577DDD9E066F7CDD9E0767DDCB073EDDCB061EDDCB051EDDCB041E79A2
|
:208B030021040AE51162B8216782CDB08DDD7EFBF5332162B8CDD1873E71F533210200E542
|
||||||
:20B8BC000DB720C5DDE1C9DDE5DD210000DD39F5F5AFDD77FCDD77FDDD77FEDD77FF062061
|
:208B2300210413E51162B8216782CDB08DD1D52164B8CD0E883E71F533210300E521041B70
|
||||||
:20B8DC007C07E6014FCB23CB12ED6ADDCBFC26DDCBFD16DDCBFE16DDCBFF16CB412804DD5E
|
:208B4300E51164B8216782CDB08D210000E52144ACE5DD5EFCDD56FDDD6EFEDD66FFCD161B
|
||||||
:20B8FC00CBFCC6DD7EFCDD9604DD7EFDDD9E05DD7EFEDD9E06DD7EFFDD9E073826DD7EFC8E
|
:208B6300B9F1E3D52167B8CD6B883E71F533210500E5210607E51167B8216782CDB08D2136
|
||||||
:20B91C00DD9604DD77FCDD7EFDDD9E05DD77FDDD7EFEDD9E06DD77FEDD7EFFDD9E07DD77BF
|
:208B83000000E52144ACE5ED5B2CB82A2EB8CD16B9F1E3D52167B8CD6B883E71F533210579
|
||||||
:0AB93C00FFCBC3109BDDF9DDE1C96C
|
:208BA30000E521060FE51167B8216782CDB08D2A2EB8E52A2CB8E5DD5EFCDD56FDDD6EFED6
|
||||||
:208A7100DDE53E1ACD0660DDE1C9DDE5E5D5DD210000DD39DD460BDD4E0ADD5608DD5E099F
|
:208BC300DD66FFCDDA89DDF9DDE1C93BCD0986216782CD658DCD2E8621878CCD11873A8E81
|
||||||
:208A9100DD6E00DD6601D9DD6E02DD6603DD7E0CF5E5DDE1D93E03CD0660F108D9E5DDE109
|
:208BE300B83C200DCD5A82B73E0120023E02328EB83A8EB83D280733C37085C3858CAF324C
|
||||||
:208AB100D93E04CD0660D1E1DDE1E13333333333E9DDE5E5DDE13E02CD0660DDE1C9AF47C9
|
:208C03002CB8322DB8322EB8322FB8CDC182B720123A08B8D699200733C3A385C3858C3377
|
||||||
:1E8AD1004FEDB121FFFFED42EBC9DDE53E17CD0660DDE1C9DDE53E19CD0660DDE1C9F4
|
: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
|
:00000001FF
|
||||||
|
|||||||
+2349
-1814
File diff suppressed because it is too large
Load Diff
+113
-73
@@ -16,33 +16,33 @@ Area Addr Size Decimal Bytes (A
|
|||||||
00000000 l__GSINIT
|
00000000 l__GSINIT
|
||||||
00000000 l__HEADER
|
00000000 l__HEADER
|
||||||
00000000 l__HEAP
|
00000000 l__HEAP
|
||||||
00000000 l__INITIALIZED
|
|
||||||
00000000 l__INITIALIZER
|
|
||||||
00000000 s__CABS
|
00000000 s__CABS
|
||||||
00000000 s__DABS
|
00000000 s__DABS
|
||||||
00000000 s__HEADER
|
00000000 s__HEADER
|
||||||
00000000 s__HEADER0
|
00000000 s__HEADER0
|
||||||
|
00000001 l__INITIALIZED
|
||||||
|
00000001 l__INITIALIZER
|
||||||
00000003 l__HEADER0
|
00000003 l__HEADER0
|
||||||
0000010A l__HOME
|
0000010A l__HOME
|
||||||
00000AEC l__CODE
|
00000E21 l__CODE
|
||||||
0000103C l__DATA
|
0000108E l__DATA
|
||||||
00008003 s__CODE
|
00008003 s__CODE
|
||||||
0000A800 s__DATA
|
0000A800 s__DATA
|
||||||
0000B83C s__HOME
|
0000B88E s__INITIALIZED
|
||||||
0000B83C s__INITIALIZED
|
0000B88F s__HOME
|
||||||
0000B946 s__BSEG
|
0000B999 s__GSFINAL
|
||||||
0000B946 s__BSS
|
0000B999 s__GSINIT
|
||||||
0000B946 s__GSFINAL
|
0000B999 s__INITIALIZER
|
||||||
0000B946 s__GSINIT
|
0000B99A s__BSEG
|
||||||
0000B946 s__HEAP
|
0000B99A s__BSS
|
||||||
0000B946 s__INITIALIZER
|
0000B99A s__HEAP
|
||||||
|
|
||||||
ASxxxx Linker V05.50.4-SDLD, page 2.
|
ASxxxx Linker V05.50.4-SDLD, page 2.
|
||||||
Hexadecimal [32-Bits]
|
Hexadecimal [32-Bits]
|
||||||
|
|
||||||
Area Addr Size Decimal Bytes (Attributes)
|
Area Addr Size Decimal Bytes (Attributes)
|
||||||
-------------------------------- ---- ---- ------- ----- ------------
|
-------------------------------- ---- ---- ------- ----- ------------
|
||||||
_CODE 00008003 00000AEC = 2796. bytes (REL,CON)
|
_CODE 00008003 00000E21 = 3617. bytes (REL,CON)
|
||||||
|
|
||||||
Value Global Global Defined In Module
|
Value Global Global Defined In Module
|
||||||
----- -------------------------------- ------------------------
|
----- -------------------------------- ------------------------
|
||||||
@@ -55,91 +55,128 @@ _CODE 00008003 00000AEC = 2796. bytes (R
|
|||||||
000080EB _esp_wr_reg32 main
|
000080EB _esp_wr_reg32 main
|
||||||
0000811B _esp_wr_end main
|
0000811B _esp_wr_end main
|
||||||
0000812A _esp_send_dma main
|
0000812A _esp_send_dma main
|
||||||
0000818E _esp_rd_end main
|
0000818B _esp_rd_end main
|
||||||
0000819D _esp_wait_status main
|
0000819A _esp_wait_status main
|
||||||
000081D8 _esp_wait_busy main
|
000081E8 _esp_wait_busy main
|
||||||
000081FA _esp_create_obj main
|
0000822F _esp_create_obj main
|
||||||
00008228 _esp_init main
|
0000825A _esp_init main
|
||||||
00008235 _err_no_esp main
|
00008267 _win_xm main
|
||||||
00008247 _err_out_of_mem main
|
00008279 _win_about main
|
||||||
00008259 _err_playback main
|
000082C1 _play_xm main
|
||||||
0000826B _win_xm main
|
000084ED _wait_esc_key main
|
||||||
0000827D _win_about main
|
000084F5 _wait_frames main
|
||||||
0000832C _play_xm main
|
000084FE _about main
|
||||||
00008541 _wait_esc_key main
|
00008511 _unload_and_exit main
|
||||||
00008549 _wait_frames main
|
00008542 _leave_playing_and_exit main
|
||||||
00008552 _about main
|
0000854C _wait_for_manual_exit main
|
||||||
00008565 _error_esp main
|
00008570 _error_esp main
|
||||||
00008578 _error_oom main
|
00008597 _stop_on_error main
|
||||||
0000858E _error_playback main
|
000085A3 _error_oom main
|
||||||
000085A4 _copy_file_name main
|
000085D6 _error_playback main
|
||||||
000085C9 _xm_draw_static_labels main
|
00008609 _copy_file_name main
|
||||||
000085F9 _put_hex2 main
|
0000862E _xm_draw_static_labels main
|
||||||
00008636 _put_dec3 main
|
000086AD _xm_set_status_attr main
|
||||||
00008693 _put_time main
|
00008711 _xm_set_status main
|
||||||
00008740 _xm_draw_stats_labels main
|
00008719 _xm_set_status_code main
|
||||||
000087B9 _xm_update_info main
|
000087D1 _put_hex2 main
|
||||||
000088DD _main_start main
|
0000880E _put_dec3 main
|
||||||
000089B0 _main main
|
0000886B _put_time main
|
||||||
000089D9 __divuchar divunsigned
|
00008918 _xm_draw_stats_labels main
|
||||||
000089DB __divu8 divunsigned
|
000089DA _draw_progress_bar main
|
||||||
000089DE __divu16 divunsigned
|
00008A50 _xm_update_info main
|
||||||
000089DE __divuint divunsigned
|
00008BCE _main_start main
|
||||||
00008A0D _wc_load512 wc_load512
|
00008CA7 _main main
|
||||||
00008A22 __moduchar modunsigned
|
00008CD0 __divuchar divunsigned
|
||||||
00008A29 __moduint modunsigned
|
00008CD2 __divu8 divunsigned
|
||||||
00008A2E _wc_prsrw wc_prsrw
|
00008CD5 __divu16 divunsigned
|
||||||
00008A64 _wc_prwow wc_prwow
|
00008CD5 __divuint divunsigned
|
||||||
00008A71 _wc_key_pgdn wc_key_pgdn
|
00008D04 _wc_key_space wc_key_space
|
||||||
00008A7B _wc_prsrw_attr wc_prsrw_attr
|
00008D0E _wc_load512 wc_load512
|
||||||
00008AC2 _wc_rresb wc_rresb
|
00008D23 __moduchar modunsigned
|
||||||
00008ACF _strlen strlen
|
00008D2A __moduint modunsigned
|
||||||
00008ADB _wc_key_esc wc_key_esc
|
00008D2F _wc_prsrw wc_prsrw
|
||||||
00008AE5 _wc_key_pgup wc_key_pgup
|
00008D65 _wc_prwow wc_prwow
|
||||||
|
|
||||||
ASxxxx Linker V05.50.4-SDLD, page 3.
|
ASxxxx Linker V05.50.4-SDLD, page 3.
|
||||||
Hexadecimal [32-Bits]
|
Hexadecimal [32-Bits]
|
||||||
|
|
||||||
Area Addr Size Decimal Bytes (Attributes)
|
Area Addr Size Decimal Bytes (Attributes)
|
||||||
-------------------------------- ---- ---- ------- ----- ------------
|
-------------------------------- ---- ---- ------- ----- ------------
|
||||||
_DATA 0000A800 0000103C = 4156. bytes (REL,CON)
|
_CODE 00008003 00000E21 = 3617. bytes (REL,CON)
|
||||||
|
|
||||||
Value Global Global Defined In Module
|
Value Global Global Defined In Module
|
||||||
----- -------------------------------- ------------------------
|
----- -------------------------------- ------------------------
|
||||||
0000A800 _state_esp main
|
00008D72 _wc_prm_pl wc_prm_pl
|
||||||
0000A801 _fs_buf main
|
00008D81 _wc_key_pgdn wc_key_pgdn
|
||||||
0000B801 _ret_sp main
|
00008D8B _wc_gadrw wc_gadrw
|
||||||
0000B803 _filesize main
|
00008DB0 _wc_prsrw_attr wc_prsrw_attr
|
||||||
0000B807 _file_ext main
|
00008DF7 _wc_rresb wc_rresb
|
||||||
0000B808 _call_type main
|
00008E04 _strlen strlen
|
||||||
0000B809 _last_esp_status main
|
00008E10 _wc_key_esc wc_key_esc
|
||||||
0000B80A _p_file_name main
|
00008E1A _wc_key_pgup wc_key_pgup
|
||||||
0000B80C _file_name main
|
|
||||||
0000B82D _total_samples main
|
|
||||||
0000B831 _xm_handle main
|
|
||||||
|
|
||||||
ASxxxx Linker V05.50.4-SDLD, page 4.
|
ASxxxx Linker V05.50.4-SDLD, page 4.
|
||||||
Hexadecimal [32-Bits]
|
Hexadecimal [32-Bits]
|
||||||
|
|
||||||
Area Addr Size Decimal Bytes (Attributes)
|
Area Addr Size Decimal Bytes (Attributes)
|
||||||
-------------------------------- ---- ---- ------- ----- ------------
|
-------------------------------- ---- ---- ------- ----- ------------
|
||||||
_HOME 0000B83C 0000010A = 266. bytes (REL,CON)
|
_DATA 0000A800 0000108E = 4238. bytes (REL,CON)
|
||||||
|
|
||||||
Value Global Global Defined In Module
|
Value Global Global Defined In Module
|
||||||
----- -------------------------------- ------------------------
|
----- -------------------------------- ------------------------
|
||||||
0000B83C __modulong _modulong
|
0000A800 _fs_buf main
|
||||||
0000B8C3 __divulong _divulong
|
0000B800 _ret_sp main
|
||||||
|
0000B802 _filesize main
|
||||||
|
0000B806 _file_ext main
|
||||||
|
0000B807 _call_type main
|
||||||
|
0000B808 _last_esp_status main
|
||||||
|
0000B809 _p_file_name main
|
||||||
|
0000B80B _file_name main
|
||||||
|
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.
|
ASxxxx Linker V05.50.4-SDLD, page 5.
|
||||||
Hexadecimal [32-Bits]
|
Hexadecimal [32-Bits]
|
||||||
|
|
||||||
|
Area Addr Size Decimal Bytes (Attributes)
|
||||||
|
-------------------------------- ---- ---- ------- ----- ------------
|
||||||
|
_INITIALIZED 0000B88E 00000001 = 1. bytes (REL,CON)
|
||||||
|
|
||||||
|
Value Global Global Defined In Module
|
||||||
|
----- -------------------------------- ------------------------
|
||||||
|
0000B88E _state_esp main
|
||||||
|
|
||||||
|
ASxxxx Linker V05.50.4-SDLD, page 6.
|
||||||
|
Hexadecimal [32-Bits]
|
||||||
|
|
||||||
|
Area Addr Size Decimal Bytes (Attributes)
|
||||||
|
-------------------------------- ---- ---- ------- ----- ------------
|
||||||
|
_HOME 0000B88F 0000010A = 266. bytes (REL,CON)
|
||||||
|
|
||||||
|
Value Global Global Defined In Module
|
||||||
|
----- -------------------------------- ------------------------
|
||||||
|
0000B88F __modulong _modulong
|
||||||
|
0000B916 __divulong _divulong
|
||||||
|
|
||||||
|
ASxxxx Linker V05.50.4-SDLD, page 7.
|
||||||
|
Hexadecimal [32-Bits]
|
||||||
|
|
||||||
|
Area Addr Size Decimal Bytes (Attributes)
|
||||||
|
-------------------------------- ---- ---- ------- ----- ------------
|
||||||
|
_INITIALIZER 0000B999 00000001 = 1. bytes (REL,CON)
|
||||||
|
|
||||||
|
Value Global Global Defined In Module
|
||||||
|
----- -------------------------------- ------------------------
|
||||||
|
ASxxxx Linker V05.50.4-SDLD, page 8.
|
||||||
|
Hexadecimal [32-Bits]
|
||||||
|
|
||||||
Area Addr Size Decimal Bytes (Attributes)
|
Area Addr Size Decimal Bytes (Attributes)
|
||||||
-------------------------------- ---- ---- ------- ----- ------------
|
-------------------------------- ---- ---- ------- ----- ------------
|
||||||
_HEADER0 00000000 00000003 = 3. bytes (ABS,CON)
|
_HEADER0 00000000 00000003 = 3. bytes (ABS,CON)
|
||||||
|
|
||||||
Value Global Global Defined In Module
|
Value Global Global Defined In Module
|
||||||
----- -------------------------------- ------------------------
|
----- -------------------------------- ------------------------
|
||||||
ASxxxx Linker V05.50.4-SDLD, page 6.
|
ASxxxx Linker V05.50.4-SDLD, page 9.
|
||||||
|
|
||||||
Files Linked [ module(s) ]
|
Files Linked [ module(s) ]
|
||||||
|
|
||||||
@@ -150,20 +187,23 @@ obj/crt0.rel [ crt0 ]
|
|||||||
Libraries Linked [ object file ]
|
Libraries Linked [ object file ]
|
||||||
|
|
||||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ divunsigned.rel ]
|
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 ]
|
vgm_wc_api.lib [ wc_load512.rel ]
|
||||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ modunsigned.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_prsrw.rel ]
|
||||||
vgm_wc_api.lib [ wc_prwow.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 [ _modulong.rel ]
|
||||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ _divulong.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_key_pgdn.rel ]
|
||||||
|
vgm_wc_api.lib [ wc_gadrw.rel ]
|
||||||
vgm_wc_api.lib [ wc_prsrw_attr.rel ]
|
vgm_wc_api.lib [ wc_prsrw_attr.rel ]
|
||||||
vgm_wc_api.lib [ wc_rresb.rel ]
|
vgm_wc_api.lib [ wc_rresb.rel ]
|
||||||
E:\SDCC\4.6.0\bin\..\lib\z80/z80.lib [ strlen.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_esc.rel ]
|
||||||
vgm_wc_api.lib [ wc_key_pgup.rel ]
|
vgm_wc_api.lib [ wc_key_pgup.rel ]
|
||||||
|
|
||||||
ASxxxx Linker V05.50.4-SDLD, page 7.
|
ASxxxx Linker V05.50.4-SDLD, page 10.
|
||||||
|
|
||||||
User Base Address Definitions
|
User Base Address Definitions
|
||||||
|
|
||||||
|
|||||||
+76
-66
@@ -7,26 +7,26 @@ DEF l__GSFINAL 0x0
|
|||||||
DEF l__GSINIT 0x0
|
DEF l__GSINIT 0x0
|
||||||
DEF l__HEADER 0x0
|
DEF l__HEADER 0x0
|
||||||
DEF l__HEAP 0x0
|
DEF l__HEAP 0x0
|
||||||
DEF l__INITIALIZED 0x0
|
|
||||||
DEF l__INITIALIZER 0x0
|
|
||||||
DEF s__CABS 0x0
|
DEF s__CABS 0x0
|
||||||
DEF s__DABS 0x0
|
DEF s__DABS 0x0
|
||||||
DEF s__HEADER 0x0
|
DEF s__HEADER 0x0
|
||||||
DEF s__HEADER0 0x0
|
DEF s__HEADER0 0x0
|
||||||
|
DEF l__INITIALIZED 0x1
|
||||||
|
DEF l__INITIALIZER 0x1
|
||||||
DEF l__HEADER0 0x3
|
DEF l__HEADER0 0x3
|
||||||
DEF l__HOME 0x10A
|
DEF l__HOME 0x10A
|
||||||
DEF l__CODE 0xAEC
|
DEF l__CODE 0xE21
|
||||||
DEF l__DATA 0x103C
|
DEF l__DATA 0x108E
|
||||||
DEF s__CODE 0x8003
|
DEF s__CODE 0x8003
|
||||||
DEF s__DATA 0xA800
|
DEF s__DATA 0xA800
|
||||||
DEF s__HOME 0xB83C
|
DEF s__INITIALIZED 0xB88E
|
||||||
DEF s__INITIALIZED 0xB83C
|
DEF s__HOME 0xB88F
|
||||||
DEF s__BSEG 0xB946
|
DEF s__GSFINAL 0xB999
|
||||||
DEF s__BSS 0xB946
|
DEF s__GSINIT 0xB999
|
||||||
DEF s__GSFINAL 0xB946
|
DEF s__INITIALIZER 0xB999
|
||||||
DEF s__GSINIT 0xB946
|
DEF s__BSEG 0xB99A
|
||||||
DEF s__HEAP 0xB946
|
DEF s__BSS 0xB99A
|
||||||
DEF s__INITIALIZER 0xB946
|
DEF s__HEAP 0xB99A
|
||||||
DEF _wc_exit 0x8003
|
DEF _wc_exit 0x8003
|
||||||
DEF _esp_cmd 0x8008
|
DEF _esp_cmd 0x8008
|
||||||
DEF _esp_rd_reg8 0x8021
|
DEF _esp_rd_reg8 0x8021
|
||||||
@@ -36,58 +36,68 @@ DEF _esp_wr_reg8 0x80D4
|
|||||||
DEF _esp_wr_reg32 0x80EB
|
DEF _esp_wr_reg32 0x80EB
|
||||||
DEF _esp_wr_end 0x811B
|
DEF _esp_wr_end 0x811B
|
||||||
DEF _esp_send_dma 0x812A
|
DEF _esp_send_dma 0x812A
|
||||||
DEF _esp_rd_end 0x818E
|
DEF _esp_rd_end 0x818B
|
||||||
DEF _esp_wait_status 0x819D
|
DEF _esp_wait_status 0x819A
|
||||||
DEF _esp_wait_busy 0x81D8
|
DEF _esp_wait_busy 0x81E8
|
||||||
DEF _esp_create_obj 0x81FA
|
DEF _esp_create_obj 0x822F
|
||||||
DEF _esp_init 0x8228
|
DEF _esp_init 0x825A
|
||||||
DEF _err_no_esp 0x8235
|
DEF _win_xm 0x8267
|
||||||
DEF _err_out_of_mem 0x8247
|
DEF _win_about 0x8279
|
||||||
DEF _err_playback 0x8259
|
DEF _play_xm 0x82C1
|
||||||
DEF _win_xm 0x826B
|
DEF _wait_esc_key 0x84ED
|
||||||
DEF _win_about 0x827D
|
DEF _wait_frames 0x84F5
|
||||||
DEF _play_xm 0x832C
|
DEF _about 0x84FE
|
||||||
DEF _wait_esc_key 0x8541
|
DEF _unload_and_exit 0x8511
|
||||||
DEF _wait_frames 0x8549
|
DEF _leave_playing_and_exit 0x8542
|
||||||
DEF _about 0x8552
|
DEF _wait_for_manual_exit 0x854C
|
||||||
DEF _error_esp 0x8565
|
DEF _error_esp 0x8570
|
||||||
DEF _error_oom 0x8578
|
DEF _stop_on_error 0x8597
|
||||||
DEF _error_playback 0x858E
|
DEF _error_oom 0x85A3
|
||||||
DEF _copy_file_name 0x85A4
|
DEF _error_playback 0x85D6
|
||||||
DEF _xm_draw_static_labels 0x85C9
|
DEF _copy_file_name 0x8609
|
||||||
DEF _put_hex2 0x85F9
|
DEF _xm_draw_static_labels 0x862E
|
||||||
DEF _put_dec3 0x8636
|
DEF _xm_set_status_attr 0x86AD
|
||||||
DEF _put_time 0x8693
|
DEF _xm_set_status 0x8711
|
||||||
DEF _xm_draw_stats_labels 0x8740
|
DEF _xm_set_status_code 0x8719
|
||||||
DEF _xm_update_info 0x87B9
|
DEF _put_hex2 0x87D1
|
||||||
DEF _main_start 0x88DD
|
DEF _put_dec3 0x880E
|
||||||
DEF _main 0x89B0
|
DEF _put_time 0x886B
|
||||||
DEF __divuchar 0x89D9
|
DEF _xm_draw_stats_labels 0x8918
|
||||||
DEF __divu8 0x89DB
|
DEF _draw_progress_bar 0x89DA
|
||||||
DEF __divu16 0x89DE
|
DEF _xm_update_info 0x8A50
|
||||||
DEF __divuint 0x89DE
|
DEF _main_start 0x8BCE
|
||||||
DEF _wc_load512 0x8A0D
|
DEF _main 0x8CA7
|
||||||
DEF __moduchar 0x8A22
|
DEF __divuchar 0x8CD0
|
||||||
DEF __moduint 0x8A29
|
DEF __divu8 0x8CD2
|
||||||
DEF _wc_prsrw 0x8A2E
|
DEF __divu16 0x8CD5
|
||||||
DEF _wc_prwow 0x8A64
|
DEF __divuint 0x8CD5
|
||||||
DEF _wc_key_pgdn 0x8A71
|
DEF _wc_key_space 0x8D04
|
||||||
DEF _wc_prsrw_attr 0x8A7B
|
DEF _wc_load512 0x8D0E
|
||||||
DEF _wc_rresb 0x8AC2
|
DEF __moduchar 0x8D23
|
||||||
DEF _strlen 0x8ACF
|
DEF __moduint 0x8D2A
|
||||||
DEF _wc_key_esc 0x8ADB
|
DEF _wc_prsrw 0x8D2F
|
||||||
DEF _wc_key_pgup 0x8AE5
|
DEF _wc_prwow 0x8D65
|
||||||
DEF _state_esp 0xA800
|
DEF _wc_prm_pl 0x8D72
|
||||||
DEF _fs_buf 0xA801
|
DEF _wc_key_pgdn 0x8D81
|
||||||
DEF _ret_sp 0xB801
|
DEF _wc_gadrw 0x8D8B
|
||||||
DEF _filesize 0xB803
|
DEF _wc_prsrw_attr 0x8DB0
|
||||||
DEF _file_ext 0xB807
|
DEF _wc_rresb 0x8DF7
|
||||||
DEF _call_type 0xB808
|
DEF _strlen 0x8E04
|
||||||
DEF _last_esp_status 0xB809
|
DEF _wc_key_esc 0x8E10
|
||||||
DEF _p_file_name 0xB80A
|
DEF _wc_key_pgup 0x8E1A
|
||||||
DEF _file_name 0xB80C
|
DEF _fs_buf 0xA800
|
||||||
DEF _total_samples 0xB82D
|
DEF _ret_sp 0xB800
|
||||||
DEF _xm_handle 0xB831
|
DEF _filesize 0xB802
|
||||||
DEF __modulong 0xB83C
|
DEF _file_ext 0xB806
|
||||||
DEF __divulong 0xB8C3
|
DEF _call_type 0xB807
|
||||||
|
DEF _last_esp_status 0xB808
|
||||||
|
DEF _p_file_name 0xB809
|
||||||
|
DEF _file_name 0xB80B
|
||||||
|
DEF _total_samples 0xB82C
|
||||||
|
DEF _xm_handle 0xB830
|
||||||
|
DEF _last_track_status 0xB831
|
||||||
|
DEF _bar_attr_ofs 0xB88C
|
||||||
|
DEF _state_esp 0xB88E
|
||||||
|
DEF __modulong 0xB88F
|
||||||
|
DEF __divulong 0xB916
|
||||||
LOAD obj/out.ihx
|
LOAD obj/out.ihx
|
||||||
|
|||||||
+868
-588
File diff suppressed because it is too large
Load Diff
+78
-60
@@ -63,104 +63,122 @@ Hexadecimal [32-Bits]
|
|||||||
|
|
||||||
Symbol Table
|
Symbol Table
|
||||||
|
|
||||||
0 ___str_11 00000793 R
|
0 ___str_12 000009B4 R
|
||||||
0 ___str_12 0000079D R
|
0 ___str_13 000009BE R
|
||||||
0 ___str_13 000007A5 R
|
0 ___str_14 000009C6 R
|
||||||
0 ___str_14 000007AC R
|
0 ___str_15 000009CD R
|
||||||
0 ___str_15 000007B2 R
|
0 ___str_16 000009D3 R
|
||||||
0 ___str_9 000005F0 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
|
__divuchar ******** GX
|
||||||
__divuint ******** GX
|
__divuint ******** GX
|
||||||
__divulong ******** GX
|
__divulong ******** GX
|
||||||
__moduchar ******** GX
|
__moduchar ******** GX
|
||||||
__moduint ******** GX
|
__moduint ******** GX
|
||||||
__modulong ******** GX
|
__modulong ******** GX
|
||||||
0 __str_0 0000028C R
|
0 __str_0 00000288 R
|
||||||
0 __str_1 00000296 R
|
0 __str_1 000002A2 R
|
||||||
0 __str_2 00000297 R
|
0 __str_2 000002A3 R
|
||||||
0 __str_3 000002AD R
|
0 __str_3 000002AC R
|
||||||
0 __str_4 000002CD R
|
7 __xinit__state_esp 00000000 R
|
||||||
0 __str_5 000002EB R
|
0 _about 000004FB GR
|
||||||
0 __str_6 00000300 R
|
1 _bar_attr_ofs 0000108C GR
|
||||||
0 __str_7 0000030E R
|
1 _barbuf 0000106C R
|
||||||
0 __str_8 00000317 R
|
1 _call_type 00001007 GR
|
||||||
0 _about 0000054F GR
|
0 _copy_file_name 00000606 GR
|
||||||
1 _call_type 00001008 GR
|
1 _decbuf 00001064 R
|
||||||
0 _copy_file_name 000005A1 GR
|
0 _draw_progress_bar 000009D7 GR
|
||||||
1 _decbuf 00001034 R
|
0 _error_esp 0000056D GR
|
||||||
0 _err_no_esp 00000232 GR
|
0 _error_oom 000005A0 GR
|
||||||
0 _err_out_of_mem 00000244 GR
|
0 _error_playback 000005D3 GR
|
||||||
0 _err_playback 00000256 GR
|
|
||||||
0 _error_esp 00000562 GR
|
|
||||||
0 _error_oom 00000575 GR
|
|
||||||
0 _error_playback 0000058B GR
|
|
||||||
0 _esp_cmd 00000005 GR
|
0 _esp_cmd 00000005 GR
|
||||||
0 _esp_create_obj 000001F7 GR
|
0 _esp_create_obj 0000022C GR
|
||||||
0 _esp_init 00000225 GR
|
0 _esp_init 00000257 GR
|
||||||
0 _esp_rd_end 0000018B GR
|
0 _esp_rd_end 00000188 GR
|
||||||
0 _esp_rd_reg32 00000037 GR
|
0 _esp_rd_reg32 00000037 GR
|
||||||
0 _esp_rd_reg8 0000001E GR
|
0 _esp_rd_reg8 0000001E GR
|
||||||
0 _esp_rd_regs 000000A5 GR
|
0 _esp_rd_regs 000000A5 GR
|
||||||
0 _esp_send_dma 00000127 GR
|
0 _esp_send_dma 00000127 GR
|
||||||
0 _esp_wait_busy 000001D5 GR
|
0 _esp_wait_busy 000001E5 GR
|
||||||
0 _esp_wait_status 0000019A GR
|
0 _esp_wait_status 00000197 GR
|
||||||
0 _esp_wr_end 00000118 GR
|
0 _esp_wr_end 00000118 GR
|
||||||
0 _esp_wr_reg32 000000E8 GR
|
0 _esp_wr_reg32 000000E8 GR
|
||||||
0 _esp_wr_reg8 000000D1 GR
|
0 _esp_wr_reg8 000000D1 GR
|
||||||
1 _file_ext 00001007 GR
|
1 _file_ext 00001006 GR
|
||||||
1 _file_name 0000100C GR
|
1 _file_name 0000100B GR
|
||||||
1 _filesize 00001003 GR
|
1 _filesize 00001002 GR
|
||||||
1 _fs_buf 00000001 GR
|
1 _fs_buf 00000000 GR
|
||||||
1 _hexbuf 00001032 R
|
1 _hexbuf 00001062 R
|
||||||
1 _last_esp_status 00001009 GR
|
1 _last_esp_status 00001008 GR
|
||||||
0 _main 000009AD GR
|
1 _last_track_status 00001031 GR
|
||||||
0 _main_start 000008DA GR
|
0 _leave_playing_and_exit 0000053F GR
|
||||||
1 _p_file_name 0000100A GR
|
|
||||||
0 _play_xm 00000329 GR
|
|
||||||
0 _put_dec3 00000633 GR
|
|
||||||
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 3
|
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 3
|
||||||
Hexadecimal [32-Bits]
|
Hexadecimal [32-Bits]
|
||||||
|
|
||||||
Symbol Table
|
Symbol Table
|
||||||
|
|
||||||
0 _put_hex2 000005F6 GR
|
0 _main 00000CA4 GR
|
||||||
0 _put_hex2_hexch_10000_105 00000622 R
|
0 _main_start 00000BCB GR
|
||||||
0 _put_time 00000690 GR
|
1 _p_file_name 00001009 GR
|
||||||
1 _ret_sp 00001001 GR
|
0 _play_xm 000002BE GR
|
||||||
1 _state_esp 00000000 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
|
_strlen ******** GX
|
||||||
1 _timebuf 00001037 R
|
1 _timebuf 00001067 R
|
||||||
1 _total_samples 0000102D GR
|
1 _total_samples 0000102C GR
|
||||||
0 _wait_esc_key 0000053E GR
|
0 _unload_and_exit 0000050E GR
|
||||||
0 _wait_frames 00000546 GR
|
0 _wait_esc_key 000004EA GR
|
||||||
|
0 _wait_for_manual_exit 00000549 GR
|
||||||
|
0 _wait_frames 000004F2 GR
|
||||||
0 _wc_exit 00000000 GR
|
0 _wc_exit 00000000 GR
|
||||||
|
_wc_gadrw ******** GX
|
||||||
_wc_key_esc ******** GX
|
_wc_key_esc ******** GX
|
||||||
_wc_key_pgdn ******** GX
|
_wc_key_pgdn ******** GX
|
||||||
_wc_key_pgup ******** GX
|
_wc_key_pgup ******** GX
|
||||||
|
_wc_key_space ******** GX
|
||||||
_wc_load512 ******** GX
|
_wc_load512 ******** GX
|
||||||
|
_wc_prm_pl ******** GX
|
||||||
_wc_prsrw ******** GX
|
_wc_prsrw ******** GX
|
||||||
_wc_prsrw_attr ******** GX
|
_wc_prsrw_attr ******** GX
|
||||||
_wc_prwow ******** GX
|
_wc_prwow ******** GX
|
||||||
_wc_rresb ******** GX
|
_wc_rresb ******** GX
|
||||||
0 _win_about 0000027A GR
|
0 _win_about 00000276 GR
|
||||||
0 _win_xm 00000268 GR
|
0 _win_xm 00000264 GR
|
||||||
0 _xm_draw_static_labels 000005C6 GR
|
0 _xm_draw_static_labels 0000062B GR
|
||||||
0 _xm_draw_stats_labels 0000073D GR
|
0 _xm_draw_stats_labels 00000915 GR
|
||||||
1 _xm_handle 00001031 GR
|
1 _xm_handle 00001030 GR
|
||||||
0 _xm_update_info 000007B6 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
|
ASxxxx Assembler V05.50.4+NoICE+SDCCmods-WIP-R14 (Zilog Z80 / Hitachi HD64180 / ZX-Next / eZ80 / R800) Page 4
|
||||||
Hexadecimal [32-Bits]
|
Hexadecimal [32-Bits]
|
||||||
|
|
||||||
Area Table
|
Area Table
|
||||||
|
|
||||||
0 _CODE size 9D6 flags 0
|
0 _CODE size CCD flags 0
|
||||||
1 _DATA size 103C flags 0
|
1 _DATA size 108E flags 0
|
||||||
2 _INITIALIZED size 0 flags 0
|
2 _INITIALIZED size 1 flags 0
|
||||||
3 _DABS size 0 flags 8
|
3 _DABS size 0 flags 8
|
||||||
4 _HOME size 0 flags 0
|
4 _HOME size 0 flags 0
|
||||||
5 _GSINIT size 0 flags 0
|
5 _GSINIT size 0 flags 0
|
||||||
6 _GSFINAL size 0 flags 0
|
6 _GSFINAL size 0 flags 0
|
||||||
7 _INITIALIZER size 0 flags 0
|
7 _INITIALIZER size 1 flags 0
|
||||||
8 _CABS size 0 flags 8
|
8 _CABS size 0 flags 8
|
||||||
|
|
||||||
|
|||||||
+30
-10
@@ -13,7 +13,7 @@
|
|||||||
#define SPI_ESP_CS_ON 0x13
|
#define SPI_ESP_CS_ON 0x13
|
||||||
#define SPI_ESP_CS_OFF 0x03
|
#define SPI_ESP_CS_OFF 0x03
|
||||||
|
|
||||||
u32 esp_wait_busy(u32 timeout);
|
u8 esp_wait_busy(u16 max_frames);
|
||||||
|
|
||||||
void esp_cmd(u8 cmd)
|
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;
|
SPI_CTRL = SPI_ESP_CS_OFF;
|
||||||
|
|
||||||
esp_wr_end();
|
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()
|
void esp_rd_end()
|
||||||
@@ -128,18 +128,38 @@ void esp_rd_end()
|
|||||||
SPI_CTRL = SPI_ESP_CS_OFF;
|
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)
|
return 0;
|
||||||
{
|
}
|
||||||
while (--timeout) if (esp_rd_reg8(ESP_REG_STATUS) != ESP_ST_BUSY) break;
|
|
||||||
|
|
||||||
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)
|
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_reg32(ESP_REG_DATA_SIZE, size);
|
||||||
esp_wr_reg8(ESP_REG_OBJ_TYPE, type);
|
esp_wr_reg8(ESP_REG_OBJ_TYPE, type);
|
||||||
esp_cmd(ESP_CMD_MAKE_OBJECT);
|
esp_cmd(ESP_CMD_MAKE_OBJECT);
|
||||||
esp_wait_busy(20000);
|
esp_wait_busy(100); // 2s - object allocation should be near-instant
|
||||||
// +++ check error
|
// +++ check error
|
||||||
|
|
||||||
return esp_rd_reg8(ESP_REG_OBJ_HANDLE);
|
return esp_rd_reg8(ESP_REG_OBJ_HANDLE);
|
||||||
|
|||||||
+327
-136
@@ -12,12 +12,20 @@
|
|||||||
// This used to be `const u8 state_esp = 0;`, written to via `*(u8*)&state_esp`
|
// This used to be `const u8 state_esp = 0;`, written to via `*(u8*)&state_esp`
|
||||||
// as a code-size trick (skip GSINIT zero-init - a const's value is already
|
// as a code-size trick (skip GSINIT zero-init - a const's value is already
|
||||||
// known at compile time). That's undefined behavior (modifying a const
|
// known at compile time). That's undefined behavior (modifying a const
|
||||||
// object), and SDCC 4.6.0's more aggressive optimizer actually exploits it:
|
// object), and SDCC 4.6.0's more aggressive optimizer exploited it (folded
|
||||||
// it folds `state_esp != 1` to a compile-time-constant `true` (since the
|
// `state_esp != 1` to a compile-time-constant `true`), so it was replaced
|
||||||
// const's initializer is 0), permanently ignoring the "write" - which is
|
// with a plain global on the assumption that BSS zero-init makes it start
|
||||||
// exactly why esp32 detection always failed after the 4.0.0->4.6.0 bump.
|
// at 0. That assumption was WRONG for this project: crt0.s never calls
|
||||||
// Plain (non-const) global; BSS zero-init already makes it start at 0.
|
// GSINIT (just `jp _main`), and hex2bin fills any address with no real hex
|
||||||
u8 state_esp;
|
// record with 0xFF, not 0 - confirmed by reading obj/out.bin directly at
|
||||||
|
// state_esp's address (0xA800), which held 0xFF. So a truly-uninitialized
|
||||||
|
// global here always reads 0xFF on load, `!state_esp` is always false,
|
||||||
|
// esp_init() never runs, and error_esp() fires unconditionally - this is
|
||||||
|
// what actually broke esp32 detection, not (only) the const-UB optimizer
|
||||||
|
// fold. Fix: give it a real (non-zero) initializer so SDCC places it in the
|
||||||
|
// _DATA area with actual bytes in the loaded blob (like the original const
|
||||||
|
// did), and check against the real fill/sentinel value instead of 0.
|
||||||
|
u8 state_esp = 0xFF;
|
||||||
|
|
||||||
#define FS_BUF_SIZE 0x1000
|
#define FS_BUF_SIZE 0x1000
|
||||||
u8 fs_buf[FS_BUF_SIZE]; // at 0xAE00 (_PAGE2 to get page)
|
u8 fs_buf[FS_BUF_SIZE]; // at 0xAE00 (_PAGE2 to get page)
|
||||||
@@ -36,6 +44,12 @@ char file_name[33];
|
|||||||
u32 total_samples;
|
u32 total_samples;
|
||||||
u8 xm_handle;
|
u8 xm_handle;
|
||||||
|
|
||||||
|
// Set right after a successful play_xm() (track is genuinely PLAYING at that
|
||||||
|
// point); compared against TRACK_GET_INFO's ESP_REG_TRACK_STATUS on every
|
||||||
|
// poll so a PLAYING->STOPPED transition (loop limit reached, track stopped
|
||||||
|
// itself) can be told apart from a track that was simply never started.
|
||||||
|
u8 last_track_status;
|
||||||
|
|
||||||
// --- Extensions ---------------------------
|
// --- Extensions ---------------------------
|
||||||
// file_ext is the matched entry's index into wc_h.c's ext[] table, so this
|
// file_ext is the matched entry's index into wc_h.c's ext[] table, so this
|
||||||
// enum must stay in the same order as that array (XM, XMZ, S3M).
|
// enum must stay in the same order as that array (XM, XMZ, S3M).
|
||||||
@@ -47,51 +61,6 @@ enum
|
|||||||
};
|
};
|
||||||
|
|
||||||
// --- Windows ------------------------------
|
// --- 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
|
// STEP 1 of the gradual reintroduction: bigger, fixed position (not
|
||||||
// auto-center) - no wc_prsrw() calls yet, still just static wnd_txt like
|
// 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
|
// before. This exact size/position was already confirmed stable on its own
|
||||||
@@ -101,14 +70,14 @@ const WC_TX_WINDOW win_xm =
|
|||||||
/* window with header and text + shadow (0x80) */ WC_WIND_HDR_TXT | 0x80,
|
/* window with header and text + shadow (0x80) */ WC_WIND_HDR_TXT | 0x80,
|
||||||
/* cursor color mask */ 0,
|
/* cursor color mask */ 0,
|
||||||
/* X,Y (position) */ 25, 10,
|
/* X,Y (position) */ 25, 10,
|
||||||
/* W,H (size) */ 40, 11,
|
/* W,H (size) */ 40, 12,
|
||||||
/* paper/ink (window color) */ 0x4F,
|
/* paper/ink (window color) */ 0x70, // white paper, black ink/border - matches VGMPLAY.WMF's CLR_WIN = WC_COLOR(WC_WHITE, WC_BLACK)
|
||||||
/* -reserved- */ 0,
|
/* -reserved- */ 0,
|
||||||
/* window restore buffer address */ 0,
|
/* window restore buffer address */ 0,
|
||||||
/* separators */ 0, 0,
|
/* separators */ 0, 0,
|
||||||
/* header text */ "\x0E" " XM/XMZ/S3M Player ",
|
/* header text */ "\x0E" " XM/XMZ/S3M Player v0.1 ",
|
||||||
/* footer text */ "",
|
/* 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 =
|
const WC_TX_WINDOW win_about =
|
||||||
@@ -123,9 +92,12 @@ const WC_TX_WINDOW win_about =
|
|||||||
/* separators */ 0, 0,
|
/* separators */ 0, 0,
|
||||||
/* header text */ "\x0E" " About ",
|
/* header text */ "\x0E" " About ",
|
||||||
/* footer text */ "",
|
/* 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()
|
bool esp_init()
|
||||||
{
|
{
|
||||||
esp_cmd(ESP_CMD_NOP);
|
esp_cmd(ESP_CMD_NOP);
|
||||||
@@ -142,9 +114,9 @@ bool esp_init()
|
|||||||
bool play_xm()
|
bool play_xm()
|
||||||
{
|
{
|
||||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
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_cmd(ESP_CMD_KILL_OBJECTS);
|
||||||
esp_wait_busy(10000);
|
esp_wait_busy(100);
|
||||||
|
|
||||||
u8 obj_type;
|
u8 obj_type;
|
||||||
switch (file_ext)
|
switch (file_ext)
|
||||||
@@ -172,7 +144,7 @@ bool play_xm()
|
|||||||
esp_wr_reg32(ESP_REG_DATA_SIZE, s);
|
esp_wr_reg32(ESP_REG_DATA_SIZE, s);
|
||||||
esp_wr_reg32(ESP_REG_DATA_OFFSET, offs);
|
esp_wr_reg32(ESP_REG_DATA_OFFSET, offs);
|
||||||
esp_cmd(ESP_CMD_WRITE_OBJECT);
|
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);
|
esp_send_dma((u16)fs_buf, *(u8*)_PAGE2, 512, sec);
|
||||||
|
|
||||||
offs += s;
|
offs += s;
|
||||||
@@ -188,7 +160,7 @@ bool play_xm()
|
|||||||
esp_wr_reg8(ESP_REG_OBJ_TYPE, OBJ_TYPE_XM);
|
esp_wr_reg8(ESP_REG_OBJ_TYPE, OBJ_TYPE_XM);
|
||||||
esp_wr_reg32(ESP_REG_DATA_SIZE, filesize);
|
esp_wr_reg32(ESP_REG_DATA_SIZE, filesize);
|
||||||
esp_cmd(ESP_CMD_UNZIP);
|
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);
|
last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
||||||
if (last_esp_status != ESP_ST_READY)
|
if (last_esp_status != ESP_ST_READY)
|
||||||
@@ -196,14 +168,31 @@ bool play_xm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
esp_cmd(ESP_CMD_TRACK_INIT);
|
esp_cmd(ESP_CMD_TRACK_INIT);
|
||||||
esp_wait_busy(10000);
|
// 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);
|
last_esp_status = esp_rd_reg8(ESP_REG_STATUS);
|
||||||
if (last_esp_status != ESP_ST_READY)
|
if (last_esp_status != ESP_ST_READY)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// Play just one loop instead of looping forever. TRACK_INIT resets the
|
||||||
|
// limit back to 0 (infinite), so this must be (re)issued after every
|
||||||
|
// TRACK_INIT/TRACK_RESET, not just once.
|
||||||
|
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(100); // 2s - both should be near-instant
|
||||||
|
|
||||||
esp_cmd(ESP_CMD_TRACK_PLAY);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -240,27 +229,99 @@ void about()
|
|||||||
wc_exit(WC_EXIT);
|
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()
|
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();
|
wait_esc_key();
|
||||||
wc_rresb(&err_no_esp);
|
wc_rresb(&win_xm);
|
||||||
wc_exit(WC_EXIT);
|
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()
|
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
|
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);
|
wc_exit(WC_NEXT_FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void error_playback()
|
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
|
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);
|
wc_exit(WC_NEXT_FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,21 +346,106 @@ void copy_file_name()
|
|||||||
// Coloring (PRIAT) via demyanenko-d/VGMPLAY.WMF's wc_prsrw_attr() - our own
|
// Coloring (PRIAT) via demyanenko-d/VGMPLAY.WMF's wc_prsrw_attr() - our own
|
||||||
// three hand-rolled attempts all corrupted esp32 file loading; retesting
|
// three hand-rolled attempts all corrupted esp32 file loading; retesting
|
||||||
// with their library now that build.bat pins SDCC 4.6.0 + --sdcccall 1.
|
// with their library now that build.bat pins SDCC 4.6.0 + --sdcccall 1.
|
||||||
#define ROW_FILE 1
|
#define ROW_FILE 2 // row 1 left blank - a gap below the header, was too cramped right against it
|
||||||
#define ATTR_CAPTION 0x45 // cyan ink - "File:" caption
|
// 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()
|
void xm_draw_static_labels()
|
||||||
{
|
{
|
||||||
wc_prsrw_attr(&win_xm, "File:", ROW_FILE, 1, 5, ATTR_CAPTION);
|
wc_prsrw(&win_xm, "File:", ROW_FILE, 1, 5);
|
||||||
wc_prsrw(&win_xm, file_name, ROW_FILE, 7, strlen(file_name));
|
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) -----
|
// --- Live status display (STEP 3, no coloring - plain wc_prsrw only) -----
|
||||||
#define ROW_STATS 3
|
#define ROW_STATS 4
|
||||||
#define ROW_TIME 5
|
#define ROW_TIME 6
|
||||||
#define ROW_BAR 6
|
#define ROW_BAR 8 // blank rows between each of these for spacing
|
||||||
#define BAR_X 1
|
// Window content is 40 wide with a 1-char border each side (38 usable
|
||||||
#define BAR_WIDTH 34
|
// 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)
|
void put_hex2(char *dst, u8 val)
|
||||||
{
|
{
|
||||||
@@ -327,19 +473,9 @@ void put_time(char *dst, u32 sec)
|
|||||||
dst[4] = '0' + s % 10;
|
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
|
// 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
|
// 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
|
// DIFFERENT window (#4000-#7FFF, per plugins/READ_ME.TXT: "стек... в Win 1
|
||||||
// #4000-#7FFF"). Local (stack-allocated) char buffers passed to wc_prsrw()
|
// #4000-#7FFF"). Local (stack-allocated) char buffers passed to wc_prsrw()
|
||||||
// are therefore in the WRONG memory window entirely - this is almost
|
// are therefore in the WRONG memory window entirely - this is almost
|
||||||
// certainly why xm_draw_static_labels() (string literal + a global array,
|
// certainly why xm_draw_static_labels() (string literal + a global array,
|
||||||
@@ -349,16 +485,81 @@ void xm_draw_stats_labels()
|
|||||||
static char hexbuf[2];
|
static char hexbuf[2];
|
||||||
static char decbuf[3];
|
static char decbuf[3];
|
||||||
static char timebuf[5];
|
static char timebuf[5];
|
||||||
|
static char barbuf[BAR_WIDTH];
|
||||||
|
|
||||||
|
// 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)
|
||||||
|
{
|
||||||
|
u16 filled, i;
|
||||||
|
|
||||||
|
if (total)
|
||||||
|
{
|
||||||
|
filled = (u16)(((u32)samples * BAR_WIDTH) / total);
|
||||||
|
if (filled > BAR_WIDTH)
|
||||||
|
filled = BAR_WIDTH;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
filled = 0; // total length unknown (measurement timed out) - show empty
|
||||||
|
|
||||||
|
for (i = 0; i < BAR_WIDTH; i++)
|
||||||
|
*(volatile u8*)(0xC000 + bar_attr_ofs + i) = (i < filled) ? ATTR_BAR_FILLED : ATTR_BAR_EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
void xm_update_info()
|
void xm_update_info()
|
||||||
{
|
{
|
||||||
u8 pattern, row;
|
u8 pattern, row, status;
|
||||||
u16 bpm;
|
u16 bpm;
|
||||||
u32 samples;
|
u32 samples;
|
||||||
|
|
||||||
esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
esp_wr_reg8(ESP_REG_OBJ_HANDLE, xm_handle);
|
||||||
esp_cmd(ESP_CMD_TRACK_GET_INFO);
|
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
|
||||||
|
// PLAYING->STOPPED transition once the loop-count limit is reached.
|
||||||
|
status = esp_rd_reg8(ESP_REG_TRACK_STATUS);
|
||||||
|
if (last_track_status == TRACK_OBJ_ST_PLAYING && status == TRACK_OBJ_ST_STOPPED)
|
||||||
|
{
|
||||||
|
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
||||||
|
esp_wait_busy(100);
|
||||||
|
wc_rresb(&win_xm);
|
||||||
|
wc_exit(WC_NEXT_FILE);
|
||||||
|
}
|
||||||
|
last_track_status = status;
|
||||||
|
|
||||||
pattern = esp_rd_reg8(ESP_REG_TRACK_PATTERN);
|
pattern = esp_rd_reg8(ESP_REG_TRACK_PATTERN);
|
||||||
row = esp_rd_reg8(ESP_REG_TRACK_ROW);
|
row = esp_rd_reg8(ESP_REG_TRACK_ROW);
|
||||||
@@ -369,22 +570,22 @@ void xm_update_info()
|
|||||||
total_samples = esp_rd_reg32(ESP_REG_TRACK_TOTAL_SAMPLES);
|
total_samples = esp_rd_reg32(ESP_REG_TRACK_TOTAL_SAMPLES);
|
||||||
|
|
||||||
put_hex2(hexbuf, pattern);
|
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);
|
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);
|
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);
|
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);
|
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);
|
||||||
|
|
||||||
// Progress bar skipped for now per user request - reintroduce as its own
|
|
||||||
// separate step once Pattern/Row/BPM/Time are confirmed stable.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void main_start()
|
void main_start()
|
||||||
@@ -393,7 +594,21 @@ void main_start()
|
|||||||
|
|
||||||
copy_file_name();
|
copy_file_name();
|
||||||
|
|
||||||
if (!state_esp)
|
// 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;
|
state_esp = esp_init() ? 1 : 2;
|
||||||
|
|
||||||
if (state_esp != 1)
|
if (state_esp != 1)
|
||||||
@@ -413,13 +628,10 @@ void main_start()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw the status window only AFTER play_xm() has already finished the
|
xm_set_status("Playing");
|
||||||
// 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_draw_stats_labels();
|
xm_draw_stats_labels();
|
||||||
xm_update_info(); // single call for now - periodic re-calling is a separate step, once this is confirmed stable
|
last_track_status = TRACK_OBJ_ST_PLAYING;
|
||||||
|
xm_update_info();
|
||||||
|
|
||||||
frame_ctr = 0;
|
frame_ctr = 0;
|
||||||
|
|
||||||
@@ -430,44 +642,23 @@ void main_start()
|
|||||||
halt
|
halt
|
||||||
__endasm;
|
__endasm;
|
||||||
|
|
||||||
// DEBUG: periodic xm_update_info() disabled - isolating whether repeated
|
if (++frame_ctr >= 10) // ~5 updates/sec at 50Hz
|
||||||
// wc_prsrw() calls over time (not just one initial call) is what causes
|
{
|
||||||
// the screen to fill with garbage after a while.
|
frame_ctr = 0;
|
||||||
// if (++frame_ctr >= 10) // ~5 updates/sec at 50Hz
|
xm_update_info();
|
||||||
// {
|
}
|
||||||
// frame_ctr = 0;
|
|
||||||
// xm_update_info();
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (wc_key_pgdn()) // PgDn - unload and go to next file
|
if (wc_key_pgdn()) // PgDn - unload and go to next file
|
||||||
{
|
unload_and_exit(WC_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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wc_key_pgup()) // PgUp - unload and go to previous file
|
if (wc_key_pgup()) // PgUp - unload and go to previous file
|
||||||
{
|
unload_and_exit(WC_PREV_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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wc_key_esc()) // Esc - unload and exit
|
if (wc_key_esc()) // Esc - unload and exit
|
||||||
{
|
unload_and_exit(WC_EXIT);
|
||||||
esp_cmd(ESP_CMD_TRACK_STOP);
|
|
||||||
esp_wait_busy(10000);
|
if (wc_key_space()) // Space - leave the track playing, just exit
|
||||||
esp_cmd(ESP_CMD_KILL_OBJECTS);
|
leave_playing_and_exit();
|
||||||
esp_wait_busy(10000);
|
|
||||||
wc_rresb(&win_xm);
|
|
||||||
wc_exit(WC_EXIT);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,9 +23,22 @@ u8 wc_load512(u16 dest, u8 blocks);
|
|||||||
u8 wc_key_esc(void);
|
u8 wc_key_esc(void);
|
||||||
u8 wc_key_pgup(void);
|
u8 wc_key_pgup(void);
|
||||||
u8 wc_key_pgdn(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(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);
|
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
|
// 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
|
// (_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
|
// library to borrow. Adjusted for sdcccall(1): a single u8 argument now
|
||||||
|
|||||||
+19
-3
@@ -2,11 +2,18 @@
|
|||||||
#include <defs.h>
|
#include <defs.h>
|
||||||
#include <wc_h.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 =
|
static const WC_HDR hdr =
|
||||||
{
|
{
|
||||||
/* +00 -reserved- */ "",
|
/* +00 -reserved- */ "",
|
||||||
/* +16 Magic string */ {'W', 'i', 'l', 'd', 'C', 'o', 'm', 'm', 'a', 'n', 'd', 'e', 'r', 'M', 'D', 'L'},
|
/* +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- */ "",
|
/* +33 -reserved- */ "",
|
||||||
/* +34 Number of pages */ 1,
|
/* +34 Number of pages */ 1,
|
||||||
/* +35 Page at 0x8000 */ 0,
|
/* +35 Page at 0x8000 */ 0,
|
||||||
@@ -21,6 +28,15 @@ static const WC_HDR hdr =
|
|||||||
/* */ },
|
/* */ },
|
||||||
/* +160 0x00 */ "",
|
/* +160 0x00 */ "",
|
||||||
/* +161 Max file size */ 0xFFFFFFFF,
|
/* +161 Max file size */ 0xFFFFFFFF,
|
||||||
/* +165 Plugin name */ "XM Player",
|
/* +165 Plugin name */ "XM Player v0.1",
|
||||||
/* +197 Starting condition */ SC_MENU // also run by extension
|
/* +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 */
|
u32 file_max_size; /* +161 Max file size */
|
||||||
char name[32]; /* +165 Plugin name */
|
char name[32]; /* +165 Plugin name */
|
||||||
SCOND cond; /* +197 Starting condition */
|
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;
|
} WC_HDR;
|
||||||
|
|||||||
Reference in New Issue
Block a user