Subversion Repositories ngs

Rev

Rev 158 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
69 savelij 1
 
181 savelij 2
; LAST UPDATE: 11.12.2024 savelij
36 savelij 3
 
115 savelij 4
                include ../macros.a80
5
                include ../ports_ngs.a80
69 savelij 6
                include equ_ngs.a80
115 savelij 7
                include ../sdcomand.a80
158 savelij 8
                include version.a80
36 savelij 9
 
181 savelij 10
;GSRomBaseL equ 0x0000
11
;GSRomBaseH equ 0xc000
36 savelij 12
 
69 savelij 13
;               ORG GSRomBaseL                  ;clear low ROM
181 savelij 14
;               DEFS 0x4000,0xFF
36 savelij 15
 
69 savelij 16
;               ORG GSRomBaseH                  ;clear high ROM
181 savelij 17
;               DEFS 0x4000,0xFF
36 savelij 18
 
69 savelij 19
                ORG GSRomBaseL
20
                DI
21
                JP INIT
36 savelij 22
 
23
;---patched
181 savelij 24
;               DEFB 0x0A                       ;LOW    (in BCD!)
25
;               DEFB 0x01                       ;HIGH   (in BCD!)
126 savelij 26
                DW VERS_BIN
36 savelij 27
;---
28
 
181 savelij 29
ROMCRC          DW 0xE428                       ;CRC from original rom, corrupted!?
36 savelij 30
 
181 savelij 31
        DUPL 0x0030 - $,0xFF
32
                JP SGEN                         ;0x2030
36 savelij 33
 
181 savelij 34
        DUPL 0x0038 - $,0xFF
36 savelij 35
 
69 savelij 36
INT8            EX AF,AF'
37
                PUSH DE
38
                LD E,A
39
                LD D,IXH
40
                LD A,(DE)
41
                INC D
42
                LD A,(DE)
43
                INC D
44
                LD A,(DE)
45
                INC D
46
                LD A,(DE)
47
                INC E
48
                JR Z,INT8_
49
                LD A,E
50
                POP DE
51
                EX AF,AF'
52
                EI
53
                RET
36 savelij 54
 
69 savelij 55
INT8_           JP QTDONE
36 savelij 56
 
181 savelij 57
        DUPL 0x0066 - $,0xFF
69 savelij 58
NMILP           POP HL
59
                LD A,L
60
                OUT (ZXDATWR),A
61
NMILP2          IN A,(ZXSTAT)
62
                RLCA
63
                JR C,NMILP2
64
                LD A,H
65
                OUT (ZXDATWR),A
66
NMILP3          IN A,(ZXSTAT)
67
                RLCA
68
                JR C,NMILP3
69
                JP NMILP
36 savelij 70
 
181 savelij 71
        DUPL 0x0080 - $,0xFF
69 savelij 72
                DB "This is improved ROM Version 1.04 Beta. "
73
                DB "Bugfixes by psb & Evgeny Muchkin, 2007.",0
36 savelij 74
 
181 savelij 75
        DUPL 0x0100 - $,0xFF
69 savelij 76
                DB "General  Sound (tm)  ROM"
77
                DB "Copyright   1997 Stinger"
126 savelij 78
                DB "Version ",VERS_TXT,"            "
69 savelij 79
 
36 savelij 80
; LOW ROM INCLUDES
81
 
82
;INCLUDE "INIT_L.a80"
69 savelij 83
INIT            DI
84
                OUT (CLRCBIT),A
85
INIT_           XOR A
86
                OUT (ZXDATWR),A
75 savelij 87
;               LD L,A
88
;               LD H,A
181 savelij 89
;               LD BC,0x0004
90
;               LD SP,0x0008
75 savelij 91
;               JR INIT02
36 savelij 92
 
75 savelij 93
;INIT00         
94
                OUT (MPAG),A
181 savelij 95
;               LD SP,0xC000
96
;               LD C,0x04
75 savelij 97
;               DEC A
98
;INIT01         POP DE
99
;               ADD HL,DE
100
;               POP DE
101
;               ADD HL,DE
102
;               POP DE
103
;               ADD HL,DE
104
;               POP DE
105
;               ADD HL,DE
106
;INIT02         POP DE
107
;               ADD HL,DE
108
;               POP DE
109
;               ADD HL,DE
110
;               POP DE
111
;               ADD HL,DE
112
;               POP DE
113
;               ADD HL,DE
114
;               DJNZ INIT01
115
;               DEC C
116
;               JR NZ,INIT01
117
;               OR A
118
;               JR Z,INIT00
119
;               LD DE,(ROMCRC)
120
;               SBC HL,DE
121
;               LD HL,RAMPG
36 savelij 122
;---patched
75 savelij 123
;               LD A,2
124
;CREATE_LIST_PAGE
125
;               LD (HL),A
126
;               INC HL
127
;               INC A 
181 savelij 128
;               CP 0x40
75 savelij 129
;               JR NZ,CREATE_LIST_PAGE
130
;               LD (HL),1
131
;               INC HL
132
;               LD (HL),0
181 savelij 133
                LD HL,0x8000
134
                LD A,0x7F
69 savelij 135
                OUT (MPAG),A
181 savelij 136
                LD (HL),A                       ;  4
137
                LD A,0x3F
69 savelij 138
                OUT (MPAG),A
181 savelij 139
                LD (HL),A                       ;  2
140
                LD A,0x0F
69 savelij 141
                OUT (MPAG),A
181 savelij 142
                LD (HL),A                       ;  512
143
 
144
                LD A,0x7F
145
                OUT (MPAG),A
146
                CP (HL)
147
                JR Z,.L1
148
                LD A,0x3F
149
                OUT (MPAG),A
150
                CP (HL)
151
                JR Z,.L1
152
                LD A,0x0F
153
                OUT (MPAG),A
154
.L1             LD A,(HL)
155
                DEC A
156
                LD (NUMPG),A                    ; ⢮ ࠭ 
69 savelij 157
                OUT (ZXDATWR),A
75 savelij 158
                ADD A,2
159
                LD B,A
160
                LD HL,RAMPG
161
                LD A,2
162
CREATE_TABL     LD (HL),A
163
                INC HL
164
                INC A
165
                CP B
166
                JR C,CREATE_TABL
112 savelij 167
                XOR A
168
                OUT (MPAG),A
75 savelij 169
                LD (HL),1
170
                INC HL
112 savelij 171
                LD (HL),A
181 savelij 172
                LD SP,0x8000
69 savelij 173
                JP Patch5i3
36 savelij 174
 
112 savelij 175
SET_SIZE_MOD    LD A,E
176
                INC A
177
                LD (SIZE_MOD),A         ;    32 
178
                JP PLAYMD
179
 
180
SET7XOR         XOR A
181
                OUT (VOL1),A
182
                OUT (VOL2),A
183
                OUT (VOL3),A
184
                OUT (VOL4),A
185
                OUT (VOL5),A
186
                OUT (VOL6),A
187
                OUT (VOL7),A
188
                OUT (VOL8),A
189
                OUT (VOL8),A
190
                PUSH HL
191
                LD HL,0
192
                ADD HL,SP
193
                EXX
181 savelij 194
                LD A,0x10
195
                LD SP,0x7F00
196
                LD BC,0xA97E
197
                LD DE,0x2C77
112 savelij 198
SPEDI1          REPT 16
199
                PUSH DE
200
                PUSH BC
201
                ENDM
202
                DEC A
203
                JP NZ,SPEDI1
204
                LD HL,SPEDI2
181 savelij 205
                LD DE,0x7F00
112 savelij 206
                LD BC,ESPEDI2-SPEDI2
207
                LDIR
208
                EXX
209
                LD SP,HL
210
                POP HL
211
                LD A,L
212
                EXX
213
                LD L,A
214
                LD H,0
181 savelij 215
                LD BC,0x7B00
112 savelij 216
                ADD HL,HL
217
                ADD HL,HL
218
                ADD HL,BC
219
                EX (SP),HL
220
                EXX
221
                LD A,(SIZE_MOD)
222
                LD B,A
181 savelij 223
                LD C,0x80
112 savelij 224
                RET
225
 
226
SPEDI2          INC H
181 savelij 227
                JP NZ,0x7B00
112 savelij 228
                INC E
229
                LD A,(DE)
181 savelij 230
                LD H,0x80
112 savelij 231
                OUT (MPAG),A
232
                DEC B
181 savelij 233
                JP NZ,0x7B00
112 savelij 234
                JP END7XOR
235
ESPEDI2
236
 
237
END7XOR         EXX
238
                LD HL,0
239
                ADD HL,SP
181 savelij 240
                LD SP,0x8000
241
                LD DE,0x8080
242
                LD B,0x28
112 savelij 243
E7X1            REPT 16
244
                PUSH DE
245
                ENDM
246
                DJNZ E7X1
247
                LD SP,HL
248
                EXX
249
                JP NOCONV
250
 
181 savelij 251
                DUPL GSRomBaseL+0x269-$,0
252
;               ORG GSRomBaseL+0x269
36 savelij 253
 
254
;INCLUDE "COM_L.a80"
69 savelij 255
COMHZ           OUT (CLRCBIT),A
181 savelij 256
COMINT          LD SP,ISTACK            ;0x026B
69 savelij 257
COMINT_         IN A,(ZXSTAT)
258
                RRCA
259
                JR C,COMINT1
181 savelij 260
                LD A,(PROCESS)          ;0x0273
69 savelij 261
                OR A
262
                JR Z,COMINT_
263
                LD A,(BUSY)
264
                OR A
265
                JR NZ,COMINT_
266
                IN A,(ZXSTAT)
267
                RRCA
268
                JR C,COMINT1
181 savelij 269
                LD A,0xFF
69 savelij 270
                LD (INGEN),A
271
                PUSH DE
272
                CALL ENGINE
273
                POP DE
274
                XOR A
275
                LD (INGEN),A
276
                JP COMINT_
36 savelij 277
 
69 savelij 278
COMINT1         IN A,(ZXCMD)
181 savelij 279
                CP 0x20
69 savelij 280
                JR C,COMLOW
181 savelij 281
COMINT2         CP 0xF0
69 savelij 282
                JR C,COMHIGH
181 savelij 283
                SUB 0xD0
69 savelij 284
COMLOW          ADD A,A
285
                LD H,HIGH (COMTAB)
286
                LD L,A
287
                LD A,(HL)
288
                INC L
289
                LD H,(HL)
290
                LD L,A
291
                JP (HL)
36 savelij 292
 
69 savelij 293
COMHIGH         LD HL,COMINT_
294
                PUSH HL
295
                LD L,A
296
                LD H,HIGH (COMTABH)
297
                XOR A
298
                LD (CPAGE),A
299
                OUT (MPAG),A
300
                LD A,(HL)
301
                INC H
302
                LD H,(HL)
303
                LD L,A
304
                JP (HL)
36 savelij 305
 
69 savelij 306
WTDTL           IN A,(ZXSTAT)
181 savelij 307
                AND 0x81
69 savelij 308
                JR Z,WTDTL
309
                IN A,(ZXDATRD)
310
                JP P,COMINT1
311
                JP (IY)
36 savelij 312
 
69 savelij 313
WTDTG           IN A,(ZXSTAT)
314
                OR A
315
                JP P,WTDTG
316
                IN A,(ZXDATRD)
317
                JP (IY)
36 savelij 318
 
126 savelij 319
COMM5__         LD A,(IY+CHLPBP)
320
                CP -1
321
                JP Z,COMM5
322
                LD (IY+CHCURP),A
323
                LD L,(IY+CHLPBL)
324
                LD H,(IY+CHLPBH)
325
                LD (IY+CHCURL),L
326
                LD (IY+CHCURH),H
327
                JP COMM5
328
 
69 savelij 329
                align 256
330
COMTAB          DEFW COM00,COM01,COM02,COM03,COM04,COM05,COM06,COM07    ;0365,036C,0381,0390,039E,03A8,03B8,03D0
331
                DEFW COM08,COM09,COM0A,COM0B,COM0C,COM0D,COM0E,COM0F    ;0360,03F3,0407,041F,0444,046E,0497,04AE
332
                DEFW COM10,COM11,COM12,COM13,COM14,COM15,COM16,COM17    ;0511,0522,052E,0537,0545,0594,05FE,0617
112 savelij 333
                DEFW COM18,COM19,COM1A,COM1B,COM1C,COM1D,COM1E,COM1F    ;062A,063A,0642,064A,0650,0662,0360,0360
69 savelij 334
                DEFW COMF0,COMF1,COMF2,COMF3,COMF4,COMF5,COMF6,COMF7    ;066F,0360,0360,0679,067E,0683,069B,06B0
335
                DEFW COMF8,COMF9,COMFA,COMFB,COMFC,COMFD,COMFE,COMFF    ;0360,0360,06B9,0360,0360,0360,0360,0360
36 savelij 336
 
69 savelij 337
COMZ            OUT (CLRCBIT),A
338
                JP COMINT_
36 savelij 339
 
69 savelij 340
COM1E           EQU COMZ
341
COM1F           EQU COMZ
36 savelij 342
 
69 savelij 343
COMF1           EQU COMZ
344
COMF2           EQU COMZ
36 savelij 345
 
69 savelij 346
COMF8           EQU COMZ
347
COMF9           EQU COMZ
36 savelij 348
 
69 savelij 349
COMFB           EQU COMZ
350
COMFC           EQU COMZ
351
COMFD           EQU COMZ
352
COMFE           EQU COMZ
353
COMFF           EQU COMZ
36 savelij 354
 
355
;Reset flags
69 savelij 356
;뢠 䫠 Data bit  Command bit.
357
COM00           IN A,(ZXDATRD)
358
                OUT (CLRCBIT),A
359
                JP COMINT_
36 savelij 360
 
361
;Set silence (*)
181 savelij 362
;뢮     0x80.   ⠭ 設.
69 savelij 363
COM01           OUT (CLRCBIT),A
181 savelij 364
                LD A,0x80
69 savelij 365
                LD HL,DAC0
366
                LD (HL),A
367
                LD B,(HL)
368
                INC H
369
                LD (HL),A
370
                LD B,(HL)
371
                INC H
372
                LD (HL),A
373
                LD B,(HL)
374
                INC H
375
                LD (HL),A
376
                LD B,(HL)
377
                JP COMINT_
36 savelij 378
 
379
;Set low volume (*)
69 savelij 380
;⠭ ஬x     .
36 savelij 381
COM02   OUT (CLRCBIT),A
181 savelij 382
        LD A,0x3F
36 savelij 383
        OUT (VOL1),A
384
        OUT (VOL2),A
385
        OUT (VOL3),A
386
        OUT (VOL4),A
387
        JP COMINT_
388
 
389
;Set high volume (*)
69 savelij 390
;⠭ ஬     ᨬ.
36 savelij 391
COM03   OUT (CLRCBIT),A
392
        XOR A
393
        OUT (VOL1),A
394
        OUT (VOL2),A
395
        OUT (VOL3),A
396
        OUT (VOL4),A
397
        JP COMINT_
398
 
399
;Set 'E' 3bits (*)
69 savelij 400
;⠭  'E' ॣ GS 3    ᮮ⢥⢨   -
401
; 祭 (2        魮    ஬  
181 savelij 402
;0x00-0x03).
36 savelij 403
COM04   IN A,(ZXDATRD)
404
        OUT (CLRCBIT),A
181 savelij 405
        AND 0x07
36 savelij 406
        LD E,A
407
        JP COMINT_
408
 
409
;Out volume port (*)
69 savelij 410
;⠭ ஬ ,  ண ᮤন  'E',  㪠-
411
; 祭. ( ࠡ뢠  ᫮,   'E' 室 
181 savelij 412
;। 0x00-0x03)
36 savelij 413
COM05   IN A,(ZXDATRD)
414
        OUT (CLRCBIT),A
415
        LD B,A
416
        LD A,E
181 savelij 417
        CP 0x04
36 savelij 418
        JP NC,COMINT_
419
        ADD A,VOL1
420
        LD C,A
421
        OUT (C),B
422
        JP COMINT_
423
 
424
;Send to DAC (*)
69 savelij 425
;뢮    , 㪠뢠  'E'.
36 savelij 426
COM06   IN A,(ZXDATRD)
427
        OUT (CLRCBIT),A
428
        LD B,A
429
        LD A,E
181 savelij 430
        CP 0x04
36 savelij 431
        JP NC,COMINT_
69 savelij 432
        ADD A,HIGH (DAC0)
36 savelij 433
        LD H,A
181 savelij 434
        LD L,0x00
36 savelij 435
        LD (HL),B
436
        LD A,(HL)
437
        JP COMINT_
438
 
439
;Send to DAC and to volume port (*)
69 savelij 440
;뢮    ('E')   ஬.
36 savelij 441
COM07   IN A,(ZXDATRD)
442
        OUT (CLRCBIT),A
443
        LD B,A
444
        LD A,E
181 savelij 445
        CP 0x04
36 savelij 446
        JP NC,COMINT_
69 savelij 447
        ADD A,HIGH (DAC0)
36 savelij 448
        LD H,A
181 savelij 449
        LD L,0x00
36 savelij 450
        LD (HL),B
69 savelij 451
        SUB HIGH (DAC0)
36 savelij 452
        ADD A,VOL1
453
        LD C,A
454
        LD IY,COM07_1
455
        JP WTDTL
456
 
457
COM07_1 OUT (C),A
458
        LD A,(HL)
459
        JP COMINT_
460
 
181 savelij 461
;     0x00
36 savelij 462
;Reset flags
69 savelij 463
;뢠 䫠 Data bit  Command bit.
36 savelij 464
COM08   EQU COMZ
465
 
466
;Sets one's byte volume. (*)
69 savelij 467
;⠭ ஬ ,  ண   2  .
36 savelij 468
COM09   IN A,(ZXDATRD)
469
        OUT (CLRCBIT),A
470
        LD B,A
471
        RLCA
472
        RLCA
181 savelij 473
        AND 0x03
36 savelij 474
        ADD A,VOL1
475
        LD C,A
476
        LD A,B
181 savelij 477
        AND 0x3F
36 savelij 478
        OUT (C),A
479
        JP COMINT_
480
 
481
;DAC output (*)
69 savelij 482
;  ।⢥ 뢮  .
36 savelij 483
COM0A   IN A,(ZXDATRD)
484
        OUT (CLRCBIT),A
485
        LD B,A
486
        LD IY,COM0A_1
487
        JP WTDTL
488
 
181 savelij 489
COM0A_1 AND 0x03
69 savelij 490
        ADD A,HIGH (DAC0)
36 savelij 491
        LD H,A
181 savelij 492
        LD L,0x00
36 savelij 493
        LD (HL),B
494
        LD A,(HL)
495
        JP COMINT_
496
 
497
;DAC and Volume output (*)
69 savelij 498
;  ᫥ 뢮    ⠭ ஬.
36 savelij 499
COM0B   IN A,(ZXDATRD)
500
        OUT (CLRCBIT),A
501
        LD C,A
502
        LD IY,COM0B_1
503
        JP WTDTL
504
 
505
COM0B_1 LD B,A
506
        RLCA
507
        RLCA
181 savelij 508
        AND 0x03
69 savelij 509
        ADD A,HIGH (DAC0)
36 savelij 510
        LD H,A
181 savelij 511
        LD L,0x00
36 savelij 512
        LD (HL),C
69 savelij 513
        SUB HIGH (DAC0)
36 savelij 514
        ADD A,VOL1
515
        LD C,A
516
        LD A,B
181 savelij 517
        AND 0x3F
36 savelij 518
        OUT (C),A
519
        LD A,(HL)
520
        JP COMINT_
521
 
522
;Call SounDrive Covox mode (*)
69 savelij 523
;뢠 ० 媠쭮 ,  ᫥⥫쭮  -
524
;   .  室  ०  ⮬᪨  ᫥  뢮
525
;⢥⮣ .
36 savelij 526
COM0C   IN A,(ZXDATRD)
527
        OUT (CLRCBIT),A
528
        LD HL,DAC0
529
        LD (HL),A
530
        LD A,(HL)
531
        INC H
532
        LD IY,COM0C_1
533
        JP WTDTL
534
 
535
COM0C_1 LD (HL),A
536
        LD A,(HL)
537
        INC H
538
        LD IY,COM0C_2
539
        JP WTDTL
540
 
541
COM0C_2 LD (HL),A
542
        LD A,(HL)
543
        INC H
544
        LD IY,COM0C_3
545
        JP WTDTL
546
 
547
COM0C_3 LD (HL),A
548
        LD A,(HL)
549
        JP COMINT_
550
 
551
;Call Ultravox mode (*)
69 savelij 552
;뢠 ० 㭨ᠫ쭮 ,   ᫥⥫쭮    -
553
;   ,  ᫮  ॣ㫨 (1-4). ⫨稥 
554
;।饣 ਠ ᨭ஭  ந.  室 ⠪ ந-
555
; ⮬᪨   ᫥ .
36 savelij 556
COM0D   IN A,(ZXDATRD)
557
        OUT (CLRCBIT),A
181 savelij 558
        AND 0x0F
36 savelij 559
        JP Z,COMINT_
560
        RLCA
561
        RLCA
562
        RLCA
563
        RLCA
564
        LD B,A
565
        LD HL,DAC0
566
        LD IY,COM0D_3
567
        JP COM0D_2
568
 
569
COM0D_3 LD (HL),A
570
        LD A,(HL)
571
        INC H
572
        JP COM0D_2
573
 
574
COM0D_1 JP Z,COMINT_
575
        INC H
576
COM0D_2 SLA B
577
        JR NC,COM0D_1
578
        JP WTDTL
579
 
580
;Go to LPT Covox mode
69 savelij 581
;室  ० 쭮 ,       ॣ
582
;    (ࠢ  ) .  室  ⮣ ० -
181 savelij 583
; 0x00  ॣ .
36 savelij 584
COM0E   OUT (CLRCBIT),A
585
        LD HL,DAC0
586
        LD BC,DAC2
587
COM0E_1 IN A,(ZXDATRD)
588
        LD (HL),A
589
        LD (BC),A
590
        LD A,(HL)
591
        LD A,(BC)
592
        IN A,(ZXSTAT)
593
        RRCA
594
        JP NC,COM0E_1
595
        JP COMINT_
596
 
597
;Go in Profi Covox mode (*)
69 savelij 598
;室  ० 媠쭮 ,       ॣ
599
;    ,   ॣ     ண  .
181 savelij 600
;室  ⮣ ० -  0x4  ॣ ,  ⥬  ᫥-
601
;⥫쭮 0x0F  0xAA  ॣ .
36 savelij 602
COM0F   IN A,(ZXDATRD)
603
        OUT (CLRCBIT),A
604
        CP "Y"
605
        JP NZ,COMINT_
606
        LD HL,DAC0
607
        LD DE,DAC2
608
COM0F_1 IN A,(ZXDATRD)
609
        LD (HL),A
610
        IN A,(ZXCMD)
611
        LD (DE),A
612
        LD A,(HL)
613
        LD A,(DE)
614
        IN A,(ZXSTAT)
615
        OR A
616
        JP M,COM0F_1
181 savelij 617
        LD B,0x00
36 savelij 618
        OUT (CLRCBIT),A
619
COM0F_2 IN A,(ZXSTAT)
181 savelij 620
        AND 0x81
36 savelij 621
        JR NZ,COM0F_1
622
        DJNZ COM0F_2
623
COM0F_3 IN A,(ZXSTAT)
181 savelij 624
        AND 0x81
36 savelij 625
        JR Z,COM0F_3
181 savelij 626
        CP 0x80
36 savelij 627
        JR NZ,COM0F_1
628
        IN A,(ZXDATRD)
629
        CP "N"
630
        JP NZ,COM0F_1
631
COM0F_4 IN A,(ZXSTAT)
181 savelij 632
        AND 0x81
36 savelij 633
        JR Z,COM0F_4
181 savelij 634
        CP 0x01
36 savelij 635
        JR NZ,COM0F_1
636
        IN A,(ZXCMD)
181 savelij 637
        CP 0x0F
36 savelij 638
        JP NZ,COM0F_1
639
        OUT (CLRCBIT),A
640
COM0F_5 IN A,(ZXSTAT)
181 savelij 641
        AND 0x81
36 savelij 642
        JR Z,COM0F_5
181 savelij 643
        CP 0x01
36 savelij 644
        JR NZ,COM0F_1
645
        IN A,(ZXCMD)
181 savelij 646
        CP 0xAA
36 savelij 647
        JP NZ,COM0F_1
648
        OUT (CLRCBIT),A
649
        JP COMINT_
650
 
651
;Out to any port (*)
181 savelij 652
;뢮  o ७  GS (0x00-0x09).
36 savelij 653
COM10   IN A,(ZXDATRD)
654
        OUT (CLRCBIT),A
655
        LD C,A
656
        LD IY,COM10_1
657
        JP WTDTL
658
 
659
COM10_1 OUT (C),A
660
        JP COMINT_
661
 
662
;In from any port (*)
181 savelij 663
;⠥   ७  GS (0x00-0x09).
36 savelij 664
COM11   IN A,(ZXDATRD)
665
        LD C,A
666
        IN A,(C)
667
        OUT (ZXDATWR),A
668
        OUT (CLRCBIT),A
669
        JP COMINT_
670
 
671
;OUT to 0 port (*)
181 savelij 672
;뢮    䨣樨 GS (0x00).
36 savelij 673
COM12   IN A,(ZXDATRD)
674
        OUT (CLRCBIT),A
675
        OUT (MPAG),A
676
        JP COMINT_
677
 
678
;Jump to Address (*)
69 savelij 679
;। ࠢ   .
36 savelij 680
COM13   IN A,(ZXDATRD)
681
        OUT (CLRCBIT),A
682
        LD L,A
683
        LD IY,COM13_1
684
        JP WTDTL
685
 
686
COM13_1 LD H,A
687
        JP (HL)
688
 
689
;Load memory block (*)
69 savelij 690
;㧪    㪠    .
36 savelij 691
; 70+27*WAIT PER LOOP : 171K,123K,96K PER SECOND MAX
692
COM14   IN A,(ZXDATRD)
693
        OUT (CLRCBIT),A
694
        CPL
695
        LD C,A
696
        LD HL,WTDTL
697
        LD IY,COM14_1
698
        JP (HL)
699
 
700
COM14_1 CPL
701
        LD B,A
702
        INC BC
703
        LD IY,COM14_2
704
        JP (HL)
705
 
706
COM14_2 LD E,A
707
        LD IY,COM14_3
708
        JP (HL)
709
 
710
COM14_3 LD D,A
711
        LD A,B
712
        OR C
713
        JP Z,COMINT_
69 savelij 714
        LD IXL,B
181 savelij 715
        LD B,0x81
36 savelij 716
        BIT 0,C
717
        JR NZ,COM14_7
718
COM14_6 IN A,(ZXSTAT)
719
        AND B
720
        JR Z,COM14_6
721
        IN A,(ZXDATRD)
722
        JP P,COMINT1
723
        LD (DE),A
724
        INC DE
725
        INC C
726
COM14_7 IN A,(ZXSTAT)
727
        AND B
728
        JR Z,COM14_7
729
        IN A,(ZXDATRD)
730
        JP P,COMINT1
731
        LD (DE),A
732
        INC DE
733
        INC C
734
        JP NZ,COM14_6
69 savelij 735
        INC IXL
36 savelij 736
        JP NZ,COM14_6
737
        JP COMINT_
738
 
739
;Get memory block (*)
69 savelij 740
;㧪    㪠    .
741
COM15   IN A,(ZXDATRD)  ;訡- 뢠  
36 savelij 742
        CPL
743
        LD C,A
744
        LD IY,COM15_1
745
        JP WTDTG
746
 
747
COM15_1 CPL
748
        LD B,A
749
        INC BC
750
        LD IY,COM15_2
751
        JP WTDTG
752
 
753
COM15_2 LD E,A
754
        LD IY,COM15_3
755
        JP WTDTG
756
 
757
COM15_3 LD D,A
758
        LD A,B
759
        OR C
760
        JP Z,COMINT_
69 savelij 761
        LD IXL,B
181 savelij 762
        LD B,0x81
36 savelij 763
        LD A,(DE)
764
        INC DE
765
        OUT (ZXDATWR),A
766
        OUT (CLRCBIT),A
767
        LD HL,COM15_4
768
        INC C
769
        JP NZ,COM15_4
69 savelij 770
        INC IXL
36 savelij 771
        JP Z,COMINT_
772
COM15_4 IN A,(ZXSTAT)
773
        AND B
774
        JR Z,COM15_5
775
        JP P,COMINT1
776
        IN A,(ZXSTAT)
777
        AND B
778
        JR Z,COM15_5
779
        JP P,COMINT1
780
        IN A,(ZXSTAT)
781
        AND B
782
        JR Z,COM15_5
783
        JP P,COMINT1
784
        IN A,(ZXSTAT)
785
        AND B
786
        JR Z,COM15_5
787
        JP P,COMINT1
788
        JP (HL)
789
 
790
COM15_5 LD A,(DE)
791
        OUT (ZXDATWR),A
792
        INC DE
793
        INC C
794
        JP NZ,COM15_4
69 savelij 795
COM15_7 INC IXL
36 savelij 796
        JP NZ,COM15_4
797
        JP COMINT_
798
 
799
;Poke to address (*)
69 savelij 800
;뢠    㪠 .
36 savelij 801
COM16   IN A,(ZXDATRD)
802
        OUT (CLRCBIT),A
803
        LD B,A
804
        LD IY,COM16_1
805
        JP WTDTL
806
 
807
COM16_1 LD L,A
808
        LD IY,COM16_2
809
        JP WTDTL
810
 
811
COM16_2 LD H,A
812
        LD (HL),B
813
        JP COMINT_
814
 
815
;Peek from address (*)
69 savelij 816
;뢠    㪠 .
36 savelij 817
COM17   IN A,(ZXDATRD)
818
        LD L,A
819
        LD IY,COM17_1
820
        JP WTDTL
821
 
822
COM17_1 LD H,A
823
        LD A,(HL)
824
        OUT (ZXDATWR),A
825
        OUT (CLRCBIT),A
826
        JP COMINT_
827
 
828
;Load DE Pair (*)
69 savelij 829
;㦠 ॣ⮢  DE (⭮  GS,      -
830
; ன Main CPU) 㪠 ᫮.
36 savelij 831
COM18   IN A,(ZXDATRD)
832
        OUT (CLRCBIT),A
833
        LD E,A
834
        LD IY,COM18_1
835
        JP WTDTL
836
 
837
COM18_1 LD D,A
838
        JP COMINT_
839
 
840
;Poke to (DE) address (*)
69 savelij 841
;뢠    㪠  DE.
36 savelij 842
COM19   IN A,(ZXDATRD)
843
        OUT (CLRCBIT),A
844
        LD (DE),A
845
        JP COMINT_
846
 
847
;Peek from (DE) address (*)
69 savelij 848
;뢠 ᮤন , 㪠뢠  DE.
36 savelij 849
COM1A   LD A,(DE)
850
        OUT (ZXDATWR),A
851
        OUT (CLRCBIT),A
852
        JP COMINT_
853
 
854
;Increment of DE Pair (*)
69 savelij 855
;稢  DE  .
36 savelij 856
COM1B   OUT (CLRCBIT),A
857
        INC DE
858
        JP COMINT_
859
 
181 savelij 860
;Poke to (0x20xX) address (*)
861
;뢠   , 訩  ண ࠢ 0x20.
36 savelij 862
COM1C   IN A,(ZXDATRD)
863
        OUT (CLRCBIT),A
864
        LD L,A
865
        LD IY,COM1C_1
866
        JP WTDTL
867
 
181 savelij 868
COM1C_1 LD H,0x20
36 savelij 869
        LD (HL),A
870
        JP COMINT_
871
 
181 savelij 872
;Peek from (0x20xX) address (*)
873
;⠥   , 訩  ண ࠢ 0x20.
36 savelij 874
COM1D   IN A,(ZXDATRD)
875
        LD L,A
181 savelij 876
        LD H,0x20
36 savelij 877
        LD A,(HL)
878
        OUT (ZXDATWR),A
879
        OUT (CLRCBIT),A
880
        JP COMINT_
881
 
882
COMF0   LD A,(ERRCODE)  ; GET STATUS
883
        OUT (ZXDATWR),A
884
        OUT (CLRCBIT),A
885
        JP COMINT_
886
 
887
;Warm restart
69 savelij 888
;뢠  GS,   ய᪠  ⠯  ।  ⢠
889
;࠭    ஢,   祭 ᨫ쭮 ᪮  樠-
890
;樨.
36 savelij 891
COMF3   OUT (CLRCBIT),A
892
        JP INITVAR
893
 
894
;Cold restart
181 savelij 895
; १ GS  ᥬ ஢ઠ.  , JP 0x0000.
36 savelij 896
COMF4   OUT (CLRCBIT),A
181 savelij 897
        JP 0x0000
36 savelij 898
 
899
;Busy on
181 savelij 900
;⠭ 䫠   0xFF
36 savelij 901
COMF5   OUT (CLRCBIT),A
69 savelij 902
        LD A,IXH
181 savelij 903
        AND 0x80
36 savelij 904
        JP NZ,COMF5_1
181 savelij 905
        LD A,0xFF
36 savelij 906
        LD (BUSY),A
907
        JP COMINT_
908
 
181 savelij 909
COMF5_1 OR 0x40
69 savelij 910
        LD IXH,A
36 savelij 911
        JP COMINT_
912
 
913
;Busy off
181 savelij 914
;⠭ 䫠   0x00
36 savelij 915
COMF6   OUT (CLRCBIT),A
69 savelij 916
        LD A,IXH
181 savelij 917
        AND 0x80
36 savelij 918
        JP NZ,COMF6_1
919
        XOR A
920
        LD (BUSY),A
921
        JP COMINT_
922
 
69 savelij 923
COMF6_1 LD IXH,A
36 savelij 924
        JP COMINT_
925
 
69 savelij 926
;Get IXH Register (*)
927
; ᮤন ॣ IXH (GS)
928
;IXH   ࠡ⪥ 䫠 Busy.
929
COMF7   LD A,IXH
36 savelij 930
        OUT (ZXDATWR),A
931
        OUT (CLRCBIT),A
932
        JP COMINT_
933
 
934
;Out zero_to_zero
69 savelij 935
;뢮   㫥 (䨣樮)  GS.     ਮ⠭
936
;砭 모  ᫥饣 ⥭  .. .
36 savelij 937
COMFA   OUT (CLRCBIT),A
938
        XOR A
939
        LD (CPAGE),A
940
        OUT (MPAG),A
941
        JP TCOM
942
 
943
;INCLUDE "MEM_L.a80"
944
;MEMORY MOVEMENT MODULE - LOW PART
945
 
946
        align 256
947
 
181 savelij 948
LDITAB  REPT 0x100
949
        DB 0xED,0xA0
69 savelij 950
        ENDM
36 savelij 951
        RET C
952
        LD A,(SYSTEM)
953
        LD (CPAGE),A
954
        OUT (MPAG),A
955
        RET
956
 
957
MLDI    NEG
958
        ADD A,A
69 savelij 959
        LD IYL,A
960
        LD A,HIGH (LDITAB)
181 savelij 961
        ADC A,0x00
69 savelij 962
        LD IYH,A
36 savelij 963
        LD A,(SDPAGE)
964
        LD (CPAGE),A
965
        OUT (MPAG),A
966
        JP (IY)
967
 
968
TLDI    NEG
969
        ADD A,A
69 savelij 970
        LD IYL,A
971
        LD A,HIGH (LDITAB)
181 savelij 972
        ADC A,0x00
69 savelij 973
        LD IYH,A
36 savelij 974
        SCF
975
        JP (IY)
976
 
977
MLDD    NEG
978
        ADD A,A
69 savelij 979
        LD IYL,A
980
        LD A,HIGH (LDDTAB)
181 savelij 981
        ADC A,0x00
69 savelij 982
        LD IYH,A
36 savelij 983
        LD A,(SDPAGE)
984
        LD (CPAGE),A
985
        OUT (MPAG),A
986
        JP (IY)
987
 
988
        align 256
989
 
181 savelij 990
LDDTAB  REPT 0x100
991
        DB 0xED,0xA8
69 savelij 992
        ENDM
36 savelij 993
        LD A,(SYSTEM)
994
        LD (CPAGE),A
995
        OUT (MPAG),A
996
        RET
997
 
998
;INCLUDE "LOAD_L.a80"
999
 
1000
; RET B,DE - OLD CURADR
181 savelij 1001
;0x0C09
36 savelij 1002
 
181 savelij 1003
LOAD    LD B,0x81
36 savelij 1004
        LD HL,(CURADR)
1005
        LD A,(CURADR+2)
1006
        SCF
1007
        RL H
1008
        RLA
1009
        RRC H
1010
        LD E,A
69 savelij 1011
        LD D,HIGH (RAMPG)
36 savelij 1012
LOAD_   LD A,(DE)
1013
        OR A
1014
        JP Z,LOADWT3
1015
        LD (CPAGE),A
1016
        OUT (MPAG),A
1017
        LD A,(NUMPG)
1018
        CP E
1019
        JR NZ,LOADWT
1020
        LD A,H
181 savelij 1021
        CP 0xC0
36 savelij 1022
        JR C,LOADWT2
1023
        JP LOADWT3
1024
 
1025
LOADWT  IN A,(ZXSTAT)
1026
        AND B
1027
        JR Z,LOADWT
1028
        RRCA
1029
        IN A,(ZXDATRD)
1030
        JR C,LOADCM
1031
        ADD A,C
1032
        LD (HL),A
1033
        INC L
1034
        JP NZ,LOADWT
1035
        INC H
1036
        JP NZ,LOADWT
1037
        INC E
181 savelij 1038
        LD HL,0x8000
36 savelij 1039
        JP LOAD_
1040
 
1041
LOADCM  IN A,(ZXCMD)
181 savelij 1042
        CP 0xF3
36 savelij 1043
        JP Z,COMF3
181 savelij 1044
        CP 0xF4
36 savelij 1045
        JP Z,COMF4
1046
        OUT (CLRCBIT),A
181 savelij 1047
        CP 0xD2
36 savelij 1048
        JP Z,LOAD3
1049
        JP LOADWT
1050
 
1051
LOADWT2 IN A,(ZXSTAT)
1052
        AND B
1053
        JR Z,LOADWT2
1054
        RRCA
1055
        IN A,(ZXDATRD)
1056
        JR C,LOADCM2
1057
        LD (HL),A
1058
        INC L
1059
        JP NZ,LOADWT2
1060
        INC H
1061
        BIT 6,H
1062
        JP Z,LOADWT2
1063
LOADWT3 IN A,(ZXSTAT)
1064
        AND B
1065
        JR Z,LOADWT3
1066
        RRCA
1067
        IN A,(ZXDATRD)
1068
        JP NC,LOADWT3
1069
        IN A,(ZXCMD)
181 savelij 1070
        CP 0xF3
36 savelij 1071
        JP Z,COMF3
181 savelij 1072
        CP 0xF4
36 savelij 1073
        JP Z,COMF4
1074
        OUT (CLRCBIT),A
181 savelij 1075
        CP 0xD2
36 savelij 1076
        JR Z,LOAD3
1077
        JP LOADWT3
1078
 
1079
LOADCM2 IN A,(ZXCMD)
181 savelij 1080
        CP 0xF3
36 savelij 1081
        JP Z,COMF3
181 savelij 1082
        CP 0xF4
36 savelij 1083
        JP Z,COMF4
1084
        OUT (CLRCBIT),A
181 savelij 1085
        CP 0xD2
36 savelij 1086
        JR Z,LOAD3
1087
        JP LOADWT2
1088
 
1089
LOAD3   LD A,E
1090
        RL H
1091
        SRL A
1092
        RR H
1093
        LD (CURADR),HL
1094
        LD (CURADR+2),A
1095
        LD (MEMBOT),HL
1096
        LD (MEMBOT+2),A
112 savelij 1097
        EX AF,AF'       ;LD E,A
36 savelij 1098
        XOR A
1099
        LD (CPAGE),A
1100
        OUT (MPAG),A
112 savelij 1101
        EX AF,AF'       ;LD A,E
36 savelij 1102
        RET
1103
 
1104
;INCLUDE "PLAY.a80"
181 savelij 1105
PLAYMD  LD A,(RAMPG)            ;0x0CC9
36 savelij 1106
        OUT (MPAG),A
1107
        LD IY,CHANS
1108
        LD DE,CHANLEN
181 savelij 1109
        LD B,0x04
36 savelij 1110
RDLP1  
1111
;---patched
1112
        CALL Patch4
1113
        NOP
1114
;---
181 savelij 1115
        LD (IY+CHCNTH),0x00
1116
        LD (IY+CHOLDV),0x80
1117
        LD (IY+CHSTAT),0x01
1118
        LD (IY+CHLPCNT),0x00
1119
        LD (IY+CHPATPS),0x00
1120
        LD (IY+CHTRMPS),0x00
1121
        LD (IY+CHVIBPS),0x00
1122
        LD (IY+CHVOL),0x40
1123
        LD (IY+CHMVOL),0x40
1124
        LD (IY+CHINS),0x00
1125
        LD (IY+CHSMP),0x00
1126
        LD (IY+CHPAN),0x80
1127
        LD (IY+CHEPAN),0x20
1128
        LD (IY+CHEVOL),0x40
1129
        LD (IY+CHFADVL),0xFF
1130
        LD (IY+CHFADVH),0xFF
36 savelij 1131
        ADD IY,DE
1132
        DJNZ RDLP1
181 savelij 1133
        LD IXL,0xFF
1134
        LD A,(0x8000+1080)      ;। ᨣ 
36 savelij 1135
        CP "M"
1136
        JR Z,TTY1
1137
        CP "4"
1138
        JR Z,TTY1
1139
        CP "F"
1140
        JR Z,TTY1
181 savelij 1141
        LD IXL,0x00
36 savelij 1142
        JP TTY0
181 savelij 1143
TTY1    LD A,(0x8000+1081)
36 savelij 1144
        CP "."
1145
        JR Z,TTY2
1146
        CP "L"
1147
        JR Z,TTY2
1148
        CP "!"
1149
        JR Z,TTY2
1150
        CP "C"
1151
        JR Z,TTY2
181 savelij 1152
        LD IXL,0x00
36 savelij 1153
        JP TTY0
181 savelij 1154
TTY2    LD A,(0x8000+1082)
36 savelij 1155
        CP "K"
1156
        JR Z,TTY0
1157
        CP "T"
1158
        JR Z,TTY0
1159
        CP "H"
1160
        JR Z,TTY0
181 savelij 1161
        LD IXL,0x00
69 savelij 1162
TTY0    LD A,IXL
36 savelij 1163
        LD (MODTP),A
181 savelij 1164
        LD HL,0x8000+952
36 savelij 1165
        OR A
1166
;---patched
181 savelij 1167
        LD DE,0x0000+1084
36 savelij 1168
        JR NZ,TTY10
181 savelij 1169
        LD DE,0x0000+600                ;ࠧ  䠩
1170
        LD HL,0x8000+472                ;ᬥ饭  ⠡ ୮
1171
TTY10   LD B,0x80               ;᪠஢ ⠡ ୮
36 savelij 1172
        SUB A
1173
FDF2    CP (HL)
1174
        JR NC,FDF
1175
        LD A,(HL)
1176
FDF     INC HL
1177
        DJNZ FDF2
1178
        INC A
69 savelij 1179
        LD (PATTS),A            ;⢮ ୮
36 savelij 1180
        LD L,A
1181
        LD H,B
1182
        ADD HL,HL
69 savelij 1183
        ADD HL,HL               ;HL=- ୮*4
36 savelij 1184
        LD A,H
1185
        LD H,L
1186
        LD L,B
1187
        ADD HL,DE
1188
        ADC A,B
181 savelij 1189
        DB 0xCB,0x34;SLI H
36 savelij 1190
        RLA
1191
        RRC H
1192
        LD E,A
1193
        LD (SMPS),HL
1194
        LD (SMPS+2),A
69 savelij 1195
        DUPL 3,0
36 savelij 1196
;---
69 savelij 1197
        LD A,IXL
36 savelij 1198
        OR A
181 savelij 1199
        LD BC,0x8000+950
36 savelij 1200
        JR NZ,TTT11
181 savelij 1201
        LD BC,0x8000+470
36 savelij 1202
TTT11   LD A,(BC)
1203
        DEC A
1204
        LD (MTSNGSZ),A
1205
        INC BC
1206
        LD A,(BC)
1207
        LD (MTSNGLP),A
181 savelij 1208
        LD IX,0x5400
1209
        LD IY,0x8000+20         ;砫 
36 savelij 1210
        LD B,31
1211
        LD C,E
1212
RDLP3   PUSH BC
1213
        LD (IX+SMPBEG),C
1214
        LD (IX+SMPBEG+1),L
1215
        LD (IX+SMPBEG+2),H
1216
        LD A,(IY+28)
1217
        OR A
1218
        JR NZ,LPL
1219
        LD A,(IY+29)
181 savelij 1220
        CP 0x02
36 savelij 1221
        JP C,NLPL
1222
LPL     PUSH HL
1223
        PUSH BC
1224
        LD L,(IY+27)
1225
        LD H,(IY+26)
1226
        LD E,(IY+23)
1227
        LD D,(IY+22)
1228
        SBC HL,DE
1229
        POP BC
1230
        POP HL
1231
        JP NC,NLPL
1232
        PUSH HL
1233
        PUSH BC
1234
        LD E,(IY+27)
1235
        LD D,(IY+26)
1236
        EX DE,HL
1237
        ADD HL,HL
1238
        EX DE,HL
1239
        LD B,0
1240
        RL B
1241
        SRL C
1242
        RL H
1243
        RRC H
1244
        ADD HL,DE
1245
        LD A,C
1246
        ADC A,B
1247
        LD C,A
181 savelij 1248
        DB 0xCB,0x34;SLI H
36 savelij 1249
        RL C
1250
        RRC H
1251
        LD (IX+SMPLPB),C
1252
        LD (IX+SMPLPB+1),L
1253
        LD (IX+SMPLPB+2),H
1254
        SRL C
1255
        RL H
1256
        RRC H
1257
        LD E,(IY+29)
1258
        LD D,(IY+28)
1259
        EX DE,HL
1260
        ADD HL,HL
1261
        EX DE,HL
1262
        LD B,0
1263
        RL B
1264
        ADD HL,DE
1265
        LD A,C
1266
        ADC A,B
1267
        LD C,A
181 savelij 1268
        DB 0xCB,0x34;SLI H
36 savelij 1269
        RL C
1270
        RRC H
1271
        LD (IX+SMPLPE),C
1272
        LD (IX+SMPLPE+1),L
1273
        LD (IX+SMPLPE+2),H
1274
        POP BC
1275
        POP HL
1276
        LD E,(IY+23)
1277
        LD D,(IY+22)
1278
        EX DE,HL
1279
        ADD HL,HL
1280
        EX DE,HL
181 savelij 1281
        LD B,0x00
36 savelij 1282
        RL B
1283
        SRL C
1284
        RL H
1285
        RRC H
1286
        ADD HL,DE
1287
        LD A,C
1288
        ADC A,B
1289
        LD C,A
181 savelij 1290
        DB 0xCB,0x34;SLI H
36 savelij 1291
        RL C
1292
        RRC H
1293
        JP LPL2
1294
 
1295
        LD A,(IX+SMPLPE)
1296
        CP C
1297
        JR C,LPL2
1298
        JR NZ,LPL1
1299
        LD A,(IX+SMPLPE+2)
1300
        CP H
1301
        JR C,LPL2
1302
        JR NZ,LPL1
1303
        LD A,(IX+SMPLPE+1)
1304
        CP L
1305
        JR C,LPL2
1306
LPL1    LD A,(IX+SMPEND)
1307
        LD (IX+SMPLPE),A
1308
        LD A,(IX+SMPEND+1)
1309
        LD (IX+SMPLPE+1),A
1310
        LD A,(IX+SMPEND+2)
1311
        LD (IX+SMPLPE+2),A
1312
        JP LPCNT
1313
 
1314
LPL2    LD A,(IX+SMPLPE)
1315
        LD (IX+SMPEND),A
1316
        LD A,(IX+SMPLPE+1)
1317
        LD (IX+SMPEND+1),A
1318
        LD A,(IX+SMPLPE+2)
1319
        LD (IX+SMPEND+2),A
1320
        JP LPCNT
1321
 
181 savelij 1322
NLPL    LD (IX+SMPLPB),0xFF
36 savelij 1323
        LD E,(IY+23)
1324
        LD D,(IY+22)
1325
        EX DE,HL
1326
        ADD HL,HL
1327
        EX DE,HL
181 savelij 1328
        LD B,0x00
36 savelij 1329
        RL B
1330
        SRL C
1331
        RL H
1332
        RRC H
1333
        ADD HL,DE
1334
        LD A,C
1335
        ADC A,B
1336
        LD C,A
181 savelij 1337
        DB 0xCB,0x34;SLI H
36 savelij 1338
        RL C
1339
        RRC H
1340
RDLP2   LD (IX+SMPEND+1),L
1341
        LD (IX+SMPEND+2),H
1342
        LD (IX+SMPEND),C
1343
LPCNT   LD A,(IY+24)
1344
        ADD A,A
1345
        LD (IX+SMPFT),A
1346
        LD A,(IY+25)
1347
        LD (IX+SMPVOL),A
181 savelij 1348
        LD DE,0x0010
36 savelij 1349
        ADD IX,DE
1350
        LD DE,30
1351
        ADD IY,DE
1352
        LD A,C
1353
        POP BC
1354
        LD C,A
1355
        DEC B
1356
        JP NZ,RDLP3
1357
        LD HL,CONVERT
1358
        LD A,(HL)
1359
        OR A
1360
        JR NZ,NOCONV
181 savelij 1361
        LD (HL),0xFF
36 savelij 1362
        LD HL,(SMPS)
1363
        LD A,(SMPS+2)
1364
        LD E,A
69 savelij 1365
        LD D,HIGH (RAMPG)
36 savelij 1366
        LD A,(NUMPG)
1367
        SUB E
1368
        LD B,A
1369
SMPMD2  LD A,(DE)
1370
        OUT (MPAG),A
112 savelij 1371
                CALL SET7XOR    ;  MOD 
1372
                JR SMPMD4
1373
 
181 savelij 1374
;SMPMD1  LD A,(HL)              ;砫 ADD A,0x80
1375
;        ADD A,0x80
112 savelij 1376
;        LD (HL),A
1377
;        INC L
1378
;        JP NZ,SMPMD1
1379
;        INC H
1380
;        JP NZ,SMPMD1
181 savelij 1381
;        LD H,0x80
112 savelij 1382
;        INC E
1383
;        DJNZ SMPMD2
1384
;        LD A,(DE)
1385
;        OUT (MPAG),A
1386
;        OR A
1387
;        JR Z,SMPMD4
1388
;SMPMD3  LD A,(HL)
181 savelij 1389
;        ADD A,0x80
112 savelij 1390
;        LD (HL),A
1391
;        INC L
1392
;        JP NZ,SMPMD3
1393
;        INC H
1394
;        BIT 6,H
1395
;        JP Z,SMPMD3
1396
 
181 savelij 1397
                DUPL 0xF20-$,0xFF
36 savelij 1398
SMPMD4
1399
NOCONV  XOR A
1400
        LD (CPAGE),A
1401
        OUT (MPAG),A
1402
        RET
1403
 
1404
INITPAT LD A,(MTSNGPS)
1405
        LD E,A
1406
        LD D,0
1407
        LD A,(MODTP)
1408
        INC A
181 savelij 1409
        LD HL,0x8000+952
36 savelij 1410
        JR Z,TTT13
181 savelij 1411
        LD HL,0x8000+472
36 savelij 1412
TTT13   ADD HL,DE
1413
        LD A,(RAMPG)
1414
        OUT (MPAG),A
1415
;---patched
1416
        JP Patch11
1417
;---
1418
        LD E,D
1419
        LD D,A
1420
        LD A,(MODTP)
1421
        INC A
181 savelij 1422
        LD HL,0x0000+1084
36 savelij 1423
        JR Z,TTT15
181 savelij 1424
        LD HL,0x0000+600
36 savelij 1425
TTT15   XOR A
1426
        LD (CPAGE),A
1427
        OUT (MPAG),A
1428
        ADD HL,DE
181 savelij 1429
        LD DE,0x5000
1430
        LD BC,0x400
36 savelij 1431
        CALL LDMEM
1432
        XOR A
1433
        OUT (MPAG),A
1434
        RET
1435
 
1436
;INCLUDE "QUANTUM.a80"
1437
 
1438
;**************************************************************
1439
;* QUANTUM PROCEDURE                                          *
1440
;**************************************************************
1441
 
1442
QUANTUM LD A,(FXCHNS)
1443
        CPL
1444
        LD C,A
1445
        LD A,(GSCHNS)
1446
        AND C
1447
        LD C,A
1448
        LD IY,CHANS     ;CHANNELS
1449
        LD A,(MTSTAT)
181 savelij 1450
        AND 0xC0
36 savelij 1451
        JR NZ,L221
1452
L204    LD A,C
1453
        AND (IY+CHRDR)
1454
        JR Z,L205
1455
        BIT 7,(IY+CHSTAT)
1456
        JR Z,L205
1457
        PUSH BC
1458
        CALL GEN
1459
        POP BC
69 savelij 1460
L205    LD A,IYL
181 savelij 1461
        ADD A,0x40
69 savelij 1462
        LD IYL,A
36 savelij 1463
        JP NC,L204
1464
        JP L221
1465
 
1466
L221    XOR A
1467
        LD (CPAGE),A
1468
        OUT (MPAG),A
1469
        LD HL,VOLRQTB
1470
        LD A,(QTFREE)
69 savelij 1471
        ADD A,LOW (VOLTAB)
36 savelij 1472
        LD E,A
69 savelij 1473
        LD D,HIGH (VOLTAB)
36 savelij 1474
        LDI
1475
        LDI
1476
        LDI
1477
        LDI
1478
        LD HL,(QTFREE)
1479
        LD B,L
1480
        INC L
1481
        PUSH BC
1482
        PUSH HL
1483
        LD A,(CHANNEL)
181 savelij 1484
        AND 0x0F
36 savelij 1485
        LD HL,INTTB
1486
        ADD A,A
1487
        ADD A,L
1488
        LD L,A
1489
        LD A,H
181 savelij 1490
        ADC A,0x00
36 savelij 1491
        LD H,A
1492
        LD C,(HL)
1493
        INC HL
1494
        LD B,(HL)
1495
        LD A,(CHANNEL)
181 savelij 1496
        AND 0x0F
36 savelij 1497
        LD HL,INTOFF
1498
        ADD A,L
1499
        LD L,A
1500
        LD A,H
181 savelij 1501
        ADC A,0x00
36 savelij 1502
        LD H,A
1503
        LD A,(QTFREE)
181 savelij 1504
        ADD A,0x60
36 savelij 1505
        ADD A,(HL)
1506
        POP HL
1507
        LD (HL),A
1508
        INC L
1509
        LD (HL),C
1510
        INC L
1511
        LD (HL),B
1512
        POP BC
1513
        INC L
1514
        RES 5,L
1515
        LD (QTFREE),HL
1516
        LD L,B
1517
        LD A,(SGENOFF)
1518
        LD (HL),A
1519
        LD A,(PLAYING)
1520
        OR A
1521
        JP NZ,L224
1522
        LD (QTBUSY),HL
1523
        CALL QTPLAY
1524
L224    LD A,(SGENOFF)
1525
        NEG
1526
        LD C,A
1527
        LD B,0
1528
        LD A,(MTSTAT)
181 savelij 1529
        AND 0xC0
36 savelij 1530
        RET NZ
1531
        LD HL,(TCKLEFT)
1532
        OR A
1533
        SBC HL,BC
1534
        JR Z,EFXINT
1535
        LD (TCKLEFT),HL
1536
        RET
1537
 
1538
EFXINT  LD A,(MODULE)
1539
        OR A
1540
        RET Z
1541
        LD HL,(TICKLEN)
1542
        LD (TCKLEFT),HL
1543
        XOR A
1544
        LD (CPAGE),A
1545
        OUT (MPAG),A
1546
        LD IY,CHANS
181 savelij 1547
        LD B,0x04
36 savelij 1548
        LD A,(MTCOUNT)
1549
        INC A
1550
        LD (MTCOUNT),A
1551
        LD HL,MTSPEED
1552
        CP (HL)
1553
        JR C,EFXNONT    ;NO NEW NOTE
1554
        XOR A
1555
        LD (MTCOUNT),A
1556
        LD A,(MTPDT2)
1557
        OR A
1558
        JR Z,EFXGTNT    ;GET NEW NOTE
1559
        CALL EFXNONT
1560
        JP EFXSKIP
1561
 
1562
EFXNONT LD IY,CHANS
181 savelij 1563
        LD B,0x04
36 savelij 1564
EFXNON1 PUSH BC
1565
        LD A,(IY+CHCOM)
1566
        OR (IY+CHPARM)
1567
        JR NZ,EFXNON2
1568
        CALL FXNOP
1569
        JP EFXNON3
1570
 
1571
EFXNON2 CALL FXCHK_
1572
EFXNON3 LD BC,CHANLEN
1573
        ADD IY,BC
1574
        POP BC
1575
        DJNZ EFXNON1
1576
        RET
1577
 
1578
EFXNOP  LD L,(IY+CHPERL)        ;;not used!
1579
        LD H,(IY+CHPERL)        ;;bug!
1580
        CALL EFXCNV
1581
        LD (IY+CHFRQL),L
1582
        LD (IY+CHFRQH),H
1583
        RET
1584
 
1585
EFXGTNT
1586
;LD IY,CHANS
1587
;---patched
1588
        JP Patch3
181 savelij 1589
        DB 0x46
36 savelij 1590
;---
1591
        XOR A
1592
        LD (CPAGE),A
1593
        OUT (MPAG),A
1594
        LD (CURCHN),A
1595
COMM1   XOR A
1596
        LD (CPAGE),A
1597
        OUT (MPAG),A
1598
        CALL GETROWS
1599
        LD (IY+CHCOM),B
1600
        LD (IY+CHPARM),C
1601
        LD A,E
1602
        OR A
1603
        JR Z,COMM2
1604
        LD (IY+CHINS),E
1605
        PUSH DE
1606
        PUSH BC
1607
        CALL EFXNEWI
1608
        POP BC
1609
        POP DE
1610
COMM2   LD A,D
181 savelij 1611
        CP 0x7F
36 savelij 1612
        JP Z,COMM5
1613
        LD A,B
181 savelij 1614
        CP 0x03
36 savelij 1615
        JP Z,COMM4
181 savelij 1616
        CP 0x05
36 savelij 1617
        JP Z,COMM4
181 savelij 1618
        CP 0x0E
36 savelij 1619
        JR NZ,COMM3
1620
        LD A,C
181 savelij 1621
        AND 0xF0
1622
        CP 0x50
36 savelij 1623
        JR Z,COMM5_
1624
        LD (IY+CHNOTE),D
1625
        LD (IY+CHREAL),D
181 savelij 1626
        CP 0xD0
36 savelij 1627
        JR Z,COMM3__
1628
        JP COMM3
1629
 
1630
COMM5_  LD A,C
181 savelij 1631
        AND 0x0F
36 savelij 1632
        SLA A
1633
        LD (IY+CHFINE),A
1634
COMM3   LD (IY+CHNOTE),D
1635
        LD (IY+CHREAL),D
1636
        CALL GETSMP
1637
COMM3__ LD E,(IY+CHNOTE)
1638
        CALL GETPER
1639
        LD (IY+CHPERL),L
1640
        LD (IY+CHPERH),H
1641
        LD E,(IY+CHNOTE)
1642
        CALL GETFRQ
1643
        LD (IY+CHFRQL),L
1644
        LD (IY+CHFRQH),H
1645
        LD A,(IY+CHCOM)
181 savelij 1646
        CP 0x09
36 savelij 1647
        JP NZ,COMM5
1648
        LD A,(IY+CHPARM)
1649
        OR A
1650
        JR NZ,FX9_
1651
        LD A,(IY+CHOFFST)
1652
FX9_    LD (IY+CHOFFST),A
1653
        LD H,A
181 savelij 1654
        LD L,0x00
36 savelij 1655
        XOR A
1656
        ADC A,A
1657
        EX DE,HL
1658
        LD L,(IY+CHCURL)
1659
        LD H,(IY+CHCURH)
1660
        LD B,(IY+CHCURP)
1661
        RL H
1662
        SRL B
1663
        RR H
1664
        ADD HL,DE
1665
        ADC A,B
181 savelij 1666
        DB 0xCB,0x34;SLI H
36 savelij 1667
        RLA
1668
        RRC H
1669
        LD (IY+CHCURL),L
1670
        LD (IY+CHCURH),H
1671
        LD (IY+CHCURP),A
1672
        CP (IY+CHENDP)
1673
        JP C,COMM5
1674
        JR NZ,COMM3_
1675
        LD A,H
1676
        CP (IY+CHENDH)
1677
        JP C,COMM5
1678
        JR NZ,COMM3_
1679
        LD A,L
1680
        CP (IY+CHENDL)
1681
        JP C,COMM5
126 savelij 1682
COMM3_  RES 7,(IY+CHSTAT)
1683
        JP COMM5__
36 savelij 1684
 
1685
COMM4   LD (IY+CHWNT),D
1686
COMM5   XOR A
1687
        LD (CPAGE),A
1688
        OUT (MPAG),A
1689
        CALL FXCHK
1690
COMM6   LD BC,CHANLEN
1691
        ADD IY,BC
1692
        LD A,(CURCHN)
1693
        INC A
1694
        LD (CURCHN),A
181 savelij 1695
        CP 0x04
36 savelij 1696
        JP NZ,COMM1
1697
EFXSKIP LD HL,MTPATPS
1698
        INC (HL)
1699
        LD A,(MTPDT)
1700
        OR A
1701
        JR Z,EFXSKP2
1702
        LD (MTPDT2),A
1703
        XOR A
1704
        LD (MTPDT),A
1705
EFXSKP2 LD A,(MTPDT2)
1706
        OR A
1707
        JR Z,EFXSKP3
1708
        DEC A
1709
        LD (MTPDT2),A
1710
        JR Z,EFXSKP3
1711
        DEC (HL)
1712
EFXSKP3 LD A,(MTBRKFL)
1713
        OR A
1714
        JR Z,EFXSKP4
1715
        LD A,(MTBRKPS)
1716
        LD (HL),A
1717
        XOR A
1718
        LD (MTBRKPS),A
1719
        LD (MTBRKFL),A
1720
        JP EFXSKP5
1721
 
1722
EFXSKP4 LD A,(HL)
1723
        OR A
1724
        JR NZ,EFXSKP5
1725
        LD A,(MTPDT2)
1726
        OR A
1727
        JR Z,EFXSKP6
1728
EFXSKP5 LD A,(MTROWS)
1729
        CP (HL)
1730
        JR NC,EFXSKPX
1731
EFXSKP6 LD A,(MTBRKPS)
1732
        LD (MTPATPS),A
1733
        XOR A
1734
        LD (MTBRKPS),A
1735
        LD (MTJMPFL),A
1736
        LD HL,MTSNGPS
1737
        INC (HL)
1738
        JR Z,EFXSKP7
1739
        LD A,(MTSNGSZ)
1740
        CP (HL)
1741
        JP NC,INITPAT
1742
EFXSKP7 LD A,(MTSNGSZ)
1743
        LD HL,MTSNGLP
1744
        CP (HL)
181 savelij 1745
        LD A,0x00
36 savelij 1746
        JR C,EFXSKP8
1747
        LD A,(HL)
1748
EFXSKP8 LD (MTSNGPS),A
1749
 
1750
        LD A,6
69 savelij 1751
        DUPL 3,0        ;LD (MTSPEED),A
36 savelij 1752
        LD HL,750
69 savelij 1753
        DUPL 3,0        ;LD (TICKLEN),HL
1754
        DUPL 3,0        ;LD (TCKLEFT),HL
36 savelij 1755
        ;CALL STOPMOD 
1756
 
1757
        XOR A
1758
        LD (MTBRKPS),A
1759
        LD (MTJMPFL),A
1760
        LD (MTBRKFL),A
1761
        LD (MTPDT),A
1762
        LD (MTPDT2),A
1763
        JP INITPAT
1764
 
1765
EFXSKPX LD A,(MTJMPFL)
1766
        OR A
1767
        JP NZ,EFXSKP6
1768
        RET
1769
 
1770
GETSMP  SET 7,(IY+CHSTAT)
1771
        LD A,(IY+CHINS)
1772
        OR A
1773
        JR Z,GETSMP2
1774
        DEC A
1775
        ADD A,A
1776
        ADD A,A
1777
        ADD A,A
1778
        ADD A,A
1779
        LD E,A
181 savelij 1780
        LD A,0x54
1781
        ADC A,0x00
36 savelij 1782
        LD D,A
1783
        LD A,(DE)
1784
        LD (IY+CHCURP),A
1785
        INC DE
1786
        LD A,(DE)
1787
        LD (IY+CHCURL),A
1788
        INC DE
1789
        LD A,(DE)
1790
        LD (IY+CHCURH),A
1791
        INC (IY+CHCURL)
1792
        CALL Z,GETSMP3
1793
        INC (IY+CHCURL)
1794
        CALL Z,GETSMP3
1795
        INC DE
1796
        LD A,(DE)
1797
        LD (IY+CHENDP),A
1798
        INC DE
1799
        LD A,(DE)
1800
        LD (IY+CHENDL),A
1801
        INC DE
1802
        LD A,(DE)
1803
        LD (IY+CHENDH),A
1804
        INC DE
1805
        INC DE
1806
        INC DE
1807
        LD A,(DE)
1808
        LD (IY+CHLPBP),A
1809
        INC DE
1810
        LD A,(DE)
1811
        LD (IY+CHLPBL),A
1812
        INC DE
1813
        LD A,(DE)
1814
        LD (IY+CHLPBH),A
1815
        INC DE
1816
        LD A,(DE)
1817
        LD (IY+CHLPEP),A
1818
        INC DE
1819
        LD A,(DE)
1820
        LD (IY+CHLPEL),A
1821
        INC DE
1822
        LD A,(DE)
1823
        LD (IY+CHLPEH),A
181 savelij 1824
        LD (IY+CHCNTL),0x00
1825
        LD (IY+CHCNTH),0x07
36 savelij 1826
        LD A,(IY+CHCURP)
1827
        CP (IY+CHENDP)
1828
        RET C
1829
        JP NZ,GETSMP2
1830
        LD A,(IY+CHCURH)
1831
        CP (IY+CHENDH)
1832
        RET C
1833
        JP NZ,GETSMP2
1834
        LD A,(IY+CHCURL)
1835
        CP (IY+CHENDL)
1836
        RET C
1837
GETSMP2 RES 7,(IY+CHSTAT)
1838
        RET
1839
GETSMP3 INC (IY+CHCURH)
1840
        RET NZ
181 savelij 1841
        LD (IY+CHCURH),0x80
36 savelij 1842
        INC (IY+CHCURP)
1843
        RET
1844
 
1845
EFXNEWI LD A,(IY+CHINS)
1846
        DEC A
1847
        ADD A,A
1848
        ADD A,A
1849
        ADD A,A
1850
        ADD A,A
1851
        LD E,A
181 savelij 1852
        LD A,0x54
1853
        ADC A,0x00
36 savelij 1854
        LD D,A
1855
        INC DE
1856
        INC DE
1857
        INC DE
1858
        INC DE
1859
        INC DE
1860
        INC DE
1861
        LD A,(DE)
1862
        LD (IY+CHFINE),A
1863
        INC DE
1864
        LD A,(DE)
181 savelij 1865
        CP 0x40
36 savelij 1866
        JR C,GETSMP1
181 savelij 1867
        LD A,0x40
36 savelij 1868
GETSMP1 LD (IY+CHVOL),A
1869
        CP (IY+CHMVOL)
1870
        LD (IY+CHMVOL),A
1871
        RET Z
1872
        SET 0,(IY+CHSTAT)
1873
        RET
1874
 
1875
GETROWS LD A,(MTPATPS)
181 savelij 1876
        AND 0x3F
36 savelij 1877
        ADD A,A
1878
        ADD A,A
1879
        LD L,A
181 savelij 1880
        LD H,0x00
36 savelij 1881
        ADD HL,HL
1882
        ADD HL,HL
1883
        LD A,(CURCHN)
1884
        ADD A,A
1885
        ADD A,A
1886
        ADD A,L
1887
        LD L,A
1888
        LD A,H
181 savelij 1889
        ADC A,0x50
36 savelij 1890
        LD H,A
1891
        LD A,(HL)
181 savelij 1892
        AND 0x10
36 savelij 1893
        PUSH AF
1894
        LD A,(HL)
181 savelij 1895
        AND 0x0F
36 savelij 1896
        LD D,A
1897
        INC HL
1898
        LD E,(HL)
1899
        OR E
181 savelij 1900
        LD A,0x7F
36 savelij 1901
        JR Z,GETRWS2
1902
        PUSH HL
1903
        CALL NOTEID
1904
        POP HL
1905
GETRWS2 INC HL
1906
        POP BC
1907
        LD D,A
1908
        LD A,(HL)
181 savelij 1909
        AND 0xF0
36 savelij 1910
        RRCA
1911
        RRCA
1912
        RRCA
1913
        RRCA
1914
        OR B
1915
        LD E,A
1916
        LD A,(HL)
181 savelij 1917
        AND 0x0F
36 savelij 1918
        LD B,A
1919
        INC HL
1920
        LD C,(HL)
1921
        RET
1922
 
1923
;INCLUDE "INTTST.a80"
1924
;***********************************************************
1925
;* INTERRUPT HANDLING PROCEDURES                           *
1926
;***********************************************************
1927
 
1928
        align 256
1929
 
1930
INTZ    RET
1931
 
1932
INT0    EX AF,AF'
1933
        INC A
1934
        JR Z,INT0_
1935
        EX AF,AF'
1936
        EI
1937
        RET
69 savelij 1938
        DUPL 11,0
36 savelij 1939
        RET
1940
 
1941
INT0_   PUSH DE
1942
        JP QTDONE
1943
 
1944
INT1    EX AF,AF'
1945
        PUSH DE
1946
        LD E,A
69 savelij 1947
        LD D,IXH
36 savelij 1948
        LD A,(DE)
1949
        INC E
1950
        JR Z,INT1_
1951
        LD A,E
1952
        POP DE
1953
        EX AF,AF'
1954
        EI
1955
        RET
69 savelij 1956
        DUPL 4,0
36 savelij 1957
        RET
1958
 
1959
        PUSH DE
1960
INT1_   JP QTDONE
1961
 
1962
INT2    EX AF,AF'
1963
        PUSH DE
1964
        LD E,A
69 savelij 1965
        LD D,IXH
36 savelij 1966
        LD A,(DE)
1967
        INC D
1968
        LD A,(DE)
1969
        INC E
1970
        JR Z,INT2_
1971
        LD A,E
1972
        POP DE
1973
        EX AF,AF'
1974
        EI
1975
        RET
1976
 
69 savelij 1977
        DUPL 2,0
36 savelij 1978
        RET
1979
 
1980
        PUSH DE
1981
INT2_   JP QTDONE
1982
 
1983
INT3    EX AF,AF'
1984
        PUSH DE
1985
        LD E,A
69 savelij 1986
        LD D,IXH
36 savelij 1987
        LD A,(DE)
1988
        INC D
1989
        INC D
1990
        LD A,(DE)
1991
        INC E
1992
        JR Z,INT3_
1993
        LD A,E
1994
        POP DE
1995
        EX AF,AF'
1996
        EI
1997
        RET
1998
 
69 savelij 1999
        DUPL 1,0
36 savelij 2000
        RET
2001
 
2002
        PUSH DE
2003
INT3_   JP QTDONE
2004
 
2005
INT4    EX AF,AF'
2006
        PUSH DE
2007
        LD E,A
69 savelij 2008
        LD D,IXH
36 savelij 2009
        LD A,(DE)
2010
        INC D
2011
        LD A,(DE)
2012
        INC D
2013
        LD A,(DE)
2014
        INC E
2015
        JR Z,INT4_
2016
        LD A,E
2017
        POP DE
2018
        EX AF,AF'
2019
        EI
2020
        RET
2021
 
2022
        RET
2023
 
2024
        PUSH DE
2025
INT4_   JP QTDONE
2026
 
2027
INT5    EX AF,AF'
2028
        PUSH DE
2029
        LD E,A
69 savelij 2030
        LD D,IXH
36 savelij 2031
        LD A,(DE)
2032
        INC D
2033
        INC D
2034
        INC D
2035
        LD A,(DE)
2036
        INC E
2037
        JR Z,INT5_
2038
        LD A,E
2039
        POP DE
2040
        EX AF,AF'
2041
        EI
2042
        RET
2043
 
2044
        RET
2045
 
2046
        PUSH DE
2047
INT5_   JP QTDONE
2048
 
2049
INT6    EX AF,AF'
2050
        PUSH DE
2051
        LD E,A
69 savelij 2052
        LD D,IXH
36 savelij 2053
        LD A,(DE)
2054
        INC D
2055
        LD A,(DE)
2056
        INC D
2057
        INC D
2058
        LD A,(DE)
2059
        INC E
2060
        JR Z,INT6_
2061
        LD A,E
2062
        POP DE
2063
        EX AF,AF'
2064
        EI
2065
        RET
2066
 
2067
        PUSH DE
2068
INT6_   JP QTDONE
2069
 
2070
INT7    EX AF,AF'
2071
        PUSH DE
2072
        LD E,A
69 savelij 2073
        LD D,IXH
36 savelij 2074
        LD A,(DE)
2075
        INC D
2076
        INC D
2077
        LD A,(DE)
2078
        INC D
2079
        LD A,(DE)
2080
        INC E
2081
        JR Z,INT7_
2082
        LD A,E
2083
        POP DE
2084
        EX AF,AF'
2085
        EI
2086
        RET
2087
 
2088
        PUSH DE
2089
INT7_   JP QTDONE
2090
 
2091
QTFAULT LD DE,(QTBUSY)
2092
        LD (DE),A
2093
        LD (PLAYING),A
2094
        POP DE
2095
        EX AF,AF'
2096
        RET
2097
 
2098
INT_IM1 IM 1
2099
        EI
2100
        EX DE,HL
2101
        LD HL,(QTBUSY)
2102
        LD (HL),A
2103
        LD A,L
181 savelij 2104
        ADD A,0x04
2105
        AND 0x1C
36 savelij 2106
        LD L,A
2107
        LD (QTBUSY),HL
2108
        SET 5,L
2109
        LD A,(HL)
2110
        OUT (VOL1),A
2111
        INC L
2112
        LD A,(HL)
2113
        OUT (VOL2),A
2114
        INC L
2115
        LD A,(HL)
2116
        OUT (VOL3),A
2117
        INC L
2118
        LD A,(HL)
2119
        OUT (VOL4),A
2120
        POP AF
2121
        POP HL
2122
        EX DE,HL
2123
        RET
2124
 
2125
QTDONE  LD A,(QTBUSY)
181 savelij 2126
        ADD A,0x04
2127
        AND 0x1C
36 savelij 2128
        LD E,A
69 savelij 2129
        LD D,HIGH (QTMAP)
36 savelij 2130
        LD A,(DE)
2131
        OR A
2132
        JR Z,QTFAULT
2133
        EX AF,AF'
2134
        PUSH AF
2135
        INC E
2136
        LD A,(DE)
69 savelij 2137
        LD IXH,A
36 savelij 2138
        INC E
2139
        LD A,(DE)
2140
        OR A
2141
        JR Z,INT_IM1
2142
        IM 2
2143
        EX DE,HL
181 savelij 2144
        LD HL,INTAREA+0x18
36 savelij 2145
        CP (HL)
2146
        JR Z,INT_I1
2147
        LD (HL),A
181 savelij 2148
        LD HL,0x1518
36 savelij 2149
        LD (INTAREA),HL
2150
        EI
2151
        DEC A
2152
        JR Z,INT_I0
181 savelij 2153
        ADD A,0x03
36 savelij 2154
        LD L,A
69 savelij 2155
        LD H,HIGH (INT0)
36 savelij 2156
        PUSH DE
2157
        PUSH BC
2158
        LD DE,INTAREA+2
2159
        LDI
2160
        LDI
2161
        LDI
2162
        LDI
2163
        LDI
2164
        LDI
2165
        LDI
2166
        LDI
2167
        LDI
2168
        LDI
2169
        LDI
2170
        LDI
2171
        LDI
2172
        LDI
2173
        LDI
2174
        LDI
181 savelij 2175
        LD HL,0xD508
36 savelij 2176
        LD (INTAREA),HL
2177
        POP BC
2178
        POP DE
2179
        LD HL,(QTBUSY)
181 savelij 2180
        LD (HL),0x00
36 savelij 2181
        LD A,L
181 savelij 2182
        ADD A,0x04
2183
        AND 0x1C
36 savelij 2184
        LD L,A
2185
        LD (QTBUSY),HL
2186
        SET 5,L
2187
        LD A,(HL)
2188
        OUT (VOL1),A
2189
        INC L
2190
        LD A,(HL)
2191
        OUT (VOL2),A
2192
        INC L
2193
        LD A,(HL)
2194
        OUT (VOL3),A
2195
        INC L
2196
        LD A,(HL)
2197
        OUT (VOL4),A
2198
        POP AF
2199
        POP HL
2200
        EX DE,HL
2201
        RET
2202
 
2203
INT_I1  EI
181 savelij 2204
        LD A,0x04
36 savelij 2205
        LD HL,(QTBUSY)
181 savelij 2206
        LD (HL),0x00
36 savelij 2207
        ADD A,L
181 savelij 2208
        AND 0x1C
36 savelij 2209
        LD L,A
2210
        LD (QTBUSY),HL
2211
        SET 5,L
2212
        LD A,(HL)
2213
        OUT (VOL1),A
2214
        INC L
2215
        LD A,(HL)
2216
        OUT (VOL2),A
2217
        INC L
2218
        LD A,(HL)
2219
        OUT (VOL3),A
2220
        INC L
2221
        LD A,(HL)
2222
        OUT (VOL4),A
2223
        POP AF
2224
        POP HL
2225
        EX DE,HL
2226
        RET
2227
 
2228
INT_I0  LD HL,INT0+2
2229
        PUSH DE
2230
        PUSH BC
2231
        LD DE,INTAREA+2
2232
        LDI
2233
        LDI
2234
        LDI
2235
        LDI
2236
        LDI
181 savelij 2237
        LD HL,0x3C08
36 savelij 2238
        LD (INTAREA),HL
2239
        POP BC
2240
        POP DE
2241
        LD HL,(QTBUSY)
2242
        LD (HL),A
2243
        LD A,L
181 savelij 2244
        ADD A,0x04
2245
        AND 0x1C
36 savelij 2246
        LD L,A
2247
        LD (QTBUSY),HL
2248
        SET 5,L
2249
        LD A,(HL)
2250
        OUT (VOL1),A
2251
        INC L
2252
        LD A,(HL)
2253
        OUT (VOL2),A
2254
        INC L
2255
        LD A,(HL)
2256
        OUT (VOL3),A
2257
        INC L
2258
        LD A,(HL)
2259
        OUT (VOL4),A
2260
        POP AF
2261
        POP HL
2262
        EX DE,HL
2263
        RET
2264
 
2265
QTPLAY  DI
181 savelij 2266
        LD A,0xFF
36 savelij 2267
        LD (PLAYING),A
2268
        LD HL,(QTBUSY)
2269
        LD A,(HL)
2270
        EX AF,AF'
2271
        INC L
2272
        LD A,(HL)
69 savelij 2273
        LD IXH,A
36 savelij 2274
        INC L
2275
        LD A,(HL)
2276
        IM 1
2277
        OR A
2278
        JR Z,QTPLAY_
2279
        IM 2
181 savelij 2280
        LD HL,INTAREA+0x18
36 savelij 2281
        CP (HL)
2282
        JR Z,QTPLAY_
2283
        LD (HL),A
2284
        LD L,A
69 savelij 2285
        LD H,HIGH (INT0)
36 savelij 2286
        LD DE,INTAREA
181 savelij 2287
        LD BC,0x0012
36 savelij 2288
        LDIR
2289
QTPLAY_ LD HL,(QTBUSY)
2290
        SET 5,L
2291
        LD A,(HL)
2292
        OUT (VOL1),A
2293
        INC L
2294
        LD A,(HL)
2295
        OUT (VOL2),A
2296
        INC L
2297
        LD A,(HL)
2298
        OUT (VOL3),A
2299
        INC L
2300
        LD A,(HL)
2301
        OUT (VOL4),A
2302
        EI
2303
        RET
2304
 
2305
;INCLUDE "COMM.a80"
2306
WTCM    IN A,(ZXSTAT)
2307
        RRCA
2308
        JR NC,WTCM
2309
        IN A,(ZXCMD)
181 savelij 2310
        CP 0x12
36 savelij 2311
        JR Z,CM12
181 savelij 2312
        CP 0x18
36 savelij 2313
        JR Z,CM18
181 savelij 2314
        CP 0x1A
36 savelij 2315
        JR Z,CM1A
181 savelij 2316
        CP 0x1B
36 savelij 2317
        JR Z,CM1B
181 savelij 2318
        CP 0x20
36 savelij 2319
        JR Z,CM20
2320
        OUT (CLRCBIT),A
2321
        JP WTCM
2322
 
2323
CM12    IN A,(ZXDATRD)
2324
        OUT (CLRCBIT),A
2325
        OUT (MPAG),A
2326
        JP WTCM
2327
 
2328
CM18    IN A,(ZXDATRD)
2329
        LD E,A
2330
        OUT (CLRCBIT),A
2331
CM18_1  IN A,(ZXSTAT)
2332
        OR A
2333
        JP P,CM18_1
2334
        IN A,(ZXDATRD)
2335
        LD D,A
2336
        JP WTCM
2337
 
2338
CM1A    LD A,(DE)
2339
        OUT (ZXDATWR),A
2340
        OUT (CLRCBIT),A
2341
        JP WTCM
2342
 
2343
CM1B    INC DE
2344
        OUT (CLRCBIT),A
2345
        JP WTCM
2346
 
2347
CM20    OUT (CLRCBIT),A
2348
        RET
2349
 
2350
;INCLUDE "GEN_L.a80"
2351
GEN     LD A,(QTFREE)
69 savelij 2352
        ADD A,HIGH (DAC0)
36 savelij 2353
        ADD A,(IY+CHRDN)
2354
        LD D,A
2355
        LD A,(SGENOFF)
2356
        LD E,A
2357
        LD A,(CHANNEL)
2358
        OR (IY+CHRDR)
2359
        LD (CHANNEL),A
2360
GEN_    LD L,(IY+CHCURL)
2361
        LD H,(IY+CHCURH)
2362
        LD B,(IY+CHCNTL)
2363
GENLP   EXX
69 savelij 2364
        LD H,HIGH (RAMPG)
36 savelij 2365
        LD L,(IY+CHCURP)
2366
        LD D,(IY+CHCNTH)
2367
        LD E,(IY+CHFRQH)
2368
        LD B,(HL)
2369
        LD A,B
2370
        LD (CPAGE),A
2371
        OUT (MPAG),A
2372
        LD A,L
2373
        EXX
2374
        CP (IY+CHENDP)
2375
        JP C,GENTP
2376
        PUSH DE
2377
        EX DE,HL
2378
        LD L,(IY+CHENDL)
2379
        LD H,(IY+CHENDH)
2380
        DEC HL
2381
        SBC HL,DE
2382
        INC HL
2383
        EX DE,HL
69 savelij 2384
        LD IXL,E
36 savelij 2385
        LD A,D
2386
        POP DE
2387
        JR C,GENCHK
2388
        OR A
2389
        JR Z,GENENT
181 savelij 2390
        LD IXL,0xFF
36 savelij 2391
        JP GENENT
2392
 
2393
GENCHK  RES 7,(IY+CHSTAT)
2394
        LD A,(IY+CHLPBP)
2395
        INC A
2396
        JP Z,GENCHK2
2397
        DEC A
2398
        LD (IY+CHCURP),A
2399
        LD L,(IY+CHLPBL)
2400
        LD H,(IY+CHLPBH)
2401
        LD A,(IY+CHLPEP)
2402
        LD (IY+CHENDP),A
2403
        LD A,(IY+CHLPEL)
2404
        LD (IY+CHENDL),A
2405
        LD A,(IY+CHLPEH)
2406
        LD (IY+CHENDH),A
2407
        SET 7,(IY+CHSTAT)
2408
        JP GENLP
2409
 
181 savelij 2410
GENCHK2 LD (IY+CHREAL),0x7F
36 savelij 2411
        BIT 6,(IY+CHSTAT)
2412
        JP Z,GENZERO
2413
        PUSH IY
2414
        PUSH DE
2415
        LD IY,CHANS
181 savelij 2416
        LD B,0x08
36 savelij 2417
        LD DE,CHANLEN
2418
GENCHK3 SET 0,(IY+CHSTAT)
2419
        ADD IY,DE
2420
        DJNZ GENCHK3
2421
        POP DE
2422
        POP IY
2423
        JP GENZERO
2424
 
181 savelij 2425
GENTP   LD IXL,0xFF
36 savelij 2426
        LD A,H
2427
        INC A
2428
        JP M,GENENT
2429
        OR L
2430
        JR Z,GENENT
2431
        NEG
69 savelij 2432
        LD IXL,A
36 savelij 2433
GENENT  LD C,(IY+CHFRQL)
2434
        LD A,(IY+CHOLDV)
2435
        PUSH IY
181 savelij 2436
        CALL 0x2030
36 savelij 2437
        POP  IY
2438
        LD (IY+CHOLDV),A
2439
        LD (IY+CHCNTH),C
2440
        LD A,H
2441
        OR A
2442
        JP M,GENJ2
181 savelij 2443
        LD H,0x80
36 savelij 2444
        INC (IY+CHCURP)
2445
GENJ2   LD A,E
2446
        OR A
2447
        JP Z,GENRET
2448
        BIT 7,(IY+CHSTAT)
2449
        JP NZ,GENLP
2450
        JP GENZERO
2451
 
2452
GENRET  LD (IY+CHCURL),L
2453
        LD (IY+CHCURH),H
2454
        LD (IY+CHCNTL),B
2455
        JP  GENEXT
2456
 
2457
GENZERO LD A,E
181 savelij 2458
        CP 0xFF
36 savelij 2459
        JR NC,GENZENT
2460
        LD B,(IY+CHOLDV)
181 savelij 2461
        LD C,0x80
2462
        CP 0xFD
36 savelij 2463
        JR NC,GENZ_1
181 savelij 2464
        CP 0xF9
36 savelij 2465
        JR NC,GENZ_2
2466
        LD A,C
2467
        ADD A,B
2468
        RRA
2469
        LD H,A
2470
        ADD A,B
2471
        RRA
2472
        LD L,A
2473
        ADD A,B
2474
        RRA
2475
        LD (DE),A
2476
        INC E
2477
        LD A,L
2478
        LD (DE),A
2479
        INC E
2480
        ADD A,H
2481
        RRA
2482
        LD (DE),A
2483
        INC E
2484
        LD A,H
2485
        LD (DE),A
2486
        INC E
2487
        ADD A,C
2488
        RRA
2489
        LD L,A
2490
        ADD A,H
2491
        RRA
2492
        LD (DE),A
2493
        INC E
2494
        LD A,L
2495
        LD (DE),A
2496
        INC E
2497
        ADD A,C
2498
        RRA
2499
        LD (DE),A
2500
        INC E
2501
        JP GENZENT
2502
 
2503
GENZ_2  LD A,C
2504
        ADD A,B
2505
        RRA
2506
        LD H,A
2507
        ADD A,B
2508
        RRA
2509
        LD (DE),A
2510
        INC E
2511
        LD A,H
2512
        LD (DE),A
2513
        INC E
2514
        ADD A,C
2515
        RRA
2516
        LD (DE),A
2517
        INC E
2518
        JP GENZENT
2519
 
2520
GENZ_1  LD A,B
2521
        ADD A,C
2522
        RRA
2523
        LD (DE),A
2524
        INC E
181 savelij 2525
GENZENT LD A,0x80
36 savelij 2526
        BIT 0,E
2527
        JR Z,GENZJP1
2528
        LD (DE),A
2529
        INC E
2530
        JR Z,GENZEXT
2531
GENZJP1 BIT 1,E
2532
        JR Z,GENZJP2
2533
        LD (DE),A
2534
        INC E
2535
        LD (DE),A
2536
        INC E
2537
        JR Z,GENZEXT
2538
GENZJP2 BIT 2,E
2539
        JR Z,GENZLP
2540
        LD (DE),A
2541
        INC E
2542
        LD (DE),A
2543
        INC E
2544
        LD (DE),A
2545
        INC E
2546
        LD (DE),A
2547
        INC E
2548
        JR Z,GENZEXT
2549
GENZLP  LD (DE),A
2550
        INC E
2551
        LD (DE),A
2552
        INC E
2553
        LD (DE),A
2554
        INC E
2555
        LD (DE),A
2556
        INC E
2557
        LD (DE),A
2558
        INC E
2559
        LD (DE),A
2560
        INC E
2561
        LD (DE),A
2562
        INC E
2563
        LD (DE),A
2564
        INC E
2565
        JP NZ,GENZLP
2566
GENZEXT LD A,(QTFREE)
69 savelij 2567
        ADD A,HIGH (DAC0)
36 savelij 2568
        ADD A,(IY+CHRDN)
2569
        LD D,A
181 savelij 2570
        LD E,0xFF
2571
        LD A,0x80
36 savelij 2572
        LD (DE),A
2573
GENEXT  XOR A
2574
        LD (CPAGE),A
2575
        OUT (MPAG),A
2576
        BIT 0,(IY+CHSTAT)
2577
        RET Z
2578
        JP CALCVOL
2579
 
2580
;INCLUDE "TABLES_L.a80"
2581
 
2582
        align 256
2583
 
181 savelij 2584
INTTAB  DUPL 0x101,HIGH (INTAREA)
36 savelij 2585
 
2586
INTTB   DW INT0,INT1,INT1,INT2,INT1,INT3,INT2,INT4,INT1,INT5
181 savelij 2587
        DW INT3,INT6,INT2,INT7,INT4,0x0000
36 savelij 2588
INTOFF  DB 0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0
2589
 
2590
;INCLUDE "_BPM.a80"
2591
BPMTAB
181 savelij 2592
        dw 0x0B72,0x0B19,0x0AC5,0x0A77,0x0A2C,0x09E6,0x09A3,0x0964
2593
        dw 0x0928,0x08EF,0x08B8,0x0884,0x0853,0x0823,0x07F6,0x07CB
2594
        dw 0x07A1,0x0779,0x0753,0x072E,0x070B,0x06E9,0x06C8,0x06A9
2595
        dw 0x068A,0x066D,0x0650,0x0635,0x061B,0x0601,0x05E8,0x05D0
2596
        dw 0x05B9,0x05A2,0x058C,0x0577,0x0563,0x054F,0x053B,0x0528
2597
        dw 0x0516,0x0504,0x04F3,0x04E2,0x04D2,0x04C2,0x04B2,0x04A3
2598
        dw 0x0494,0x0485,0x0477,0x046A,0x045C,0x044F,0x0442,0x0436
2599
        dw 0x0429,0x041D,0x0412,0x0406,0x03FB,0x03F0,0x03E5,0x03DB
2600
        dw 0x03D1,0x03C6,0x03BD,0x03B3,0x03AA,0x03A0,0x0397,0x038E
2601
        dw 0x0385,0x037D,0x0374,0x036C,0x0364,0x035C,0x0354,0x034D
2602
        dw 0x0345,0x033E,0x0336,0x032F,0x0328,0x0321,0x031A,0x0314
2603
        dw 0x030D,0x0307,0x0300,0x02FA,0x02F4,0x02EE,0x02E8,0x02E2
2604
        dw 0x02DC,0x02D7,0x02D1,0x02CC,0x02C6,0x02C1,0x02BC,0x02B6
2605
        dw 0x02B1,0x02AC,0x02A7,0x02A2,0x029E,0x0299,0x0294,0x0290
2606
        dw 0x028B,0x0287,0x0282,0x027E,0x0279,0x0275,0x0271,0x026D
2607
        dw 0x0269,0x0265,0x0261,0x025D,0x0259,0x0255,0x0251,0x024E
2608
        dw 0x024A,0x0246,0x0243,0x023F,0x023C,0x0238,0x0235,0x0231
2609
        dw 0x022E,0x022B,0x0227,0x0224,0x0221,0x021E,0x021B,0x0218
2610
        dw 0x0215,0x0212,0x020F,0x020C,0x0209,0x0206,0x0203,0x0200
2611
        dw 0x01FE,0x01FB,0x01F8,0x01F5,0x01F3,0x01F0,0x01ED,0x01EB
2612
        dw 0x01E8,0x01E6,0x01E3,0x01E1,0x01DE,0x01DC,0x01D9,0x01D7
2613
        dw 0x01D5,0x01D2,0x01D0,0x01CE,0x01CC,0x01C9,0x01C7,0x01C5
2614
        dw 0x01C3,0x01C1,0x01BE,0x01BC,0x01BA,0x01B8,0x01B6,0x01B4
2615
        dw 0x01B2,0x01B0,0x01AE,0x01AC,0x01AA,0x01A8,0x01A6,0x01A4
2616
        dw 0x01A3,0x01A1,0x019F,0x019D,0x019B,0x0199,0x0198,0x0196
2617
        dw 0x0194,0x0192,0x0191,0x018F,0x018D,0x018C,0x018A,0x0188
2618
        dw 0x0187,0x0185,0x0183,0x0182,0x0180,0x017F,0x017D,0x017C
2619
        dw 0x017A,0x0179,0x0177,0x0176,0x0174,0x0173,0x0171,0x0170
36 savelij 2620
 
2621
;INCLUDE "_trash.a80"   ;comes from original ROM!
2622
;strange block, comes from original ROM.
2623
;real garbage;)
2624
 
181 savelij 2625
        DB 0x56,0x43,0x56,0x49,0x45,0x57,0x20,0x20,0x45,0x58,0x54,0x20,0x00,0x00,0x00,0x00
2626
        DB 0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0x08,0x43,0x21,0x28,0x09,0xDA,0x02,0x00,0x00
2627
        DB 0x00,0x43,0x56,0x49,0x45,0x57,0x20,0x20,0x45,0x58,0x54,0x20,0x00,0x00,0x00,0x00
2628
        DB 0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0x08,0x43,0x21,0x28,0x09,0xDA,0x02,0x00,0x00
36 savelij 2629
 
2630
Free1
2631
;---patched
2632
Patch11
2633
        LD H,(HL)
2634
        LD L,D
69 savelij 2635
        ADD HL,HL
2636
        ADD HL,HL
2637
        JR NC,$+3
2638
        INC D
36 savelij 2639
        LD A,(MODTP)
2640
        INC A
181 savelij 2641
        LD BC,0x0000+1084
36 savelij 2642
        JR Z,TTT15x
181 savelij 2643
        LD BC,0x0000+600
36 savelij 2644
TTT15x  ADD HL,BC
69 savelij 2645
        JR NC,$+3
2646
        INC D
36 savelij 2647
        XOR A
2648
        LD (CPAGE),A
2649
        OUT (MPAG),A
2650
        LD A,D
181 savelij 2651
        LD DE,0x5000
2652
        LD BC,0x400
36 savelij 2653
        CALL LDMEM
2654
        XOR A
181 savelij 2655
        OUT (0x00),A
36 savelij 2656
        RET
2657
 
181 savelij 2658
; new cmd 0x6A - Set player mode
36 savelij 2659
COM6A   LD A,(PlMode)   ;command
2660
        OUT (ZXDATWR),A
2661
        IN A,(ZXDATRD)
2662
        OUT (CLRCBIT),A
2663
        LD (PlMode),A
2664
        RET
2665
 
69 savelij 2666
Patch2x LD A,(PlMode)
2667
        OR A
2668
        RET NZ
36 savelij 2669
        LD HL,MTSTAT
2670
        SET 7,(HL)
2671
        RET
2672
 
2673
; last note speed
69 savelij 2674
Patch3  LD A,(MTSNGPS)
2675
                OR A
2676
                JR NZ,Patch3e   ;1st pattern
2677
        LD A,(MTPATPS)
2678
                OR A
2679
                JR NZ,Patch3e   ;1st row
36 savelij 2680
        LD A,6          ;init speed at start of MOD
2681
        LD (MTSPEED),A
2682
        LD HL,750
2683
        LD (TICKLEN),HL
2684
        LD (TCKLEFT),HL
2685
Patch3e LD IY,CHANS
2686
        JP EFXGTNT+4
2687
 
2688
; initial note
181 savelij 2689
Patch4  LD (IY+CHCNTL),0x00
2690
        LD (IY+CHREAL),0x7F
36 savelij 2691
        RET
2692
 
2693
;MOD relooper
181 savelij 2694
; new cmd 0x6B - Set minimal loop length (turn on relooper)
36 savelij 2695
 
69 savelij 2696
COM6B   IN A,(ZXDATRD)
2697
                LD L,A
36 savelij 2698
        OUT (CLRCBIT),A
69 savelij 2699
        IN A,(ZXSTAT)
181 savelij 2700
        AND 0x81
69 savelij 2701
        JR Z,$-4
36 savelij 2702
        JP P,Patch5s
69 savelij 2703
        IN A,(ZXDATRD)
2704
        LD H,A
36 savelij 2705
        LD DE,16385
69 savelij 2706
        OR A
2707
        SBC HL,DE
2708
        ADD HL,DE
36 savelij 2709
        JR C,Patch5s+3
181 savelij 2710
Patch5s LD HL,0x0200
36 savelij 2711
        LD (MODLLEN),HL
2712
        RET
2713
 
2714
;reconstruct MOD after load
112 savelij 2715
Patch5x CALL SET_SIZE_MOD               ;CALL PLAYMD            ;init MOD
36 savelij 2716
        LD HL,(MODLLEN)
69 savelij 2717
        LD A,H
2718
        OR L
2719
        RET Z   ;relooper off
2720
        LD A,(MODTP)
2721
        OR A
2722
        LD A,31
2723
        LD HL,1084
36 savelij 2724
        JR NZ,$+7
69 savelij 2725
        LD A,15
2726
        LD HL,600
2727
        LD (MODSMPS),A
2728
        LD (MODPTST),HL
36 savelij 2729
        CALL CHIP
2730
        JP PLAYMD               ;init MOD again
2731
 
2732
;INCLUDE "reloop.a80"
2733
 
2734
;-----(c)Evgeny Muchkin
2735
 
181 savelij 2736
;MODSMPS        equ 0x5000
2737
;MODPTST        equ 0x5001
2738
;ChipSP_        equ 0x5005
2739
;CHIP246 equ 0x5007
2740
;TOcip_ equ 0x5009
2741
;CHIPLN  equ 0x5010     ; 4  (pointer)
2742
;CHIPPP  equ 0x5013     ;  
2743
;CIP1    equ 0x5016     ;  
2744
;CIP2    equ 0x5019     ;  
2745
;CIP3    equ 0x501c     ;  
36 savelij 2746
 
2747
CHIP    DI
2748
        LD A,(RAMPG)
2749
        OUT (MPAG),A
2750
        LD DE,(MODPTST) ;patts data!
2751
        LD A,(PATTS)
2752
        LD L,A
2753
        LD H,B
2754
        ADD HL,HL
2755
        ADD HL,HL
2756
        LD A,H
2757
        LD H,L
2758
        LD L,B
2759
        ADD HL,DE
2760
        ADC A,B
2761
        LD (CHIPLN),HL
2762
        LD (CHIPLN+2),A
2763
        LD (ChipSP_),SP
2764
        LD HL,CHIPLN
2765
        LD DE,CHIPPP
2766
        PUSH DE
69 savelij 2767
        LDI
2768
        LDI
2769
        LDI
36 savelij 2770
        POP IY
2771
        LD A,(MODSMPS)
2772
        LD B,A          ;smps!
2773
        LD DE,30
181 savelij 2774
        LD IX,0x8014
36 savelij 2775
ChIp    LD H,(IX+22)    ;len
2776
        LD L,(IX+23)
2777
        CALL TOCip
2778
        ADD IX,DE
2779
        DJNZ ChIp
181 savelij 2780
        LD IX,0x802A
36 savelij 2781
        LD A,(MODSMPS)
2782
        LD B,A          ;smps!
2783
CHIP1   LD A,(RAMPG)
2784
        OUT (MPAG),A
2785
        LD H,(IX+6)     ;loop len
2786
        LD L,(IX+7)
2787
        LD (CHIP246),HL
2788
        LD A,(IX)       ;len
2789
        OR (IX+1)
2790
        JP Z,CHIP2      ;skip if no smp
2791
        LD DE,2
2792
        CALL CP_DDE
2793
        JP C,CHIP2      ;skip if loop len <2
2794
LUP_LEN LD DE,(MODLLEN)
2795
        CALL CP_DDE
2796
        JP NC,CHIP2     ;skip if loop len>=LUP_LEN
2797
        PUSH BC
69 savelij 2798
        LD B,H
2799
        LD C,L
36 savelij 2800
        EXX
2801
        LD BC,0         ;reloop counter
2802
CHIP3   EXX
2803
        ADD HL,BC
2804
        CALL CP_DDE
2805
        EXX
2806
        INC BC
2807
        JR C,CHIP3
2808
        PUSH BC
2809
        EXX
2810
;!!!!!!!!!!!!!!!!!!!!!!!!!!
2811
        PUSH HL         ;new loop len
2812
        LD B,(IX+6)     ;loop len
2813
        LD C,(IX+7)
2814
        AND A
2815
        SBC HL,BC
2816
        LD DE,CHIPPP
2817
        LD (TOcip_),DE
2818
        LD IY,CIP1
2819
        CALL TOCIP
2820
        LD DE,CHIPLN
2821
        LD (TOcip_),DE
2822
        LD B,3          ;check if free mem
2823
        LD DE,CIP1+2
2824
        LD HL,RAMTOP+2
2825
ChipLP  LD A,(DE)
2826
        CP (HL)
69 savelij 2827
        DEC HL
2828
        DEC DE
36 savelij 2829
        JR C,ChipOK
2830
        JP NZ,ChipSP
2831
        DJNZ ChipLP
2832
ChipOK  POP HL
2833
        EX DE,HL        ;DE=new loop len
2834
        LD H,(IX)       ;len
2835
        LD L,(IX+1)
2836
        LD B,(IX+6)     ;loop len
2837
        LD C,(IX+7)
2838
        AND A
2839
        SBC HL,BC
2840
        ADD HL,DE
2841
        LD (IX),H       ;new smp len
2842
        LD (IX+1),L
2843
        LD (IX+6),D     ;new loop len
2844
        LD (IX+7),E
2845
        LD IY,CIP1
2846
        LD H,(IX+4)     ;loop start
2847
        LD L,(IX+5)
69 savelij 2848
        PUSH HL
2849
        PUSH HL
2850
        PUSH HL
36 savelij 2851
        ADD HL,BC
2852
        CALL TOCIP
2853
        LD IY,CIP2
2854
        POP HL
2855
        ADD HL,DE
2856
        CALL TOCIP
2857
        LD HL,CHIPPP
2858
        LD DE,CIP3
69 savelij 2859
        LDI
2860
        LDI
2861
        LDI
36 savelij 2862
        CALL DIRER
2863
        LD IY,CIP1
2864
        POP HL
2865
        CALL TOCIP
2866
        POP HL
2867
CHIP4   LD DE,(CHIP246) ;orig loop len
2868
        ADD HL,DE
2869
        LD IY,CIP2
2870
        CALL TOCIP
2871
        LD HL,CIP2
2872
        LD DE,CIP3
69 savelij 2873
        LDI
2874
        LDI
2875
        LDI
36 savelij 2876
        POP BC
2877
CHIP5   PUSH BC
2878
        CALL DIRER
2879
CHIP6   LD HL,(CHIP246) ;orig loop len
2880
        LD IY,CIP2
2881
        CALL TOCip
2882
        POP BC
2883
        DEC BC
2884
        LD A,B
2885
        OR C
2886
        JR NZ,CHIP5
2887
        POP BC
2888
CHIP2   LD DE,(CHIP246) ;orig loop len
2889
        LD A,(RAMPG)
2890
        OUT (MPAG),A
2891
        LD H,(IX+6)     ;new loop len
2892
        LD L,(IX+7)
2893
        AND A
2894
        SBC HL,DE
2895
        LD IY,CHIPPP    ;corr mod len
2896
        CALL TOCip
2897
        LD H,(IX)
2898
        LD L,(IX+1)
2899
        LD IY,CHIPLN    ;add pointer
2900
        CALL TOCip
2901
        LD DE,30
2902
        ADD IX,DE
2903
        DEC B
2904
        JP NZ,CHIP1
2905
ChipSP  LD SP,(ChipSP_)
2906
        EI
2907
        RET
2908
 
2909
DIRER   LD IY,CIP1
2910
        LD L,(IY+3)
2911
        LD H,(IY+4)
2912
        LD B,(IY+5)
2913
        EXX
2914
        LD L,(IY)
2915
        LD H,(IY+1)
2916
        LD B,(IY+2)
2917
        LD E,(IY+6)
2918
        LD D,(IY+7)
2919
        LD C,(IY+8)
2920
        PUSH IX
2921
        CALL RESI10_
2922
        POP IX
2923
        RET
2924
 
69 savelij 2925
TOCIP   PUSH HL
2926
        PUSH DE
36 savelij 2927
        PUSH IY
2928
        POP DE
2929
TOcip   LD HL,(TOcip_)  ;CHIPLN
69 savelij 2930
        LDI
2931
        LDI
2932
        LDI
2933
        POP DE
2934
        POP HL
36 savelij 2935
TOCip   CALL ADD_IY
2936
ADD_IY  LD A,(IY)
2937
        ADD A,L
2938
        LD (IY),A
2939
        LD A,(IY+1)
2940
        ADC A,H
2941
        LD (IY+1),A
2942
        LD A,(IY+2)
2943
        ADC A,0
2944
        LD (IY+2),A
2945
        RET
2946
 
2947
CP_DDE  PUSH HL
2948
        AND A
2949
        SBC HL,DE
2950
        POP HL
2951
        RET
2952
 
2953
;RESID10 ; MOVE BLOCK IN GS
2954
;          BHL - FROM
2955
;          CDE - END
2956
;         'BHL - TO
2957
 
69 savelij 2958
RESI10_         SUB A
2959
                OUT (MPAG),A
2960
                LD (SYSTEM),A
2961
                LD A,B
2962
                PUSH HL
2963
                EXX
2964
                POP DE
2965
                PUSH HL
2966
                PUSH BC
2967
                LD C,A
2968
                OR A
2969
                SBC HL,DE
2970
                LD A,B
2971
                SBC A,C
2972
                EX DE,HL
2973
                POP BC
2974
                POP HL
2975
                LD C,A
2976
                OR E
2977
                OR D
2978
                RET Z
2979
                EXX
2980
                EX DE,HL
2981
                SBC HL,DE
2982
                LD A,C
2983
                SBC A,B
2984
                LD IXL,A
2985
                OR L
2986
                OR H
2987
                EXX
2988
                RET Z
2989
                PUSH DE
2990
                PUSH BC
2991
                BIT 7,C
2992
                EXX
2993
                JP NZ,MOVL
2994
                JP MOVH
36 savelij 2995
;-----
2996
 
2997
;store settings
69 savelij 2998
Patch5i1        LD A,(PlMode)
2999
                LD C,A
3000
                LD DE,(MODLLEN)
3001
                LD A,(ERRCODE)
3002
                RET
36 savelij 3003
 
3004
;restore settings
69 savelij 3005
Patch5i2        LD (ERRCODE),A
3006
                LD A,C
3007
                LD (PlMode),A
3008
                LD (MODLLEN),DE
3009
                RET
36 savelij 3010
 
3011
;clear vars after full reset!
69 savelij 3012
Patch5i3        XOR A
3013
                LD H,A
3014
                LD L,A
3015
                LD (PlMode),A
3016
                LD (MODLLEN),HL
3017
                JP INITVAR
36 savelij 3018
 
3019
CP_END_MOD
105 savelij 3020
 
36 savelij 3021
        ;LD HL,MTSNGPS
3022
        ;INC (HL)
3023
        ;CP (HL)
3024
        ;CALL C,STOPMOD
3025
        ;LD (MTSNGPS),A
3026
        ;RET
3027
 
3028
;       display $
3029
;---
3030
;emptyobl1
3031
 
181 savelij 3032
;       ORG GSRomBaseL+0x1D00
36 savelij 3033
 
3034
;       IN A,(ZXDATRD)
3035
;       OUT (CLRCBIT),A
181 savelij 3036
;       LD A,0x7F
36 savelij 3037
;       OUT (ZXDATWR),A
3038
;       JP COMINT_
3039
 
3040
;WDY    IN A,(ZXSTAT)
3041
;       RLA
3042
;       JR NC,$-3
3043
;       RET
3044
 
3045
;WDN    IN A,(ZXSTAT)
3046
;       RLA
3047
;       JR C,$-3
3048
;       RET
3049
 
181 savelij 3050
        ORG GSRomBaseL+0x2000
36 savelij 3051
;SGEN    
3052
;INCLUDE "SGEN_ASM.a80"
3053
;       MODULE SGEN
3054
;INCLUDE "SGEN.a80"
3055
 
3056
SGENTBE DW S0,S1,S2,S3,S4,S5,S6,S7,S8
3057
 
3058
SGENTBF DW SGEN1,SGEN2,SGEN3,SGEN4,SGEN5,SGEN6,SGEN7,SGEN8,SGEN9
3059
 
69 savelij 3060
        DUPL 12,0
36 savelij 3061
 
3062
SGEN    EXX
3063
        INC D
3064
        DEC D
3065
        JP Z,SGEN_
3066
        LD C,A
3067
        LD A,D
3068
        DEC A
181 savelij 3069
        CP 0x09
36 savelij 3070
        JP NC,SGEN__
3071
        ADD A,A
69 savelij 3072
        ADD A,LOW (SGENTBF)
36 savelij 3073
        LD L,A
69 savelij 3074
        LD H,HIGH (SGENTBF)
36 savelij 3075
        LD A,(HL)
3076
        INC L
3077
        LD H,(HL)
3078
        LD L,A
3079
        LD A,C
3080
        JP (HL)
3081
 
3082
SGEN1   EXX
3083
        ADD A,(HL)
3084
        RRA
3085
        LD (DE),A
3086
        INC E
3087
        EXX
3088
        JP SGEN_
3089
 
3090
SGEN2   EXX
3091
        SUB (HL)
3092
        EXX
69 savelij 3093
        LD H,HIGH (DIVTAB3)
36 savelij 3094
        JP NC,SGEN2_2
3095
        INC H
3096
SGEN2_2 LD L,A
3097
        LD A,(HL)
3098
        EXX
3099
        ADD A,(HL)
3100
        LD (DE),A
3101
        INC E
3102
        ADD A,(HL)
3103
        RRA
3104
        LD (DE),A
3105
        INC E
3106
        EXX
3107
        JP SGEN_
3108
 
3109
SGEN3   EXX
3110
        ADD A,(HL)
3111
        RRA
3112
        EXX
3113
        LD L,A
3114
        ADD A,C
3115
        RRA
3116
        EXX
3117
        LD (DE),A
3118
        INC E
3119
        EXX
3120
        LD A,L
3121
        EXX
3122
        LD (DE),A
3123
        INC E
3124
        ADD A,(HL)
3125
        RRA
3126
        LD (DE),A
3127
        INC E
3128
        EXX
3129
        JP SGEN_
3130
 
3131
SGEN4   EXX
3132
        ADD A,(HL)
3133
        RRA
3134
        EXX
3135
        LD L,A
3136
        ADD A,C
3137
        RRA
3138
        EXX
3139
        LD (DE),A
3140
        INC E
3141
        EXX
3142
        LD A,L
3143
        EXX
3144
        LD (DE),A
3145
        INC E
3146
        LD (DE),A
3147
        INC E
3148
        ADD A,(HL)
3149
        RRA
3150
        LD (DE),A
3151
        INC E
3152
        EXX
3153
        JP SGEN_
3154
 
3155
SGEN5   EXX
3156
        ADD A,(HL)
3157
        RRA
3158
        EXX
3159
        LD L,A
3160
        ADD A,C
3161
        RRA
3162
        EXX
3163
        LD (DE),A
3164
        INC E
3165
        LD (DE),A
3166
        INC E
3167
        EXX
3168
        LD A,L
3169
        EXX
3170
        LD (DE),A
3171
        INC E
3172
        ADD A,(HL)
3173
        RRA
3174
        LD (DE),A
3175
        INC E
3176
        LD (DE),A
3177
        INC E
3178
        EXX
3179
        JP SGEN_
3180
 
3181
SGEN6   EXX
3182
        ADD A,(HL)
3183
        RRA
3184
        EXX
3185
        LD L,A
3186
        ADD A,C
3187
        RRA
3188
        EXX
3189
        LD (DE),A
3190
        INC E
3191
        LD (DE),A
3192
        INC E
3193
        EXX
3194
        LD A,L
3195
        EXX
3196
        LD (DE),A
3197
        INC E
3198
        LD (DE),A
3199
        INC E
3200
        ADD A,(HL)
3201
        RRA
3202
        LD (DE),A
3203
        INC E
3204
        LD (DE),A
3205
        INC E
3206
        EXX
3207
        JP SGEN_
3208
 
3209
SGEN7   EXX
3210
        ADD A,(HL)
3211
        RRA
3212
        EXX
3213
        LD L,A
3214
        ADD A,C
3215
        RRA
3216
        LD H,A
3217
        ADD A,C
3218
        RRA
3219
        EXX
3220
        LD (DE),A
3221
        INC E
3222
        EXX
3223
        LD A,H
3224
        EXX
3225
        LD (DE),A
3226
        INC E
3227
        EXX
3228
        ADD A,L
3229
        RRA
3230
        EXX
3231
        LD (DE),A
3232
        INC E
3233
        EXX
3234
        LD A,L
3235
        EXX
3236
        LD (DE),A
3237
        INC E
3238
        ADD A,(HL)
3239
        RRA
3240
        EXX
3241
        LD H,A
3242
        ADD A,L
3243
        RRA
3244
        EXX
3245
        LD (DE),A
3246
        INC E
3247
        EXX
3248
        LD A,H
3249
        EXX
3250
        LD (DE),A
3251
        INC E
3252
        ADD A,(HL)
3253
        RRA
3254
        LD (DE),A
3255
        INC E
3256
        EXX
3257
        JP SGEN_
3258
 
3259
SGEN8   EXX
3260
        ADD A,(HL)
3261
        RRA
3262
        EXX
3263
        LD L,A
3264
        ADD A,C
3265
        RRA
3266
        LD H,A
3267
        ADD A,C
3268
        RRA
3269
        EXX
3270
        LD (DE),A
3271
        INC E
3272
        EXX
3273
        LD A,H
3274
        EXX
3275
        LD (DE),A
3276
        INC E
3277
        EXX
3278
        ADD A,L
3279
        RRA
3280
        EXX
3281
        LD (DE),A
3282
        INC E
3283
        EXX
3284
        LD A,L
3285
        EXX
3286
        LD (DE),A
3287
        INC E
3288
        LD (DE),A
3289
        INC E
3290
        ADD A,(HL)
3291
        RRA
3292
        EXX
3293
        LD H,A
3294
        ADD A,L
3295
        RRA
3296
        EXX
3297
        LD (DE),A
3298
        INC E
3299
        EXX
3300
        LD A,H
3301
        EXX
3302
        LD (DE),A
3303
        INC E
3304
        ADD A,(HL)
3305
        RRA
3306
        LD (DE),A
3307
        INC E
3308
        EXX
3309
        JP SGEN_
3310
 
3311
SGEN9   EXX
3312
        ADD A,(HL)
3313
        RRA
3314
        EXX
3315
        LD L,A
3316
        ADD A,C
3317
        RRA
3318
        LD H,A
3319
        ADD A,C
3320
        RRA
3321
        EXX
3322
        LD (DE),A
3323
        INC E
3324
        EXX
3325
        LD A,H
3326
        EXX
3327
        LD (DE),A
3328
        INC E
3329
        LD (DE),A
3330
        INC E
3331
        EXX
3332
        ADD A,L
3333
        RRA
3334
        EXX
3335
        LD (DE),A
3336
        INC E
3337
        EXX
3338
        LD A,L
3339
        EXX
3340
        LD (DE),A
3341
        INC E
3342
        ADD A,(HL)
3343
        RRA
3344
        EXX
3345
        LD H,A
3346
        ADD A,L
3347
        RRA
3348
        EXX
3349
        LD (DE),A
3350
        INC E
3351
        EXX
3352
        LD A,H
3353
        EXX
3354
        LD (DE),A
3355
        INC E
3356
        LD (DE),A
3357
        INC E
3358
        ADD A,(HL)
3359
        RRA
3360
        LD (DE),A
3361
        INC E
3362
        EXX
3363
        JP SGEN_
3364
 
3365
SGEN__  JP SGEN_
3366
 
3367
SGEN_   LD A,E
181 savelij 3368
        CP 0x09
36 savelij 3369
        JR NC,S9
3370
        ADD A,A
3371
        LD L,A
69 savelij 3372
        LD H,HIGH (SGENTBE)
36 savelij 3373
        LD A,(HL)
3374
        INC L
3375
        LD H,(HL)
3376
        LD L,A
3377
        JP (HL)
3378
 
3379
S9      EXX
181 savelij 3380
        LD C,0xFF
36 savelij 3381
        EXX
181 savelij 3382
        LD D,0x08
36 savelij 3383
        JP S8
3384
 
3385
S0      EXX
181 savelij 3386
        LD C,0x00
36 savelij 3387
        EXX
181 savelij 3388
        LD D,0x01
36 savelij 3389
        JP S1
3390
 
3391
S3      EXX
3392
        PUSH BC
3393
        EXX
3394
        POP HL
3395
        LD B,E
3396
        LD E,H
3397
        LD C,L
3398
        CALL S3_
69 savelij 3399
S_RET   LD IYL,E
36 savelij 3400
        LD E,D
69 savelij 3401
        LD D,IYL
36 savelij 3402
        PUSH DE
3403
        EXX
3404
        POP BC
3405
        RET
3406
 
3407
S4      EXX
3408
        PUSH BC
3409
        EXX
3410
        POP HL
3411
        LD B,E
3412
        LD E,H
3413
        LD C,L
3414
        CALL S4_
3415
        JP S_RET
3416
 
3417
S5      EXX
3418
        PUSH BC
3419
        EXX
3420
        POP HL
3421
        LD B,E
3422
        LD E,H
3423
        LD C,L
3424
        CALL S5_
3425
        JP S_RET
3426
 
3427
S6      EXX
3428
        PUSH BC
3429
        EXX
3430
        POP HL
3431
        LD B,E
3432
        LD E,H
3433
        LD C,L
3434
        CALL S6_
3435
        JP S_RET
3436
 
3437
S7      EXX
3438
        PUSH BC
3439
        EXX
3440
        POP HL
3441
        LD B,E
3442
        LD E,H
3443
        LD C,L
3444
        CALL S7_
3445
        JP S_RET
3446
 
3447
S8      EXX
3448
        PUSH BC
3449
        EXX
3450
        POP HL
3451
        LD B,E
3452
        LD E,H
3453
        LD C,L
3454
        CALL S8_
3455
        JP S_RET
3456
 
3457
;INCLUDE "SGEN1_L.a80"
3458
S1      EXX
3459
        SLA C
3460
        JR C,S1_6
69 savelij 3461
        LD A,IXL
36 savelij 3462
        INC A
3463
        JR Z,S1_2
3464
        DEC A
3465
        ADD A,E
3466
        JR Z,S1_4
3467
        JR C,S1_2
3468
        BIT 7,C
3469
        JR Z,S1_4
69 savelij 3470
        LD IYL,A
3471
        LD A,IXL
36 savelij 3472
        SRL A
3473
        SRL A
69 savelij 3474
        ADD A,IYL
36 savelij 3475
        JR Z,S1_4
3476
        JR NC,S1_4
181 savelij 3477
S1_2    DB 0xCB,0x30;SLI B
36 savelij 3478
        JR NC,S1_3
3479
        LD A,E
181 savelij 3480
        AND 0x03
36 savelij 3481
        JP Z,S11L0_1
3482
        DEC A
3483
        JP Z,S11L1_1
3484
        DEC A
3485
        JP Z,S11L2_1
3486
        JP S11L3
3487
S1_3    LD A,E
181 savelij 3488
        AND 0x03
36 savelij 3489
        JP Z,S11H0_1
3490
        DEC A
3491
        JP Z,S11H1_1
3492
        DEC A
3493
        JP Z,S11H2_1
3494
        JP S11H3
181 savelij 3495
S1_4    DB 0xCB,0x30;SLI B
36 savelij 3496
        JR NC,S1_5
3497
        LD A,E
181 savelij 3498
        AND 0x03
36 savelij 3499
        JP Z,S12L0_1
3500
        DEC A
3501
        JP Z,S12L1_1
3502
        DEC A
3503
        JP Z,S12L2_1
3504
        JP S12L3
3505
S1_5    LD A,E
181 savelij 3506
        AND 0x03
36 savelij 3507
        JP Z,S12H0_1
3508
        DEC A
3509
        JP Z,S12H1_1
3510
        DEC A
3511
        JP Z,S12H2_1
3512
        JP S12H3
3513
 
69 savelij 3514
S1_6    LD A,IXL
36 savelij 3515
        INC A
3516
        JR Z,S1_7
3517
        DEC A
3518
        SRL A
69 savelij 3519
        ADD A,IXL
36 savelij 3520
        JR Z,S1_9
3521
        JR C,S1_7
3522
        ADD A,E
3523
        JR C,S1_7
3524
        BIT 7,C
3525
        JR Z,S1_9
69 savelij 3526
        LD IYL,A
3527
        LD A,IXL
36 savelij 3528
        SRL A
3529
        SRL A
69 savelij 3530
        ADD A,IYL
36 savelij 3531
        JR Z,S1_9
3532
        JR NC,S1_9
181 savelij 3533
S1_7    DB 0xCB,0x30;SLI B
36 savelij 3534
        JR C,S1_8
3535
        LD A,E
181 savelij 3536
        AND 0x03
36 savelij 3537
        JP Z,S13L0
3538
        DEC A
3539
        JP Z,S13L1
3540
        DEC A
3541
        JP Z,S13L2
3542
        JP S13L3
3543
S1_8    LD A,E
181 savelij 3544
        AND 0x03
36 savelij 3545
        JP Z,S13H0
3546
        DEC A
3547
        JP Z,S13H1
3548
        DEC A
3549
        JP Z,S13H2
3550
        JP S13H3
181 savelij 3551
S1_9    DB 0xCB,0x30;SLI B
36 savelij 3552
        JR C,S1_A
3553
        LD A,E
181 savelij 3554
        AND 0x03
36 savelij 3555
        JP Z,S14L0
3556
        DEC A
3557
        JP Z,S14L1
3558
        DEC A
3559
        JP Z,S14L2
3560
        JP S14L3
3561
S1_A    LD A,E
181 savelij 3562
        AND 0x03
36 savelij 3563
        JP Z,S14H0
3564
        DEC A
3565
        JP Z,S14H1
3566
        DEC A
3567
        JP Z,S14H2
3568
        JP S14H3
3569
 
3570
S11M0   LD B,A
3571
        DEC HL
3572
        LD A,(HL)
3573
        INC HL
3574
        ADD A,(HL)
3575
        RRA
3576
        LD (DE),A
3577
        INC E
3578
        LDI
3579
        INC C
3580
S11L2_1 LD A,B
3581
S11L2_2 LDI
3582
        INC C
3583
        ADD A,C
3584
        LD B,A
3585
        JP NC,S11L3
3586
        ADD A,C
3587
        JP C,S11M3
3588
S11G3   LD B,A
3589
        DEC HL
3590
        LD A,(HL)
3591
        INC HL
3592
        ADD A,(HL)
3593
        RRA
3594
        LD (DE),A
3595
        INC E
3596
        JR Z,S11R1
3597
        LDI
3598
        INC C
3599
S11H1_1 LD A,B
3600
S11H1_2 LDI
3601
        INC C
3602
        ADD A,C
3603
        JP NC,S11H2_2
3604
        LDI
3605
        INC C
3606
        ADD A,C
3607
        LD B,A
3608
        JP NC,S11L3
3609
        ADD A,C
3610
        JP C,S11M3
3611
        JP S11G3
3612
 
69 savelij 3613
S11R1   LD IYL,A
36 savelij 3614
        LD A,B
3615
        SUB C
3616
        LD B,A
3617
        SRL B
181 savelij 3618
        LD C,0x00
69 savelij 3619
        LD A,IYL
36 savelij 3620
        RET
3621
 
3622
S11M1   LD B,A
3623
        DEC HL
3624
        LD A,(HL)
3625
        INC HL
3626
        ADD A,(HL)
3627
        RRA
3628
        LD (DE),A
3629
        INC E
3630
        LDI
3631
        INC C
3632
S11L3   LD A,(HL)
3633
        INC HL
3634
        LD (DE),A
3635
        INC E
3636
        JR Z,S11R2
3637
        LD A,B
3638
        ADD A,C
3639
        JP NC,S11L0_2
3640
        ADD A,C
3641
        JR C,S11M0
3642
S11G0   LD B,A
3643
        DEC HL
3644
        LD A,(HL)
3645
        INC HL
3646
        ADD A,(HL)
3647
        RRA
3648
        LD (DE),A
3649
        INC E
3650
        LDI
3651
        INC C
3652
S11H2_1 LD A,B
3653
S11H2_2 LDI
3654
        INC C
3655
        ADD A,C
3656
        LD B,A
3657
        JP NC,S11H3
3658
        LD A,(HL)
3659
        INC HL
3660
        LD (DE),A
3661
        INC E
3662
        JR Z,S11R2
3663
        LD A,B
3664
        ADD A,C
3665
        JP NC,S11L0_2
3666
        ADD A,C
3667
        JP C,S11M0
3668
        JP S11G0
3669
 
69 savelij 3670
S11R2   LD IYL,A
36 savelij 3671
        LD A,B
3672
        ADD A,C
3673
        LD B,A
3674
        JR NC,S11R2_2
181 savelij 3675
        LD C,0x01
36 savelij 3676
        SRL B
69 savelij 3677
        LD A,IYL
36 savelij 3678
        RET
181 savelij 3679
S11R2_2 LD C,0x00
36 savelij 3680
        RRC B
69 savelij 3681
        LD A,IYL
36 savelij 3682
        RET
3683
 
3684
S11M2   LD B,A
3685
        DEC HL
3686
        LD A,(HL)
3687
        INC HL
3688
        ADD A,(HL)
3689
        RRA
3690
        LD (DE),A
3691
        INC E
3692
        LD A,(HL)
3693
        INC HL
3694
        LD (DE),A
3695
        INC E
3696
        JR Z,S11R3
3697
S11L0_1 LD A,B
3698
S11L0_2 LDI
3699
        INC C
3700
        ADD A,C
3701
        JP NC,S11L1_2
3702
        ADD A,C
3703
        JR C,S11M1
3704
S11G1   LD B,A
3705
        DEC HL
3706
        LD A,(HL)
3707
        INC HL
3708
        ADD A,(HL)
3709
        RRA
3710
        LD (DE),A
3711
        INC E
3712
        LDI
3713
        INC C
3714
S11H3   LD A,(HL)
3715
        INC HL
3716
        LD (DE),A
3717
        INC E
3718
        JR Z,S11R4
3719
        LD A,B
3720
        ADD A,C
3721
        JP NC,S11H0_2
3722
        LDI
3723
        INC C
3724
        ADD A,C
3725
        JP NC,S11L1_2
3726
        ADD A,C
3727
        JP C,S11M1
3728
        JP S11G1
3729
 
181 savelij 3730
S11R3   LD C,0x00
36 savelij 3731
        RRC B
3732
        RET
3733
 
69 savelij 3734
S11R4   LD IYL,A
36 savelij 3735
        LD A,B
3736
        ADD A,C
3737
        LD B,A
3738
        JR NC,S11R4_2
181 savelij 3739
        LD C,0x00
36 savelij 3740
        RRC B
69 savelij 3741
        LD A,IYL
36 savelij 3742
        RET
181 savelij 3743
S11R4_2 LD C,0x00
36 savelij 3744
        SRL B
69 savelij 3745
        LD A,IYL
36 savelij 3746
        RET
3747
 
69 savelij 3748
S11R5   LD IYL,A
36 savelij 3749
        LD A,B
3750
        SUB C
3751
        LD B,A
181 savelij 3752
        LD C,0x00
36 savelij 3753
        SRL B
69 savelij 3754
        LD A,IYL
36 savelij 3755
        RET
3756
 
3757
S11M3   LD B,A
3758
        DEC HL
3759
        LD A,(HL)
3760
        INC HL
3761
        ADD A,(HL)
3762
        RRA
3763
        LD (DE),A
3764
        INC E
3765
        JR Z,S11R5
3766
        LDI
3767
        INC C
3768
S11L1_1 LD A,B
3769
S11L1_2 LDI
3770
        INC C
3771
        ADD A,C
3772
        JP NC,S11L2_2
3773
        ADD A,C
3774
        JR C,S11M2
3775
S11G2   LD B,A
3776
        DEC HL
3777
        LD A,(HL)
3778
        INC HL
3779
        ADD A,(HL)
3780
        RRA
3781
        LD (DE),A
3782
        INC E
3783
        LD A,(HL)
3784
        INC HL
3785
        LD (DE),A
3786
        INC E
3787
        JR Z,S11R6
3788
S11H0_1 LD A,B
3789
S11H0_2 LDI
3790
        INC C
3791
        ADD A,C
3792
        JP NC,S11H1_2
3793
        LDI
3794
        INC C
3795
        ADD A,C
3796
        JP NC,S11L2_2
3797
        ADD A,C
3798
        JP C,S11M2
3799
        JP S11G2
3800
 
181 savelij 3801
S11R6   LD C,0x00
36 savelij 3802
        SRL B
3803
        RET
3804
 
3805
S12M0   LD B,A
3806
        DEC HL
3807
        LD A,(HL)
3808
        INC HL
3809
        ADD A,(HL)
3810
        RRA
3811
        LD (DE),A
3812
        INC E
3813
        LDI
3814
        INC C
69 savelij 3815
        DEC IXL
36 savelij 3816
        JR Z,S12R3_3
3817
S12L2_1 LD A,B
3818
S12L2_2 LDI
3819
        INC C
69 savelij 3820
        DEC IXL
36 savelij 3821
        JR Z,S12R2_5
3822
        ADD A,C
3823
        LD B,A
3824
        JP NC,S12L3
3825
        ADD A,C
3826
        JP C,S12M3
3827
S12G3   LD B,A
3828
        DEC HL
3829
        LD A,(HL)
3830
        INC HL
3831
        ADD A,(HL)
3832
        RRA
3833
        LD (DE),A
3834
        INC E
3835
        JR Z,S12R1
3836
        LDI
3837
        INC C
69 savelij 3838
        DEC IXL
36 savelij 3839
        JR Z,S12R6_3
3840
S12H1_1 LD A,B
3841
S12H1_2 LDI
3842
        INC C
69 savelij 3843
        DEC IXL
36 savelij 3844
        JR Z,S12R4_4
3845
        ADD A,C
3846
        JP NC,S12H2_2
3847
        LDI
3848
        INC C
69 savelij 3849
        DEC IXL
36 savelij 3850
        JR Z,S12R2_5
3851
        ADD A,C
3852
        LD B,A
3853
        JP NC,S12L3
3854
        ADD A,C
3855
        JP C,S12M3
3856
        JP S12G3
3857
 
3858
S12R2_5 JR S12R2_3
3859
S12R6_3 JP S12R6_2
3860
 
69 savelij 3861
S12R1   LD IYL,A
36 savelij 3862
        LD A,B
3863
        SUB C
3864
        LD B,A
3865
        SRL B
181 savelij 3866
        LD C,0x00
69 savelij 3867
        LD A,IYL
36 savelij 3868
        RET
3869
 
3870
S12R3_3 DEC HL
3871
        LD A,(HL)
3872
        INC HL
181 savelij 3873
        LD C,0x00
36 savelij 3874
        RRC B
3875
        RET
3876
 
3877
S12R4_4 JP S12R4_3
3878
 
3879
S12M1   LD B,A
3880
        DEC HL
3881
        LD A,(HL)
3882
        INC HL
3883
        ADD A,(HL)
3884
        RRA
3885
        LD (DE),A
3886
        INC E
3887
        LDI
3888
        INC C
69 savelij 3889
        DEC IXL
36 savelij 3890
        JR Z,S12R3_3
3891
S12L3   LD A,(HL)
3892
        INC HL
3893
        LD (DE),A
3894
        INC E
3895
        JR Z,S12R2
69 savelij 3896
        DEC IXL
36 savelij 3897
        JR Z,S12R2
3898
        LD A,B
3899
        ADD A,C
3900
        JP NC,S12L0_2
3901
        ADD A,C
3902
        JP C,S12M0
3903
S12G0   LD B,A
3904
        DEC HL
3905
        LD A,(HL)
3906
        INC HL
3907
        ADD A,(HL)
3908
        RRA
3909
        LD (DE),A
3910
        INC E
3911
        LDI
3912
        INC C
69 savelij 3913
        DEC IXL
36 savelij 3914
        JR Z,S12R6_3
3915
S12H2_1 LD A,B
3916
S12H2_2 LDI
3917
        INC C
69 savelij 3918
        DEC IXL
36 savelij 3919
        JR Z,S12R4_4
3920
        ADD A,C
3921
        LD B,A
3922
        JP NC,S12H3
3923
        LD A,(HL)
3924
        INC HL
3925
        LD (DE),A
3926
        INC E
3927
        JR Z,S12R2
69 savelij 3928
        DEC IXL
36 savelij 3929
        JR Z,S12R2
3930
        LD A,B
3931
        ADD A,C
3932
        JP NC,S12L0_2
3933
        ADD A,C
3934
        JP C,S12M0
3935
        JP S12G0
3936
 
3937
S12R2_3 DEC HL
3938
        LD A,(HL)
3939
        INC HL
69 savelij 3940
S12R2   LD IYL,A
36 savelij 3941
        LD A,B
3942
        ADD A,C
3943
        LD B,A
3944
        JR NC,S12R2_2
181 savelij 3945
        LD C,0x01
36 savelij 3946
        SRL B
69 savelij 3947
        LD A,IYL
36 savelij 3948
        RET
181 savelij 3949
S12R2_2 LD C,0x00
36 savelij 3950
        RRC B
69 savelij 3951
        LD A,IYL
36 savelij 3952
        RET
3953
 
3954
S12M2   LD B,A
3955
        DEC HL
3956
        LD A,(HL)
3957
        INC HL
3958
        ADD A,(HL)
3959
        RRA
3960
        LD (DE),A
3961
        INC E
3962
        LD A,(HL)
3963
        INC HL
3964
        LD (DE),A
3965
        INC E
3966
        JR Z,S12R3
69 savelij 3967
        DEC IXL
36 savelij 3968
        JR Z,S12R3
3969
S12L0_1 LD A,B
3970
S12L0_2 LDI
3971
        INC C
69 savelij 3972
        DEC IXL
36 savelij 3973
        JR Z,S12R2_3
3974
        ADD A,C
3975
        JP NC,S12L1_2
3976
        ADD A,C
3977
        JP C,S12M1
3978
S12G1   LD B,A
3979
        DEC HL
3980
        LD A,(HL)
3981
        INC HL
3982
        ADD A,(HL)
3983
        RRA
3984
        LD (DE),A
3985
        INC E
3986
        LDI
3987
        INC C
69 savelij 3988
        DEC IXL
36 savelij 3989
        JR Z,S12R6_5
3990
S12H3   LD A,(HL)
3991
        INC HL
3992
        LD (DE),A
3993
        INC E
3994
        JR Z,S12R4
69 savelij 3995
        DEC IXL
36 savelij 3996
        JR Z,S12R4
3997
        LD A,B
3998
        ADD A,C
3999
        JP NC,S12H0_2
4000
        LDI
4001
        INC C
69 savelij 4002
        DEC IXL
36 savelij 4003
        JR Z,S12R2_3
4004
        ADD A,C
4005
        JP NC,S12L1_2
4006
        ADD A,C
4007
        JP C,S12M1
4008
        JP S12G1
4009
 
4010
S12R6_5 JP S12R6_2
4011
 
4012
S12R3_2 DEC HL
4013
        LD A,(HL)
4014
        INC HL
181 savelij 4015
S12R3   LD C,0x00
36 savelij 4016
        RRC B
4017
        RET
4018
 
4019
S12R4_3 DEC HL
4020
        LD A,(HL)
4021
        INC HL
69 savelij 4022
S12R4   LD IYL,A
36 savelij 4023
        LD A,B
4024
        ADD A,C
4025
        LD B,A
4026
        JR NC,S12R4_2
181 savelij 4027
        LD C,0x00
36 savelij 4028
        RRC B
69 savelij 4029
        LD A,IYL
36 savelij 4030
        RET
181 savelij 4031
S12R4_2 LD C,0x00
36 savelij 4032
        SRL B
69 savelij 4033
        LD A,IYL
36 savelij 4034
        RET
4035
 
69 savelij 4036
S12R5   LD IYL,A
36 savelij 4037
        LD A,B
4038
        SUB C
4039
        LD B,A
181 savelij 4040
        LD C,0x00
36 savelij 4041
        SRL B
69 savelij 4042
        LD A,IYL
36 savelij 4043
        RET
4044
 
4045
S12M3   LD B,A
4046
        DEC HL
4047
        LD A,(HL)
4048
        INC HL
4049
        ADD A,(HL)
4050
        RRA
4051
        LD (DE),A
4052
        INC E
4053
        JR Z,S12R5
4054
        LDI
4055
        INC C
69 savelij 4056
        DEC IXL
36 savelij 4057
        JR Z,S12R3_2
4058
S12L1_1 LD A,B
4059
S12L1_2 LDI
4060
        INC C
69 savelij 4061
        DEC IXL
36 savelij 4062
        JR Z,S12R2_4
4063
        ADD A,C
4064
        JP NC,S12L2_2
4065
        ADD A,C
4066
        JP C,S12M2
4067
S12G2   LD B,A
4068
        DEC HL
4069
        LD A,(HL)
4070
        INC HL
4071
        ADD A,(HL)
4072
        RRA
4073
        LD (DE),A
4074
        INC E
4075
        LD A,(HL)
4076
        INC HL
4077
        LD (DE),A
4078
        INC E
4079
        JR Z,S12R6
69 savelij 4080
        DEC IXL
36 savelij 4081
        JR Z,S12R6
4082
S12H0_1 LD A,B
4083
S12H0_2 LDI
4084
        INC C
69 savelij 4085
        DEC IXL
36 savelij 4086
        JR Z,S12R4_3
4087
        ADD A,C
4088
        JP NC,S12H1_2
4089
        LDI
4090
        INC C
69 savelij 4091
        DEC IXL
36 savelij 4092
        JR Z,S12R2_4
4093
        ADD A,C
4094
        JP NC,S12L2_2
4095
        ADD A,C
4096
        JP C,S12M2
4097
        JP S12G2
4098
 
4099
S12R6_2 DEC HL
4100
        LD A,(HL)
4101
        INC HL
181 savelij 4102
S12R6   LD C,0x00
36 savelij 4103
        SRL B
4104
        RET
4105
 
4106
S12R2_4 JP S12R2_3
4107
 
4108
S13R1   JR NC,S13R1_2
4109
        SRL B
181 savelij 4110
        LD C,0x01
36 savelij 4111
        RET
4112
S13R1_2 RRC B
181 savelij 4113
        LD C,0x00
36 savelij 4114
        RET
4115
S13R2   SRL B
181 savelij 4116
        LD C,0x00
36 savelij 4117
        RET
4118
 
4119
S13J0   ADD A,(HL)
4120
        RRA
4121
        LD (DE),A
4122
        INC E
4123
S13H1   LD A,B
4124
        ADD A,C
4125
        LD B,A
4126
        LD A,(HL)
4127
        INC HL
4128
        LD (DE),A
4129
        INC E
4130
        JP C,S13J2
4131
S13K2   ADD A,(HL)
4132
        RRA
4133
        LD (DE),A
4134
        INC E
4135
S13L3   LD A,B
4136
        ADD A,C
4137
        LD B,A
4138
        LD A,(HL)
4139
        INC HL
4140
        LD (DE),A
4141
        INC E
4142
        JR Z,S13R1
4143
        JP C,S13K0
4144
        LD A,B
4145
        ADD A,C
4146
        LD B,A
4147
        LD A,(HL)
4148
        INC HL
4149
        LD (DE),A
4150
        INC E
4151
        JP NC,S13K1
4152
S13J1   ADD A,(HL)
4153
        RRA
4154
        LD (DE),A
4155
        INC E
4156
S13H2   LD A,B
4157
        ADD A,C
4158
        LD B,A
4159
        LD A,(HL)
4160
        INC HL
4161
        LD (DE),A
4162
        INC E
4163
        JP C,S13J3
4164
S13K3   ADD A,(HL)
4165
        RRA
4166
        LD (DE),A
4167
        INC E
4168
        JR Z,S13R2
4169
S13L0   LD A,B
4170
        ADD A,C
4171
        LD B,A
4172
        LD A,(HL)
4173
        INC HL
4174
        LD (DE),A
4175
        INC E
4176
        JP C,S13K1
4177
        LD A,B
4178
        ADD A,C
4179
        LD B,A
4180
        LD A,(HL)
4181
        INC HL
4182
        LD (DE),A
4183
        INC E
4184
        JP NC,S13K2
4185
S13J2   ADD A,(HL)
4186
        RRA
4187
        LD (DE),A
4188
        INC E
4189
S13H3   LD A,B
4190
        ADD A,C
4191
        LD B,A
4192
        LD A,(HL)
4193
        INC HL
4194
        LD (DE),A
4195
        INC E
4196
        JR Z,S13R3
4197
        JP C,S13J0
4198
S13K0   ADD A,(HL)
4199
        RRA
4200
        LD (DE),A
4201
        INC E
4202
S13L1   LD A,B
4203
        ADD A,C
4204
        LD B,A
4205
        LD A,(HL)
4206
        INC HL
4207
        LD (DE),A
4208
        INC E
4209
        JP C,S13K2
4210
        LD A,B
4211
        ADD A,C
4212
        LD B,A
4213
        LD A,(HL)
4214
        INC HL
4215
        LD (DE),A
4216
        INC E
4217
        JP NC,S13K3
4218
S13J3   ADD A,(HL)
4219
        RRA
4220
        LD (DE),A
4221
        INC E
4222
        JR Z,S13R4
4223
S13H0   LD A,B
4224
        ADD A,C
4225
        LD B,A
4226
        LD A,(HL)
4227
        INC HL
4228
        LD (DE),A
4229
        INC E
4230
        JP C,S13J1
4231
S13K1   ADD A,(HL)
4232
        RRA
4233
        LD (DE),A
4234
        INC E
4235
S13L2   LD A,B
4236
        ADD A,C
4237
        LD B,A
4238
        LD A,(HL)
4239
        INC HL
4240
        LD (DE),A
4241
        INC E
4242
        JP C,S13K3
4243
        LD A,B
4244
        ADD A,C
4245
        LD B,A
4246
        LD A,(HL)
4247
        INC HL
4248
        LD (DE),A
4249
        INC E
4250
        JR Z,S13R5
4251
        JP NC,S13K0
4252
        JP S13J0
4253
 
181 savelij 4254
S13R3   LD C,0x01
36 savelij 4255
        JR NC,S13R3_2
4256
        RRC B
4257
        RET
4258
 
4259
S13R3_2 SRL B
4260
        RET
4261
 
4262
S13R4   RRC B
181 savelij 4263
        LD C,0x00
36 savelij 4264
        RET
4265
 
181 savelij 4266
S13R5   LD C,0x01
36 savelij 4267
        JR NC,S13R5_2
4268
        RRC B
4269
        RET
4270
 
4271
S13R5_2 SRL B
4272
        RET
4273
 
4274
S14R5_3 JP S14R5
4275
 
4276
S14R1   JR NC,S14R1_2
4277
        SRL B
181 savelij 4278
        LD C,0x01
36 savelij 4279
        RET
4280
 
4281
S14R1_2 RRC B
181 savelij 4282
        LD C,0x00
36 savelij 4283
        RET
4284
 
4285
S14R2   SRL B
181 savelij 4286
        LD C,0x00
36 savelij 4287
        RET
4288
 
4289
S14J0   ADD A,(HL)
4290
        RRA
4291
        LD (DE),A
4292
        INC E
4293
S14H1   LD A,B
4294
        ADD A,C
4295
        LD B,A
4296
        LD A,(HL)
4297
        INC HL
4298
        LD (DE),A
4299
        INC E
69 savelij 4300
        DEC IXL
36 savelij 4301
        JR Z,S14R5_3
4302
        JP C,S14J2
4303
S14K2   ADD A,(HL)
4304
        RRA
4305
        LD (DE),A
4306
        INC E
4307
S14L3   LD A,B
4308
        ADD A,C
4309
        LD B,A
4310
        LD A,(HL)
4311
        INC HL
4312
        LD (DE),A
4313
        INC E
4314
        JR Z,S14R1
69 savelij 4315
        DEC IXL
36 savelij 4316
        JR Z,S14R1
4317
        JP C,S14K0
4318
        LD A,B
4319
        ADD A,C
4320
        LD B,A
4321
        LD A,(HL)
4322
        INC HL
4323
        LD (DE),A
4324
        INC E
69 savelij 4325
        DEC IXL
36 savelij 4326
        JR Z,S14R5_3
4327
        JP NC,S14K1
4328
S14J1   ADD A,(HL)
4329
        RRA
4330
        LD (DE),A
4331
        INC E
4332
S14H2   LD A,B
4333
        ADD A,C
4334
        LD B,A
4335
        LD A,(HL)
4336
        INC HL
4337
        LD (DE),A
4338
        INC E
69 savelij 4339
        DEC IXL
36 savelij 4340
        JR Z,S14R5_3
4341
        JP C,S14J3
4342
S14K3   ADD A,(HL)
4343
        RRA
4344
        LD (DE),A
4345
        INC E
4346
        JR Z,S14R2
4347
S14L0   LD A,B
4348
        ADD A,C
4349
        LD B,A
4350
        LD A,(HL)
4351
        INC HL
4352
        LD (DE),A
4353
        INC E
69 savelij 4354
        DEC IXL
36 savelij 4355
        JR Z,S14R1
4356
        JP C,S14K1
4357
        LD A,B
4358
        ADD A,C
4359
        LD B,A
4360
        LD A,(HL)
4361
        INC HL
4362
        LD (DE),A
4363
        INC E
69 savelij 4364
        DEC IXL
36 savelij 4365
        JR Z,S14R5
4366
        JP NC,S14K2
4367
S14J2   ADD A,(HL)
4368
        RRA
4369
        LD (DE),A
4370
        INC E
4371
S14H3   LD A,B
4372
        ADD A,C
4373
        LD B,A
4374
        LD A,(HL)
4375
        INC HL
4376
        LD (DE),A
4377
        INC E
4378
        JR Z,S14R5
69 savelij 4379
        DEC IXL
36 savelij 4380
        JR Z,S14R5
4381
        JP C,S14J0
4382
S14K0   ADD A,(HL)
4383
        RRA
4384
        LD (DE),A
4385
        INC E
4386
S14L1   LD A,B
4387
        ADD A,C
4388
        LD B,A
4389
        LD A,(HL)
4390
        INC HL
4391
        LD (DE),A
4392
        INC E
69 savelij 4393
        DEC IXL
36 savelij 4394
        JR Z,S14R1_3
4395
        JP C,S14K2
4396
        LD A,B
4397
        ADD A,C
4398
        LD B,A
4399
        LD A,(HL)
4400
        INC HL
4401
        LD (DE),A
4402
        INC E
69 savelij 4403
        DEC IXL
36 savelij 4404
        JR Z,S14R5
4405
        JP NC,S14K3
4406
S14J3   ADD A,(HL)
4407
        RRA
4408
        LD (DE),A
4409
        INC E
4410
        JR Z,S14R4
4411
S14H0   LD A,B
4412
        ADD A,C
4413
        LD B,A
4414
        LD A,(HL)
4415
        INC HL
4416
        LD (DE),A
4417
        INC E
69 savelij 4418
        DEC IXL
36 savelij 4419
        JR Z,S14R5
4420
        JP C,S14J1
4421
S14K1   ADD A,(HL)
4422
        RRA
4423
        LD (DE),A
4424
        INC E
4425
S14L2   LD A,B
4426
        ADD A,C
4427
        LD B,A
4428
        LD A,(HL)
4429
        INC HL
4430
        LD (DE),A
4431
        INC E
69 savelij 4432
        DEC IXL
36 savelij 4433
        JR Z,S14R1_3
4434
        JP C,S14K3
4435
        LD A,B
4436
        ADD A,C
4437
        LD B,A
4438
        LD A,(HL)
4439
        INC HL
4440
        LD (DE),A
4441
        INC E
4442
        JR Z,S14R5
69 savelij 4443
        DEC IXL
36 savelij 4444
        JR Z,S14R5
4445
        JP NC,S14K0
4446
        JP S14J0
4447
 
181 savelij 4448
S14R5   LD C,0x01
36 savelij 4449
        JR NC,S14R5_2
4450
        RRC B
4451
        RET
4452
 
4453
S14R5_2 SRL B
4454
        RET
4455
 
4456
S14R4   RRC B
181 savelij 4457
        LD C,0x00
36 savelij 4458
        RET
4459
 
4460
S14R1_3 JP S14R1
4461
 
4462
;INCLUDE "SGEN2_L.a80"
69 savelij 4463
S2      LD H,HIGH (DIVTAB3)
36 savelij 4464
        LD D,H
4465
        INC D
4466
        EXX
4467
        SLA C
4468
        JR C,S2_6
69 savelij 4469
        LD A,IXL
36 savelij 4470
        ADD A,A
4471
        JR C,S2_2
4472
        ADD A,E
4473
        JR Z,S2_4
4474
        JR C,S2_2
4475
        BIT 7,C
4476
        JR Z,S2_4
69 savelij 4477
        LD IYL,A
4478
        LD A,IXL
36 savelij 4479
        SRL A
4480
        SRL A
69 savelij 4481
        ADD A,IYL
36 savelij 4482
        JR Z,S2_4
4483
        JR NC,S2_4
181 savelij 4484
S2_2    DB 0xCB,0x30;SLI B
36 savelij 4485
        JR NC,S2_3
4486
        LD A,E
181 savelij 4487
        AND 0x03
36 savelij 4488
        JP Z,S21L0
4489
        DEC A
4490
        JP Z,S21L1
4491
        DEC A
4492
        JP Z,S21L2
4493
        JP S21L3
4494
S2_3    LD A,E
181 savelij 4495
        AND 0x03
36 savelij 4496
        JP Z,S21H0
4497
        DEC A
4498
        JP Z,S21H1
4499
        DEC A
4500
        JP Z,S21H2
4501
        JP S21H3
181 savelij 4502
S2_4    DB 0xCB,0x30;SLI B
36 savelij 4503
        JR NC,S2_5
4504
        LD A,E
181 savelij 4505
        AND 0x03
36 savelij 4506
        JP Z,S22L0
4507
        DEC A
4508
        JP Z,S22L1
4509
        DEC A
4510
        JP Z,S22L2
4511
        JP S22L3
4512
S2_5    LD A,E
181 savelij 4513
        AND 0x03
36 savelij 4514
        JP Z,S22H0
4515
        DEC A
4516
        JP Z,S22H1
4517
        DEC A
4518
        JP Z,S22H2
4519
        JP S22H3
4520
 
69 savelij 4521
S2_6    LD A,IXL
36 savelij 4522
        ADD A,A
4523
        JR C,S2_7
69 savelij 4524
        LD IYL,A
4525
        LD A,IXL
36 savelij 4526
        SRL A
69 savelij 4527
        ADD A,IYL
36 savelij 4528
        JR C,S2_7
4529
        ADD A,E
4530
        JR Z,S2_9
4531
        JR C,S2_7
4532
        BIT 7,C
4533
        JR Z,S2_9
69 savelij 4534
        LD IYL,A
4535
        LD A,IXL
36 savelij 4536
        SRL A
4537
        SRL A
69 savelij 4538
        ADD A,IYL
36 savelij 4539
        JR Z,S2_9
4540
        JR NC,S2_9
181 savelij 4541
S2_7    DB 0xCB,0x30;SLI B
36 savelij 4542
        JR C,S2_8
4543
        LD A,E
181 savelij 4544
        AND 0x03
36 savelij 4545
        JP Z,S23L0
4546
        DEC A
4547
        JP Z,S23L1
4548
        DEC A
4549
        JP Z,S23L2
4550
        JP S23L3
4551
S2_8    LD A,E
181 savelij 4552
        AND 0x03
36 savelij 4553
        JP Z,S23H0
4554
        DEC A
4555
        JP Z,S23H1
4556
        DEC A
4557
        JP Z,S23H2
4558
        JP S23H3
181 savelij 4559
S2_9    DB 0xCB,0x30;SLI B
36 savelij 4560
        JR C,S2_A
4561
        LD A,E
181 savelij 4562
        AND 0x03
36 savelij 4563
        JP Z,S24L0
4564
        DEC A
4565
        JP Z,S24L1
4566
        DEC A
4567
        JP Z,S24L2
4568
        JP S24L3
4569
S2_A    LD A,E
181 savelij 4570
        AND 0x03
36 savelij 4571
        JP Z,S24H0
4572
        DEC A
4573
        JP Z,S24H1
4574
        DEC A
4575
        JP Z,S24H2
4576
        JP S24H3
4577
 
4578
S21G0   LD E,A
4579
        LD A,(DE)
4580
        EXX
4581
        ADD A,(HL)
4582
        LD (DE),A
4583
        INC E
4584
S21J1   ADD A,(HL)
4585
        RRA
4586
        LD (DE),A
4587
        INC E
4588
S21H2   LD A,B
4589
        ADD A,C
4590
        LD B,A
4591
        LD A,(HL)
4592
        INC HL
4593
        LD (DE),A
4594
        INC E
4595
        JP NC,S21J3
4596
S21K3   ADD A,(HL)
4597
        RRA
4598
        LD (DE),A
4599
        INC E
4600
        JR Z,S21R1
4601
S21L0   LD A,B
4602
        ADD A,C
4603
        LD B,A
4604
        LD A,(HL)
4605
        INC HL
4606
        LD (DE),A
4607
        INC E
4608
        JP NC,S21K1
4609
        SUB (HL)
4610
        EXX
4611
        JP C,S21G1
4612
        LD L,A
4613
        LD A,(HL)
4614
        EXX
4615
        ADD A,(HL)
4616
        LD (DE),A
4617
        INC E
4618
        ADD A,(HL)
4619
        RRA
4620
        LD (DE),A
4621
        INC E
4622
        LD A,B
4623
        ADD A,C
4624
        LD B,A
4625
        LD A,(HL)
4626
        INC HL
4627
        LD (DE),A
4628
        INC E
4629
        JR Z,S21R2
4630
        JP C,S21K0
4631
        JP S21J0
4632
 
181 savelij 4633
S21R1   LD C,0x00
36 savelij 4634
        RRC B
4635
        RET
4636
 
181 savelij 4637
S21R2   LD C,0x01
36 savelij 4638
        JR NC,S21R2_2
4639
        RRC B
4640
        RET
4641
 
4642
S21R2_2 SRL B
4643
        RET
4644
 
4645
S21G1   LD E,A
4646
        LD A,(DE)
4647
        EXX
4648
        ADD A,(HL)
4649
        LD (DE),A
4650
        INC E
4651
S21J2   ADD A,(HL)
4652
        RRA
4653
        LD (DE),A
4654
        INC E
4655
S21H3   LD A,B
4656
        ADD A,C
4657
        LD B,A
4658
        LD A,(HL)
4659
        INC HL
4660
        LD (DE),A
4661
        INC E
4662
        JR Z,S21R2
4663
        JP NC,S21J0
4664
S21K0   ADD A,(HL)
4665
        RRA
4666
        LD (DE),A
4667
        INC E
4668
S21L1   LD A,B
4669
        ADD A,C
4670
        LD B,A
4671
        LD A,(HL)
4672
        INC HL
4673
        LD (DE),A
4674
        INC E
4675
        JP NC,S21K2
4676
        SUB (HL)
4677
        EXX
4678
        JP C,S21G2
4679
        LD L,A
4680
        LD A,(HL)
4681
        EXX
4682
        ADD A,(HL)
4683
        LD (DE),A
4684
        INC E
4685
        ADD A,(HL)
4686
        RRA
4687
        LD (DE),A
4688
        INC E
4689
        JR Z,S21R3
4690
        LD A,B
4691
        ADD A,C
4692
        LD B,A
4693
        LD A,(HL)
4694
        INC HL
4695
        LD (DE),A
4696
        INC E
4697
        JP C,S21K1
4698
        JP S21J1
4699
 
181 savelij 4700
S21R3   LD C,0x00
36 savelij 4701
        SRL B
4702
        RET
4703
 
4704
S21G2   LD E,A
4705
        LD A,(DE)
4706
        EXX
4707
        ADD A,(HL)
4708
        LD (DE),A
4709
        INC E
4710
S21J3   ADD A,(HL)
4711
        RRA
4712
        LD (DE),A
4713
        INC E
4714
        JR Z,S21R3
4715
S21H0   LD A,B
4716
        ADD A,C
4717
        LD B,A
4718
        LD A,(HL)
4719
        INC HL
4720
        LD (DE),A
4721
        INC E
4722
        JP NC,S21J1
4723
S21K1   ADD A,(HL)
4724
        RRA
4725
        LD (DE),A
4726
        INC E
4727
S21L2   LD A,B
4728
        ADD A,C
4729
        LD B,A
4730
        LD A,(HL)
4731
        INC HL
4732
        LD (DE),A
4733
        INC E
4734
        JP NC,S21K3
4735
        SUB (HL)
4736
        EXX
4737
        JP C,S21G3
4738
        LD L,A
4739
        LD A,(HL)
4740
        EXX
4741
        ADD A,(HL)
4742
        LD (DE),A
4743
        INC E
4744
        JR Z,S21R4
4745
        ADD A,(HL)
4746
        RRA
4747
        LD (DE),A
4748
        INC E
4749
        LD A,B
4750
        ADD A,C
4751
        LD B,A
4752
        LD A,(HL)
4753
        INC HL
4754
        LD (DE),A
4755
        INC E
4756
        JP C,S21K2
4757
        JP S21J2
4758
 
181 savelij 4759
S21R4   LD C,0x01
36 savelij 4760
        SRL B
4761
        RET
4762
 
4763
S21G3   LD E,A
4764
        LD A,(DE)
4765
        EXX
4766
        ADD A,(HL)
4767
        LD (DE),A
4768
        INC E
4769
        JR Z,S21R4
4770
S21J0   ADD A,(HL)
4771
        RRA
4772
        LD (DE),A
4773
        INC E
4774
S21H1   LD A,B
4775
        ADD A,C
4776
        LD B,A
4777
        LD A,(HL)
4778
        INC HL
4779
        LD (DE),A
4780
        INC E
4781
        JP NC,S21J2
4782
S21K2   ADD A,(HL)
4783
        RRA
4784
        LD (DE),A
4785
        INC E
4786
S21L3   LD A,B
4787
        ADD A,C
4788
        LD B,A
4789
        LD A,(HL)
4790
        INC HL
4791
        LD (DE),A
4792
        INC E
4793
        JR Z,S21R5
4794
        JP NC,S21K0
4795
        SUB (HL)
4796
        EXX
4797
        JP C,S21G0
4798
        LD L,A
4799
        LD A,(HL)
4800
        EXX
4801
        ADD A,(HL)
4802
        LD (DE),A
4803
        INC E
4804
        ADD A,(HL)
4805
        RRA
4806
        LD (DE),A
4807
        INC E
4808
        LD A,B
4809
        ADD A,C
4810
        LD B,A
4811
        LD A,(HL)
4812
        INC HL
4813
        LD (DE),A
4814
        INC E
4815
        JP C,S21K3
4816
        JP S21J3
4817
 
4818
S21R5   JR NC,S21R5_2
181 savelij 4819
        LD C,0x02
36 savelij 4820
        SRL B
4821
        RET
4822
 
181 savelij 4823
S21R5_2 LD C,0x01
36 savelij 4824
        RRC B
4825
        RET
4826
 
4827
S22G0   LD E,A
4828
        LD A,(DE)
4829
        EXX
4830
        ADD A,(HL)
4831
        LD (DE),A
4832
        INC E
4833
S22J1   ADD A,(HL)
4834
        RRA
4835
        LD (DE),A
4836
        INC E
4837
S22H2   LD A,B
4838
        ADD A,C
4839
        LD B,A
4840
        LD A,(HL)
4841
        INC HL
4842
        LD (DE),A
4843
        INC E
69 savelij 4844
        DEC IXL
36 savelij 4845
        JR Z,S22R2
4846
        JP NC,S22J3
4847
S22K3   ADD A,(HL)
4848
        RRA
4849
        LD (DE),A
4850
        INC E
4851
        JR Z,S22R1
4852
S22L0   LD A,B
4853
        ADD A,C
4854
        LD B,A
4855
        LD A,(HL)
4856
        INC HL
4857
        LD (DE),A
4858
        INC E
69 savelij 4859
        DEC IXL
36 savelij 4860
        JR Z,S22R5_3
4861
        JP NC,S22K1
4862
        SUB (HL)
4863
        EXX
4864
        JP C,S22G1
4865
        LD L,A
4866
        LD A,(HL)
4867
        EXX
4868
        ADD A,(HL)
4869
        LD (DE),A
4870
        INC E
4871
        ADD A,(HL)
4872
        RRA
4873
        LD (DE),A
4874
        INC E
4875
        LD A,B
4876
        ADD A,C
4877
        LD B,A
4878
        LD A,(HL)
4879
        INC HL
4880
        LD (DE),A
4881
        INC E
4882
        JR Z,S22R2
69 savelij 4883
        DEC IXL
36 savelij 4884
        JR Z,S22R2
4885
        JP C,S22K0
4886
        JP S22J0
4887
 
181 savelij 4888
S22R1   LD C,0x00
36 savelij 4889
        RRC B
4890
        RET
4891
 
181 savelij 4892
S22R2   LD C,0x01
36 savelij 4893
        JR NC,S22R2_2
4894
        RRC B
4895
        RET
4896
 
4897
S22R2_2 SRL B
4898
        RET
4899
 
4900
S22R5_3 JP S22R5
4901
 
4902
S22G1   LD E,A
4903
        LD A,(DE)
4904
        EXX
4905
        ADD A,(HL)
4906
        LD (DE),A
4907
        INC E
4908
 
4909
S22J2   ADD A,(HL)
4910
        RRA
4911
        LD (DE),A
4912
        INC E
4913
S22H3   LD A,B
4914
        ADD A,C
4915
        LD B,A
4916
        LD A,(HL)
4917
        INC HL
4918
        LD (DE),A
4919
        INC E
4920
        JR Z,S22R2
69 savelij 4921
        DEC IXL
36 savelij 4922
        JR Z,S22R2
4923
        JP NC,S22J0
4924
S22K0   ADD A,(HL)
4925
        RRA
4926
        LD (DE),A
4927
        INC E
4928
S22L1   LD A,B
4929
        ADD A,C
4930
        LD B,A
4931
        LD A,(HL)
4932
        INC HL
4933
        LD (DE),A
4934
        INC E
69 savelij 4935
        DEC IXL
36 savelij 4936
        JR Z,S22R5_3
4937
        JP NC,S22K2
4938
        SUB (HL)
4939
        EXX
4940
        JP C,S22G2
4941
        LD L,A
4942
        LD A,(HL)
4943
        EXX
4944
        ADD A,(HL)
4945
        LD (DE),A
4946
        INC E
4947
        ADD A,(HL)
4948
        RRA
4949
        LD (DE),A
4950
        INC E
4951
        JR Z,S22R3
4952
        LD A,B
4953
        ADD A,C
4954
        LD B,A
4955
        LD A,(HL)
4956
        INC HL
4957
        LD (DE),A
4958
        INC E
69 savelij 4959
        DEC IXL
36 savelij 4960
        JR Z,S22R2
4961
        JP C,S22K1
4962
        JP S22J1
4963
 
181 savelij 4964
S22R3   LD C,0x00
36 savelij 4965
        SRL B
4966
        RET
4967
 
4968
S22G2   LD E,A
4969
        LD A,(DE)
4970
        EXX
4971
        ADD A,(HL)
4972
        LD (DE),A
4973
        INC E
4974
S22J3   ADD A,(HL)
4975
        RRA
4976
        LD (DE),A
4977
        INC E
4978
        JR Z,S22R3
4979
S22H0   LD A,B
4980
        ADD A,C
4981
        LD B,A
4982
        LD A,(HL)
4983
        INC HL
4984
        LD (DE),A
4985
        INC E
69 savelij 4986
        DEC IXL
36 savelij 4987
        JR Z,S22R2
4988
        JP NC,S22J1
4989
S22K1   ADD A,(HL)
4990
        RRA
4991
        LD (DE),A
4992
        INC E
4993
S22L2   LD A,B
4994
        ADD A,C
4995
        LD B,A
4996
        LD A,(HL)
4997
        INC HL
4998
        LD (DE),A
4999
        INC E
69 savelij 5000
        DEC IXL
36 savelij 5001
        JR Z,S22R5
5002
        JP NC,S22K3
5003
        SUB (HL)
5004
        EXX
5005
        JP C,S22G3
5006
        LD L,A
5007
        LD A,(HL)
5008
        EXX
5009
        ADD A,(HL)
5010
        LD (DE),A
5011
        INC E
5012
        JR Z,S22R4
5013
        ADD A,(HL)
5014
        RRA
5015
        LD (DE),A
5016
        INC E
5017
        LD A,B
5018
        ADD A,C
5019
        LD B,A
5020
        LD A,(HL)
5021
        INC HL
5022
        LD (DE),A
5023
        INC E
69 savelij 5024
        DEC IXL
36 savelij 5025
        JR Z,S22R2_3
5026
        JP C,S22K2
5027
        JP S22J2
5028
 
5029
S22G3   LD E,A
5030
        LD A,(DE)
5031
        EXX
5032
        ADD A,(HL)
5033
        LD (DE),A
5034
        INC E
5035
        JR Z,S22R4
5036
S22J0   ADD A,(HL)
5037
        RRA
5038
        LD (DE),A
5039
        INC E
5040
S22H1   LD A,B
5041
        ADD A,C
5042
        LD B,A
5043
        LD A,(HL)
5044
        INC HL
5045
        LD (DE),A
5046
        INC E
69 savelij 5047
        DEC IXL
36 savelij 5048
        JR Z,S22R2_3
5049
        JP NC,S22J2
5050
S22K2   ADD A,(HL)
5051
        RRA
5052
        LD (DE),A
5053
        INC E
5054
S22L3   LD A,B
5055
        ADD A,C
5056
        LD B,A
5057
        LD A,(HL)
5058
        INC HL
5059
        LD (DE),A
5060
        INC E
5061
        JR Z,S22R5
69 savelij 5062
        DEC IXL
36 savelij 5063
        JR Z,S22R5
5064
        JP NC,S22K0
5065
        SUB (HL)
5066
        EXX
5067
        JP C,S22G0
5068
        LD L,A
5069
        LD A,(HL)
5070
        EXX
5071
        ADD A,(HL)
5072
        LD (DE),A
5073
        INC E
5074
        ADD A,(HL)
5075
        RRA
5076
        LD (DE),A
5077
        INC E
5078
        LD A,B
5079
        ADD A,C
5080
        LD B,A
5081
        LD A,(HL)
5082
        INC HL
5083
        LD (DE),A
5084
        INC E
69 savelij 5085
        DEC IXL
36 savelij 5086
        JR Z,S22R2_3
5087
        JP C,S22K3
5088
        JP S22J3
5089
 
5090
S22R2_3 JP S22R2
5091
 
5092
S22R5   JR NC,S22R5_2
181 savelij 5093
        LD C,0x02
36 savelij 5094
        SRL B
5095
        RET
5096
 
181 savelij 5097
S22R5_2 LD C,0x01
36 savelij 5098
        RRC B
5099
        RET
5100
 
181 savelij 5101
S22R4   LD C,0x01
36 savelij 5102
        SRL B
5103
        RET
5104
 
5105
S23J0   SUB (HL)
5106
        EXX
5107
        JP C,S23P0
5108
        LD L,A
5109
        LD A,(HL)
5110
        EXX
5111
        ADD A,(HL)
5112
        LD (DE),A
5113
        INC E
5114
        ADD A,(HL)
5115
        RRA
5116
        LD (DE),A
5117
        INC E
5118
        LD A,B
5119
        ADD A,C
5120
        LD B,A
5121
        LD A,(HL)
5122
        INC HL
5123
        LD (DE),A
5124
        INC E
5125
        JP C,S23J3
5126
        JP S23K3
5127
 
5128
S23P0   LD E,A
5129
        LD A,(DE)
5130
        EXX
5131
        ADD A,(HL)
5132
        LD (DE),A
5133
        INC E
5134
        ADD A,(HL)
5135
        RRA
5136
        LD (DE),A
5137
        INC E
5138
S23H2   LD A,B
5139
        ADD A,C
5140
        LD B,A
5141
        LD A,(HL)
5142
        INC HL
5143
        LD (DE),A
5144
        INC E
5145
        JP C,S23J3
5146
S23K3   SUB (HL)
5147
        EXX
5148
        JP C,S23I3
5149
        LD L,A
5150
        LD A,(HL)
5151
        EXX
5152
        ADD A,(HL)
5153
        LD (DE),A
5154
        INC E
5155
        JR Z,S23R1
5156
        ADD A,(HL)
5157
        RRA
5158
        LD (DE),A
5159
        INC E
5160
        LD A,B
5161
        ADD A,C
5162
        LD B,A
5163
        LD A,(HL)
5164
        INC HL
5165
        LD (DE),A
5166
        INC E
5167
        JP C,S23K2
5168
        JP S23G2
5169
 
5170
S23I3   LD E,A
5171
        LD A,(DE)
5172
        EXX
5173
        ADD A,(HL)
5174
        LD (DE),A
5175
        INC E
5176
        JR Z,S23R1
5177
        ADD A,(HL)
5178
        RRA
5179
        LD (DE),A
5180
        INC E
5181
S23L1   LD A,B
5182
        ADD A,C
5183
        LD B,A
5184
        LD A,(HL)
5185
        INC HL
5186
        LD (DE),A
5187
        INC E
5188
        JP C,S23K2
5189
S23G2   ADD A,(HL)
5190
        RRA
5191
        LD (DE),A
5192
        INC E
5193
        LD A,B
5194
        ADD A,C
5195
        LD B,A
5196
        LD A,(HL)
5197
        INC HL
5198
        LD (DE),A
5199
        INC E
5200
        JR Z,S23R2
5201
        JP NC,S23K0
5202
        JP S23J0
5203
 
181 savelij 5204
S23R1   LD C,0x01
36 savelij 5205
        SRL B
5206
        RET
5207
 
181 savelij 5208
S23R2   LD C,0x02
36 savelij 5209
        JR NC,S23R2_2
5210
        RRC B
5211
        RET
5212
 
5213
S23R2_2 SRL B
5214
        RET
5215
 
5216
S23J1   SUB (HL)
5217
        EXX
5218
        JP C,S23P1
5219
        LD L,A
5220
        LD A,(HL)
5221
        EXX
5222
        ADD A,(HL)
5223
        LD (DE),A
5224
        INC E
5225
        ADD A,(HL)
5226
        RRA
5227
        LD (DE),A
5228
        INC E
5229
        LD A,B
5230
        ADD A,C
5231
        LD B,A
5232
        LD A,(HL)
5233
        INC HL
5234
        LD (DE),A
5235
        INC E
5236
        JR Z,S23R2
5237
        JP C,S23J0
5238
        JP S23K0
5239
 
5240
S23P1   LD E,A
5241
        LD A,(DE)
5242
        EXX
5243
        ADD A,(HL)
5244
        LD (DE),A
5245
        INC E
5246
        ADD A,(HL)
5247
        RRA
5248
        LD (DE),A
5249
        INC E
5250
S23H3   LD A,B
5251
        ADD A,C
5252
        LD B,A
5253
        LD A,(HL)
5254
        INC HL
5255
        LD (DE),A
5256
        INC E
5257
        JR Z,S23R2
5258
        JP C,S23J0
5259
S23K0   SUB (HL)
5260
        EXX
5261
        JP C,S23I0
5262
        LD L,A
5263
        LD A,(HL)
5264
        EXX
5265
        ADD A,(HL)
5266
        LD (DE),A
5267
        INC E
5268
        ADD A,(HL)
5269
        RRA
5270
        LD (DE),A
5271
        INC E
5272
        LD A,B
5273
        ADD A,C
5274
        LD B,A
5275
        LD A,(HL)
5276
        INC HL
5277
        LD (DE),A
5278
        INC E
5279
        JP C,S23K3
5280
        JP S23G3
5281
 
5282
S23I0   LD E,A
5283
        LD A,(DE)
5284
        EXX
5285
        ADD A,(HL)
5286
        LD (DE),A
5287
        INC E
5288
        ADD A,(HL)
5289
        RRA
5290
        LD (DE),A
5291
        INC E
5292
S23L2   LD A,B
5293
        ADD A,C
5294
        LD B,A
5295
        LD A,(HL)
5296
        INC HL
5297
        LD (DE),A
5298
        INC E
5299
        JP C,S23K3
5300
S23G3   ADD A,(HL)
5301
        RRA
5302
        LD (DE),A
5303
        INC E
5304
        JR Z,S23R3
5305
        LD A,B
5306
        ADD A,C
5307
        LD B,A
5308
        LD A,(HL)
5309
        INC HL
5310
        LD (DE),A
5311
        INC E
5312
        JP NC,S23K1
5313
        JP S23J1
5314
 
181 savelij 5315
S23R3   LD C,0x00
36 savelij 5316
        RRC B
5317
        RET
5318
 
5319
S23J2   SUB (HL)
5320
        EXX
5321
        JP C,S23P2
5322
        LD L,A
5323
        LD A,(HL)
5324
        EXX
5325
        ADD A,(HL)
5326
        LD (DE),A
5327
        INC E
5328
        ADD A,(HL)
5329
        RRA
5330
        LD (DE),A
5331
        INC E
5332
        JR Z,S23R3
5333
        LD A,B
5334
        ADD A,C
5335
        LD B,A
5336
        LD A,(HL)
5337
        INC HL
5338
        LD (DE),A
5339
        INC E
5340
        JP C,S23J1
5341
        JP S23K1
5342
 
5343
S23P2   LD E,A
5344
        LD A,(DE)
5345
        EXX
5346
        ADD A,(HL)
5347
        LD (DE),A
5348
        INC E
5349
        ADD A,(HL)
5350
        RRA
5351
        LD (DE),A
5352
        INC E
5353
        JR Z,S23R3
5354
S23H0   LD A,B
5355
        ADD A,C
5356
        LD B,A
5357
        LD A,(HL)
5358
        INC HL
5359
        LD (DE),A
5360
        INC E
5361
        JP C,S23J1
5362
S23K1   SUB (HL)
5363
        EXX
5364
        JP C,S23I1
5365
        LD L,A
5366
        LD A,(HL)
5367
        EXX
5368
        ADD A,(HL)
5369
        LD (DE),A
5370
        INC E
5371
        ADD A,(HL)
5372
        RRA
5373
        LD (DE),A
5374
        INC E
5375
        LD A,B
5376
        ADD A,C
5377
        LD B,A
5378
        LD A,(HL)
5379
        INC HL
5380
        LD (DE),A
5381
        INC E
5382
        JR Z,S23R4
5383
        JP C,S23K0
5384
        JP S23G0
5385
 
5386
S23I1   LD E,A
5387
        LD A,(DE)
5388
        EXX
5389
        ADD A,(HL)
5390
        LD (DE),A
5391
        INC E
5392
        ADD A,(HL)
5393
        RRA
5394
        LD (DE),A
5395
        INC E
5396
S23L3   LD A,B
5397
        ADD A,C
5398
        LD B,A
5399
        LD A,(HL)
5400
        INC HL
5401
        LD (DE),A
5402
        INC E
5403
        JR Z,S23R4
5404
        JP C,S23K0
5405
 
5406
S23G0   ADD A,(HL)
5407
        RRA
5408
        LD (DE),A
5409
        INC E
5410
        LD A,B
5411
        ADD A,C
5412
        LD B,A
5413
        LD A,(HL)
5414
        INC HL
5415
        LD (DE),A
5416
        INC E
5417
        JP NC,S23K2
5418
        JP S23J2
5419
 
5420
S23R4   JR C,S23R4_2
181 savelij 5421
        LD C,0x01
36 savelij 5422
        RRC B
5423
        RET
5424
 
181 savelij 5425
S23R4_2 LD C,0x02
36 savelij 5426
        SRL B
5427
        RET
5428
 
181 savelij 5429
S23R5   LD C,0x01
36 savelij 5430
        RRC B
5431
        RET
5432
 
5433
S23J3   SUB (HL)
5434
        EXX
5435
        JP C,S23P3
5436
        LD L,A
5437
        LD A,(HL)
5438
        EXX
5439
        ADD A,(HL)
5440
        LD (DE),A
5441
        INC E
5442
        JR Z,S23R5
5443
        ADD A,(HL)
5444
        RRA
5445
        LD (DE),A
5446
        INC E
5447
        LD A,B
5448
        ADD A,C
5449
        LD B,A
5450
        LD A,(HL)
5451
        INC HL
5452
        LD (DE),A
5453
        INC E
5454
        JP C,S23J2
5455
        JP S23K2
5456
 
5457
S23P3   LD E,A
5458
        LD A,(DE)
5459
        EXX
5460
        ADD A,(HL)
5461
        LD (DE),A
5462
        INC E
5463
        JR Z,S23R5
5464
        ADD A,(HL)
5465
        RRA
5466
        LD (DE),A
5467
        INC E
5468
S23H1   LD A,B
5469
        ADD A,C
5470
        LD B,A
5471
        LD A,(HL)
5472
        INC HL
5473
        LD (DE),A
5474
        INC E
5475
        JP C,S23J2
5476
S23K2   SUB (HL)
5477
        EXX
5478
        JP C,S23I2
5479
        LD L,A
5480
        LD A,(HL)
5481
        EXX
5482
        ADD A,(HL)
5483
        LD (DE),A
5484
        INC E
5485
        ADD A,(HL)
5486
        RRA
5487
        LD (DE),A
5488
        INC E
5489
        JR Z,S23R6
5490
        LD A,B
5491
        ADD A,C
5492
        LD B,A
5493
        LD A,(HL)
5494
        INC HL
5495
        LD (DE),A
5496
        INC E
5497
        JP C,S23K1
5498
        JP S23G1
5499
 
5500
S23I2   LD E,A
5501
        LD A,(DE)
5502
        EXX
5503
        ADD A,(HL)
5504
        LD (DE),A
5505
        INC E
5506
        ADD A,(HL)
5507
        RRA
5508
        LD (DE),A
5509
        INC E
5510
        JR Z,S23R6
5511
S23L0   LD A,B
5512
        ADD A,C
5513
        LD B,A
5514
        LD A,(HL)
5515
        INC HL
5516
        LD (DE),A
5517
        INC E
5518
        JP C,S23K1
5519
S23G1   ADD A,(HL)
5520
        RRA
5521
        LD (DE),A
5522
        INC E
5523
        LD A,B
5524
        ADD A,C
5525
        LD B,A
5526
        LD A,(HL)
5527
        INC HL
5528
        LD (DE),A
5529
        INC E
5530
        JP NC,S23K3
5531
        JP S23J3
5532
 
181 savelij 5533
S23R6   LD C,0x00
36 savelij 5534
        SRL B
5535
        RET
5536
 
5537
S24J0   SUB (HL)
5538
        EXX
5539
        JP C,S24P0
5540
        LD L,A
5541
        LD A,(HL)
5542
        EXX
5543
        ADD A,(HL)
5544
        LD (DE),A
5545
        INC E
5546
        ADD A,(HL)
5547
        RRA
5548
        LD (DE),A
5549
        INC E
5550
        LD A,B
5551
        ADD A,C
5552
        LD B,A
5553
        LD A,(HL)
5554
        INC HL
5555
        LD (DE),A
5556
        INC E
69 savelij 5557
        DEC IXL
36 savelij 5558
        JR Z,S24R2
5559
        JP C,S24J3
5560
        JP S24K3
5561
 
5562
S24P0   LD E,A
5563
        LD A,(DE)
5564
        EXX
5565
        ADD A,(HL)
5566
        LD (DE),A
5567
        INC E
5568
        ADD A,(HL)
5569
        RRA
5570
        LD (DE),A
5571
        INC E
5572
S24H2   LD A,B
5573
        ADD A,C
5574
        LD B,A
5575
        LD A,(HL)
5576
        INC HL
5577
        LD (DE),A
5578
        INC E
69 savelij 5579
        DEC IXL
36 savelij 5580
        JR Z,S24R2
5581
        JP C,S24J3
5582
S24K3   SUB (HL)
5583
        EXX
5584
        JP C,S24I3
5585
        LD L,A
5586
        LD A,(HL)
5587
        EXX
5588
        ADD A,(HL)
5589
        LD (DE),A
5590
        INC E
5591
        JR Z,S24R1
5592
        ADD A,(HL)
5593
        RRA
5594
        LD (DE),A
5595
        INC E
5596
        LD A,B
5597
        ADD A,C
5598
        LD B,A
5599
        LD A,(HL)
5600
        INC HL
5601
        LD (DE),A
5602
        INC E
69 savelij 5603
        DEC IXL
36 savelij 5604
        JR Z,S24R4_3
5605
        JP C,S24K2
5606
        JP S24G2
5607
 
5608
S24I3   LD E,A
5609
        LD A,(DE)
5610
        EXX
5611
        ADD A,(HL)
5612
        LD (DE),A
5613
        INC E
5614
        JR Z,S24R1
5615
        ADD A,(HL)
5616
        RRA
5617
        LD (DE),A
5618
        INC E
5619
S24L1   LD A,B
5620
        ADD A,C
5621
        LD B,A
5622
        LD A,(HL)
5623
        INC HL
5624
        LD (DE),A
5625
        INC E
69 savelij 5626
        DEC IXL
36 savelij 5627
        JR Z,S24R4_3
5628
        JP C,S24K2
5629
 
5630
S24G2   ADD A,(HL)
5631
        RRA
5632
        LD (DE),A
5633
        INC E
5634
        LD A,B
5635
        ADD A,C
5636
        LD B,A
5637
        LD A,(HL)
5638
        INC HL
5639
        LD (DE),A
5640
        INC E
5641
        JR Z,S24R2
69 savelij 5642
        DEC IXL
36 savelij 5643
        JR Z,S24R2
5644
        JP NC,S24K0
5645
        JP S24J0
5646
 
181 savelij 5647
S24R1   LD C,0x01
36 savelij 5648
        SRL B
5649
        RET
5650
 
181 savelij 5651
S24R2   LD C,0x02
36 savelij 5652
        JR NC,S24R2_2
5653
        RRC B
5654
        RET
5655
 
5656
S24R2_2 SRL B
5657
        RET
5658
 
5659
S24R4_3 JP S24R4
5660
 
5661
S24J1   SUB (HL)
5662
        EXX
5663
        JP C,S24P1
5664
        LD L,A
5665
        LD A,(HL)
5666
        EXX
5667
        ADD A,(HL)
5668
        LD (DE),A
5669
        INC E
5670
        ADD A,(HL)
5671
        RRA
5672
        LD (DE),A
5673
        INC E
5674
        LD A,B
5675
        ADD A,C
5676
        LD B,A
5677
        LD A,(HL)
5678
        INC HL
5679
        LD (DE),A
5680
        INC E
5681
        JR Z,S24R2
69 savelij 5682
        DEC IXL
36 savelij 5683
        JR Z,S24R2
5684
        JP C,S24J0
5685
        JP S24K0
5686
 
5687
S24P1   LD E,A
5688
        LD A,(DE)
5689
        EXX
5690
        ADD A,(HL)
5691
        LD (DE),A
5692
        INC E
5693
        ADD A,(HL)
5694
        RRA
5695
        LD (DE),A
5696
        INC E
5697
S24H3   LD A,B
5698
        ADD A,C
5699
        LD B,A
5700
        LD A,(HL)
5701
        INC HL
5702
        LD (DE),A
5703
        INC E
5704
        JR Z,S24R2
69 savelij 5705
        DEC IXL
36 savelij 5706
        JR Z,S24R2
5707
        JP C,S24J0
5708
S24K0   SUB (HL)
5709
        EXX
5710
        JP C,S24I0
5711
        LD L,A
5712
        LD A,(HL)
5713
        EXX
5714
        ADD A,(HL)
5715
        LD (DE),A
5716
        INC E
5717
        ADD A,(HL)
5718
        RRA
5719
        LD (DE),A
5720
        INC E
5721
        LD A,B
5722
        ADD A,C
5723
        LD B,A
5724
        LD A,(HL)
5725
        INC HL
5726
        LD (DE),A
5727
        INC E
69 savelij 5728
        DEC IXL
36 savelij 5729
        JR Z,S24R4_3
5730
        JP C,S24K3
5731
        JP S24G3
5732
 
5733
S24I0   LD E,A
5734
        LD A,(DE)
5735
        EXX
5736
        ADD A,(HL)
5737
        LD (DE),A
5738
        INC E
5739
        ADD A,(HL)
5740
        RRA
5741
        LD (DE),A
5742
        INC E
5743
S24L2   LD A,B
5744
        ADD A,C
5745
        LD B,A
5746
        LD A,(HL)
5747
        INC HL
5748
        LD (DE),A
5749
        INC E
69 savelij 5750
        DEC IXL
36 savelij 5751
        JR Z,S24R4_3
5752
        JP C,S24K3
5753
S24G3   ADD A,(HL)
5754
        RRA
5755
        LD (DE),A
5756
        INC E
5757
        JR Z,S24R3
5758
        LD A,B
5759
        ADD A,C
5760
        LD B,A
5761
        LD A,(HL)
5762
        INC HL
5763
        LD (DE),A
5764
        INC E
69 savelij 5765
        DEC IXL
36 savelij 5766
        JR Z,S24R2_5
5767
        JP NC,S24K1
5768
        JP S24J1
5769
 
5770
S24R2_5 JP S24R2
5771
 
181 savelij 5772
S24R3   LD C,0x00
36 savelij 5773
        RRC B
5774
        RET
5775
 
5776
S24J2   SUB (HL)
5777
        EXX
5778
        JP C,S24P2
5779
        LD L,A
5780
        LD A,(HL)
5781
        EXX
5782
        ADD A,(HL)
5783
        LD (DE),A
5784
        INC E
5785
        ADD A,(HL)
5786
        RRA
5787
        LD (DE),A
5788
        INC E
5789
        JR Z,S24R3
5790
        LD A,B
5791
        ADD A,C
5792
        LD B,A
5793
        LD A,(HL)
5794
        INC HL
5795
        LD (DE),A
5796
        INC E
69 savelij 5797
        DEC IXL
36 savelij 5798
        JR Z,S24R2_3
5799
        JP C,S24J1
5800
        JP S24K1
5801
 
5802
S24P2   LD E,A
5803
        LD A,(DE)
5804
        EXX
5805
        ADD A,(HL)
5806
        LD (DE),A
5807
        INC E
5808
        ADD A,(HL)
5809
        RRA
5810
        LD (DE),A
5811
        INC E
5812
        JR Z,S24R3
5813
S24H0   LD A,B
5814
        ADD A,C
5815
        LD B,A
5816
        LD A,(HL)
5817
        INC HL
5818
        LD (DE),A
5819
        INC E
69 savelij 5820
        DEC IXL
36 savelij 5821
        JR Z,S24R2_3
5822
        JP C,S24J1
5823
S24K1   SUB (HL)
5824
        EXX
5825
        JP C,S24I1
5826
        LD L,A
5827
        LD A,(HL)
5828
        EXX
5829
        ADD A,(HL)
5830
        LD (DE),A
5831
        INC E
5832
        ADD A,(HL)
5833
        RRA
5834
        LD (DE),A
5835
        INC E
5836
        LD A,B
5837
        ADD A,C
5838
        LD B,A
5839
        LD A,(HL)
5840
        INC HL
5841
        LD (DE),A
5842
        INC E
5843
        JR Z,S24R4
69 savelij 5844
        DEC IXL
36 savelij 5845
        JR Z,S24R4
5846
        JP C,S24K0
5847
        JP S24G0
5848
 
5849
S24I1   LD E,A
5850
        LD A,(DE)
5851
        EXX
5852
        ADD A,(HL)
5853
        LD (DE),A
5854
        INC E
5855
        ADD A,(HL)
5856
        RRA
5857
        LD (DE),A
5858
        INC E
5859
S24L3   LD A,B
5860
        ADD A,C
5861
        LD B,A
5862
        LD A,(HL)
5863
        INC HL
5864
        LD (DE),A
5865
        INC E
5866
        JR Z,S24R4
69 savelij 5867
        DEC IXL
36 savelij 5868
        JR Z,S24R4
5869
        JP C,S24K0
5870
 
5871
S24G0   ADD A,(HL)
5872
        RRA
5873
        LD (DE),A
5874
        INC E
5875
        LD A,B
5876
        ADD A,C
5877
        LD B,A
5878
        LD A,(HL)
5879
        INC HL
5880
        LD (DE),A
5881
        INC E
69 savelij 5882
        DEC IXL
36 savelij 5883
        JR Z,S24R2_3
5884
        JP NC,S24K2
5885
        JP S24J2
5886
 
5887
S24R4   JR C,S24R4_2
181 savelij 5888
        LD C,0x01
36 savelij 5889
        RRC B
5890
        RET
5891
 
181 savelij 5892
S24R4_2 LD C,0x02
36 savelij 5893
        SRL B
5894
        RET
5895
 
5896
S24R2_3 JP S24R2
5897
 
181 savelij 5898
S24R5   LD C,0x01
36 savelij 5899
        RRC B
5900
        RET
5901
 
5902
S24J3   SUB (HL)
5903
        EXX
5904
        JP C,S24P3
5905
        LD L,A
5906
        LD A,(HL)
5907
        EXX
5908
        ADD A,(HL)
5909
        LD (DE),A
5910
        INC E
5911
        JR Z,S24R5
5912
        ADD A,(HL)
5913
        RRA
5914
        LD (DE),A
5915
        INC E
5916
        LD A,B
5917
        ADD A,C
5918
        LD B,A
5919
        LD A,(HL)
5920
        INC HL
5921
        LD (DE),A
5922
        INC E
69 savelij 5923
        DEC IXL
36 savelij 5924
        JR Z,S24R2_3
5925
        JP C,S24J2
5926
        JP S24K2
5927
 
5928
S24P3   LD E,A
5929
        LD A,(DE)
5930
        EXX
5931
        ADD A,(HL)
5932
        LD (DE),A
5933
        INC E
5934
        JR Z,S24R5
5935
        ADD A,(HL)
5936
        RRA
5937
        LD (DE),A
5938
        INC E
5939
S24H1   LD A,B
5940
        ADD A,C
5941
        LD B,A
5942
        LD A,(HL)
5943
        INC HL
5944
        LD (DE),A
5945
        INC E
69 savelij 5946
        DEC IXL
36 savelij 5947
        JR Z,S24R2_3
5948
        JP C,S24J2
5949
S24K2   SUB (HL)
5950
        EXX
5951
        JP C,S24I2
5952
        LD L,A
5953
        LD A,(HL)
5954
        EXX
5955
        ADD A,(HL)
5956
        LD (DE),A
5957
        INC E
5958
        ADD A,(HL)
5959
        RRA
5960
        LD (DE),A
5961
        INC E
5962
        JR Z,S24R6
5963
        LD A,B
5964
        ADD A,C
5965
        LD B,A
5966
        LD A,(HL)
5967
        INC HL
5968
        LD (DE),A
5969
        INC E
69 savelij 5970
        DEC IXL
36 savelij 5971
        JR Z,S24R4
5972
        JP C,S24K1
5973
        JP S24G1
5974
 
5975
S24I2   LD E,A
5976
        LD A,(DE)
5977
        EXX
5978
        ADD A,(HL)
5979
        LD (DE),A
5980
        INC E
5981
        ADD A,(HL)
5982
        RRA
5983
        LD (DE),A
5984
        INC E
5985
        JR Z,S24R6
5986
S24L0   LD A,B
5987
        ADD A,C
5988
        LD B,A
5989
        LD A,(HL)
5990
        INC HL
5991
        LD (DE),A
5992
        INC E
69 savelij 5993
        DEC IXL
36 savelij 5994
        JR Z,S24R4_4
5995
        JP C,S24K1
5996
S24G1   ADD A,(HL)
5997
        RRA
5998
        LD (DE),A
5999
        INC E
6000
        LD A,B
6001
        ADD A,C
6002
        LD B,A
6003
        LD A,(HL)
6004
        INC HL
6005
        LD (DE),A
6006
        INC E
69 savelij 6007
        DEC IXL
36 savelij 6008
        JR Z,S24R2_4
6009
        JP NC,S24K3
6010
        JP S24J3
6011
 
6012
S24R2_4 JP S24R2
6013
 
6014
S24R4_4 JP S24R4
6015
 
181 savelij 6016
S24R6   LD C,0x00
36 savelij 6017
        SRL B
6018
        RET
6019
 
6020
;INCLUDE "SGEN3.a80"
6021
S3_     LD D,C
6022
        PUSH DE
6023
        LD D,B
6024
        EXX
6025
        POP BC
6026
S31     SLA B
6027
        JP C,S318
6028
 
69 savelij 6029
S310    LD A,IXL
36 savelij 6030
        ADD A,A
6031
        JP C,S311
69 savelij 6032
        ADD A,IXL
36 savelij 6033
        JP C,S311
6034
        ADD A,E
6035
        JR Z,S310_
6036
        JP C,S311
6037
        BIT 7,B
6038
        JR Z,S310_
69 savelij 6039
        LD IYL,A
6040
        LD A,IXL
36 savelij 6041
        SRL A
6042
        SRL A
69 savelij 6043
        ADD A,IYL
36 savelij 6044
        JR Z,S310_
6045
        JP C,S311
181 savelij 6046
S310_   DB 0xCB,0x31;SLI C
36 savelij 6047
        JP C,S3101
6048
        JP S3100
6049
 
6050
S3102   JR Z,S3104
6051
S310A   INC E
6052
        JR Z,S3105
6053
        ADD A,(HL)
6054
        RRA
6055
        LD (DE),A
6056
        INC E
6057
        JR Z,S31052
6058
        LD (DE),A
6059
        INC E
6060
        JR Z,S31053
6061
S3100   LD A,C
6062
        ADD A,B
6063
        LD C,A
6064
        LD A,(HL)
6065
        INC HL
69 savelij 6066
        DEC IXL
36 savelij 6067
        LD (DE),A
6068
        JP NC,S3102
6069
        JR Z,S3106
6070
        INC E
6071
        JR Z,S3107
69 savelij 6072
        LD IYL,A
36 savelij 6073
        ADD A,(HL)
6074
        RRA
69 savelij 6075
        LD IYH,A
6076
        ADD A,IYL
36 savelij 6077
        RRA
6078
        LD (DE),A
6079
        INC E
6080
        JR Z,S3109
69 savelij 6081
        LD A,IYH
36 savelij 6082
        LD (DE),A
6083
        INC E
6084
        JR Z,S31092
6085
        ADD A,(HL)
6086
        RRA
6087
        LD (DE),A
6088
        INC E
6089
        JP NZ,S3101
6090
        JP S31093
6091
 
6092
S3103   JR Z,S3108
6093
        INC E
6094
        JR Z,S3109
6095
        ADD A,(HL)
6096
        RRA
6097
        LD (DE),A
6098
        INC E
6099
        JR Z,S31092
6100
        LD (DE),A
6101
        INC E
6102
        JR Z,S31093
6103
S3101   LD A,C
6104
        ADD A,B
6105
        LD C,A
6106
        LD A,(HL)
6107
        INC HL
69 savelij 6108
        DEC IXL
36 savelij 6109
        LD (DE),A
6110
        JP NC,S3103
6111
        JP NZ,S310A
6112
S3104   INC E
6113
S3105   SRL C
69 savelij 6114
        LD IYL,C
36 savelij 6115
        EXX
69 savelij 6116
        LD E,IYL
36 savelij 6117
        LD D,2
6118
        RET
6119
 
6120
S31052  SRL C
69 savelij 6121
        LD IYL,C
36 savelij 6122
        EXX
69 savelij 6123
        LD E,IYL
36 savelij 6124
        LD D,1
6125
        RET
6126
 
6127
S31053  SRL C
69 savelij 6128
        LD IYL,C
36 savelij 6129
        EXX
69 savelij 6130
        LD E,IYL
36 savelij 6131
        LD D,0
6132
        RET
6133
 
6134
S3106   INC E
6135
S3107   RRC C
69 savelij 6136
        LD IYL,C
36 savelij 6137
        EXX
69 savelij 6138
        LD E,IYL
36 savelij 6139
        RET
6140
 
6141
S3108   INC E
6142
S3109   RRC C
69 savelij 6143
        LD IYL,C
36 savelij 6144
        EXX
69 savelij 6145
        LD E,IYL
36 savelij 6146
        DEC D
6147
        RET
6148
 
6149
S31092  RRC C
69 savelij 6150
        LD IYL,C
36 savelij 6151
        EXX
69 savelij 6152
        LD E,IYL
36 savelij 6153
        LD D,1
6154
        RET
6155
 
6156
S31093  RRC C
69 savelij 6157
        LD IYL,C
36 savelij 6158
        EXX
69 savelij 6159
        LD E,IYL
36 savelij 6160
        LD D,0
6161
        RET
6162
 
181 savelij 6163
S311    DB 0xCB,0x31;SLI C
36 savelij 6164
        JP C,S3111
6165
        JR S3110
6166
 
6167
S3112   JR Z,S3114
6168
        ADD A,(HL)
6169
        RRA
6170
        LD (DE),A
6171
        INC E
6172
        JR Z,S31141
6173
        LD (DE),A
6174
        INC E
6175
        JR Z,S31142
6176
S3110   LD A,C
6177
        ADD A,B
6178
        LD C,A
6179
        LD A,(HL)
6180
        INC HL
6181
        LD (DE),A
6182
        INC E
6183
        JP NC,S3112
6184
        JR Z,S3115
69 savelij 6185
        LD IYL,A
36 savelij 6186
        ADD A,(HL)
6187
        RRA
69 savelij 6188
        LD IYH,A
6189
        ADD A,IYL
36 savelij 6190
        RRA
6191
        LD (DE),A
6192
        INC E
6193
        JR Z,S31151
69 savelij 6194
        LD A,IYH
36 savelij 6195
        LD (DE),A
6196
        INC E
6197
        JR Z,S3116
6198
        ADD A,(HL)
6199
        RRA
6200
        LD (DE),A
6201
        INC E
6202
        JP NZ,S3111
6203
        JP S31162
6204
 
6205
S3113   JR Z,S31151
6206
        ADD A,(HL)
6207
        RRA
6208
        LD (DE),A
6209
        INC E
6210
        JR Z,S3116
6211
        LD (DE),A
6212
        INC E
6213
        JR Z,S31162
6214
S3111   LD A,C
6215
        ADD A,B
6216
        LD C,A
6217
        LD A,(HL)
6218
        INC HL
6219
        LD (DE),A
6220
        INC E
6221
        JP NC,S3113
6222
        JP NZ,S3112
6223
        SRL C
69 savelij 6224
        LD IYL,C
36 savelij 6225
        EXX
69 savelij 6226
        LD E,IYL
36 savelij 6227
        LD D,2
6228
        RET
6229
 
6230
S31141  SRL C
69 savelij 6231
        LD IYL,C
36 savelij 6232
        EXX
69 savelij 6233
        LD E,IYL
36 savelij 6234
        LD D,1
6235
        RET
6236
 
6237
S31142  SRL C
69 savelij 6238
        LD IYL,C
36 savelij 6239
        EXX
69 savelij 6240
        LD E,IYL
36 savelij 6241
        LD D,0
6242
        RET
6243
 
6244
S3114   SRL C
69 savelij 6245
        LD IYL,C
36 savelij 6246
        EXX
69 savelij 6247
        LD E,IYL
36 savelij 6248
        LD D,2
6249
        RET
6250
 
6251
S3115   RRC C
69 savelij 6252
        LD IYL,C
36 savelij 6253
        EXX
69 savelij 6254
        LD E,IYL
36 savelij 6255
        RET
6256
 
6257
S31151  RRC C
69 savelij 6258
        LD IYL,C
36 savelij 6259
        EXX
69 savelij 6260
        LD E,IYL
36 savelij 6261
        DEC D
6262
        RET
6263
 
6264
S3116   RRC C
69 savelij 6265
        LD IYL,C
36 savelij 6266
        EXX
69 savelij 6267
        LD E,IYL
36 savelij 6268
        LD D,1
6269
        RET
6270
 
6271
S31162  RRC C
69 savelij 6272
        LD IYL,C
36 savelij 6273
        EXX
69 savelij 6274
        LD E,IYL
36 savelij 6275
        LD D,0
6276
        RET
6277
 
69 savelij 6278
S318    LD A,IXL
36 savelij 6279
        ADD A,A
6280
        JP C,S319
69 savelij 6281
        ADD A,IXL
36 savelij 6282
        JP C,S319
69 savelij 6283
        LD IYL,A
6284
        LD A,IXL
36 savelij 6285
        SRL A
69 savelij 6286
        ADD A,IYL
36 savelij 6287
        JP C,S319
6288
        ADD A,E
6289
        JR Z,S318_
6290
        JP C,S319
6291
        BIT 7,B
6292
        JR Z,S318_
69 savelij 6293
        LD IYL,A
6294
        LD A,IXL
36 savelij 6295
        SRL A
6296
        SRL A
69 savelij 6297
        ADD A,IYL
36 savelij 6298
        JR Z,S318_
6299
        JP C,S319
181 savelij 6300
S318_   DB 0xCB,0x31;SLI C
36 savelij 6301
        JP NC,S3180
6302
        JP S3181
6303
 
6304
S3184   INC E
6305
S3185   RRC C
69 savelij 6306
        LD IYL,C
36 savelij 6307
        EXX
69 savelij 6308
        LD E,IYL
36 savelij 6309
        RET
6310
 
6311
S3182   JR Z,S3184
6312
        INC E
6313
S31822  JR Z,S3185
69 savelij 6314
S318222 LD IYL,A
36 savelij 6315
        ADD A,(HL)
6316
        RRA
69 savelij 6317
        LD IYH,A
6318
        ADD A,IYL
36 savelij 6319
        RRA
6320
        LD (DE),A
6321
        INC E
6322
        JR Z,S3186
69 savelij 6323
        LD A,IYH
36 savelij 6324
        LD (DE),A
6325
        INC E
6326
        JR Z,S31866
6327
        ADD A,(HL)
6328
        RRA
6329
        LD (DE),A
6330
        INC E
6331
        JR Z,S31867
6332
S3181   LD A,C
6333
        ADD A,B
6334
        LD C,A
6335
        LD A,(HL)
6336
        INC HL
69 savelij 6337
        DEC IXL
36 savelij 6338
        LD (DE),A
6339
        JP C,S3182
6340
        JR Z,S31871
6341
        INC E
6342
        JR Z,S31891
6343
        ADD A,(HL)
6344
        RRA
6345
        LD (DE),A
6346
        INC E
6347
        JR Z,S3189
6348
        LD (DE),A
6349
        INC E
6350
        JP NZ,S3180
6351
        JP S31892
6352
 
6353
S31871  INC E
6354
S31891  SRL C
69 savelij 6355
        LD IYL,C
36 savelij 6356
        EXX
69 savelij 6357
        LD E,IYL
36 savelij 6358
        DEC D
6359
        RET
6360
 
6361
S3183   JR Z,S3187
6362
        INC E
6363
        JR Z,S3188
69 savelij 6364
        LD IYL,A
36 savelij 6365
        ADD A,(HL)
6366
        RRA
69 savelij 6367
        LD IYH,A
6368
        ADD A,IYL
36 savelij 6369
        RRA
6370
        LD (DE),A
6371
        INC E
6372
        JR Z,S31891
69 savelij 6373
        LD A,IYH
36 savelij 6374
        LD (DE),A
6375
        INC E
6376
        JR Z,S3189
6377
        ADD A,(HL)
6378
        RRA
6379
        LD (DE),A
6380
        INC E
6381
        JR Z,S31892
6382
S3180   LD A,C
6383
        ADD A,B
6384
        LD C,A
6385
        LD A,(HL)
6386
        INC HL
69 savelij 6387
        DEC IXL
36 savelij 6388
        LD (DE),A
6389
        JP C,S3183
6390
        JR Z,S31844
6391
        INC E
6392
        JP NZ,S318222
6393
        RRC C
69 savelij 6394
        LD IYL,C
36 savelij 6395
        EXX
69 savelij 6396
        LD E,IYL
36 savelij 6397
        RET
6398
 
6399
S3186   RRC C
69 savelij 6400
        LD IYL,C
36 savelij 6401
        EXX
69 savelij 6402
        LD E,IYL
36 savelij 6403
        DEC D
6404
        RET
6405
 
6406
S31866  RRC C
69 savelij 6407
        LD IYL,C
36 savelij 6408
        EXX
69 savelij 6409
        LD E,IYL
36 savelij 6410
        DEC D
6411
        DEC D
6412
        RET
6413
 
6414
S31867  RRC C
69 savelij 6415
        LD IYL,C
36 savelij 6416
        EXX
69 savelij 6417
        LD E,IYL
36 savelij 6418
        DEC D
6419
        DEC D
6420
        DEC D
6421
        RET
6422
 
6423
S31844  INC E
6424
        RRC C
69 savelij 6425
        LD IYL,C
36 savelij 6426
        EXX
69 savelij 6427
        LD E,IYL
36 savelij 6428
        RET
6429
 
6430
S3187   INC E
6431
S3188   SRL C
69 savelij 6432
        LD IYL,C
36 savelij 6433
        EXX
69 savelij 6434
        LD E,IYL
36 savelij 6435
        RET
6436
 
6437
S3189   SRL C
69 savelij 6438
        LD IYL,C
36 savelij 6439
        EXX
69 savelij 6440
        LD E,IYL
36 savelij 6441
        DEC D
6442
        DEC D
6443
        RET
6444
 
6445
S31892  SRL C
69 savelij 6446
        LD IYL,C
36 savelij 6447
        EXX
69 savelij 6448
        LD E,IYL
36 savelij 6449
        DEC D
6450
        DEC D
6451
        DEC D
6452
        RET
6453
 
181 savelij 6454
S319    DB 0xCB,0x31;SLI C
36 savelij 6455
        JP NC,S3190
6456
        JP S3191
6457
 
6458
S3195   RRC C
69 savelij 6459
        LD IYL,C
36 savelij 6460
        EXX
69 savelij 6461
        LD E,IYL
36 savelij 6462
        RET
6463
 
6464
S3192   JR Z,S3195
69 savelij 6465
        LD IYL,A
36 savelij 6466
        ADD A,(HL)
6467
        RRA
69 savelij 6468
        LD IYH,A
6469
        ADD A,IYL
36 savelij 6470
        RRA
6471
        LD (DE),A
6472
        INC E
6473
        JR Z,S3196
69 savelij 6474
        LD A,IYH
36 savelij 6475
        LD (DE),A
6476
        INC E
6477
        JR Z,S31966
6478
        ADD A,(HL)
6479
        RRA
6480
        LD (DE),A
6481
        INC E
6482
        JR Z,S31967
6483
S3191   LD A,C
6484
        ADD A,B
6485
        LD C,A
6486
        LD A,(HL)
6487
        INC HL
6488
        LD (DE),A
6489
        INC E
6490
        JP C,S3192
6491
        JR Z,S3199
6492
        ADD A,(HL)
6493
        RRA
6494
        LD (DE),A
6495
        INC E
6496
        JR Z,S31993
6497
        LD (DE),A
6498
        INC E
6499
        JP NZ,S3190
6500
        JP S31994
6501
 
6502
S3193   JR Z,S3198
69 savelij 6503
        LD IYL,A
36 savelij 6504
        ADD A,(HL)
6505
        RRA
69 savelij 6506
        LD IYH,A
6507
        ADD A,IYL
36 savelij 6508
        RRA
6509
        LD (DE),A
6510
        INC E
6511
        JR Z,S3199
69 savelij 6512
S31933  LD A,IYH
36 savelij 6513
        LD (DE),A
6514
        INC E
6515
        JR Z,S31993
6516
        ADD A,(HL)
6517
        RRA
6518
        LD (DE),A
6519
        INC E
6520
        JR Z,S31994
6521
S3190   LD A,C
6522
        ADD A,B
6523
        LD C,A
6524
        LD A,(HL)
6525
        INC HL
6526
        LD (DE),A
6527
        INC E
6528
        JP C,S3193
6529
        JP NZ,S3192
6530
        RRC C
69 savelij 6531
        LD IYL,C
36 savelij 6532
        EXX
69 savelij 6533
        LD E,IYL
36 savelij 6534
        RET
6535
 
6536
S3196   RRC C
69 savelij 6537
        LD IYL,C
36 savelij 6538
        EXX
69 savelij 6539
        LD E,IYL
36 savelij 6540
        DEC D
6541
        RET
6542
 
6543
S31966  RRC C
69 savelij 6544
        LD IYL,C
36 savelij 6545
        EXX
69 savelij 6546
        LD E,IYL
36 savelij 6547
        DEC D
6548
        DEC D
6549
        RET
6550
 
6551
S31967  RRC C
69 savelij 6552
        LD IYL,C
36 savelij 6553
        EXX
69 savelij 6554
        LD E,IYL
36 savelij 6555
        DEC D
6556
        DEC D
6557
        DEC D
6558
        RET
6559
 
6560
S3198   SRL C
69 savelij 6561
        LD IYL,C
36 savelij 6562
        EXX
69 savelij 6563
        LD E,IYL
36 savelij 6564
        RET
6565
 
6566
S3199   SRL C
69 savelij 6567
        LD IYL,C
36 savelij 6568
        EXX
69 savelij 6569
        LD E,IYL
36 savelij 6570
        DEC D
6571
        RET
6572
 
6573
S31993  SRL C
69 savelij 6574
        LD IYL,C
36 savelij 6575
        EXX
69 savelij 6576
        LD E,IYL
36 savelij 6577
        DEC D
6578
        DEC D
6579
        RET
6580
 
6581
S31994  SRL C
69 savelij 6582
        LD IYL,C
36 savelij 6583
        EXX
69 savelij 6584
        LD E,IYL
36 savelij 6585
        DEC D
6586
        DEC D
6587
        DEC D
6588
        RET
6589
 
6590
;INCLUDE "SGEN4.a80"
6591
S4_     LD D,C
6592
        PUSH DE
6593
        LD D,B
6594
        EXX
6595
        POP BC
6596
S41     SLA B
6597
        JP C,S418
181 savelij 6598
        DB 0xCB,0x31;SLI C
69 savelij 6599
        LD IYH,B
36 savelij 6600
        JP C,S4101
6601
        JP S4100
6602
 
6603
S4102   JR Z,S4104
6604
S410A   INC E
6605
        JR Z,S4105
6606
        LD B,A
6607
        ADD A,(HL)
6608
        RRA
69 savelij 6609
        LD IYL,A
36 savelij 6610
        ADD A,B
6611
        RRA
6612
        LD (DE),A
6613
        INC E
6614
        JR Z,S41052
69 savelij 6615
        LD A,IYL
36 savelij 6616
        LD (DE),A
6617
        INC E
6618
        JR Z,S41053
6619
        ADD A,(HL)
6620
        RRA
6621
        LD (DE),A
6622
        INC E
6623
        JR Z,S41054
6624
S4100   LD A,C
69 savelij 6625
        ADD A,IYH
36 savelij 6626
        LD C,A
6627
        LD A,(HL)
6628
        INC HL
69 savelij 6629
        DEC IXL
36 savelij 6630
        LD (DE),A
6631
        JP NC,S4102
6632
        JR Z,S4106
6633
        INC E
6634
        JR Z,S4107
6635
        LD (DE),A
6636
        INC E
6637
        JP NZ,S41033
6638
        JP S4109
6639
S4103   JR Z,S4108
6640
        INC E
6641
        JR Z,S4109
6642
S41033  LD B,A
6643
        ADD A,(HL)
6644
        RRA
69 savelij 6645
        LD IYL,A
36 savelij 6646
        ADD A,B
6647
        RRA
6648
        LD (DE),A
6649
        INC E
6650
        JR Z,S41092
69 savelij 6651
        LD A,IYL
36 savelij 6652
        LD (DE),A
6653
        INC E
6654
        JR Z,S41093
6655
        ADD A,(HL)
6656
        RRA
6657
        LD (DE),A
6658
        INC E
6659
        JR Z,S41094
6660
S4101   LD A,C
69 savelij 6661
        ADD A,IYH
36 savelij 6662
        LD C,A
6663
        LD A,(HL)
6664
        INC HL
69 savelij 6665
        DEC IXL
36 savelij 6666
        LD (DE),A
6667
        JP NC,S4103
6668
        JP NZ,S410A
6669
S4104   INC E
6670
S4105   SRL C
69 savelij 6671
        LD IYL,C
36 savelij 6672
        EXX
69 savelij 6673
        LD E,IYL
36 savelij 6674
        LD D,3
6675
        RET
6676
 
6677
S41052  SRL C
69 savelij 6678
        LD IYL,C
36 savelij 6679
        EXX
69 savelij 6680
        LD E,IYL
36 savelij 6681
        LD D,2
6682
        RET
6683
 
6684
S41053  SRL C
69 savelij 6685
        LD IYL,C
36 savelij 6686
        EXX
69 savelij 6687
        LD E,IYL
36 savelij 6688
        LD D,1
6689
        RET
6690
 
6691
S41054  SRL C
69 savelij 6692
        LD IYL,C
36 savelij 6693
        EXX
69 savelij 6694
        LD E,IYL
36 savelij 6695
        LD D,0
6696
        RET
6697
 
6698
S4106   INC E
6699
S4107   RRC C
69 savelij 6700
        LD IYL,C
36 savelij 6701
        EXX
69 savelij 6702
        LD E,IYL
36 savelij 6703
        RET
6704
 
6705
S4108   INC E
6706
S4109   RRC C
69 savelij 6707
        LD IYL,C
36 savelij 6708
        EXX
69 savelij 6709
        LD E,IYL
36 savelij 6710
        LD D,3
6711
        RET
6712
 
6713
S41092  RRC C
69 savelij 6714
        LD IYL,C
36 savelij 6715
        EXX
69 savelij 6716
        LD E,IYL
36 savelij 6717
        LD D,2
6718
        RET
6719
 
6720
S41093  RRC C
69 savelij 6721
        LD IYL,C
36 savelij 6722
        EXX
69 savelij 6723
        LD E,IYL
36 savelij 6724
        LD D,1
6725
        RET
6726
 
6727
S41094  RRC C
69 savelij 6728
        LD IYL,C
36 savelij 6729
        EXX
69 savelij 6730
        LD E,IYL
36 savelij 6731
        LD D,0
6732
        RET
6733
 
181 savelij 6734
S418    DB 0xCB,0x31;SLI C
36 savelij 6735
        JP NC,S4180
6736
        JP S4181
6737
 
6738
S4184   INC E
6739
S4185   RRC C
69 savelij 6740
        LD IYL,C
36 savelij 6741
        EXX
69 savelij 6742
        LD E,IYL
36 savelij 6743
        RET
6744
 
6745
S41844  INC E
6746
        RRC C
69 savelij 6747
        LD IYL,C
36 savelij 6748
        EXX
69 savelij 6749
        LD E,IYL
36 savelij 6750
        RET
6751
 
6752
S4182   JR Z,S4184
6753
        INC E
6754
S41822  JR Z,S4185
6755
S418222 LD (DE),A
6756
        INC E
6757
        JR Z,S4186
6758
        ADD A,(HL)
6759
        RRA
6760
        LD (DE),A
6761
        INC E
6762
        JR Z,S41866
6763
        LD (DE),A
6764
        INC E
6765
        JR Z,S41867
6766
        ADD A,(HL)
6767
        RRA
6768
        LD (DE),A
6769
        INC E
6770
        JR Z,S41868
6771
S4181   LD A,C
6772
        ADD A,B
6773
        LD C,A
6774
        LD A,(HL)
6775
        INC HL
69 savelij 6776
        DEC IXL
36 savelij 6777
        LD (DE),A
6778
        JP C,S4182
6779
        JR Z,S41871
6780
        JP S41831
6781
S4183   JR Z,S4187
6782
        INC E
6783
        JR Z,S4188
6784
        LD (DE),A
6785
S41831  INC E
6786
        JR Z,S4189
6787
        ADD A,(HL)
6788
        RRA
6789
        LD (DE),A
6790
        INC E
6791
        JR Z,S41891
6792
        LD (DE),A
6793
        INC E
6794
        JR Z,S41892
6795
        ADD A,(HL)
6796
        RRA
6797
        LD (DE),A
6798
        INC E
6799
        JR Z,S41893
6800
S4180   LD A,C
6801
        ADD A,B
6802
        LD C,A
6803
        LD A,(HL)
6804
        INC HL
69 savelij 6805
        DEC IXL
36 savelij 6806
        LD (DE),A
6807
        JP C,S4183
6808
        JR Z,S41844
6809
        INC E
6810
        JP NZ,S418222
6811
        RRC C
69 savelij 6812
        LD IYL,C
36 savelij 6813
        EXX
69 savelij 6814
        LD E,IYL
36 savelij 6815
        RET
6816
 
6817
S4186   RRC C
69 savelij 6818
        LD IYL,C
36 savelij 6819
        EXX
69 savelij 6820
        LD E,IYL
36 savelij 6821
        LD D,3
6822
        RET
6823
 
6824
S41866  RRC C
69 savelij 6825
        LD IYL,C
36 savelij 6826
        EXX
69 savelij 6827
        LD E,IYL
36 savelij 6828
        LD D,2
6829
        RET
6830
 
6831
S41867  RRC C
69 savelij 6832
        LD IYL,C
36 savelij 6833
        EXX
69 savelij 6834
        LD E,IYL
36 savelij 6835
        LD D,1
6836
        RET
6837
 
6838
S41868  RRC C
69 savelij 6839
        LD IYL,C
36 savelij 6840
        EXX
69 savelij 6841
        LD E,IYL
36 savelij 6842
        LD D,0
6843
        RET
6844
 
6845
S4187   INC E
6846
S4188   SRL C
69 savelij 6847
        LD IYL,C
36 savelij 6848
        EXX
69 savelij 6849
        LD E,IYL
36 savelij 6850
        RET
6851
 
6852
S4189   SRL C
69 savelij 6853
        LD IYL,C
36 savelij 6854
        EXX
69 savelij 6855
        LD E,IYL
36 savelij 6856
        LD D,3
6857
        RET
6858
 
6859
S41871  INC E
6860
S41891  SRL C
69 savelij 6861
        LD IYL,C
36 savelij 6862
        EXX
69 savelij 6863
        LD E,IYL
36 savelij 6864
        LD D,2
6865
        RET
6866
 
6867
S41892  SRL C
69 savelij 6868
        LD IYL,C
36 savelij 6869
        EXX
69 savelij 6870
        LD E,IYL
36 savelij 6871
        LD D,1
6872
        RET
6873
 
6874
S41893  SRL C
69 savelij 6875
        LD IYL,C
36 savelij 6876
        EXX
69 savelij 6877
        LD E,IYL
36 savelij 6878
        LD D,0
6879
        RET
6880
 
6881
;INCLUDE "SGEN5.a80"
6882
S5_     LD D,C
6883
        PUSH DE
6884
        LD D,B
6885
        EXX
6886
        POP BC
6887
S51     SLA B
6888
        JP C,S518
181 savelij 6889
        DB 0xCB,0x31;SLI C
36 savelij 6890
        JP C,S5101
6891
        JP S5100
6892
 
6893
S5102   JR Z,S5104
6894
S510A   INC E
6895
        JR Z,S5105
69 savelij 6896
        LD IYL,A
36 savelij 6897
        ADD A,(HL)
6898
        RRA
69 savelij 6899
        LD IYH,A
6900
        ADD A,IYL
36 savelij 6901
        RRA
6902
        LD (DE),A
6903
        INC E
6904
        JR Z,S51052
69 savelij 6905
        LD A,IYH
36 savelij 6906
        LD (DE),A
6907
        INC E
6908
        JR Z,S51053
6909
        ADD A,(HL)
6910
        RRA
6911
        LD (DE),A
6912
        INC E
6913
        JR Z,S51054
6914
        ADD A,(HL)
6915
        RRA
6916
        LD (DE),A
6917
        INC E
6918
        JR Z,S51055
6919
S5100   LD A,C
6920
        ADD A,B
6921
        LD C,A
6922
        LD A,(HL)
6923
        INC HL
69 savelij 6924
        DEC IXL
36 savelij 6925
        LD (DE),A
6926
        JP NC,S5102
6927
        JR Z,S5106
6928
        INC E
6929
        JR Z,S5107
6930
        LD (DE),A
6931
        DEC E
6932
        INC E
6933
S5103   JR Z,S5108
6934
        INC E
6935
        JR Z,S5109
69 savelij 6936
        LD IYL,A
36 savelij 6937
        ADD A,(HL)
6938
        RRA
69 savelij 6939
        LD IYH,A
6940
        ADD A,IYL
36 savelij 6941
        RRA
6942
        LD (DE),A
6943
        INC E
6944
        JR Z,S51092
69 savelij 6945
        LD A,IYH
36 savelij 6946
        LD (DE),A
6947
        INC E
6948
        JR Z,S51093
6949
        ADD A,(HL)
6950
        RRA
6951
        LD (DE),A
6952
        INC E
6953
        JR Z,S51094
6954
        ADD A,(HL)
6955
        RRA
6956
        LD (DE),A
6957
        INC E
6958
        JR Z,S51095
6959
S5101   LD A,C
6960
        ADD A,B
6961
        LD C,A
6962
        LD A,(HL)
6963
        INC HL
69 savelij 6964
        DEC IXL
36 savelij 6965
        LD (DE),A
6966
        JP NC,S5103
6967
        JP NZ,S510A
6968
S5104   INC E
6969
S5105   SRL C
69 savelij 6970
        LD IYL,C
36 savelij 6971
        EXX
69 savelij 6972
        LD E,IYL
36 savelij 6973
        LD D,4
6974
        RET
6975
 
6976
S51052  SRL C
69 savelij 6977
        LD IYL,C
36 savelij 6978
        EXX
69 savelij 6979
        LD E,IYL
36 savelij 6980
        LD D,3
6981
        RET
6982
 
6983
S51053  SRL C
69 savelij 6984
        LD IYL,C
36 savelij 6985
        EXX
69 savelij 6986
        LD E,IYL
36 savelij 6987
        LD D,2
6988
        RET
6989
 
6990
S51054  SRL C
69 savelij 6991
        LD IYL,C
36 savelij 6992
        EXX
69 savelij 6993
        LD E,IYL
36 savelij 6994
        LD D,1
6995
        RET
6996
 
6997
S51055  SRL C
69 savelij 6998
        LD IYL,C
36 savelij 6999
        EXX
69 savelij 7000
        LD E,IYL
36 savelij 7001
        LD D,0
7002
        RET
7003
 
7004
S5106   INC E
7005
S5107   RRC C
69 savelij 7006
        LD IYL,C
36 savelij 7007
        EXX
69 savelij 7008
        LD E,IYL
36 savelij 7009
        RET
7010
 
7011
S5108   INC E
7012
S5109   RRC C
69 savelij 7013
        LD IYL,C
36 savelij 7014
        EXX
69 savelij 7015
        LD E,IYL
36 savelij 7016
        LD D,4
7017
        RET
7018
 
7019
S51092  RRC C
69 savelij 7020
        LD IYL,C
36 savelij 7021
        EXX
69 savelij 7022
        LD E,IYL
36 savelij 7023
        LD D,3
7024
        RET
7025
 
7026
S51093  RRC C
69 savelij 7027
        LD IYL,C
36 savelij 7028
        EXX
69 savelij 7029
        LD E,IYL
36 savelij 7030
        LD D,2
7031
        RET
7032
 
7033
S51094  RRC C
69 savelij 7034
        LD IYL,C
36 savelij 7035
        EXX
69 savelij 7036
        LD E,IYL
36 savelij 7037
        LD D,1
7038
        RET
7039
 
7040
S51095  RRC C
69 savelij 7041
        LD IYL,C
36 savelij 7042
        EXX
69 savelij 7043
        LD E,IYL
36 savelij 7044
        LD D,0
7045
        RET
7046
 
181 savelij 7047
S518    DB 0xCB,0x31;SLI C
36 savelij 7048
        JP NC,S5180
7049
        JP S5181
7050
 
7051
S5184   INC E
7052
S5185   RRC C
69 savelij 7053
        LD IYL,C
36 savelij 7054
        EXX
69 savelij 7055
        LD E,IYL
36 savelij 7056
        RET
7057
 
7058
S5186   RRC C
69 savelij 7059
        LD IYL,C
36 savelij 7060
        EXX
69 savelij 7061
        LD E,IYL
36 savelij 7062
        LD D,4
7063
        RET
7064
 
7065
S51866  RRC C
69 savelij 7066
        LD IYL,C
36 savelij 7067
        EXX
69 savelij 7068
        LD E,IYL
36 savelij 7069
        LD D,3
7070
        RET
7071
 
7072
S51867  RRC C
69 savelij 7073
        LD IYL,C
36 savelij 7074
        EXX
69 savelij 7075
        LD E,IYL
36 savelij 7076
        LD D,2
7077
        RET
7078
 
7079
S51868  RRC C
69 savelij 7080
        LD IYL,C
36 savelij 7081
        EXX
69 savelij 7082
        LD E,IYL
36 savelij 7083
        LD D,1
7084
        RET
7085
 
7086
S51869  RRC C
69 savelij 7087
        LD IYL,C
36 savelij 7088
        EXX
69 savelij 7089
        LD E,IYL
36 savelij 7090
        LD D,0
7091
        RET
7092
 
7093
S5182   JR Z,S5184
7094
        INC E
7095
S51822  JR Z,S5185
69 savelij 7096
S518222 LD IYL,A
36 savelij 7097
        ADD A,(HL)
7098
        RRA
69 savelij 7099
        LD IYH,A
7100
        ADD A,IYL
36 savelij 7101
        RRA
7102
        LD (DE),A
7103
        INC E
7104
        JR Z,S5186
69 savelij 7105
        ADD A,IYH
36 savelij 7106
        RRA
7107
        LD (DE),A
7108
        INC E
7109
        JR Z,S51866
69 savelij 7110
        LD A,IYH
36 savelij 7111
        LD (DE),A
7112
        INC E
7113
        JR Z,S51867
7114
        ADD A,(HL)
7115
        RRA
7116
        LD (DE),A
7117
        INC E
7118
        JR Z,S51868
7119
        ADD A,(HL)
7120
        RRA
7121
        LD (DE),A
7122
        INC E
7123
        JR Z,S51869
7124
S5181   LD A,C
7125
        ADD A,B
7126
        LD C,A
7127
        LD A,(HL)
7128
        INC HL
69 savelij 7129
        DEC IXL
36 savelij 7130
        LD (DE),A
7131
        JP C,S5182
7132
        JR Z,S51871
7133
        JP S51831
7134
S5183   JR Z,S5187
7135
        INC E
7136
        JR Z,S5188
7137
        LD (DE),A
7138
S51831  INC E
7139
        JR Z,S5189
69 savelij 7140
        LD IYL,A
36 savelij 7141
        ADD A,(HL)
7142
        RRA
69 savelij 7143
        LD IYH,A
7144
        ADD A,IYL
36 savelij 7145
        RRA
7146
        LD (DE),A
7147
        INC E
7148
        JR Z,S51891
69 savelij 7149
        LD A,IYH
36 savelij 7150
        LD (DE),A
7151
        INC E
7152
        JR Z,S51892
7153
        ADD A,(HL)
7154
        RRA
7155
        LD (DE),A
7156
        INC E
7157
        JR Z,S51893
7158
        ADD A,(HL)
7159
        RRA
7160
        LD (DE),A
7161
        INC E
7162
        JR Z,S51894
7163
S5180   LD A,C
7164
        ADD A,B
7165
        LD C,A
7166
        LD A,(HL)
7167
        INC HL
69 savelij 7168
        DEC IXL
36 savelij 7169
        LD (DE),A
7170
        JP C,S5183
7171
        JR Z,S51844
7172
        INC E
7173
        JP NZ,S518222
7174
        RRC C
69 savelij 7175
        LD IYL,C
36 savelij 7176
        EXX
69 savelij 7177
        LD E,IYL
36 savelij 7178
        RET
7179
 
7180
S51844  INC E
7181
        RRC C
69 savelij 7182
        LD IYL,C
36 savelij 7183
        EXX
69 savelij 7184
        LD E,IYL
36 savelij 7185
        RET
7186
 
7187
S5187   INC E
7188
S5188   SRL C
69 savelij 7189
        LD IYL,C
36 savelij 7190
        EXX
69 savelij 7191
        LD E,IYL
36 savelij 7192
        RET
7193
 
7194
S5189   SRL C
69 savelij 7195
        LD IYL,C
36 savelij 7196
        EXX
69 savelij 7197
        LD E,IYL
36 savelij 7198
        LD D,4
7199
        RET
7200
 
7201
S51871  INC E
7202
S51891  SRL C
69 savelij 7203
        LD IYL,C
36 savelij 7204
        EXX
69 savelij 7205
        LD E,IYL
36 savelij 7206
        LD D,3
7207
        RET
7208
 
7209
S51892  SRL C
69 savelij 7210
        LD IYL,C
36 savelij 7211
        EXX
69 savelij 7212
        LD E,IYL
36 savelij 7213
        LD D,2
7214
        RET
7215
 
7216
S51893  SRL C
69 savelij 7217
        LD IYL,C
36 savelij 7218
        EXX
69 savelij 7219
        LD E,IYL
36 savelij 7220
        LD D,1
7221
        RET
7222
 
7223
S51894  SRL C
69 savelij 7224
        LD IYL,C
36 savelij 7225
        EXX
69 savelij 7226
        LD E,IYL
36 savelij 7227
        LD D,0
7228
        RET
7229
 
7230
;INCLUDE "SGEN6.a80"
7231
S6_     LD D,C
7232
        PUSH DE
7233
        LD D,B
7234
        EXX
7235
        POP BC
7236
S61     SLA B
7237
        JP C,S618
181 savelij 7238
        DB 0xCB,0x31;SLI C
36 savelij 7239
        JP C,S6101
7240
        JP S6100
7241
 
7242
S61052  SRL C
69 savelij 7243
        LD IYL,C
36 savelij 7244
        EXX
69 savelij 7245
        LD E,IYL
36 savelij 7246
        LD D,4
7247
        RET
7248
 
7249
S61053  SRL C
69 savelij 7250
        LD IYL,C
36 savelij 7251
        EXX
69 savelij 7252
        LD E,IYL
36 savelij 7253
        LD D,3
7254
        RET
7255
 
7256
S61054  SRL C
69 savelij 7257
        LD IYL,C
36 savelij 7258
        EXX
69 savelij 7259
        LD E,IYL
36 savelij 7260
        LD D,2
7261
        RET
7262
 
7263
S61055  SRL C
69 savelij 7264
        LD IYL,C
36 savelij 7265
        EXX
69 savelij 7266
        LD E,IYL
36 savelij 7267
        LD D,1
7268
        RET
7269
 
7270
S61056  SRL C
69 savelij 7271
        LD IYL,C
36 savelij 7272
        EXX
69 savelij 7273
        LD E,IYL
36 savelij 7274
        LD D,0
7275
        RET
7276
 
7277
S6102   JR Z,S6104
7278
S610A   INC E
7279
        JR Z,S6105
69 savelij 7280
        LD IYL,A
36 savelij 7281
        ADD A,(HL)
7282
        RRA
69 savelij 7283
        LD IYH,A
7284
        ADD A,IYL
36 savelij 7285
        RRA
7286
        LD (DE),A
7287
        INC E
7288
        JR Z,S61052
69 savelij 7289
        ADD A,IYH
36 savelij 7290
        RRA
7291
        LD (DE),A
7292
        INC E
7293
        JR Z,S61053
69 savelij 7294
        LD A,IYH
36 savelij 7295
        LD (DE),A
7296
        INC E
7297
        JR Z,S61054
7298
        ADD A,(HL)
7299
        RRA
7300
        LD (DE),A
7301
        INC E
7302
        JR Z,S61055
7303
        ADD A,(HL)
7304
        RRA
7305
        LD (DE),A
7306
        INC E
7307
        JR Z,S61056
7308
S6100   LD A,C
7309
        ADD A,B
7310
        LD C,A
7311
        LD A,(HL)
7312
        INC HL
69 savelij 7313
        DEC IXL
36 savelij 7314
        LD (DE),A
7315
        JP NC,S6102
7316
        JR Z,S6106
7317
        INC E
7318
        JR Z,S6107
7319
        LD (DE),A
7320
        DEC E
7321
        INC E
7322
S6103   JR Z,S6108
7323
        INC E
7324
        JR Z,S6109
69 savelij 7325
        LD IYL,A
36 savelij 7326
        ADD A,(HL)
7327
        RRA
69 savelij 7328
        LD IYH,A
7329
        ADD A,IYL
36 savelij 7330
        RRA
7331
        LD (DE),A
7332
        INC E
7333
        JR Z,S61092
69 savelij 7334
        ADD A,IYH
36 savelij 7335
        RRA
7336
        LD (DE),A
7337
        INC E
7338
        JR Z,S61093
69 savelij 7339
        LD A,IYH
36 savelij 7340
        LD (DE),A
7341
        INC E
7342
        JR Z,S61094
7343
        ADD A,(HL)
7344
        RRA
7345
        LD (DE),A
7346
        INC E
7347
        JR Z,S61095
7348
        ADD A,(HL)
7349
        RRA
7350
        LD (DE),A
7351
        INC E
7352
        JR Z,S61096
7353
S6101   LD A,C
7354
        ADD A,B
7355
        LD C,A
7356
        LD A,(HL)
7357
        INC HL
69 savelij 7358
        DEC IXL
36 savelij 7359
        LD (DE),A
7360
        JP NC,S6103
7361
        JP NZ,S610A
7362
S6104   INC E
7363
S6105   SRL C
69 savelij 7364
        LD IYL,C
36 savelij 7365
        EXX
69 savelij 7366
        LD E,IYL
36 savelij 7367
        LD D,5
7368
        RET
7369
 
7370
S6106   INC E
7371
S6107   RRC C
69 savelij 7372
        LD IYL,C
36 savelij 7373
        EXX
69 savelij 7374
        LD E,IYL
36 savelij 7375
        RET
7376
 
7377
S6108   INC E
7378
S6109   RRC C
69 savelij 7379
        LD IYL,C
36 savelij 7380
        EXX
69 savelij 7381
        LD E,IYL
36 savelij 7382
        LD D,5
7383
        RET
7384
 
7385
S61092  RRC C
69 savelij 7386
        LD IYL,C
36 savelij 7387
        EXX
69 savelij 7388
        LD E,IYL
36 savelij 7389
        LD D,4
7390
        RET
7391
 
7392
S61093  RRC C
69 savelij 7393
        LD IYL,C
36 savelij 7394
        EXX
69 savelij 7395
        LD E,IYL
36 savelij 7396
        LD D,3
7397
        RET
7398
 
7399
S61094  RRC C
69 savelij 7400
        LD IYL,C
36 savelij 7401
        EXX
69 savelij 7402
        LD E,IYL
36 savelij 7403
        LD D,2
7404
        RET
7405
 
7406
S61095  RRC C
69 savelij 7407
        LD IYL,C
36 savelij 7408
        EXX
69 savelij 7409
        LD E,IYL
36 savelij 7410
        LD D,1
7411
        RET
7412
 
7413
S61096  RRC C
69 savelij 7414
        LD IYL,C
36 savelij 7415
        EXX
69 savelij 7416
        LD E,IYL
36 savelij 7417
        LD D,0
7418
        RET
7419
 
181 savelij 7420
S618    DB 0xCB,0x31;SLI C
36 savelij 7421
        JP NC,S6180
7422
        JP S6181
7423
 
7424
S6184   INC E
7425
S6185   RRC C
69 savelij 7426
        LD IYL,C
36 savelij 7427
        EXX
69 savelij 7428
        LD E,IYL
36 savelij 7429
        RET
7430
 
7431
S6186   RRC C
69 savelij 7432
        LD IYL,C
36 savelij 7433
        EXX
69 savelij 7434
        LD E,IYL
36 savelij 7435
        LD D,5
7436
        RET
7437
 
7438
S61866  RRC C
69 savelij 7439
        LD IYL,C
36 savelij 7440
        EXX
69 savelij 7441
        LD E,IYL
36 savelij 7442
        LD D,4
7443
        RET
7444
 
7445
S61867  RRC C
69 savelij 7446
        LD IYL,C
36 savelij 7447
        EXX
69 savelij 7448
        LD E,IYL
36 savelij 7449
        LD D,3
7450
        RET
7451
 
7452
S61868  RRC C
69 savelij 7453
        LD IYL,C
36 savelij 7454
        EXX
69 savelij 7455
        LD E,IYL
36 savelij 7456
        LD D,2
7457
        RET
7458
 
7459
S61869  RRC C
69 savelij 7460
        LD IYL,C
36 savelij 7461
        EXX
69 savelij 7462
        LD E,IYL
36 savelij 7463
        LD D,1
7464
        RET
7465
 
7466
S6186A  RRC C
69 savelij 7467
        LD IYL,C
36 savelij 7468
        EXX
69 savelij 7469
        LD E,IYL
36 savelij 7470
        LD D,0
7471
        RET
7472
 
7473
S6182   JR Z,S6184
7474
        INC E
7475
S61822  JR Z,S6185
7476
S618222 LD (DE),A
7477
        INC E
7478
        JR Z,S6186
69 savelij 7479
        LD IYL,A
36 savelij 7480
        ADD A,(HL)
7481
        RRA
69 savelij 7482
        LD IYH,A
7483
        ADD A,IYL
36 savelij 7484
        RRA
7485
        LD (DE),A
7486
        INC E
7487
        JR Z,S61866
69 savelij 7488
        ADD A,IYH
36 savelij 7489
        RRA
7490
        LD (DE),A
7491
        INC E
7492
        JR Z,S61867
69 savelij 7493
        LD A,IYH
36 savelij 7494
        LD (DE),A
7495
        INC E
7496
        JR Z,S61868
7497
        ADD A,(HL)
7498
        RRA
7499
        LD (DE),A
7500
        INC E
7501
        JR Z,S61869
7502
        ADD A,(HL)
7503
        RRA
7504
        LD (DE),A
7505
        INC E
7506
        JR Z,S6186A
7507
S6181   LD A,C
7508
        ADD A,B
7509
        LD C,A
7510
        LD A,(HL)
7511
        INC HL
69 savelij 7512
        DEC IXL
36 savelij 7513
        LD (DE),A
7514
        JP C,S6182
7515
        JR Z,S61871
7516
        JP S61831
7517
S6183   JR Z,S6187
7518
        INC E
7519
        JR Z,S6188
7520
        LD (DE),A
7521
S61831  INC E
7522
        JR Z,S6189
69 savelij 7523
        LD IYL,A
36 savelij 7524
        ADD A,(HL)
7525
        RRA
69 savelij 7526
        LD IYH,A
7527
        ADD A,IYL
36 savelij 7528
        RRA
7529
        LD (DE),A
7530
        INC E
7531
        JR Z,S61891
69 savelij 7532
        ADD A,IYH
36 savelij 7533
        RRA
7534
        LD (DE),A
7535
        INC E
7536
        JR Z,S61892
69 savelij 7537
        LD A,IYH
36 savelij 7538
        LD (DE),A
7539
        INC E
7540
        JR Z,S61893
7541
        ADD A,(HL)
7542
        RRA
7543
        LD (DE),A
7544
        INC E
7545
        JR Z,S61894
7546
        ADD A,(HL)
7547
        RRA
7548
        LD (DE),A
7549
        INC E
7550
        JR Z,S61895
7551
S6180   LD A,C
7552
        ADD A,B
7553
        LD C,A
7554
        LD A,(HL)
7555
        INC HL
69 savelij 7556
        DEC IXL
36 savelij 7557
        LD (DE),A
7558
        JP C,S6183
7559
        JR Z,S61844
7560
        INC E
7561
        JP NZ,S618222
7562
        RRC C
69 savelij 7563
        LD IYL,C
36 savelij 7564
        EXX
69 savelij 7565
        LD E,IYL
36 savelij 7566
        RET
7567
 
7568
S61844  INC E
7569
        RRC C
69 savelij 7570
        LD IYL,C
36 savelij 7571
        EXX
69 savelij 7572
        LD E,IYL
36 savelij 7573
        RET
7574
 
7575
S6187   INC E
7576
S6188   SRL C
69 savelij 7577
        LD IYL,C
36 savelij 7578
        EXX
69 savelij 7579
        LD E,IYL
36 savelij 7580
        RET
7581
 
7582
S6189    SRL C
69 savelij 7583
        LD IYL,C
36 savelij 7584
        EXX
69 savelij 7585
        LD E,IYL
36 savelij 7586
        LD D,5
7587
        RET
7588
 
7589
S61871  INC E
7590
S61891  SRL C
69 savelij 7591
        LD IYL,C
36 savelij 7592
        EXX
69 savelij 7593
        LD E,IYL
36 savelij 7594
        LD D,4
7595
        RET
7596
 
7597
S61892  SRL C
69 savelij 7598
        LD IYL,C
36 savelij 7599
        EXX
69 savelij 7600
        LD E,IYL
36 savelij 7601
        LD D,3
7602
        RET
7603
 
7604
S61893  SRL C
69 savelij 7605
        LD IYL,C
36 savelij 7606
        EXX
69 savelij 7607
        LD E,IYL
36 savelij 7608
        LD D,2
7609
        RET
7610
 
7611
S61894  SRL C
69 savelij 7612
        LD IYL,C
36 savelij 7613
        EXX
69 savelij 7614
        LD E,IYL
36 savelij 7615
        LD D,1
7616
        RET
7617
 
7618
S61895  SRL C
69 savelij 7619
        LD IYL,C
36 savelij 7620
        EXX
69 savelij 7621
        LD E,IYL
36 savelij 7622
        LD D,0
7623
        RET
7624
 
7625
;INCLUDE "SGEN7.a80"
7626
S7_     LD D,C
7627
        PUSH DE
7628
        LD D,B
7629
        EXX
7630
        POP BC
7631
S71     SLA B
7632
        JP C,S718
181 savelij 7633
        DB 0xCB,0x31;SLI C
36 savelij 7634
        JP C,S7101
7635
        JP S7100
7636
 
7637
S71052  SRL C
69 savelij 7638
        LD IYL,C
36 savelij 7639
        EXX
69 savelij 7640
        LD E,IYL
36 savelij 7641
        LD D,5
7642
        RET
7643
 
7644
S71053  SRL C
69 savelij 7645
        LD IYL,C
36 savelij 7646
        EXX
69 savelij 7647
        LD E,IYL
36 savelij 7648
        LD D,4
7649
        RET
7650
 
7651
S71054  SRL C
69 savelij 7652
        LD IYL,C
36 savelij 7653
        EXX
69 savelij 7654
        LD E,IYL
36 savelij 7655
        LD D,3
7656
        RET
7657
 
7658
S71055  SRL C
69 savelij 7659
        LD IYL,C
36 savelij 7660
        EXX
69 savelij 7661
        LD E,IYL
36 savelij 7662
        LD D,2
7663
        RET
7664
 
7665
S71056  SRL C
69 savelij 7666
        LD IYL,C
36 savelij 7667
        EXX
69 savelij 7668
        LD E,IYL
36 savelij 7669
        LD D,1
7670
        RET
7671
 
7672
S71057  SRL C
69 savelij 7673
        LD IYL,C
36 savelij 7674
        EXX
69 savelij 7675
        LD E,IYL
36 savelij 7676
        LD D,0
7677
        RET
7678
 
7679
S7102   JR Z,S7104
7680
S710A   INC E
7681
        JR Z,S7105
7682
        LD (DE),A
7683
        INC E
7684
        JR Z,S71052
69 savelij 7685
        LD IYL,A
36 savelij 7686
        ADD A,(HL)
7687
        RRA
69 savelij 7688
        LD IYH,A
7689
        ADD A,IYL
36 savelij 7690
        RRA
7691
        LD (DE),A
7692
        INC E
7693
        JR Z,S71053
69 savelij 7694
        ADD A,IYH
36 savelij 7695
        RRA
7696
        LD (DE),A
7697
        INC E
7698
        JR Z,S71054
69 savelij 7699
        LD A,IYH
36 savelij 7700
        LD (DE),A
7701
        INC E
7702
        JR Z,S71055
7703
        ADD A,(HL)
7704
        RRA
7705
        LD (DE),A
7706
        INC E
7707
        JR Z,S71056
7708
        ADD A,(HL)
7709
        RRA
7710
        LD (DE),A
7711
        INC E
7712
        JR Z,S71057
7713
S7100   LD A,C
7714
        ADD A,B
7715
        LD C,A
7716
        LD A,(HL)
7717
        INC HL
69 savelij 7718
        DEC IXL
36 savelij 7719
        LD (DE),A
7720
        JP NC,S7102
7721
        JR Z,S7106
7722
        INC E
7723
        JR Z,S7107
7724
        LD (DE),A
7725
        DEC E
7726
        INC E
7727
S7103   JR Z,S7108
7728
        INC E
7729
        JR Z,S7109
7730
        LD (DE),A
7731
        INC E
7732
        JR Z,S71092
69 savelij 7733
        LD IYL,A
36 savelij 7734
        ADD A,(HL)
7735
        RRA
69 savelij 7736
        LD IYH,A
7737
        ADD A,IYL
36 savelij 7738
        RRA
7739
        LD (DE),A
7740
        INC E
7741
        JR Z,S71093
69 savelij 7742
        ADD A,IYH
36 savelij 7743
        RRA
7744
        LD (DE),A
7745
        INC E
7746
        JR Z,S71094
69 savelij 7747
        LD A,IYH
36 savelij 7748
        LD (DE),A
7749
        INC E
7750
        JR Z,S71095
7751
        ADD A,(HL)
7752
        RRA
7753
        LD (DE),A
7754
        INC E
7755
        JR Z,S71096
7756
        ADD A,(HL)
7757
        RRA
7758
        LD (DE),A
7759
        INC E
7760
        JR Z,S71097
7761
S7101   LD A,C
7762
        ADD A,B
7763
        LD C,A
7764
        LD A,(HL)
7765
        INC HL
69 savelij 7766
        DEC IXL
36 savelij 7767
        LD (DE),A
7768
        JP NC,S7103
7769
        JP NZ,S710A
7770
S7104   INC E
7771
S7105   SRL C
69 savelij 7772
        LD IYL,C
36 savelij 7773
        EXX
69 savelij 7774
        LD E,IYL
36 savelij 7775
        LD D,6
7776
        RET
7777
 
7778
S7106   INC E
7779
S7107   RRC C
69 savelij 7780
        LD IYL,C
36 savelij 7781
        EXX
69 savelij 7782
        LD E,IYL
36 savelij 7783
        RET
7784
 
7785
S7108   INC E
7786
S7109   RRC C
69 savelij 7787
        LD IYL,C
36 savelij 7788
        EXX
69 savelij 7789
        LD E,IYL
36 savelij 7790
        LD D,6
7791
        RET
7792
 
7793
S71092  RRC C
69 savelij 7794
        LD IYL,C
36 savelij 7795
        EXX
69 savelij 7796
        LD E,IYL
36 savelij 7797
        LD D,5
7798
        RET
7799
 
7800
S71093  RRC C
69 savelij 7801
        LD IYL,C
36 savelij 7802
        EXX
69 savelij 7803
        LD E,IYL
36 savelij 7804
        LD D,4
7805
        RET
7806
 
7807
S71094  RRC C
69 savelij 7808
        LD IYL,C
36 savelij 7809
        EXX
69 savelij 7810
        LD E,IYL
36 savelij 7811
        LD D,3
7812
        RET
7813
 
7814
S71095  RRC C
69 savelij 7815
        LD IYL,C
36 savelij 7816
        EXX
69 savelij 7817
        LD E,IYL
36 savelij 7818
        LD D,2
7819
        RET
7820
 
7821
S71096  RRC C
69 savelij 7822
        LD IYL,C
36 savelij 7823
        EXX
69 savelij 7824
        LD E,IYL
36 savelij 7825
        LD D,1
7826
        RET
7827
 
7828
S71097  RRC C
69 savelij 7829
        LD IYL,C
36 savelij 7830
        EXX
69 savelij 7831
        LD E,IYL
36 savelij 7832
        LD D,0
7833
        RET
7834
 
181 savelij 7835
S718    DB 0xCB,0x31;SLI C
36 savelij 7836
        JP NC,S7180
7837
        JP S7181
7838
 
7839
S7184   INC E
7840
S7185   RRC C
69 savelij 7841
        LD IYL,C
36 savelij 7842
        EXX
69 savelij 7843
        LD E,IYL
36 savelij 7844
        RET
7845
 
7846
S7186   RRC C
69 savelij 7847
        LD IYL,C
36 savelij 7848
        EXX
69 savelij 7849
        LD E,IYL
36 savelij 7850
        LD D,6
7851
        RET
7852
 
7853
S71866  RRC C
69 savelij 7854
        LD IYL,C
36 savelij 7855
        EXX
69 savelij 7856
        LD E,IYL
36 savelij 7857
        LD D,5
7858
        RET
7859
 
7860
S71867  RRC C
69 savelij 7861
        LD IYL,C
36 savelij 7862
        EXX
69 savelij 7863
        LD E,IYL
36 savelij 7864
        LD D,4
7865
        RET
7866
 
7867
S71868  RRC C
69 savelij 7868
        LD IYL,C
36 savelij 7869
        EXX
69 savelij 7870
        LD E,IYL
36 savelij 7871
        LD D,3
7872
        RET
7873
 
7874
S71869  RRC C
69 savelij 7875
        LD IYL,C
36 savelij 7876
        EXX
69 savelij 7877
        LD E,IYL
36 savelij 7878
        LD D,2
7879
        RET
7880
 
7881
S7186A  RRC C
69 savelij 7882
        LD IYL,C
36 savelij 7883
        EXX
69 savelij 7884
        LD E,IYL
36 savelij 7885
        LD D,1
7886
        RET
7887
 
7888
S7186B  RRC C
69 savelij 7889
        LD IYL,C
36 savelij 7890
        EXX
69 savelij 7891
        LD E,IYL
36 savelij 7892
        LD D,0
7893
        RET
7894
 
7895
S7182   JR Z,S7184
7896
        INC E
7897
S71822  JR Z,S7185
7898
S718222 LD (DE),A
7899
        INC E
7900
        JR Z,S7186
69 savelij 7901
        LD IYL,A
36 savelij 7902
        ADD A,(HL)
7903
        RRA
69 savelij 7904
        LD IYH,A
7905
        ADD A,IYL
36 savelij 7906
        RRA
7907
        LD (DE),A
7908
        INC E
7909
        JR Z,S71866
69 savelij 7910
        ADD A,IYH
36 savelij 7911
        RRA
7912
        LD (DE),A
7913
        INC E
7914
        JR Z,S71867
69 savelij 7915
        LD A,IYH
36 savelij 7916
        LD (DE),A
7917
        INC E
7918
        JR Z,S71868
7919
        LD (DE),A
7920
        INC E
7921
        JR Z,S71869
7922
        ADD A,(HL)
7923
        RRA
7924
        LD (DE),A
7925
        INC E
7926
        JR Z,S7186A
7927
        ADD A,(HL)
7928
        RRA
7929
        LD (DE),A
7930
        INC E
7931
        JR Z,S7186B
7932
S7181   LD A,C
7933
        ADD A,B
7934
        LD C,A
7935
        LD A,(HL)
7936
        INC HL
69 savelij 7937
        DEC IXL
36 savelij 7938
        LD (DE),A
7939
        JP C,S7182
7940
        JR Z,S71871
7941
        JP S71831
7942
S7183   JR Z,S7187
7943
        INC E
7944
        JR Z,S7188
7945
        LD (DE),A
7946
S71831  INC E
7947
        JR Z,S7189
69 savelij 7948
        LD IYL,A
36 savelij 7949
        ADD A,(HL)
7950
        RRA
69 savelij 7951
        LD IYH,A
7952
        ADD A,IYL
36 savelij 7953
        RRA
7954
        LD (DE),A
7955
        INC E
7956
        JR Z,S71891
69 savelij 7957
        ADD A,IYH
36 savelij 7958
        RRA
7959
        LD (DE),A
7960
        INC E
7961
        JR Z,S71892
69 savelij 7962
        LD A,IYH
36 savelij 7963
        LD (DE),A
7964
        INC E
7965
        JR Z,S71893
7966
        LD (DE),A
7967
        INC E
7968
        JR Z,S71894
7969
        ADD A,(HL)
7970
        RRA
7971
        LD (DE),A
7972
        INC E
7973
        JR Z,S71895
7974
        ADD A,(HL)
7975
        RRA
7976
        LD (DE),A
7977
        INC E
7978
        JR Z,S71896
7979
S7180   LD A,C
7980
        ADD A,B
7981
        LD C,A
7982
        LD A,(HL)
7983
        INC HL
69 savelij 7984
        DEC IXL
36 savelij 7985
        LD (DE),A
7986
        JP C,S7183
7987
        JR Z,S71844
7988
        INC E
7989
        JP NZ,S718222
7990
        RRC C
69 savelij 7991
        LD IYL,C
36 savelij 7992
        EXX
69 savelij 7993
        LD E,IYL
36 savelij 7994
        RET
7995
 
7996
S71844  INC E
7997
        RRC C
69 savelij 7998
        LD IYL,C
36 savelij 7999
        EXX
69 savelij 8000
        LD E,IYL
36 savelij 8001
        RET
8002
 
8003
S7187   INC E
8004
S7188   SRL C
69 savelij 8005
        LD IYL,C
36 savelij 8006
        EXX
69 savelij 8007
        LD E,IYL
36 savelij 8008
        RET
8009
 
8010
S7189   SRL C
69 savelij 8011
        LD IYL,C
36 savelij 8012
        EXX
69 savelij 8013
        LD E,IYL
36 savelij 8014
        LD D,6
8015
        RET
8016
 
8017
S71871  INC E
8018
S71891  SRL C
69 savelij 8019
        LD IYL,C
36 savelij 8020
        EXX
69 savelij 8021
        LD E,IYL
36 savelij 8022
        LD D,5
8023
        RET
8024
 
8025
S71892  SRL C
69 savelij 8026
        LD IYL,C
36 savelij 8027
        EXX
69 savelij 8028
        LD E,IYL
36 savelij 8029
        LD D,4
8030
        RET
8031
 
8032
S71893  SRL C
69 savelij 8033
        LD IYL,C
36 savelij 8034
        EXX
69 savelij 8035
        LD E,IYL
36 savelij 8036
        LD D,3
8037
        RET
8038
 
8039
S71894  SRL C
69 savelij 8040
        LD IYL,C
36 savelij 8041
        EXX
69 savelij 8042
        LD E,IYL
36 savelij 8043
        LD D,2
8044
        RET
8045
 
8046
S71895  SRL C
69 savelij 8047
        LD IYL,C
36 savelij 8048
        EXX
69 savelij 8049
        LD E,IYL
36 savelij 8050
        LD D,1
8051
        RET
8052
 
8053
S71896  SRL C
69 savelij 8054
        LD IYL,C
36 savelij 8055
        EXX
69 savelij 8056
        LD E,IYL
36 savelij 8057
        LD D,0
8058
        RET
8059
 
8060
;INCLUDE "SGEN8.a80"
8061
S8_     LD D,C
8062
        PUSH DE
8063
        LD D,B
8064
        EXX
8065
        POP BC
8066
S81     SLA B
8067
        JP C,S818
181 savelij 8068
        DB 0xCB,0x31;SLI C
36 savelij 8069
        JP C,S8101
8070
        JP S8100
8071
 
8072
S81052  SRL C
69 savelij 8073
        LD IYL,C
36 savelij 8074
        EXX
69 savelij 8075
        LD E,IYL
36 savelij 8076
        LD D,6
8077
        RET
8078
 
8079
S81053  SRL C
69 savelij 8080
        LD IYL,C
36 savelij 8081
        EXX
69 savelij 8082
        LD E,IYL
36 savelij 8083
        LD D,5
8084
        RET
8085
 
8086
S81054  SRL C
69 savelij 8087
        LD IYL,C
36 savelij 8088
        EXX
69 savelij 8089
        LD E,IYL
36 savelij 8090
        LD D,4
8091
        RET
8092
 
8093
S81055  SRL C
69 savelij 8094
        LD IYL,C
36 savelij 8095
        EXX
69 savelij 8096
        LD E,IYL
36 savelij 8097
        LD D,3
8098
        RET
8099
 
8100
S81056  SRL C
69 savelij 8101
        LD IYL,C
36 savelij 8102
        EXX
69 savelij 8103
        LD E,IYL
36 savelij 8104
        LD D,2
8105
        RET
8106
 
8107
S81057  SRL C
69 savelij 8108
        LD IYL,C
36 savelij 8109
        EXX
69 savelij 8110
        LD E,IYL
36 savelij 8111
        LD D,1
8112
        RET
8113
 
8114
S81058  SRL C
69 savelij 8115
        LD IYL,C
36 savelij 8116
        EXX
69 savelij 8117
        LD E,IYL
36 savelij 8118
        LD D,0
8119
        RET
8120
 
8121
S8102   JP Z,S8104
8122
S810A   INC E
8123
        JP Z,S8105
8124
        LD (DE),A
8125
        INC E
8126
        JR Z,S81052
69 savelij 8127
        LD IYL,A
36 savelij 8128
        ADD A,(HL)
8129
        RRA
69 savelij 8130
        LD IYH,A
8131
        ADD A,IYL
36 savelij 8132
        RRA
8133
        LD (DE),A
8134
        INC E
8135
        JR Z,S81053
69 savelij 8136
        ADD A,IYH
36 savelij 8137
        RRA
8138
        LD (DE),A
8139
        INC E
8140
        JR Z,S81054
69 savelij 8141
        LD A,IYH
36 savelij 8142
        LD (DE),A
8143
        INC E
8144
        JR Z,S81055
8145
        LD (DE),A
8146
        INC E
8147
        JR Z,S81056
8148
        ADD A,(HL)
8149
        RRA
8150
        LD (DE),A
8151
        INC E
8152
        JR Z,S81057
8153
        ADD A,(HL)
8154
        RRA
8155
        LD (DE),A
8156
        INC E
8157
        JR Z,S81058
8158
S8100   LD A,C
8159
        ADD A,B
8160
        LD C,A
8161
        LD A,(HL)
8162
        INC HL
69 savelij 8163
        DEC IXL
36 savelij 8164
        LD (DE),A
8165
        JP NC,S8102
8166
        JR Z,S8106
8167
        INC E
8168
        JR Z,S8107
8169
        LD (DE),A
8170
        DEC E
8171
        INC E
8172
S8103   JR Z,S8108
8173
        INC E
8174
        JR Z,S8109
8175
        LD (DE),A
8176
        INC E
8177
        JR Z,S81092
69 savelij 8178
        LD IYL,A
36 savelij 8179
        ADD A,(HL)
8180
        RRA
69 savelij 8181
        LD IYH,A
8182
        ADD A,IYL
36 savelij 8183
        RRA
8184
        LD (DE),A
8185
        INC E
8186
        JR Z,S81093
69 savelij 8187
        ADD A,IYH
36 savelij 8188
        RRA
8189
        LD (DE),A
8190
        INC E
8191
        JR Z,S81094
69 savelij 8192
        LD A,IYH
36 savelij 8193
        LD (DE),A
8194
        INC E
8195
        JR Z,S81095
8196
        LD (DE),A
8197
        INC E
8198
        JR Z,S81096
8199
        ADD A,(HL)
8200
        RRA
8201
        LD (DE),A
8202
        INC E
8203
        JR Z,S81097
8204
        ADD A,(HL)
8205
        RRA
8206
        LD (DE),A
8207
        INC E
8208
        JR Z,S81098
8209
S8101   LD A,C
8210
        ADD A,B
8211
        LD C,A
8212
        LD A,(HL)
8213
        INC HL
69 savelij 8214
        DEC IXL
36 savelij 8215
        LD (DE),A
8216
        JP NC,S8103
8217
        JP NZ,S810A
8218
S8104   INC E
8219
S8105   SRL C
69 savelij 8220
        LD IYL,C
36 savelij 8221
        EXX
69 savelij 8222
        LD E,IYL
36 savelij 8223
        LD D,7
8224
        RET
8225
 
8226
S8106   INC E
8227
S8107   RRC C
69 savelij 8228
        LD IYL,C
36 savelij 8229
        EXX
69 savelij 8230
        LD E,IYL
36 savelij 8231
        RET
8232
 
8233
S8108   INC E
8234
S8109   RRC C
69 savelij 8235
        LD IYL,C
36 savelij 8236
        EXX
69 savelij 8237
        LD E,IYL
36 savelij 8238
        LD D,7
8239
        RET
8240
 
8241
S81092  RRC C
69 savelij 8242
        LD IYL,C
36 savelij 8243
        EXX
69 savelij 8244
        LD E,IYL
36 savelij 8245
        LD D,6
8246
        RET
8247
 
8248
S81093  RRC C
69 savelij 8249
        LD IYL,C
36 savelij 8250
        EXX
69 savelij 8251
        LD E,IYL
36 savelij 8252
        LD D,5
8253
        RET
8254
 
8255
S81094  RRC C
69 savelij 8256
        LD IYL,C
36 savelij 8257
        EXX
69 savelij 8258
        LD E,IYL
36 savelij 8259
        LD D,4
8260
        RET
8261
 
8262
S81095  RRC C
69 savelij 8263
        LD IYL,C
36 savelij 8264
        EXX
69 savelij 8265
        LD E,IYL
36 savelij 8266
        LD D,3
8267
        RET
8268
 
8269
S81096  RRC C
69 savelij 8270
        LD IYL,C
36 savelij 8271
        EXX
69 savelij 8272
        LD E,IYL
36 savelij 8273
        LD D,2
8274
        RET
8275
 
8276
S81097  RRC C
69 savelij 8277
        LD IYL,C
36 savelij 8278
        EXX
69 savelij 8279
        LD E,IYL
36 savelij 8280
        LD D,1
8281
        RET
8282
 
8283
S81098  RRC C
69 savelij 8284
        LD IYL,C
36 savelij 8285
        EXX
69 savelij 8286
        LD E,IYL
36 savelij 8287
        LD D,0
8288
        RET
8289
 
181 savelij 8290
S818    DB 0xCB,0x31;SLI C
36 savelij 8291
        JP NC,S8180
8292
        JP S8181
8293
 
8294
S8184   INC E
8295
S8185   RRC C
69 savelij 8296
        LD IYL,C
36 savelij 8297
        EXX
69 savelij 8298
        LD E,IYL
36 savelij 8299
        RET
8300
 
8301
S8186   RRC C
69 savelij 8302
        LD IYL,C
36 savelij 8303
        EXX
69 savelij 8304
        LD E,IYL
36 savelij 8305
        LD D,7
8306
        RET
8307
 
8308
S81866  RRC C
69 savelij 8309
        LD IYL,C
36 savelij 8310
        EXX
69 savelij 8311
        LD E,IYL
36 savelij 8312
        LD D,6
8313
        RET
8314
 
8315
S81867  RRC C
69 savelij 8316
        LD IYL,C
36 savelij 8317
        EXX
69 savelij 8318
        LD E,IYL
36 savelij 8319
        LD D,5
8320
        RET
8321
 
8322
S81868  RRC C
69 savelij 8323
        LD IYL,C
36 savelij 8324
        EXX
69 savelij 8325
        LD E,IYL
36 savelij 8326
        LD D,4
8327
        RET
8328
 
8329
S81869  RRC C
69 savelij 8330
        LD IYL,C
36 savelij 8331
        EXX
69 savelij 8332
        LD E,IYL
36 savelij 8333
        LD D,3
8334
        RET
8335
 
8336
S8186A  RRC C
69 savelij 8337
        LD IYL,C
36 savelij 8338
        EXX
69 savelij 8339
        LD E,IYL
36 savelij 8340
        LD D,2
8341
        RET
8342
 
8343
S8186B  RRC C
69 savelij 8344
        LD IYL,C
36 savelij 8345
        EXX
69 savelij 8346
        LD E,IYL
36 savelij 8347
        LD D,1
8348
        RET
8349
 
8350
S8186C  RRC C
69 savelij 8351
        LD IYL,C
36 savelij 8352
        EXX
69 savelij 8353
        LD E,IYL
36 savelij 8354
        LD D,0
8355
        RET
8356
 
8357
S8182   JR Z,S8184
8358
        INC E
8359
S81822  JR Z,S8185
8360
S818222 LD (DE),A
8361
        INC E
8362
        JR Z,S8186
69 savelij 8363
        LD IYL,A
36 savelij 8364
        ADD A,(HL)
8365
        RRA
69 savelij 8366
        LD IYH,A
8367
        ADD A,IYL
36 savelij 8368
        RRA
8369
        LD (DE),A
8370
        INC E
8371
        JR Z,S81866
69 savelij 8372
        ADD A,IYH
36 savelij 8373
        RRA
8374
        LD (DE),A
8375
        INC E
8376
        JR Z,S81867
8377
        LD (DE),A
8378
        INC E
8379
        JR Z,S81868
69 savelij 8380
        LD A,IYH
36 savelij 8381
        LD (DE),A
8382
        INC E
8383
        JR Z,S81869
8384
        LD (DE),A
8385
        INC E
8386
        JR Z,S8186A
8387
        ADD A,(HL)
8388
        RRA
8389
        LD (DE),A
8390
        INC E
8391
        JR Z,S8186B
8392
        ADD A,(HL)
8393
        RRA
8394
        LD (DE),A
8395
        INC E
8396
        JR Z,S8186C
8397
S8181   LD A,C
8398
        ADD A,B
8399
        LD C,A
8400
        LD A,(HL)
8401
        INC HL
69 savelij 8402
        DEC IXL
36 savelij 8403
        LD (DE),A
8404
        JP C,S8182
8405
        JR Z,S81871
8406
        JP S81831
8407
S8183   JR Z,S8187
8408
        INC E
8409
        JR Z,S8188
8410
        LD (DE),A
8411
S81831  INC E
8412
        JR Z,S8189
69 savelij 8413
        LD IYL,A
36 savelij 8414
        ADD A,(HL)
8415
        RRA
69 savelij 8416
        LD IYH,A
8417
        ADD A,IYL
36 savelij 8418
        RRA
8419
        LD (DE),A
8420
        INC E
8421
        JR Z,S81891
69 savelij 8422
        ADD A,IYH
36 savelij 8423
        RRA
8424
        LD (DE),A
8425
        INC E
8426
        JR Z,S81892
8427
        LD (DE),A
8428
        INC E
8429
        JR Z,S81893
69 savelij 8430
        LD A,IYH
36 savelij 8431
        LD (DE),A
8432
        INC E
8433
        JR Z,S81894
8434
        LD (DE),A
8435
        INC E
8436
        JR Z,S81895
8437
        ADD A,(HL)
8438
        RRA
8439
        LD (DE),A
8440
        INC E
8441
        JR Z,S81896
8442
        ADD A,(HL)
8443
        RRA
8444
        LD (DE),A
8445
        INC E
8446
        JR Z,S81897
8447
S8180   LD A,C
8448
        ADD A,B
8449
        LD C,A
8450
        LD A,(HL)
8451
        INC HL
69 savelij 8452
        DEC IXL
36 savelij 8453
        LD (DE),A
8454
        JP C,S8183
8455
        JR Z,S81844
8456
        INC E
8457
        JP NZ,S818222
8458
        RRC C
69 savelij 8459
        LD IYL,C
36 savelij 8460
        EXX
69 savelij 8461
        LD E,IYL
36 savelij 8462
        RET
8463
 
8464
S81844  INC E
8465
        RRC C
69 savelij 8466
        LD IYL,C
36 savelij 8467
        EXX
69 savelij 8468
        LD E,IYL
36 savelij 8469
        RET
8470
 
8471
S8187   INC E
8472
S8188   SRL C
69 savelij 8473
        LD IYL,C
36 savelij 8474
        EXX
69 savelij 8475
        LD E,IYL
36 savelij 8476
        RET
8477
 
8478
S8189   SRL C
69 savelij 8479
        LD IYL,C
36 savelij 8480
        EXX
69 savelij 8481
        LD E,IYL
36 savelij 8482
        LD D,7
8483
        RET
8484
 
8485
S81871  INC E
8486
S81891  SRL C
69 savelij 8487
        LD IYL,C
36 savelij 8488
        EXX
69 savelij 8489
        LD E,IYL
36 savelij 8490
        LD D,6
8491
        RET
8492
 
8493
S81892  SRL C
69 savelij 8494
        LD IYL,C
36 savelij 8495
        EXX
69 savelij 8496
        LD E,IYL
36 savelij 8497
        LD D,5
8498
        RET
8499
 
8500
S81893  SRL C
69 savelij 8501
        LD IYL,C
36 savelij 8502
        EXX
69 savelij 8503
        LD E,IYL
36 savelij 8504
        LD D,4
8505
        RET
8506
 
8507
S81894  SRL C
69 savelij 8508
        LD IYL,C
36 savelij 8509
        EXX
69 savelij 8510
        LD E,IYL
36 savelij 8511
        LD D,3
8512
        RET
8513
 
8514
S81895  SRL C
69 savelij 8515
        LD IYL,C
36 savelij 8516
        EXX
69 savelij 8517
        LD E,IYL
36 savelij 8518
        LD D,2
8519
        RET
8520
 
8521
S81896  SRL C
69 savelij 8522
        LD IYL,C
36 savelij 8523
        EXX
69 savelij 8524
        LD E,IYL
36 savelij 8525
        LD D,1
8526
        RET
8527
 
8528
S81897  SRL C
69 savelij 8529
        LD IYL,C
36 savelij 8530
        EXX
69 savelij 8531
        LD E,IYL
36 savelij 8532
        LD D,0
8533
        RET
8534
 
8535
;___END
8536
;       ENDMODULE
8537
 
181 savelij 8538
        ORG GSRomBaseL+0x3E00
36 savelij 8539
DIVTAB3
181 savelij 8540
;INCLUDE "_DIVTAB3.a80"                                 0x10*0x20=0x200
8541
        DB 0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x05,0x06,0x07,0x07,0x08,0x09,0x09,0x0A
8542
        DB 0x0B,0x0B,0x0C,0x0D,0x0D,0x0E,0x0F,0x0F,0x10,0x11,0x11,0x12,0x13,0x13,0x14,0x15
8543
        DB 0x15,0x16,0x17,0x17,0x18,0x19,0x19,0x1A,0x1B,0x1B,0x1C,0x1D,0x1D,0x1E,0x1F,0x1F
8544
        DB 0x20,0x21,0x21,0x22,0x23,0x23,0x24,0x25,0x25,0x26,0x27,0x27,0x28,0x29,0x29,0x2A
8545
        DB 0x2B,0x2B,0x2C,0x2D,0x2D,0x2E,0x2F,0x2F,0x30,0x31,0x31,0x32,0x33,0x33,0x34,0x35
8546
        DB 0x35,0x36,0x37,0x37,0x38,0x39,0x39,0x3A,0x3B,0x3B,0x3C,0x3D,0x3D,0x3E,0x3F,0x3F
8547
        DB 0x40,0x41,0x41,0x42,0x43,0x43,0x44,0x45,0x45,0x46,0x47,0x47,0x48,0x49,0x49,0x4A
8548
        DB 0x4B,0x4B,0x4C,0x4D,0x4D,0x4E,0x4F,0x4F,0x50,0x51,0x51,0x52,0x53,0x53,0x54,0x55
8549
        DB 0x55,0x56,0x57,0x57,0x58,0x59,0x59,0x5A,0x5B,0x5B,0x5C,0x5D,0x5D,0x5E,0x5F,0x5F
8550
        DB 0x60,0x61,0x61,0x62,0x63,0x63,0x64,0x65,0x65,0x66,0x67,0x67,0x68,0x69,0x69,0x6A
8551
        DB 0x6B,0x6B,0x6C,0x6D,0x6D,0x6E,0x6F,0x6F,0x70,0x71,0x71,0x72,0x73,0x73,0x74,0x75
8552
        DB 0x75,0x76,0x77,0x77,0x78,0x79,0x79,0x7A,0x7B,0x7B,0x7C,0x7D,0x7D,0x7E,0x7F,0x7F
8553
        DB 0x80,0x81,0x81,0x82,0x83,0x83,0x84,0x85,0x85,0x86,0x87,0x87,0x88,0x89,0x89,0x8A
8554
        DB 0x8B,0x8B,0x8C,0x8D,0x8D,0x8E,0x8F,0x8F,0x90,0x91,0x91,0x92,0x93,0x93,0x94,0x95
8555
        DB 0x95,0x96,0x97,0x97,0x98,0x99,0x99,0x9A,0x9B,0x9B,0x9C,0x9D,0x9D,0x9E,0x9F,0x9F
8556
        DB 0xA0,0xA1,0xA1,0xA2,0xA3,0xA3,0xA4,0xA5,0xA5,0xA6,0xA7,0xA7,0xA8,0xA9,0xA9,0xAA
8557
        DB 0x55,0x56,0x57,0x57,0x58,0x59,0x59,0x5A,0x5B,0x5B,0x5C,0x5D,0x5D,0x5E,0x5F,0x5F
8558
        DB 0x60,0x61,0x61,0x62,0x63,0x63,0x64,0x65,0x65,0x66,0x67,0x67,0x68,0x69,0x69,0x6A
8559
        DB 0x6B,0x6B,0x6C,0x6D,0x6D,0x6E,0x6F,0x6F,0x70,0x71,0x71,0x72,0x73,0x73,0x74,0x75
8560
        DB 0x75,0x76,0x77,0x77,0x78,0x79,0x79,0x7A,0x7B,0x7B,0x7C,0x7D,0x7D,0x7E,0x7F,0x7F
8561
        DB 0x80,0x81,0x81,0x82,0x83,0x83,0x84,0x85,0x85,0x86,0x87,0x87,0x88,0x89,0x89,0x8A
8562
        DB 0x8B,0x8B,0x8C,0x8D,0x8D,0x8E,0x8F,0x8F,0x90,0x91,0x91,0x92,0x93,0x93,0x94,0x95
8563
        DB 0x95,0x96,0x97,0x97,0x98,0x99,0x99,0x9A,0x9B,0x9B,0x9C,0x9D,0x9D,0x9E,0x9F,0x9F
8564
        DB 0xA0,0xA1,0xA1,0xA2,0xA3,0xA3,0xA4,0xA5,0xA5,0xA6,0xA7,0xA7,0xA8,0xA9,0xA9,0xAA
8565
        DB 0xAB,0xAB,0xAC,0xAD,0xAD,0xAE,0xAF,0xAF,0xB0,0xB1,0xB1,0xB2,0xB3,0xB3,0xB4,0xB5
8566
        DB 0xB5,0xB6,0xB7,0xB7,0xB8,0xB9,0xB9,0xBA,0xBB,0xBB,0xBC,0xBD,0xBD,0xBE,0xBF,0xBF
8567
        DB 0xC0,0xC1,0xC1,0xC2,0xC3,0xC3,0xC4,0xC5,0xC5,0xC6,0xC7,0xC7,0xC8,0xC9,0xC9,0xCA
8568
        DB 0xCB,0xCB,0xCC,0xCD,0xCD,0xCE,0xCF,0xCF,0xD0,0xD1,0xD1,0xD2,0xD3,0xD3,0xD4,0xD5
8569
        DB 0xD5,0xD6,0xD7,0xD7,0xD8,0xD9,0xD9,0xDA,0xDB,0xDB,0xDC,0xDD,0xDD,0xDE,0xDF,0xDF
8570
        DB 0xE0,0xE1,0xE1,0xE2,0xE3,0xE3,0xE4,0xE5,0xE5,0xE6,0xE7,0xE7,0xE8,0xE9,0xE9,0xEA
8571
        DB 0xEB,0xEB,0xEC,0xED,0xED,0xEE,0xEF,0xEF,0xF0,0xF1,0xF1,0xF2,0xF3,0xF3,0xF4,0xF5
8572
        DB 0xF5,0xF6,0xF7,0xF7,0xF8,0xF9,0xF9,0xFA,0xFB,0xFB,0xFC,0xFD,0xFD,0xFE,0xFF,0xFF
36 savelij 8573
 
8574
___LEND
8575
 
8576
        ; HIGH ROM INCLUDES
69 savelij 8577
        PHASE GSRomBaseH
36 savelij 8578
 
8579
;INCLUDE "INIT_H.a80"
8580
 
8581
INITVAR DI
8582
;---patched
8583
        CALL Patch5i1
8584
;---
8585
        EX AF,AF'
8586
        LD A,(NUMPG)
181 savelij 8587
        LD SP,0x8000
8588
        LD HL,0x8080
8589
        LD B,0x00
112 savelij 8590
INITV00 REPT 16
36 savelij 8591
        PUSH HL
112 savelij 8592
        ENDM
36 savelij 8593
        DJNZ INITV00
181 savelij 8594
        LD HL,0x0000
8595
        LD B,0xFC;0xFE  ;     00x4080     
112 savelij 8596
INITV01 REPT 16
36 savelij 8597
        PUSH HL
112 savelij 8598
        ENDM
36 savelij 8599
        DJNZ INITV01
8600
        LD SP,ISTACK
8601
        LD (NUMPG),A
8602
        EX AF,AF'
8603
;---patched
8604
        CALL Patch5i2
8605
;---
181 savelij 8606
        LD A,0x00
36 savelij 8607
        LD (INFO),A
8608
        XOR A
8609
        LD (ROMPG),A
8610
        LD HL,DAC0
8611
        LD A,(HL)
8612
        INC H
8613
        LD A,(HL)
8614
        INC H
8615
        LD A,(HL)
8616
        INC H
8617
        LD A,(HL)
181 savelij 8618
        LD A,0x3F
36 savelij 8619
        OUT (VOL1),A
8620
        OUT (VOL2),A
8621
        OUT (VOL3),A
8622
        OUT (VOL4),A
8623
        LD HL,CHNVOL
8624
        LD DE,CHNVOL+1
181 savelij 8625
        LD BC,0x0007
8626
        LD (HL),0xBF
36 savelij 8627
        LDIR
69 savelij 8628
        LD A,HIGH (INTTAB)
36 savelij 8629
        LD I,A
8630
        LD HL,INT7
8631
        LD DE,INTAREA
181 savelij 8632
        LD BC,0x0017
36 savelij 8633
        LDIR
8634
        EX DE,HL
181 savelij 8635
        LD (HL),0xC3
36 savelij 8636
        INC L
69 savelij 8637
        LD (HL),LOW (INT7)
36 savelij 8638
        INC L
69 savelij 8639
        LD (HL),HIGH (INT7)
36 savelij 8640
        LD HL,QTMAP
8641
        LD (QTFREE),HL
8642
        LD (QTBUSY),HL
8643
        LD DE,QTMAP+1
181 savelij 8644
        LD BC,0x001F
36 savelij 8645
        LD (HL),B
8646
        LDIR
8647
        LD HL,VOLTAB
8648
        LD DE,VOLTAB+1
181 savelij 8649
        LD BC,0x001F
8650
        LD (HL),0x3F
36 savelij 8651
        LDIR
8652
        LD HL,VOLRQTB
8653
        LD DE,VOLRQTB+1
181 savelij 8654
        LD BC,0x0007
8655
        LD (HL),0x3F
36 savelij 8656
        LDIR
181 savelij 8657
        LD A,0x0F
36 savelij 8658
        LD (GSCHNS),A
8659
        LD (MTCHNS),A
181 savelij 8660
        LD A,0x40
36 savelij 8661
        LD (MODVOL),A
8662
        LD (FXMVOL),A
8663
        LD (FXVOL),A
8664
        LD A,%11000011
8665
        LD (MTSTAT),A
8666
        XOR A
8667
        LD (MODULE),A
8668
        LD A,(NUMPG)
8669
        SRL A
8670
        LD B,A
181 savelij 8671
        LD HL,0x8000
36 savelij 8672
        RR H
8673
        LD A,B
8674
        LD (RAMTOP),HL
8675
        LD (RAMTOP+2),A
8676
        LD (PTRC),HL
8677
        LD (PTRC+2),A
8678
        LD (PTRB),HL
8679
        LD (PTRB+2),A
8680
        LD (PTRA),HL
8681
        LD (PTRA+2),A
8682
        LD (PTR9),HL
8683
        LD (PTR9+2),A
8684
        LD (PTR8),HL
8685
        LD (PTR8+2),A
8686
        LD (PTR7),HL
8687
        LD (PTR7+2),A
8688
        LD (PTR6),HL
8689
        LD (PTR6+2),A
8690
        LD (PTR5),HL
8691
        LD (PTR5+2),A
8692
        LD (MEMTOP),HL
8693
        LD (MEMTOP+2),A
8694
        LD (PTR4),HL
8695
        LD (PTR4+2),A
8696
        LD IY,CHANSFX
8697
        LD (CURCHAN),IY
181 savelij 8698
        LD BC,0x0801
36 savelij 8699
        LD DE,CHANLEN
181 savelij 8700
INITV03 LD (IY+CHSTAT),0x40
36 savelij 8701
        LD (IY+CHRDR),C
8702
        LD (IY+CHRDRI),C
181 savelij 8703
        LD A,0x08
36 savelij 8704
        SUB B
8705
        LD (IY+CHRDN),A
181 savelij 8706
        AND 0x02
36 savelij 8707
        JR Z,INITV05
8708
        SET 5,(IY+CHSTAT)
181 savelij 8709
INITV05 LD (IY+CHFLAGS),0x00
8710
        LD (IY+CHPORT),0x01
8711
        LD (IY+CHVIBCM),0x11
8712
        LD (IY+CHTRMCM),0x11
8713
        LD (IY+CHOFFST),0x01
8714
        LD (IY+CHWNT),0x7F
8715
        LD (IY+CHOLDV),0x80
8716
        LD (IY+CHEPAN),0x20
8717
        LD (IY+CHEVOL),0x40
36 savelij 8718
        RLC C
8719
        ADD IY,DE
8720
        DJNZ INITV03
8721
        LD IY,CHANS
181 savelij 8722
        LD B,0x08
8723
INITV04 LD (IY+CHSTAT),0x00
8724
        LD (IY+CHFLAGS),0x00
8725
        LD (IY+CHPORT),0x01
8726
        LD (IY+CHVIBCM),0x11
8727
        LD (IY+CHTRMCM),0x11
8728
        LD (IY+CHOFFST),0x01
8729
        LD (IY+CHWNT),0x7F
8730
        LD (IY+CHOLDV),0x80
8731
        LD (IY+CHEPAN),0x20
8732
        LD (IY+CHEVOL),0x40
36 savelij 8733
        ADD IY,DE
8734
        DJNZ INITV04
8735
        LD IY,CHANS
181 savelij 8736
        LD (IY+CHSTAT),0x00
8737
        LD (IY+CHRDR),0x01
8738
        LD (IY+CHRDRI),0x01
8739
        LD (IY+CHRDN),0x00
36 savelij 8740
        ADD IY,DE
181 savelij 8741
        LD (IY+CHSTAT),0x20
8742
        LD (IY+CHRDR),0x04
8743
        LD (IY+CHRDRI),0x04
8744
        LD (IY+CHRDN),0x02
36 savelij 8745
        ADD IY,DE
181 savelij 8746
        LD (IY+CHSTAT),0x20
8747
        LD (IY+CHRDR),0x08
8748
        LD (IY+CHRDRI),0x08
8749
        LD (IY+CHRDN),0x03
36 savelij 8750
        ADD IY,DE
181 savelij 8751
        LD (IY+CHSTAT),0x00
8752
        LD (IY+CHRDR),0x02
8753
        LD (IY+CHRDRI),0x02
8754
        LD (IY+CHRDN),0x01
36 savelij 8755
        LD HL,750
8756
        LD (TICKLEN),HL
8757
        LD (TCKLEFT),HL
8758
        LD (FXTICK),HL
8759
        LD (FXTCLEN),HL
181 savelij 8760
        LD IXH,0x80
8761
        LD DE,0x0000
36 savelij 8762
        IN A,(ZXDATRD)
8763
        JP COMINT
8764
 
8765
; B - NUMBER OF CHANNELS
8766
 
181 savelij 8767
INITCHN LD HL,(0xEC60)
36 savelij 8768
        LD (IY+CHPERL),L  ; C-4
8769
        LD (IY+CHPERH),H
181 savelij 8770
        LD HL,(0xE060)
36 savelij 8771
        LD (IY+CHFRQL),L
8772
        LD (IY+CHFRQH),H
8773
        LD (IY+CHNOTE),48
181 savelij 8774
        LD (IY+CHFLAGS),0x00
8775
        LD (IY+CHREAL),0x7F
8776
        LD (IY+CHCNTL),0x00
8777
        LD (IY+CHCNTH),0x00
8778
        LD (IY+CHINS),0x00
8779
        LD (IY+CHSMP),0x00
8780
        LD (IY+CHCOM),0x00
8781
        LD (IY+CHPARM),0x00
8782
        LD (IY+CHVIBPS),0x00
8783
        LD (IY+CHTRMPS),0x00
8784
        LD (IY+CHPATPS),0x00
8785
        LD (IY+CHLPCNT),0x00
36 savelij 8786
        LD A,B
8787
        LD BC,CHANLEN
8788
        ADD IY,BC
8789
        LD B,A
8790
        DJNZ INITCHN
8791
        RET
8792
 
8793
;INCLUDE "COM_H.a80"
8794
 
8795
HGET    IN A,(ZXSTAT)
181 savelij 8796
        AND 0x81
36 savelij 8797
        JR Z,HGET
8798
        IN A,(ZXDATRD)
8799
        RET M
8800
        JP COMINT
8801
 
8802
HSEND   IN A,(ZXSTAT)
8803
        OR A
8804
        RET P
8805
        RRCA
8806
        JP NC,HSEND
8807
        JP COMINT
8808
 
8809
HTAIL   LD HL,HTAIL2
8810
HTAIL2  IN A,(ZXSTAT)
181 savelij 8811
        AND 0x81
36 savelij 8812
        JR Z,HTAIL2
8813
        RRCA
8814
        JR C,HTAIL3
8815
        IN A,(ZXDATRD)
8816
        JP (HL)
8817
HTAIL3  IN A,(ZXCMD)
181 savelij 8818
        CP 0xE0
36 savelij 8819
        JP NC,COMINT
181 savelij 8820
        CP 0xD0
36 savelij 8821
        JP C,COMINT
8822
        JR Z,HTAIL5
181 savelij 8823
        CP 0xD1
36 savelij 8824
        JR Z,HTAIL6
8825
        XOR A
8826
HTAIL4  OUT (ZXDATWR),A
8827
        IN A,(ZXDATRD)
8828
HTAIL6  OUT (CLRCBIT),A
8829
        JP (HL)
8830
HTAIL5  LD A,(ERRCODE)
8831
        JR HTAIL4
8832
 
8833
ERR30
8834
ERR20
181 savelij 8835
ERR10   LD A,0x10        ;NOT ENOUGH FREE SPACE
36 savelij 8836
        JR ERR
8837
 
181 savelij 8838
ERR11   LD A,0x11        ;NOT ENOUGH FREE ENTRIES
36 savelij 8839
        JR ERR
8840
 
8841
ERR     LD (ERRCODE),A
8842
        JP COMINT
8843
 
8844
;Get total RAM
69 savelij 8845
; 騩 ꥬ 㯭   GS. (  ᨨ  112)
36 savelij 8846
COM20   LD DE,(RAMBOT)
8847
        LD A,(RAMBOT+2)
8848
        LD C,A
8849
        LD HL,(RAMTOP)
8850
        LD A,(RAMTOP+2)
8851
        OR A
8852
        SBC HL,DE
8853
        SBC A,C
8854
        LD C,A
8855
        LD A,L
8856
        OUT (ZXDATWR),A
8857
        OUT (CLRCBIT),A
8858
        CALL HSEND
8859
        LD A,H
8860
        OUT (ZXDATWR),A
8861
        CALL HSEND
8862
        LD A,C
8863
        OUT (ZXDATWR),A
8864
        RET
8865
 
8866
;Get free RAM
69 savelij 8867
; 騩 ' ᢮   GS.
36 savelij 8868
COM21   LD DE,(MEMBOT)
8869
        LD A,(MEMBOT+2)
8870
        LD C,A
8871
        LD HL,(MEMTOP)
8872
        LD A,(MEMTOP+2)
8873
        OR A
8874
        SBC HL,DE
8875
        SBC A,C
8876
        LD C,A
8877
        LD A,L
8878
        OUT (ZXDATWR),A
8879
        OUT (CLRCBIT),A
8880
        XOR A
8881
        LD (ERRCODE),A
8882
        CALL HSEND
8883
        LD A,H
8884
        OUT (ZXDATWR),A
8885
        CALL HSEND
8886
        LD A,C
8887
        OUT (ZXDATWR),A
8888
        RET
8889
 
8890
;Get free RAM
69 savelij 8891
; 騩 ' ᢮   GS.
36 savelij 8892
COM22   IN A,(ZXDATRD)
8893
        LD E,A
69 savelij 8894
        LD D,HIGH (RAMPG)
36 savelij 8895
        LD A,(DE)
8896
        OUT (ZXDATWR),A
8897
        OUT (CLRCBIT),A
8898
        RET
8899
 
8900
;Get number of RAM Pages
69 savelij 8901
; ᫮ ࠭   GS.
36 savelij 8902
COM23   LD A,(NUMPG)
8903
        OUT (ZXDATWR),A
8904
        OUT (CLRCBIT),A
8905
        RET
8906
 
8907
;Set Module Master Volume
69 savelij 8908
;⠭ ஬ ந뢠 㫥.
36 savelij 8909
COM2A   LD A,(MODVOL)
8910
        OUT (ZXDATWR),A
8911
        IN A,(ZXDATRD)
8912
        OUT (CLRCBIT),A
181 savelij 8913
        CP 0x40
36 savelij 8914
        JR C,COM2A_
181 savelij 8915
        LD A,0x40
36 savelij 8916
COM2A_  LD (MODVOL),A
8917
        LD IY,CHANS
181 savelij 8918
        LD B,0x08
36 savelij 8919
        LD DE,CHANLEN
8920
COM2A__ SET 0,(IY+CHSTAT)
8921
        ADD IY,DE
8922
        DJNZ COM2A__
8923
        RET
8924
 
8925
;Set FX Master Volume
69 savelij 8926
;⠭ ஬ ந뢠 䥪⮢.
36 savelij 8927
COM2B   LD A,(FXVOL)
8928
        OUT (ZXDATWR),A
8929
        IN A,(ZXDATRD)
8930
        OUT (CLRCBIT),A
181 savelij 8931
        CP 0x40
36 savelij 8932
        JR C,COM2B_
181 savelij 8933
        LD A,0x40
36 savelij 8934
COM2B_  LD (FXVOL),A
8935
        LD IY,CHANSFX
181 savelij 8936
        LD B,0x08
36 savelij 8937
        LD DE,CHANLEN
8938
COM2B__ SET 0,(IY+CHSTAT)
8939
        ADD IY,DE
8940
        DJNZ COM2B__
8941
        RET
8942
 
8943
COM2C   LD A,(CURMOD)
8944
        OUT (ZXDATWR),A
8945
        IN A,(ZXDATRD)
8946
        OUT (CLRCBIT),A
8947
        OR A
8948
        JR Z,COM2C_
8949
        LD B,A
8950
        LD A,(CNTMOD)
8951
        CP B
8952
        JR C,COM2C__
8953
        LD A,B
8954
        LD (CURMOD),A
8955
        RET
8956
 
8957
COM2C_  LD A,(CNTMOD)
8958
        LD (CURMOD),A
8959
        RET
8960
 
8961
COM2C__ XOR A
8962
        LD (CURMOD),A
8963
        RET
8964
 
8965
COM2D   LD A,(CURSMP)
8966
        OUT (ZXDATWR),A
8967
        IN A,(ZXDATRD)
8968
        OUT (CLRCBIT),A
8969
        OR A
8970
        JR Z,COM2D_
8971
        LD B,A
8972
        LD A,(CNTSMP)
8973
        CP B
8974
        JR C,COM2D__
8975
        LD A,B
8976
        LD (CURSMP),A
8977
        RET
8978
 
8979
COM2D_  LD A,(CNTSMP)
8980
        LD (CURSMP),A
8981
        RET
8982
 
8983
COM2D__ XOR A
8984
        LD (CURSMP),A
8985
        RET
8986
 
8987
;Set Current FX
69 savelij 8988
;⠭ ⥪騩 䥪.  ᢠ ६ CURFX  -
8989
;祭. ᫨ -  ॡ   (sample handle), 
181 savelij 8990
;  ⮣    0x00   ⠢ -
8991
; ⮣  祭 ६ CURFX. (.  0x38, 0x39, 0x40-0x4F
69 savelij 8992
;  襨.)
36 savelij 8993
COM2E   LD A,(CURFX)
8994
        OUT (ZXDATWR),A
8995
        IN A,(ZXDATRD)
8996
        OUT (CLRCBIT),A
8997
        OR A
8998
        JR Z,COM2E_
8999
        LD B,A
9000
        LD A,(CNTFX)
9001
        CP B
9002
        JR C,COM2E__
9003
        LD A,B
9004
        LD (CURFX),A
9005
        RET
9006
 
9007
COM2E_  LD A,(CNTFX)
9008
        LD (CURFX),A
9009
        RET
9010
 
9011
COM2E__ XOR A
9012
        LD (CURFX),A
9013
        RET
9014
 
9015
COM2F   IN A,(ZXDATRD)
9016
        OUT (CLRCBIT),A
9017
        LD E,A
9018
        CALL HGET
9019
        LD D,A
9020
        OR E
9021
        JR Z,COM2F_
9022
        LD HL,(CNTTRK)
9023
        SBC HL,DE
9024
        JR C,COM2F__
9025
        LD (CURTRK),DE
9026
        RET
9027
 
9028
COM2F_  LD HL,(CNTTRK)
9029
        LD (CURTRK),HL
9030
        RET
9031
 
181 savelij 9032
COM2F__ LD HL,0x0000
36 savelij 9033
        LD (CURTRK),HL
9034
        RET
9035
 
9036
;Load Module
69 savelij 9037
;㧪   .
36 savelij 9038
COM30   LD A,(CNTMOD)
9039
        OR A
9040
        JP NZ,INITVAR
9041
        INC A
9042
        LD (CNTMOD),A
9043
        LD (CURMOD),A
9044
        OUT (ZXDATWR),A
9045
        IN A,(ZXDATRD)
9046
        OUT (CLRCBIT),A
181 savelij 9047
        LD C,0x00
36 savelij 9048
        CALL LOAD
181 savelij 9049
LDMOD   LD A,0x00               ;0xC3F8
36 savelij 9050
        LD (CONVERT),A
9051
;---patched
9052
        CALL Patch5x
9053
;---
9054
        RET
9055
 
9056
;Jump to position (*)
69 savelij 9057
; 室   .
36 savelij 9058
COM65   IN A,(ZXDATRD)
9059
        LD C,A
9060
        LD A,(CURMOD)
9061
        LD B,A
9062
        JP COM65_
9063
 
9064
;Play module
69 savelij 9065
;ந뢠 .
36 savelij 9066
COM31   IN A,(ZXDATRD)
9067
        OR A
9068
        JR NZ,COM31_
9069
        LD A,(CURMOD)
9070
        OR A
9071
        JP Z,COM31_1
9072
COM31_  LD B,A
9073
        LD A,(CNTMOD)
9074
        CP B
9075
        JP C,COM31_2
9076
        LD A,B
181 savelij 9077
        LD C,0x00
36 savelij 9078
COM65_  OUT (ZXDATWR),A
9079
        OUT (CLRCBIT),A
181 savelij 9080
PLAYMOD LD A,(BUSY)             ;0xC426
36 savelij 9081
        PUSH AF
181 savelij 9082
        LD A,0xFF
36 savelij 9083
        LD (BUSY),A
9084
        LD A,B
9085
        LD (MODULE),A
9086
        LD (CURMOD),A
9087
        LD A,%00000011
9088
        LD (MTSTAT),A
181 savelij 9089
        LD A,0x06
36 savelij 9090
        LD (MTSPEED),A
9091
        LD A,C
9092
        LD (MTSNGPS),A
9093
        XOR A
9094
        LD (MTFLAGS),A
9095
        LD (MTCOUNT),A
9096
        LD (MTPATPS),A
9097
        LD (MTPDT),A
9098
        LD (MTPDT2),A
9099
        LD (MTBRKFL),A
9100
        LD (MTBRKPS),A
9101
        LD (MTJMPFL),A
9102
        INC A
9103
        LD (MTTYPE),A
181 savelij 9104
        LD A,0x40
36 savelij 9105
        LD (MTVOL),A
9106
        DEC A
9107
        LD (MTROWS),A
9108
        LD A,125
9109
        CALL FXF
9110
        LD IY,CHANS
181 savelij 9111
        LD B,0x08
36 savelij 9112
        LD DE,CHANLEN
9113
COM31__ RES 7,(IY+CHSTAT)
9114
        SET 0,(IY+CHSTAT)
181 savelij 9115
        LD (IY+CHVOL),0x40
9116
        LD (IY+CHMVOL),0x40
36 savelij 9117
        ADD IY,DE
9118
        DJNZ COM31__
9119
        CALL INITPAT
9120
        CALL EFXGTNT
181 savelij 9121
        LD A,0xFF
36 savelij 9122
        LD (PROCESS),A
9123
        POP AF
9124
        LD (BUSY),A
9125
        RET
9126
 
9127
COM31_1
9128
COM31_2 XOR A
9129
        LD (CURMOD),A
9130
        OUT (ZXDATWR),A
9131
        OUT (CLRCBIT),A
9132
        RET
9133
 
9134
;Stop module
69 savelij 9135
;⠭ ந뢠 .
36 savelij 9136
COM32   LD A,(MODULE)
9137
        OUT (ZXDATWR),A
9138
        IN A,(ZXDATRD)
9139
        OUT (CLRCBIT),A
181 savelij 9140
STOPMOD LD HL,MTSTAT            ;0xC4AE
36 savelij 9141
        SET 7,(HL)
9142
        RET
9143
 
9144
;Continue module
69 savelij 9145
;த ந뢠  ᫥ ⠭.
36 savelij 9146
COM33   LD A,(MODULE)
9147
        OUT (ZXDATWR),A
9148
        IN A,(ZXDATRD)
9149
        OUT (CLRCBIT),A
181 savelij 9150
CONTMOD LD A,(MODULE)           ;0xC4BD
36 savelij 9151
        OR A
9152
        RET Z
9153
        LD HL,MTSTAT
9154
        BIT 6,(HL)
9155
        RET NZ
181 savelij 9156
        LD A,0xFF
36 savelij 9157
        LD (PROCESS),A
9158
        RES 7,(HL)
9159
        LD (PROCESS),A
9160
        RET
9161
 
9162
COM34   LD A,(MODFADE)
9163
        OUT (ZXDATWR),A
9164
        IN A,(ZXDATRD)
9165
        OUT (CLRCBIT),A
9166
        LD (MODFADE),A
9167
        RET
9168
 
9169
;Set Module Volume
69 savelij 9170
;⠭ ஬ ந뢠 㫥.
36 savelij 9171
COM35   LD A,(MTVOL)
9172
        OUT (ZXDATWR),A
9173
        IN A,(ZXDATRD)
9174
        OUT (CLRCBIT),A
181 savelij 9175
        CP 0x40
36 savelij 9176
        JR C,COM35_
181 savelij 9177
        LD A,0x40
36 savelij 9178
COM35_  LD (MTVOL),A
9179
        LD IY,CHANS
181 savelij 9180
        LD B,0x08
36 savelij 9181
        LD DE,CHANLEN
9182
COM35__ SET 0,(IY+CHSTAT)
9183
        ADD IY,DE
9184
        DJNZ COM35__
9185
        RET
9186
 
9187
;Data on (*)
181 savelij 9188
;⠭ ॣ   0xFF.
9189
COM36   LD A,0xFF
36 savelij 9190
        OUT (ZXDATWR),A
9191
        OUT (CLRCBIT),A
9192
        RET
9193
 
9194
;Reinitialisation (*)
69 savelij 9195
;⠭ ७ ६  室 ﭨ.
36 savelij 9196
COM37   OUT (CLRCBIT),A
9197
        LD HL,MTSTAT
9198
        SET 7,(HL)
181 savelij 9199
        LD HL,0x0000
36 savelij 9200
        XOR A
9201
        LD (CURADR),HL
9202
        LD (CURADR+2),A
9203
        LD (MEMBOT),HL
9204
        LD (MEMBOT+2),A
9205
        LD (CURMOD),A
9206
        LD (CNTMOD),A
9207
        LD (MODULE),A
9208
        RET
9209
 
9210
;Load FX (Extended version)
69 savelij 9211
;㧪  䥪  .  㦠   .
36 savelij 9212
COM3E   IN A,(ZXDATRD)
181 savelij 9213
        CP 0x01
36 savelij 9214
        JR Z,COM38
181 savelij 9215
        LD IXL,0x80
36 savelij 9216
        OR A
9217
        JR Z,COM38_
9218
        XOR A
9219
        OUT (ZXDATWR),A
9220
        IN A,(ZXDATRD)
9221
        OUT (CLRCBIT),A
9222
        RET
9223
 
9224
;Load FX
69 savelij 9225
;㧪  䥪  . 㦠   (PC type)
181 savelij 9226
COM38   LD IXL,0x00
36 savelij 9227
COM38_  LD A,(CNTFX)
9228
        CP 60
9229
        JP NC,COM38_9
9230
        INC A
9231
        OUT (ZXDATWR),A
9232
        PUSH AF
9233
        IN A,(ZXDATRD)
9234
        OUT (CLRCBIT),A
9235
        POP AF
9236
        LD (CNTFX),A
9237
        LD (CURFX),A
9238
        CALL GETFX
9239
        PUSH HL
9240
        POP IY
9241
        LD E,L
9242
        LD D,H
9243
        INC DE
181 savelij 9244
        LD BC,0x003F
36 savelij 9245
        LD (HL),B
9246
        LDIR
9247
        LD HL,(CURADR)
9248
        LD A,(CURADR+2)
9249
        LD (IY+8),L
9250
        LD (IY+9),H
9251
        LD (IY+10),A
69 savelij 9252
        LD C,IXL
36 savelij 9253
        CALL LOAD
9254
        LD A,(CURADR)
9255
        SUB (IY+8)
9256
        LD (IY+11),A
9257
        LD (IY+17),A
9258
        LD A,(CURADR+1)
9259
        SBC A,(IY+9)
9260
        LD (IY+12),A
9261
        LD (IY+18),A
9262
        LD A,(CURADR+2)
9263
        SBC A,(IY+10)
9264
        LD (IY+13),A
9265
        LD (IY+19),A
181 savelij 9266
        LD (IY+16),0xFF
9267
        LD (IY+20),0x40
9268
        LD (IY+23),0x80
9269
        LD (IY+24),0x0F
9270
        LD (IY+25),0x0F
9271
        LD (IY+26),0x80
9272
        LD (IY+27),0xFF
9273
        LD (IY+28),0xFF
36 savelij 9274
        LD (IY+31),60
9275
        LD E,60
9276
        CALL GETPER
9277
        LD (IY+54),L
9278
        LD (IY+55),H
9279
        CALL GETFRQ
9280
        LD (IY+56),L
9281
        LD (IY+57),H
9282
        RET
9283
 
9284
COM38_9 XOR A
9285
        OUT (ZXDATWR),A
9286
        LD (CURFX),A
9287
        IN A,(ZXDATRD)
9288
        OUT (CLRCBIT),A
9289
        RET
9290
 
9291
GETFX   DEC A
181 savelij 9292
        CP 0x20
36 savelij 9293
        JR C,GETFX2
181 savelij 9294
        SUB 0x20
9295
        LD H,0x00
36 savelij 9296
        ADD A,A
9297
        ADD A,A
9298
        ADD A,A
9299
        RL H
9300
        ADD A,A
9301
        RL H
9302
        ADD A,A
9303
        RL H
9304
        ADD A,A
9305
        RL H
9306
        LD L,A
9307
        LD A,H
69 savelij 9308
        ADD A,HIGH (BUFFER)+1
36 savelij 9309
        LD H,A
9310
        PUSH HL
9311
        POP IY
9312
        RET
9313
 
181 savelij 9314
GETFX2  LD H,0x00
36 savelij 9315
        ADD A,A
9316
        ADD A,A
9317
        ADD A,A
9318
        RL H
9319
        ADD A,A
9320
        RL H
9321
        ADD A,A
9322
        RL H
9323
        ADD A,A
9324
        RL H
9325
        LD L,A
9326
        LD A,H
69 savelij 9327
        ADD A,HIGH (SMPADR)
36 savelij 9328
        LD H,A
9329
        PUSH HL
9330
        POP IY
9331
        RET
9332
 
9333
;Play FX
69 savelij 9334
;ந뢠 䥪.
36 savelij 9335
COM39   IN A,(ZXDATRD)
9336
        OR A
9337
        JR NZ,COM39_1
9338
        LD A,(CURFX)
9339
COM39_1 LD (CURFX),A
9340
        LD B,A
9341
        LD A,(CNTFX)
9342
        CP B
9343
        JP C,COM39_9
9344
        XOR A
9345
        OUT (ZXDATWR),A
9346
        OUT (CLRCBIT),A
9347
        LD A,(CURFX)
9348
        CALL GETFX
9349
        LD A,(BUSY)
9350
        PUSH AF
181 savelij 9351
        LD A,0xFF
36 savelij 9352
        LD (BUSY),A
9353
        PUSH HL
9354
        POP IY
9355
        CALL PLAYFX
9356
        POP AF
9357
        LD (BUSY),A
9358
        RET
9359
 
181 savelij 9360
COM39_9 LD A,0xFF
36 savelij 9361
        OUT (ZXDATWR),A
9362
        OUT (CLRCBIT),A
9363
        RET
9364
 
9365
COM3B
9366
COM3C   LD A,(FXFADE)
9367
        OUT (ZXDATWR),A
9368
        IN A,(ZXDATRD)
9369
        OUT (CLRCBIT),A
9370
        LD (FXFADE),A
9371
        RET
9372
 
9373
;Set FX Volume
69 savelij 9374
;⠭ ஬ ந뢠 䥪⮢.
36 savelij 9375
COM3D   LD A,(FXMVOL)
9376
        OUT (ZXDATWR),A
9377
        IN A,(ZXDATRD)
9378
        OUT (CLRCBIT),A
181 savelij 9379
        CP 0x40
36 savelij 9380
        JR C,COM3D_
181 savelij 9381
        LD A,0x40
36 savelij 9382
COM3D_  LD (FXMVOL),A
9383
        LD IY,CHANSFX
181 savelij 9384
        LD B,0x08
36 savelij 9385
        LD DE,CHANLEN
9386
COM3D__ SET 0,(IY+CHSTAT)
9387
        ADD IY,DE
9388
        DJNZ COM3D__
9389
        RET
9390
 
9391
COM3F
9392
 
9393
;Set FX Sample Playing Note
69 savelij 9394
;⠭   㬮砭  ⥪饣 䥪.
36 savelij 9395
COM40   IN A,(ZXDATRD)
9396
        OUT (CLRCBIT),A
9397
        LD E,A
9398
        LD A,(CURFX)
9399
        OR A
9400
        RET Z
9401
        CALL GETFX
9402
        LD A,E
9403
        CP 96
9404
        JR C,COM40_
9405
        LD E,95
9406
COM40_  LD (IY+31),E
9407
        CALL GETPER
9408
        LD (IY+54),L
9409
        LD (IY+55),H
9410
        CALL GETFRQ
9411
        LD (IY+56),L
9412
        LD (IY+57),H
9413
        RET
9414
 
9415
;Set FX Sample Volume
69 savelij 9416
;⠭ ஬  㬮砭  ⥪饣 䥪.
36 savelij 9417
COM41   IN A,(ZXDATRD)
9418
        OUT (CLRCBIT),A
9419
        LD E,A
9420
        LD A,(CURFX)
9421
        OR A
9422
        RET Z
9423
        CALL GETFX
9424
        LD A,E
181 savelij 9425
        CP 0x41
36 savelij 9426
        JR C,COM41_
181 savelij 9427
        LD E,0x40
36 savelij 9428
COM41_  LD (IY+20),E
9429
        RET
9430
 
9431
;Set FX Sample Finetune
69 savelij 9432
;⠭ Finetune  㬮砭  ⥪饣 䥪. 
36 savelij 9433
COM42   LD A,(CURFX)
9434
        CALL GETFX
9435
        PUSH HL
9436
        POP IY
9437
        LD A,(IY+21)
9438
        OUT (ZXDATWR),A
9439
        IN A,(ZXDATRD)
9440
        OUT (CLRCBIT),A
9441
        LD (IY+21),A
9442
        RET
9443
 
9444
;Set FX Sample Priority
181 savelij 9445
;⠭ ਮ  ⥪饣 䥪. (.  0x39)
36 savelij 9446
COM45   LD A,(CURFX)
9447
        CALL GETFX
9448
        PUSH HL
9449
        POP IY
9450
        LD A,(IY+26)
9451
        OUT (ZXDATWR),A
9452
        IN A,(ZXDATRD)
9453
        OUT (CLRCBIT),A
9454
        LD (IY+26),A
9455
        RET
9456
 
9457
;Set FX Sample Seek First parameter
181 savelij 9458
;⠭ ࠬ Seek First  ⥪饣 䥪. (.  0x39) 
36 savelij 9459
COM46   LD A,(CURFX)
9460
        CALL GETFX
9461
        PUSH HL
9462
        POP IY
9463
        LD A,(IY+24)
9464
        OUT (ZXDATWR),A
9465
        IN A,(ZXDATRD)
9466
        OUT (CLRCBIT),A
9467
        LD (IY+24),A
9468
        RET
9469
 
9470
;Set FX Sample Seek Last parameter
181 savelij 9471
;⠭ ࠬ Seek Last  ⥪饣 䥪. (.  0x39)
36 savelij 9472
COM47   LD A,(CURFX)
9473
        CALL GETFX
9474
        PUSH HL
9475
        POP IY
9476
        LD A,(IY+25)
9477
        OUT (ZXDATWR),A
9478
        IN A,(ZXDATRD)
9479
        OUT (CLRCBIT),A
9480
        LD (IY+25),A
9481
        RET
9482
 
9483
;Set FX Sample Loop Begin (*)
69 savelij 9484
;⠭ 砫 横  ⥪饣 䥪.
36 savelij 9485
COM48   LD A,(CURFX)
9486
        CALL GETFX
9487
        PUSH HL
9488
        POP IY
9489
        IN A,(ZXDATRD)
9490
        OUT (CLRCBIT),A
9491
        LD (IY+14),A
9492
        CALL HGET
9493
        LD (IY+15),A
9494
        CALL HGET
9495
        LD (IY+16),A
9496
        RET
9497
 
9498
;Set FX Sample Loop End (*)
69 savelij 9499
;⠭  横  ⥪饣 䥪.
36 savelij 9500
COM49   LD A,(CURFX)
9501
        CALL GETFX
9502
        PUSH HL
9503
        POP IY
9504
        IN A,(ZXDATRD)
9505
        OUT (CLRCBIT),A
9506
        LD (IY+17),A
9507
        CALL HGET
9508
        LD (IY+18),A
9509
        CALL HGET
9510
        LD (IY+19),A
9511
        RET
9512
 
181 savelij 9513
COM58   LD B,0x00
36 savelij 9514
        OUT (ZXDATWR),A
9515
        JP COM50_
9516
 
9517
COM50   IN A,(ZXDATRD)
9518
        LD B,A
9519
COM50_  IN A,(ZXCMD)
9520
        OUT (CLRCBIT),A
181 savelij 9521
        AND 0x07
36 savelij 9522
        LD E,A
9523
        CALL HGET
9524
        LD L,A
9525
        LD A,E
181 savelij 9526
        CP 0x04
36 savelij 9527
        CALL NC,HGET
9528
        LD H,A
9529
        LD A,E
181 savelij 9530
        CP 0x07
36 savelij 9531
        CALL Z,HGET
9532
        LD D,A
9533
        LD A,B
9534
        OR A
9535
        JR NZ,C50_00
9536
        LD A,(LSTCHN)
9537
        OR A
9538
        JP Z,ERR20
9539
C50_00  LD B,A
181 savelij 9540
        LD C,0x01
36 savelij 9541
        LD IY,CHANSFX
9542
C50_01  LD A,B
9543
        AND C
9544
        JR NZ,C50_02
9545
        RLC C
69 savelij 9546
        LD A,IYL
9547
        ADD A,LOW (CHANLEN)
9548
        LD IYL,A
9549
        LD A,IYH
181 savelij 9550
        ADC A,0x00
69 savelij 9551
        LD IYH,A
36 savelij 9552
        JP C50_01
9553
 
9554
C50_02  LD A,E
9555
        OR A
9556
        JP Z,C50_80
181 savelij 9557
        CP 0x02
36 savelij 9558
        JP Z,C50_A0
181 savelij 9559
        CP 0x04
36 savelij 9560
        JP Z,C50_C0
181 savelij 9561
        CP 0x05
36 savelij 9562
        JP Z,C50_D0
181 savelij 9563
        CP 0x06
36 savelij 9564
        JP Z,C50_E0
181 savelij 9565
        CP 0x07
36 savelij 9566
        JP Z,C50_F0
9567
C50_LP
9568
C50_80  SET 7,(IY+CHSTAT)
9569
        LD A,L
181 savelij 9570
        AND 0x7F
36 savelij 9571
        CP 96
9572
        JP NC,C50_LP
9573
C50_81  LD A,(IY+CHSMP)
9574
        OR A
9575
        JP Z,C50_LP
9576
        PUSH DE
9577
        PUSH BC
9578
        PUSH HL
9579
        LD E,L
9580
        RES 7,E
9581
        CALL GETFRQ
9582
        LD (IY+CHFRQL),L
9583
        LD (IY+CHFRQH),H
9584
        CALL GETPER
9585
        LD (IY+CHPERL),L
9586
        LD (IY+CHPERH),H
9587
        BIT 7,(IY+CHSTAT)
9588
        JR NZ,C50_82
9589
        LD A,(IY+CHNOTE)
9590
        CP E
9591
        JR Z,C50_83
9592
        LD (IY+CHNOTE),E
181 savelij 9593
C50_82  LD (IY+CHCNTL),0x00
9594
        LD (IY+CHCNTH),0x00
36 savelij 9595
C50_83  POP HL
9596
        PUSH HL
9597
        BIT 7,(IY+CHSTAT)
9598
        JR NZ,C50_84
9599
        BIT 7,L
9600
C50_84  POP HL
9601
        POP BC
9602
        POP DE
9603
        JP C50_LP
9604
 
9605
C50_90  LD A,L
181 savelij 9606
        CP 0x40
36 savelij 9607
        JR C,C50_91
181 savelij 9608
        LD L,0x40
36 savelij 9609
C50_91  LD (IY+CHVOL),A
9610
        LD (IY+CHMVOL),A
9611
        JP C50_LP
9612
 
9613
C50_A0  LD (IY+CHFINE),L
9614
        JP C50_LP
9615
 
9616
C50_B0  LD (IY+CHPAN),L
9617
        JP C50_LP
9618
 
9619
C50_C0  LD A,H
9620
        OR A
9621
        JR NZ,C50_C1
9622
        OR L
9623
        JR NZ,C50_C1
181 savelij 9624
        LD L,0x01
36 savelij 9625
C50_C1  LD A,H
181 savelij 9626
        CP 0x20
36 savelij 9627
        JR C,C50_C2
181 savelij 9628
        LD HL,0x1FFF
36 savelij 9629
C50_C2  LD A,(IY+CHSTAT)
9630
        SET 7,(IY+CHSTAT)
9631
        LD (IY+CHPERL),L
9632
        LD (IY+CHPERH),H
181 savelij 9633
        LD (IY+CHCNTL),0x00
9634
        LD (IY+CHCNTH),0x00
36 savelij 9635
        LD (IY+CHSTAT),A
9636
        JP C50_LP
9637
 
9638
C50_D0  LD A,H
9639
        OR A
9640
        JR NZ,C50_D1
9641
        OR L
9642
        JR NZ,C50_D1
181 savelij 9643
        LD L,0x01
36 savelij 9644
C50_D1  LD A,H
181 savelij 9645
        CP 0x80
36 savelij 9646
        JR C,C50_D2
181 savelij 9647
        LD HL,0x7FFF
36 savelij 9648
C50_D2  LD A,(IY+CHSTAT)
9649
        SET 7,(IY+CHSTAT)
9650
        LD (IY+CHFRQL),L
9651
        LD (IY+CHFRQH),H
181 savelij 9652
        LD (IY+CHCNTL),0x00
9653
        LD (IY+CHCNTH),0x00
36 savelij 9654
        LD (IY+CHSTAT),A
9655
        JP C50_LP
9656
 
9657
C50_E0
9658
C50_F0
9659
 
9660
;Get Song Position
69 savelij 9661
;祭 祭 ६ Song_Position  ⥪饬 㫥.
36 savelij 9662
COM60   LD A,(MTSNGPS)
9663
        OUT (ZXDATWR),A
9664
        OUT (CLRCBIT),A
9665
        RET
9666
 
9667
;Get Pattern Position
69 savelij 9668
;祭 祭 ६ Pattern_Position  ⥪饬 㫥.
36 savelij 9669
COM61   LD A,(MTPATPS)
9670
        OUT (ZXDATWR),A
9671
        OUT (CLRCBIT),A
9672
        RET
9673
 
9674
;Get Mixed Position
69 savelij 9675
; 祭 Pattern_Position,  ᬥ蠭  Song_Position.
36 savelij 9676
COM62   LD A,(MTSNGPS)
9677
        RRCA
9678
        RRCA
181 savelij 9679
        AND 0xC0
36 savelij 9680
        LD B,A
9681
        LD A,(MTPATPS)
181 savelij 9682
        AND 0x3F
36 savelij 9683
        OR B
9684
        OUT (ZXDATWR),A
9685
        OUT (CLRCBIT),A
9686
        RET
9687
 
9688
;Get Channel Volumes
69 savelij 9689
; ஬   .
36 savelij 9690
COM64   LD HL,CHANS+CHMVOL
9691
        JP COM64_
9692
 
9693
COM63   LD HL,CHANS+CHREAL
9694
COM64_  LD DE,CHANLEN
181 savelij 9695
        LD B,0x04
36 savelij 9696
        LD A,(HL)
9697
        OUT (ZXDATWR),A
9698
        OUT (CLRCBIT),A
9699
        JP COM63__
9700
 
9701
;Get Channel Notes
69 savelij 9702
;    .
36 savelij 9703
COM63_  LD A,(HL)
9704
        OUT (ZXDATWR),A
9705
COM63__ SET 7,(HL)
9706
        CALL HSEND
9707
        ADD HL,DE
9708
        DJNZ COM63_
9709
        RET
9710
 
9711
;Set speed/tempo (*)
181 savelij 9712
;⠭ ᪮  । 0x01-0x1F.  祭 0x20-0xFF ⠭-
69 savelij 9713
; ⥬ ந뢠. 祭 ⥬ ᮮ⢥ ਣ 
181 savelij 9714
;᪮ ࠢ 0x06.
36 savelij 9715
COM66   IN A,(ZXDATRD)
9716
        OUT (CLRCBIT),A
9717
        CALL FXF
9718
        RET
9719
 
9720
;Get speed value (*)
69 savelij 9721
;⥭ ⥪饩 ᪮.
36 savelij 9722
COM67   LD A,(MTSPEED)
9723
        OUT (ZXDATWR),A
9724
        OUT (CLRCBIT),A
9725
        RET
9726
 
9727
;Get tempo value (*)
69 savelij 9728
;⥭ ⥪饣 ⥬.
36 savelij 9729
COM68   LD A,(MTBPM)
9730
        OUT (ZXDATWR),A
9731
        OUT (CLRCBIT),A
9732
        RET
9733
 
9734
;Process Sound (*)
69 savelij 9735
;室  ᫥騩  ( ⨪)   ந뢠 㪠.
181 savelij 9736
COM69   LD A,0xFF
36 savelij 9737
        LD (INGEN),A
9738
        CALL ENGINE
9739
        XOR A
9740
        LD (INGEN),A
9741
        OUT (CLRCBIT),A
9742
        RET
9743
 
9744
;Stop FX in channels
69 savelij 9745
;⠭ ந뢠 䥪⮢   ,   㪠뢠-
9746
;  ᪥  (Channel Mask).      n-    㪠-
9747
;  ,  䥪  n-  ॡ ⠭
36 savelij 9748
COM3A   IN A,(ZXDATRD)
9749
        OUT (CLRCBIT),A
9750
        LD C,A
9751
        CPL
9752
        LD B,A
9753
        LD A,(FXCHNS)
9754
        AND B
9755
        LD (FXCHNS),A
9756
        LD IY,CHANSFX
9757
        LD DE,CHANLEN
9758
        SLA C
9759
        JR NC,COM3A_2
9760
COM3A_1 RES 7,(IY+CHSTAT)
9761
COM3A_2 ADD IY,DE
9762
        SLA C
9763
        JR C,COM3A_1
9764
        JP NZ,COM3A_2
9765
        RET
9766
 
181 savelij 9767
;Direct Play FX Sample (0x80..0x83)
69 savelij 9768
;ந뢠    .
36 savelij 9769
COM80   IN A,(ZXDATRD)
9770
        OR A
9771
        JR NZ,COM80_1
9772
        LD A,(CURFX)
9773
COM80_1 LD (CURFX),A
9774
        LD C,A
9775
        LD A,(CNTFX)
9776
        CP C
9777
        JP C,COM39_9
9778
        IN A,(ZXCMD)
9779
        OUT (CLRCBIT),A
9780
        LD B,A
9781
        BIT 3,B
9782
        CALL NZ,HGET
9783
        LD E,A
9784
        BIT 4,B
9785
        CALL NZ,HGET
9786
        LD D,A
9787
        LD A,C
9788
        CALL GETFX
9789
        PUSH DE
9790
        PUSH BC
9791
        CALL COM80_2
9792
        POP  BC
9793
        POP  DE
9794
        PUSH HL
9795
        POP  IY
9796
        BIT 4,B
9797
        JR Z,COM80_4
9798
        LD (IY+CHVOL),D
9799
        LD (IY+CHMVOL),D
9800
COM80_4 BIT 3,B
9801
        RET Z
9802
        CALL GETFRQ
9803
        LD (IY+CHFRQL),L
9804
        LD (IY+CHFRQH),H
9805
        CALL GETPER
9806
        LD (IY+CHPERL),L
9807
        LD (IY+CHPERH),H
9808
        RET
9809
 
9810
COM80_2 PUSH IY
9811
        LD IY,CHANSFX
9812
        LD DE,CHANLEN
9813
        LD A,B
181 savelij 9814
        AND 0x07
36 savelij 9815
COM80_3 JP Z,PLFX_12
9816
        ADD IY,DE
9817
        DEC A
9818
        JP COM80_3
9819
 
9820
COMA0   IN A,(ZXDATRD)
9821
        LD C,A
9822
        IN A,(ZXCMD)
9823
        OUT (CLRCBIT),A
9824
        LD B,A
9825
        LD IY,CHANSFX
9826
        LD DE,CHANLEN
181 savelij 9827
        AND 0x07
36 savelij 9828
COMA0_1 JR Z,COMA0_2
9829
        ADD IY,DE
9830
        DEC A
9831
        JP NZ,COMA0_1
9832
COMA0_2 BIT 3,B
9833
        JR NZ,COMA0_3
9834
        LD E,C
9835
        CALL GETPER
9836
        LD (IY+CHPERL),L
9837
        LD (IY+CHPERH),H
9838
        CALL GETFRQ
9839
        LD (IY+CHFRQL),L
9840
        LD (IY+CHFRQH),H
9841
        RET
9842
 
9843
COMA0_3 LD (IY+CHVOL),C
9844
        LD (IY+CHMVOL),C
9845
        SET 0,(IY+CHSTAT)
9846
        RET
9847
 
9848
; INPUT : E=NOTE,IY=CHANNEL
9849
; OUTPUT: HL=PERIOD OR FREQUENCY
9850
; USED  : HL,D,BC,A
9851
 
9852
GETPER  LD HL,AMFRQTB   ; FOR AMIGA FREQUENCY
9853
        JR GETFRQ_
9854
 
9855
GETFRQ  LD HL,GSFRQTB
9856
GETFRQ_ LD A,(IY+CHFINE)
9857
        RRA
181 savelij 9858
        AND 0x0F
36 savelij 9859
        JR Z,GETFRQ2
9860
        LD C,A
9861
        ADD A,A
9862
        ADD A,C
9863
        ADD A,A
9864
        ADD A,A
9865
        ADD A,A
9866
        LD B,0
9867
        RL B
9868
        ADD A,A
9869
        RL B
9870
        ADD A,A
9871
        RL B
9872
        LD C,A
9873
        ADD HL,BC
9874
        ADD HL,BC
9875
GETFRQ2 LD D,0
9876
        LD A,E
9877
        CP 96
9878
        JR C,GETFRQ3
9879
        LD E,95
9880
GETFRQ3 SLA E
9881
        ADD HL,DE
9882
        LD E,(HL)
9883
        INC HL
9884
        LD D,(HL)
9885
        EX DE,HL
9886
        LD E,A
9887
        BIT 0,(IY+CHFINE)
9888
        RET Z
9889
        RET
9890
 
181 savelij 9891
PLAYFX  LD C,0x00
36 savelij 9892
        LD A,(MTSTAT)
9893
        OR A
9894
        JP M,PLFX_03
9895
        LD A,(MODULE)
9896
        OR A
9897
        JR Z,PLFX_03
9898
        LD IY,CHANS
9899
        LD DE,CHANLEN
181 savelij 9900
        LD B,0x04
36 savelij 9901
PLFX_00 BIT 7,(IY+CHSTAT)
9902
        JR Z,PLFX_01
9903
        LD A,(IY+CHMVOL)
9904
        OR A
9905
        JR Z,PLFX_01
9906
        LD A,C
9907
        OR (IY+CHRDR)
9908
        LD C,A
9909
PLFX_01 ADD IY,DE
9910
        DJNZ  PLFX_00
9911
PLFX_03 PUSH HL
9912
        POP IY
9913
        LD HL,GSCHNS
9914
        LD A,(HL)
9915
        OR A
9916
        SCF
9917
        RET Z
9918
        LD A,(FXCHNS)
9919
        OR C
9920
        CPL
9921
        AND (HL)
9922
        LD C,A
9923
        AND (IY+24)
9924
        JR NZ,PLFX_10
9925
        LD A,(IY+26)
181 savelij 9926
        CP 0x40
36 savelij 9927
        JR NC,PLFX_04
9928
        LD A,C
9929
        AND (IY+25)
9930
        JR NZ,PLFX_10
9931
        JP PLFX_05
9932
 
9933
PLFX_04 LD A,(FXCHNS)
9934
        CPL
9935
        AND (HL)
9936
        AND (IY+24)
9937
        JR NZ,PLFX_10
9938
        LD A,(FXCHNS)
9939
        CPL
9940
        AND (HL)
9941
        AND (IY+25)
9942
        JR NZ,PLFX_10
9943
PLFX_05 LD A,(FXCHNS)
9944
        LD B,A
9945
        LD A,(GSCHNS)
9946
        AND B
9947
        LD B,A
9948
        PUSH IY
9949
        LD IY,CHANSFX
9950
        LD L,A
181 savelij 9951
        LD H,0xFF
36 savelij 9952
        LD DE,CHANLEN
9953
        SRL B
9954
        JP C,PLFX_06
9955
        JP NZ,PLFX_07
9956
        JP PLFX_08
9957
 
9958
PLFX_06 LD A,(IY+CHPRIOR)
9959
        CP H
9960
        JR NC,PLFX_07
9961
        LD H,A
9962
        LD L,(IY+CHRDR)
9963
PLFX_07 ADD IY,DE
9964
        SRL B
9965
        JP C,PLFX_06
9966
        JP NZ,PLFX_07
9967
PLFX_08 POP IY
9968
        LD A,L
9969
        OR A
9970
        SCF
9971
        RET Z
9972
        LD A,H
9973
        CP (IY+26)
9974
        LD A,L
9975
        JR C,PLFX_10
9976
        SCF
9977
        RET
9978
 
9979
PLFX_10 LD B,A
9980
        PUSH IY
9981
        LD IY,CHANSFX
9982
        LD DE,CHANLEN
9983
        SRL B
9984
        JP C,PLFX_12
9985
PLFX_11 ADD IY,DE
9986
        SRL B
9987
        JP NC,PLFX_11
9988
PLFX_12 LD A,(FXCHNS)
9989
        OR (IY+CHRDR)
9990
        LD (FXCHNS),A
9991
        EX (SP),IY
9992
        LD E,(IY+8)
9993
        LD D,(IY+9)
9994
        LD A,(IY+10)
181 savelij 9995
        DB 0xCB,0x32;SLI D
36 savelij 9996
        RLA
9997
        RRC D
9998
        EX (SP),IY
9999
        LD (IY+CHCURP),A
10000
        LD (IY+CHCURL),E
10001
        LD (IY+CHCURH),D
10002
        EX (SP),IY
10003
        LD A,(IY+8)
10004
        ADD A,(IY+11)
10005
        LD E,A
10006
        LD A,(IY+9)
10007
        ADC A,(IY+12)
10008
        LD D,A
10009
        LD A,(IY+10)
10010
        ADC A,(IY+13)
181 savelij 10011
        DB 0xCB,0x32;SLI D
36 savelij 10012
        RLA
10013
        RRC D
10014
        EX (SP),IY
10015
        LD (IY+CHENDP),A
10016
        LD (IY+CHENDL),E
10017
        LD (IY+CHENDH),D
181 savelij 10018
        LD (IY+CHLPBP),0xFF
36 savelij 10019
        EX (SP),IY
10020
        LD A,(IY+16)
10021
        INC A
10022
        JR Z,PLFX_13
10023
        LD A,(IY+8)
10024
        ADD A,(IY+14)
10025
        LD E,A
10026
        LD A,(IY+9)
10027
        ADC A,(IY+15)
10028
        LD D,A
10029
        LD A,(IY+10)
10030
        ADC A,(IY+16)
181 savelij 10031
        DB 0xCB,0x32;SLI D
36 savelij 10032
        RLA
10033
        RRC D
10034
        EX (SP),IY
10035
        LD (IY+CHLPBP),A
10036
        LD (IY+CHLPBL),E
10037
        LD (IY+CHLPBH),D
10038
        EX (SP),IY
10039
        LD A,(IY+8)
10040
        ADD A,(IY+17)
10041
        LD E,A
10042
        LD A,(IY+9)
10043
        ADC A,(IY+18)
10044
        LD D,A
10045
        LD A,(IY+10)
10046
        ADC A,(IY+19)
181 savelij 10047
        DB 0xCB,0x32;SLI D
36 savelij 10048
        RLA
10049
        RRC D
10050
        EX (SP),IY
10051
        LD (IY+CHLPEP),A
10052
        LD (IY+CHLPEL),E
10053
        LD (IY+CHLPEH),D
10054
        EX (SP),IY
10055
PLFX_13 LD E,(IY+20)
10056
        LD D,(IY+21)
10057
        LD B,(IY+31)
10058
        LD C,(IY+23)
10059
        LD L,(IY+22)
10060
        LD H,(IY+6)
10061
        EX (SP),IY
10062
        LD (IY+CHVOL),E
10063
        LD (IY+CHMVOL),E
10064
        LD (IY+CHFINE),D
10065
        LD (IY+CHNOTE),B
10066
        LD (IY+CHPAN),C
10067
        LD (IY+CHRLNT),L
10068
        LD (IY+CHSQZ),H
10069
        EX (SP),IY
10070
        LD E,(IY+54)
10071
        LD D,(IY+55)
10072
        LD L,(IY+56)
10073
        LD H,(IY+57)
10074
        LD C,(IY+26)
10075
        EX (SP),IY
10076
        SRL D
10077
        RR E
10078
        SRL D
10079
        RR E
10080
        LD (IY+CHPERL),E
10081
        LD (IY+CHPERH),D
10082
        LD (IY+CHFRQL),L
10083
        LD (IY+CHFRQH),H
10084
        LD (IY+CHPRIOR),C
181 savelij 10085
        LD (IY+CHFADVH),0xFF
10086
        LD (IY+CHFADVL),0xFF
10087
        LD (IY+CHDELVH),0xFF
10088
        LD (IY+CHDELVL),0xFF
10089
        LD (IY+CHEPAN),0x20
10090
        LD (IY+CHEVOL),0x40
10091
        LD (IY+CHCNTL),0x00
10092
        LD (IY+CHCNTH),0x00
10093
        LD (IY+CHVOL),0x40
10094
        LD (IY+CHPAN),0x80
36 savelij 10095
        SET 7,(IY+CHSTAT)
10096
        SET 0,(IY+CHSTAT)
10097
        PUSH IY
10098
        POP HL
10099
        POP IY
181 savelij 10100
        LD A,0xFF
36 savelij 10101
        LD (PROCESS),A
10102
        RET
10103
 
10104
;INCLUDE "MEM_H.a80"
10105
;MEMORY MOVEMENT MODULE - HIGH PART
10106
 
10107
;PROCEDURE: MOVE MEMORY
10108
;INPUT    : B ,HL  - SOURCE START LOGICAL ADRESS
10109
;           C ,DE  - SOURCE END LOGICAL ADRESS
10110
;           B',HL' - DESTINATION LOGICAL ADRESS
10111
;OUTPUT   : C ,DE  = DEST-START
10112
;USES     : TYPE 1 REGS,RAMPG,CPAGE,BUFFER,SYSTEM
10113
;EFFECT   : MOVES MEMORY REGION {START,END-1} TO DEST
10114
;           ALL ADRESSES IS LOGICAL
10115
 
10116
MOVMEM  XOR A
10117
        LD (SYSTEM),A
10118
        PUSH HL
10119
        LD A,B
10120
        EXX
10121
        POP DE
10122
        PUSH HL
10123
        PUSH BC
10124
        LD C,A
10125
        OR A
10126
        SBC HL,DE
10127
        LD A,B
10128
        SBC A,C
10129
        EX DE,HL
10130
        POP BC
10131
        POP HL
10132
        LD C,A
10133
        OR E
10134
        OR D
10135
        RET Z
10136
        EXX
10137
        EX DE,HL
10138
        SBC HL,DE
10139
        LD A,C
10140
        SBC A,B
69 savelij 10141
        LD IXL,A
36 savelij 10142
        OR L
10143
        OR H
10144
        EXX
10145
        RET Z
10146
        PUSH DE
10147
        PUSH BC
10148
        BIT 7,C
10149
        LD A,B
10150
        EXX
10151
        JR NZ,MOVL
10152
        CP C
10153
        JP C,MOVH
10154
        JR NZ,MOVL
10155
        EXX
10156
        LD A,H
10157
        EXX
10158
        CP D
10159
        JP C,MOVH
10160
        JR NZ,MOVL
10161
        EXX
10162
        LD A,L
10163
        EXX
10164
        CP E
10165
        JP C,MOVH
181 savelij 10166
MOVL    DB 0xCB,0x32;SLI D
36 savelij 10167
        RL B
10168
        RRC D
10169
        PUSH DE
10170
        EXX
10171
        EX DE,HL
10172
        POP HL
181 savelij 10173
        DB 0xCB,0x32;SLI D
36 savelij 10174
        RL B
10175
        RRC D
10176
        LD A,B
181 savelij 10177
        LD BC,0x0000
36 savelij 10178
        EXX
10179
        LD C,A
10180
ML1     EXX
10181
        LD A,H
10182
        CP D
10183
        JR C,ML3
10184
        JR NZ,ML2
10185
        LD A,L
10186
        CP E
10187
        JR C,ML3
10188
ML2     LD A,C
10189
        SUB L
10190
        LD C,A
10191
        LD A,B
10192
        SBC A,H
10193
        JR ML4
10194
ML3     LD A,C
10195
        SUB E
10196
        LD C,A
10197
        LD A,B
10198
        SBC A,D
10199
ML4     LD B,A
69 savelij 10200
        LD A,IXL
36 savelij 10201
        OR A
10202
        JR NZ,ML6
10203
        LD A,B
10204
        EXX
10205
        CP H
10206
        JR C,ML7
10207
        JR NZ,ML5
10208
        EXX
10209
        LD A,C
10210
        EXX
10211
        CP L
10212
        JR C,ML7
10213
ML5     PUSH HL
10214
        EXX
10215
        POP BC
10216
ML6     EXX
69 savelij 10217
ML7     LD D,HIGH (RAMPG)
36 savelij 10218
        LD A,B
10219
        CP C
10220
        JR NZ,ML9
10221
        LD E,B
10222
        LD A,(DE)
10223
        LD (SDPAGE),A
10224
        EXX
10225
        PUSH BC
10226
ML8     LD A,C
10227
        CALL MLDI
10228
        JP PE,ML8
10229
        JR MLD
10230
 
10231
ML9     EXX
10232
        PUSH BC
10233
MLA     PUSH BC
10234
        PUSH DE
10235
        EXX
10236
        LD E,B
10237
        LD A,(DE)
10238
        LD (SDPAGE),A
10239
        EXX
10240
        LD DE,BUFFER
10241
        LD A,C
10242
        CALL MLDI
10243
        POP DE
10244
        POP BC
10245
        PUSH HL
10246
        EXX
10247
        LD E,C
10248
        LD A,(DE)
10249
        LD (SDPAGE),A
10250
        EXX
10251
        LD HL,BUFFER
10252
        LD A,C
10253
        CALL MLDI
10254
        POP HL
10255
        JP PE,MLA
10256
MLD     BIT 7,H
10257
        JR NZ,MLB
10258
        SET 7,H
10259
        EXX
10260
        INC B
10261
        JP MLC
10262
 
10263
MLB     SET 7,D
10264
        EXX
10265
        INC C
10266
MLC     POP DE
10267
        OR A
10268
        SBC HL,DE
69 savelij 10269
        LD A,IXL
181 savelij 10270
        SBC A,0x00
69 savelij 10271
        LD IXL,A
36 savelij 10272
        OR L
10273
        OR H
10274
        JP NZ,ML1
10275
        POP BC
10276
        POP DE
10277
        RET
10278
 
10279
MOVH    LD A,L
10280
        OR H
10281
        JR NZ,MH0
69 savelij 10282
        DEC IXL
36 savelij 10283
MH0     DEC HL
10284
        EX DE,HL
10285
        ADD HL,DE
10286
        LD A,B
69 savelij 10287
        ADC A,IXL
181 savelij 10288
        DB 0xCB,0x34;SLI H
36 savelij 10289
        RLA
10290
        RRC H
10291
        LD B,A
10292
        PUSH HL
10293
        PUSH DE
10294
        INC DE
10295
        LD A,E
10296
        OR D
69 savelij 10297
        LD A,IXL
36 savelij 10298
        JR NZ,MHF
69 savelij 10299
        INC IXL
36 savelij 10300
MHF     EX DE,HL
10301
        EXX
10302
        POP DE
10303
        ADD HL,DE
10304
        ADC A,B
181 savelij 10305
        DB 0xCB,0x34;SLI H
36 savelij 10306
        RLA
10307
        RRC H
10308
        EX DE,HL
10309
        POP HL
10310
        EXX
10311
        LD C,A
10312
MH1     EXX
10313
        LD A,H
10314
        CP D
10315
        JR C,MH3
10316
        JR NZ,MH2
10317
        LD A,L
10318
        CP E
10319
        JR C,MH3
10320
MH2     LD C,E
10321
        LD B,D
10322
        JR MH4
10323
 
10324
MH3     LD C,L
10325
        LD B,H
10326
MH4     RES 7,B
10327
        INC BC
69 savelij 10328
        LD A,IXL
36 savelij 10329
        OR A
10330
        JR NZ,MH6
10331
        LD A,B
10332
        EXX
10333
        CP H
10334
        JR C,MH7
10335
        JR NZ,MH5
10336
        EXX
10337
        LD A,C
10338
        EXX
10339
        CP L
10340
        JR C,MH7
10341
MH5     PUSH HL
10342
        EXX
10343
        POP BC
10344
MH6     EXX
69 savelij 10345
MH7     LD D,HIGH (RAMPG)
36 savelij 10346
        LD A,B
10347
        CP C
10348
        JR NZ,MH9
10349
        LD E,B
10350
        LD A,(DE)
10351
        LD (SDPAGE),A
10352
        EXX
10353
        PUSH BC
10354
MH8     LD A,C
10355
        CALL MLDD
10356
        JP PE,MH8
10357
        JR MHD
10358
 
10359
MH9     EXX
10360
        PUSH BC
10361
MHA     PUSH BC
10362
        PUSH DE
10363
        EXX
10364
        LD E,B
10365
        LD A,(DE)
10366
        LD (SDPAGE),A
10367
        EXX
181 savelij 10368
        LD DE,BUFFER+0x00FF
36 savelij 10369
        LD A,C
10370
        CALL MLDD
10371
        POP DE
10372
        POP BC
10373
        PUSH HL
10374
        EXX
10375
        LD E,C
10376
        LD A,(DE)
10377
        LD (SDPAGE),A
10378
        EXX
181 savelij 10379
        LD HL,BUFFER+0x00FF
36 savelij 10380
        LD A,C
10381
        CALL MLDD
10382
        POP HL
10383
        JP PE,MHA
10384
MHD     BIT 7,H
10385
        JR NZ,MHB
10386
        SET 7,H
10387
        EXX
10388
        DEC B
10389
        JP MHC
10390
MHB     SET 7,D
10391
        EXX
10392
        DEC C
10393
MHC     POP DE
10394
        OR A
10395
        SBC HL,DE
69 savelij 10396
        LD A,IXL
181 savelij 10397
        SBC A,0x00
69 savelij 10398
        LD IXL,A
36 savelij 10399
        OR L
10400
        OR H
10401
        JP NZ,MH1
10402
        POP BC
10403
        POP DE
10404
        RET
10405
 
10406
;PROCEDURE: LOAD MEMORY BLOCK
10407
;INPUT    : A,HL  - SOURCE LOGICAL ADRESS
10408
;           DE    - DESTINATION PHISICAL ADRESS (LOW RAM)
10409
;           BC    - BLOCK LENGTH
10410
;USES     : TYPE 2 REGS,RAMPG,CPAGE,SYSTEM
10411
;EFFECT   : MOVES MEMORY BLOCK FROM HIGH MEMORY TO LOW
10412
;               SWITCH TO PAGE 0
10413
 
181 savelij 10414
LDMEM   DB 0xCB,0x34;SLI H
36 savelij 10415
        RLA
10416
        RRC H
69 savelij 10417
LM1     LD IXL,A
36 savelij 10418
        PUSH HL
10419
        LD L,A
69 savelij 10420
        LD H,HIGH (RAMPG)
36 savelij 10421
        LD A,(HL)
10422
        POP HL
10423
        LD (SDPAGE),A
10424
        ADD HL,BC
10425
        JR NC,LM2
10426
        JR NZ,LM4
10427
LM2     SBC HL,BC
10428
LM3     LD A,C
10429
        CALL MLDI
10430
        JP PE,LM3
10431
        RET
10432
 
10433
LM4     XOR A
10434
        SBC HL,BC
10435
LM5     LD A,L
10436
        NEG
10437
        CALL MLDI
10438
        BIT 7,H
10439
        JP NZ,LM5
10440
        SET 7,H
69 savelij 10441
        LD A,IXL
36 savelij 10442
        INC A
10443
        JP  LM1
10444
 
10445
;PROCEDURE: SAVE MEMORY BLOCK
10446
;INPUT    : A,DE  - DESTINATION LOGICAL ADRESS
10447
;           HL    - SOURCE PHISICAL ADRESS (LOW RAM)
10448
;           BC    - BLOCK LENGTH
10449
;USES     : TYPE 2 REGS,RAMPG,CPAGE,SYSTEM
10450
;EFFECT   : MOVES MEMORY BLOCK FROM LOW MEMORY TO HIGH
10451
;               SWITCH TO PAGE 0
10452
 
181 savelij 10453
SVMEM   DB 0xCB,0x32;SLI D
36 savelij 10454
        RLA
10455
        RRC D
69 savelij 10456
SM1     LD IXL,A
36 savelij 10457
        PUSH HL
10458
        LD L,A
69 savelij 10459
        LD H,HIGH (RAMPG)
36 savelij 10460
        LD A,(HL)
10461
        POP HL
10462
        LD (SDPAGE),A
10463
        EX DE,HL
10464
        ADD HL,BC
10465
        JR NC,SM2
10466
        JR NZ,SM4
10467
SM2     SBC HL,BC
10468
        EX DE,HL
10469
SM3     LD A,C
10470
        CALL MLDI
10471
        JP PE,SM3
10472
        RET
10473
 
10474
SM4     XOR A
10475
        SBC HL,BC
10476
        EX DE,HL
10477
SM5     LD A,E
10478
        NEG
10479
        CALL MLDI
10480
        BIT 7,D
10481
        JP NZ,SM5
10482
        SET 7,D
69 savelij 10483
        LD A,IXL
36 savelij 10484
        INC A
10485
        JP  SM1
10486
 
10487
;INCLUDE "ENGINE_L.a80"
10488
ENGINE  LD HL,(QTFREE)
69 savelij 10489
        LD H,HIGH (QTMAP)
36 savelij 10490
        LD A,L
181 savelij 10491
        AND 0x1C
36 savelij 10492
        LD L,A
10493
        LD (QTFREE),HL
10494
        LD A,(HL)
10495
        OR A
10496
        JP NZ,ENG_FUL
181 savelij 10497
        LD A,(CHANSFX+0x000)
36 savelij 10498
        RLCA
10499
        RR C
181 savelij 10500
        LD A,(CHANSFX+0x040)
36 savelij 10501
        RLCA
10502
        RR C
181 savelij 10503
        LD A,(CHANSFX+0x080)
36 savelij 10504
        RLCA
10505
        RR C
181 savelij 10506
        LD A,(CHANSFX+0x0C0)
36 savelij 10507
        RLCA
10508
        RR C
181 savelij 10509
        LD A,(CHANSFX+0x100)
36 savelij 10510
        RLCA
10511
        RR C
181 savelij 10512
        LD A,(CHANSFX+0x140)
36 savelij 10513
        RLCA
10514
        RR C
181 savelij 10515
        LD A,(CHANSFX+0x180)
36 savelij 10516
        RLCA
10517
        RR C
181 savelij 10518
        LD A,(CHANSFX+0x1C0)
36 savelij 10519
        RLCA
10520
        RR C
10521
        LD A,(GSCHNS)
10522
        AND C
10523
        LD C,A
10524
        LD (FXCHNS),A
10525
        JR NZ,ENG_01
10526
        LD A,(MTSTAT)
10527
        BIT 6,A
10528
        RET NZ
10529
        OR A
10530
        JP M,ENG_00
10531
        LD A,(MODULE)
10532
        OR A
10533
        JR NZ,ENG_01
10534
ENG_00  XOR A
10535
        LD (PROCESS),A
10536
        RET
10537
 
10538
ENG_01  LD A,(MODSWCH)
10539
        OR A
10540
        JR NZ,ENG_03
10541
        LD A,(MODULE)
10542
        OR A
10543
        JR Z,ENG_03
181 savelij 10544
        LD A,0x01
36 savelij 10545
        LD (SGENOFF),A
10546
        LD A,(TCKLEFT+1)
181 savelij 10547
        CP 0x02
36 savelij 10548
        JR NC,ENG_05
10549
        OR A
10550
        LD A,(TCKLEFT)
10551
        JR Z,ENG_04
181 savelij 10552
        SUB 0x80
36 savelij 10553
        JR NC,ENG_05
10554
        JP ENG_04
10555
 
181 savelij 10556
ENG_03  LD A,0x01
36 savelij 10557
        LD (SGENOFF),A
10558
        LD A,(FXTICK+1)
181 savelij 10559
        CP 0x02
36 savelij 10560
        JR NC,ENG_05
10561
        OR A
10562
        LD A,(FXTICK)
10563
        JR Z,ENG_04
181 savelij 10564
        SUB 0x80
36 savelij 10565
        JR NC,ENG_05
10566
ENG_04  NEG
10567
        LD (SGENOFF),A
10568
ENG_05  XOR A
10569
        LD (CHANNEL),A
10570
        OR C
10571
        JR Z,ENG_07
10572
        LD IY,CHANSFX
10573
        SRL C
10574
ENG_06  PUSH BC
10575
        CALL C,GEN
10576
        LD BC,CHANLEN
10577
        ADD IY,BC
10578
        POP BC
10579
        SRL C
10580
        JR C,ENG_06
10581
        JR NZ,ENG_06
10582
 
10583
ENG_07  CALL QUANTUM
10584
        XOR A
10585
        LD (CPAGE),A
10586
        OUT (MPAG),A
10587
        RET
10588
 
10589
ENG_80  LD A,(SGENOFF)
10590
        LD E,A
181 savelij 10591
        LD D,0x00
36 savelij 10592
        LD HL,(FXTICK)
10593
        OR A
10594
        SBC HL,DE
10595
        JR Z,ENG_81
10596
        JR C,ENG_81
10597
        LD (FXTICK),HL
10598
        JP ENG_82
10599
 
10600
ENG_81
10601
ENG_82  LD A,(MODSWCH)
10602
        OR A
10603
        JR NZ,$
10604
        LD A,(MODULE)
10605
        OR A
10606
        JR Z,$
10607
        LD HL,(TCKLEFT)
10608
        SBC HL,DE
10609
        LD (TCKLEFT),HL
10610
        JR NZ,ENG_83
10611
ENG_83
10612
ENG_FUL LD A,(PLAYING)
10613
        OR A
10614
        RET NZ
10615
        DI
10616
        XOR A
10617
        LD (FILLALL),A
10618
        CALL QTPLAY
10619
        RET
10620
 
10621
;INCLUDE "FX_H.a80"
10622
 
10623
FXCHK_  LD HL,FXJP2
10624
        JP FXCHK__
10625
 
10626
FXCHK   LD HL,FXJP1
10627
FXCHK__ LD A,(IY+CHCOM)
181 savelij 10628
        AND 0x1F
36 savelij 10629
        ADD A,A
10630
        ADD A,L
10631
        LD L,A
10632
        LD A,(HL)
10633
        INC L
10634
        LD H,(HL)
10635
        LD L,A
10636
        LD A,(IY+CHPARM)
10637
        JP (HL)
10638
 
10639
FXE_    LD HL,FXEJP2
10640
        JP FXE__
10641
 
10642
FXE     LD HL,FXEJP1
10643
FXE__   RRCA
10644
        RRCA
10645
        RRCA
10646
        RRCA
181 savelij 10647
        AND 0x0F
36 savelij 10648
        ADD A,A
10649
        ADD A,L
10650
        LD L,A
10651
        LD A,(HL)
10652
        INC L
10653
        LD H,(HL)
10654
        LD L,A
10655
        LD A,(IY+CHPARM)
181 savelij 10656
        AND 0x0F
36 savelij 10657
        JP (HL)
10658
 
10659
FXRET   RET
10660
 
10661
FXNOP   LD L,(IY+CHPERL)
10662
        LD H,(IY+CHPERH)
10663
EFXNOP2 CALL EFXCNV
10664
        LD (IY+CHFRQL),L
10665
        LD (IY+CHFRQH),H
10666
        RET
10667
 
10668
;---patched
10669
EFXCNV  LD A,H
181 savelij 10670
        CP 0x04
36 savelij 10671
        JR NC,EFXCNV1
10672
        XOR A
10673
        LD (CPAGE),A
10674
        OUT (MPAG),A
10675
        ADD HL,HL
10676
        LD A,H
181 savelij 10677
        ADD A,0xF8
36 savelij 10678
        LD H,A
10679
        LD A,(HL)
10680
        INC HL
10681
        LD H,(HL)
10682
        LD L,A
10683
        RET
10684
 
10685
EFXCNV1 PUSH HL
10686
        LD E,L
10687
        LD D,H
10688
        ADD HL,HL
10689
        ADD HL,HL
10690
        ADD HL,DE
10691
        XOR A   ;HL A
10692
        LD C,A  ;DE C
10693
        SRL D           ;/2
10694
        RR E
10695
        RR C
10696
        ADD A,C
10697
        ADC HL,DE               ;+/2
10698
        SRL D           ;/4
10699
        RR E
10700
        RR C
10701
        SRL D           ;/8
10702
        RR E
10703
        RR C
10704
        ADD A,C
10705
        ADC HL,DE               ;+/8
10706
        SRL D           ;/16
10707
        RR E
10708
        RR C
10709
        SRL D           ;/32
10710
        RR E
10711
        RR C
10712
        SRL D           ;/64
10713
        RR E
10714
        RR C
10715
        SRL D           ;/128
10716
        RR E
10717
        RR C
10718
        SRL D           ;/256
10719
        RR E
10720
        RR C
10721
        ADD A,C
10722
        ADC HL,DE               ;+/256
10723
        SRL E           ;/512
10724
        RR C
10725
        ADD A,C
10726
        ADC HL,DE               ;+/512
10727
        SRL E           ;/1024
10728
        RR C
10729
        ADD A,C
10730
        ADC HL,DE               ;+/1024
10731
        SRL E           ;/2048
10732
        RR C
10733
        SRL E           ;/4096
10734
        RR C
10735
        ADD A,C
10736
        ADC HL,DE               ;+/4096
10737
        SRL H
10738
        RR L
10739
        SRL H
10740
        RR L
10741
        SRL H
10742
        RR L
10743
        JR NC,EFXCNV2
10744
        INC HL
10745
EFXCNV2 POP DE
10746
        ADD HL,DE
10747
        ADD HL,DE
10748
        RET
10749
 
10750
        INC A
10751
        RR L
10752
        JR NC,TUT00
10753
        INC HL
10754
TUT00   POP DE
10755
        ADD HL,DE
10756
        ADD HL,DE
10757
        RET
10758
 
69 savelij 10759
ARPTAB  DB 0,1,2,0,1,2,0,1,2,0
10760
        DB 1,2,0,1,2,0,1,2,0,1,2
10761
        DB 0,1,2,0,1,2,0,1,2,0
10762
        DB 1,2,0,1,2,0,1,2,0,1,2
36 savelij 10763
 
10764
FX0     OR A
10765
        JP Z,FXNOP
10766
        LD B,A
10767
        LD A,(MTCOUNT)
10768
        LD HL,ARPTAB
10769
        ADD A,L
10770
        LD L,A
10771
        LD A,H
181 savelij 10772
        ADC A,0x00
36 savelij 10773
        LD H,A
10774
        LD A,(HL)
10775
        OR A
10776
        JP Z,FXNOP
10777
        PUSH AF
10778
        PUSH BC
10779
        CALL NOTEFND
10780
        POP BC
10781
        POP AF
10782
        DEC A
10783
        LD A,B
10784
        JR NZ,FX0_2
10785
        RRCA
10786
        RRCA
10787
        RRCA
10788
        RRCA
181 savelij 10789
FX0_2   AND 0x0F
36 savelij 10790
        ADD A,E
10791
        LD E,A
10792
        CP 96
10793
        RET NC
10794
        CALL GETFRQ
10795
        LD (IY+CHFRQL),L
10796
        LD (IY+CHFRQH),H
10797
        RET
10798
 
10799
FX1     LD E,A
181 savelij 10800
        LD D,0x00
36 savelij 10801
        LD L,(IY+CHPERL)
10802
        LD H,(IY+CHPERH)
10803
        OR A
10804
        SBC HL,DE
10805
        JR NC,FX1_2
181 savelij 10806
        LD HL,0x0000
36 savelij 10807
FX1_2   PUSH HL
10808
        LD HL,113
10809
FX1_8   POP DE
10810
        OR A
10811
        SBC HL,DE
10812
        JR C,FX1_9
10813
        ADD HL,DE
10814
        EX DE,HL
10815
FX1_9   SET 7,(IY+CHFLAGS)
10816
        LD (IY+CHPERL),E
10817
        LD (IY+CHPERH),D
10818
        PUSH DE
10819
        EX DE,HL
10820
        CALL EFXCNV
10821
        LD (IY+CHFRQL),L
10822
        LD (IY+CHFRQH),H
10823
        POP DE
10824
        CALL NOTEFND
10825
        LD (IY+CHREAL),A
10826
        RET NC
10827
        LD (IY+CHNOTE),A
10828
        RES 7,(IY+CHFLAGS)
10829
        RET
10830
 
10831
FX2     LD E,A
181 savelij 10832
        LD D,0x00
36 savelij 10833
        LD L,(IY+CHPERL)
10834
        LD H,(IY+CHPERH)
10835
        ADD HL,DE
10836
        JR NC,FX2_2
181 savelij 10837
        LD HL,0xFFFF
36 savelij 10838
FX2_2   PUSH HL
10839
        LD HL,856
10840
FX2_8   POP DE
10841
        OR A
10842
        SBC HL,DE
10843
        JR NC,FX2_9
10844
        ADD HL,DE
10845
        EX DE,HL
10846
FX2_9   SET 7,(IY+CHFLAGS)
10847
        LD (IY+CHPERL),E
10848
        LD (IY+CHPERH),D
10849
        PUSH DE
10850
        EX DE,HL
10851
        CALL EFXCNV
10852
        LD (IY+CHFRQL),L
10853
        LD (IY+CHFRQH),H
10854
        POP DE
10855
        CALL NOTEFND
10856
        LD (IY+CHREAL),A
10857
        RET NC
10858
        LD (IY+CHNOTE),A
10859
        RES 7,(IY+CHFLAGS)
10860
        RET
10861
 
10862
FX3     OR A
10863
        JR Z,FX3_1
10864
        LD (IY+CHPORT),A
10865
FX3_1   LD A,(IY+CHWNT)
10866
        CP 96
10867
        RET NC
10868
        LD E,A
10869
        CALL GETPER
10870
        EX DE,HL
10871
        LD L,(IY+CHPERL)
10872
        LD H,(IY+CHPERH)
10873
        OR A
10874
        SBC HL,DE
10875
        JR Z,FX3_9
10876
        ADD HL,DE
10877
        LD C,(IY+CHPORT)
181 savelij 10878
        LD B,0x00
36 savelij 10879
        JR C,FX3_5
10880
        SBC HL,BC
10881
        JR C,FX3_9
10882
        SBC HL,DE
10883
        JR C,FX3_9
10884
FX3_2   ADD HL,DE
10885
        LD (IY+CHPERL),L
10886
        LD (IY+CHPERH),H
10887
        BIT 2,(IY+CHFLAGS)
10888
        CALL Z,EFXCNV
10889
        BIT 2,(IY+CHFLAGS)
10890
        JR Z,FX3_3
10891
        EX DE,HL
10892
        CALL NOTEFND
10893
        LD E,A
10894
        CALL GETFRQ
10895
FX3_3   LD (IY+CHFRQL),L
10896
        LD (IY+CHFRQH),H
10897
        RET
10898
 
10899
FX3_5   ADD HL,BC
10900
        JR C,FX3_9
10901
        SBC HL,DE
10902
        JR C,FX3_2
10903
FX3_9   LD E,(IY+CHWNT)
10904
        LD (IY+CHNOTE),E
10905
        LD (IY+CHREAL),E
10906
        CALL GETPER
10907
        LD (IY+CHPERL),L
10908
        LD (IY+CHPERH),H
10909
        CALL GETFRQ
10910
        LD (IY+CHFRQL),L
10911
        LD (IY+CHFRQH),H
10912
        RES 7,(IY+CHFLAGS)
181 savelij 10913
        LD (IY+CHCOM),0x00
10914
        LD (IY+CHPARM),0x00
10915
        LD (IY+CHWNT),0x7F
36 savelij 10916
        RET
10917
 
10918
FX3_    RET
10919
 
10920
FX4     PUSH DE
10921
        PUSH BC
10922
        OR A
10923
        JR Z,FX4_3
10924
        LD L,A
10925
        LD H,(IY+CHVIBCM)
181 savelij 10926
        AND 0x0F
36 savelij 10927
        JR Z,FX4_1
10928
        XOR H
181 savelij 10929
        AND 0x0F
36 savelij 10930
        XOR H
10931
        LD H,A
10932
FX4_1   LD A,L
181 savelij 10933
        AND 0xF0
36 savelij 10934
        JR Z,FX4_2
10935
        XOR H
181 savelij 10936
        AND 0xF0
36 savelij 10937
        XOR H
10938
        LD H,A
10939
FX4_2   LD (IY+CHVIBCM),H
10940
FX4_3   LD D,(IY+CHVIBPS)
10941
        LD A,D
181 savelij 10942
        AND 0x03
36 savelij 10943
        JR Z,FX4_5
181 savelij 10944
        CP 0x03
36 savelij 10945
        JR NZ,FX4_A
10946
        LD A,R
181 savelij 10947
        AND 0x03
36 savelij 10948
        JR Z,FX4_5
181 savelij 10949
        CP 0x03
36 savelij 10950
        JR Z,FX4_5
10951
FX4_A   DEC A
10952
        JR Z,FX4_4
181 savelij 10953
        LD E,0xFF
36 savelij 10954
        JP FX4_6
10955
 
10956
FX4_4   LD A,D
181 savelij 10957
        AND 0x7C
36 savelij 10958
        RLCA
10959
        LD E,A
10960
        BIT 7,D
10961
        JR NZ,FX4_6
181 savelij 10962
        LD A,0xF8
36 savelij 10963
        SUB E
10964
        LD E,A
10965
        JP FX4_6
10966
 
10967
FX4_5   LD A,D
10968
        RRCA
10969
        RRCA
181 savelij 10970
        AND 0x1F
36 savelij 10971
        LD HL,VIBTB
10972
        ADD A,L
10973
        LD L,A
10974
        LD E,(HL)
10975
FX4_6   LD A,(IY+CHVIBCM)
181 savelij 10976
        AND 0x0F
36 savelij 10977
        JR Z,FX4_9
10978
        LD B,A
181 savelij 10979
        LD HL,0x0000
36 savelij 10980
        LD D,H
10981
FX4_7   ADD HL,DE
10982
        DJNZ FX4_7
181 savelij 10983
        LD B,0x07
36 savelij 10984
        LD A,L
10985
FX4_8   SRL H
10986
        RRA
10987
        DJNZ FX4_8
10988
        ADC A,D
10989
        LD L,A
181 savelij 10990
        LD H,0x00
36 savelij 10991
        BIT 7,(IY+CHVIBPS)
10992
        JR Z,FX4_9
10993
        DEC H
10994
        CPL
10995
        LD L,A
10996
        INC HL
10997
FX4_9   LD E,(IY+CHPERL)
10998
        LD D,(IY+CHPERH)
10999
        ADD HL,DE
11000
        CALL EFXNOP2
11001
        LD A,(IY+CHVIBCM)
181 savelij 11002
        AND 0xF0
36 savelij 11003
        RRCA
11004
        RRCA
11005
        ADD A,(IY+CHVIBPS)
11006
        LD (IY+CHVIBPS),A
11007
        POP BC
11008
        POP DE
11009
        RET
11010
 
11011
FX5     CALL FXA
11012
        JP FX3_1
11013
 
11014
FX6     CALL FXA
11015
        PUSH DE
11016
        PUSH BC
11017
        JP FX4_3
11018
 
11019
FX7     PUSH DE
11020
        PUSH BC
11021
        OR A
11022
        JR Z,FX7_3
11023
        LD L,A
11024
        LD H,(IY+CHTRMCM)
181 savelij 11025
        AND 0x0F
36 savelij 11026
        JR Z,FX7_1
11027
        XOR H
181 savelij 11028
        AND 0x0F
36 savelij 11029
        XOR H
11030
        LD H,A
11031
FX7_1   LD A,L
181 savelij 11032
        AND 0xF0
36 savelij 11033
        JR Z,FX7_2
11034
        XOR H
181 savelij 11035
        AND 0xF0
36 savelij 11036
        XOR H
11037
        LD H,A
11038
FX7_2   LD (IY+CHTRMCM),H
11039
FX7_3   LD D,(IY+CHTRMPS)
11040
        LD A,D
181 savelij 11041
        AND 0x03
36 savelij 11042
        JR Z,FX7_5
181 savelij 11043
        CP 0x03
36 savelij 11044
        JR NZ,FX7_A
11045
        LD A,R
181 savelij 11046
        AND 0x03
36 savelij 11047
        JR Z,FX7_5
181 savelij 11048
        CP 0x03
36 savelij 11049
        JR Z,FX7_5
11050
FX7_A   DEC A
11051
        JR Z,FX7_4
181 savelij 11052
        LD E,0xFF
36 savelij 11053
        JP FX7_6
11054
 
11055
FX7_4   LD A,D
181 savelij 11056
        AND 0x7C
36 savelij 11057
        RLCA
11058
        LD E,A
11059
        BIT 7,D
11060
        JR NZ,FX7_6
181 savelij 11061
        LD A,0xF8
36 savelij 11062
        SUB E
11063
        LD E,A
11064
        JP FX7_6
11065
 
11066
FX7_5   LD A,D
11067
        RRCA
11068
        RRCA
181 savelij 11069
        AND 0x1F
36 savelij 11070
        LD HL,VIBTB
11071
        ADD A,L
11072
        LD L,A
11073
        LD E,(HL)
11074
FX7_6   LD A,(IY+CHTRMCM)
181 savelij 11075
        AND 0x0F
36 savelij 11076
        JR Z,FX7_9
11077
        LD B,A
181 savelij 11078
        LD HL,0x0000
36 savelij 11079
        LD D,H
11080
FX7_7   ADD HL,DE
11081
        DJNZ FX7_7
181 savelij 11082
        LD B,0x06
36 savelij 11083
        LD A,L
11084
FX7_8   SRL H
11085
        RRA
11086
        DJNZ FX7_8
11087
        ADC A,D
11088
        BIT 7,(IY+CHTRMPS)
11089
        JR Z,FX7_9
11090
        LD L,A
11091
        LD A,(IY+CHVOL)
11092
        SUB L
11093
        JR NC,FX7_B
11094
        XOR A
11095
        JP FX7_B
11096
 
11097
FX7_9   ADD A,(IY+CHVOL)
181 savelij 11098
        CP 0x40
36 savelij 11099
        JR C,FX7_B
181 savelij 11100
        LD A,0x40
36 savelij 11101
FX7_B   CP (IY+CHMVOL)
11102
        LD (IY+CHMVOL),A
11103
        JR Z,FX7_C
11104
        SET 0,(IY+CHSTAT)
11105
FX7_C   LD A,(IY+CHTRMCM)
181 savelij 11106
        AND 0xF0
36 savelij 11107
        RRCA
11108
        RRCA
11109
        ADD A,(IY+CHTRMPS)
11110
        LD (IY+CHTRMPS),A
11111
        POP BC
11112
        POP DE
11113
        RET
11114
 
11115
FX9     OR A
11116
        RET
11117
 
11118
        JR Z,FX9_1
11119
        LD (IY+CHOFFST),A
11120
FX9_1   LD H,(IY+CHOFFST)
181 savelij 11121
        LD L,0x00
36 savelij 11122
FXA     OR A
11123
        RET Z
11124
        LD L,A
11125
        LD A,(IY+CHVOL)
11126
        LD H,A
11127
        LD A,L
181 savelij 11128
        AND 0xF0
36 savelij 11129
        JR Z,FXA_1
11130
        RRCA
11131
        RRCA
11132
        RRCA
11133
        RRCA
11134
        ADD A,H
181 savelij 11135
        CP 0x40
36 savelij 11136
        JR C,FXA_2
181 savelij 11137
        LD A,0x40
36 savelij 11138
        JP FXA_2
11139
 
11140
FXA_1   LD A,H
11141
        SUB L
11142
        JR NC,FXA_2
181 savelij 11143
        LD A,0x00
36 savelij 11144
        LD (IY+CHCOM),A
11145
        LD (IY+CHPARM),A
11146
FXA_2   LD (IY+CHVOL),A
11147
        CP (IY+CHMVOL)
11148
        LD (IY+CHMVOL),A
11149
        RET Z
11150
        SET 0,(IY+CHSTAT)
11151
        RET
11152
 
11153
FXB     DEC A
11154
        LD (MTSNGPS),A
11155
        ;CALL CP_END_MOD
11156
        XOR A
11157
        LD (MTBRKPS),A
11158
        INC A
11159
        LD (MTJMPFL),A
11160
        RET
11161
 
181 savelij 11162
FXC     CP 0x40
36 savelij 11163
        JR C,FXC_1
181 savelij 11164
        LD A,0x40
36 savelij 11165
FXC_1   LD (IY+CHVOL),A
11166
        CP (IY+CHMVOL)
11167
        LD (IY+CHMVOL),A
11168
        RET Z
11169
        SET 0,(IY+CHSTAT)
11170
        RET
11171
 
11172
FXD     LD L,A
181 savelij 11173
        AND 0xF0
36 savelij 11174
        RRCA
11175
        LD H,A
11176
        RRCA
11177
        RRCA
11178
        ADD A,H
11179
        LD H,A
11180
        LD A,L
181 savelij 11181
        AND 0x0F
36 savelij 11182
        ADD A,H
181 savelij 11183
        CP 0x40
36 savelij 11184
        JR C,FXD_1
11185
        XOR A
11186
FXD_1   LD (MTBRKPS),A
181 savelij 11187
        LD A,0x01
36 savelij 11188
        LD (MTJMPFL),A
11189
        RET
11190
 
11191
FXF     OR A
11192
        JR Z,FXF_5
181 savelij 11193
        CP 0x20
36 savelij 11194
        JR NC,FXF_1
11195
FXF_0   LD (MTSPEED),A
11196
        RET
11197
 
11198
FXF_1   LD (MTBPM),A
181 savelij 11199
        SUB 0x20
36 savelij 11200
        LD HL,BPMTAB
11201
        ADD A,A
11202
        JR NC,FXF_3
11203
        INC H
11204
FXF_3   ADD A,L
11205
        LD L,A
11206
        JR NC,FXF_4
11207
        INC H
11208
FXF_4   LD A,(HL)
11209
        INC HL
11210
        LD H,(HL)
11211
        LD L,A
11212
        LD (TICKLEN),HL
11213
        LD (TCKLEFT),HL
11214
        RET
11215
 
11216
FXF_5  
11217
;LD HL,MTSTAT
11218
;---patched
11219
        JP Patch2x
11220
;---
11221
        SET 7,(HL)
11222
        RET
11223
 
181 savelij 11224
FXE0    AND 0x01
36 savelij 11225
        LD (MTFILTR),A
11226
        RET
11227
 
11228
FXE3    RES 2,(IY+CHFLAGS)
11229
        OR A
11230
        RET Z
11231
        SET 2,(IY+CHFLAGS)
11232
        RET
11233
 
11234
FXE4    RES 1,(IY+CHFLAGS)
11235
        BIT 2,A
11236
        JR Z,FXE4_2
11237
        SET 1,(IY+CHFLAGS)
181 savelij 11238
FXE4_2  AND 0x03
36 savelij 11239
        LD L,A
11240
        LD A,(IY+CHVIBPS)
181 savelij 11241
        AND 0xFC
36 savelij 11242
        OR L
11243
        LD (IY+CHVIBPS),A
11244
        RET
11245
 
11246
FXE5    ADD A,A
11247
        LD (IY+CHFINE),A
11248
        RET
11249
 
11250
FXE6    OR A
11251
        JR Z,FXE6_3
11252
        INC (IY+CHLPCNT)
11253
        DEC (IY+CHLPCNT)
11254
        JR Z,FXE6_2
11255
        DEC (IY+CHLPCNT)
11256
        RET Z
11257
FXE6_1  LD A,(IY+CHPATPS)
11258
        LD (MTBRKPS),A
181 savelij 11259
        LD A,0x01
36 savelij 11260
        LD (MTBRKFL),A
11261
        RET
11262
 
11263
FXE6_2  LD (IY+CHLPCNT),A
11264
        JP FXE6_1
11265
 
11266
FXE6_3  LD A,(MTPATPS)
11267
        LD (IY+CHPATPS),A
11268
        RET
11269
 
11270
FXE7    RES 0,(IY+CHFLAGS)
11271
        BIT 2,A
11272
        JR Z,FXE7_2
11273
        SET 0,(IY+CHFLAGS)
181 savelij 11274
FXE7_2  AND 0x03
36 savelij 11275
        LD L,A
11276
        LD A,(IY+CHTRMPS)
181 savelij 11277
        AND 0xFC
36 savelij 11278
        OR L
11279
        LD (IY+CHTRMPS),A
11280
        RET
11281
 
11282
FXE9    OR A
11283
        RET Z
11284
        LD L,A
11285
        LD A,(MTCOUNT)
11286
FXE9_1  SUB L
11287
        JR NC,FXE9_1
11288
        ADD A,L
11289
        RET NZ
11290
        CALL GETSMP
11291
        RET
11292
 
11293
FXEA    RLCA
11294
        RLCA
11295
        RLCA
11296
        RLCA
11297
        JP FXA
11298
 
11299
FXEC    LD HL,MTCOUNT
11300
        CP (HL)
11301
        RET NZ
11302
        XOR A
11303
        LD (IY+CHVOL),A
11304
        CP (IY+CHMVOL)
11305
        LD (IY+CHMVOL),A
11306
        RET Z
11307
        SET 0,(IY+CHSTAT)
11308
        RET
11309
 
11310
FXED    LD HL,MTCOUNT
11311
        CP (HL)
11312
        RET NZ
11313
        CALL GETSMP
11314
        RET
11315
 
11316
FXEE    LD HL,MTPDT2
11317
        INC (HL)
11318
        DEC (HL)
11319
        RET NZ
11320
        INC A
11321
        LD (MTPDT),A
11322
        RET
11323
 
11324
;INCLUDE "VOL_H.a80"
11325
 
11326
;VOLUME CALCULATION FOR MODULES AND FX
11327
 
11328
CALCVOL RES 0,(IY+CHSTAT)
181 savelij 11329
        LD DE,0xFC00
36 savelij 11330
        LD A,(IY+CHMVOL)
181 savelij 11331
        AND 0x7F
36 savelij 11332
        JP Z,CALCV_Z
181 savelij 11333
        CP 0x40
36 savelij 11334
        CALL C,MUL64
11335
        LD A,(IY+CHEVOL)
11336
        OR A
11337
        JP Z,CALCV_Z
181 savelij 11338
        CP 0x40
36 savelij 11339
        CALL C,MUL64
11340
        LD A,(IY+CHFADVH)
11341
        SRL A
11342
        SRL A
181 savelij 11343
        ADC A,0x00
36 savelij 11344
        JP Z,CALCV_Z
181 savelij 11345
        CP 0x40
36 savelij 11346
        CALL C,MUL64
11347
        BIT 6,(IY+CHSTAT)
11348
        JP Z,CALCV_N
11349
        LD A,(FXVOL)
11350
        OR A
11351
        JP Z,CALCV_Z
181 savelij 11352
        CP 0x40
36 savelij 11353
        CALL C,MUL64
11354
        LD A,(FXMVOL)
11355
        OR A
11356
        JP Z,CALCV_Z
181 savelij 11357
        CP 0x40
36 savelij 11358
        CALL C,MUL64
11359
        JP CALCV_X
11360
 
11361
CALCV_N LD A,(MTVOL)
11362
        OR A
11363
        JP Z,CALCV_Z
181 savelij 11364
        CP 0x40
36 savelij 11365
        CALL C,MUL64
11366
        LD A,(MODVOL)
11367
        OR A
11368
        JP Z,CALCV_Z
181 savelij 11369
        CP 0x40
36 savelij 11370
        CALL C,MUL64
11371
CALCV_X LD C,(IY+CHPAN)
11372
        LD A,(IY+CHEPAN)
181 savelij 11373
        SUB 0x20
36 savelij 11374
        JR Z,CALCV_V
11375
        JR NC,CALCV_I
11376
        NEG
181 savelij 11377
CALCV_I CP 0x20
36 savelij 11378
        JR C,CALCV_U
11379
        LD H,(IY+CHPAN)
11380
        LD A,H
11381
        OR A
11382
        JP P,CALCV_Q
11383
        NEG
11384
        LD H,A
11385
        JP CALCV_Q
11386
 
11387
CALCV_U RLCA
11388
        RLCA
11389
        RLCA
11390
        LD L,A
11391
        LD A,(IY+CHPAN)
11392
        OR A
11393
        JP P,CALCV_T
11394
        NEG
11395
CALCV_T LD B,A
11396
        XOR A
11397
        JP CALCV_M
11398
 
11399
CALCV_R ADD A,B
11400
CALCV_E SRL B
11401
CALCV_M SLA L
11402
        JR C,CALCV_R
11403
        JR NZ,CALCV_E
11404
        SRL A
11405
        LD H,A
11406
CALCV_Q LD A,(IY+CHEPAN)
181 savelij 11407
        CP 0x20
36 savelij 11408
        JR C,CALCV_P
11409
        LD A,C
11410
        ADD A,H
11411
        LD C,A
11412
        JR NC,CALCV_V
181 savelij 11413
        LD C,0xFF
36 savelij 11414
        JP CALCV_W
11415
CALCV_P LD A,C
11416
        SUB H
181 savelij 11417
        LD C,0x00
36 savelij 11418
        JR C,CALCV_O
11419
        LD C,A
11420
CALCV_V LD A,C
181 savelij 11421
        CP 0x80
36 savelij 11422
        JR Z,CALCV_Y
11423
        OR A
11424
        JP M,CALCV_W
11425
CALCV_O BIT 5,(IY+CHSTAT)
11426
        JR Z,CALCV_Y
11427
        SRL A
11428
        CALL MUL64
11429
        JP CALCV_Y
11430
 
11431
CALCV_W BIT 5,(IY+CHSTAT)
11432
        JR NZ,CALCV_Y
11433
        NEG
11434
        SRL A
11435
        CALL MUL64
11436
CALCV_Y LD A,D
11437
        SRL A
11438
        SRL A
181 savelij 11439
        ADC A,0x00
36 savelij 11440
CALCV_Z LD C,A
11441
        LD HL,VOLRQTB
11442
        LD A,L
11443
        ADD A,(IY+CHRDN)
11444
        LD L,A
11445
        LD (HL),C
11446
        RET
11447
 
11448
MUL64   LD B,A
181 savelij 11449
        LD HL,0x0000
11450
        AND 0x0F
36 savelij 11451
        JR Z,MUL64_F
11452
        SLA B
11453
        SLA B
11454
        JP MUL64_E
11455
 
11456
MUL64_A ADD HL,DE
11457
MUL64_E SRL D
11458
        RR E
11459
        SLA B
11460
        JP C,MUL64_A
11461
        JP NZ,MUL64_E
11462
        EX DE,HL
11463
        RET
11464
 
11465
MUL64_F LD A,B
11466
        OR A
11467
        JR Z,MUL64_S
11468
        SRL D
11469
        RR E
181 savelij 11470
        CP 0x20
36 savelij 11471
        RET Z
11472
        LD L,E
11473
        LD H,D
11474
        SRL D
11475
        RR E
181 savelij 11476
        CP 0x10
36 savelij 11477
        RET Z
11478
        ADD HL,DE
11479
MUL64_S EX DE,HL
11480
        RET
11481
 
11482
;INCLUDE "TEST_H.a80"
11483
 
11484
TCOM    IN A,(ZXSTAT)
11485
        RRCA
11486
        JR NC,TCOM
11487
TCOM_   IN A,(ZXCMD)
181 savelij 11488
        CP 0x20
36 savelij 11489
        JP NC,COMINT2
181 savelij 11490
        CP 0x01
36 savelij 11491
        JR Z,TCOM
11492
        OUT (CLRCBIT),A
11493
        LD HL,TCOMTB
11494
        ADD A,A
11495
        ADD A,L
11496
        LD L,A
11497
        LD A,(HL)
11498
        INC L
11499
        LD H,(HL)
11500
        LD L,A
11501
        JP (HL)
11502
 
11503
TCOM2   LD HL,DAC0
181 savelij 11504
        LD A,0x3F
36 savelij 11505
        OUT (VOL1),A
11506
TCOMDAC LD (HL),0
11507
        LD A,(HL)
11508
        LD IY,TCONT1
11509
        JP TWAIT
11510
 
181 savelij 11511
TCONT1  LD (HL),0xFF
36 savelij 11512
        LD A,(HL)
11513
        LD IY,TCOMDAC
11514
        JP TWAIT
11515
 
11516
TCOM3   LD HL,DAC1
181 savelij 11517
        LD A,0x3F
36 savelij 11518
        OUT (VOL2),A
11519
        JR TCOMDAC
11520
 
11521
TCOM4   LD HL,DAC2
181 savelij 11522
        LD A,0x3F
36 savelij 11523
        OUT (VOL3),A
11524
        JR TCOMDAC
11525
 
11526
TCOM5   LD HL,DAC3
181 savelij 11527
        LD A,0x3F
36 savelij 11528
        OUT (VOL4),A
11529
        JR TCOMDAC
11530
 
11531
TCOM6   XOR A
11532
        OUT (ZXDATWR),A
11533
        LD IY,TCONT2
11534
        JP TWAIT
11535
 
181 savelij 11536
TCONT2  LD A,0xFF
36 savelij 11537
        OUT (ZXDATWR),A
11538
        LD IY,TCOM6
11539
        JP TWAIT
11540
 
11541
TCOM7   LD C,VOL1
11542
        LD HL,DAC0
181 savelij 11543
        LD (HL),0xFF
36 savelij 11544
        LD A,(HL)
181 savelij 11545
TCOMVOL LD A,0x00
36 savelij 11546
        OUT (C),A
11547
        LD IY,TCONT3
11548
        JP TWAIT
11549
 
181 savelij 11550
TCONT3  LD A,0xFF
36 savelij 11551
        OUT (C),A
11552
        LD IY,TCOMVOL
11553
        JP TWAIT
11554
 
11555
TCOM8   LD C,VOL2
11556
        LD HL,DAC1
181 savelij 11557
        LD (HL),0xFF
36 savelij 11558
        LD A,(HL)
11559
        JR TCOMVOL
11560
 
11561
TCOM9   LD C,VOL3
11562
        LD HL,DAC2
181 savelij 11563
        LD (HL),0xFF
36 savelij 11564
        LD A,(HL)
11565
        JR TCOMVOL
11566
 
11567
TCOMA   LD C,VOL4
11568
        LD HL,DAC3
181 savelij 11569
        LD (HL),0xFF
36 savelij 11570
        LD A,(HL)
11571
        JR TCOMVOL
11572
 
11573
TCOMB   LD HL,DAC0
11574
        LD C,VOL1
181 savelij 11575
TCOMTST LD B,0x3F
36 savelij 11576
TCOMT4  OUT (C),B
11577
        LD D,114
181 savelij 11578
TCOMT5  LD (HL),0x00
36 savelij 11579
        LD A,(HL)
11580
        XOR A
11581
TCOMT6  DEC A
11582
        JR NZ,TCOMT6
181 savelij 11583
        LD (HL),0xFF
36 savelij 11584
        LD A,(HL)
11585
        XOR A
11586
TCOMT7  DEC A
11587
        JR NZ,TCOMT7
11588
        DEC D
11589
        JR NZ,TCOMT5
11590
        DEC B
11591
        JP P,TCOMT4
11592
        IN A,(ZXSTAT)
11593
        RRCA
11594
        JR NC,TCOMTST
11595
        JP TCOM_
11596
 
11597
TCOMC   LD HL,DAC1
11598
        LD C,VOL2
11599
        JP TCOMTST
11600
 
11601
TCOMD   LD HL,DAC2
11602
        LD C,VOL3
11603
        JP TCOMTST
11604
 
11605
TCOME   LD HL,DAC3
11606
        LD C,VOL4
11607
        JP TCOMTST
11608
 
181 savelij 11609
TCOMF   LD A,0x3F
36 savelij 11610
        OUT (VOL1),A
11611
        OUT (VOL2),A
11612
        OUT (VOL3),A
11613
        OUT (VOL4),A
181 savelij 11614
        LD B,0x00
36 savelij 11615
        LD L,B
69 savelij 11616
TCONT8  LD H,HIGH (DAC0)
36 savelij 11617
        LD (HL),B
11618
        LD A,(HL)
11619
        INC H
11620
        LD (HL),B
11621
        LD A,(HL)
11622
        INC H
11623
        LD (HL),B
11624
        LD A,(HL)
11625
        INC H
11626
        LD (HL),B
11627
        LD A,(HL)
11628
        DJNZ TCONT8
11629
        IN A,(ZXSTAT)
11630
        RRCA
11631
        JP NC,TCONT8
11632
        JP TCOM_
11633
 
11634
TCOM10  IN A,(ZXDATRD)
11635
        OUT (ZXDATWR),A
11636
        JP TCOM_
11637
 
11638
TCOM11  IN A,(ZXDATRD)
11639
        JP TCOM_
11640
 
11641
TCOM12  LD HL,DAC0
181 savelij 11642
TCONT9  LD A,0x3F
36 savelij 11643
        OUT (VOL1),A
11644
        OUT (VOL2),A
11645
        OUT (VOL3),A
11646
        OUT (VOL4),A
11647
TCONTA  IN A,(ZXDATRD)
11648
        LD (HL),A
11649
        LD A,(HL)
11650
TCONTB  DJNZ TCONTB
181 savelij 11651
        LD (HL),0x00
36 savelij 11652
        LD A,(HL)
11653
TCONTC  DJNZ TCONTC
11654
        IN A,(ZXSTAT)
11655
        RRCA
11656
        JP C,TCOM_
11657
        JP TCONTA
11658
 
11659
TCOM13  LD HL,DAC1
11660
        JR TCONT9
11661
 
11662
TCOM14  LD HL,DAC2
11663
        JR TCONT9
11664
 
11665
TCOM15  LD HL,DAC3
11666
        JR TCONT9
11667
 
181 savelij 11668
TWAIT   LD B,0x04
36 savelij 11669
TWAIT1  LD DE,38686
11670
TWAIT2  IN A,(ZXSTAT)
11671
        RRCA
11672
        JP C,TCOM_
11673
        DEC DE
11674
        LD A,D
11675
        OR E
11676
        JR NZ,TWAIT2
11677
        DJNZ TWAIT2
11678
        JP (IY)
11679
 
11680
;INCLUDE "TABLES_H.a80"
11681
 
11682
        align 256
11683
 
181 savelij 11684
VIBTB   db 0x00,0x18,0x31,0x4A,0x61,0x78,0x8D,0xA1
11685
        db 0xB4,0xC5,0xD4,0xE0,0xEB,0xF4,0xFA,0xFD
11686
        db 0xFF,0xFD,0xFA,0xF4,0xEB,0xE0,0xD4,0xC5
11687
        db 0xB4,0xA1,0x8D,0x78,0x61,0x4A,0x31,0x18
36 savelij 11688
 
181 savelij 11689
COMTABH DB LOW (COM20),LOW (COM21),LOW (COM22),LOW (COM23),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0x20
11690
        DB LOW (COMHZ),LOW (COMHZ),LOW (COM2A),LOW (COM2B),LOW (COM2C),LOW (COM2D),LOW (COM2E),LOW (COM2F)  ;0x28
11691
        DB LOW (COM30),LOW (COM31),LOW (COM32),LOW (COM33),LOW (COM34),LOW (COM35),LOW (COM36),LOW (COM37)  ;0x30
11692
        DB LOW (COM38),LOW (COM39),LOW (COM3A),LOW (COM3B),LOW (COM3C),LOW (COM3D),LOW (COM3E),LOW (COM3F)  ;0x38
11693
        DB LOW (COM40),LOW (COM41),LOW (COM42),LOW (COMHZ),LOW (COMHZ),LOW (COM45),LOW (COM46),LOW (COM47)  ;0x40
11694
        DB LOW (COM48),LOW (COM49),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0x48
11695
        DB LOW (COM50),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0x50
11696
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0x58
11697
        DB LOW (COM60),LOW (COM61),LOW (COM62),LOW (COM63),LOW (COM64),LOW (COM65),LOW (COM66),LOW (COM67)  ;0x60
11698
        DB LOW (COM68),LOW (COM69),LOW (COM6A),LOW (COM6B),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0x68 patched
11699
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0x70
11700
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0x78
11701
        DB LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80)  ;0x80
11702
        DB LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80)  ;0x88
11703
        DB LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80)  ;0x90
11704
        DB LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80)  ;0x98
11705
        DB LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0)  ;0xA0
11706
        DB LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0)  ;0xA8
11707
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0xB0
11708
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0xB8
11709
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0xC0
11710
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0xC8
11711
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0xD0
11712
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0xD8
11713
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0xE0
11714
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0xE8
36 savelij 11715
 
181 savelij 11716
        DUPL 0x10,0
11717
        DUPL 0x20,0
36 savelij 11718
 
181 savelij 11719
        DB HIGH (COM20),HIGH (COM21),HIGH (COM22),HIGH (COM23),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0x20
11720
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COM2A),HIGH (COM2B),HIGH (COM2C),HIGH (COM2D),HIGH (COM2E),HIGH (COM2F)  ;0x28
11721
        DB HIGH (COM30),HIGH (COM31),HIGH (COM32),HIGH (COM33),HIGH (COM34),HIGH (COM35),HIGH (COM36),HIGH (COM37)  ;0x30
11722
        DB HIGH (COM38),HIGH (COM39),HIGH (COM3A),HIGH (COM3B),HIGH (COM3C),HIGH (COM3D),HIGH (COM3E),HIGH (COM3F)  ;0x38
11723
        DB HIGH (COM40),HIGH (COM41),HIGH (COM42),HIGH (COMHZ),HIGH (COMHZ),HIGH (COM45),HIGH (COM46),HIGH (COM47)  ;0x40
11724
        DB HIGH (COM48),HIGH (COM49),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0x48
11725
        DB HIGH (COM50),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0x50
11726
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0x58
11727
        DB HIGH (COM60),HIGH (COM61),HIGH (COM62),HIGH (COM63),HIGH (COM64),HIGH (COM65),HIGH (COM66),HIGH (COM67)  ;0x60
11728
        DB HIGH (COM68),HIGH (COM69),HIGH (COM6A),HIGH (COM6B),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0x68 patched
11729
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0x70
11730
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0x78
11731
        DB HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80)  ;0x80
11732
        DB HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80)  ;0x88
11733
        DB HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80)  ;0x90
11734
        DB HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80)  ;0x98
11735
        DB HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0)  ;0xA0
11736
        DB HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0)  ;0xA8
11737
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0xB0
11738
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0xB8
11739
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0xC0
11740
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0xC8
11741
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0xD0
11742
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0xD8
11743
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0xE0
11744
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0xE8
36 savelij 11745
 
181 savelij 11746
        DUPL 0x10,0
36 savelij 11747
 
11748
FXJP1   DW FXNOP,FXNOP,FXNOP,FXNOP,FXNOP,FXNOP,FXNOP,FXNOP
11749
        DW FXNOP,FXNOP,FXNOP,FXB  ,FXC  ,FXD  ,FXE  ,FXF
11750
 
11751
        DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11752
        DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11753
 
11754
FXJP2   DW FX0  ,FX1  ,FX2  ,FX3  ,FX4  ,FX5  ,FX6  ,FX7
11755
        DW FXRET,FXRET,FXA  ,FXRET,FXRET,FXRET,FXE_ ,FXRET
11756
 
11757
        DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11758
        DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11759
 
11760
FXEJP1  DW FXE0,FX1,FX2,FXE3,FXE4,FXE5,FXE6,FXE7
11761
        DW FXRET,FXE9,FXEA,FXA,FXEC,FXED,FXEE,FXRET
11762
 
11763
FXEJP2  DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11764
        DW FXRET,FXE9,FXRET,FXRET,FXEC,FXED,FXRET,FXRET
11765
 
11766
TCOMTB  DEFW TCOM,TCOM,TCOM2,TCOM3,TCOM4,TCOM5,TCOM6,TCOM7
11767
        DEFW TCOM8,TCOM9,TCOMA,TCOMB,TCOMC,TCOMD,TCOME,TCOMF
11768
        DEFW TCOM10,TCOM11,TCOM12,TCOM13,TCOM14,TCOM15,TCOM,TCOM
11769
        DEFW TCOM,TCOM,TCOM,TCOM,TCOM,TCOM,TCOM,TCOM
11770
 
11771
;INCLUDE "DIHO.a80"
11772
;RETURN: E - NOTE
11773
 
11774
NOTEID  LD HL,AMINOTE
11775
        CALL DIH
11776
        LD E,A
11777
        RET
11778
 
11779
;RETURN: E - NOTE
11780
 
11781
NOTEGET LD E,(IY+CHNOTE)
11782
        LD A,E
11783
        INC A
11784
        RET NZ
11785
NOTEFND LD HL,AMFRQTB
11786
        LD A,(IY+CHFINE)
11787
        RRA
181 savelij 11788
        AND 0x0F
36 savelij 11789
        JR Z,NOTEFN1
11790
        LD C,A
11791
        ADD A,A
11792
        ADD A,C
11793
        ADD A,A
11794
        ADD A,A
11795
        ADD A,A
11796
        LD B,0
11797
        RL B
11798
        ADD A,A
11799
        RL B
11800
        ADD A,A
11801
        RL B
11802
        LD C,A
11803
        ADD HL,BC
11804
NOTEFN1 LD E,(IY+CHPERL)
11805
        LD D,(IY+CHPERH)
11806
        CALL DIH
11807
        LD E,A
11808
        RET
11809
 
181 savelij 11810
DIH     LD BC,0x005F
36 savelij 11811
        PUSH HL
11812
        INC HL
11813
        LD A,(HL)
11814
        DEC HL
11815
        CP D
11816
        JR C,DIHRGR
11817
        JR NZ,DIH2
11818
        LD A,(HL)
11819
        CP E
11820
        JR C,DIHRGR
11821
        JR NZ,DIH2
11822
        POP HL
11823
        XOR A
11824
        SCF
11825
        RET
11826
 
11827
DIHRGR  LD E,(HL)
11828
        INC HL
11829
        LD D,(HL)
11830
        POP HL
11831
        XOR A
11832
        RET
11833
 
181 savelij 11834
DIH2    LD A,0xBF
36 savelij 11835
        ADD A,L
11836
        LD L,A
11837
        LD A,H
11838
        ADC A,B
11839
        LD H,A
11840
        LD A,(HL)
11841
        DEC HL
11842
        CP D
11843
        JR C,DIH3
11844
        JR NZ,DIHRLO
11845
        LD A,(HL)
11846
        CP E
11847
        JR C,DIH3
11848
        JR NZ,DIHRLO
11849
        POP HL
11850
        LD A,C
11851
        SCF
11852
        RET
11853
 
11854
DIHRLO  LD E,(HL)
11855
        INC HL
11856
        LD D,(HL)
11857
        POP HL
11858
        LD A,C
11859
        OR A
11860
        RET
11861
 
11862
DIH3    POP HL
11863
DIHLP   PUSH HL
11864
        LD A,B
11865
        ADD A,C
181 savelij 11866
        AND 0xFE
36 savelij 11867
        ADD A,L
11868
        LD L,A
11869
        LD A,H
181 savelij 11870
        ADC A,0x00
36 savelij 11871
        LD H,A
11872
        INC HL
11873
        LD A,(HL)
11874
        DEC HL
11875
        CP D
11876
        JR C,DIHGR
11877
        JR NZ,DIHLO
11878
        LD A,(HL)
11879
        CP E
11880
        JR C,DIHGR
11881
        JR NZ,DIHLO
11882
        POP HL
11883
        LD A,B
11884
        ADD A,C
11885
        SRL A
11886
        SCF
11887
        RET
11888
 
11889
DIHGR   LD A,B
11890
        ADD A,C
11891
        SRL A
11892
        LD C,A
11893
        POP HL
11894
        JP DIHLP
11895
 
11896
DIHLO   LD A,B
11897
        ADD A,C
11898
        SRL A
11899
        CP B
11900
        LD B,A
11901
        JR Z,DIHMID
11902
        POP HL
11903
        JP DIHLP
11904
 
11905
DIHMID  PUSH HL
11906
        PUSH BC
11907
        LD A,(HL)
11908
        INC HL
11909
        SUB E
11910
        LD C,A
11911
        LD A,(HL)
11912
        INC HL
11913
        SBC A,D
11914
        LD B,A
11915
        LD A,(HL)
11916
        INC HL
11917
        LD H,(HL)
11918
        LD L,A
11919
        EX DE,HL
11920
        OR A
11921
        SBC HL,DE
11922
        LD A,H
11923
        CP B
11924
        JR C,DIHFLO
11925
        JR NZ,DIHFGR
11926
        LD A,L
11927
        CP C
11928
        JR C,DIHFLO
11929
        JR NZ,DIHFGR
11930
DIHFLO  POP BC
11931
        POP HL
11932
        POP HL
11933
        LD A,C
11934
        OR A
11935
        RET
11936
 
11937
DIHFGR  POP BC
11938
        POP HL
11939
        LD E,(HL)
11940
        INC HL
11941
        LD D,(HL)
11942
        POP HL
11943
        LD A,B
11944
        RET
11945
 
181 savelij 11946
AMINOTE dw 0x1AC0,0x1940,0x17D0,0x1680,0x1530,0x1400,0x12E0,0x11D0,0x10D0,0x0FE0,0x0F00,0x0E28;C-0
11947
        dw 0x0D60,0x0CA0,0x0BE8,0x0B40,0x0A98,0x0A00,0x0970,0x08E8,0x0868,0x07F0,0x0780,0x0714;C-1
11948
        dw 0x06B0,0x0650,0x05F4,0x05A0,0x054C,0x0500,0x04B8,0x0474,0x0434,0x03F8,0x03C0,0x038A;C-2
11949
        dw 0x0358,0x0328,0x02FA,0x02D0,0x02A6,0x0280,0x025C,0x023A,0x021A,0x01FC,0x01E0,0x01C5;C-3
11950
        dw 0x01AC,0x0194,0x017D,0x0168,0x0153,0x0140,0x012E,0x011D,0x010D,0x00FE,0x00F0,0x00E2;C-4
11951
        dw 0x00D6,0x00CA,0x00BE,0x00B4,0x00AA,0x00A0,0x0097,0x008F,0x0087,0x007F,0x0078,0x0071;C-5
11952
        dw 0x006B,0x0065,0x005F,0x005A,0x0055,0x0050,0x004B,0x0047,0x0043,0x003F,0x003C,0x0038;C-6
11953
        dw 0x0035,0x0032,0x002F,0x002D,0x002A,0x0028,0x0025,0x0023,0x0021,0x001F,0x001E,0x001C;C-7
36 savelij 11954
___END
11955
 
181 savelij 11956
                DUPL GSRomBaseH+0x2000-$,0xFF
11957
                PHASE GSRomBaseH+0x2000
36 savelij 11958
 
11959
;INCLUDE "_GSFRQTB.a80" ;patched
11960
GSFRQTB
11961
;00
181 savelij 11962
        dw 0x4854,0x4446,0x4071,0x3CD1,0x3968,0x362F,0x3324,0x3045,0x2D91,0x2B02,0x2897,0x2652
11963
        dw 0x242A,0x2223,0x2037,0x1E68,0x1CB5,0x1B17,0x1992,0x1822,0x16C8,0x1581,0x144D,0x1329
11964
        dw 0x1215,0x1111,0x101B,0x0F35,0x0E5A,0x0D8D,0x0CCA,0x0C12,0x0B62,0x0AC0,0x0A26,0x0994
11965
        dw 0x090A,0x0888,0x080F,0x079A,0x072C,0x06C5,0x0663,0x0607,0x05B1,0x0560,0x0511,0x04C8
11966
        dw 0x0485,0x0444,0x0406,0x03CD,0x0397,0x0363,0x0333,0x0305,0x02DA,0x02AE,0x0288,0x0265
11967
        dw 0x0242,0x0222,0x0204,0x01E6,0x01CB,0x01B0,0x0198,0x0182,0x016D,0x0157,0x0144,0x0131
11968
        dw 0x0121,0x0111,0x0100,0x00F3,0x00E5,0x00D8,0x00CD,0x00BF,0x00B5,0x00AD,0x00A2,0x009A
11969
        dw 0x0092,0x0087,0x0081,0x0079,0x0071,0x006C,0x0066,0x0061,0x005B,0x0056,0x0051,0x004B
36 savelij 11970
;01
181 savelij 11971
        dw 0x47D0,0x43C7,0x3FFA,0x3C62,0x38FE,0x35CB,0x32C6,0x2FEE,0x2D3D,0x2AB4,0x284E,0x260B
11972
        dw 0x23E6,0x21E5,0x1FFB,0x1E32,0x1C7F,0x1AE7,0x1964,0x17F7,0x169D,0x1558,0x1427,0x1305
11973
        dw 0x11F4,0x10F1,0x0FFD,0x0F18,0x0E3F,0x0D72,0x0CB2,0x0BFA,0x0B4F,0x0AAD,0x0A13,0x0981
11974
        dw 0x08FA,0x0878,0x07FE,0x078D,0x0721,0x06BA,0x0659,0x05FD,0x05A6,0x0555,0x0509,0x04C0
11975
        dw 0x047D,0x043C,0x0400,0x03C5,0x038F,0x035B,0x032B,0x02FF,0x02D4,0x02AC,0x0283,0x0260
11976
        dw 0x023D,0x021F,0x01FF,0x01E4,0x01C8,0x01AD,0x0195,0x017F,0x016A,0x0154,0x0141,0x0131
11977
        dw 0x011E,0x010E,0x0100,0x00F0,0x00E3,0x00D8,0x00CA,0x00BF,0x00B5,0x00AA,0x00A2,0x0097
11978
        dw 0x008F,0x0087,0x007F,0x0079,0x0071,0x006C,0x0066,0x005E,0x0059,0x0056,0x0051,0x004B
36 savelij 11979
;02
181 savelij 11980
        dw 0x474C,0x434B,0x3F83,0x3BF3,0x3895,0x356A,0x326A,0x2F95,0x2CE9,0x2A63,0x2802,0x25C5
11981
        dw 0x23A6,0x21A4,0x1FC2,0x1DF9,0x1C4C,0x1AB3,0x1933,0x17C9,0x1674,0x1532,0x1401,0x12E2
11982
        dw 0x11D1,0x10D3,0x0FE0,0x0EFC,0x0E24,0x0D59,0x0C99,0x0BE4,0x0B3A,0x0A98,0x0A00,0x0971
11983
        dw 0x08EA,0x0868,0x07F1,0x077D,0x0713,0x06AC,0x064E,0x05F2,0x059E,0x054D,0x0501,0x04B8
11984
        dw 0x0475,0x0434,0x03F8,0x03BF,0x0389,0x0356,0x0325,0x02FA,0x02CF,0x02A6,0x0280,0x025A
11985
        dw 0x023A,0x021A,0x01FC,0x01DE,0x01C3,0x01AB,0x0192,0x017D,0x0167,0x0152,0x013F,0x012E
11986
        dw 0x011B,0x010E,0x00FE,0x00F0,0x00E3,0x00D5,0x00CA,0x00BD,0x00B2,0x00AA,0x009F,0x0097
11987
        dw 0x008F,0x0087,0x007F,0x0076,0x0071,0x006C,0x0064,0x005E,0x0059,0x0053,0x0051,0x004B
36 savelij 11988
;03
181 savelij 11989
        dw 0x46C7,0x42CE,0x3F0E,0x3B85,0x382E,0x3506,0x320E,0x2F3E,0x2C98,0x2A17,0x27B9,0x257F
11990
        dw 0x2365,0x2168,0x1F87,0x1DC3,0x1C15,0x1A83,0x1905,0x179E,0x164C,0x150A,0x13DB,0x12BF
11991
        dw 0x11B1,0x10B3,0x0FC5,0x0EE1,0x0E0C,0x0D41,0x0C84,0x0BCF,0x0B24,0x0A85,0x09ED,0x095E
11992
        dw 0x08D9,0x085A,0x07E1,0x076F,0x0706,0x06A2,0x0640,0x05E7,0x0593,0x0542,0x04F6,0x04B0
11993
        dw 0x046C,0x042C,0x03F0,0x03B7,0x0381,0x0351,0x0320,0x02F5,0x02C9,0x02A1,0x027B,0x0258
11994
        dw 0x0235,0x0217,0x01F9,0x01DB,0x01C0,0x01A8,0x0190,0x017A,0x0164,0x0152,0x013F,0x012C
11995
        dw 0x011B,0x010B,0x00FB,0x00ED,0x00E0,0x00D2,0x00C8,0x00BD,0x00B2,0x00A7,0x009F,0x0094
11996
        dw 0x008C,0x0084,0x007F,0x0076,0x0071,0x0069,0x0064,0x005E,0x0059,0x0053,0x004E,0x004B
36 savelij 11997
;04
181 savelij 11998
        dw 0x4645,0x4255,0x3E9A,0x3B18,0x37C7,0x34A4,0x31AF,0x2EE5,0x2C44,0x29C9,0x2770,0x2538
11999
        dw 0x2324,0x212A,0x1F4E,0x1D8B,0x1BE2,0x1A52,0x18D7,0x1772,0x1623,0x14E4,0x13B8,0x129C
12000
        dw 0x1190,0x1095,0x0FA7,0x0EC6,0x0DF1,0x0D29,0x0C6B,0x0BB9,0x0B11,0x0A72,0x09DA,0x094E
12001
        dw 0x08C9,0x084A,0x07D3,0x0762,0x06F8,0x0694,0x0635,0x05DC,0x0588,0x0537,0x04EE,0x04A8
12002
        dw 0x0464,0x0423,0x03E8,0x03B2,0x037C,0x034B,0x031A,0x02EF,0x02C4,0x029B,0x0276,0x0252
12003
        dw 0x0232,0x0211,0x01F4,0x01D9,0x01BE,0x01A5,0x018D,0x0177,0x0162,0x014F,0x013C,0x0129
12004
        dw 0x0119,0x0108,0x00FB,0x00EB,0x00E0,0x00D2,0x00C8,0x00BA,0x00AF,0x00A7,0x009C,0x0094
12005
        dw 0x008C,0x0084,0x007C,0x0076,0x006E,0x0069,0x0064,0x005E,0x0059,0x0053,0x004E,0x004B
36 savelij 12006
;05
181 savelij 12007
        dw 0x45C3,0x41D8,0x3E29,0x3AAA,0x3761,0x3443,0x3156,0x2E8F,0x2BF3,0x297A,0x2727,0x24F5
12008
        dw 0x22E3,0x20EC,0x1F13,0x1D55,0x1BAF,0x1A21,0x18A9,0x1747,0x15FB,0x14BE,0x1395,0x1279
12009
        dw 0x1170,0x1077,0x0F89,0x0EAB,0x0DD8,0x0D10,0x0C56,0x0BA3,0x0AFC,0x0A5F,0x09CA,0x093E
12010
        dw 0x08B9,0x083A,0x07C6,0x0754,0x06EB,0x0689,0x062B,0x05D1,0x057E,0x052F,0x04E3,0x049D
12011
        dw 0x045C,0x041E,0x03E3,0x03AA,0x0376,0x0343,0x0315,0x02EA,0x02BF,0x0296,0x0273,0x0250
12012
        dw 0x022D,0x020F,0x01F1,0x01D6,0x01BB,0x01A3,0x018A,0x0175,0x015F,0x014C,0x0139,0x0126
12013
        dw 0x0116,0x0106,0x00F8,0x00EB,0x00DD,0x00D0,0x00C5,0x00BA,0x00AF,0x00A4,0x009C,0x0094
12014
        dw 0x008C,0x0084,0x007C,0x0074,0x006E,0x0069,0x0061,0x005B,0x0059,0x0053,0x004E,0x0049
36 savelij 12015
;06
181 savelij 12016
        dw 0x4544,0x4161,0x3DB4,0x3A3D,0x36FA,0x33E4,0x30FA,0x2E3B,0x2BA2,0x292E,0x26DE,0x24B1
12017
        dw 0x22A2,0x20B0,0x1EDA,0x1D1E,0x1B7B,0x19F1,0x187B,0x171C,0x15D2,0x1498,0x136F,0x1258
12018
        dw 0x114F,0x1057,0x0F6E,0x0E90,0x0DBD,0x0CF8,0x0C3D,0x0B8E,0x0AE9,0x0A4C,0x09B7,0x092B
12019
        dw 0x08A9,0x082C,0x07B5,0x0747,0x06E0,0x067C,0x0620,0x05C7,0x0573,0x0524,0x04DB,0x0495
12020
        dw 0x0454,0x0416,0x03DA,0x03A4,0x036E,0x033E,0x0310,0x02E4,0x02B9,0x0293,0x026D,0x024A
12021
        dw 0x022A,0x0209,0x01EE,0x01D1,0x01B8,0x01A0,0x0188,0x0172,0x015C,0x0149,0x0136,0x0126
12022
        dw 0x0113,0x0106,0x00F6,0x00E8,0x00DB,0x00D0,0x00C2,0x00B7,0x00AF,0x00A4,0x009C,0x0092
12023
        dw 0x0089,0x0081,0x007C,0x0074,0x006E,0x0066,0x0061,0x005B,0x0056,0x0051,0x004E,0x0049
36 savelij 12024
;07
181 savelij 12025
        dw 0x44C3,0x40E8,0x3D43,0x39D4,0x3693,0x3383,0x30A1,0x2DE4,0x2B51,0x28E3,0x2698,0x246E
12026
        dw 0x2261,0x2075,0x1EA1,0x1CE8,0x1B4B,0x19C3,0x1850,0x16F3,0x15A9,0x1472,0x134C,0x1235
12027
        dw 0x1132,0x1039,0x0F50,0x0E75,0x0DA5,0x0CE0,0x0C28,0x0B78,0x0AD3,0x0A39,0x09A4,0x091A
12028
        dw 0x0899,0x081C,0x07A8,0x0739,0x06D2,0x0671,0x0612,0x05BC,0x056B,0x051C,0x04D3,0x048D
12029
        dw 0x044C,0x040E,0x03D5,0x039C,0x0369,0x0338,0x030A,0x02DF,0x02B4,0x028E,0x0268,0x0248
12030
        dw 0x0224,0x0207,0x01E9,0x01CE,0x01B3,0x019B,0x0185,0x016F,0x015A,0x0147,0x0134,0x0124
12031
        dw 0x0113,0x0103,0x00F6,0x00E8,0x00DB,0x00CD,0x00C2,0x00B7,0x00AD,0x00A2,0x009A,0x0092
12032
        dw 0x0089,0x0081,0x0079,0x0074,0x006C,0x0066,0x0061,0x005B,0x0056,0x0051,0x004E,0x0049
36 savelij 12033
;08
181 savelij 12034
        dw 0x4CA1,0x4854,0x4446,0x4071,0x3CD1,0x3968,0x362F,0x3324,0x3045,0x2D91,0x2B02,0x2897
12035
        dw 0x2652,0x242A,0x2223,0x2037,0x1E68,0x1CB5,0x1B17,0x1992,0x1822,0x16C8,0x1581,0x144D
12036
        dw 0x1329,0x1215,0x1111,0x101B,0x0F35,0x0E5A,0x0D8D,0x0CCA,0x0C12,0x0B62,0x0AC0,0x0A26
12037
        dw 0x0994,0x090A,0x0888,0x080F,0x079A,0x072C,0x06C5,0x0663,0x0607,0x05B1,0x0560,0x0511
12038
        dw 0x04C8,0x0485,0x0444,0x0406,0x03CD,0x0397,0x0363,0x0333,0x0305,0x02DA,0x02AE,0x0288
12039
        dw 0x0265,0x0242,0x0222,0x0204,0x01E6,0x01CB,0x01B0,0x0198,0x0182,0x016D,0x0157,0x0144
12040
        dw 0x0131,0x0121,0x0111,0x0100,0x00F3,0x00E5,0x00D8,0x00CD,0x00BF,0x00B5,0x00AD,0x00A2
12041
        dw 0x009A,0x0092,0x0087,0x0081,0x0079,0x0071,0x006C,0x0066,0x0061,0x005B,0x0056,0x0051
36 savelij 12042
;09
181 savelij 12043
        dw 0x4C14,0x47D0,0x43C7,0x3FFA,0x3C62,0x38FE,0x35CB,0x32C6,0x2FEE,0x2D3D,0x2AB4,0x284E
12044
        dw 0x260B,0x23E6,0x21E5,0x1FFB,0x1E32,0x1C7F,0x1AE7,0x1964,0x17F7,0x169D,0x1558,0x1427
12045
        dw 0x1305,0x11F4,0x10F1,0x0FFD,0x0F18,0x0E3F,0x0D72,0x0CB2,0x0BFA,0x0B4F,0x0AAD,0x0A13
12046
        dw 0x0981,0x08FA,0x0878,0x07FE,0x078D,0x0721,0x06BA,0x0659,0x05FD,0x05A6,0x0555,0x0509
12047
        dw 0x04C0,0x047D,0x043C,0x0400,0x03C5,0x038F,0x035B,0x032B,0x02FF,0x02D4,0x02AC,0x0283
12048
        dw 0x0260,0x023D,0x021F,0x01FF,0x01E4,0x01C8,0x01AD,0x0195,0x017F,0x016A,0x0154,0x0141
12049
        dw 0x0131,0x011E,0x010E,0x0100,0x00F0,0x00E3,0x00D8,0x00CA,0x00BF,0x00B5,0x00AA,0x00A2
12050
        dw 0x0097,0x008F,0x0087,0x007F,0x0079,0x0071,0x006C,0x0066,0x005E,0x0059,0x0056,0x0051
36 savelij 12051
;0A
181 savelij 12052
        dw 0x4B88,0x474C,0x434B,0x3F83,0x3BF3,0x3895,0x356A,0x326A,0x2F95,0x2CE9,0x2A63,0x2802
12053
        dw 0x25C5,0x23A6,0x21A4,0x1FC2,0x1DF9,0x1C4C,0x1AB3,0x1933,0x17C9,0x1674,0x1532,0x1401
12054
        dw 0x12E2,0x11D1,0x10D3,0x0FE0,0x0EFC,0x0E24,0x0D59,0x0C99,0x0BE4,0x0B3A,0x0A98,0x0A00
12055
        dw 0x0971,0x08EA,0x0868,0x07F1,0x077D,0x0713,0x06AC,0x064E,0x05F2,0x059E,0x054D,0x0501
12056
        dw 0x04B8,0x0475,0x0434,0x03F8,0x03BF,0x0389,0x0356,0x0325,0x02FA,0x02CF,0x02A6,0x0280
12057
        dw 0x025A,0x023A,0x021A,0x01FC,0x01DE,0x01C3,0x01AB,0x0192,0x017D,0x0167,0x0152,0x013F
12058
        dw 0x012E,0x011B,0x010E,0x00FE,0x00F0,0x00E3,0x00D5,0x00CA,0x00BD,0x00B2,0x00AA,0x009F
12059
        dw 0x0097,0x008F,0x0087,0x007F,0x0076,0x0071,0x006C,0x0064,0x005E,0x0059,0x0053,0x0051
36 savelij 12060
;0B
181 savelij 12061
        dw 0x4AFE,0x46C7,0x42CE,0x3F0E,0x3B85,0x382E,0x3506,0x320E,0x2F3E,0x2C98,0x2A17,0x27B9
12062
        dw 0x257F,0x2365,0x2168,0x1F87,0x1DC3,0x1C15,0x1A83,0x1905,0x179E,0x164C,0x150A,0x13DB
12063
        dw 0x12BF,0x11B1,0x10B3,0x0FC5,0x0EE1,0x0E0C,0x0D41,0x0C84,0x0BCF,0x0B24,0x0A85,0x09ED
12064
        dw 0x095E,0x08D9,0x085A,0x07E1,0x076F,0x0706,0x06A2,0x0640,0x05E7,0x0593,0x0542,0x04F6
12065
        dw 0x04B0,0x046C,0x042C,0x03F0,0x03B7,0x0381,0x0351,0x0320,0x02F5,0x02C9,0x02A1,0x027B
12066
        dw 0x0258,0x0235,0x0217,0x01F9,0x01DB,0x01C0,0x01A8,0x0190,0x017A,0x0164,0x0152,0x013F
12067
        dw 0x012C,0x011B,0x010B,0x00FB,0x00ED,0x00E0,0x00D2,0x00C8,0x00BD,0x00B2,0x00A7,0x009F
12068
        dw 0x0094,0x008C,0x0084,0x007F,0x0076,0x0071,0x0069,0x0064,0x005E,0x0059,0x0053,0x004E
36 savelij 12069
;0C
181 savelij 12070
        dw 0x4A74,0x4645,0x4255,0x3E9A,0x3B18,0x37C7,0x34A4,0x31AF,0x2EE5,0x2C44,0x29C9,0x2770
12071
        dw 0x2538,0x2324,0x212A,0x1F4E,0x1D8B,0x1BE2,0x1A52,0x18D7,0x1772,0x1623,0x14E4,0x13B8
12072
        dw 0x129C,0x1190,0x1095,0x0FA7,0x0EC6,0x0DF1,0x0D29,0x0C6B,0x0BB9,0x0B11,0x0A72,0x09DA
12073
        dw 0x094E,0x08C9,0x084A,0x07D3,0x0762,0x06F8,0x0694,0x0635,0x05DC,0x0588,0x0537,0x04EE
12074
        dw 0x04A8,0x0464,0x0423,0x03E8,0x03B2,0x037C,0x034B,0x031A,0x02EF,0x02C4,0x029B,0x0276
12075
        dw 0x0252,0x0232,0x0211,0x01F4,0x01D9,0x01BE,0x01A5,0x018D,0x0177,0x0162,0x014F,0x013C
12076
        dw 0x0129,0x0119,0x0108,0x00FB,0x00EB,0x00E0,0x00D2,0x00C8,0x00BA,0x00AF,0x00A7,0x009C
12077
        dw 0x0094,0x008C,0x0084,0x007C,0x0076,0x006E,0x0069,0x0064,0x005E,0x0059,0x0053,0x004E
36 savelij 12078
;0D
181 savelij 12079
        dw 0x49EA,0x45C3,0x41D8,0x3E29,0x3AAA,0x3761,0x3443,0x3156,0x2E8F,0x2BF3,0x297A,0x2727
12080
        dw 0x24F5,0x22E3,0x20EC,0x1F13,0x1D55,0x1BAF,0x1A21,0x18A9,0x1747,0x15FB,0x14BE,0x1395
12081
        dw 0x1279,0x1170,0x1077,0x0F89,0x0EAB,0x0DD8,0x0D10,0x0C56,0x0BA3,0x0AFC,0x0A5F,0x09CA
12082
        dw 0x093E,0x08B9,0x083A,0x07C6,0x0754,0x06EB,0x0689,0x062B,0x05D1,0x057E,0x052F,0x04E3
12083
        dw 0x049D,0x045C,0x041E,0x03E3,0x03AA,0x0376,0x0343,0x0315,0x02EA,0x02BF,0x0296,0x0273
12084
        dw 0x0250,0x022D,0x020F,0x01F1,0x01D6,0x01BB,0x01A3,0x018A,0x0175,0x015F,0x014C,0x0139
12085
        dw 0x0126,0x0116,0x0106,0x00F8,0x00EB,0x00DD,0x00D0,0x00C5,0x00BA,0x00AF,0x00A4,0x009C
12086
        dw 0x0094,0x008C,0x0084,0x007C,0x0074,0x006E,0x0069,0x0061,0x005B,0x0059,0x0053,0x004E
36 savelij 12087
;0E
181 savelij 12088
        dw 0x4963,0x4544,0x4161,0x3DB4,0x3A3D,0x36FA,0x33E4,0x30FA,0x2E3B,0x2BA2,0x292E,0x26DE
12089
        dw 0x24B1,0x22A2,0x20B0,0x1EDA,0x1D1E,0x1B7B,0x19F1,0x187B,0x171C,0x15D2,0x1498,0x136F
12090
        dw 0x1258,0x114F,0x1057,0x0F6E,0x0E90,0x0DBD,0x0CF8,0x0C3D,0x0B8E,0x0AE9,0x0A4C,0x09B7
12091
        dw 0x092B,0x08A9,0x082C,0x07B5,0x0747,0x06E0,0x067C,0x0620,0x05C7,0x0573,0x0524,0x04DB
12092
        dw 0x0495,0x0454,0x0416,0x03DA,0x03A4,0x036E,0x033E,0x0310,0x02E4,0x02B9,0x0293,0x026D
12093
        dw 0x024A,0x022A,0x0209,0x01EE,0x01D1,0x01B8,0x01A0,0x0188,0x0172,0x015C,0x0149,0x0136
12094
        dw 0x0126,0x0113,0x0106,0x00F6,0x00E8,0x00DB,0x00D0,0x00C2,0x00B7,0x00AF,0x00A4,0x009C
12095
        dw 0x0092,0x0089,0x0081,0x007C,0x0074,0x006E,0x0066,0x0061,0x005B,0x0056,0x0051,0x004E
36 savelij 12096
;0F
181 savelij 12097
        dw 0x48DC,0x44C3,0x40E8,0x3D43,0x39D4,0x3693,0x3383,0x30A1,0x2DE4,0x2B51,0x28E3,0x2698
12098
        dw 0x246E,0x2261,0x2075,0x1EA1,0x1CE8,0x1B4B,0x19C3,0x1850,0x16F3,0x15A9,0x1472,0x134C
12099
        dw 0x1235,0x1132,0x1039,0x0F50,0x0E75,0x0DA5,0x0CE0,0x0C28,0x0B78,0x0AD3,0x0A39,0x09A4
12100
        dw 0x091A,0x0899,0x081C,0x07A8,0x0739,0x06D2,0x0671,0x0612,0x05BC,0x056B,0x051C,0x04D3
12101
        dw 0x048D,0x044C,0x040E,0x03D5,0x039C,0x0369,0x0338,0x030A,0x02DF,0x02B4,0x028E,0x0268
12102
        dw 0x0248,0x0224,0x0207,0x01E9,0x01CE,0x01B3,0x019B,0x0185,0x016F,0x015A,0x0147,0x0134
12103
        dw 0x0124,0x0113,0x0103,0x00F6,0x00E8,0x00DB,0x00CD,0x00C2,0x00B7,0x00AD,0x00A2,0x009A
12104
        dw 0x0092,0x0089,0x0081,0x0079,0x0074,0x006C,0x0066,0x0061,0x005B,0x0056,0x0051,0x004E
36 savelij 12105
 
12106
;INCLUDE "_AMFRQTB.a80"
181 savelij 12107
AMFRQTB ;EQU 0xEC00
36 savelij 12108
;00
181 savelij 12109
        dw 0x1AC0,0x1940,0x17D5,0x167E,0x153B,0x140A,0x12EA,0x11DA,0x10DA,0x0FE8,0x0F03,0x0E2C
12110
        dw 0x0D60,0x0CA0,0x0BEA,0x0B3F,0x0A9E,0x0A05,0x0975,0x08ED,0x086D,0x07F4,0x0782,0x0716
12111
        dw 0x06B0,0x0650,0x05F5,0x05A0,0x054F,0x0503,0x04BB,0x0477,0x0436,0x03FA,0x03C1,0x038B
12112
        dw 0x0358,0x0328,0x02FB,0x02D0,0x02A7,0x0281,0x025D,0x023B,0x021B,0x01FD,0x01E0,0x01C5
12113
        dw 0x01AC,0x0194,0x017D,0x0168,0x0154,0x0141,0x012F,0x011E,0x010E,0x00FE,0x00F0,0x00E3
12114
        dw 0x00D6,0x00CA,0x00BF,0x00B4,0x00AA,0x00A0,0x0097,0x008F,0x0087,0x007F,0x0078,0x0071
12115
        dw 0x006B,0x0065,0x005F,0x005A,0x0055,0x0050,0x004C,0x0047,0x0043,0x0040,0x003C,0x0039
12116
        dw 0x0036,0x0032,0x0030,0x002D,0x002A,0x0028,0x0026,0x0024,0x0022,0x0020,0x001E,0x001C
36 savelij 12117
;01
181 savelij 12118
        dw 0x1A8F,0x1911,0x17A9,0x1655,0x1514,0x13E5,0x12C7,0x11BA,0x10BB,0x0FCB,0x0EE8,0x0E12
12119
        dw 0x0D47,0x0C89,0x0BD4,0x0B2B,0x0A8A,0x09F3,0x0964,0x08DD,0x085D,0x07E5,0x0774,0x0709
12120
        dw 0x06A4,0x0644,0x05EA,0x0595,0x0545,0x04F9,0x04B2,0x046E,0x042F,0x03F3,0x03BA,0x0384
12121
        dw 0x0352,0x0322,0x02F5,0x02CB,0x02A3,0x027D,0x0259,0x0237,0x0217,0x01F9,0x01DD,0x01C2
12122
        dw 0x01A9,0x0191,0x017B,0x0165,0x0151,0x013E,0x012C,0x011C,0x010C,0x00FD,0x00EE,0x00E1
12123
        dw 0x00D4,0x00C9,0x00BD,0x00B3,0x00A9,0x009F,0x0096,0x008E,0x0086,0x007E,0x0077,0x0071
12124
        dw 0x006A,0x0064,0x005F,0x0059,0x0054,0x0050,0x004B,0x0047,0x0043,0x003F,0x003C,0x0038
12125
        dw 0x0035,0x0032,0x002F,0x002D,0x002A,0x0028,0x0026,0x0023,0x0021,0x0020,0x001E,0x001C
36 savelij 12126
;02
181 savelij 12127
        dw 0x1A5E,0x18E3,0x177D,0x162C,0x14ED,0x13C1,0x12A5,0x1199,0x109C,0x0FAD,0x0ECC,0x0DF8
12128
        dw 0x0D2F,0x0C71,0x0BBF,0x0B16,0x0A77,0x09E0,0x0952,0x08CC,0x084E,0x07D7,0x0766,0x06FC
12129
        dw 0x0697,0x0639,0x05DF,0x058B,0x053B,0x04F0,0x04A9,0x0466,0x0427,0x03EB,0x03B3,0x037E
12130
        dw 0x034C,0x031C,0x02F0,0x02C5,0x029E,0x0278,0x0255,0x0233,0x0214,0x01F6,0x01DA,0x01BF
12131
        dw 0x01A6,0x018E,0x0178,0x0163,0x014F,0x013C,0x012A,0x011A,0x010A,0x00FB,0x00ED,0x00DF
12132
        dw 0x00D3,0x00C7,0x00BC,0x00B1,0x00A7,0x009E,0x0095,0x008D,0x0085,0x007D,0x0076,0x0070
12133
        dw 0x0069,0x0064,0x005E,0x0059,0x0054,0x004F,0x004B,0x0046,0x0042,0x003F,0x003B,0x0038
12134
        dw 0x0035,0x0032,0x002F,0x002C,0x002A,0x0028,0x0025,0x0023,0x0021,0x001F,0x001E,0x001C
36 savelij 12135
;03
181 savelij 12136
        dw 0x1A2D,0x18B5,0x1752,0x1603,0x14C7,0x139C,0x1283,0x1179,0x107E,0x0F91,0x0EB1,0x0DDE
12137
        dw 0x0D17,0x0C5B,0x0BA9,0x0B02,0x0A63,0x09CE,0x0941,0x08BC,0x083F,0x07C8,0x0758,0x06EF
12138
        dw 0x068B,0x062D,0x05D5,0x0581,0x0532,0x04E7,0x04A1,0x045E,0x041F,0x03E4,0x03AC,0x0377
12139
        dw 0x0346,0x0317,0x02EA,0x02C0,0x0299,0x0274,0x0250,0x022F,0x0210,0x01F2,0x01D6,0x01BC
12140
        dw 0x01A3,0x018B,0x0175,0x0160,0x014C,0x013A,0x0128,0x0118,0x0108,0x00F9,0x00EB,0x00DE
12141
        dw 0x00D1,0x00C6,0x00BB,0x00B0,0x00A6,0x009D,0x0094,0x008C,0x0084,0x007D,0x0076,0x006F
12142
        dw 0x0069,0x0063,0x005D,0x0058,0x0053,0x004E,0x004A,0x0046,0x0042,0x003E,0x003B,0x0037
12143
        dw 0x0034,0x0031,0x002F,0x002C,0x002A,0x0027,0x0025,0x0023,0x0021,0x001F,0x001D,0x001C
36 savelij 12144
;04
181 savelij 12145
        dw 0x19FD,0x1888,0x1727,0x15DB,0x14A1,0x1378,0x1260,0x1158,0x105F,0x0F74,0x0E96,0x0DC4
12146
        dw 0x0CFF,0x0C44,0x0B94,0x0AED,0x0A50,0x09BC,0x0930,0x08AC,0x0830,0x07BA,0x074B,0x06E2
12147
        dw 0x067F,0x0622,0x05CA,0x0577,0x0528,0x04DE,0x0498,0x0456,0x0418,0x03DD,0x03A5,0x0371
12148
        dw 0x0340,0x0311,0x02E5,0x02BB,0x0294,0x026F,0x024C,0x022B,0x020C,0x01EE,0x01D3,0x01B9
12149
        dw 0x01A0,0x0188,0x0172,0x015E,0x014A,0x0138,0x0126,0x0116,0x0106,0x00F7,0x00E9,0x00DC
12150
        dw 0x00D0,0x00C4,0x00B9,0x00AF,0x00A5,0x009C,0x0093,0x008B,0x0083,0x007C,0x0075,0x006E
12151
        dw 0x0068,0x0062,0x005D,0x0057,0x0053,0x004E,0x004A,0x0045,0x0041,0x003E,0x003A,0x0037
12152
        dw 0x0034,0x0031,0x002E,0x002C,0x0029,0x0027,0x0025,0x0023,0x0021,0x001F,0x001D,0x001C
36 savelij 12153
;05
181 savelij 12154
        dw 0x19CD,0x185A,0x16FD,0x15B2,0x147B,0x1354,0x123F,0x1138,0x1041,0x0F57,0x0E7B,0x0DAB
12155
        dw 0x0CE7,0x0C2D,0x0B7E,0x0AD9,0x0A3D,0x09AA,0x091F,0x089C,0x0821,0x07AC,0x073E,0x06D5
12156
        dw 0x0673,0x0617,0x05BF,0x056D,0x051F,0x04D5,0x0490,0x044E,0x0410,0x03D6,0x039F,0x036B
12157
        dw 0x033A,0x030B,0x02E0,0x02B6,0x028F,0x026B,0x0248,0x0227,0x0208,0x01EB,0x01CF,0x01B5
12158
        dw 0x019D,0x0186,0x0170,0x015B,0x0148,0x0135,0x0124,0x0114,0x0104,0x00F5,0x00E8,0x00DB
12159
        dw 0x00CE,0x00C3,0x00B8,0x00AE,0x00A4,0x009B,0x0092,0x008A,0x0082,0x007B,0x0074,0x006D
12160
        dw 0x0067,0x0061,0x005C,0x0057,0x0052,0x004D,0x0049,0x0045,0x0041,0x003D,0x003A,0x0037
12161
        dw 0x0034,0x0031,0x002E,0x002B,0x0029,0x0027,0x0024,0x0022,0x0021,0x001F,0x001D,0x001B
36 savelij 12162
;06
181 savelij 12163
        dw 0x199E,0x182E,0x16D2,0x158A,0x1455,0x1331,0x121D,0x1119,0x1023,0x0F3B,0x0E60,0x0D92
12164
        dw 0x0CCF,0x0C17,0x0B69,0x0AC5,0x0A2A,0x0998,0x090E,0x088C,0x0812,0x079E,0x0730,0x06C9
12165
        dw 0x0667,0x060B,0x05B5,0x0563,0x0515,0x04CC,0x0487,0x0446,0x0409,0x03CF,0x0398,0x0364
12166
        dw 0x0334,0x0306,0x02DA,0x02B1,0x028B,0x0266,0x0244,0x0223,0x0204,0x01E7,0x01CC,0x01B2
12167
        dw 0x019A,0x0183,0x016D,0x0159,0x0145,0x0133,0x0122,0x0112,0x0102,0x00F4,0x00E6,0x00D9
12168
        dw 0x00CD,0x00C1,0x00B7,0x00AC,0x00A3,0x009A,0x0091,0x0089,0x0081,0x007A,0x0073,0x006D
12169
        dw 0x0066,0x0061,0x005B,0x0056,0x0051,0x004D,0x0048,0x0044,0x0041,0x003D,0x003A,0x0036
12170
        dw 0x0033,0x0030,0x002E,0x002B,0x0029,0x0026,0x0024,0x0022,0x0020,0x001E,0x001D,0x001B
36 savelij 12171
;07
181 savelij 12172
        dw 0x196E,0x1801,0x16A8,0x1563,0x142F,0x130D,0x11FC,0x10F9,0x1005,0x0F1F,0x0E46,0x0D79
12173
        dw 0x0CB7,0x0C01,0x0B54,0x0AB1,0x0A18,0x0987,0x08FE,0x087D,0x0803,0x0790,0x0723,0x06BC
12174
        dw 0x065C,0x0600,0x05AA,0x0559,0x050C,0x04C3,0x047F,0x043E,0x0401,0x03C8,0x0391,0x035E
12175
        dw 0x032E,0x0300,0x02D5,0x02AC,0x0286,0x0262,0x023F,0x021F,0x0201,0x01E4,0x01C9,0x01AF
12176
        dw 0x0197,0x0180,0x016B,0x0156,0x0143,0x0131,0x0120,0x0110,0x0100,0x00F2,0x00E4,0x00D8
12177
        dw 0x00CB,0x00C0,0x00B5,0x00AB,0x00A1,0x0098,0x0090,0x0088,0x0080,0x0079,0x0072,0x006C
12178
        dw 0x0066,0x0060,0x005B,0x0056,0x0051,0x004C,0x0048,0x0044,0x0040,0x003C,0x0039,0x0036
12179
        dw 0x0033,0x0030,0x002D,0x002B,0x0028,0x0026,0x0024,0x0022,0x0020,0x001E,0x001D,0x001B
36 savelij 12180
;08
181 savelij 12181
        dw 0x1C57,0x1AC0,0x1940,0x17D5,0x167E,0x153B,0x140A,0x12EA,0x11DA,0x10DA,0x0FE8,0x0F03
12182
        dw 0x0E2C,0x0D60,0x0CA0,0x0BEA,0x0B3F,0x0A9E,0x0A05,0x0975,0x08ED,0x086D,0x07F4,0x0782
12183
        dw 0x0716,0x06B0,0x0650,0x05F5,0x05A0,0x054F,0x0503,0x04BB,0x0477,0x0436,0x03FA,0x03C1
12184
        dw 0x038B,0x0358,0x0328,0x02FB,0x02D0,0x02A7,0x0281,0x025D,0x023B,0x021B,0x01FD,0x01E0
12185
        dw 0x01C5,0x01AC,0x0194,0x017D,0x0168,0x0154,0x0141,0x012F,0x011E,0x010E,0x00FE,0x00F0
12186
        dw 0x00E3,0x00D6,0x00CA,0x00BF,0x00B4,0x00AA,0x00A0,0x0097,0x008F,0x0087,0x007F,0x0078
12187
        dw 0x0071,0x006B,0x0065,0x005F,0x005A,0x0055,0x0050,0x004C,0x0047,0x0043,0x0040,0x003C
12188
        dw 0x0039,0x0036,0x0032,0x0030,0x002D,0x002A,0x0028,0x0026,0x0024,0x0022,0x0020,0x001E
36 savelij 12189
;09
181 savelij 12190
        dw 0x1C23,0x1A8F,0x1911,0x17A9,0x1655,0x1514,0x13E5,0x12C7,0x11BA,0x10BB,0x0FCB,0x0EE8
12191
        dw 0x0E12,0x0D47,0x0C89,0x0BD4,0x0B2B,0x0A8A,0x09F3,0x0964,0x08DD,0x085D,0x07E5,0x0774
12192
        dw 0x0709,0x06A4,0x0644,0x05EA,0x0595,0x0545,0x04F9,0x04B2,0x046E,0x042F,0x03F3,0x03BA
12193
        dw 0x0384,0x0352,0x0322,0x02F5,0x02CB,0x02A3,0x027D,0x0259,0x0237,0x0217,0x01F9,0x01DD
12194
        dw 0x01C2,0x01A9,0x0191,0x017B,0x0165,0x0151,0x013E,0x012C,0x011C,0x010C,0x00FD,0x00EE
12195
        dw 0x00E1,0x00D4,0x00C9,0x00BD,0x00B3,0x00A9,0x009F,0x0096,0x008E,0x0086,0x007E,0x0077
12196
        dw 0x0071,0x006A,0x0064,0x005F,0x0059,0x0054,0x0050,0x004B,0x0047,0x0043,0x003F,0x003C
12197
        dw 0x0038,0x0035,0x0032,0x002F,0x002D,0x002A,0x0028,0x0026,0x0023,0x0021,0x0020,0x001E
36 savelij 12198
;0A
181 savelij 12199
        dw 0x1BEF,0x1A5E,0x18E3,0x177D,0x162C,0x14ED,0x13C1,0x12A5,0x1199,0x109C,0x0FAD,0x0ECC
12200
        dw 0x0DF8,0x0D2F,0x0C71,0x0BBF,0x0B16,0x0A77,0x09E0,0x0952,0x08CC,0x084E,0x07D7,0x0766
12201
        dw 0x06FC,0x0697,0x0639,0x05DF,0x058B,0x053B,0x04F0,0x04A9,0x0466,0x0427,0x03EB,0x03B3
12202
        dw 0x037E,0x034C,0x031C,0x02F0,0x02C5,0x029E,0x0278,0x0255,0x0233,0x0214,0x01F6,0x01DA
12203
        dw 0x01BF,0x01A6,0x018E,0x0178,0x0163,0x014F,0x013C,0x012A,0x011A,0x010A,0x00FB,0x00ED
12204
        dw 0x00DF,0x00D3,0x00C7,0x00BC,0x00B1,0x00A7,0x009E,0x0095,0x008D,0x0085,0x007D,0x0076
12205
        dw 0x0070,0x0069,0x0064,0x005E,0x0059,0x0054,0x004F,0x004B,0x0046,0x0042,0x003F,0x003B
12206
        dw 0x0038,0x0035,0x0032,0x002F,0x002C,0x002A,0x0028,0x0025,0x0023,0x0021,0x001F,0x001E
36 savelij 12207
;0B
181 savelij 12208
        dw 0x1BBC,0x1A2D,0x18B5,0x1752,0x1603,0x14C7,0x139C,0x1283,0x1179,0x107E,0x0F91,0x0EB1
12209
        dw 0x0DDE,0x0D17,0x0C5B,0x0BA9,0x0B02,0x0A63,0x09CE,0x0941,0x08BC,0x083F,0x07C8,0x0758
12210
        dw 0x06EF,0x068B,0x062D,0x05D5,0x0581,0x0532,0x04E7,0x04A1,0x045E,0x041F,0x03E4,0x03AC
12211
        dw 0x0377,0x0346,0x0317,0x02EA,0x02C0,0x0299,0x0274,0x0250,0x022F,0x0210,0x01F2,0x01D6
12212
        dw 0x01BC,0x01A3,0x018B,0x0175,0x0160,0x014C,0x013A,0x0128,0x0118,0x0108,0x00F9,0x00EB
12213
        dw 0x00DE,0x00D1,0x00C6,0x00BB,0x00B0,0x00A6,0x009D,0x0094,0x008C,0x0084,0x007D,0x0076
12214
        dw 0x006F,0x0069,0x0063,0x005D,0x0058,0x0053,0x004E,0x004A,0x0046,0x0042,0x003E,0x003B
12215
        dw 0x0037,0x0034,0x0031,0x002F,0x002C,0x002A,0x0027,0x0025,0x0023,0x0021,0x001F,0x001D
36 savelij 12216
;0C
181 savelij 12217
        dw 0x1B89,0x19FD,0x1888,0x1727,0x15DB,0x14A1,0x1378,0x1260,0x1158,0x105F,0x0F74,0x0E96
12218
        dw 0x0DC4,0x0CFF,0x0C44,0x0B94,0x0AED,0x0A50,0x09BC,0x0930,0x08AC,0x0830,0x07BA,0x074B
12219
        dw 0x06E2,0x067F,0x0622,0x05CA,0x0577,0x0528,0x04DE,0x0498,0x0456,0x0418,0x03DD,0x03A5
12220
        dw 0x0371,0x0340,0x0311,0x02E5,0x02BB,0x0294,0x026F,0x024C,0x022B,0x020C,0x01EE,0x01D3
12221
        dw 0x01B9,0x01A0,0x0188,0x0172,0x015E,0x014A,0x0138,0x0126,0x0116,0x0106,0x00F7,0x00E9
12222
        dw 0x00DC,0x00D0,0x00C4,0x00B9,0x00AF,0x00A5,0x009C,0x0093,0x008B,0x0083,0x007C,0x0075
12223
        dw 0x006E,0x0068,0x0062,0x005D,0x0057,0x0053,0x004E,0x004A,0x0045,0x0041,0x003E,0x003A
12224
        dw 0x0037,0x0034,0x0031,0x002E,0x002C,0x0029,0x0027,0x0025,0x0023,0x0021,0x001F,0x001D
36 savelij 12225
;0D
181 savelij 12226
        dw 0x1B56,0x19CD,0x185A,0x16FD,0x15B2,0x147B,0x1354,0x123F,0x1138,0x1041,0x0F57,0x0E7B
12227
        dw 0x0DAB,0x0CE7,0x0C2D,0x0B7E,0x0AD9,0x0A3D,0x09AA,0x091F,0x089C,0x0821,0x07AC,0x073E
12228
        dw 0x06D5,0x0673,0x0617,0x05BF,0x056D,0x051F,0x04D5,0x0490,0x044E,0x0410,0x03D6,0x039F
12229
        dw 0x036B,0x033A,0x030B,0x02E0,0x02B6,0x028F,0x026B,0x0248,0x0227,0x0208,0x01EB,0x01CF
12230
        dw 0x01B5,0x019D,0x0186,0x0170,0x015B,0x0148,0x0135,0x0124,0x0114,0x0104,0x00F5,0x00E8
12231
        dw 0x00DB,0x00CE,0x00C3,0x00B8,0x00AE,0x00A4,0x009B,0x0092,0x008A,0x0082,0x007B,0x0074
12232
        dw 0x006D,0x0067,0x0061,0x005C,0x0057,0x0052,0x004D,0x0049,0x0045,0x0041,0x003D,0x003A
12233
        dw 0x0037,0x0034,0x0031,0x002E,0x002B,0x0029,0x0027,0x0024,0x0022,0x0021,0x001F,0x001D
36 savelij 12234
;0E
181 savelij 12235
        dw 0x1B24,0x199E,0x182E,0x16D2,0x158A,0x1455,0x1331,0x121D,0x1119,0x1023,0x0F3B,0x0E60
12236
        dw 0x0D92,0x0CCF,0x0C17,0x0B69,0x0AC5,0x0A2A,0x0998,0x090E,0x088C,0x0812,0x079E,0x0730
12237
        dw 0x06C9,0x0667,0x060B,0x05B5,0x0563,0x0515,0x04CC,0x0487,0x0446,0x0409,0x03CF,0x0398
12238
        dw 0x0364,0x0334,0x0306,0x02DA,0x02B1,0x028B,0x0266,0x0244,0x0223,0x0204,0x01E7,0x01CC
12239
        dw 0x01B2,0x019A,0x0183,0x016D,0x0159,0x0145,0x0133,0x0122,0x0112,0x0102,0x00F4,0x00E6
12240
        dw 0x00D9,0x00CD,0x00C1,0x00B7,0x00AC,0x00A3,0x009A,0x0091,0x0089,0x0081,0x007A,0x0073
12241
        dw 0x006D,0x0066,0x0061,0x005B,0x0056,0x0051,0x004D,0x0048,0x0044,0x0041,0x003D,0x003A
12242
        dw 0x0036,0x0033,0x0030,0x002E,0x002B,0x0029,0x0026,0x0024,0x0022,0x0020,0x001E,0x001D
36 savelij 12243
;0F
181 savelij 12244
        dw 0x1AF2,0x196E,0x1801,0x16A8,0x1563,0x142F,0x130D,0x11FC,0x10F9,0x1005,0x0F1F,0x0E46
12245
        dw 0x0D79,0x0CB7,0x0C01,0x0B54,0x0AB1,0x0A18,0x0987,0x08FE,0x087D,0x0803,0x0790,0x0723
12246
        dw 0x06BC,0x065C,0x0600,0x05AA,0x0559,0x050C,0x04C3,0x047F,0x043E,0x0401,0x03C8,0x0391
12247
        dw 0x035E,0x032E,0x0300,0x02D5,0x02AC,0x0286,0x0262,0x023F,0x021F,0x0201,0x01E4,0x01C9
12248
        dw 0x01AF,0x0197,0x0180,0x016B,0x0156,0x0143,0x0131,0x0120,0x0110,0x0100,0x00F2,0x00E4
12249
        dw 0x00D8,0x00CB,0x00C0,0x00B5,0x00AB,0x00A1,0x0098,0x0090,0x0088,0x0080,0x0079,0x0072
12250
        dw 0x006C,0x0066,0x0060,0x005B,0x0056,0x0051,0x004C,0x0048,0x0044,0x0040,0x003C,0x0039
12251
        dw 0x0036,0x0033,0x0030,0x002D,0x002B,0x0028,0x0026,0x0024,0x0022,0x0020,0x001E,0x001D
36 savelij 12252
 
12253
;INCLUDE "_AMTOGS.a80" ;patched
181 savelij 12254
;AMTOGS  ;EQU 0xF800
12255
        dw 0x0000,0x0003,0x0005,0x0008,0x000B,0x000E,0x0010,0x0013
12256
        dw 0x0016,0x0018,0x001B,0x001E,0x0020,0x0023,0x0026,0x0029
12257
        dw 0x002B,0x002E,0x0031,0x0033,0x0036,0x0039,0x003B,0x003E
12258
        dw 0x0041,0x0044,0x0046,0x0049,0x004C,0x004E,0x0051,0x0054
12259
        dw 0x0057,0x0059,0x005C,0x005F,0x0061,0x0064,0x0067,0x0069
12260
        dw 0x006C,0x006F,0x0072,0x0074,0x0077,0x007A,0x007C,0x007F
12261
        dw 0x0082,0x0084,0x0087,0x008A,0x008D,0x008F,0x0092,0x0095
12262
        dw 0x0097,0x009A,0x009D,0x00A0,0x00A2,0x00A5,0x00A8,0x00AA
12263
        dw 0x00AD,0x00B0,0x00B2,0x00B5,0x00B8,0x00BB,0x00BD,0x00C0
12264
        dw 0x00C3,0x00C5,0x00C8,0x00CB,0x00CD,0x00D0,0x00D3,0x00D6
12265
        dw 0x00D8,0x00DB,0x00DE,0x00E0,0x00E3,0x00E6,0x00E9,0x00EB
12266
        dw 0x00EE,0x00F1,0x00F3,0x00F6,0x00F9,0x00FB,0x00FE,0x0101
12267
        dw 0x0104,0x0106,0x0109,0x010C,0x010E,0x0111,0x0114,0x0117
12268
        dw 0x0119,0x011C,0x011F,0x0121,0x0124,0x0127,0x0129,0x012C
12269
        dw 0x012F,0x0132,0x0134,0x0137,0x013A,0x013C,0x013F,0x0142
12270
        dw 0x0144,0x0147,0x014A,0x014D,0x014F,0x0152,0x0155,0x0157
12271
        dw 0x015A,0x015D,0x0160,0x0162,0x0165,0x0168,0x016A,0x016D
12272
        dw 0x0170,0x0172,0x0175,0x0178,0x017B,0x017D,0x0180,0x0183
12273
        dw 0x0185,0x0188,0x018B,0x018D,0x0190,0x0193,0x0196,0x0198
12274
        dw 0x019B,0x019E,0x01A0,0x01A3,0x01A6,0x01A9,0x01AB,0x01AE
12275
        dw 0x01B1,0x01B3,0x01B6,0x01B9,0x01BB,0x01BE,0x01C1,0x01C4
12276
        dw 0x01C6,0x01C9,0x01CC,0x01CE,0x01D1,0x01D4,0x01D6,0x01D9
12277
        dw 0x01DC,0x01DF,0x01E1,0x01E4,0x01E7,0x01E9,0x01EC,0x01EF
12278
        dw 0x01F2,0x01F4,0x01F7,0x01FA,0x01FC,0x01FF,0x0202,0x0204
12279
        dw 0x0207,0x020A,0x020D,0x020F,0x0212,0x0215,0x0217,0x021A
12280
        dw 0x021D,0x021F,0x0222,0x0225,0x0228,0x022A,0x022D,0x0230
12281
        dw 0x0232,0x0235,0x0238,0x023B,0x023D,0x0240,0x0243,0x0245
12282
        dw 0x0248,0x024B,0x024D,0x0250,0x0253,0x0256,0x0258,0x025B
12283
        dw 0x025E,0x0260,0x0263,0x0266,0x0269,0x026B,0x026E,0x0271
12284
        dw 0x0273,0x0276,0x0279,0x027B,0x027E,0x0281,0x0284,0x0286
12285
        dw 0x0289,0x028C,0x028E,0x0291,0x0294,0x0296,0x0299,0x029C
12286
        dw 0x029F,0x02A1,0x02A4,0x02A7,0x02A9,0x02AC,0x02AF,0x02B2
12287
        dw 0x02B4,0x02B7,0x02BA,0x02BC,0x02BF,0x02C2,0x02C4,0x02C7
12288
        dw 0x02CA,0x02CD,0x02CF,0x02D2,0x02D5,0x02D7,0x02DA,0x02DD
12289
        dw 0x02DF,0x02E2,0x02E5,0x02E8,0x02EA,0x02ED,0x02F0,0x02F2
12290
        dw 0x02F5,0x02F8,0x02FB,0x02FD,0x0300,0x0303,0x0305,0x0308
12291
        dw 0x030B,0x030D,0x0310,0x0313,0x0316,0x0318,0x031B,0x031E
12292
        dw 0x0320,0x0323,0x0326,0x0328,0x032B,0x032E,0x0331,0x0333
12293
        dw 0x0336,0x0339,0x033B,0x033E,0x0341,0x0344,0x0346,0x0349
12294
        dw 0x034C,0x034E,0x0351,0x0354,0x0356,0x0359,0x035C,0x035F
12295
        dw 0x0361,0x0364,0x0367,0x0369,0x036C,0x036F,0x0371,0x0374
12296
        dw 0x0377,0x037A,0x037C,0x037F,0x0382,0x0384,0x0387,0x038A
12297
        dw 0x038D,0x038F,0x0392,0x0395,0x0397,0x039A,0x039D,0x039F
12298
        dw 0x03A2,0x03A5,0x03A8,0x03AA,0x03AD,0x03B0,0x03B2,0x03B5
12299
        dw 0x03B8,0x03BB,0x03BD,0x03C0,0x03C3,0x03C5,0x03C8,0x03CB
12300
        dw 0x03CD,0x03D0,0x03D3,0x03D6,0x03D8,0x03DB,0x03DE,0x03E0
12301
        dw 0x03E3,0x03E6,0x03E8,0x03EB,0x03EE,0x03F1,0x03F3,0x03F6
12302
        dw 0x03F9,0x03FB,0x03FE,0x0401,0x0404,0x0406,0x0409,0x040C
12303
        dw 0x040E,0x0411,0x0414,0x0416,0x0419,0x041C,0x041F,0x0421
12304
        dw 0x0424,0x0427,0x0429,0x042C,0x042F,0x0431,0x0434,0x0437
12305
        dw 0x043A,0x043C,0x043F,0x0442,0x0444,0x0447,0x044A,0x044D
12306
        dw 0x044F,0x0452,0x0455,0x0457,0x045A,0x045D,0x045F,0x0462
12307
        dw 0x0465,0x0468,0x046A,0x046D,0x0470,0x0472,0x0475,0x0478
12308
        dw 0x047A,0x047D,0x0480,0x0483,0x0485,0x0488,0x048B,0x048D
12309
        dw 0x0490,0x0493,0x0496,0x0498,0x049B,0x049E,0x04A0,0x04A3
12310
        dw 0x04A6,0x04A8,0x04AB,0x04AE,0x04B1,0x04B3,0x04B6,0x04B9
12311
        dw 0x04BB,0x04BE,0x04C1,0x04C3,0x04C6,0x04C9,0x04CC,0x04CE
12312
        dw 0x04D1,0x04D4,0x04D6,0x04D9,0x04DC,0x04DF,0x04E1,0x04E4
12313
        dw 0x04E7,0x04E9,0x04EC,0x04EF,0x04F1,0x04F4,0x04F7,0x04FA
12314
        dw 0x04FC,0x04FF,0x0502,0x0504,0x0507,0x050A,0x050D,0x050F
12315
        dw 0x0512,0x0515,0x0517,0x051A,0x051D,0x051F,0x0522,0x0525
12316
        dw 0x0528,0x052A,0x052D,0x0530,0x0532,0x0535,0x0538,0x053A
12317
        dw 0x053D,0x0540,0x0543,0x0545,0x0548,0x054B,0x054D,0x0550
12318
        dw 0x0553,0x0556,0x0558,0x055B,0x055E,0x0560,0x0563,0x0566
12319
        dw 0x0568,0x056B,0x056E,0x0571,0x0573,0x0576,0x0579,0x057B
12320
        dw 0x057E,0x0581,0x0583,0x0586,0x0589,0x058C,0x058E,0x0591
12321
        dw 0x0594,0x0596,0x0599,0x059C,0x059F,0x05A1,0x05A4,0x05A7
12322
        dw 0x05A9,0x05AC,0x05AF,0x05B1,0x05B4,0x05B7,0x05BA,0x05BC
12323
        dw 0x05BF,0x05C2,0x05C4,0x05C7,0x05CA,0x05CC,0x05CF,0x05D2
12324
        dw 0x05D5,0x05D7,0x05DA,0x05DD,0x05DF,0x05E2,0x05E5,0x05E8
12325
        dw 0x05EA,0x05ED,0x05F0,0x05F2,0x05F5,0x05F8,0x05FA,0x05FD
12326
        dw 0x0600,0x0603,0x0605,0x0608,0x060B,0x060D,0x0610,0x0613
12327
        dw 0x0615,0x0618,0x061B,0x061E,0x0620,0x0623,0x0626,0x0628
12328
        dw 0x062B,0x062E,0x0631,0x0633,0x0636,0x0639,0x063B,0x063E
12329
        dw 0x0641,0x0643,0x0646,0x0649,0x064C,0x064E,0x0651,0x0654
12330
        dw 0x0656,0x0659,0x065C,0x065F,0x0661,0x0664,0x0667,0x0669
12331
        dw 0x066C,0x066F,0x0671,0x0674,0x0677,0x067A,0x067C,0x067F
12332
        dw 0x0682,0x0684,0x0687,0x068A,0x068C,0x068F,0x0692,0x0695
12333
        dw 0x0697,0x069A,0x069D,0x069F,0x06A2,0x06A5,0x06A8,0x06AA
12334
        dw 0x06AD,0x06B0,0x06B2,0x06B5,0x06B8,0x06BA,0x06BD,0x06C0
12335
        dw 0x06C3,0x06C5,0x06C8,0x06CB,0x06CD,0x06D0,0x06D3,0x06D5
12336
        dw 0x06D8,0x06DB,0x06DE,0x06E0,0x06E3,0x06E6,0x06E8,0x06EB
12337
        dw 0x06EE,0x06F1,0x06F3,0x06F6,0x06F9,0x06FB,0x06FE,0x0701
12338
        dw 0x0703,0x0706,0x0709,0x070C,0x070E,0x0711,0x0714,0x0716
12339
        dw 0x0719,0x071C,0x071E,0x0721,0x0724,0x0727,0x0729,0x072C
12340
        dw 0x072F,0x0731,0x0734,0x0737,0x073A,0x073C,0x073F,0x0742
12341
        dw 0x0744,0x0747,0x074A,0x074C,0x074F,0x0752,0x0755,0x0757
12342
        dw 0x075A,0x075D,0x075F,0x0762,0x0765,0x0767,0x076A,0x076D
12343
        dw 0x0770,0x0772,0x0775,0x0778,0x077A,0x077D,0x0780,0x0783
12344
        dw 0x0785,0x0788,0x078B,0x078D,0x0790,0x0793,0x0795,0x0798
12345
        dw 0x079B,0x079E,0x07A0,0x07A3,0x07A6,0x07A8,0x07AB,0x07AE
12346
        dw 0x07B1,0x07B3,0x07B6,0x07B9,0x07BB,0x07BE,0x07C1,0x07C3
12347
        dw 0x07C6,0x07C9,0x07CC,0x07CE,0x07D1,0x07D4,0x07D6,0x07D9
12348
        dw 0x07DC,0x07DE,0x07E1,0x07E4,0x07E7,0x07E9,0x07EC,0x07EF
12349
        dw 0x07F1,0x07F4,0x07F7,0x07FA,0x07FC,0x07FF,0x0802,0x0804
12350
        dw 0x0807,0x080A,0x080C,0x080F,0x0812,0x0815,0x0817,0x081A
12351
        dw 0x081D,0x081F,0x0822,0x0825,0x0827,0x082A,0x082D,0x0830
12352
        dw 0x0832,0x0835,0x0838,0x083A,0x083D,0x0840,0x0843,0x0845
12353
        dw 0x0848,0x084B,0x084D,0x0850,0x0853,0x0855,0x0858,0x085B
12354
        dw 0x085E,0x0860,0x0863,0x0866,0x0868,0x086B,0x086E,0x0870
12355
        dw 0x0873,0x0876,0x0879,0x087B,0x087E,0x0881,0x0883,0x0886
12356
        dw 0x0889,0x088C,0x088E,0x0891,0x0894,0x0896,0x0899,0x089C
12357
        dw 0x089E,0x08A1,0x08A4,0x08A7,0x08A9,0x08AC,0x08AF,0x08B1
12358
        dw 0x08B4,0x08B7,0x08B9,0x08BC,0x08BF,0x08C2,0x08C4,0x08C7
12359
        dw 0x08CA,0x08CC,0x08CF,0x08D2,0x08D5,0x08D7,0x08DA,0x08DD
12360
        dw 0x08DF,0x08E2,0x08E5,0x08E7,0x08EA,0x08ED,0x08F0,0x08F2
12361
        dw 0x08F5,0x08F8,0x08FA,0x08FD,0x0900,0x0903,0x0905,0x0908
12362
        dw 0x090B,0x090D,0x0910,0x0913,0x0915,0x0918,0x091B,0x091E
12363
        dw 0x0920,0x0923,0x0926,0x0928,0x092B,0x092E,0x0930,0x0933
12364
        dw 0x0936,0x0939,0x093B,0x093E,0x0941,0x0943,0x0946,0x0949
12365
        dw 0x094C,0x094E,0x0951,0x0954,0x0956,0x0959,0x095C,0x095E
12366
        dw 0x0961,0x0964,0x0967,0x0969,0x096C,0x096F,0x0971,0x0974
12367
        dw 0x0977,0x0979,0x097C,0x097F,0x0982,0x0984,0x0987,0x098A
12368
        dw 0x098C,0x098F,0x0992,0x0995,0x0997,0x099A,0x099D,0x099F
12369
        dw 0x09A2,0x09A5,0x09A7,0x09AA,0x09AD,0x09B0,0x09B2,0x09B5
12370
        dw 0x09B8,0x09BA,0x09BD,0x09C0,0x09C2,0x09C5,0x09C8,0x09CB
12371
        dw 0x09CD,0x09D0,0x09D3,0x09D5,0x09D8,0x09DB,0x09DE,0x09E0
12372
        dw 0x09E3,0x09E6,0x09E8,0x09EB,0x09EE,0x09F0,0x09F3,0x09F6
12373
        dw 0x09F9,0x09FB,0x09FE,0x0A01,0x0A03,0x0A06,0x0A09,0x0A0B
12374
        dw 0x0A0E,0x0A11,0x0A14,0x0A16,0x0A19,0x0A1C,0x0A1E,0x0A21
12375
        dw 0x0A24,0x0A27,0x0A29,0x0A2C,0x0A2F,0x0A31,0x0A34,0x0A37
12376
        dw 0x0A39,0x0A3C,0x0A3F,0x0A42,0x0A44,0x0A47,0x0A4A,0x0A4C
12377
        dw 0x0A4F,0x0A52,0x0A55,0x0A57,0x0A5A,0x0A5D,0x0A5F,0x0A62
12378
        dw 0x0A65,0x0A67,0x0A6A,0x0A6D,0x0A70,0x0A72,0x0A75,0x0A78
12379
        dw 0x0A7A,0x0A7D,0x0A80,0x0A82,0x0A85,0x0A88,0x0A8B,0x0A8D
12380
        dw 0x0A90,0x0A93,0x0A95,0x0A98,0x0A9B,0x0A9E,0x0AA0,0x0AA3
12381
        dw 0x0AA6,0x0AA8,0x0AAB,0x0AAE,0x0AB0,0x0AB3,0x0AB6,0x0AB9
12382
        dw 0x0ABB,0x0ABE,0x0AC1,0x0AC3,0x0AC6,0x0AC9,0x0ACB,0x0ACE  
69 savelij 12383
 
12384
                DEPHASE