Subversion Repositories ngs

Rev

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

Rev Author Line No. Line
69 savelij 1
 
36 savelij 2
;1720708
3
 
158 savelij 4
;LAST UPDATE: 28.05.2021 savelij
105 savelij 5
 
115 savelij 6
                include ../macros.a80
7
                include ../ports_ngs.a80
69 savelij 8
                include equ_ngs.a80
115 savelij 9
                include ../sdcomand.a80
158 savelij 10
                include version.a80
36 savelij 11
 
69 savelij 12
;GSRomBaseL equ 0X0000
13
;GSRomBaseH equ 0Xc000
36 savelij 14
 
69 savelij 15
;               ORG GSRomBaseL                  ;clear low ROM
16
;               DEFS 0X4000,0XFF
36 savelij 17
 
69 savelij 18
;               ORG GSRomBaseH                  ;clear high ROM
19
;               DEFS 0X4000,0XFF
36 savelij 20
 
69 savelij 21
                ORG GSRomBaseL
22
                DI
23
                JP INIT
36 savelij 24
 
25
;---patched
126 savelij 26
;               DEFB 0X0A                       ;LOW    (in BCD!)
27
;               DEFB 0X01                       ;HIGH   (in BCD!)
28
                DW VERS_BIN
36 savelij 29
;---
30
 
105 savelij 31
ROMCRC          DW 0XE428                       ;CRC from original rom, corrupted!?
36 savelij 32
 
69 savelij 33
                ORG GSRomBaseL+0X0030
34
                JP SGEN                         ;0X2030
36 savelij 35
 
69 savelij 36
                ORG GSRomBaseL+0X0038
36 savelij 37
 
69 savelij 38
INT8            EX AF,AF'
39
                PUSH DE
40
                LD E,A
41
                LD D,IXH
42
                LD A,(DE)
43
                INC D
44
                LD A,(DE)
45
                INC D
46
                LD A,(DE)
47
                INC D
48
                LD A,(DE)
49
                INC E
50
                JR Z,INT8_
51
                LD A,E
52
                POP DE
53
                EX AF,AF'
54
                EI
55
                RET
36 savelij 56
 
69 savelij 57
INT8_           JP QTDONE
36 savelij 58
 
69 savelij 59
                ORG GSRomBaseL+0X0066
60
NMILP           POP HL
61
                LD A,L
62
                OUT (ZXDATWR),A
63
NMILP2          IN A,(ZXSTAT)
64
                RLCA
65
                JR C,NMILP2
66
                LD A,H
67
                OUT (ZXDATWR),A
68
NMILP3          IN A,(ZXSTAT)
69
                RLCA
70
                JR C,NMILP3
71
                JP NMILP
36 savelij 72
 
69 savelij 73
                ORG GSRomBaseL+0X0080
74
                DB "This is improved ROM Version 1.04 Beta. "
75
                DB "Bugfixes by psb & Evgeny Muchkin, 2007.",0
36 savelij 76
 
69 savelij 77
                ORG GSRomBaseL+0X0100
78
                DB "General  Sound (tm)  ROM"
79
                DB "Copyright   1997 Stinger"
126 savelij 80
                DB "Version ",VERS_TXT,"            "
69 savelij 81
 
36 savelij 82
; LOW ROM INCLUDES
83
 
84
;INCLUDE "INIT_L.a80"
69 savelij 85
INIT            DI
86
                OUT (CLRCBIT),A
87
INIT_           XOR A
88
                OUT (ZXDATWR),A
75 savelij 89
;               LD L,A
90
;               LD H,A
91
;               LD BC,0X0004
92
;               LD SP,0X0008
93
;               JR INIT02
36 savelij 94
 
75 savelij 95
;INIT00         
96
                OUT (MPAG),A
97
;               LD SP,0XC000
98
;               LD C,0X04
99
;               DEC A
100
;INIT01         POP DE
101
;               ADD HL,DE
102
;               POP DE
103
;               ADD HL,DE
104
;               POP DE
105
;               ADD HL,DE
106
;               POP DE
107
;               ADD HL,DE
108
;INIT02         POP DE
109
;               ADD HL,DE
110
;               POP DE
111
;               ADD HL,DE
112
;               POP DE
113
;               ADD HL,DE
114
;               POP DE
115
;               ADD HL,DE
116
;               DJNZ INIT01
117
;               DEC C
118
;               JR NZ,INIT01
119
;               OR A
120
;               JR Z,INIT00
121
;               LD DE,(ROMCRC)
122
;               SBC HL,DE
123
;               LD HL,RAMPG
36 savelij 124
;---patched
75 savelij 125
;               LD A,2
126
;CREATE_LIST_PAGE
127
;               LD (HL),A
128
;               INC HL
129
;               INC A 
130
;               CP 0X40
131
;               JR NZ,CREATE_LIST_PAGE
132
;               LD (HL),1
133
;               INC HL
134
;               LD (HL),0
69 savelij 135
                LD HL,0X8000
136
                LD A,0X7F
137
                OUT (MPAG),A
138
                LD (HL),0XAA
139
                LD A,0X3F
140
                OUT (MPAG),A
141
                LD (HL),0X55
142
                LD A,0X7F
143
                OUT (MPAG),A
144
                LD A,(HL)
145
                CP 0XAA
112 savelij 146
                LD A,0X7E                       ;   4  NEOGS
69 savelij 147
                JR Z,CP_RAMPAGES
112 savelij 148
                LD A,0X3E                       ;   2  NEOGS
69 savelij 149
CP_RAMPAGES     LD (NUMPG),A
150
                OUT (ZXDATWR),A
75 savelij 151
                ADD A,2
152
                LD B,A
153
                LD HL,RAMPG
154
                LD A,2
155
CREATE_TABL     LD (HL),A
156
                INC HL
157
                INC A
158
                CP B
159
                JR C,CREATE_TABL
112 savelij 160
                XOR A
161
                OUT (MPAG),A
75 savelij 162
                LD (HL),1
163
                INC HL
112 savelij 164
                LD (HL),A
69 savelij 165
                LD SP,0X8000
166
                JP Patch5i3
36 savelij 167
 
112 savelij 168
SET_SIZE_MOD    LD A,E
169
                INC A
170
                LD (SIZE_MOD),A         ;    32 
171
                JP PLAYMD
172
 
173
SET7XOR         XOR A
174
                OUT (VOL1),A
175
                OUT (VOL2),A
176
                OUT (VOL3),A
177
                OUT (VOL4),A
178
                OUT (VOL5),A
179
                OUT (VOL6),A
180
                OUT (VOL7),A
181
                OUT (VOL8),A
182
                OUT (VOL8),A
183
                PUSH HL
184
                LD HL,0
185
                ADD HL,SP
186
                EXX
187
                LD A,0X10
188
                LD SP,0X7F00
189
                LD BC,0XA97E
190
                LD DE,0X2C77
191
SPEDI1          REPT 16
192
                PUSH DE
193
                PUSH BC
194
                ENDM
195
                DEC A
196
                JP NZ,SPEDI1
197
                LD HL,SPEDI2
198
                LD DE,0X7F00
199
                LD BC,ESPEDI2-SPEDI2
200
                LDIR
201
                EXX
202
                LD SP,HL
203
                POP HL
204
                LD A,L
205
                EXX
206
                LD L,A
207
                LD H,0
208
                LD BC,0X7B00
209
                ADD HL,HL
210
                ADD HL,HL
211
                ADD HL,BC
212
                EX (SP),HL
213
                EXX
214
                LD A,(SIZE_MOD)
215
                LD B,A
216
                LD C,0X80
217
                RET
218
 
219
SPEDI2          INC H
220
                JP NZ,0X7B00
221
                INC E
222
                LD A,(DE)
223
                LD H,0X80
224
                OUT (MPAG),A
225
                DEC B
226
                JP NZ,0X7B00
227
                JP END7XOR
228
ESPEDI2
229
 
230
END7XOR         EXX
231
                LD HL,0
232
                ADD HL,SP
233
                LD SP,0X8000
234
                LD DE,0X8080
235
                LD B,0X28
236
E7X1            REPT 16
237
                PUSH DE
238
                ENDM
239
                DJNZ E7X1
240
                LD SP,HL
241
                EXX
242
                JP NOCONV
243
 
69 savelij 244
                DUPL GSRomBaseL+0X269-$,0
112 savelij 245
;               ORG GSRomBaseL+0X269
36 savelij 246
 
247
;INCLUDE "COM_L.a80"
69 savelij 248
COMHZ           OUT (CLRCBIT),A
249
COMINT          LD SP,ISTACK            ;0X026B
250
COMINT_         IN A,(ZXSTAT)
251
                RRCA
252
                JR C,COMINT1
253
                LD A,(PROCESS)          ;0X0273
254
                OR A
255
                JR Z,COMINT_
256
                LD A,(BUSY)
257
                OR A
258
                JR NZ,COMINT_
259
                IN A,(ZXSTAT)
260
                RRCA
261
                JR C,COMINT1
262
                LD A,0XFF
263
                LD (INGEN),A
264
                PUSH DE
265
                CALL ENGINE
266
                POP DE
267
                XOR A
268
                LD (INGEN),A
269
                JP COMINT_
36 savelij 270
 
69 savelij 271
COMINT1         IN A,(ZXCMD)
272
                CP 0X20
273
                JR C,COMLOW
274
COMINT2         CP 0XF0
275
                JR C,COMHIGH
276
                SUB 0XD0
277
COMLOW          ADD A,A
278
                LD H,HIGH (COMTAB)
279
                LD L,A
280
                LD A,(HL)
281
                INC L
282
                LD H,(HL)
283
                LD L,A
284
                JP (HL)
36 savelij 285
 
69 savelij 286
COMHIGH         LD HL,COMINT_
287
                PUSH HL
288
                LD L,A
289
                LD H,HIGH (COMTABH)
290
                XOR A
291
                LD (CPAGE),A
292
                OUT (MPAG),A
293
                LD A,(HL)
294
                INC H
295
                LD H,(HL)
296
                LD L,A
297
                JP (HL)
36 savelij 298
 
69 savelij 299
WTDTL           IN A,(ZXSTAT)
300
                AND 0X81
301
                JR Z,WTDTL
302
                IN A,(ZXDATRD)
303
                JP P,COMINT1
304
                JP (IY)
36 savelij 305
 
69 savelij 306
WTDTG           IN A,(ZXSTAT)
307
                OR A
308
                JP P,WTDTG
309
                IN A,(ZXDATRD)
310
                JP (IY)
36 savelij 311
 
126 savelij 312
COMM5__         LD A,(IY+CHLPBP)
313
                CP -1
314
                JP Z,COMM5
315
                LD (IY+CHCURP),A
316
                LD L,(IY+CHLPBL)
317
                LD H,(IY+CHLPBH)
318
                LD (IY+CHCURL),L
319
                LD (IY+CHCURH),H
320
                JP COMM5
321
 
69 savelij 322
                align 256
323
COMTAB          DEFW COM00,COM01,COM02,COM03,COM04,COM05,COM06,COM07    ;0365,036C,0381,0390,039E,03A8,03B8,03D0
324
                DEFW COM08,COM09,COM0A,COM0B,COM0C,COM0D,COM0E,COM0F    ;0360,03F3,0407,041F,0444,046E,0497,04AE
325
                DEFW COM10,COM11,COM12,COM13,COM14,COM15,COM16,COM17    ;0511,0522,052E,0537,0545,0594,05FE,0617
112 savelij 326
                DEFW COM18,COM19,COM1A,COM1B,COM1C,COM1D,COM1E,COM1F    ;062A,063A,0642,064A,0650,0662,0360,0360
69 savelij 327
                DEFW COMF0,COMF1,COMF2,COMF3,COMF4,COMF5,COMF6,COMF7    ;066F,0360,0360,0679,067E,0683,069B,06B0
328
                DEFW COMF8,COMF9,COMFA,COMFB,COMFC,COMFD,COMFE,COMFF    ;0360,0360,06B9,0360,0360,0360,0360,0360
36 savelij 329
 
69 savelij 330
COMZ            OUT (CLRCBIT),A
331
                JP COMINT_
36 savelij 332
 
69 savelij 333
COM1E           EQU COMZ
334
COM1F           EQU COMZ
36 savelij 335
 
69 savelij 336
COMF1           EQU COMZ
337
COMF2           EQU COMZ
36 savelij 338
 
69 savelij 339
COMF8           EQU COMZ
340
COMF9           EQU COMZ
36 savelij 341
 
69 savelij 342
COMFB           EQU COMZ
343
COMFC           EQU COMZ
344
COMFD           EQU COMZ
345
COMFE           EQU COMZ
346
COMFF           EQU COMZ
36 savelij 347
 
348
;Reset flags
69 savelij 349
;뢠 䫠 Data bit  Command bit.
350
COM00           IN A,(ZXDATRD)
351
                OUT (CLRCBIT),A
352
                JP COMINT_
36 savelij 353
 
354
;Set silence (*)
69 savelij 355
;뢮     0X80.   ⠭ 設.
356
COM01           OUT (CLRCBIT),A
357
                LD A,0X80
358
                LD HL,DAC0
359
                LD (HL),A
360
                LD B,(HL)
361
                INC H
362
                LD (HL),A
363
                LD B,(HL)
364
                INC H
365
                LD (HL),A
366
                LD B,(HL)
367
                INC H
368
                LD (HL),A
369
                LD B,(HL)
370
                JP COMINT_
36 savelij 371
 
372
;Set low volume (*)
69 savelij 373
;⠭ ஬x     .
36 savelij 374
COM02   OUT (CLRCBIT),A
69 savelij 375
        LD A,0X3F
36 savelij 376
        OUT (VOL1),A
377
        OUT (VOL2),A
378
        OUT (VOL3),A
379
        OUT (VOL4),A
380
        JP COMINT_
381
 
382
;Set high volume (*)
69 savelij 383
;⠭ ஬     ᨬ.
36 savelij 384
COM03   OUT (CLRCBIT),A
385
        XOR A
386
        OUT (VOL1),A
387
        OUT (VOL2),A
388
        OUT (VOL3),A
389
        OUT (VOL4),A
390
        JP COMINT_
391
 
392
;Set 'E' 3bits (*)
69 savelij 393
;⠭  'E' ॣ GS 3    ᮮ⢥⢨   -
394
; 祭 (2        魮    ஬  
395
;0X00-0X03).
36 savelij 396
COM04   IN A,(ZXDATRD)
397
        OUT (CLRCBIT),A
69 savelij 398
        AND 0X07
36 savelij 399
        LD E,A
400
        JP COMINT_
401
 
402
;Out volume port (*)
69 savelij 403
;⠭ ஬ ,  ண ᮤন  'E',  㪠-
404
; 祭. ( ࠡ뢠  ᫮,   'E' 室 
405
;। 0X00-0X03)
36 savelij 406
COM05   IN A,(ZXDATRD)
407
        OUT (CLRCBIT),A
408
        LD B,A
409
        LD A,E
69 savelij 410
        CP 0X04
36 savelij 411
        JP NC,COMINT_
412
        ADD A,VOL1
413
        LD C,A
414
        OUT (C),B
415
        JP COMINT_
416
 
417
;Send to DAC (*)
69 savelij 418
;뢮    , 㪠뢠  'E'.
36 savelij 419
COM06   IN A,(ZXDATRD)
420
        OUT (CLRCBIT),A
421
        LD B,A
422
        LD A,E
69 savelij 423
        CP 0X04
36 savelij 424
        JP NC,COMINT_
69 savelij 425
        ADD A,HIGH (DAC0)
36 savelij 426
        LD H,A
69 savelij 427
        LD L,0X00
36 savelij 428
        LD (HL),B
429
        LD A,(HL)
430
        JP COMINT_
431
 
432
;Send to DAC and to volume port (*)
69 savelij 433
;뢮    ('E')   ஬.
36 savelij 434
COM07   IN A,(ZXDATRD)
435
        OUT (CLRCBIT),A
436
        LD B,A
437
        LD A,E
69 savelij 438
        CP 0X04
36 savelij 439
        JP NC,COMINT_
69 savelij 440
        ADD A,HIGH (DAC0)
36 savelij 441
        LD H,A
69 savelij 442
        LD L,0X00
36 savelij 443
        LD (HL),B
69 savelij 444
        SUB HIGH (DAC0)
36 savelij 445
        ADD A,VOL1
446
        LD C,A
447
        LD IY,COM07_1
448
        JP WTDTL
449
 
450
COM07_1 OUT (C),A
451
        LD A,(HL)
452
        JP COMINT_
453
 
69 savelij 454
;     0X00
36 savelij 455
;Reset flags
69 savelij 456
;뢠 䫠 Data bit  Command bit.
36 savelij 457
COM08   EQU COMZ
458
 
459
;Sets one's byte volume. (*)
69 savelij 460
;⠭ ஬ ,  ண   2  .
36 savelij 461
COM09   IN A,(ZXDATRD)
462
        OUT (CLRCBIT),A
463
        LD B,A
464
        RLCA
465
        RLCA
69 savelij 466
        AND 0X03
36 savelij 467
        ADD A,VOL1
468
        LD C,A
469
        LD A,B
69 savelij 470
        AND 0X3F
36 savelij 471
        OUT (C),A
472
        JP COMINT_
473
 
474
;DAC output (*)
69 savelij 475
;  ।⢥ 뢮  .
36 savelij 476
COM0A   IN A,(ZXDATRD)
477
        OUT (CLRCBIT),A
478
        LD B,A
479
        LD IY,COM0A_1
480
        JP WTDTL
481
 
69 savelij 482
COM0A_1 AND 0X03
483
        ADD A,HIGH (DAC0)
36 savelij 484
        LD H,A
69 savelij 485
        LD L,0X00
36 savelij 486
        LD (HL),B
487
        LD A,(HL)
488
        JP COMINT_
489
 
490
;DAC and Volume output (*)
69 savelij 491
;  ᫥ 뢮    ⠭ ஬.
36 savelij 492
COM0B   IN A,(ZXDATRD)
493
        OUT (CLRCBIT),A
494
        LD C,A
495
        LD IY,COM0B_1
496
        JP WTDTL
497
 
498
COM0B_1 LD B,A
499
        RLCA
500
        RLCA
69 savelij 501
        AND 0X03
502
        ADD A,HIGH (DAC0)
36 savelij 503
        LD H,A
69 savelij 504
        LD L,0X00
36 savelij 505
        LD (HL),C
69 savelij 506
        SUB HIGH (DAC0)
36 savelij 507
        ADD A,VOL1
508
        LD C,A
509
        LD A,B
69 savelij 510
        AND 0X3F
36 savelij 511
        OUT (C),A
512
        LD A,(HL)
513
        JP COMINT_
514
 
515
;Call SounDrive Covox mode (*)
69 savelij 516
;뢠 ० 媠쭮 ,  ᫥⥫쭮  -
517
;   .  室  ०  ⮬᪨  ᫥  뢮
518
;⢥⮣ .
36 savelij 519
COM0C   IN A,(ZXDATRD)
520
        OUT (CLRCBIT),A
521
        LD HL,DAC0
522
        LD (HL),A
523
        LD A,(HL)
524
        INC H
525
        LD IY,COM0C_1
526
        JP WTDTL
527
 
528
COM0C_1 LD (HL),A
529
        LD A,(HL)
530
        INC H
531
        LD IY,COM0C_2
532
        JP WTDTL
533
 
534
COM0C_2 LD (HL),A
535
        LD A,(HL)
536
        INC H
537
        LD IY,COM0C_3
538
        JP WTDTL
539
 
540
COM0C_3 LD (HL),A
541
        LD A,(HL)
542
        JP COMINT_
543
 
544
;Call Ultravox mode (*)
69 savelij 545
;뢠 ० 㭨ᠫ쭮 ,   ᫥⥫쭮    -
546
;   ,  ᫮  ॣ㫨 (1-4). ⫨稥 
547
;।饣 ਠ ᨭ஭  ந.  室 ⠪ ந-
548
; ⮬᪨   ᫥ .
36 savelij 549
COM0D   IN A,(ZXDATRD)
550
        OUT (CLRCBIT),A
69 savelij 551
        AND 0X0F
36 savelij 552
        JP Z,COMINT_
553
        RLCA
554
        RLCA
555
        RLCA
556
        RLCA
557
        LD B,A
558
        LD HL,DAC0
559
        LD IY,COM0D_3
560
        JP COM0D_2
561
 
562
COM0D_3 LD (HL),A
563
        LD A,(HL)
564
        INC H
565
        JP COM0D_2
566
 
567
COM0D_1 JP Z,COMINT_
568
        INC H
569
COM0D_2 SLA B
570
        JR NC,COM0D_1
571
        JP WTDTL
572
 
573
;Go to LPT Covox mode
69 savelij 574
;室  ० 쭮 ,       ॣ
575
;    (ࠢ  ) .  室  ⮣ ० -
576
; 0X00  ॣ .
36 savelij 577
COM0E   OUT (CLRCBIT),A
578
        LD HL,DAC0
579
        LD BC,DAC2
580
COM0E_1 IN A,(ZXDATRD)
581
        LD (HL),A
582
        LD (BC),A
583
        LD A,(HL)
584
        LD A,(BC)
585
        IN A,(ZXSTAT)
586
        RRCA
587
        JP NC,COM0E_1
588
        JP COMINT_
589
 
590
;Go in Profi Covox mode (*)
69 savelij 591
;室  ० 媠쭮 ,       ॣ
592
;    ,   ॣ     ண  .
593
;室  ⮣ ० -  0X4  ॣ ,  ⥬  ᫥-
594
;⥫쭮 0X0F  0XAA  ॣ .
36 savelij 595
COM0F   IN A,(ZXDATRD)
596
        OUT (CLRCBIT),A
597
        CP "Y"
598
        JP NZ,COMINT_
599
        LD HL,DAC0
600
        LD DE,DAC2
601
COM0F_1 IN A,(ZXDATRD)
602
        LD (HL),A
603
        IN A,(ZXCMD)
604
        LD (DE),A
605
        LD A,(HL)
606
        LD A,(DE)
607
        IN A,(ZXSTAT)
608
        OR A
609
        JP M,COM0F_1
69 savelij 610
        LD B,0X00
36 savelij 611
        OUT (CLRCBIT),A
612
COM0F_2 IN A,(ZXSTAT)
69 savelij 613
        AND 0X81
36 savelij 614
        JR NZ,COM0F_1
615
        DJNZ COM0F_2
616
COM0F_3 IN A,(ZXSTAT)
69 savelij 617
        AND 0X81
36 savelij 618
        JR Z,COM0F_3
69 savelij 619
        CP 0X80
36 savelij 620
        JR NZ,COM0F_1
621
        IN A,(ZXDATRD)
622
        CP "N"
623
        JP NZ,COM0F_1
624
COM0F_4 IN A,(ZXSTAT)
69 savelij 625
        AND 0X81
36 savelij 626
        JR Z,COM0F_4
69 savelij 627
        CP 0X01
36 savelij 628
        JR NZ,COM0F_1
629
        IN A,(ZXCMD)
69 savelij 630
        CP 0X0F
36 savelij 631
        JP NZ,COM0F_1
632
        OUT (CLRCBIT),A
633
COM0F_5 IN A,(ZXSTAT)
69 savelij 634
        AND 0X81
36 savelij 635
        JR Z,COM0F_5
69 savelij 636
        CP 0X01
36 savelij 637
        JR NZ,COM0F_1
638
        IN A,(ZXCMD)
69 savelij 639
        CP 0XAA
36 savelij 640
        JP NZ,COM0F_1
641
        OUT (CLRCBIT),A
642
        JP COMINT_
643
 
644
;Out to any port (*)
69 savelij 645
;뢮  o ७  GS (0X00-0X09).
36 savelij 646
COM10   IN A,(ZXDATRD)
647
        OUT (CLRCBIT),A
648
        LD C,A
649
        LD IY,COM10_1
650
        JP WTDTL
651
 
652
COM10_1 OUT (C),A
653
        JP COMINT_
654
 
655
;In from any port (*)
69 savelij 656
;⠥   ७  GS (0X00-0X09).
36 savelij 657
COM11   IN A,(ZXDATRD)
658
        LD C,A
659
        IN A,(C)
660
        OUT (ZXDATWR),A
661
        OUT (CLRCBIT),A
662
        JP COMINT_
663
 
664
;OUT to 0 port (*)
69 savelij 665
;뢮    䨣樨 GS (0X00).
36 savelij 666
COM12   IN A,(ZXDATRD)
667
        OUT (CLRCBIT),A
668
        OUT (MPAG),A
669
        JP COMINT_
670
 
671
;Jump to Address (*)
69 savelij 672
;। ࠢ   .
36 savelij 673
COM13   IN A,(ZXDATRD)
674
        OUT (CLRCBIT),A
675
        LD L,A
676
        LD IY,COM13_1
677
        JP WTDTL
678
 
679
COM13_1 LD H,A
680
        JP (HL)
681
 
682
;Load memory block (*)
69 savelij 683
;㧪    㪠    .
36 savelij 684
; 70+27*WAIT PER LOOP : 171K,123K,96K PER SECOND MAX
685
COM14   IN A,(ZXDATRD)
686
        OUT (CLRCBIT),A
687
        CPL
688
        LD C,A
689
        LD HL,WTDTL
690
        LD IY,COM14_1
691
        JP (HL)
692
 
693
COM14_1 CPL
694
        LD B,A
695
        INC BC
696
        LD IY,COM14_2
697
        JP (HL)
698
 
699
COM14_2 LD E,A
700
        LD IY,COM14_3
701
        JP (HL)
702
 
703
COM14_3 LD D,A
704
        LD A,B
705
        OR C
706
        JP Z,COMINT_
69 savelij 707
        LD IXL,B
708
        LD B,0X81
36 savelij 709
        BIT 0,C
710
        JR NZ,COM14_7
711
COM14_6 IN A,(ZXSTAT)
712
        AND B
713
        JR Z,COM14_6
714
        IN A,(ZXDATRD)
715
        JP P,COMINT1
716
        LD (DE),A
717
        INC DE
718
        INC C
719
COM14_7 IN A,(ZXSTAT)
720
        AND B
721
        JR Z,COM14_7
722
        IN A,(ZXDATRD)
723
        JP P,COMINT1
724
        LD (DE),A
725
        INC DE
726
        INC C
727
        JP NZ,COM14_6
69 savelij 728
        INC IXL
36 savelij 729
        JP NZ,COM14_6
730
        JP COMINT_
731
 
732
;Get memory block (*)
69 savelij 733
;㧪    㪠    .
734
COM15   IN A,(ZXDATRD)  ;訡- 뢠  
36 savelij 735
        CPL
736
        LD C,A
737
        LD IY,COM15_1
738
        JP WTDTG
739
 
740
COM15_1 CPL
741
        LD B,A
742
        INC BC
743
        LD IY,COM15_2
744
        JP WTDTG
745
 
746
COM15_2 LD E,A
747
        LD IY,COM15_3
748
        JP WTDTG
749
 
750
COM15_3 LD D,A
751
        LD A,B
752
        OR C
753
        JP Z,COMINT_
69 savelij 754
        LD IXL,B
755
        LD B,0X81
36 savelij 756
        LD A,(DE)
757
        INC DE
758
        OUT (ZXDATWR),A
759
        OUT (CLRCBIT),A
760
        LD HL,COM15_4
761
        INC C
762
        JP NZ,COM15_4
69 savelij 763
        INC IXL
36 savelij 764
        JP Z,COMINT_
765
COM15_4 IN A,(ZXSTAT)
766
        AND B
767
        JR Z,COM15_5
768
        JP P,COMINT1
769
        IN A,(ZXSTAT)
770
        AND B
771
        JR Z,COM15_5
772
        JP P,COMINT1
773
        IN A,(ZXSTAT)
774
        AND B
775
        JR Z,COM15_5
776
        JP P,COMINT1
777
        IN A,(ZXSTAT)
778
        AND B
779
        JR Z,COM15_5
780
        JP P,COMINT1
781
        JP (HL)
782
 
783
COM15_5 LD A,(DE)
784
        OUT (ZXDATWR),A
785
        INC DE
786
        INC C
787
        JP NZ,COM15_4
69 savelij 788
COM15_7 INC IXL
36 savelij 789
        JP NZ,COM15_4
790
        JP COMINT_
791
 
792
;Poke to address (*)
69 savelij 793
;뢠    㪠 .
36 savelij 794
COM16   IN A,(ZXDATRD)
795
        OUT (CLRCBIT),A
796
        LD B,A
797
        LD IY,COM16_1
798
        JP WTDTL
799
 
800
COM16_1 LD L,A
801
        LD IY,COM16_2
802
        JP WTDTL
803
 
804
COM16_2 LD H,A
805
        LD (HL),B
806
        JP COMINT_
807
 
808
;Peek from address (*)
69 savelij 809
;뢠    㪠 .
36 savelij 810
COM17   IN A,(ZXDATRD)
811
        LD L,A
812
        LD IY,COM17_1
813
        JP WTDTL
814
 
815
COM17_1 LD H,A
816
        LD A,(HL)
817
        OUT (ZXDATWR),A
818
        OUT (CLRCBIT),A
819
        JP COMINT_
820
 
821
;Load DE Pair (*)
69 savelij 822
;㦠 ॣ⮢  DE (⭮  GS,      -
823
; ன Main CPU) 㪠 ᫮.
36 savelij 824
COM18   IN A,(ZXDATRD)
825
        OUT (CLRCBIT),A
826
        LD E,A
827
        LD IY,COM18_1
828
        JP WTDTL
829
 
830
COM18_1 LD D,A
831
        JP COMINT_
832
 
833
;Poke to (DE) address (*)
69 savelij 834
;뢠    㪠  DE.
36 savelij 835
COM19   IN A,(ZXDATRD)
836
        OUT (CLRCBIT),A
837
        LD (DE),A
838
        JP COMINT_
839
 
840
;Peek from (DE) address (*)
69 savelij 841
;뢠 ᮤন , 㪠뢠  DE.
36 savelij 842
COM1A   LD A,(DE)
843
        OUT (ZXDATWR),A
844
        OUT (CLRCBIT),A
845
        JP COMINT_
846
 
847
;Increment of DE Pair (*)
69 savelij 848
;稢  DE  .
36 savelij 849
COM1B   OUT (CLRCBIT),A
850
        INC DE
851
        JP COMINT_
852
 
69 savelij 853
;Poke to (0X20XX) address (*)
854
;뢠   , 訩  ண ࠢ 0X20.
36 savelij 855
COM1C   IN A,(ZXDATRD)
856
        OUT (CLRCBIT),A
857
        LD L,A
858
        LD IY,COM1C_1
859
        JP WTDTL
860
 
69 savelij 861
COM1C_1 LD H,0X20
36 savelij 862
        LD (HL),A
863
        JP COMINT_
864
 
69 savelij 865
;Peek from (0X20XX) address (*)
866
;⠥   , 訩  ண ࠢ 0X20.
36 savelij 867
COM1D   IN A,(ZXDATRD)
868
        LD L,A
69 savelij 869
        LD H,0X20
36 savelij 870
        LD A,(HL)
871
        OUT (ZXDATWR),A
872
        OUT (CLRCBIT),A
873
        JP COMINT_
874
 
875
COMF0   LD A,(ERRCODE)  ; GET STATUS
876
        OUT (ZXDATWR),A
877
        OUT (CLRCBIT),A
878
        JP COMINT_
879
 
880
;Warm restart
69 savelij 881
;뢠  GS,   ய᪠  ⠯  ।  ⢠
882
;࠭    ஢,   祭 ᨫ쭮 ᪮  樠-
883
;樨.
36 savelij 884
COMF3   OUT (CLRCBIT),A
885
        JP INITVAR
886
 
887
;Cold restart
69 savelij 888
; १ GS  ᥬ ஢ઠ.  , JP 0X0000.
36 savelij 889
COMF4   OUT (CLRCBIT),A
69 savelij 890
        JP 0X0000
36 savelij 891
 
892
;Busy on
69 savelij 893
;⠭ 䫠   0XFF
36 savelij 894
COMF5   OUT (CLRCBIT),A
69 savelij 895
        LD A,IXH
896
        AND 0X80
36 savelij 897
        JP NZ,COMF5_1
69 savelij 898
        LD A,0XFF
36 savelij 899
        LD (BUSY),A
900
        JP COMINT_
901
 
69 savelij 902
COMF5_1 OR 0X40
903
        LD IXH,A
36 savelij 904
        JP COMINT_
905
 
906
;Busy off
69 savelij 907
;⠭ 䫠   0X00
36 savelij 908
COMF6   OUT (CLRCBIT),A
69 savelij 909
        LD A,IXH
910
        AND 0X80
36 savelij 911
        JP NZ,COMF6_1
912
        XOR A
913
        LD (BUSY),A
914
        JP COMINT_
915
 
69 savelij 916
COMF6_1 LD IXH,A
36 savelij 917
        JP COMINT_
918
 
69 savelij 919
;Get IXH Register (*)
920
; ᮤন ॣ IXH (GS)
921
;IXH   ࠡ⪥ 䫠 Busy.
922
COMF7   LD A,IXH
36 savelij 923
        OUT (ZXDATWR),A
924
        OUT (CLRCBIT),A
925
        JP COMINT_
926
 
927
;Out zero_to_zero
69 savelij 928
;뢮   㫥 (䨣樮)  GS.     ਮ⠭
929
;砭 모  ᫥饣 ⥭  .. .
36 savelij 930
COMFA   OUT (CLRCBIT),A
931
        XOR A
932
        LD (CPAGE),A
933
        OUT (MPAG),A
934
        JP TCOM
935
 
936
;INCLUDE "MEM_L.a80"
937
;MEMORY MOVEMENT MODULE - LOW PART
938
 
939
        align 256
940
 
69 savelij 941
LDITAB  REPT 0X100
942
        DB 0XED,0XA0
943
        ENDM
36 savelij 944
        RET C
945
        LD A,(SYSTEM)
946
        LD (CPAGE),A
947
        OUT (MPAG),A
948
        RET
949
 
950
MLDI    NEG
951
        ADD A,A
69 savelij 952
        LD IYL,A
953
        LD A,HIGH (LDITAB)
954
        ADC A,0X00
955
        LD IYH,A
36 savelij 956
        LD A,(SDPAGE)
957
        LD (CPAGE),A
958
        OUT (MPAG),A
959
        JP (IY)
960
 
961
TLDI    NEG
962
        ADD A,A
69 savelij 963
        LD IYL,A
964
        LD A,HIGH (LDITAB)
965
        ADC A,0X00
966
        LD IYH,A
36 savelij 967
        SCF
968
        JP (IY)
969
 
970
MLDD    NEG
971
        ADD A,A
69 savelij 972
        LD IYL,A
973
        LD A,HIGH (LDDTAB)
974
        ADC A,0X00
975
        LD IYH,A
36 savelij 976
        LD A,(SDPAGE)
977
        LD (CPAGE),A
978
        OUT (MPAG),A
979
        JP (IY)
980
 
981
        align 256
982
 
69 savelij 983
LDDTAB  REPT 0X100
984
        DB 0XED,0XA8
985
        ENDM
36 savelij 986
        LD A,(SYSTEM)
987
        LD (CPAGE),A
988
        OUT (MPAG),A
989
        RET
990
 
991
;INCLUDE "LOAD_L.a80"
992
 
993
; RET B,DE - OLD CURADR
69 savelij 994
;0X0C09
36 savelij 995
 
69 savelij 996
LOAD    LD B,0X81
36 savelij 997
        LD HL,(CURADR)
998
        LD A,(CURADR+2)
999
        SCF
1000
        RL H
1001
        RLA
1002
        RRC H
1003
        LD E,A
69 savelij 1004
        LD D,HIGH (RAMPG)
36 savelij 1005
LOAD_   LD A,(DE)
1006
        OR A
1007
        JP Z,LOADWT3
1008
        LD (CPAGE),A
1009
        OUT (MPAG),A
1010
        LD A,(NUMPG)
1011
        CP E
1012
        JR NZ,LOADWT
1013
        LD A,H
69 savelij 1014
        CP 0XC0
36 savelij 1015
        JR C,LOADWT2
1016
        JP LOADWT3
1017
 
1018
LOADWT  IN A,(ZXSTAT)
1019
        AND B
1020
        JR Z,LOADWT
1021
        RRCA
1022
        IN A,(ZXDATRD)
1023
        JR C,LOADCM
1024
        ADD A,C
1025
        LD (HL),A
1026
        INC L
1027
        JP NZ,LOADWT
1028
        INC H
1029
        JP NZ,LOADWT
1030
        INC E
69 savelij 1031
        LD HL,0X8000
36 savelij 1032
        JP LOAD_
1033
 
1034
LOADCM  IN A,(ZXCMD)
69 savelij 1035
        CP 0XF3
36 savelij 1036
        JP Z,COMF3
69 savelij 1037
        CP 0XF4
36 savelij 1038
        JP Z,COMF4
1039
        OUT (CLRCBIT),A
69 savelij 1040
        CP 0XD2
36 savelij 1041
        JP Z,LOAD3
1042
        JP LOADWT
1043
 
1044
LOADWT2 IN A,(ZXSTAT)
1045
        AND B
1046
        JR Z,LOADWT2
1047
        RRCA
1048
        IN A,(ZXDATRD)
1049
        JR C,LOADCM2
1050
        LD (HL),A
1051
        INC L
1052
        JP NZ,LOADWT2
1053
        INC H
1054
        BIT 6,H
1055
        JP Z,LOADWT2
1056
LOADWT3 IN A,(ZXSTAT)
1057
        AND B
1058
        JR Z,LOADWT3
1059
        RRCA
1060
        IN A,(ZXDATRD)
1061
        JP NC,LOADWT3
1062
        IN A,(ZXCMD)
69 savelij 1063
        CP 0XF3
36 savelij 1064
        JP Z,COMF3
69 savelij 1065
        CP 0XF4
36 savelij 1066
        JP Z,COMF4
1067
        OUT (CLRCBIT),A
69 savelij 1068
        CP 0XD2
36 savelij 1069
        JR Z,LOAD3
1070
        JP LOADWT3
1071
 
1072
LOADCM2 IN A,(ZXCMD)
69 savelij 1073
        CP 0XF3
36 savelij 1074
        JP Z,COMF3
69 savelij 1075
        CP 0XF4
36 savelij 1076
        JP Z,COMF4
1077
        OUT (CLRCBIT),A
69 savelij 1078
        CP 0XD2
36 savelij 1079
        JR Z,LOAD3
1080
        JP LOADWT2
1081
 
1082
LOAD3   LD A,E
1083
        RL H
1084
        SRL A
1085
        RR H
1086
        LD (CURADR),HL
1087
        LD (CURADR+2),A
1088
        LD (MEMBOT),HL
1089
        LD (MEMBOT+2),A
112 savelij 1090
        EX AF,AF'       ;LD E,A
36 savelij 1091
        XOR A
1092
        LD (CPAGE),A
1093
        OUT (MPAG),A
112 savelij 1094
        EX AF,AF'       ;LD A,E
36 savelij 1095
        RET
1096
 
1097
;INCLUDE "PLAY.a80"
69 savelij 1098
PLAYMD  LD A,(RAMPG)            ;0X0CC9
36 savelij 1099
        OUT (MPAG),A
1100
        LD IY,CHANS
1101
        LD DE,CHANLEN
69 savelij 1102
        LD B,0X04
36 savelij 1103
RDLP1  
1104
;---patched
1105
        CALL Patch4
1106
        NOP
1107
;---
69 savelij 1108
        LD (IY+CHCNTH),0X00
1109
        LD (IY+CHOLDV),0X80
1110
        LD (IY+CHSTAT),0X01
1111
        LD (IY+CHLPCNT),0X00
1112
        LD (IY+CHPATPS),0X00
1113
        LD (IY+CHTRMPS),0X00
1114
        LD (IY+CHVIBPS),0X00
1115
        LD (IY+CHVOL),0X40
1116
        LD (IY+CHMVOL),0X40
1117
        LD (IY+CHINS),0X00
1118
        LD (IY+CHSMP),0X00
1119
        LD (IY+CHPAN),0X80
1120
        LD (IY+CHEPAN),0X20
1121
        LD (IY+CHEVOL),0X40
1122
        LD (IY+CHFADVL),0XFF
1123
        LD (IY+CHFADVH),0XFF
36 savelij 1124
        ADD IY,DE
1125
        DJNZ RDLP1
69 savelij 1126
        LD IXL,0XFF
1127
        LD A,(0X8000+1080)      ;। ᨣ 
36 savelij 1128
        CP "M"
1129
        JR Z,TTY1
1130
        CP "4"
1131
        JR Z,TTY1
1132
        CP "F"
1133
        JR Z,TTY1
69 savelij 1134
        LD IXL,0X00
36 savelij 1135
        JP TTY0
69 savelij 1136
TTY1    LD A,(0X8000+1081)
36 savelij 1137
        CP "."
1138
        JR Z,TTY2
1139
        CP "L"
1140
        JR Z,TTY2
1141
        CP "!"
1142
        JR Z,TTY2
1143
        CP "C"
1144
        JR Z,TTY2
69 savelij 1145
        LD IXL,0X00
36 savelij 1146
        JP TTY0
69 savelij 1147
TTY2    LD A,(0X8000+1082)
36 savelij 1148
        CP "K"
1149
        JR Z,TTY0
1150
        CP "T"
1151
        JR Z,TTY0
1152
        CP "H"
1153
        JR Z,TTY0
69 savelij 1154
        LD IXL,0X00
1155
TTY0    LD A,IXL
36 savelij 1156
        LD (MODTP),A
69 savelij 1157
        LD HL,0X8000+952
36 savelij 1158
        OR A
1159
;---patched
69 savelij 1160
        LD DE,0X0000+1084
36 savelij 1161
        JR NZ,TTY10
69 savelij 1162
        LD DE,0X0000+600                ;ࠧ  䠩
1163
        LD HL,0X8000+472                ;ᬥ饭  ⠡ ୮
1164
TTY10   LD B,0X80               ;᪠஢ ⠡ ୮
36 savelij 1165
        SUB A
1166
FDF2    CP (HL)
1167
        JR NC,FDF
1168
        LD A,(HL)
1169
FDF     INC HL
1170
        DJNZ FDF2
1171
        INC A
69 savelij 1172
        LD (PATTS),A            ;⢮ ୮
36 savelij 1173
        LD L,A
1174
        LD H,B
1175
        ADD HL,HL
69 savelij 1176
        ADD HL,HL               ;HL=- ୮*4
36 savelij 1177
        LD A,H
1178
        LD H,L
1179
        LD L,B
1180
        ADD HL,DE
1181
        ADC A,B
69 savelij 1182
        DB 0XCB,0X34;SLI H
36 savelij 1183
        RLA
1184
        RRC H
1185
        LD E,A
1186
        LD (SMPS),HL
1187
        LD (SMPS+2),A
69 savelij 1188
        DUPL 3,0
36 savelij 1189
;---
69 savelij 1190
        LD A,IXL
36 savelij 1191
        OR A
69 savelij 1192
        LD BC,0X8000+950
36 savelij 1193
        JR NZ,TTT11
69 savelij 1194
        LD BC,0X8000+470
36 savelij 1195
TTT11   LD A,(BC)
1196
        DEC A
1197
        LD (MTSNGSZ),A
1198
        INC BC
1199
        LD A,(BC)
1200
        LD (MTSNGLP),A
69 savelij 1201
        LD IX,0X5400
1202
        LD IY,0X8000+20         ;砫 
36 savelij 1203
        LD B,31
1204
        LD C,E
1205
RDLP3   PUSH BC
1206
        LD (IX+SMPBEG),C
1207
        LD (IX+SMPBEG+1),L
1208
        LD (IX+SMPBEG+2),H
1209
        LD A,(IY+28)
1210
        OR A
1211
        JR NZ,LPL
1212
        LD A,(IY+29)
69 savelij 1213
        CP 0X02
36 savelij 1214
        JP C,NLPL
1215
LPL     PUSH HL
1216
        PUSH BC
1217
        LD L,(IY+27)
1218
        LD H,(IY+26)
1219
        LD E,(IY+23)
1220
        LD D,(IY+22)
1221
        SBC HL,DE
1222
        POP BC
1223
        POP HL
1224
        JP NC,NLPL
1225
        PUSH HL
1226
        PUSH BC
1227
        LD E,(IY+27)
1228
        LD D,(IY+26)
1229
        EX DE,HL
1230
        ADD HL,HL
1231
        EX DE,HL
1232
        LD B,0
1233
        RL B
1234
        SRL C
1235
        RL H
1236
        RRC H
1237
        ADD HL,DE
1238
        LD A,C
1239
        ADC A,B
1240
        LD C,A
69 savelij 1241
        DB 0XCB,0X34;SLI H
36 savelij 1242
        RL C
1243
        RRC H
1244
        LD (IX+SMPLPB),C
1245
        LD (IX+SMPLPB+1),L
1246
        LD (IX+SMPLPB+2),H
1247
        SRL C
1248
        RL H
1249
        RRC H
1250
        LD E,(IY+29)
1251
        LD D,(IY+28)
1252
        EX DE,HL
1253
        ADD HL,HL
1254
        EX DE,HL
1255
        LD B,0
1256
        RL B
1257
        ADD HL,DE
1258
        LD A,C
1259
        ADC A,B
1260
        LD C,A
69 savelij 1261
        DB 0XCB,0X34;SLI H
36 savelij 1262
        RL C
1263
        RRC H
1264
        LD (IX+SMPLPE),C
1265
        LD (IX+SMPLPE+1),L
1266
        LD (IX+SMPLPE+2),H
1267
        POP BC
1268
        POP HL
1269
        LD E,(IY+23)
1270
        LD D,(IY+22)
1271
        EX DE,HL
1272
        ADD HL,HL
1273
        EX DE,HL
69 savelij 1274
        LD B,0X00
36 savelij 1275
        RL B
1276
        SRL C
1277
        RL H
1278
        RRC H
1279
        ADD HL,DE
1280
        LD A,C
1281
        ADC A,B
1282
        LD C,A
69 savelij 1283
        DB 0XCB,0X34;SLI H
36 savelij 1284
        RL C
1285
        RRC H
1286
        JP LPL2
1287
 
1288
        LD A,(IX+SMPLPE)
1289
        CP C
1290
        JR C,LPL2
1291
        JR NZ,LPL1
1292
        LD A,(IX+SMPLPE+2)
1293
        CP H
1294
        JR C,LPL2
1295
        JR NZ,LPL1
1296
        LD A,(IX+SMPLPE+1)
1297
        CP L
1298
        JR C,LPL2
1299
LPL1    LD A,(IX+SMPEND)
1300
        LD (IX+SMPLPE),A
1301
        LD A,(IX+SMPEND+1)
1302
        LD (IX+SMPLPE+1),A
1303
        LD A,(IX+SMPEND+2)
1304
        LD (IX+SMPLPE+2),A
1305
        JP LPCNT
1306
 
1307
LPL2    LD A,(IX+SMPLPE)
1308
        LD (IX+SMPEND),A
1309
        LD A,(IX+SMPLPE+1)
1310
        LD (IX+SMPEND+1),A
1311
        LD A,(IX+SMPLPE+2)
1312
        LD (IX+SMPEND+2),A
1313
        JP LPCNT
1314
 
69 savelij 1315
NLPL    LD (IX+SMPLPB),0XFF
36 savelij 1316
        LD E,(IY+23)
1317
        LD D,(IY+22)
1318
        EX DE,HL
1319
        ADD HL,HL
1320
        EX DE,HL
69 savelij 1321
        LD B,0X00
36 savelij 1322
        RL B
1323
        SRL C
1324
        RL H
1325
        RRC H
1326
        ADD HL,DE
1327
        LD A,C
1328
        ADC A,B
1329
        LD C,A
69 savelij 1330
        DB 0XCB,0X34;SLI H
36 savelij 1331
        RL C
1332
        RRC H
1333
RDLP2   LD (IX+SMPEND+1),L
1334
        LD (IX+SMPEND+2),H
1335
        LD (IX+SMPEND),C
1336
LPCNT   LD A,(IY+24)
1337
        ADD A,A
1338
        LD (IX+SMPFT),A
1339
        LD A,(IY+25)
1340
        LD (IX+SMPVOL),A
69 savelij 1341
        LD DE,0X0010
36 savelij 1342
        ADD IX,DE
1343
        LD DE,30
1344
        ADD IY,DE
1345
        LD A,C
1346
        POP BC
1347
        LD C,A
1348
        DEC B
1349
        JP NZ,RDLP3
1350
        LD HL,CONVERT
1351
        LD A,(HL)
1352
        OR A
1353
        JR NZ,NOCONV
69 savelij 1354
        LD (HL),0XFF
36 savelij 1355
        LD HL,(SMPS)
1356
        LD A,(SMPS+2)
1357
        LD E,A
69 savelij 1358
        LD D,HIGH (RAMPG)
36 savelij 1359
        LD A,(NUMPG)
1360
        SUB E
1361
        LD B,A
1362
SMPMD2  LD A,(DE)
1363
        OUT (MPAG),A
112 savelij 1364
                CALL SET7XOR    ;  MOD 
1365
                JR SMPMD4
1366
 
1367
;SMPMD1  LD A,(HL)              ;砫 ADD A,0X80
1368
;        ADD A,0X80
1369
;        LD (HL),A
1370
;        INC L
1371
;        JP NZ,SMPMD1
1372
;        INC H
1373
;        JP NZ,SMPMD1
1374
;        LD H,0X80
1375
;        INC E
1376
;        DJNZ SMPMD2
1377
;        LD A,(DE)
1378
;        OUT (MPAG),A
1379
;        OR A
1380
;        JR Z,SMPMD4
1381
;SMPMD3  LD A,(HL)
1382
;        ADD A,0X80
1383
;        LD (HL),A
1384
;        INC L
1385
;        JP NZ,SMPMD3
1386
;        INC H
1387
;        BIT 6,H
1388
;        JP Z,SMPMD3
1389
 
1390
                DUPL 0XF20-$,0XFF
36 savelij 1391
SMPMD4
1392
NOCONV  XOR A
1393
        LD (CPAGE),A
1394
        OUT (MPAG),A
1395
        RET
1396
 
1397
INITPAT LD A,(MTSNGPS)
1398
        LD E,A
1399
        LD D,0
1400
        LD A,(MODTP)
1401
        INC A
69 savelij 1402
        LD HL,0X8000+952
36 savelij 1403
        JR Z,TTT13
69 savelij 1404
        LD HL,0X8000+472
36 savelij 1405
TTT13   ADD HL,DE
1406
        LD A,(RAMPG)
1407
        OUT (MPAG),A
1408
;---patched
1409
        JP Patch11
1410
;---
1411
        LD E,D
1412
        LD D,A
1413
        LD A,(MODTP)
1414
        INC A
69 savelij 1415
        LD HL,0X0000+1084
36 savelij 1416
        JR Z,TTT15
69 savelij 1417
        LD HL,0X0000+600
36 savelij 1418
TTT15   XOR A
1419
        LD (CPAGE),A
1420
        OUT (MPAG),A
1421
        ADD HL,DE
69 savelij 1422
        LD DE,0X5000
1423
        LD BC,0X400
36 savelij 1424
        CALL LDMEM
1425
        XOR A
1426
        OUT (MPAG),A
1427
        RET
1428
 
1429
;INCLUDE "QUANTUM.a80"
1430
 
1431
;**************************************************************
1432
;* QUANTUM PROCEDURE                                          *
1433
;**************************************************************
1434
 
1435
QUANTUM LD A,(FXCHNS)
1436
        CPL
1437
        LD C,A
1438
        LD A,(GSCHNS)
1439
        AND C
1440
        LD C,A
1441
        LD IY,CHANS     ;CHANNELS
1442
        LD A,(MTSTAT)
69 savelij 1443
        AND 0XC0
36 savelij 1444
        JR NZ,L221
1445
L204    LD A,C
1446
        AND (IY+CHRDR)
1447
        JR Z,L205
1448
        BIT 7,(IY+CHSTAT)
1449
        JR Z,L205
1450
        PUSH BC
1451
        CALL GEN
1452
        POP BC
69 savelij 1453
L205    LD A,IYL
1454
        ADD A,0X40
1455
        LD IYL,A
36 savelij 1456
        JP NC,L204
1457
        JP L221
1458
 
1459
L221    XOR A
1460
        LD (CPAGE),A
1461
        OUT (MPAG),A
1462
        LD HL,VOLRQTB
1463
        LD A,(QTFREE)
69 savelij 1464
        ADD A,LOW (VOLTAB)
36 savelij 1465
        LD E,A
69 savelij 1466
        LD D,HIGH (VOLTAB)
36 savelij 1467
        LDI
1468
        LDI
1469
        LDI
1470
        LDI
1471
        LD HL,(QTFREE)
1472
        LD B,L
1473
        INC L
1474
        PUSH BC
1475
        PUSH HL
1476
        LD A,(CHANNEL)
69 savelij 1477
        AND 0X0F
36 savelij 1478
        LD HL,INTTB
1479
        ADD A,A
1480
        ADD A,L
1481
        LD L,A
1482
        LD A,H
69 savelij 1483
        ADC A,0X00
36 savelij 1484
        LD H,A
1485
        LD C,(HL)
1486
        INC HL
1487
        LD B,(HL)
1488
        LD A,(CHANNEL)
69 savelij 1489
        AND 0X0F
36 savelij 1490
        LD HL,INTOFF
1491
        ADD A,L
1492
        LD L,A
1493
        LD A,H
69 savelij 1494
        ADC A,0X00
36 savelij 1495
        LD H,A
1496
        LD A,(QTFREE)
69 savelij 1497
        ADD A,0X60
36 savelij 1498
        ADD A,(HL)
1499
        POP HL
1500
        LD (HL),A
1501
        INC L
1502
        LD (HL),C
1503
        INC L
1504
        LD (HL),B
1505
        POP BC
1506
        INC L
1507
        RES 5,L
1508
        LD (QTFREE),HL
1509
        LD L,B
1510
        LD A,(SGENOFF)
1511
        LD (HL),A
1512
        LD A,(PLAYING)
1513
        OR A
1514
        JP NZ,L224
1515
        LD (QTBUSY),HL
1516
        CALL QTPLAY
1517
L224    LD A,(SGENOFF)
1518
        NEG
1519
        LD C,A
1520
        LD B,0
1521
        LD A,(MTSTAT)
69 savelij 1522
        AND 0XC0
36 savelij 1523
        RET NZ
1524
        LD HL,(TCKLEFT)
1525
        OR A
1526
        SBC HL,BC
1527
        JR Z,EFXINT
1528
        LD (TCKLEFT),HL
1529
        RET
1530
 
1531
EFXINT  LD A,(MODULE)
1532
        OR A
1533
        RET Z
1534
        LD HL,(TICKLEN)
1535
        LD (TCKLEFT),HL
1536
        XOR A
1537
        LD (CPAGE),A
1538
        OUT (MPAG),A
1539
        LD IY,CHANS
69 savelij 1540
        LD B,0X04
36 savelij 1541
        LD A,(MTCOUNT)
1542
        INC A
1543
        LD (MTCOUNT),A
1544
        LD HL,MTSPEED
1545
        CP (HL)
1546
        JR C,EFXNONT    ;NO NEW NOTE
1547
        XOR A
1548
        LD (MTCOUNT),A
1549
        LD A,(MTPDT2)
1550
        OR A
1551
        JR Z,EFXGTNT    ;GET NEW NOTE
1552
        CALL EFXNONT
1553
        JP EFXSKIP
1554
 
1555
EFXNONT LD IY,CHANS
69 savelij 1556
        LD B,0X04
36 savelij 1557
EFXNON1 PUSH BC
1558
        LD A,(IY+CHCOM)
1559
        OR (IY+CHPARM)
1560
        JR NZ,EFXNON2
1561
        CALL FXNOP
1562
        JP EFXNON3
1563
 
1564
EFXNON2 CALL FXCHK_
1565
EFXNON3 LD BC,CHANLEN
1566
        ADD IY,BC
1567
        POP BC
1568
        DJNZ EFXNON1
1569
        RET
1570
 
1571
EFXNOP  LD L,(IY+CHPERL)        ;;not used!
1572
        LD H,(IY+CHPERL)        ;;bug!
1573
        CALL EFXCNV
1574
        LD (IY+CHFRQL),L
1575
        LD (IY+CHFRQH),H
1576
        RET
1577
 
1578
EFXGTNT
1579
;LD IY,CHANS
1580
;---patched
1581
        JP Patch3
69 savelij 1582
        DB 0X46
36 savelij 1583
;---
1584
        XOR A
1585
        LD (CPAGE),A
1586
        OUT (MPAG),A
1587
        LD (CURCHN),A
1588
COMM1   XOR A
1589
        LD (CPAGE),A
1590
        OUT (MPAG),A
1591
        CALL GETROWS
1592
        LD (IY+CHCOM),B
1593
        LD (IY+CHPARM),C
1594
        LD A,E
1595
        OR A
1596
        JR Z,COMM2
1597
        LD (IY+CHINS),E
1598
        PUSH DE
1599
        PUSH BC
1600
        CALL EFXNEWI
1601
        POP BC
1602
        POP DE
1603
COMM2   LD A,D
69 savelij 1604
        CP 0X7F
36 savelij 1605
        JP Z,COMM5
1606
        LD A,B
69 savelij 1607
        CP 0X03
36 savelij 1608
        JP Z,COMM4
69 savelij 1609
        CP 0X05
36 savelij 1610
        JP Z,COMM4
69 savelij 1611
        CP 0X0E
36 savelij 1612
        JR NZ,COMM3
1613
        LD A,C
69 savelij 1614
        AND 0XF0
1615
        CP 0X50
36 savelij 1616
        JR Z,COMM5_
1617
        LD (IY+CHNOTE),D
1618
        LD (IY+CHREAL),D
69 savelij 1619
        CP 0XD0
36 savelij 1620
        JR Z,COMM3__
1621
        JP COMM3
1622
 
1623
COMM5_  LD A,C
69 savelij 1624
        AND 0X0F
36 savelij 1625
        SLA A
1626
        LD (IY+CHFINE),A
1627
COMM3   LD (IY+CHNOTE),D
1628
        LD (IY+CHREAL),D
1629
        CALL GETSMP
1630
COMM3__ LD E,(IY+CHNOTE)
1631
        CALL GETPER
1632
        LD (IY+CHPERL),L
1633
        LD (IY+CHPERH),H
1634
        LD E,(IY+CHNOTE)
1635
        CALL GETFRQ
1636
        LD (IY+CHFRQL),L
1637
        LD (IY+CHFRQH),H
1638
        LD A,(IY+CHCOM)
69 savelij 1639
        CP 0X09
36 savelij 1640
        JP NZ,COMM5
1641
        LD A,(IY+CHPARM)
1642
        OR A
1643
        JR NZ,FX9_
1644
        LD A,(IY+CHOFFST)
1645
FX9_    LD (IY+CHOFFST),A
1646
        LD H,A
69 savelij 1647
        LD L,0X00
36 savelij 1648
        XOR A
1649
        ADC A,A
1650
        EX DE,HL
1651
        LD L,(IY+CHCURL)
1652
        LD H,(IY+CHCURH)
1653
        LD B,(IY+CHCURP)
1654
        RL H
1655
        SRL B
1656
        RR H
1657
        ADD HL,DE
1658
        ADC A,B
69 savelij 1659
        DB 0XCB,0X34;SLI H
36 savelij 1660
        RLA
1661
        RRC H
1662
        LD (IY+CHCURL),L
1663
        LD (IY+CHCURH),H
1664
        LD (IY+CHCURP),A
1665
        CP (IY+CHENDP)
1666
        JP C,COMM5
1667
        JR NZ,COMM3_
1668
        LD A,H
1669
        CP (IY+CHENDH)
1670
        JP C,COMM5
1671
        JR NZ,COMM3_
1672
        LD A,L
1673
        CP (IY+CHENDL)
1674
        JP C,COMM5
126 savelij 1675
COMM3_  RES 7,(IY+CHSTAT)
1676
        JP COMM5__
36 savelij 1677
 
1678
COMM4   LD (IY+CHWNT),D
1679
COMM5   XOR A
1680
        LD (CPAGE),A
1681
        OUT (MPAG),A
1682
        CALL FXCHK
1683
COMM6   LD BC,CHANLEN
1684
        ADD IY,BC
1685
        LD A,(CURCHN)
1686
        INC A
1687
        LD (CURCHN),A
69 savelij 1688
        CP 0X04
36 savelij 1689
        JP NZ,COMM1
1690
EFXSKIP LD HL,MTPATPS
1691
        INC (HL)
1692
        LD A,(MTPDT)
1693
        OR A
1694
        JR Z,EFXSKP2
1695
        LD (MTPDT2),A
1696
        XOR A
1697
        LD (MTPDT),A
1698
EFXSKP2 LD A,(MTPDT2)
1699
        OR A
1700
        JR Z,EFXSKP3
1701
        DEC A
1702
        LD (MTPDT2),A
1703
        JR Z,EFXSKP3
1704
        DEC (HL)
1705
EFXSKP3 LD A,(MTBRKFL)
1706
        OR A
1707
        JR Z,EFXSKP4
1708
        LD A,(MTBRKPS)
1709
        LD (HL),A
1710
        XOR A
1711
        LD (MTBRKPS),A
1712
        LD (MTBRKFL),A
1713
        JP EFXSKP5
1714
 
1715
EFXSKP4 LD A,(HL)
1716
        OR A
1717
        JR NZ,EFXSKP5
1718
        LD A,(MTPDT2)
1719
        OR A
1720
        JR Z,EFXSKP6
1721
EFXSKP5 LD A,(MTROWS)
1722
        CP (HL)
1723
        JR NC,EFXSKPX
1724
EFXSKP6 LD A,(MTBRKPS)
1725
        LD (MTPATPS),A
1726
        XOR A
1727
        LD (MTBRKPS),A
1728
        LD (MTJMPFL),A
1729
        LD HL,MTSNGPS
1730
        INC (HL)
1731
        JR Z,EFXSKP7
1732
        LD A,(MTSNGSZ)
1733
        CP (HL)
1734
        JP NC,INITPAT
1735
EFXSKP7 LD A,(MTSNGSZ)
1736
        LD HL,MTSNGLP
1737
        CP (HL)
69 savelij 1738
        LD A,0X00
36 savelij 1739
        JR C,EFXSKP8
1740
        LD A,(HL)
1741
EFXSKP8 LD (MTSNGPS),A
1742
 
1743
        LD A,6
69 savelij 1744
        DUPL 3,0        ;LD (MTSPEED),A
36 savelij 1745
        LD HL,750
69 savelij 1746
        DUPL 3,0        ;LD (TICKLEN),HL
1747
        DUPL 3,0        ;LD (TCKLEFT),HL
36 savelij 1748
        ;CALL STOPMOD 
1749
 
1750
        XOR A
1751
        LD (MTBRKPS),A
1752
        LD (MTJMPFL),A
1753
        LD (MTBRKFL),A
1754
        LD (MTPDT),A
1755
        LD (MTPDT2),A
1756
        JP INITPAT
1757
 
1758
EFXSKPX LD A,(MTJMPFL)
1759
        OR A
1760
        JP NZ,EFXSKP6
1761
        RET
1762
 
1763
GETSMP  SET 7,(IY+CHSTAT)
1764
        LD A,(IY+CHINS)
1765
        OR A
1766
        JR Z,GETSMP2
1767
        DEC A
1768
        ADD A,A
1769
        ADD A,A
1770
        ADD A,A
1771
        ADD A,A
1772
        LD E,A
69 savelij 1773
        LD A,0X54
1774
        ADC A,0X00
36 savelij 1775
        LD D,A
1776
        LD A,(DE)
1777
        LD (IY+CHCURP),A
1778
        INC DE
1779
        LD A,(DE)
1780
        LD (IY+CHCURL),A
1781
        INC DE
1782
        LD A,(DE)
1783
        LD (IY+CHCURH),A
1784
        INC (IY+CHCURL)
1785
        CALL Z,GETSMP3
1786
        INC (IY+CHCURL)
1787
        CALL Z,GETSMP3
1788
        INC DE
1789
        LD A,(DE)
1790
        LD (IY+CHENDP),A
1791
        INC DE
1792
        LD A,(DE)
1793
        LD (IY+CHENDL),A
1794
        INC DE
1795
        LD A,(DE)
1796
        LD (IY+CHENDH),A
1797
        INC DE
1798
        INC DE
1799
        INC DE
1800
        LD A,(DE)
1801
        LD (IY+CHLPBP),A
1802
        INC DE
1803
        LD A,(DE)
1804
        LD (IY+CHLPBL),A
1805
        INC DE
1806
        LD A,(DE)
1807
        LD (IY+CHLPBH),A
1808
        INC DE
1809
        LD A,(DE)
1810
        LD (IY+CHLPEP),A
1811
        INC DE
1812
        LD A,(DE)
1813
        LD (IY+CHLPEL),A
1814
        INC DE
1815
        LD A,(DE)
1816
        LD (IY+CHLPEH),A
69 savelij 1817
        LD (IY+CHCNTL),0X00
1818
        LD (IY+CHCNTH),0X07
36 savelij 1819
        LD A,(IY+CHCURP)
1820
        CP (IY+CHENDP)
1821
        RET C
1822
        JP NZ,GETSMP2
1823
        LD A,(IY+CHCURH)
1824
        CP (IY+CHENDH)
1825
        RET C
1826
        JP NZ,GETSMP2
1827
        LD A,(IY+CHCURL)
1828
        CP (IY+CHENDL)
1829
        RET C
1830
GETSMP2 RES 7,(IY+CHSTAT)
1831
        RET
1832
GETSMP3 INC (IY+CHCURH)
1833
        RET NZ
69 savelij 1834
        LD (IY+CHCURH),0X80
36 savelij 1835
        INC (IY+CHCURP)
1836
        RET
1837
 
1838
EFXNEWI LD A,(IY+CHINS)
1839
        DEC A
1840
        ADD A,A
1841
        ADD A,A
1842
        ADD A,A
1843
        ADD A,A
1844
        LD E,A
69 savelij 1845
        LD A,0X54
1846
        ADC A,0X00
36 savelij 1847
        LD D,A
1848
        INC DE
1849
        INC DE
1850
        INC DE
1851
        INC DE
1852
        INC DE
1853
        INC DE
1854
        LD A,(DE)
1855
        LD (IY+CHFINE),A
1856
        INC DE
1857
        LD A,(DE)
69 savelij 1858
        CP 0X40
36 savelij 1859
        JR C,GETSMP1
69 savelij 1860
        LD A,0X40
36 savelij 1861
GETSMP1 LD (IY+CHVOL),A
1862
        CP (IY+CHMVOL)
1863
        LD (IY+CHMVOL),A
1864
        RET Z
1865
        SET 0,(IY+CHSTAT)
1866
        RET
1867
 
1868
GETROWS LD A,(MTPATPS)
69 savelij 1869
        AND 0X3F
36 savelij 1870
        ADD A,A
1871
        ADD A,A
1872
        LD L,A
69 savelij 1873
        LD H,0X00
36 savelij 1874
        ADD HL,HL
1875
        ADD HL,HL
1876
        LD A,(CURCHN)
1877
        ADD A,A
1878
        ADD A,A
1879
        ADD A,L
1880
        LD L,A
1881
        LD A,H
69 savelij 1882
        ADC A,0X50
36 savelij 1883
        LD H,A
1884
        LD A,(HL)
69 savelij 1885
        AND 0X10
36 savelij 1886
        PUSH AF
1887
        LD A,(HL)
69 savelij 1888
        AND 0X0F
36 savelij 1889
        LD D,A
1890
        INC HL
1891
        LD E,(HL)
1892
        OR E
69 savelij 1893
        LD A,0X7F
36 savelij 1894
        JR Z,GETRWS2
1895
        PUSH HL
1896
        CALL NOTEID
1897
        POP HL
1898
GETRWS2 INC HL
1899
        POP BC
1900
        LD D,A
1901
        LD A,(HL)
69 savelij 1902
        AND 0XF0
36 savelij 1903
        RRCA
1904
        RRCA
1905
        RRCA
1906
        RRCA
1907
        OR B
1908
        LD E,A
1909
        LD A,(HL)
69 savelij 1910
        AND 0X0F
36 savelij 1911
        LD B,A
1912
        INC HL
1913
        LD C,(HL)
1914
        RET
1915
 
1916
;INCLUDE "INTTST.a80"
1917
;***********************************************************
1918
;* INTERRUPT HANDLING PROCEDURES                           *
1919
;***********************************************************
1920
 
1921
        align 256
1922
 
1923
INTZ    RET
1924
 
1925
INT0    EX AF,AF'
1926
        INC A
1927
        JR Z,INT0_
1928
        EX AF,AF'
1929
        EI
1930
        RET
69 savelij 1931
        DUPL 11,0
36 savelij 1932
        RET
1933
 
1934
INT0_   PUSH DE
1935
        JP QTDONE
1936
 
1937
INT1    EX AF,AF'
1938
        PUSH DE
1939
        LD E,A
69 savelij 1940
        LD D,IXH
36 savelij 1941
        LD A,(DE)
1942
        INC E
1943
        JR Z,INT1_
1944
        LD A,E
1945
        POP DE
1946
        EX AF,AF'
1947
        EI
1948
        RET
69 savelij 1949
        DUPL 4,0
36 savelij 1950
        RET
1951
 
1952
        PUSH DE
1953
INT1_   JP QTDONE
1954
 
1955
INT2    EX AF,AF'
1956
        PUSH DE
1957
        LD E,A
69 savelij 1958
        LD D,IXH
36 savelij 1959
        LD A,(DE)
1960
        INC D
1961
        LD A,(DE)
1962
        INC E
1963
        JR Z,INT2_
1964
        LD A,E
1965
        POP DE
1966
        EX AF,AF'
1967
        EI
1968
        RET
1969
 
69 savelij 1970
        DUPL 2,0
36 savelij 1971
        RET
1972
 
1973
        PUSH DE
1974
INT2_   JP QTDONE
1975
 
1976
INT3    EX AF,AF'
1977
        PUSH DE
1978
        LD E,A
69 savelij 1979
        LD D,IXH
36 savelij 1980
        LD A,(DE)
1981
        INC D
1982
        INC D
1983
        LD A,(DE)
1984
        INC E
1985
        JR Z,INT3_
1986
        LD A,E
1987
        POP DE
1988
        EX AF,AF'
1989
        EI
1990
        RET
1991
 
69 savelij 1992
        DUPL 1,0
36 savelij 1993
        RET
1994
 
1995
        PUSH DE
1996
INT3_   JP QTDONE
1997
 
1998
INT4    EX AF,AF'
1999
        PUSH DE
2000
        LD E,A
69 savelij 2001
        LD D,IXH
36 savelij 2002
        LD A,(DE)
2003
        INC D
2004
        LD A,(DE)
2005
        INC D
2006
        LD A,(DE)
2007
        INC E
2008
        JR Z,INT4_
2009
        LD A,E
2010
        POP DE
2011
        EX AF,AF'
2012
        EI
2013
        RET
2014
 
2015
        RET
2016
 
2017
        PUSH DE
2018
INT4_   JP QTDONE
2019
 
2020
INT5    EX AF,AF'
2021
        PUSH DE
2022
        LD E,A
69 savelij 2023
        LD D,IXH
36 savelij 2024
        LD A,(DE)
2025
        INC D
2026
        INC D
2027
        INC D
2028
        LD A,(DE)
2029
        INC E
2030
        JR Z,INT5_
2031
        LD A,E
2032
        POP DE
2033
        EX AF,AF'
2034
        EI
2035
        RET
2036
 
2037
        RET
2038
 
2039
        PUSH DE
2040
INT5_   JP QTDONE
2041
 
2042
INT6    EX AF,AF'
2043
        PUSH DE
2044
        LD E,A
69 savelij 2045
        LD D,IXH
36 savelij 2046
        LD A,(DE)
2047
        INC D
2048
        LD A,(DE)
2049
        INC D
2050
        INC D
2051
        LD A,(DE)
2052
        INC E
2053
        JR Z,INT6_
2054
        LD A,E
2055
        POP DE
2056
        EX AF,AF'
2057
        EI
2058
        RET
2059
 
2060
        PUSH DE
2061
INT6_   JP QTDONE
2062
 
2063
INT7    EX AF,AF'
2064
        PUSH DE
2065
        LD E,A
69 savelij 2066
        LD D,IXH
36 savelij 2067
        LD A,(DE)
2068
        INC D
2069
        INC D
2070
        LD A,(DE)
2071
        INC D
2072
        LD A,(DE)
2073
        INC E
2074
        JR Z,INT7_
2075
        LD A,E
2076
        POP DE
2077
        EX AF,AF'
2078
        EI
2079
        RET
2080
 
2081
        PUSH DE
2082
INT7_   JP QTDONE
2083
 
2084
QTFAULT LD DE,(QTBUSY)
2085
        LD (DE),A
2086
        LD (PLAYING),A
2087
        POP DE
2088
        EX AF,AF'
2089
        RET
2090
 
2091
INT_IM1 IM 1
2092
        EI
2093
        EX DE,HL
2094
        LD HL,(QTBUSY)
2095
        LD (HL),A
2096
        LD A,L
69 savelij 2097
        ADD A,0X04
2098
        AND 0X1C
36 savelij 2099
        LD L,A
2100
        LD (QTBUSY),HL
2101
        SET 5,L
2102
        LD A,(HL)
2103
        OUT (VOL1),A
2104
        INC L
2105
        LD A,(HL)
2106
        OUT (VOL2),A
2107
        INC L
2108
        LD A,(HL)
2109
        OUT (VOL3),A
2110
        INC L
2111
        LD A,(HL)
2112
        OUT (VOL4),A
2113
        POP AF
2114
        POP HL
2115
        EX DE,HL
2116
        RET
2117
 
2118
QTDONE  LD A,(QTBUSY)
69 savelij 2119
        ADD A,0X04
2120
        AND 0X1C
36 savelij 2121
        LD E,A
69 savelij 2122
        LD D,HIGH (QTMAP)
36 savelij 2123
        LD A,(DE)
2124
        OR A
2125
        JR Z,QTFAULT
2126
        EX AF,AF'
2127
        PUSH AF
2128
        INC E
2129
        LD A,(DE)
69 savelij 2130
        LD IXH,A
36 savelij 2131
        INC E
2132
        LD A,(DE)
2133
        OR A
2134
        JR Z,INT_IM1
2135
        IM 2
2136
        EX DE,HL
69 savelij 2137
        LD HL,INTAREA+0X18
36 savelij 2138
        CP (HL)
2139
        JR Z,INT_I1
2140
        LD (HL),A
69 savelij 2141
        LD HL,0X1518
36 savelij 2142
        LD (INTAREA),HL
2143
        EI
2144
        DEC A
2145
        JR Z,INT_I0
69 savelij 2146
        ADD A,0X03
36 savelij 2147
        LD L,A
69 savelij 2148
        LD H,HIGH (INT0)
36 savelij 2149
        PUSH DE
2150
        PUSH BC
2151
        LD DE,INTAREA+2
2152
        LDI
2153
        LDI
2154
        LDI
2155
        LDI
2156
        LDI
2157
        LDI
2158
        LDI
2159
        LDI
2160
        LDI
2161
        LDI
2162
        LDI
2163
        LDI
2164
        LDI
2165
        LDI
2166
        LDI
2167
        LDI
69 savelij 2168
        LD HL,0XD508
36 savelij 2169
        LD (INTAREA),HL
2170
        POP BC
2171
        POP DE
2172
        LD HL,(QTBUSY)
69 savelij 2173
        LD (HL),0X00
36 savelij 2174
        LD A,L
69 savelij 2175
        ADD A,0X04
2176
        AND 0X1C
36 savelij 2177
        LD L,A
2178
        LD (QTBUSY),HL
2179
        SET 5,L
2180
        LD A,(HL)
2181
        OUT (VOL1),A
2182
        INC L
2183
        LD A,(HL)
2184
        OUT (VOL2),A
2185
        INC L
2186
        LD A,(HL)
2187
        OUT (VOL3),A
2188
        INC L
2189
        LD A,(HL)
2190
        OUT (VOL4),A
2191
        POP AF
2192
        POP HL
2193
        EX DE,HL
2194
        RET
2195
 
2196
INT_I1  EI
69 savelij 2197
        LD A,0X04
36 savelij 2198
        LD HL,(QTBUSY)
69 savelij 2199
        LD (HL),0X00
36 savelij 2200
        ADD A,L
69 savelij 2201
        AND 0X1C
36 savelij 2202
        LD L,A
2203
        LD (QTBUSY),HL
2204
        SET 5,L
2205
        LD A,(HL)
2206
        OUT (VOL1),A
2207
        INC L
2208
        LD A,(HL)
2209
        OUT (VOL2),A
2210
        INC L
2211
        LD A,(HL)
2212
        OUT (VOL3),A
2213
        INC L
2214
        LD A,(HL)
2215
        OUT (VOL4),A
2216
        POP AF
2217
        POP HL
2218
        EX DE,HL
2219
        RET
2220
 
2221
INT_I0  LD HL,INT0+2
2222
        PUSH DE
2223
        PUSH BC
2224
        LD DE,INTAREA+2
2225
        LDI
2226
        LDI
2227
        LDI
2228
        LDI
2229
        LDI
69 savelij 2230
        LD HL,0X3C08
36 savelij 2231
        LD (INTAREA),HL
2232
        POP BC
2233
        POP DE
2234
        LD HL,(QTBUSY)
2235
        LD (HL),A
2236
        LD A,L
69 savelij 2237
        ADD A,0X04
2238
        AND 0X1C
36 savelij 2239
        LD L,A
2240
        LD (QTBUSY),HL
2241
        SET 5,L
2242
        LD A,(HL)
2243
        OUT (VOL1),A
2244
        INC L
2245
        LD A,(HL)
2246
        OUT (VOL2),A
2247
        INC L
2248
        LD A,(HL)
2249
        OUT (VOL3),A
2250
        INC L
2251
        LD A,(HL)
2252
        OUT (VOL4),A
2253
        POP AF
2254
        POP HL
2255
        EX DE,HL
2256
        RET
2257
 
2258
QTPLAY  DI
69 savelij 2259
        LD A,0XFF
36 savelij 2260
        LD (PLAYING),A
2261
        LD HL,(QTBUSY)
2262
        LD A,(HL)
2263
        EX AF,AF'
2264
        INC L
2265
        LD A,(HL)
69 savelij 2266
        LD IXH,A
36 savelij 2267
        INC L
2268
        LD A,(HL)
2269
        IM 1
2270
        OR A
2271
        JR Z,QTPLAY_
2272
        IM 2
69 savelij 2273
        LD HL,INTAREA+0X18
36 savelij 2274
        CP (HL)
2275
        JR Z,QTPLAY_
2276
        LD (HL),A
2277
        LD L,A
69 savelij 2278
        LD H,HIGH (INT0)
36 savelij 2279
        LD DE,INTAREA
69 savelij 2280
        LD BC,0X0012
36 savelij 2281
        LDIR
2282
QTPLAY_ LD HL,(QTBUSY)
2283
        SET 5,L
2284
        LD A,(HL)
2285
        OUT (VOL1),A
2286
        INC L
2287
        LD A,(HL)
2288
        OUT (VOL2),A
2289
        INC L
2290
        LD A,(HL)
2291
        OUT (VOL3),A
2292
        INC L
2293
        LD A,(HL)
2294
        OUT (VOL4),A
2295
        EI
2296
        RET
2297
 
2298
;INCLUDE "COMM.a80"
2299
WTCM    IN A,(ZXSTAT)
2300
        RRCA
2301
        JR NC,WTCM
2302
        IN A,(ZXCMD)
69 savelij 2303
        CP 0X12
36 savelij 2304
        JR Z,CM12
69 savelij 2305
        CP 0X18
36 savelij 2306
        JR Z,CM18
69 savelij 2307
        CP 0X1A
36 savelij 2308
        JR Z,CM1A
69 savelij 2309
        CP 0X1B
36 savelij 2310
        JR Z,CM1B
69 savelij 2311
        CP 0X20
36 savelij 2312
        JR Z,CM20
2313
        OUT (CLRCBIT),A
2314
        JP WTCM
2315
 
2316
CM12    IN A,(ZXDATRD)
2317
        OUT (CLRCBIT),A
2318
        OUT (MPAG),A
2319
        JP WTCM
2320
 
2321
CM18    IN A,(ZXDATRD)
2322
        LD E,A
2323
        OUT (CLRCBIT),A
2324
CM18_1  IN A,(ZXSTAT)
2325
        OR A
2326
        JP P,CM18_1
2327
        IN A,(ZXDATRD)
2328
        LD D,A
2329
        JP WTCM
2330
 
2331
CM1A    LD A,(DE)
2332
        OUT (ZXDATWR),A
2333
        OUT (CLRCBIT),A
2334
        JP WTCM
2335
 
2336
CM1B    INC DE
2337
        OUT (CLRCBIT),A
2338
        JP WTCM
2339
 
2340
CM20    OUT (CLRCBIT),A
2341
        RET
2342
 
2343
;INCLUDE "GEN_L.a80"
2344
GEN     LD A,(QTFREE)
69 savelij 2345
        ADD A,HIGH (DAC0)
36 savelij 2346
        ADD A,(IY+CHRDN)
2347
        LD D,A
2348
        LD A,(SGENOFF)
2349
        LD E,A
2350
        LD A,(CHANNEL)
2351
        OR (IY+CHRDR)
2352
        LD (CHANNEL),A
2353
GEN_    LD L,(IY+CHCURL)
2354
        LD H,(IY+CHCURH)
2355
        LD B,(IY+CHCNTL)
2356
GENLP   EXX
69 savelij 2357
        LD H,HIGH (RAMPG)
36 savelij 2358
        LD L,(IY+CHCURP)
2359
        LD D,(IY+CHCNTH)
2360
        LD E,(IY+CHFRQH)
2361
        LD B,(HL)
2362
        LD A,B
2363
        LD (CPAGE),A
2364
        OUT (MPAG),A
2365
        LD A,L
2366
        EXX
2367
        CP (IY+CHENDP)
2368
        JP C,GENTP
2369
        PUSH DE
2370
        EX DE,HL
2371
        LD L,(IY+CHENDL)
2372
        LD H,(IY+CHENDH)
2373
        DEC HL
2374
        SBC HL,DE
2375
        INC HL
2376
        EX DE,HL
69 savelij 2377
        LD IXL,E
36 savelij 2378
        LD A,D
2379
        POP DE
2380
        JR C,GENCHK
2381
        OR A
2382
        JR Z,GENENT
69 savelij 2383
        LD IXL,0XFF
36 savelij 2384
        JP GENENT
2385
 
2386
GENCHK  RES 7,(IY+CHSTAT)
2387
        LD A,(IY+CHLPBP)
2388
        INC A
2389
        JP Z,GENCHK2
2390
        DEC A
2391
        LD (IY+CHCURP),A
2392
        LD L,(IY+CHLPBL)
2393
        LD H,(IY+CHLPBH)
2394
        LD A,(IY+CHLPEP)
2395
        LD (IY+CHENDP),A
2396
        LD A,(IY+CHLPEL)
2397
        LD (IY+CHENDL),A
2398
        LD A,(IY+CHLPEH)
2399
        LD (IY+CHENDH),A
2400
        SET 7,(IY+CHSTAT)
2401
        JP GENLP
2402
 
69 savelij 2403
GENCHK2 LD (IY+CHREAL),0X7F
36 savelij 2404
        BIT 6,(IY+CHSTAT)
2405
        JP Z,GENZERO
2406
        PUSH IY
2407
        PUSH DE
2408
        LD IY,CHANS
69 savelij 2409
        LD B,0X08
36 savelij 2410
        LD DE,CHANLEN
2411
GENCHK3 SET 0,(IY+CHSTAT)
2412
        ADD IY,DE
2413
        DJNZ GENCHK3
2414
        POP DE
2415
        POP IY
2416
        JP GENZERO
2417
 
69 savelij 2418
GENTP   LD IXL,0XFF
36 savelij 2419
        LD A,H
2420
        INC A
2421
        JP M,GENENT
2422
        OR L
2423
        JR Z,GENENT
2424
        NEG
69 savelij 2425
        LD IXL,A
36 savelij 2426
GENENT  LD C,(IY+CHFRQL)
2427
        LD A,(IY+CHOLDV)
2428
        PUSH IY
69 savelij 2429
        CALL 0X2030
36 savelij 2430
        POP  IY
2431
        LD (IY+CHOLDV),A
2432
        LD (IY+CHCNTH),C
2433
        LD A,H
2434
        OR A
2435
        JP M,GENJ2
69 savelij 2436
        LD H,0X80
36 savelij 2437
        INC (IY+CHCURP)
2438
GENJ2   LD A,E
2439
        OR A
2440
        JP Z,GENRET
2441
        BIT 7,(IY+CHSTAT)
2442
        JP NZ,GENLP
2443
        JP GENZERO
2444
 
2445
GENRET  LD (IY+CHCURL),L
2446
        LD (IY+CHCURH),H
2447
        LD (IY+CHCNTL),B
2448
        JP  GENEXT
2449
 
2450
GENZERO LD A,E
69 savelij 2451
        CP 0XFF
36 savelij 2452
        JR NC,GENZENT
2453
        LD B,(IY+CHOLDV)
69 savelij 2454
        LD C,0X80
2455
        CP 0XFD
36 savelij 2456
        JR NC,GENZ_1
69 savelij 2457
        CP 0XF9
36 savelij 2458
        JR NC,GENZ_2
2459
        LD A,C
2460
        ADD A,B
2461
        RRA
2462
        LD H,A
2463
        ADD A,B
2464
        RRA
2465
        LD L,A
2466
        ADD A,B
2467
        RRA
2468
        LD (DE),A
2469
        INC E
2470
        LD A,L
2471
        LD (DE),A
2472
        INC E
2473
        ADD A,H
2474
        RRA
2475
        LD (DE),A
2476
        INC E
2477
        LD A,H
2478
        LD (DE),A
2479
        INC E
2480
        ADD A,C
2481
        RRA
2482
        LD L,A
2483
        ADD A,H
2484
        RRA
2485
        LD (DE),A
2486
        INC E
2487
        LD A,L
2488
        LD (DE),A
2489
        INC E
2490
        ADD A,C
2491
        RRA
2492
        LD (DE),A
2493
        INC E
2494
        JP GENZENT
2495
 
2496
GENZ_2  LD A,C
2497
        ADD A,B
2498
        RRA
2499
        LD H,A
2500
        ADD A,B
2501
        RRA
2502
        LD (DE),A
2503
        INC E
2504
        LD A,H
2505
        LD (DE),A
2506
        INC E
2507
        ADD A,C
2508
        RRA
2509
        LD (DE),A
2510
        INC E
2511
        JP GENZENT
2512
 
2513
GENZ_1  LD A,B
2514
        ADD A,C
2515
        RRA
2516
        LD (DE),A
2517
        INC E
69 savelij 2518
GENZENT LD A,0X80
36 savelij 2519
        BIT 0,E
2520
        JR Z,GENZJP1
2521
        LD (DE),A
2522
        INC E
2523
        JR Z,GENZEXT
2524
GENZJP1 BIT 1,E
2525
        JR Z,GENZJP2
2526
        LD (DE),A
2527
        INC E
2528
        LD (DE),A
2529
        INC E
2530
        JR Z,GENZEXT
2531
GENZJP2 BIT 2,E
2532
        JR Z,GENZLP
2533
        LD (DE),A
2534
        INC E
2535
        LD (DE),A
2536
        INC E
2537
        LD (DE),A
2538
        INC E
2539
        LD (DE),A
2540
        INC E
2541
        JR Z,GENZEXT
2542
GENZLP  LD (DE),A
2543
        INC E
2544
        LD (DE),A
2545
        INC E
2546
        LD (DE),A
2547
        INC E
2548
        LD (DE),A
2549
        INC E
2550
        LD (DE),A
2551
        INC E
2552
        LD (DE),A
2553
        INC E
2554
        LD (DE),A
2555
        INC E
2556
        LD (DE),A
2557
        INC E
2558
        JP NZ,GENZLP
2559
GENZEXT LD A,(QTFREE)
69 savelij 2560
        ADD A,HIGH (DAC0)
36 savelij 2561
        ADD A,(IY+CHRDN)
2562
        LD D,A
69 savelij 2563
        LD E,0XFF
2564
        LD A,0X80
36 savelij 2565
        LD (DE),A
2566
GENEXT  XOR A
2567
        LD (CPAGE),A
2568
        OUT (MPAG),A
2569
        BIT 0,(IY+CHSTAT)
2570
        RET Z
2571
        JP CALCVOL
2572
 
2573
;INCLUDE "TABLES_L.a80"
2574
 
2575
        align 256
2576
 
69 savelij 2577
INTTAB  DUPL 0X101,HIGH (INTAREA)
36 savelij 2578
 
2579
INTTB   DW INT0,INT1,INT1,INT2,INT1,INT3,INT2,INT4,INT1,INT5
69 savelij 2580
        DW INT3,INT6,INT2,INT7,INT4,0X0000
36 savelij 2581
INTOFF  DB 0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0
2582
 
2583
;INCLUDE "_BPM.a80"
2584
BPMTAB
69 savelij 2585
        dw 0X0B72,0X0B19,0X0AC5,0X0A77,0X0A2C,0X09E6,0X09A3,0X0964
2586
        dw 0X0928,0X08EF,0X08B8,0X0884,0X0853,0X0823,0X07F6,0X07CB
2587
        dw 0X07A1,0X0779,0X0753,0X072E,0X070B,0X06E9,0X06C8,0X06A9
2588
        dw 0X068A,0X066D,0X0650,0X0635,0X061B,0X0601,0X05E8,0X05D0
2589
        dw 0X05B9,0X05A2,0X058C,0X0577,0X0563,0X054F,0X053B,0X0528
2590
        dw 0X0516,0X0504,0X04F3,0X04E2,0X04D2,0X04C2,0X04B2,0X04A3
2591
        dw 0X0494,0X0485,0X0477,0X046A,0X045C,0X044F,0X0442,0X0436
2592
        dw 0X0429,0X041D,0X0412,0X0406,0X03FB,0X03F0,0X03E5,0X03DB
2593
        dw 0X03D1,0X03C6,0X03BD,0X03B3,0X03AA,0X03A0,0X0397,0X038E
2594
        dw 0X0385,0X037D,0X0374,0X036C,0X0364,0X035C,0X0354,0X034D
2595
        dw 0X0345,0X033E,0X0336,0X032F,0X0328,0X0321,0X031A,0X0314
2596
        dw 0X030D,0X0307,0X0300,0X02FA,0X02F4,0X02EE,0X02E8,0X02E2
2597
        dw 0X02DC,0X02D7,0X02D1,0X02CC,0X02C6,0X02C1,0X02BC,0X02B6
2598
        dw 0X02B1,0X02AC,0X02A7,0X02A2,0X029E,0X0299,0X0294,0X0290
2599
        dw 0X028B,0X0287,0X0282,0X027E,0X0279,0X0275,0X0271,0X026D
2600
        dw 0X0269,0X0265,0X0261,0X025D,0X0259,0X0255,0X0251,0X024E
2601
        dw 0X024A,0X0246,0X0243,0X023F,0X023C,0X0238,0X0235,0X0231
2602
        dw 0X022E,0X022B,0X0227,0X0224,0X0221,0X021E,0X021B,0X0218
2603
        dw 0X0215,0X0212,0X020F,0X020C,0X0209,0X0206,0X0203,0X0200
2604
        dw 0X01FE,0X01FB,0X01F8,0X01F5,0X01F3,0X01F0,0X01ED,0X01EB
2605
        dw 0X01E8,0X01E6,0X01E3,0X01E1,0X01DE,0X01DC,0X01D9,0X01D7
2606
        dw 0X01D5,0X01D2,0X01D0,0X01CE,0X01CC,0X01C9,0X01C7,0X01C5
2607
        dw 0X01C3,0X01C1,0X01BE,0X01BC,0X01BA,0X01B8,0X01B6,0X01B4
2608
        dw 0X01B2,0X01B0,0X01AE,0X01AC,0X01AA,0X01A8,0X01A6,0X01A4
2609
        dw 0X01A3,0X01A1,0X019F,0X019D,0X019B,0X0199,0X0198,0X0196
2610
        dw 0X0194,0X0192,0X0191,0X018F,0X018D,0X018C,0X018A,0X0188
2611
        dw 0X0187,0X0185,0X0183,0X0182,0X0180,0X017F,0X017D,0X017C
2612
        dw 0X017A,0X0179,0X0177,0X0176,0X0174,0X0173,0X0171,0X0170
36 savelij 2613
 
2614
;INCLUDE "_trash.a80"   ;comes from original ROM!
2615
;strange block, comes from original ROM.
2616
;real garbage;)
2617
 
69 savelij 2618
        DB 0X56,0X43,0X56,0X49,0X45,0X57,0X20,0X20,0X45,0X58,0X54,0X20,0X00,0X00,0X00,0X00
2619
        DB 0X00,0X00,0X00,0X00,0X00,0X00,0XC4,0X08,0X43,0X21,0X28,0X09,0XDA,0X02,0X00,0X00
2620
        DB 0X00,0X43,0X56,0X49,0X45,0X57,0X20,0X20,0X45,0X58,0X54,0X20,0X00,0X00,0X00,0X00
2621
        DB 0X00,0X00,0X00,0X00,0X00,0X00,0XC4,0X08,0X43,0X21,0X28,0X09,0XDA,0X02,0X00,0X00
36 savelij 2622
 
2623
Free1
2624
;---patched
2625
Patch11
2626
        LD H,(HL)
2627
        LD L,D
69 savelij 2628
        ADD HL,HL
2629
        ADD HL,HL
2630
        JR NC,$+3
2631
        INC D
36 savelij 2632
        LD A,(MODTP)
2633
        INC A
69 savelij 2634
        LD BC,0X0000+1084
36 savelij 2635
        JR Z,TTT15x
69 savelij 2636
        LD BC,0X0000+600
36 savelij 2637
TTT15x  ADD HL,BC
69 savelij 2638
        JR NC,$+3
2639
        INC D
36 savelij 2640
        XOR A
2641
        LD (CPAGE),A
2642
        OUT (MPAG),A
2643
        LD A,D
69 savelij 2644
        LD DE,0X5000
2645
        LD BC,0X400
36 savelij 2646
        CALL LDMEM
2647
        XOR A
69 savelij 2648
        OUT (0X00),A
36 savelij 2649
        RET
2650
 
69 savelij 2651
; new cmd 0X6A - Set player mode
36 savelij 2652
COM6A   LD A,(PlMode)   ;command
2653
        OUT (ZXDATWR),A
2654
        IN A,(ZXDATRD)
2655
        OUT (CLRCBIT),A
2656
        LD (PlMode),A
2657
        RET
2658
 
69 savelij 2659
Patch2x LD A,(PlMode)
2660
        OR A
2661
        RET NZ
36 savelij 2662
        LD HL,MTSTAT
2663
        SET 7,(HL)
2664
        RET
2665
 
2666
; last note speed
69 savelij 2667
Patch3  LD A,(MTSNGPS)
2668
                OR A
2669
                JR NZ,Patch3e   ;1st pattern
2670
        LD A,(MTPATPS)
2671
                OR A
2672
                JR NZ,Patch3e   ;1st row
36 savelij 2673
        LD A,6          ;init speed at start of MOD
2674
        LD (MTSPEED),A
2675
        LD HL,750
2676
        LD (TICKLEN),HL
2677
        LD (TCKLEFT),HL
2678
Patch3e LD IY,CHANS
2679
        JP EFXGTNT+4
2680
 
2681
; initial note
69 savelij 2682
Patch4  LD (IY+CHCNTL),0X00
2683
        LD (IY+CHREAL),0X7F
36 savelij 2684
        RET
2685
 
2686
;MOD relooper
69 savelij 2687
; new cmd 0X6B - Set minimal loop length (turn on relooper)
36 savelij 2688
 
69 savelij 2689
COM6B   IN A,(ZXDATRD)
2690
                LD L,A
36 savelij 2691
        OUT (CLRCBIT),A
69 savelij 2692
        IN A,(ZXSTAT)
2693
        AND 0X81
2694
        JR Z,$-4
36 savelij 2695
        JP P,Patch5s
69 savelij 2696
        IN A,(ZXDATRD)
2697
        LD H,A
36 savelij 2698
        LD DE,16385
69 savelij 2699
        OR A
2700
        SBC HL,DE
2701
        ADD HL,DE
36 savelij 2702
        JR C,Patch5s+3
69 savelij 2703
Patch5s LD HL,0X0200
36 savelij 2704
        LD (MODLLEN),HL
2705
        RET
2706
 
2707
;reconstruct MOD after load
112 savelij 2708
Patch5x CALL SET_SIZE_MOD               ;CALL PLAYMD            ;init MOD
36 savelij 2709
        LD HL,(MODLLEN)
69 savelij 2710
        LD A,H
2711
        OR L
2712
        RET Z   ;relooper off
2713
        LD A,(MODTP)
2714
        OR A
2715
        LD A,31
2716
        LD HL,1084
36 savelij 2717
        JR NZ,$+7
69 savelij 2718
        LD A,15
2719
        LD HL,600
2720
        LD (MODSMPS),A
2721
        LD (MODPTST),HL
36 savelij 2722
        CALL CHIP
2723
        JP PLAYMD               ;init MOD again
2724
 
2725
;INCLUDE "reloop.a80"
2726
 
2727
;-----(c)Evgeny Muchkin
2728
 
69 savelij 2729
;MODSMPS        equ 0X5000
2730
;MODPTST        equ 0X5001
2731
;ChipSP_        equ 0X5005
2732
;CHIP246 equ 0X5007
2733
;TOcip_ equ 0X5009
2734
;CHIPLN  equ 0X5010     ; 4  (pointer)
2735
;CHIPPP  equ 0X5013     ;  
2736
;CIP1    equ 0X5016     ;  
2737
;CIP2    equ 0X5019     ;  
2738
;CIP3    equ 0X501c     ;  
36 savelij 2739
 
2740
CHIP    DI
2741
        LD A,(RAMPG)
2742
        OUT (MPAG),A
2743
        LD DE,(MODPTST) ;patts data!
2744
        LD A,(PATTS)
2745
        LD L,A
2746
        LD H,B
2747
        ADD HL,HL
2748
        ADD HL,HL
2749
        LD A,H
2750
        LD H,L
2751
        LD L,B
2752
        ADD HL,DE
2753
        ADC A,B
2754
        LD (CHIPLN),HL
2755
        LD (CHIPLN+2),A
2756
        LD (ChipSP_),SP
2757
        LD HL,CHIPLN
2758
        LD DE,CHIPPP
2759
        PUSH DE
69 savelij 2760
        LDI
2761
        LDI
2762
        LDI
36 savelij 2763
        POP IY
2764
        LD A,(MODSMPS)
2765
        LD B,A          ;smps!
2766
        LD DE,30
69 savelij 2767
        LD IX,0X8014
36 savelij 2768
ChIp    LD H,(IX+22)    ;len
2769
        LD L,(IX+23)
2770
        CALL TOCip
2771
        ADD IX,DE
2772
        DJNZ ChIp
69 savelij 2773
        LD IX,0X802A
36 savelij 2774
        LD A,(MODSMPS)
2775
        LD B,A          ;smps!
2776
CHIP1   LD A,(RAMPG)
2777
        OUT (MPAG),A
2778
        LD H,(IX+6)     ;loop len
2779
        LD L,(IX+7)
2780
        LD (CHIP246),HL
2781
        LD A,(IX)       ;len
2782
        OR (IX+1)
2783
        JP Z,CHIP2      ;skip if no smp
2784
        LD DE,2
2785
        CALL CP_DDE
2786
        JP C,CHIP2      ;skip if loop len <2
2787
LUP_LEN LD DE,(MODLLEN)
2788
        CALL CP_DDE
2789
        JP NC,CHIP2     ;skip if loop len>=LUP_LEN
2790
        PUSH BC
69 savelij 2791
        LD B,H
2792
        LD C,L
36 savelij 2793
        EXX
2794
        LD BC,0         ;reloop counter
2795
CHIP3   EXX
2796
        ADD HL,BC
2797
        CALL CP_DDE
2798
        EXX
2799
        INC BC
2800
        JR C,CHIP3
2801
        PUSH BC
2802
        EXX
2803
;!!!!!!!!!!!!!!!!!!!!!!!!!!
2804
        PUSH HL         ;new loop len
2805
        LD B,(IX+6)     ;loop len
2806
        LD C,(IX+7)
2807
        AND A
2808
        SBC HL,BC
2809
        LD DE,CHIPPP
2810
        LD (TOcip_),DE
2811
        LD IY,CIP1
2812
        CALL TOCIP
2813
        LD DE,CHIPLN
2814
        LD (TOcip_),DE
2815
        LD B,3          ;check if free mem
2816
        LD DE,CIP1+2
2817
        LD HL,RAMTOP+2
2818
ChipLP  LD A,(DE)
2819
        CP (HL)
69 savelij 2820
        DEC HL
2821
        DEC DE
36 savelij 2822
        JR C,ChipOK
2823
        JP NZ,ChipSP
2824
        DJNZ ChipLP
2825
ChipOK  POP HL
2826
        EX DE,HL        ;DE=new loop len
2827
        LD H,(IX)       ;len
2828
        LD L,(IX+1)
2829
        LD B,(IX+6)     ;loop len
2830
        LD C,(IX+7)
2831
        AND A
2832
        SBC HL,BC
2833
        ADD HL,DE
2834
        LD (IX),H       ;new smp len
2835
        LD (IX+1),L
2836
        LD (IX+6),D     ;new loop len
2837
        LD (IX+7),E
2838
        LD IY,CIP1
2839
        LD H,(IX+4)     ;loop start
2840
        LD L,(IX+5)
69 savelij 2841
        PUSH HL
2842
        PUSH HL
2843
        PUSH HL
36 savelij 2844
        ADD HL,BC
2845
        CALL TOCIP
2846
        LD IY,CIP2
2847
        POP HL
2848
        ADD HL,DE
2849
        CALL TOCIP
2850
        LD HL,CHIPPP
2851
        LD DE,CIP3
69 savelij 2852
        LDI
2853
        LDI
2854
        LDI
36 savelij 2855
        CALL DIRER
2856
        LD IY,CIP1
2857
        POP HL
2858
        CALL TOCIP
2859
        POP HL
2860
CHIP4   LD DE,(CHIP246) ;orig loop len
2861
        ADD HL,DE
2862
        LD IY,CIP2
2863
        CALL TOCIP
2864
        LD HL,CIP2
2865
        LD DE,CIP3
69 savelij 2866
        LDI
2867
        LDI
2868
        LDI
36 savelij 2869
        POP BC
2870
CHIP5   PUSH BC
2871
        CALL DIRER
2872
CHIP6   LD HL,(CHIP246) ;orig loop len
2873
        LD IY,CIP2
2874
        CALL TOCip
2875
        POP BC
2876
        DEC BC
2877
        LD A,B
2878
        OR C
2879
        JR NZ,CHIP5
2880
        POP BC
2881
CHIP2   LD DE,(CHIP246) ;orig loop len
2882
        LD A,(RAMPG)
2883
        OUT (MPAG),A
2884
        LD H,(IX+6)     ;new loop len
2885
        LD L,(IX+7)
2886
        AND A
2887
        SBC HL,DE
2888
        LD IY,CHIPPP    ;corr mod len
2889
        CALL TOCip
2890
        LD H,(IX)
2891
        LD L,(IX+1)
2892
        LD IY,CHIPLN    ;add pointer
2893
        CALL TOCip
2894
        LD DE,30
2895
        ADD IX,DE
2896
        DEC B
2897
        JP NZ,CHIP1
2898
ChipSP  LD SP,(ChipSP_)
2899
        EI
2900
        RET
2901
 
2902
DIRER   LD IY,CIP1
2903
        LD L,(IY+3)
2904
        LD H,(IY+4)
2905
        LD B,(IY+5)
2906
        EXX
2907
        LD L,(IY)
2908
        LD H,(IY+1)
2909
        LD B,(IY+2)
2910
        LD E,(IY+6)
2911
        LD D,(IY+7)
2912
        LD C,(IY+8)
2913
        PUSH IX
2914
        CALL RESI10_
2915
        POP IX
2916
        RET
2917
 
69 savelij 2918
TOCIP   PUSH HL
2919
        PUSH DE
36 savelij 2920
        PUSH IY
2921
        POP DE
2922
TOcip   LD HL,(TOcip_)  ;CHIPLN
69 savelij 2923
        LDI
2924
        LDI
2925
        LDI
2926
        POP DE
2927
        POP HL
36 savelij 2928
TOCip   CALL ADD_IY
2929
ADD_IY  LD A,(IY)
2930
        ADD A,L
2931
        LD (IY),A
2932
        LD A,(IY+1)
2933
        ADC A,H
2934
        LD (IY+1),A
2935
        LD A,(IY+2)
2936
        ADC A,0
2937
        LD (IY+2),A
2938
        RET
2939
 
2940
CP_DDE  PUSH HL
2941
        AND A
2942
        SBC HL,DE
2943
        POP HL
2944
        RET
2945
 
2946
;RESID10 ; MOVE BLOCK IN GS
2947
;          BHL - FROM
2948
;          CDE - END
2949
;         'BHL - TO
2950
 
69 savelij 2951
RESI10_         SUB A
2952
                OUT (MPAG),A
2953
                LD (SYSTEM),A
2954
                LD A,B
2955
                PUSH HL
2956
                EXX
2957
                POP DE
2958
                PUSH HL
2959
                PUSH BC
2960
                LD C,A
2961
                OR A
2962
                SBC HL,DE
2963
                LD A,B
2964
                SBC A,C
2965
                EX DE,HL
2966
                POP BC
2967
                POP HL
2968
                LD C,A
2969
                OR E
2970
                OR D
2971
                RET Z
2972
                EXX
2973
                EX DE,HL
2974
                SBC HL,DE
2975
                LD A,C
2976
                SBC A,B
2977
                LD IXL,A
2978
                OR L
2979
                OR H
2980
                EXX
2981
                RET Z
2982
                PUSH DE
2983
                PUSH BC
2984
                BIT 7,C
2985
                EXX
2986
                JP NZ,MOVL
2987
                JP MOVH
36 savelij 2988
;-----
2989
 
2990
;store settings
69 savelij 2991
Patch5i1        LD A,(PlMode)
2992
                LD C,A
2993
                LD DE,(MODLLEN)
2994
                LD A,(ERRCODE)
2995
                RET
36 savelij 2996
 
2997
;restore settings
69 savelij 2998
Patch5i2        LD (ERRCODE),A
2999
                LD A,C
3000
                LD (PlMode),A
3001
                LD (MODLLEN),DE
3002
                RET
36 savelij 3003
 
3004
;clear vars after full reset!
69 savelij 3005
Patch5i3        XOR A
3006
                LD H,A
3007
                LD L,A
3008
                LD (PlMode),A
3009
                LD (MODLLEN),HL
3010
                JP INITVAR
36 savelij 3011
 
3012
CP_END_MOD
105 savelij 3013
 
36 savelij 3014
        ;LD HL,MTSNGPS
3015
        ;INC (HL)
3016
        ;CP (HL)
3017
        ;CALL C,STOPMOD
3018
        ;LD (MTSNGPS),A
3019
        ;RET
3020
 
3021
;       display $
3022
;---
3023
;emptyobl1
3024
 
69 savelij 3025
;       ORG GSRomBaseL+0X1D00
36 savelij 3026
 
3027
;       IN A,(ZXDATRD)
3028
;       OUT (CLRCBIT),A
69 savelij 3029
;       LD A,0X7F
36 savelij 3030
;       OUT (ZXDATWR),A
3031
;       JP COMINT_
3032
 
3033
;WDY    IN A,(ZXSTAT)
3034
;       RLA
3035
;       JR NC,$-3
3036
;       RET
3037
 
3038
;WDN    IN A,(ZXSTAT)
3039
;       RLA
3040
;       JR C,$-3
3041
;       RET
3042
 
69 savelij 3043
        ORG GSRomBaseL+0X2000
36 savelij 3044
;SGEN    
3045
;INCLUDE "SGEN_ASM.a80"
3046
;       MODULE SGEN
3047
;INCLUDE "SGEN.a80"
3048
 
3049
SGENTBE DW S0,S1,S2,S3,S4,S5,S6,S7,S8
3050
 
3051
SGENTBF DW SGEN1,SGEN2,SGEN3,SGEN4,SGEN5,SGEN6,SGEN7,SGEN8,SGEN9
3052
 
69 savelij 3053
        DUPL 12,0
36 savelij 3054
 
3055
SGEN    EXX
3056
        INC D
3057
        DEC D
3058
        JP Z,SGEN_
3059
        LD C,A
3060
        LD A,D
3061
        DEC A
69 savelij 3062
        CP 0X09
36 savelij 3063
        JP NC,SGEN__
3064
        ADD A,A
69 savelij 3065
        ADD A,LOW (SGENTBF)
36 savelij 3066
        LD L,A
69 savelij 3067
        LD H,HIGH (SGENTBF)
36 savelij 3068
        LD A,(HL)
3069
        INC L
3070
        LD H,(HL)
3071
        LD L,A
3072
        LD A,C
3073
        JP (HL)
3074
 
3075
SGEN1   EXX
3076
        ADD A,(HL)
3077
        RRA
3078
        LD (DE),A
3079
        INC E
3080
        EXX
3081
        JP SGEN_
3082
 
3083
SGEN2   EXX
3084
        SUB (HL)
3085
        EXX
69 savelij 3086
        LD H,HIGH (DIVTAB3)
36 savelij 3087
        JP NC,SGEN2_2
3088
        INC H
3089
SGEN2_2 LD L,A
3090
        LD A,(HL)
3091
        EXX
3092
        ADD A,(HL)
3093
        LD (DE),A
3094
        INC E
3095
        ADD A,(HL)
3096
        RRA
3097
        LD (DE),A
3098
        INC E
3099
        EXX
3100
        JP SGEN_
3101
 
3102
SGEN3   EXX
3103
        ADD A,(HL)
3104
        RRA
3105
        EXX
3106
        LD L,A
3107
        ADD A,C
3108
        RRA
3109
        EXX
3110
        LD (DE),A
3111
        INC E
3112
        EXX
3113
        LD A,L
3114
        EXX
3115
        LD (DE),A
3116
        INC E
3117
        ADD A,(HL)
3118
        RRA
3119
        LD (DE),A
3120
        INC E
3121
        EXX
3122
        JP SGEN_
3123
 
3124
SGEN4   EXX
3125
        ADD A,(HL)
3126
        RRA
3127
        EXX
3128
        LD L,A
3129
        ADD A,C
3130
        RRA
3131
        EXX
3132
        LD (DE),A
3133
        INC E
3134
        EXX
3135
        LD A,L
3136
        EXX
3137
        LD (DE),A
3138
        INC E
3139
        LD (DE),A
3140
        INC E
3141
        ADD A,(HL)
3142
        RRA
3143
        LD (DE),A
3144
        INC E
3145
        EXX
3146
        JP SGEN_
3147
 
3148
SGEN5   EXX
3149
        ADD A,(HL)
3150
        RRA
3151
        EXX
3152
        LD L,A
3153
        ADD A,C
3154
        RRA
3155
        EXX
3156
        LD (DE),A
3157
        INC E
3158
        LD (DE),A
3159
        INC E
3160
        EXX
3161
        LD A,L
3162
        EXX
3163
        LD (DE),A
3164
        INC E
3165
        ADD A,(HL)
3166
        RRA
3167
        LD (DE),A
3168
        INC E
3169
        LD (DE),A
3170
        INC E
3171
        EXX
3172
        JP SGEN_
3173
 
3174
SGEN6   EXX
3175
        ADD A,(HL)
3176
        RRA
3177
        EXX
3178
        LD L,A
3179
        ADD A,C
3180
        RRA
3181
        EXX
3182
        LD (DE),A
3183
        INC E
3184
        LD (DE),A
3185
        INC E
3186
        EXX
3187
        LD A,L
3188
        EXX
3189
        LD (DE),A
3190
        INC E
3191
        LD (DE),A
3192
        INC E
3193
        ADD A,(HL)
3194
        RRA
3195
        LD (DE),A
3196
        INC E
3197
        LD (DE),A
3198
        INC E
3199
        EXX
3200
        JP SGEN_
3201
 
3202
SGEN7   EXX
3203
        ADD A,(HL)
3204
        RRA
3205
        EXX
3206
        LD L,A
3207
        ADD A,C
3208
        RRA
3209
        LD H,A
3210
        ADD A,C
3211
        RRA
3212
        EXX
3213
        LD (DE),A
3214
        INC E
3215
        EXX
3216
        LD A,H
3217
        EXX
3218
        LD (DE),A
3219
        INC E
3220
        EXX
3221
        ADD A,L
3222
        RRA
3223
        EXX
3224
        LD (DE),A
3225
        INC E
3226
        EXX
3227
        LD A,L
3228
        EXX
3229
        LD (DE),A
3230
        INC E
3231
        ADD A,(HL)
3232
        RRA
3233
        EXX
3234
        LD H,A
3235
        ADD A,L
3236
        RRA
3237
        EXX
3238
        LD (DE),A
3239
        INC E
3240
        EXX
3241
        LD A,H
3242
        EXX
3243
        LD (DE),A
3244
        INC E
3245
        ADD A,(HL)
3246
        RRA
3247
        LD (DE),A
3248
        INC E
3249
        EXX
3250
        JP SGEN_
3251
 
3252
SGEN8   EXX
3253
        ADD A,(HL)
3254
        RRA
3255
        EXX
3256
        LD L,A
3257
        ADD A,C
3258
        RRA
3259
        LD H,A
3260
        ADD A,C
3261
        RRA
3262
        EXX
3263
        LD (DE),A
3264
        INC E
3265
        EXX
3266
        LD A,H
3267
        EXX
3268
        LD (DE),A
3269
        INC E
3270
        EXX
3271
        ADD A,L
3272
        RRA
3273
        EXX
3274
        LD (DE),A
3275
        INC E
3276
        EXX
3277
        LD A,L
3278
        EXX
3279
        LD (DE),A
3280
        INC E
3281
        LD (DE),A
3282
        INC E
3283
        ADD A,(HL)
3284
        RRA
3285
        EXX
3286
        LD H,A
3287
        ADD A,L
3288
        RRA
3289
        EXX
3290
        LD (DE),A
3291
        INC E
3292
        EXX
3293
        LD A,H
3294
        EXX
3295
        LD (DE),A
3296
        INC E
3297
        ADD A,(HL)
3298
        RRA
3299
        LD (DE),A
3300
        INC E
3301
        EXX
3302
        JP SGEN_
3303
 
3304
SGEN9   EXX
3305
        ADD A,(HL)
3306
        RRA
3307
        EXX
3308
        LD L,A
3309
        ADD A,C
3310
        RRA
3311
        LD H,A
3312
        ADD A,C
3313
        RRA
3314
        EXX
3315
        LD (DE),A
3316
        INC E
3317
        EXX
3318
        LD A,H
3319
        EXX
3320
        LD (DE),A
3321
        INC E
3322
        LD (DE),A
3323
        INC E
3324
        EXX
3325
        ADD A,L
3326
        RRA
3327
        EXX
3328
        LD (DE),A
3329
        INC E
3330
        EXX
3331
        LD A,L
3332
        EXX
3333
        LD (DE),A
3334
        INC E
3335
        ADD A,(HL)
3336
        RRA
3337
        EXX
3338
        LD H,A
3339
        ADD A,L
3340
        RRA
3341
        EXX
3342
        LD (DE),A
3343
        INC E
3344
        EXX
3345
        LD A,H
3346
        EXX
3347
        LD (DE),A
3348
        INC E
3349
        LD (DE),A
3350
        INC E
3351
        ADD A,(HL)
3352
        RRA
3353
        LD (DE),A
3354
        INC E
3355
        EXX
3356
        JP SGEN_
3357
 
3358
SGEN__  JP SGEN_
3359
 
3360
SGEN_   LD A,E
69 savelij 3361
        CP 0X09
36 savelij 3362
        JR NC,S9
3363
        ADD A,A
3364
        LD L,A
69 savelij 3365
        LD H,HIGH (SGENTBE)
36 savelij 3366
        LD A,(HL)
3367
        INC L
3368
        LD H,(HL)
3369
        LD L,A
3370
        JP (HL)
3371
 
3372
S9      EXX
69 savelij 3373
        LD C,0XFF
36 savelij 3374
        EXX
69 savelij 3375
        LD D,0X08
36 savelij 3376
        JP S8
3377
 
3378
S0      EXX
69 savelij 3379
        LD C,0X00
36 savelij 3380
        EXX
69 savelij 3381
        LD D,0X01
36 savelij 3382
        JP S1
3383
 
3384
S3      EXX
3385
        PUSH BC
3386
        EXX
3387
        POP HL
3388
        LD B,E
3389
        LD E,H
3390
        LD C,L
3391
        CALL S3_
69 savelij 3392
S_RET   LD IYL,E
36 savelij 3393
        LD E,D
69 savelij 3394
        LD D,IYL
36 savelij 3395
        PUSH DE
3396
        EXX
3397
        POP BC
3398
        RET
3399
 
3400
S4      EXX
3401
        PUSH BC
3402
        EXX
3403
        POP HL
3404
        LD B,E
3405
        LD E,H
3406
        LD C,L
3407
        CALL S4_
3408
        JP S_RET
3409
 
3410
S5      EXX
3411
        PUSH BC
3412
        EXX
3413
        POP HL
3414
        LD B,E
3415
        LD E,H
3416
        LD C,L
3417
        CALL S5_
3418
        JP S_RET
3419
 
3420
S6      EXX
3421
        PUSH BC
3422
        EXX
3423
        POP HL
3424
        LD B,E
3425
        LD E,H
3426
        LD C,L
3427
        CALL S6_
3428
        JP S_RET
3429
 
3430
S7      EXX
3431
        PUSH BC
3432
        EXX
3433
        POP HL
3434
        LD B,E
3435
        LD E,H
3436
        LD C,L
3437
        CALL S7_
3438
        JP S_RET
3439
 
3440
S8      EXX
3441
        PUSH BC
3442
        EXX
3443
        POP HL
3444
        LD B,E
3445
        LD E,H
3446
        LD C,L
3447
        CALL S8_
3448
        JP S_RET
3449
 
3450
;INCLUDE "SGEN1_L.a80"
3451
S1      EXX
3452
        SLA C
3453
        JR C,S1_6
69 savelij 3454
        LD A,IXL
36 savelij 3455
        INC A
3456
        JR Z,S1_2
3457
        DEC A
3458
        ADD A,E
3459
        JR Z,S1_4
3460
        JR C,S1_2
3461
        BIT 7,C
3462
        JR Z,S1_4
69 savelij 3463
        LD IYL,A
3464
        LD A,IXL
36 savelij 3465
        SRL A
3466
        SRL A
69 savelij 3467
        ADD A,IYL
36 savelij 3468
        JR Z,S1_4
3469
        JR NC,S1_4
69 savelij 3470
S1_2    DB 0XCB,0X30;SLI B
36 savelij 3471
        JR NC,S1_3
3472
        LD A,E
69 savelij 3473
        AND 0X03
36 savelij 3474
        JP Z,S11L0_1
3475
        DEC A
3476
        JP Z,S11L1_1
3477
        DEC A
3478
        JP Z,S11L2_1
3479
        JP S11L3
3480
S1_3    LD A,E
69 savelij 3481
        AND 0X03
36 savelij 3482
        JP Z,S11H0_1
3483
        DEC A
3484
        JP Z,S11H1_1
3485
        DEC A
3486
        JP Z,S11H2_1
3487
        JP S11H3
69 savelij 3488
S1_4    DB 0XCB,0X30;SLI B
36 savelij 3489
        JR NC,S1_5
3490
        LD A,E
69 savelij 3491
        AND 0X03
36 savelij 3492
        JP Z,S12L0_1
3493
        DEC A
3494
        JP Z,S12L1_1
3495
        DEC A
3496
        JP Z,S12L2_1
3497
        JP S12L3
3498
S1_5    LD A,E
69 savelij 3499
        AND 0X03
36 savelij 3500
        JP Z,S12H0_1
3501
        DEC A
3502
        JP Z,S12H1_1
3503
        DEC A
3504
        JP Z,S12H2_1
3505
        JP S12H3
3506
 
69 savelij 3507
S1_6    LD A,IXL
36 savelij 3508
        INC A
3509
        JR Z,S1_7
3510
        DEC A
3511
        SRL A
69 savelij 3512
        ADD A,IXL
36 savelij 3513
        JR Z,S1_9
3514
        JR C,S1_7
3515
        ADD A,E
3516
        JR C,S1_7
3517
        BIT 7,C
3518
        JR Z,S1_9
69 savelij 3519
        LD IYL,A
3520
        LD A,IXL
36 savelij 3521
        SRL A
3522
        SRL A
69 savelij 3523
        ADD A,IYL
36 savelij 3524
        JR Z,S1_9
3525
        JR NC,S1_9
69 savelij 3526
S1_7    DB 0XCB,0X30;SLI B
36 savelij 3527
        JR C,S1_8
3528
        LD A,E
69 savelij 3529
        AND 0X03
36 savelij 3530
        JP Z,S13L0
3531
        DEC A
3532
        JP Z,S13L1
3533
        DEC A
3534
        JP Z,S13L2
3535
        JP S13L3
3536
S1_8    LD A,E
69 savelij 3537
        AND 0X03
36 savelij 3538
        JP Z,S13H0
3539
        DEC A
3540
        JP Z,S13H1
3541
        DEC A
3542
        JP Z,S13H2
3543
        JP S13H3
69 savelij 3544
S1_9    DB 0XCB,0X30;SLI B
36 savelij 3545
        JR C,S1_A
3546
        LD A,E
69 savelij 3547
        AND 0X03
36 savelij 3548
        JP Z,S14L0
3549
        DEC A
3550
        JP Z,S14L1
3551
        DEC A
3552
        JP Z,S14L2
3553
        JP S14L3
3554
S1_A    LD A,E
69 savelij 3555
        AND 0X03
36 savelij 3556
        JP Z,S14H0
3557
        DEC A
3558
        JP Z,S14H1
3559
        DEC A
3560
        JP Z,S14H2
3561
        JP S14H3
3562
 
3563
S11M0   LD B,A
3564
        DEC HL
3565
        LD A,(HL)
3566
        INC HL
3567
        ADD A,(HL)
3568
        RRA
3569
        LD (DE),A
3570
        INC E
3571
        LDI
3572
        INC C
3573
S11L2_1 LD A,B
3574
S11L2_2 LDI
3575
        INC C
3576
        ADD A,C
3577
        LD B,A
3578
        JP NC,S11L3
3579
        ADD A,C
3580
        JP C,S11M3
3581
S11G3   LD B,A
3582
        DEC HL
3583
        LD A,(HL)
3584
        INC HL
3585
        ADD A,(HL)
3586
        RRA
3587
        LD (DE),A
3588
        INC E
3589
        JR Z,S11R1
3590
        LDI
3591
        INC C
3592
S11H1_1 LD A,B
3593
S11H1_2 LDI
3594
        INC C
3595
        ADD A,C
3596
        JP NC,S11H2_2
3597
        LDI
3598
        INC C
3599
        ADD A,C
3600
        LD B,A
3601
        JP NC,S11L3
3602
        ADD A,C
3603
        JP C,S11M3
3604
        JP S11G3
3605
 
69 savelij 3606
S11R1   LD IYL,A
36 savelij 3607
        LD A,B
3608
        SUB C
3609
        LD B,A
3610
        SRL B
69 savelij 3611
        LD C,0X00
3612
        LD A,IYL
36 savelij 3613
        RET
3614
 
3615
S11M1   LD B,A
3616
        DEC HL
3617
        LD A,(HL)
3618
        INC HL
3619
        ADD A,(HL)
3620
        RRA
3621
        LD (DE),A
3622
        INC E
3623
        LDI
3624
        INC C
3625
S11L3   LD A,(HL)
3626
        INC HL
3627
        LD (DE),A
3628
        INC E
3629
        JR Z,S11R2
3630
        LD A,B
3631
        ADD A,C
3632
        JP NC,S11L0_2
3633
        ADD A,C
3634
        JR C,S11M0
3635
S11G0   LD B,A
3636
        DEC HL
3637
        LD A,(HL)
3638
        INC HL
3639
        ADD A,(HL)
3640
        RRA
3641
        LD (DE),A
3642
        INC E
3643
        LDI
3644
        INC C
3645
S11H2_1 LD A,B
3646
S11H2_2 LDI
3647
        INC C
3648
        ADD A,C
3649
        LD B,A
3650
        JP NC,S11H3
3651
        LD A,(HL)
3652
        INC HL
3653
        LD (DE),A
3654
        INC E
3655
        JR Z,S11R2
3656
        LD A,B
3657
        ADD A,C
3658
        JP NC,S11L0_2
3659
        ADD A,C
3660
        JP C,S11M0
3661
        JP S11G0
3662
 
69 savelij 3663
S11R2   LD IYL,A
36 savelij 3664
        LD A,B
3665
        ADD A,C
3666
        LD B,A
3667
        JR NC,S11R2_2
69 savelij 3668
        LD C,0X01
36 savelij 3669
        SRL B
69 savelij 3670
        LD A,IYL
36 savelij 3671
        RET
69 savelij 3672
S11R2_2 LD C,0X00
36 savelij 3673
        RRC B
69 savelij 3674
        LD A,IYL
36 savelij 3675
        RET
3676
 
3677
S11M2   LD B,A
3678
        DEC HL
3679
        LD A,(HL)
3680
        INC HL
3681
        ADD A,(HL)
3682
        RRA
3683
        LD (DE),A
3684
        INC E
3685
        LD A,(HL)
3686
        INC HL
3687
        LD (DE),A
3688
        INC E
3689
        JR Z,S11R3
3690
S11L0_1 LD A,B
3691
S11L0_2 LDI
3692
        INC C
3693
        ADD A,C
3694
        JP NC,S11L1_2
3695
        ADD A,C
3696
        JR C,S11M1
3697
S11G1   LD B,A
3698
        DEC HL
3699
        LD A,(HL)
3700
        INC HL
3701
        ADD A,(HL)
3702
        RRA
3703
        LD (DE),A
3704
        INC E
3705
        LDI
3706
        INC C
3707
S11H3   LD A,(HL)
3708
        INC HL
3709
        LD (DE),A
3710
        INC E
3711
        JR Z,S11R4
3712
        LD A,B
3713
        ADD A,C
3714
        JP NC,S11H0_2
3715
        LDI
3716
        INC C
3717
        ADD A,C
3718
        JP NC,S11L1_2
3719
        ADD A,C
3720
        JP C,S11M1
3721
        JP S11G1
3722
 
69 savelij 3723
S11R3   LD C,0X00
36 savelij 3724
        RRC B
3725
        RET
3726
 
69 savelij 3727
S11R4   LD IYL,A
36 savelij 3728
        LD A,B
3729
        ADD A,C
3730
        LD B,A
3731
        JR NC,S11R4_2
69 savelij 3732
        LD C,0X00
36 savelij 3733
        RRC B
69 savelij 3734
        LD A,IYL
36 savelij 3735
        RET
69 savelij 3736
S11R4_2 LD C,0X00
36 savelij 3737
        SRL B
69 savelij 3738
        LD A,IYL
36 savelij 3739
        RET
3740
 
69 savelij 3741
S11R5   LD IYL,A
36 savelij 3742
        LD A,B
3743
        SUB C
3744
        LD B,A
69 savelij 3745
        LD C,0X00
36 savelij 3746
        SRL B
69 savelij 3747
        LD A,IYL
36 savelij 3748
        RET
3749
 
3750
S11M3   LD B,A
3751
        DEC HL
3752
        LD A,(HL)
3753
        INC HL
3754
        ADD A,(HL)
3755
        RRA
3756
        LD (DE),A
3757
        INC E
3758
        JR Z,S11R5
3759
        LDI
3760
        INC C
3761
S11L1_1 LD A,B
3762
S11L1_2 LDI
3763
        INC C
3764
        ADD A,C
3765
        JP NC,S11L2_2
3766
        ADD A,C
3767
        JR C,S11M2
3768
S11G2   LD B,A
3769
        DEC HL
3770
        LD A,(HL)
3771
        INC HL
3772
        ADD A,(HL)
3773
        RRA
3774
        LD (DE),A
3775
        INC E
3776
        LD A,(HL)
3777
        INC HL
3778
        LD (DE),A
3779
        INC E
3780
        JR Z,S11R6
3781
S11H0_1 LD A,B
3782
S11H0_2 LDI
3783
        INC C
3784
        ADD A,C
3785
        JP NC,S11H1_2
3786
        LDI
3787
        INC C
3788
        ADD A,C
3789
        JP NC,S11L2_2
3790
        ADD A,C
3791
        JP C,S11M2
3792
        JP S11G2
3793
 
69 savelij 3794
S11R6   LD C,0X00
36 savelij 3795
        SRL B
3796
        RET
3797
 
3798
S12M0   LD B,A
3799
        DEC HL
3800
        LD A,(HL)
3801
        INC HL
3802
        ADD A,(HL)
3803
        RRA
3804
        LD (DE),A
3805
        INC E
3806
        LDI
3807
        INC C
69 savelij 3808
        DEC IXL
36 savelij 3809
        JR Z,S12R3_3
3810
S12L2_1 LD A,B
3811
S12L2_2 LDI
3812
        INC C
69 savelij 3813
        DEC IXL
36 savelij 3814
        JR Z,S12R2_5
3815
        ADD A,C
3816
        LD B,A
3817
        JP NC,S12L3
3818
        ADD A,C
3819
        JP C,S12M3
3820
S12G3   LD B,A
3821
        DEC HL
3822
        LD A,(HL)
3823
        INC HL
3824
        ADD A,(HL)
3825
        RRA
3826
        LD (DE),A
3827
        INC E
3828
        JR Z,S12R1
3829
        LDI
3830
        INC C
69 savelij 3831
        DEC IXL
36 savelij 3832
        JR Z,S12R6_3
3833
S12H1_1 LD A,B
3834
S12H1_2 LDI
3835
        INC C
69 savelij 3836
        DEC IXL
36 savelij 3837
        JR Z,S12R4_4
3838
        ADD A,C
3839
        JP NC,S12H2_2
3840
        LDI
3841
        INC C
69 savelij 3842
        DEC IXL
36 savelij 3843
        JR Z,S12R2_5
3844
        ADD A,C
3845
        LD B,A
3846
        JP NC,S12L3
3847
        ADD A,C
3848
        JP C,S12M3
3849
        JP S12G3
3850
 
3851
S12R2_5 JR S12R2_3
3852
S12R6_3 JP S12R6_2
3853
 
69 savelij 3854
S12R1   LD IYL,A
36 savelij 3855
        LD A,B
3856
        SUB C
3857
        LD B,A
3858
        SRL B
69 savelij 3859
        LD C,0X00
3860
        LD A,IYL
36 savelij 3861
        RET
3862
 
3863
S12R3_3 DEC HL
3864
        LD A,(HL)
3865
        INC HL
69 savelij 3866
        LD C,0X00
36 savelij 3867
        RRC B
3868
        RET
3869
 
3870
S12R4_4 JP S12R4_3
3871
 
3872
S12M1   LD B,A
3873
        DEC HL
3874
        LD A,(HL)
3875
        INC HL
3876
        ADD A,(HL)
3877
        RRA
3878
        LD (DE),A
3879
        INC E
3880
        LDI
3881
        INC C
69 savelij 3882
        DEC IXL
36 savelij 3883
        JR Z,S12R3_3
3884
S12L3   LD A,(HL)
3885
        INC HL
3886
        LD (DE),A
3887
        INC E
3888
        JR Z,S12R2
69 savelij 3889
        DEC IXL
36 savelij 3890
        JR Z,S12R2
3891
        LD A,B
3892
        ADD A,C
3893
        JP NC,S12L0_2
3894
        ADD A,C
3895
        JP C,S12M0
3896
S12G0   LD B,A
3897
        DEC HL
3898
        LD A,(HL)
3899
        INC HL
3900
        ADD A,(HL)
3901
        RRA
3902
        LD (DE),A
3903
        INC E
3904
        LDI
3905
        INC C
69 savelij 3906
        DEC IXL
36 savelij 3907
        JR Z,S12R6_3
3908
S12H2_1 LD A,B
3909
S12H2_2 LDI
3910
        INC C
69 savelij 3911
        DEC IXL
36 savelij 3912
        JR Z,S12R4_4
3913
        ADD A,C
3914
        LD B,A
3915
        JP NC,S12H3
3916
        LD A,(HL)
3917
        INC HL
3918
        LD (DE),A
3919
        INC E
3920
        JR Z,S12R2
69 savelij 3921
        DEC IXL
36 savelij 3922
        JR Z,S12R2
3923
        LD A,B
3924
        ADD A,C
3925
        JP NC,S12L0_2
3926
        ADD A,C
3927
        JP C,S12M0
3928
        JP S12G0
3929
 
3930
S12R2_3 DEC HL
3931
        LD A,(HL)
3932
        INC HL
69 savelij 3933
S12R2   LD IYL,A
36 savelij 3934
        LD A,B
3935
        ADD A,C
3936
        LD B,A
3937
        JR NC,S12R2_2
69 savelij 3938
        LD C,0X01
36 savelij 3939
        SRL B
69 savelij 3940
        LD A,IYL
36 savelij 3941
        RET
69 savelij 3942
S12R2_2 LD C,0X00
36 savelij 3943
        RRC B
69 savelij 3944
        LD A,IYL
36 savelij 3945
        RET
3946
 
3947
S12M2   LD B,A
3948
        DEC HL
3949
        LD A,(HL)
3950
        INC HL
3951
        ADD A,(HL)
3952
        RRA
3953
        LD (DE),A
3954
        INC E
3955
        LD A,(HL)
3956
        INC HL
3957
        LD (DE),A
3958
        INC E
3959
        JR Z,S12R3
69 savelij 3960
        DEC IXL
36 savelij 3961
        JR Z,S12R3
3962
S12L0_1 LD A,B
3963
S12L0_2 LDI
3964
        INC C
69 savelij 3965
        DEC IXL
36 savelij 3966
        JR Z,S12R2_3
3967
        ADD A,C
3968
        JP NC,S12L1_2
3969
        ADD A,C
3970
        JP C,S12M1
3971
S12G1   LD B,A
3972
        DEC HL
3973
        LD A,(HL)
3974
        INC HL
3975
        ADD A,(HL)
3976
        RRA
3977
        LD (DE),A
3978
        INC E
3979
        LDI
3980
        INC C
69 savelij 3981
        DEC IXL
36 savelij 3982
        JR Z,S12R6_5
3983
S12H3   LD A,(HL)
3984
        INC HL
3985
        LD (DE),A
3986
        INC E
3987
        JR Z,S12R4
69 savelij 3988
        DEC IXL
36 savelij 3989
        JR Z,S12R4
3990
        LD A,B
3991
        ADD A,C
3992
        JP NC,S12H0_2
3993
        LDI
3994
        INC C
69 savelij 3995
        DEC IXL
36 savelij 3996
        JR Z,S12R2_3
3997
        ADD A,C
3998
        JP NC,S12L1_2
3999
        ADD A,C
4000
        JP C,S12M1
4001
        JP S12G1
4002
 
4003
S12R6_5 JP S12R6_2
4004
 
4005
S12R3_2 DEC HL
4006
        LD A,(HL)
4007
        INC HL
69 savelij 4008
S12R3   LD C,0X00
36 savelij 4009
        RRC B
4010
        RET
4011
 
4012
S12R4_3 DEC HL
4013
        LD A,(HL)
4014
        INC HL
69 savelij 4015
S12R4   LD IYL,A
36 savelij 4016
        LD A,B
4017
        ADD A,C
4018
        LD B,A
4019
        JR NC,S12R4_2
69 savelij 4020
        LD C,0X00
36 savelij 4021
        RRC B
69 savelij 4022
        LD A,IYL
36 savelij 4023
        RET
69 savelij 4024
S12R4_2 LD C,0X00
36 savelij 4025
        SRL B
69 savelij 4026
        LD A,IYL
36 savelij 4027
        RET
4028
 
69 savelij 4029
S12R5   LD IYL,A
36 savelij 4030
        LD A,B
4031
        SUB C
4032
        LD B,A
69 savelij 4033
        LD C,0X00
36 savelij 4034
        SRL B
69 savelij 4035
        LD A,IYL
36 savelij 4036
        RET
4037
 
4038
S12M3   LD B,A
4039
        DEC HL
4040
        LD A,(HL)
4041
        INC HL
4042
        ADD A,(HL)
4043
        RRA
4044
        LD (DE),A
4045
        INC E
4046
        JR Z,S12R5
4047
        LDI
4048
        INC C
69 savelij 4049
        DEC IXL
36 savelij 4050
        JR Z,S12R3_2
4051
S12L1_1 LD A,B
4052
S12L1_2 LDI
4053
        INC C
69 savelij 4054
        DEC IXL
36 savelij 4055
        JR Z,S12R2_4
4056
        ADD A,C
4057
        JP NC,S12L2_2
4058
        ADD A,C
4059
        JP C,S12M2
4060
S12G2   LD B,A
4061
        DEC HL
4062
        LD A,(HL)
4063
        INC HL
4064
        ADD A,(HL)
4065
        RRA
4066
        LD (DE),A
4067
        INC E
4068
        LD A,(HL)
4069
        INC HL
4070
        LD (DE),A
4071
        INC E
4072
        JR Z,S12R6
69 savelij 4073
        DEC IXL
36 savelij 4074
        JR Z,S12R6
4075
S12H0_1 LD A,B
4076
S12H0_2 LDI
4077
        INC C
69 savelij 4078
        DEC IXL
36 savelij 4079
        JR Z,S12R4_3
4080
        ADD A,C
4081
        JP NC,S12H1_2
4082
        LDI
4083
        INC C
69 savelij 4084
        DEC IXL
36 savelij 4085
        JR Z,S12R2_4
4086
        ADD A,C
4087
        JP NC,S12L2_2
4088
        ADD A,C
4089
        JP C,S12M2
4090
        JP S12G2
4091
 
4092
S12R6_2 DEC HL
4093
        LD A,(HL)
4094
        INC HL
69 savelij 4095
S12R6   LD C,0X00
36 savelij 4096
        SRL B
4097
        RET
4098
 
4099
S12R2_4 JP S12R2_3
4100
 
4101
S13R1   JR NC,S13R1_2
4102
        SRL B
69 savelij 4103
        LD C,0X01
36 savelij 4104
        RET
4105
S13R1_2 RRC B
69 savelij 4106
        LD C,0X00
36 savelij 4107
        RET
4108
S13R2   SRL B
69 savelij 4109
        LD C,0X00
36 savelij 4110
        RET
4111
 
4112
S13J0   ADD A,(HL)
4113
        RRA
4114
        LD (DE),A
4115
        INC E
4116
S13H1   LD A,B
4117
        ADD A,C
4118
        LD B,A
4119
        LD A,(HL)
4120
        INC HL
4121
        LD (DE),A
4122
        INC E
4123
        JP C,S13J2
4124
S13K2   ADD A,(HL)
4125
        RRA
4126
        LD (DE),A
4127
        INC E
4128
S13L3   LD A,B
4129
        ADD A,C
4130
        LD B,A
4131
        LD A,(HL)
4132
        INC HL
4133
        LD (DE),A
4134
        INC E
4135
        JR Z,S13R1
4136
        JP C,S13K0
4137
        LD A,B
4138
        ADD A,C
4139
        LD B,A
4140
        LD A,(HL)
4141
        INC HL
4142
        LD (DE),A
4143
        INC E
4144
        JP NC,S13K1
4145
S13J1   ADD A,(HL)
4146
        RRA
4147
        LD (DE),A
4148
        INC E
4149
S13H2   LD A,B
4150
        ADD A,C
4151
        LD B,A
4152
        LD A,(HL)
4153
        INC HL
4154
        LD (DE),A
4155
        INC E
4156
        JP C,S13J3
4157
S13K3   ADD A,(HL)
4158
        RRA
4159
        LD (DE),A
4160
        INC E
4161
        JR Z,S13R2
4162
S13L0   LD A,B
4163
        ADD A,C
4164
        LD B,A
4165
        LD A,(HL)
4166
        INC HL
4167
        LD (DE),A
4168
        INC E
4169
        JP C,S13K1
4170
        LD A,B
4171
        ADD A,C
4172
        LD B,A
4173
        LD A,(HL)
4174
        INC HL
4175
        LD (DE),A
4176
        INC E
4177
        JP NC,S13K2
4178
S13J2   ADD A,(HL)
4179
        RRA
4180
        LD (DE),A
4181
        INC E
4182
S13H3   LD A,B
4183
        ADD A,C
4184
        LD B,A
4185
        LD A,(HL)
4186
        INC HL
4187
        LD (DE),A
4188
        INC E
4189
        JR Z,S13R3
4190
        JP C,S13J0
4191
S13K0   ADD A,(HL)
4192
        RRA
4193
        LD (DE),A
4194
        INC E
4195
S13L1   LD A,B
4196
        ADD A,C
4197
        LD B,A
4198
        LD A,(HL)
4199
        INC HL
4200
        LD (DE),A
4201
        INC E
4202
        JP C,S13K2
4203
        LD A,B
4204
        ADD A,C
4205
        LD B,A
4206
        LD A,(HL)
4207
        INC HL
4208
        LD (DE),A
4209
        INC E
4210
        JP NC,S13K3
4211
S13J3   ADD A,(HL)
4212
        RRA
4213
        LD (DE),A
4214
        INC E
4215
        JR Z,S13R4
4216
S13H0   LD A,B
4217
        ADD A,C
4218
        LD B,A
4219
        LD A,(HL)
4220
        INC HL
4221
        LD (DE),A
4222
        INC E
4223
        JP C,S13J1
4224
S13K1   ADD A,(HL)
4225
        RRA
4226
        LD (DE),A
4227
        INC E
4228
S13L2   LD A,B
4229
        ADD A,C
4230
        LD B,A
4231
        LD A,(HL)
4232
        INC HL
4233
        LD (DE),A
4234
        INC E
4235
        JP C,S13K3
4236
        LD A,B
4237
        ADD A,C
4238
        LD B,A
4239
        LD A,(HL)
4240
        INC HL
4241
        LD (DE),A
4242
        INC E
4243
        JR Z,S13R5
4244
        JP NC,S13K0
4245
        JP S13J0
4246
 
69 savelij 4247
S13R3   LD C,0X01
36 savelij 4248
        JR NC,S13R3_2
4249
        RRC B
4250
        RET
4251
 
4252
S13R3_2 SRL B
4253
        RET
4254
 
4255
S13R4   RRC B
69 savelij 4256
        LD C,0X00
36 savelij 4257
        RET
4258
 
69 savelij 4259
S13R5   LD C,0X01
36 savelij 4260
        JR NC,S13R5_2
4261
        RRC B
4262
        RET
4263
 
4264
S13R5_2 SRL B
4265
        RET
4266
 
4267
S14R5_3 JP S14R5
4268
 
4269
S14R1   JR NC,S14R1_2
4270
        SRL B
69 savelij 4271
        LD C,0X01
36 savelij 4272
        RET
4273
 
4274
S14R1_2 RRC B
69 savelij 4275
        LD C,0X00
36 savelij 4276
        RET
4277
 
4278
S14R2   SRL B
69 savelij 4279
        LD C,0X00
36 savelij 4280
        RET
4281
 
4282
S14J0   ADD A,(HL)
4283
        RRA
4284
        LD (DE),A
4285
        INC E
4286
S14H1   LD A,B
4287
        ADD A,C
4288
        LD B,A
4289
        LD A,(HL)
4290
        INC HL
4291
        LD (DE),A
4292
        INC E
69 savelij 4293
        DEC IXL
36 savelij 4294
        JR Z,S14R5_3
4295
        JP C,S14J2
4296
S14K2   ADD A,(HL)
4297
        RRA
4298
        LD (DE),A
4299
        INC E
4300
S14L3   LD A,B
4301
        ADD A,C
4302
        LD B,A
4303
        LD A,(HL)
4304
        INC HL
4305
        LD (DE),A
4306
        INC E
4307
        JR Z,S14R1
69 savelij 4308
        DEC IXL
36 savelij 4309
        JR Z,S14R1
4310
        JP C,S14K0
4311
        LD A,B
4312
        ADD A,C
4313
        LD B,A
4314
        LD A,(HL)
4315
        INC HL
4316
        LD (DE),A
4317
        INC E
69 savelij 4318
        DEC IXL
36 savelij 4319
        JR Z,S14R5_3
4320
        JP NC,S14K1
4321
S14J1   ADD A,(HL)
4322
        RRA
4323
        LD (DE),A
4324
        INC E
4325
S14H2   LD A,B
4326
        ADD A,C
4327
        LD B,A
4328
        LD A,(HL)
4329
        INC HL
4330
        LD (DE),A
4331
        INC E
69 savelij 4332
        DEC IXL
36 savelij 4333
        JR Z,S14R5_3
4334
        JP C,S14J3
4335
S14K3   ADD A,(HL)
4336
        RRA
4337
        LD (DE),A
4338
        INC E
4339
        JR Z,S14R2
4340
S14L0   LD A,B
4341
        ADD A,C
4342
        LD B,A
4343
        LD A,(HL)
4344
        INC HL
4345
        LD (DE),A
4346
        INC E
69 savelij 4347
        DEC IXL
36 savelij 4348
        JR Z,S14R1
4349
        JP C,S14K1
4350
        LD A,B
4351
        ADD A,C
4352
        LD B,A
4353
        LD A,(HL)
4354
        INC HL
4355
        LD (DE),A
4356
        INC E
69 savelij 4357
        DEC IXL
36 savelij 4358
        JR Z,S14R5
4359
        JP NC,S14K2
4360
S14J2   ADD A,(HL)
4361
        RRA
4362
        LD (DE),A
4363
        INC E
4364
S14H3   LD A,B
4365
        ADD A,C
4366
        LD B,A
4367
        LD A,(HL)
4368
        INC HL
4369
        LD (DE),A
4370
        INC E
4371
        JR Z,S14R5
69 savelij 4372
        DEC IXL
36 savelij 4373
        JR Z,S14R5
4374
        JP C,S14J0
4375
S14K0   ADD A,(HL)
4376
        RRA
4377
        LD (DE),A
4378
        INC E
4379
S14L1   LD A,B
4380
        ADD A,C
4381
        LD B,A
4382
        LD A,(HL)
4383
        INC HL
4384
        LD (DE),A
4385
        INC E
69 savelij 4386
        DEC IXL
36 savelij 4387
        JR Z,S14R1_3
4388
        JP C,S14K2
4389
        LD A,B
4390
        ADD A,C
4391
        LD B,A
4392
        LD A,(HL)
4393
        INC HL
4394
        LD (DE),A
4395
        INC E
69 savelij 4396
        DEC IXL
36 savelij 4397
        JR Z,S14R5
4398
        JP NC,S14K3
4399
S14J3   ADD A,(HL)
4400
        RRA
4401
        LD (DE),A
4402
        INC E
4403
        JR Z,S14R4
4404
S14H0   LD A,B
4405
        ADD A,C
4406
        LD B,A
4407
        LD A,(HL)
4408
        INC HL
4409
        LD (DE),A
4410
        INC E
69 savelij 4411
        DEC IXL
36 savelij 4412
        JR Z,S14R5
4413
        JP C,S14J1
4414
S14K1   ADD A,(HL)
4415
        RRA
4416
        LD (DE),A
4417
        INC E
4418
S14L2   LD A,B
4419
        ADD A,C
4420
        LD B,A
4421
        LD A,(HL)
4422
        INC HL
4423
        LD (DE),A
4424
        INC E
69 savelij 4425
        DEC IXL
36 savelij 4426
        JR Z,S14R1_3
4427
        JP C,S14K3
4428
        LD A,B
4429
        ADD A,C
4430
        LD B,A
4431
        LD A,(HL)
4432
        INC HL
4433
        LD (DE),A
4434
        INC E
4435
        JR Z,S14R5
69 savelij 4436
        DEC IXL
36 savelij 4437
        JR Z,S14R5
4438
        JP NC,S14K0
4439
        JP S14J0
4440
 
69 savelij 4441
S14R5   LD C,0X01
36 savelij 4442
        JR NC,S14R5_2
4443
        RRC B
4444
        RET
4445
 
4446
S14R5_2 SRL B
4447
        RET
4448
 
4449
S14R4   RRC B
69 savelij 4450
        LD C,0X00
36 savelij 4451
        RET
4452
 
4453
S14R1_3 JP S14R1
4454
 
4455
;INCLUDE "SGEN2_L.a80"
69 savelij 4456
S2      LD H,HIGH (DIVTAB3)
36 savelij 4457
        LD D,H
4458
        INC D
4459
        EXX
4460
        SLA C
4461
        JR C,S2_6
69 savelij 4462
        LD A,IXL
36 savelij 4463
        ADD A,A
4464
        JR C,S2_2
4465
        ADD A,E
4466
        JR Z,S2_4
4467
        JR C,S2_2
4468
        BIT 7,C
4469
        JR Z,S2_4
69 savelij 4470
        LD IYL,A
4471
        LD A,IXL
36 savelij 4472
        SRL A
4473
        SRL A
69 savelij 4474
        ADD A,IYL
36 savelij 4475
        JR Z,S2_4
4476
        JR NC,S2_4
69 savelij 4477
S2_2    DB 0XCB,0X30;SLI B
36 savelij 4478
        JR NC,S2_3
4479
        LD A,E
69 savelij 4480
        AND 0X03
36 savelij 4481
        JP Z,S21L0
4482
        DEC A
4483
        JP Z,S21L1
4484
        DEC A
4485
        JP Z,S21L2
4486
        JP S21L3
4487
S2_3    LD A,E
69 savelij 4488
        AND 0X03
36 savelij 4489
        JP Z,S21H0
4490
        DEC A
4491
        JP Z,S21H1
4492
        DEC A
4493
        JP Z,S21H2
4494
        JP S21H3
69 savelij 4495
S2_4    DB 0XCB,0X30;SLI B
36 savelij 4496
        JR NC,S2_5
4497
        LD A,E
69 savelij 4498
        AND 0X03
36 savelij 4499
        JP Z,S22L0
4500
        DEC A
4501
        JP Z,S22L1
4502
        DEC A
4503
        JP Z,S22L2
4504
        JP S22L3
4505
S2_5    LD A,E
69 savelij 4506
        AND 0X03
36 savelij 4507
        JP Z,S22H0
4508
        DEC A
4509
        JP Z,S22H1
4510
        DEC A
4511
        JP Z,S22H2
4512
        JP S22H3
4513
 
69 savelij 4514
S2_6    LD A,IXL
36 savelij 4515
        ADD A,A
4516
        JR C,S2_7
69 savelij 4517
        LD IYL,A
4518
        LD A,IXL
36 savelij 4519
        SRL A
69 savelij 4520
        ADD A,IYL
36 savelij 4521
        JR C,S2_7
4522
        ADD A,E
4523
        JR Z,S2_9
4524
        JR C,S2_7
4525
        BIT 7,C
4526
        JR Z,S2_9
69 savelij 4527
        LD IYL,A
4528
        LD A,IXL
36 savelij 4529
        SRL A
4530
        SRL A
69 savelij 4531
        ADD A,IYL
36 savelij 4532
        JR Z,S2_9
4533
        JR NC,S2_9
69 savelij 4534
S2_7    DB 0XCB,0X30;SLI B
36 savelij 4535
        JR C,S2_8
4536
        LD A,E
69 savelij 4537
        AND 0X03
36 savelij 4538
        JP Z,S23L0
4539
        DEC A
4540
        JP Z,S23L1
4541
        DEC A
4542
        JP Z,S23L2
4543
        JP S23L3
4544
S2_8    LD A,E
69 savelij 4545
        AND 0X03
36 savelij 4546
        JP Z,S23H0
4547
        DEC A
4548
        JP Z,S23H1
4549
        DEC A
4550
        JP Z,S23H2
4551
        JP S23H3
69 savelij 4552
S2_9    DB 0XCB,0X30;SLI B
36 savelij 4553
        JR C,S2_A
4554
        LD A,E
69 savelij 4555
        AND 0X03
36 savelij 4556
        JP Z,S24L0
4557
        DEC A
4558
        JP Z,S24L1
4559
        DEC A
4560
        JP Z,S24L2
4561
        JP S24L3
4562
S2_A    LD A,E
69 savelij 4563
        AND 0X03
36 savelij 4564
        JP Z,S24H0
4565
        DEC A
4566
        JP Z,S24H1
4567
        DEC A
4568
        JP Z,S24H2
4569
        JP S24H3
4570
 
4571
S21G0   LD E,A
4572
        LD A,(DE)
4573
        EXX
4574
        ADD A,(HL)
4575
        LD (DE),A
4576
        INC E
4577
S21J1   ADD A,(HL)
4578
        RRA
4579
        LD (DE),A
4580
        INC E
4581
S21H2   LD A,B
4582
        ADD A,C
4583
        LD B,A
4584
        LD A,(HL)
4585
        INC HL
4586
        LD (DE),A
4587
        INC E
4588
        JP NC,S21J3
4589
S21K3   ADD A,(HL)
4590
        RRA
4591
        LD (DE),A
4592
        INC E
4593
        JR Z,S21R1
4594
S21L0   LD A,B
4595
        ADD A,C
4596
        LD B,A
4597
        LD A,(HL)
4598
        INC HL
4599
        LD (DE),A
4600
        INC E
4601
        JP NC,S21K1
4602
        SUB (HL)
4603
        EXX
4604
        JP C,S21G1
4605
        LD L,A
4606
        LD A,(HL)
4607
        EXX
4608
        ADD A,(HL)
4609
        LD (DE),A
4610
        INC E
4611
        ADD A,(HL)
4612
        RRA
4613
        LD (DE),A
4614
        INC E
4615
        LD A,B
4616
        ADD A,C
4617
        LD B,A
4618
        LD A,(HL)
4619
        INC HL
4620
        LD (DE),A
4621
        INC E
4622
        JR Z,S21R2
4623
        JP C,S21K0
4624
        JP S21J0
4625
 
69 savelij 4626
S21R1   LD C,0X00
36 savelij 4627
        RRC B
4628
        RET
4629
 
69 savelij 4630
S21R2   LD C,0X01
36 savelij 4631
        JR NC,S21R2_2
4632
        RRC B
4633
        RET
4634
 
4635
S21R2_2 SRL B
4636
        RET
4637
 
4638
S21G1   LD E,A
4639
        LD A,(DE)
4640
        EXX
4641
        ADD A,(HL)
4642
        LD (DE),A
4643
        INC E
4644
S21J2   ADD A,(HL)
4645
        RRA
4646
        LD (DE),A
4647
        INC E
4648
S21H3   LD A,B
4649
        ADD A,C
4650
        LD B,A
4651
        LD A,(HL)
4652
        INC HL
4653
        LD (DE),A
4654
        INC E
4655
        JR Z,S21R2
4656
        JP NC,S21J0
4657
S21K0   ADD A,(HL)
4658
        RRA
4659
        LD (DE),A
4660
        INC E
4661
S21L1   LD A,B
4662
        ADD A,C
4663
        LD B,A
4664
        LD A,(HL)
4665
        INC HL
4666
        LD (DE),A
4667
        INC E
4668
        JP NC,S21K2
4669
        SUB (HL)
4670
        EXX
4671
        JP C,S21G2
4672
        LD L,A
4673
        LD A,(HL)
4674
        EXX
4675
        ADD A,(HL)
4676
        LD (DE),A
4677
        INC E
4678
        ADD A,(HL)
4679
        RRA
4680
        LD (DE),A
4681
        INC E
4682
        JR Z,S21R3
4683
        LD A,B
4684
        ADD A,C
4685
        LD B,A
4686
        LD A,(HL)
4687
        INC HL
4688
        LD (DE),A
4689
        INC E
4690
        JP C,S21K1
4691
        JP S21J1
4692
 
69 savelij 4693
S21R3   LD C,0X00
36 savelij 4694
        SRL B
4695
        RET
4696
 
4697
S21G2   LD E,A
4698
        LD A,(DE)
4699
        EXX
4700
        ADD A,(HL)
4701
        LD (DE),A
4702
        INC E
4703
S21J3   ADD A,(HL)
4704
        RRA
4705
        LD (DE),A
4706
        INC E
4707
        JR Z,S21R3
4708
S21H0   LD A,B
4709
        ADD A,C
4710
        LD B,A
4711
        LD A,(HL)
4712
        INC HL
4713
        LD (DE),A
4714
        INC E
4715
        JP NC,S21J1
4716
S21K1   ADD A,(HL)
4717
        RRA
4718
        LD (DE),A
4719
        INC E
4720
S21L2   LD A,B
4721
        ADD A,C
4722
        LD B,A
4723
        LD A,(HL)
4724
        INC HL
4725
        LD (DE),A
4726
        INC E
4727
        JP NC,S21K3
4728
        SUB (HL)
4729
        EXX
4730
        JP C,S21G3
4731
        LD L,A
4732
        LD A,(HL)
4733
        EXX
4734
        ADD A,(HL)
4735
        LD (DE),A
4736
        INC E
4737
        JR Z,S21R4
4738
        ADD A,(HL)
4739
        RRA
4740
        LD (DE),A
4741
        INC E
4742
        LD A,B
4743
        ADD A,C
4744
        LD B,A
4745
        LD A,(HL)
4746
        INC HL
4747
        LD (DE),A
4748
        INC E
4749
        JP C,S21K2
4750
        JP S21J2
4751
 
69 savelij 4752
S21R4   LD C,0X01
36 savelij 4753
        SRL B
4754
        RET
4755
 
4756
S21G3   LD E,A
4757
        LD A,(DE)
4758
        EXX
4759
        ADD A,(HL)
4760
        LD (DE),A
4761
        INC E
4762
        JR Z,S21R4
4763
S21J0   ADD A,(HL)
4764
        RRA
4765
        LD (DE),A
4766
        INC E
4767
S21H1   LD A,B
4768
        ADD A,C
4769
        LD B,A
4770
        LD A,(HL)
4771
        INC HL
4772
        LD (DE),A
4773
        INC E
4774
        JP NC,S21J2
4775
S21K2   ADD A,(HL)
4776
        RRA
4777
        LD (DE),A
4778
        INC E
4779
S21L3   LD A,B
4780
        ADD A,C
4781
        LD B,A
4782
        LD A,(HL)
4783
        INC HL
4784
        LD (DE),A
4785
        INC E
4786
        JR Z,S21R5
4787
        JP NC,S21K0
4788
        SUB (HL)
4789
        EXX
4790
        JP C,S21G0
4791
        LD L,A
4792
        LD A,(HL)
4793
        EXX
4794
        ADD A,(HL)
4795
        LD (DE),A
4796
        INC E
4797
        ADD A,(HL)
4798
        RRA
4799
        LD (DE),A
4800
        INC E
4801
        LD A,B
4802
        ADD A,C
4803
        LD B,A
4804
        LD A,(HL)
4805
        INC HL
4806
        LD (DE),A
4807
        INC E
4808
        JP C,S21K3
4809
        JP S21J3
4810
 
4811
S21R5   JR NC,S21R5_2
69 savelij 4812
        LD C,0X02
36 savelij 4813
        SRL B
4814
        RET
4815
 
69 savelij 4816
S21R5_2 LD C,0X01
36 savelij 4817
        RRC B
4818
        RET
4819
 
4820
S22G0   LD E,A
4821
        LD A,(DE)
4822
        EXX
4823
        ADD A,(HL)
4824
        LD (DE),A
4825
        INC E
4826
S22J1   ADD A,(HL)
4827
        RRA
4828
        LD (DE),A
4829
        INC E
4830
S22H2   LD A,B
4831
        ADD A,C
4832
        LD B,A
4833
        LD A,(HL)
4834
        INC HL
4835
        LD (DE),A
4836
        INC E
69 savelij 4837
        DEC IXL
36 savelij 4838
        JR Z,S22R2
4839
        JP NC,S22J3
4840
S22K3   ADD A,(HL)
4841
        RRA
4842
        LD (DE),A
4843
        INC E
4844
        JR Z,S22R1
4845
S22L0   LD A,B
4846
        ADD A,C
4847
        LD B,A
4848
        LD A,(HL)
4849
        INC HL
4850
        LD (DE),A
4851
        INC E
69 savelij 4852
        DEC IXL
36 savelij 4853
        JR Z,S22R5_3
4854
        JP NC,S22K1
4855
        SUB (HL)
4856
        EXX
4857
        JP C,S22G1
4858
        LD L,A
4859
        LD A,(HL)
4860
        EXX
4861
        ADD A,(HL)
4862
        LD (DE),A
4863
        INC E
4864
        ADD A,(HL)
4865
        RRA
4866
        LD (DE),A
4867
        INC E
4868
        LD A,B
4869
        ADD A,C
4870
        LD B,A
4871
        LD A,(HL)
4872
        INC HL
4873
        LD (DE),A
4874
        INC E
4875
        JR Z,S22R2
69 savelij 4876
        DEC IXL
36 savelij 4877
        JR Z,S22R2
4878
        JP C,S22K0
4879
        JP S22J0
4880
 
69 savelij 4881
S22R1   LD C,0X00
36 savelij 4882
        RRC B
4883
        RET
4884
 
69 savelij 4885
S22R2   LD C,0X01
36 savelij 4886
        JR NC,S22R2_2
4887
        RRC B
4888
        RET
4889
 
4890
S22R2_2 SRL B
4891
        RET
4892
 
4893
S22R5_3 JP S22R5
4894
 
4895
S22G1   LD E,A
4896
        LD A,(DE)
4897
        EXX
4898
        ADD A,(HL)
4899
        LD (DE),A
4900
        INC E
4901
 
4902
S22J2   ADD A,(HL)
4903
        RRA
4904
        LD (DE),A
4905
        INC E
4906
S22H3   LD A,B
4907
        ADD A,C
4908
        LD B,A
4909
        LD A,(HL)
4910
        INC HL
4911
        LD (DE),A
4912
        INC E
4913
        JR Z,S22R2
69 savelij 4914
        DEC IXL
36 savelij 4915
        JR Z,S22R2
4916
        JP NC,S22J0
4917
S22K0   ADD A,(HL)
4918
        RRA
4919
        LD (DE),A
4920
        INC E
4921
S22L1   LD A,B
4922
        ADD A,C
4923
        LD B,A
4924
        LD A,(HL)
4925
        INC HL
4926
        LD (DE),A
4927
        INC E
69 savelij 4928
        DEC IXL
36 savelij 4929
        JR Z,S22R5_3
4930
        JP NC,S22K2
4931
        SUB (HL)
4932
        EXX
4933
        JP C,S22G2
4934
        LD L,A
4935
        LD A,(HL)
4936
        EXX
4937
        ADD A,(HL)
4938
        LD (DE),A
4939
        INC E
4940
        ADD A,(HL)
4941
        RRA
4942
        LD (DE),A
4943
        INC E
4944
        JR Z,S22R3
4945
        LD A,B
4946
        ADD A,C
4947
        LD B,A
4948
        LD A,(HL)
4949
        INC HL
4950
        LD (DE),A
4951
        INC E
69 savelij 4952
        DEC IXL
36 savelij 4953
        JR Z,S22R2
4954
        JP C,S22K1
4955
        JP S22J1
4956
 
69 savelij 4957
S22R3   LD C,0X00
36 savelij 4958
        SRL B
4959
        RET
4960
 
4961
S22G2   LD E,A
4962
        LD A,(DE)
4963
        EXX
4964
        ADD A,(HL)
4965
        LD (DE),A
4966
        INC E
4967
S22J3   ADD A,(HL)
4968
        RRA
4969
        LD (DE),A
4970
        INC E
4971
        JR Z,S22R3
4972
S22H0   LD A,B
4973
        ADD A,C
4974
        LD B,A
4975
        LD A,(HL)
4976
        INC HL
4977
        LD (DE),A
4978
        INC E
69 savelij 4979
        DEC IXL
36 savelij 4980
        JR Z,S22R2
4981
        JP NC,S22J1
4982
S22K1   ADD A,(HL)
4983
        RRA
4984
        LD (DE),A
4985
        INC E
4986
S22L2   LD A,B
4987
        ADD A,C
4988
        LD B,A
4989
        LD A,(HL)
4990
        INC HL
4991
        LD (DE),A
4992
        INC E
69 savelij 4993
        DEC IXL
36 savelij 4994
        JR Z,S22R5
4995
        JP NC,S22K3
4996
        SUB (HL)
4997
        EXX
4998
        JP C,S22G3
4999
        LD L,A
5000
        LD A,(HL)
5001
        EXX
5002
        ADD A,(HL)
5003
        LD (DE),A
5004
        INC E
5005
        JR Z,S22R4
5006
        ADD A,(HL)
5007
        RRA
5008
        LD (DE),A
5009
        INC E
5010
        LD A,B
5011
        ADD A,C
5012
        LD B,A
5013
        LD A,(HL)
5014
        INC HL
5015
        LD (DE),A
5016
        INC E
69 savelij 5017
        DEC IXL
36 savelij 5018
        JR Z,S22R2_3
5019
        JP C,S22K2
5020
        JP S22J2
5021
 
5022
S22G3   LD E,A
5023
        LD A,(DE)
5024
        EXX
5025
        ADD A,(HL)
5026
        LD (DE),A
5027
        INC E
5028
        JR Z,S22R4
5029
S22J0   ADD A,(HL)
5030
        RRA
5031
        LD (DE),A
5032
        INC E
5033
S22H1   LD A,B
5034
        ADD A,C
5035
        LD B,A
5036
        LD A,(HL)
5037
        INC HL
5038
        LD (DE),A
5039
        INC E
69 savelij 5040
        DEC IXL
36 savelij 5041
        JR Z,S22R2_3
5042
        JP NC,S22J2
5043
S22K2   ADD A,(HL)
5044
        RRA
5045
        LD (DE),A
5046
        INC E
5047
S22L3   LD A,B
5048
        ADD A,C
5049
        LD B,A
5050
        LD A,(HL)
5051
        INC HL
5052
        LD (DE),A
5053
        INC E
5054
        JR Z,S22R5
69 savelij 5055
        DEC IXL
36 savelij 5056
        JR Z,S22R5
5057
        JP NC,S22K0
5058
        SUB (HL)
5059
        EXX
5060
        JP C,S22G0
5061
        LD L,A
5062
        LD A,(HL)
5063
        EXX
5064
        ADD A,(HL)
5065
        LD (DE),A
5066
        INC E
5067
        ADD A,(HL)
5068
        RRA
5069
        LD (DE),A
5070
        INC E
5071
        LD A,B
5072
        ADD A,C
5073
        LD B,A
5074
        LD A,(HL)
5075
        INC HL
5076
        LD (DE),A
5077
        INC E
69 savelij 5078
        DEC IXL
36 savelij 5079
        JR Z,S22R2_3
5080
        JP C,S22K3
5081
        JP S22J3
5082
 
5083
S22R2_3 JP S22R2
5084
 
5085
S22R5   JR NC,S22R5_2
69 savelij 5086
        LD C,0X02
36 savelij 5087
        SRL B
5088
        RET
5089
 
69 savelij 5090
S22R5_2 LD C,0X01
36 savelij 5091
        RRC B
5092
        RET
5093
 
69 savelij 5094
S22R4   LD C,0X01
36 savelij 5095
        SRL B
5096
        RET
5097
 
5098
S23J0   SUB (HL)
5099
        EXX
5100
        JP C,S23P0
5101
        LD L,A
5102
        LD A,(HL)
5103
        EXX
5104
        ADD A,(HL)
5105
        LD (DE),A
5106
        INC E
5107
        ADD A,(HL)
5108
        RRA
5109
        LD (DE),A
5110
        INC E
5111
        LD A,B
5112
        ADD A,C
5113
        LD B,A
5114
        LD A,(HL)
5115
        INC HL
5116
        LD (DE),A
5117
        INC E
5118
        JP C,S23J3
5119
        JP S23K3
5120
 
5121
S23P0   LD E,A
5122
        LD A,(DE)
5123
        EXX
5124
        ADD A,(HL)
5125
        LD (DE),A
5126
        INC E
5127
        ADD A,(HL)
5128
        RRA
5129
        LD (DE),A
5130
        INC E
5131
S23H2   LD A,B
5132
        ADD A,C
5133
        LD B,A
5134
        LD A,(HL)
5135
        INC HL
5136
        LD (DE),A
5137
        INC E
5138
        JP C,S23J3
5139
S23K3   SUB (HL)
5140
        EXX
5141
        JP C,S23I3
5142
        LD L,A
5143
        LD A,(HL)
5144
        EXX
5145
        ADD A,(HL)
5146
        LD (DE),A
5147
        INC E
5148
        JR Z,S23R1
5149
        ADD A,(HL)
5150
        RRA
5151
        LD (DE),A
5152
        INC E
5153
        LD A,B
5154
        ADD A,C
5155
        LD B,A
5156
        LD A,(HL)
5157
        INC HL
5158
        LD (DE),A
5159
        INC E
5160
        JP C,S23K2
5161
        JP S23G2
5162
 
5163
S23I3   LD E,A
5164
        LD A,(DE)
5165
        EXX
5166
        ADD A,(HL)
5167
        LD (DE),A
5168
        INC E
5169
        JR Z,S23R1
5170
        ADD A,(HL)
5171
        RRA
5172
        LD (DE),A
5173
        INC E
5174
S23L1   LD A,B
5175
        ADD A,C
5176
        LD B,A
5177
        LD A,(HL)
5178
        INC HL
5179
        LD (DE),A
5180
        INC E
5181
        JP C,S23K2
5182
S23G2   ADD A,(HL)
5183
        RRA
5184
        LD (DE),A
5185
        INC E
5186
        LD A,B
5187
        ADD A,C
5188
        LD B,A
5189
        LD A,(HL)
5190
        INC HL
5191
        LD (DE),A
5192
        INC E
5193
        JR Z,S23R2
5194
        JP NC,S23K0
5195
        JP S23J0
5196
 
69 savelij 5197
S23R1   LD C,0X01
36 savelij 5198
        SRL B
5199
        RET
5200
 
69 savelij 5201
S23R2   LD C,0X02
36 savelij 5202
        JR NC,S23R2_2
5203
        RRC B
5204
        RET
5205
 
5206
S23R2_2 SRL B
5207
        RET
5208
 
5209
S23J1   SUB (HL)
5210
        EXX
5211
        JP C,S23P1
5212
        LD L,A
5213
        LD A,(HL)
5214
        EXX
5215
        ADD A,(HL)
5216
        LD (DE),A
5217
        INC E
5218
        ADD A,(HL)
5219
        RRA
5220
        LD (DE),A
5221
        INC E
5222
        LD A,B
5223
        ADD A,C
5224
        LD B,A
5225
        LD A,(HL)
5226
        INC HL
5227
        LD (DE),A
5228
        INC E
5229
        JR Z,S23R2
5230
        JP C,S23J0
5231
        JP S23K0
5232
 
5233
S23P1   LD E,A
5234
        LD A,(DE)
5235
        EXX
5236
        ADD A,(HL)
5237
        LD (DE),A
5238
        INC E
5239
        ADD A,(HL)
5240
        RRA
5241
        LD (DE),A
5242
        INC E
5243
S23H3   LD A,B
5244
        ADD A,C
5245
        LD B,A
5246
        LD A,(HL)
5247
        INC HL
5248
        LD (DE),A
5249
        INC E
5250
        JR Z,S23R2
5251
        JP C,S23J0
5252
S23K0   SUB (HL)
5253
        EXX
5254
        JP C,S23I0
5255
        LD L,A
5256
        LD A,(HL)
5257
        EXX
5258
        ADD A,(HL)
5259
        LD (DE),A
5260
        INC E
5261
        ADD A,(HL)
5262
        RRA
5263
        LD (DE),A
5264
        INC E
5265
        LD A,B
5266
        ADD A,C
5267
        LD B,A
5268
        LD A,(HL)
5269
        INC HL
5270
        LD (DE),A
5271
        INC E
5272
        JP C,S23K3
5273
        JP S23G3
5274
 
5275
S23I0   LD E,A
5276
        LD A,(DE)
5277
        EXX
5278
        ADD A,(HL)
5279
        LD (DE),A
5280
        INC E
5281
        ADD A,(HL)
5282
        RRA
5283
        LD (DE),A
5284
        INC E
5285
S23L2   LD A,B
5286
        ADD A,C
5287
        LD B,A
5288
        LD A,(HL)
5289
        INC HL
5290
        LD (DE),A
5291
        INC E
5292
        JP C,S23K3
5293
S23G3   ADD A,(HL)
5294
        RRA
5295
        LD (DE),A
5296
        INC E
5297
        JR Z,S23R3
5298
        LD A,B
5299
        ADD A,C
5300
        LD B,A
5301
        LD A,(HL)
5302
        INC HL
5303
        LD (DE),A
5304
        INC E
5305
        JP NC,S23K1
5306
        JP S23J1
5307
 
69 savelij 5308
S23R3   LD C,0X00
36 savelij 5309
        RRC B
5310
        RET
5311
 
5312
S23J2   SUB (HL)
5313
        EXX
5314
        JP C,S23P2
5315
        LD L,A
5316
        LD A,(HL)
5317
        EXX
5318
        ADD A,(HL)
5319
        LD (DE),A
5320
        INC E
5321
        ADD A,(HL)
5322
        RRA
5323
        LD (DE),A
5324
        INC E
5325
        JR Z,S23R3
5326
        LD A,B
5327
        ADD A,C
5328
        LD B,A
5329
        LD A,(HL)
5330
        INC HL
5331
        LD (DE),A
5332
        INC E
5333
        JP C,S23J1
5334
        JP S23K1
5335
 
5336
S23P2   LD E,A
5337
        LD A,(DE)
5338
        EXX
5339
        ADD A,(HL)
5340
        LD (DE),A
5341
        INC E
5342
        ADD A,(HL)
5343
        RRA
5344
        LD (DE),A
5345
        INC E
5346
        JR Z,S23R3
5347
S23H0   LD A,B
5348
        ADD A,C
5349
        LD B,A
5350
        LD A,(HL)
5351
        INC HL
5352
        LD (DE),A
5353
        INC E
5354
        JP C,S23J1
5355
S23K1   SUB (HL)
5356
        EXX
5357
        JP C,S23I1
5358
        LD L,A
5359
        LD A,(HL)
5360
        EXX
5361
        ADD A,(HL)
5362
        LD (DE),A
5363
        INC E
5364
        ADD A,(HL)
5365
        RRA
5366
        LD (DE),A
5367
        INC E
5368
        LD A,B
5369
        ADD A,C
5370
        LD B,A
5371
        LD A,(HL)
5372
        INC HL
5373
        LD (DE),A
5374
        INC E
5375
        JR Z,S23R4
5376
        JP C,S23K0
5377
        JP S23G0
5378
 
5379
S23I1   LD E,A
5380
        LD A,(DE)
5381
        EXX
5382
        ADD A,(HL)
5383
        LD (DE),A
5384
        INC E
5385
        ADD A,(HL)
5386
        RRA
5387
        LD (DE),A
5388
        INC E
5389
S23L3   LD A,B
5390
        ADD A,C
5391
        LD B,A
5392
        LD A,(HL)
5393
        INC HL
5394
        LD (DE),A
5395
        INC E
5396
        JR Z,S23R4
5397
        JP C,S23K0
5398
 
5399
S23G0   ADD A,(HL)
5400
        RRA
5401
        LD (DE),A
5402
        INC E
5403
        LD A,B
5404
        ADD A,C
5405
        LD B,A
5406
        LD A,(HL)
5407
        INC HL
5408
        LD (DE),A
5409
        INC E
5410
        JP NC,S23K2
5411
        JP S23J2
5412
 
5413
S23R4   JR C,S23R4_2
69 savelij 5414
        LD C,0X01
36 savelij 5415
        RRC B
5416
        RET
5417
 
69 savelij 5418
S23R4_2 LD C,0X02
36 savelij 5419
        SRL B
5420
        RET
5421
 
69 savelij 5422
S23R5   LD C,0X01
36 savelij 5423
        RRC B
5424
        RET
5425
 
5426
S23J3   SUB (HL)
5427
        EXX
5428
        JP C,S23P3
5429
        LD L,A
5430
        LD A,(HL)
5431
        EXX
5432
        ADD A,(HL)
5433
        LD (DE),A
5434
        INC E
5435
        JR Z,S23R5
5436
        ADD A,(HL)
5437
        RRA
5438
        LD (DE),A
5439
        INC E
5440
        LD A,B
5441
        ADD A,C
5442
        LD B,A
5443
        LD A,(HL)
5444
        INC HL
5445
        LD (DE),A
5446
        INC E
5447
        JP C,S23J2
5448
        JP S23K2
5449
 
5450
S23P3   LD E,A
5451
        LD A,(DE)
5452
        EXX
5453
        ADD A,(HL)
5454
        LD (DE),A
5455
        INC E
5456
        JR Z,S23R5
5457
        ADD A,(HL)
5458
        RRA
5459
        LD (DE),A
5460
        INC E
5461
S23H1   LD A,B
5462
        ADD A,C
5463
        LD B,A
5464
        LD A,(HL)
5465
        INC HL
5466
        LD (DE),A
5467
        INC E
5468
        JP C,S23J2
5469
S23K2   SUB (HL)
5470
        EXX
5471
        JP C,S23I2
5472
        LD L,A
5473
        LD A,(HL)
5474
        EXX
5475
        ADD A,(HL)
5476
        LD (DE),A
5477
        INC E
5478
        ADD A,(HL)
5479
        RRA
5480
        LD (DE),A
5481
        INC E
5482
        JR Z,S23R6
5483
        LD A,B
5484
        ADD A,C
5485
        LD B,A
5486
        LD A,(HL)
5487
        INC HL
5488
        LD (DE),A
5489
        INC E
5490
        JP C,S23K1
5491
        JP S23G1
5492
 
5493
S23I2   LD E,A
5494
        LD A,(DE)
5495
        EXX
5496
        ADD A,(HL)
5497
        LD (DE),A
5498
        INC E
5499
        ADD A,(HL)
5500
        RRA
5501
        LD (DE),A
5502
        INC E
5503
        JR Z,S23R6
5504
S23L0   LD A,B
5505
        ADD A,C
5506
        LD B,A
5507
        LD A,(HL)
5508
        INC HL
5509
        LD (DE),A
5510
        INC E
5511
        JP C,S23K1
5512
S23G1   ADD A,(HL)
5513
        RRA
5514
        LD (DE),A
5515
        INC E
5516
        LD A,B
5517
        ADD A,C
5518
        LD B,A
5519
        LD A,(HL)
5520
        INC HL
5521
        LD (DE),A
5522
        INC E
5523
        JP NC,S23K3
5524
        JP S23J3
5525
 
69 savelij 5526
S23R6   LD C,0X00
36 savelij 5527
        SRL B
5528
        RET
5529
 
5530
S24J0   SUB (HL)
5531
        EXX
5532
        JP C,S24P0
5533
        LD L,A
5534
        LD A,(HL)
5535
        EXX
5536
        ADD A,(HL)
5537
        LD (DE),A
5538
        INC E
5539
        ADD A,(HL)
5540
        RRA
5541
        LD (DE),A
5542
        INC E
5543
        LD A,B
5544
        ADD A,C
5545
        LD B,A
5546
        LD A,(HL)
5547
        INC HL
5548
        LD (DE),A
5549
        INC E
69 savelij 5550
        DEC IXL
36 savelij 5551
        JR Z,S24R2
5552
        JP C,S24J3
5553
        JP S24K3
5554
 
5555
S24P0   LD E,A
5556
        LD A,(DE)
5557
        EXX
5558
        ADD A,(HL)
5559
        LD (DE),A
5560
        INC E
5561
        ADD A,(HL)
5562
        RRA
5563
        LD (DE),A
5564
        INC E
5565
S24H2   LD A,B
5566
        ADD A,C
5567
        LD B,A
5568
        LD A,(HL)
5569
        INC HL
5570
        LD (DE),A
5571
        INC E
69 savelij 5572
        DEC IXL
36 savelij 5573
        JR Z,S24R2
5574
        JP C,S24J3
5575
S24K3   SUB (HL)
5576
        EXX
5577
        JP C,S24I3
5578
        LD L,A
5579
        LD A,(HL)
5580
        EXX
5581
        ADD A,(HL)
5582
        LD (DE),A
5583
        INC E
5584
        JR Z,S24R1
5585
        ADD A,(HL)
5586
        RRA
5587
        LD (DE),A
5588
        INC E
5589
        LD A,B
5590
        ADD A,C
5591
        LD B,A
5592
        LD A,(HL)
5593
        INC HL
5594
        LD (DE),A
5595
        INC E
69 savelij 5596
        DEC IXL
36 savelij 5597
        JR Z,S24R4_3
5598
        JP C,S24K2
5599
        JP S24G2
5600
 
5601
S24I3   LD E,A
5602
        LD A,(DE)
5603
        EXX
5604
        ADD A,(HL)
5605
        LD (DE),A
5606
        INC E
5607
        JR Z,S24R1
5608
        ADD A,(HL)
5609
        RRA
5610
        LD (DE),A
5611
        INC E
5612
S24L1   LD A,B
5613
        ADD A,C
5614
        LD B,A
5615
        LD A,(HL)
5616
        INC HL
5617
        LD (DE),A
5618
        INC E
69 savelij 5619
        DEC IXL
36 savelij 5620
        JR Z,S24R4_3
5621
        JP C,S24K2
5622
 
5623
S24G2   ADD A,(HL)
5624
        RRA
5625
        LD (DE),A
5626
        INC E
5627
        LD A,B
5628
        ADD A,C
5629
        LD B,A
5630
        LD A,(HL)
5631
        INC HL
5632
        LD (DE),A
5633
        INC E
5634
        JR Z,S24R2
69 savelij 5635
        DEC IXL
36 savelij 5636
        JR Z,S24R2
5637
        JP NC,S24K0
5638
        JP S24J0
5639
 
69 savelij 5640
S24R1   LD C,0X01
36 savelij 5641
        SRL B
5642
        RET
5643
 
69 savelij 5644
S24R2   LD C,0X02
36 savelij 5645
        JR NC,S24R2_2
5646
        RRC B
5647
        RET
5648
 
5649
S24R2_2 SRL B
5650
        RET
5651
 
5652
S24R4_3 JP S24R4
5653
 
5654
S24J1   SUB (HL)
5655
        EXX
5656
        JP C,S24P1
5657
        LD L,A
5658
        LD A,(HL)
5659
        EXX
5660
        ADD A,(HL)
5661
        LD (DE),A
5662
        INC E
5663
        ADD A,(HL)
5664
        RRA
5665
        LD (DE),A
5666
        INC E
5667
        LD A,B
5668
        ADD A,C
5669
        LD B,A
5670
        LD A,(HL)
5671
        INC HL
5672
        LD (DE),A
5673
        INC E
5674
        JR Z,S24R2
69 savelij 5675
        DEC IXL
36 savelij 5676
        JR Z,S24R2
5677
        JP C,S24J0
5678
        JP S24K0
5679
 
5680
S24P1   LD E,A
5681
        LD A,(DE)
5682
        EXX
5683
        ADD A,(HL)
5684
        LD (DE),A
5685
        INC E
5686
        ADD A,(HL)
5687
        RRA
5688
        LD (DE),A
5689
        INC E
5690
S24H3   LD A,B
5691
        ADD A,C
5692
        LD B,A
5693
        LD A,(HL)
5694
        INC HL
5695
        LD (DE),A
5696
        INC E
5697
        JR Z,S24R2
69 savelij 5698
        DEC IXL
36 savelij 5699
        JR Z,S24R2
5700
        JP C,S24J0
5701
S24K0   SUB (HL)
5702
        EXX
5703
        JP C,S24I0
5704
        LD L,A
5705
        LD A,(HL)
5706
        EXX
5707
        ADD A,(HL)
5708
        LD (DE),A
5709
        INC E
5710
        ADD A,(HL)
5711
        RRA
5712
        LD (DE),A
5713
        INC E
5714
        LD A,B
5715
        ADD A,C
5716
        LD B,A
5717
        LD A,(HL)
5718
        INC HL
5719
        LD (DE),A
5720
        INC E
69 savelij 5721
        DEC IXL
36 savelij 5722
        JR Z,S24R4_3
5723
        JP C,S24K3
5724
        JP S24G3
5725
 
5726
S24I0   LD E,A
5727
        LD A,(DE)
5728
        EXX
5729
        ADD A,(HL)
5730
        LD (DE),A
5731
        INC E
5732
        ADD A,(HL)
5733
        RRA
5734
        LD (DE),A
5735
        INC E
5736
S24L2   LD A,B
5737
        ADD A,C
5738
        LD B,A
5739
        LD A,(HL)
5740
        INC HL
5741
        LD (DE),A
5742
        INC E
69 savelij 5743
        DEC IXL
36 savelij 5744
        JR Z,S24R4_3
5745
        JP C,S24K3
5746
S24G3   ADD A,(HL)
5747
        RRA
5748
        LD (DE),A
5749
        INC E
5750
        JR Z,S24R3
5751
        LD A,B
5752
        ADD A,C
5753
        LD B,A
5754
        LD A,(HL)
5755
        INC HL
5756
        LD (DE),A
5757
        INC E
69 savelij 5758
        DEC IXL
36 savelij 5759
        JR Z,S24R2_5
5760
        JP NC,S24K1
5761
        JP S24J1
5762
 
5763
S24R2_5 JP S24R2
5764
 
69 savelij 5765
S24R3   LD C,0X00
36 savelij 5766
        RRC B
5767
        RET
5768
 
5769
S24J2   SUB (HL)
5770
        EXX
5771
        JP C,S24P2
5772
        LD L,A
5773
        LD A,(HL)
5774
        EXX
5775
        ADD A,(HL)
5776
        LD (DE),A
5777
        INC E
5778
        ADD A,(HL)
5779
        RRA
5780
        LD (DE),A
5781
        INC E
5782
        JR Z,S24R3
5783
        LD A,B
5784
        ADD A,C
5785
        LD B,A
5786
        LD A,(HL)
5787
        INC HL
5788
        LD (DE),A
5789
        INC E
69 savelij 5790
        DEC IXL
36 savelij 5791
        JR Z,S24R2_3
5792
        JP C,S24J1
5793
        JP S24K1
5794
 
5795
S24P2   LD E,A
5796
        LD A,(DE)
5797
        EXX
5798
        ADD A,(HL)
5799
        LD (DE),A
5800
        INC E
5801
        ADD A,(HL)
5802
        RRA
5803
        LD (DE),A
5804
        INC E
5805
        JR Z,S24R3
5806
S24H0   LD A,B
5807
        ADD A,C
5808
        LD B,A
5809
        LD A,(HL)
5810
        INC HL
5811
        LD (DE),A
5812
        INC E
69 savelij 5813
        DEC IXL
36 savelij 5814
        JR Z,S24R2_3
5815
        JP C,S24J1
5816
S24K1   SUB (HL)
5817
        EXX
5818
        JP C,S24I1
5819
        LD L,A
5820
        LD A,(HL)
5821
        EXX
5822
        ADD A,(HL)
5823
        LD (DE),A
5824
        INC E
5825
        ADD A,(HL)
5826
        RRA
5827
        LD (DE),A
5828
        INC E
5829
        LD A,B
5830
        ADD A,C
5831
        LD B,A
5832
        LD A,(HL)
5833
        INC HL
5834
        LD (DE),A
5835
        INC E
5836
        JR Z,S24R4
69 savelij 5837
        DEC IXL
36 savelij 5838
        JR Z,S24R4
5839
        JP C,S24K0
5840
        JP S24G0
5841
 
5842
S24I1   LD E,A
5843
        LD A,(DE)
5844
        EXX
5845
        ADD A,(HL)
5846
        LD (DE),A
5847
        INC E
5848
        ADD A,(HL)
5849
        RRA
5850
        LD (DE),A
5851
        INC E
5852
S24L3   LD A,B
5853
        ADD A,C
5854
        LD B,A
5855
        LD A,(HL)
5856
        INC HL
5857
        LD (DE),A
5858
        INC E
5859
        JR Z,S24R4
69 savelij 5860
        DEC IXL
36 savelij 5861
        JR Z,S24R4
5862
        JP C,S24K0
5863
 
5864
S24G0   ADD A,(HL)
5865
        RRA
5866
        LD (DE),A
5867
        INC E
5868
        LD A,B
5869
        ADD A,C
5870
        LD B,A
5871
        LD A,(HL)
5872
        INC HL
5873
        LD (DE),A
5874
        INC E
69 savelij 5875
        DEC IXL
36 savelij 5876
        JR Z,S24R2_3
5877
        JP NC,S24K2
5878
        JP S24J2
5879
 
5880
S24R4   JR C,S24R4_2
69 savelij 5881
        LD C,0X01
36 savelij 5882
        RRC B
5883
        RET
5884
 
69 savelij 5885
S24R4_2 LD C,0X02
36 savelij 5886
        SRL B
5887
        RET
5888
 
5889
S24R2_3 JP S24R2
5890
 
69 savelij 5891
S24R5   LD C,0X01
36 savelij 5892
        RRC B
5893
        RET
5894
 
5895
S24J3   SUB (HL)
5896
        EXX
5897
        JP C,S24P3
5898
        LD L,A
5899
        LD A,(HL)
5900
        EXX
5901
        ADD A,(HL)
5902
        LD (DE),A
5903
        INC E
5904
        JR Z,S24R5
5905
        ADD A,(HL)
5906
        RRA
5907
        LD (DE),A
5908
        INC E
5909
        LD A,B
5910
        ADD A,C
5911
        LD B,A
5912
        LD A,(HL)
5913
        INC HL
5914
        LD (DE),A
5915
        INC E
69 savelij 5916
        DEC IXL
36 savelij 5917
        JR Z,S24R2_3
5918
        JP C,S24J2
5919
        JP S24K2
5920
 
5921
S24P3   LD E,A
5922
        LD A,(DE)
5923
        EXX
5924
        ADD A,(HL)
5925
        LD (DE),A
5926
        INC E
5927
        JR Z,S24R5
5928
        ADD A,(HL)
5929
        RRA
5930
        LD (DE),A
5931
        INC E
5932
S24H1   LD A,B
5933
        ADD A,C
5934
        LD B,A
5935
        LD A,(HL)
5936
        INC HL
5937
        LD (DE),A
5938
        INC E
69 savelij 5939
        DEC IXL
36 savelij 5940
        JR Z,S24R2_3
5941
        JP C,S24J2
5942
S24K2   SUB (HL)
5943
        EXX
5944
        JP C,S24I2
5945
        LD L,A
5946
        LD A,(HL)
5947
        EXX
5948
        ADD A,(HL)
5949
        LD (DE),A
5950
        INC E
5951
        ADD A,(HL)
5952
        RRA
5953
        LD (DE),A
5954
        INC E
5955
        JR Z,S24R6
5956
        LD A,B
5957
        ADD A,C
5958
        LD B,A
5959
        LD A,(HL)
5960
        INC HL
5961
        LD (DE),A
5962
        INC E
69 savelij 5963
        DEC IXL
36 savelij 5964
        JR Z,S24R4
5965
        JP C,S24K1
5966
        JP S24G1
5967
 
5968
S24I2   LD E,A
5969
        LD A,(DE)
5970
        EXX
5971
        ADD A,(HL)
5972
        LD (DE),A
5973
        INC E
5974
        ADD A,(HL)
5975
        RRA
5976
        LD (DE),A
5977
        INC E
5978
        JR Z,S24R6
5979
S24L0   LD A,B
5980
        ADD A,C
5981
        LD B,A
5982
        LD A,(HL)
5983
        INC HL
5984
        LD (DE),A
5985
        INC E
69 savelij 5986
        DEC IXL
36 savelij 5987
        JR Z,S24R4_4
5988
        JP C,S24K1
5989
S24G1   ADD A,(HL)
5990
        RRA
5991
        LD (DE),A
5992
        INC E
5993
        LD A,B
5994
        ADD A,C
5995
        LD B,A
5996
        LD A,(HL)
5997
        INC HL
5998
        LD (DE),A
5999
        INC E
69 savelij 6000
        DEC IXL
36 savelij 6001
        JR Z,S24R2_4
6002
        JP NC,S24K3
6003
        JP S24J3
6004
 
6005
S24R2_4 JP S24R2
6006
 
6007
S24R4_4 JP S24R4
6008
 
69 savelij 6009
S24R6   LD C,0X00
36 savelij 6010
        SRL B
6011
        RET
6012
 
6013
;INCLUDE "SGEN3.a80"
6014
S3_     LD D,C
6015
        PUSH DE
6016
        LD D,B
6017
        EXX
6018
        POP BC
6019
S31     SLA B
6020
        JP C,S318
6021
 
69 savelij 6022
S310    LD A,IXL
36 savelij 6023
        ADD A,A
6024
        JP C,S311
69 savelij 6025
        ADD A,IXL
36 savelij 6026
        JP C,S311
6027
        ADD A,E
6028
        JR Z,S310_
6029
        JP C,S311
6030
        BIT 7,B
6031
        JR Z,S310_
69 savelij 6032
        LD IYL,A
6033
        LD A,IXL
36 savelij 6034
        SRL A
6035
        SRL A
69 savelij 6036
        ADD A,IYL
36 savelij 6037
        JR Z,S310_
6038
        JP C,S311
69 savelij 6039
S310_   DB 0XCB,0X31;SLI C
36 savelij 6040
        JP C,S3101
6041
        JP S3100
6042
 
6043
S3102   JR Z,S3104
6044
S310A   INC E
6045
        JR Z,S3105
6046
        ADD A,(HL)
6047
        RRA
6048
        LD (DE),A
6049
        INC E
6050
        JR Z,S31052
6051
        LD (DE),A
6052
        INC E
6053
        JR Z,S31053
6054
S3100   LD A,C
6055
        ADD A,B
6056
        LD C,A
6057
        LD A,(HL)
6058
        INC HL
69 savelij 6059
        DEC IXL
36 savelij 6060
        LD (DE),A
6061
        JP NC,S3102
6062
        JR Z,S3106
6063
        INC E
6064
        JR Z,S3107
69 savelij 6065
        LD IYL,A
36 savelij 6066
        ADD A,(HL)
6067
        RRA
69 savelij 6068
        LD IYH,A
6069
        ADD A,IYL
36 savelij 6070
        RRA
6071
        LD (DE),A
6072
        INC E
6073
        JR Z,S3109
69 savelij 6074
        LD A,IYH
36 savelij 6075
        LD (DE),A
6076
        INC E
6077
        JR Z,S31092
6078
        ADD A,(HL)
6079
        RRA
6080
        LD (DE),A
6081
        INC E
6082
        JP NZ,S3101
6083
        JP S31093
6084
 
6085
S3103   JR Z,S3108
6086
        INC E
6087
        JR Z,S3109
6088
        ADD A,(HL)
6089
        RRA
6090
        LD (DE),A
6091
        INC E
6092
        JR Z,S31092
6093
        LD (DE),A
6094
        INC E
6095
        JR Z,S31093
6096
S3101   LD A,C
6097
        ADD A,B
6098
        LD C,A
6099
        LD A,(HL)
6100
        INC HL
69 savelij 6101
        DEC IXL
36 savelij 6102
        LD (DE),A
6103
        JP NC,S3103
6104
        JP NZ,S310A
6105
S3104   INC E
6106
S3105   SRL C
69 savelij 6107
        LD IYL,C
36 savelij 6108
        EXX
69 savelij 6109
        LD E,IYL
36 savelij 6110
        LD D,2
6111
        RET
6112
 
6113
S31052  SRL C
69 savelij 6114
        LD IYL,C
36 savelij 6115
        EXX
69 savelij 6116
        LD E,IYL
36 savelij 6117
        LD D,1
6118
        RET
6119
 
6120
S31053  SRL C
69 savelij 6121
        LD IYL,C
36 savelij 6122
        EXX
69 savelij 6123
        LD E,IYL
36 savelij 6124
        LD D,0
6125
        RET
6126
 
6127
S3106   INC E
6128
S3107   RRC C
69 savelij 6129
        LD IYL,C
36 savelij 6130
        EXX
69 savelij 6131
        LD E,IYL
36 savelij 6132
        RET
6133
 
6134
S3108   INC E
6135
S3109   RRC C
69 savelij 6136
        LD IYL,C
36 savelij 6137
        EXX
69 savelij 6138
        LD E,IYL
36 savelij 6139
        DEC D
6140
        RET
6141
 
6142
S31092  RRC C
69 savelij 6143
        LD IYL,C
36 savelij 6144
        EXX
69 savelij 6145
        LD E,IYL
36 savelij 6146
        LD D,1
6147
        RET
6148
 
6149
S31093  RRC C
69 savelij 6150
        LD IYL,C
36 savelij 6151
        EXX
69 savelij 6152
        LD E,IYL
36 savelij 6153
        LD D,0
6154
        RET
6155
 
69 savelij 6156
S311    DB 0XCB,0X31;SLI C
36 savelij 6157
        JP C,S3111
6158
        JR S3110
6159
 
6160
S3112   JR Z,S3114
6161
        ADD A,(HL)
6162
        RRA
6163
        LD (DE),A
6164
        INC E
6165
        JR Z,S31141
6166
        LD (DE),A
6167
        INC E
6168
        JR Z,S31142
6169
S3110   LD A,C
6170
        ADD A,B
6171
        LD C,A
6172
        LD A,(HL)
6173
        INC HL
6174
        LD (DE),A
6175
        INC E
6176
        JP NC,S3112
6177
        JR Z,S3115
69 savelij 6178
        LD IYL,A
36 savelij 6179
        ADD A,(HL)
6180
        RRA
69 savelij 6181
        LD IYH,A
6182
        ADD A,IYL
36 savelij 6183
        RRA
6184
        LD (DE),A
6185
        INC E
6186
        JR Z,S31151
69 savelij 6187
        LD A,IYH
36 savelij 6188
        LD (DE),A
6189
        INC E
6190
        JR Z,S3116
6191
        ADD A,(HL)
6192
        RRA
6193
        LD (DE),A
6194
        INC E
6195
        JP NZ,S3111
6196
        JP S31162
6197
 
6198
S3113   JR Z,S31151
6199
        ADD A,(HL)
6200
        RRA
6201
        LD (DE),A
6202
        INC E
6203
        JR Z,S3116
6204
        LD (DE),A
6205
        INC E
6206
        JR Z,S31162
6207
S3111   LD A,C
6208
        ADD A,B
6209
        LD C,A
6210
        LD A,(HL)
6211
        INC HL
6212
        LD (DE),A
6213
        INC E
6214
        JP NC,S3113
6215
        JP NZ,S3112
6216
        SRL C
69 savelij 6217
        LD IYL,C
36 savelij 6218
        EXX
69 savelij 6219
        LD E,IYL
36 savelij 6220
        LD D,2
6221
        RET
6222
 
6223
S31141  SRL C
69 savelij 6224
        LD IYL,C
36 savelij 6225
        EXX
69 savelij 6226
        LD E,IYL
36 savelij 6227
        LD D,1
6228
        RET
6229
 
6230
S31142  SRL C
69 savelij 6231
        LD IYL,C
36 savelij 6232
        EXX
69 savelij 6233
        LD E,IYL
36 savelij 6234
        LD D,0
6235
        RET
6236
 
6237
S3114   SRL C
69 savelij 6238
        LD IYL,C
36 savelij 6239
        EXX
69 savelij 6240
        LD E,IYL
36 savelij 6241
        LD D,2
6242
        RET
6243
 
6244
S3115   RRC C
69 savelij 6245
        LD IYL,C
36 savelij 6246
        EXX
69 savelij 6247
        LD E,IYL
36 savelij 6248
        RET
6249
 
6250
S31151  RRC C
69 savelij 6251
        LD IYL,C
36 savelij 6252
        EXX
69 savelij 6253
        LD E,IYL
36 savelij 6254
        DEC D
6255
        RET
6256
 
6257
S3116   RRC C
69 savelij 6258
        LD IYL,C
36 savelij 6259
        EXX
69 savelij 6260
        LD E,IYL
36 savelij 6261
        LD D,1
6262
        RET
6263
 
6264
S31162  RRC C
69 savelij 6265
        LD IYL,C
36 savelij 6266
        EXX
69 savelij 6267
        LD E,IYL
36 savelij 6268
        LD D,0
6269
        RET
6270
 
69 savelij 6271
S318    LD A,IXL
36 savelij 6272
        ADD A,A
6273
        JP C,S319
69 savelij 6274
        ADD A,IXL
36 savelij 6275
        JP C,S319
69 savelij 6276
        LD IYL,A
6277
        LD A,IXL
36 savelij 6278
        SRL A
69 savelij 6279
        ADD A,IYL
36 savelij 6280
        JP C,S319
6281
        ADD A,E
6282
        JR Z,S318_
6283
        JP C,S319
6284
        BIT 7,B
6285
        JR Z,S318_
69 savelij 6286
        LD IYL,A
6287
        LD A,IXL
36 savelij 6288
        SRL A
6289
        SRL A
69 savelij 6290
        ADD A,IYL
36 savelij 6291
        JR Z,S318_
6292
        JP C,S319
69 savelij 6293
S318_   DB 0XCB,0X31;SLI C
36 savelij 6294
        JP NC,S3180
6295
        JP S3181
6296
 
6297
S3184   INC E
6298
S3185   RRC C
69 savelij 6299
        LD IYL,C
36 savelij 6300
        EXX
69 savelij 6301
        LD E,IYL
36 savelij 6302
        RET
6303
 
6304
S3182   JR Z,S3184
6305
        INC E
6306
S31822  JR Z,S3185
69 savelij 6307
S318222 LD IYL,A
36 savelij 6308
        ADD A,(HL)
6309
        RRA
69 savelij 6310
        LD IYH,A
6311
        ADD A,IYL
36 savelij 6312
        RRA
6313
        LD (DE),A
6314
        INC E
6315
        JR Z,S3186
69 savelij 6316
        LD A,IYH
36 savelij 6317
        LD (DE),A
6318
        INC E
6319
        JR Z,S31866
6320
        ADD A,(HL)
6321
        RRA
6322
        LD (DE),A
6323
        INC E
6324
        JR Z,S31867
6325
S3181   LD A,C
6326
        ADD A,B
6327
        LD C,A
6328
        LD A,(HL)
6329
        INC HL
69 savelij 6330
        DEC IXL
36 savelij 6331
        LD (DE),A
6332
        JP C,S3182
6333
        JR Z,S31871
6334
        INC E
6335
        JR Z,S31891
6336
        ADD A,(HL)
6337
        RRA
6338
        LD (DE),A
6339
        INC E
6340
        JR Z,S3189
6341
        LD (DE),A
6342
        INC E
6343
        JP NZ,S3180
6344
        JP S31892
6345
 
6346
S31871  INC E
6347
S31891  SRL C
69 savelij 6348
        LD IYL,C
36 savelij 6349
        EXX
69 savelij 6350
        LD E,IYL
36 savelij 6351
        DEC D
6352
        RET
6353
 
6354
S3183   JR Z,S3187
6355
        INC E
6356
        JR Z,S3188
69 savelij 6357
        LD IYL,A
36 savelij 6358
        ADD A,(HL)
6359
        RRA
69 savelij 6360
        LD IYH,A
6361
        ADD A,IYL
36 savelij 6362
        RRA
6363
        LD (DE),A
6364
        INC E
6365
        JR Z,S31891
69 savelij 6366
        LD A,IYH
36 savelij 6367
        LD (DE),A
6368
        INC E
6369
        JR Z,S3189
6370
        ADD A,(HL)
6371
        RRA
6372
        LD (DE),A
6373
        INC E
6374
        JR Z,S31892
6375
S3180   LD A,C
6376
        ADD A,B
6377
        LD C,A
6378
        LD A,(HL)
6379
        INC HL
69 savelij 6380
        DEC IXL
36 savelij 6381
        LD (DE),A
6382
        JP C,S3183
6383
        JR Z,S31844
6384
        INC E
6385
        JP NZ,S318222
6386
        RRC C
69 savelij 6387
        LD IYL,C
36 savelij 6388
        EXX
69 savelij 6389
        LD E,IYL
36 savelij 6390
        RET
6391
 
6392
S3186   RRC C
69 savelij 6393
        LD IYL,C
36 savelij 6394
        EXX
69 savelij 6395
        LD E,IYL
36 savelij 6396
        DEC D
6397
        RET
6398
 
6399
S31866  RRC C
69 savelij 6400
        LD IYL,C
36 savelij 6401
        EXX
69 savelij 6402
        LD E,IYL
36 savelij 6403
        DEC D
6404
        DEC D
6405
        RET
6406
 
6407
S31867  RRC C
69 savelij 6408
        LD IYL,C
36 savelij 6409
        EXX
69 savelij 6410
        LD E,IYL
36 savelij 6411
        DEC D
6412
        DEC D
6413
        DEC D
6414
        RET
6415
 
6416
S31844  INC E
6417
        RRC C
69 savelij 6418
        LD IYL,C
36 savelij 6419
        EXX
69 savelij 6420
        LD E,IYL
36 savelij 6421
        RET
6422
 
6423
S3187   INC E
6424
S3188   SRL C
69 savelij 6425
        LD IYL,C
36 savelij 6426
        EXX
69 savelij 6427
        LD E,IYL
36 savelij 6428
        RET
6429
 
6430
S3189   SRL C
69 savelij 6431
        LD IYL,C
36 savelij 6432
        EXX
69 savelij 6433
        LD E,IYL
36 savelij 6434
        DEC D
6435
        DEC D
6436
        RET
6437
 
6438
S31892  SRL C
69 savelij 6439
        LD IYL,C
36 savelij 6440
        EXX
69 savelij 6441
        LD E,IYL
36 savelij 6442
        DEC D
6443
        DEC D
6444
        DEC D
6445
        RET
6446
 
69 savelij 6447
S319    DB 0XCB,0X31;SLI C
36 savelij 6448
        JP NC,S3190
6449
        JP S3191
6450
 
6451
S3195   RRC C
69 savelij 6452
        LD IYL,C
36 savelij 6453
        EXX
69 savelij 6454
        LD E,IYL
36 savelij 6455
        RET
6456
 
6457
S3192   JR Z,S3195
69 savelij 6458
        LD IYL,A
36 savelij 6459
        ADD A,(HL)
6460
        RRA
69 savelij 6461
        LD IYH,A
6462
        ADD A,IYL
36 savelij 6463
        RRA
6464
        LD (DE),A
6465
        INC E
6466
        JR Z,S3196
69 savelij 6467
        LD A,IYH
36 savelij 6468
        LD (DE),A
6469
        INC E
6470
        JR Z,S31966
6471
        ADD A,(HL)
6472
        RRA
6473
        LD (DE),A
6474
        INC E
6475
        JR Z,S31967
6476
S3191   LD A,C
6477
        ADD A,B
6478
        LD C,A
6479
        LD A,(HL)
6480
        INC HL
6481
        LD (DE),A
6482
        INC E
6483
        JP C,S3192
6484
        JR Z,S3199
6485
        ADD A,(HL)
6486
        RRA
6487
        LD (DE),A
6488
        INC E
6489
        JR Z,S31993
6490
        LD (DE),A
6491
        INC E
6492
        JP NZ,S3190
6493
        JP S31994
6494
 
6495
S3193   JR Z,S3198
69 savelij 6496
        LD IYL,A
36 savelij 6497
        ADD A,(HL)
6498
        RRA
69 savelij 6499
        LD IYH,A
6500
        ADD A,IYL
36 savelij 6501
        RRA
6502
        LD (DE),A
6503
        INC E
6504
        JR Z,S3199
69 savelij 6505
S31933  LD A,IYH
36 savelij 6506
        LD (DE),A
6507
        INC E
6508
        JR Z,S31993
6509
        ADD A,(HL)
6510
        RRA
6511
        LD (DE),A
6512
        INC E
6513
        JR Z,S31994
6514
S3190   LD A,C
6515
        ADD A,B
6516
        LD C,A
6517
        LD A,(HL)
6518
        INC HL
6519
        LD (DE),A
6520
        INC E
6521
        JP C,S3193
6522
        JP NZ,S3192
6523
        RRC C
69 savelij 6524
        LD IYL,C
36 savelij 6525
        EXX
69 savelij 6526
        LD E,IYL
36 savelij 6527
        RET
6528
 
6529
S3196   RRC C
69 savelij 6530
        LD IYL,C
36 savelij 6531
        EXX
69 savelij 6532
        LD E,IYL
36 savelij 6533
        DEC D
6534
        RET
6535
 
6536
S31966  RRC C
69 savelij 6537
        LD IYL,C
36 savelij 6538
        EXX
69 savelij 6539
        LD E,IYL
36 savelij 6540
        DEC D
6541
        DEC D
6542
        RET
6543
 
6544
S31967  RRC C
69 savelij 6545
        LD IYL,C
36 savelij 6546
        EXX
69 savelij 6547
        LD E,IYL
36 savelij 6548
        DEC D
6549
        DEC D
6550
        DEC D
6551
        RET
6552
 
6553
S3198   SRL C
69 savelij 6554
        LD IYL,C
36 savelij 6555
        EXX
69 savelij 6556
        LD E,IYL
36 savelij 6557
        RET
6558
 
6559
S3199   SRL C
69 savelij 6560
        LD IYL,C
36 savelij 6561
        EXX
69 savelij 6562
        LD E,IYL
36 savelij 6563
        DEC D
6564
        RET
6565
 
6566
S31993  SRL C
69 savelij 6567
        LD IYL,C
36 savelij 6568
        EXX
69 savelij 6569
        LD E,IYL
36 savelij 6570
        DEC D
6571
        DEC D
6572
        RET
6573
 
6574
S31994  SRL C
69 savelij 6575
        LD IYL,C
36 savelij 6576
        EXX
69 savelij 6577
        LD E,IYL
36 savelij 6578
        DEC D
6579
        DEC D
6580
        DEC D
6581
        RET
6582
 
6583
;INCLUDE "SGEN4.a80"
6584
S4_     LD D,C
6585
        PUSH DE
6586
        LD D,B
6587
        EXX
6588
        POP BC
6589
S41     SLA B
6590
        JP C,S418
69 savelij 6591
        DB 0XCB,0X31;SLI C
6592
        LD IYH,B
36 savelij 6593
        JP C,S4101
6594
        JP S4100
6595
 
6596
S4102   JR Z,S4104
6597
S410A   INC E
6598
        JR Z,S4105
6599
        LD B,A
6600
        ADD A,(HL)
6601
        RRA
69 savelij 6602
        LD IYL,A
36 savelij 6603
        ADD A,B
6604
        RRA
6605
        LD (DE),A
6606
        INC E
6607
        JR Z,S41052
69 savelij 6608
        LD A,IYL
36 savelij 6609
        LD (DE),A
6610
        INC E
6611
        JR Z,S41053
6612
        ADD A,(HL)
6613
        RRA
6614
        LD (DE),A
6615
        INC E
6616
        JR Z,S41054
6617
S4100   LD A,C
69 savelij 6618
        ADD A,IYH
36 savelij 6619
        LD C,A
6620
        LD A,(HL)
6621
        INC HL
69 savelij 6622
        DEC IXL
36 savelij 6623
        LD (DE),A
6624
        JP NC,S4102
6625
        JR Z,S4106
6626
        INC E
6627
        JR Z,S4107
6628
        LD (DE),A
6629
        INC E
6630
        JP NZ,S41033
6631
        JP S4109
6632
S4103   JR Z,S4108
6633
        INC E
6634
        JR Z,S4109
6635
S41033  LD B,A
6636
        ADD A,(HL)
6637
        RRA
69 savelij 6638
        LD IYL,A
36 savelij 6639
        ADD A,B
6640
        RRA
6641
        LD (DE),A
6642
        INC E
6643
        JR Z,S41092
69 savelij 6644
        LD A,IYL
36 savelij 6645
        LD (DE),A
6646
        INC E
6647
        JR Z,S41093
6648
        ADD A,(HL)
6649
        RRA
6650
        LD (DE),A
6651
        INC E
6652
        JR Z,S41094
6653
S4101   LD A,C
69 savelij 6654
        ADD A,IYH
36 savelij 6655
        LD C,A
6656
        LD A,(HL)
6657
        INC HL
69 savelij 6658
        DEC IXL
36 savelij 6659
        LD (DE),A
6660
        JP NC,S4103
6661
        JP NZ,S410A
6662
S4104   INC E
6663
S4105   SRL C
69 savelij 6664
        LD IYL,C
36 savelij 6665
        EXX
69 savelij 6666
        LD E,IYL
36 savelij 6667
        LD D,3
6668
        RET
6669
 
6670
S41052  SRL C
69 savelij 6671
        LD IYL,C
36 savelij 6672
        EXX
69 savelij 6673
        LD E,IYL
36 savelij 6674
        LD D,2
6675
        RET
6676
 
6677
S41053  SRL C
69 savelij 6678
        LD IYL,C
36 savelij 6679
        EXX
69 savelij 6680
        LD E,IYL
36 savelij 6681
        LD D,1
6682
        RET
6683
 
6684
S41054  SRL C
69 savelij 6685
        LD IYL,C
36 savelij 6686
        EXX
69 savelij 6687
        LD E,IYL
36 savelij 6688
        LD D,0
6689
        RET
6690
 
6691
S4106   INC E
6692
S4107   RRC C
69 savelij 6693
        LD IYL,C
36 savelij 6694
        EXX
69 savelij 6695
        LD E,IYL
36 savelij 6696
        RET
6697
 
6698
S4108   INC E
6699
S4109   RRC C
69 savelij 6700
        LD IYL,C
36 savelij 6701
        EXX
69 savelij 6702
        LD E,IYL
36 savelij 6703
        LD D,3
6704
        RET
6705
 
6706
S41092  RRC C
69 savelij 6707
        LD IYL,C
36 savelij 6708
        EXX
69 savelij 6709
        LD E,IYL
36 savelij 6710
        LD D,2
6711
        RET
6712
 
6713
S41093  RRC C
69 savelij 6714
        LD IYL,C
36 savelij 6715
        EXX
69 savelij 6716
        LD E,IYL
36 savelij 6717
        LD D,1
6718
        RET
6719
 
6720
S41094  RRC C
69 savelij 6721
        LD IYL,C
36 savelij 6722
        EXX
69 savelij 6723
        LD E,IYL
36 savelij 6724
        LD D,0
6725
        RET
6726
 
69 savelij 6727
S418    DB 0XCB,0X31;SLI C
36 savelij 6728
        JP NC,S4180
6729
        JP S4181
6730
 
6731
S4184   INC E
6732
S4185   RRC C
69 savelij 6733
        LD IYL,C
36 savelij 6734
        EXX
69 savelij 6735
        LD E,IYL
36 savelij 6736
        RET
6737
 
6738
S41844  INC E
6739
        RRC C
69 savelij 6740
        LD IYL,C
36 savelij 6741
        EXX
69 savelij 6742
        LD E,IYL
36 savelij 6743
        RET
6744
 
6745
S4182   JR Z,S4184
6746
        INC E
6747
S41822  JR Z,S4185
6748
S418222 LD (DE),A
6749
        INC E
6750
        JR Z,S4186
6751
        ADD A,(HL)
6752
        RRA
6753
        LD (DE),A
6754
        INC E
6755
        JR Z,S41866
6756
        LD (DE),A
6757
        INC E
6758
        JR Z,S41867
6759
        ADD A,(HL)
6760
        RRA
6761
        LD (DE),A
6762
        INC E
6763
        JR Z,S41868
6764
S4181   LD A,C
6765
        ADD A,B
6766
        LD C,A
6767
        LD A,(HL)
6768
        INC HL
69 savelij 6769
        DEC IXL
36 savelij 6770
        LD (DE),A
6771
        JP C,S4182
6772
        JR Z,S41871
6773
        JP S41831
6774
S4183   JR Z,S4187
6775
        INC E
6776
        JR Z,S4188
6777
        LD (DE),A
6778
S41831  INC E
6779
        JR Z,S4189
6780
        ADD A,(HL)
6781
        RRA
6782
        LD (DE),A
6783
        INC E
6784
        JR Z,S41891
6785
        LD (DE),A
6786
        INC E
6787
        JR Z,S41892
6788
        ADD A,(HL)
6789
        RRA
6790
        LD (DE),A
6791
        INC E
6792
        JR Z,S41893
6793
S4180   LD A,C
6794
        ADD A,B
6795
        LD C,A
6796
        LD A,(HL)
6797
        INC HL
69 savelij 6798
        DEC IXL
36 savelij 6799
        LD (DE),A
6800
        JP C,S4183
6801
        JR Z,S41844
6802
        INC E
6803
        JP NZ,S418222
6804
        RRC C
69 savelij 6805
        LD IYL,C
36 savelij 6806
        EXX
69 savelij 6807
        LD E,IYL
36 savelij 6808
        RET
6809
 
6810
S4186   RRC C
69 savelij 6811
        LD IYL,C
36 savelij 6812
        EXX
69 savelij 6813
        LD E,IYL
36 savelij 6814
        LD D,3
6815
        RET
6816
 
6817
S41866  RRC C
69 savelij 6818
        LD IYL,C
36 savelij 6819
        EXX
69 savelij 6820
        LD E,IYL
36 savelij 6821
        LD D,2
6822
        RET
6823
 
6824
S41867  RRC C
69 savelij 6825
        LD IYL,C
36 savelij 6826
        EXX
69 savelij 6827
        LD E,IYL
36 savelij 6828
        LD D,1
6829
        RET
6830
 
6831
S41868  RRC C
69 savelij 6832
        LD IYL,C
36 savelij 6833
        EXX
69 savelij 6834
        LD E,IYL
36 savelij 6835
        LD D,0
6836
        RET
6837
 
6838
S4187   INC E
6839
S4188   SRL C
69 savelij 6840
        LD IYL,C
36 savelij 6841
        EXX
69 savelij 6842
        LD E,IYL
36 savelij 6843
        RET
6844
 
6845
S4189   SRL C
69 savelij 6846
        LD IYL,C
36 savelij 6847
        EXX
69 savelij 6848
        LD E,IYL
36 savelij 6849
        LD D,3
6850
        RET
6851
 
6852
S41871  INC E
6853
S41891  SRL C
69 savelij 6854
        LD IYL,C
36 savelij 6855
        EXX
69 savelij 6856
        LD E,IYL
36 savelij 6857
        LD D,2
6858
        RET
6859
 
6860
S41892  SRL C
69 savelij 6861
        LD IYL,C
36 savelij 6862
        EXX
69 savelij 6863
        LD E,IYL
36 savelij 6864
        LD D,1
6865
        RET
6866
 
6867
S41893  SRL C
69 savelij 6868
        LD IYL,C
36 savelij 6869
        EXX
69 savelij 6870
        LD E,IYL
36 savelij 6871
        LD D,0
6872
        RET
6873
 
6874
;INCLUDE "SGEN5.a80"
6875
S5_     LD D,C
6876
        PUSH DE
6877
        LD D,B
6878
        EXX
6879
        POP BC
6880
S51     SLA B
6881
        JP C,S518
69 savelij 6882
        DB 0XCB,0X31;SLI C
36 savelij 6883
        JP C,S5101
6884
        JP S5100
6885
 
6886
S5102   JR Z,S5104
6887
S510A   INC E
6888
        JR Z,S5105
69 savelij 6889
        LD IYL,A
36 savelij 6890
        ADD A,(HL)
6891
        RRA
69 savelij 6892
        LD IYH,A
6893
        ADD A,IYL
36 savelij 6894
        RRA
6895
        LD (DE),A
6896
        INC E
6897
        JR Z,S51052
69 savelij 6898
        LD A,IYH
36 savelij 6899
        LD (DE),A
6900
        INC E
6901
        JR Z,S51053
6902
        ADD A,(HL)
6903
        RRA
6904
        LD (DE),A
6905
        INC E
6906
        JR Z,S51054
6907
        ADD A,(HL)
6908
        RRA
6909
        LD (DE),A
6910
        INC E
6911
        JR Z,S51055
6912
S5100   LD A,C
6913
        ADD A,B
6914
        LD C,A
6915
        LD A,(HL)
6916
        INC HL
69 savelij 6917
        DEC IXL
36 savelij 6918
        LD (DE),A
6919
        JP NC,S5102
6920
        JR Z,S5106
6921
        INC E
6922
        JR Z,S5107
6923
        LD (DE),A
6924
        DEC E
6925
        INC E
6926
S5103   JR Z,S5108
6927
        INC E
6928
        JR Z,S5109
69 savelij 6929
        LD IYL,A
36 savelij 6930
        ADD A,(HL)
6931
        RRA
69 savelij 6932
        LD IYH,A
6933
        ADD A,IYL
36 savelij 6934
        RRA
6935
        LD (DE),A
6936
        INC E
6937
        JR Z,S51092
69 savelij 6938
        LD A,IYH
36 savelij 6939
        LD (DE),A
6940
        INC E
6941
        JR Z,S51093
6942
        ADD A,(HL)
6943
        RRA
6944
        LD (DE),A
6945
        INC E
6946
        JR Z,S51094
6947
        ADD A,(HL)
6948
        RRA
6949
        LD (DE),A
6950
        INC E
6951
        JR Z,S51095
6952
S5101   LD A,C
6953
        ADD A,B
6954
        LD C,A
6955
        LD A,(HL)
6956
        INC HL
69 savelij 6957
        DEC IXL
36 savelij 6958
        LD (DE),A
6959
        JP NC,S5103
6960
        JP NZ,S510A
6961
S5104   INC E
6962
S5105   SRL C
69 savelij 6963
        LD IYL,C
36 savelij 6964
        EXX
69 savelij 6965
        LD E,IYL
36 savelij 6966
        LD D,4
6967
        RET
6968
 
6969
S51052  SRL C
69 savelij 6970
        LD IYL,C
36 savelij 6971
        EXX
69 savelij 6972
        LD E,IYL
36 savelij 6973
        LD D,3
6974
        RET
6975
 
6976
S51053  SRL C
69 savelij 6977
        LD IYL,C
36 savelij 6978
        EXX
69 savelij 6979
        LD E,IYL
36 savelij 6980
        LD D,2
6981
        RET
6982
 
6983
S51054  SRL C
69 savelij 6984
        LD IYL,C
36 savelij 6985
        EXX
69 savelij 6986
        LD E,IYL
36 savelij 6987
        LD D,1
6988
        RET
6989
 
6990
S51055  SRL C
69 savelij 6991
        LD IYL,C
36 savelij 6992
        EXX
69 savelij 6993
        LD E,IYL
36 savelij 6994
        LD D,0
6995
        RET
6996
 
6997
S5106   INC E
6998
S5107   RRC C
69 savelij 6999
        LD IYL,C
36 savelij 7000
        EXX
69 savelij 7001
        LD E,IYL
36 savelij 7002
        RET
7003
 
7004
S5108   INC E
7005
S5109   RRC C
69 savelij 7006
        LD IYL,C
36 savelij 7007
        EXX
69 savelij 7008
        LD E,IYL
36 savelij 7009
        LD D,4
7010
        RET
7011
 
7012
S51092  RRC C
69 savelij 7013
        LD IYL,C
36 savelij 7014
        EXX
69 savelij 7015
        LD E,IYL
36 savelij 7016
        LD D,3
7017
        RET
7018
 
7019
S51093  RRC C
69 savelij 7020
        LD IYL,C
36 savelij 7021
        EXX
69 savelij 7022
        LD E,IYL
36 savelij 7023
        LD D,2
7024
        RET
7025
 
7026
S51094  RRC C
69 savelij 7027
        LD IYL,C
36 savelij 7028
        EXX
69 savelij 7029
        LD E,IYL
36 savelij 7030
        LD D,1
7031
        RET
7032
 
7033
S51095  RRC C
69 savelij 7034
        LD IYL,C
36 savelij 7035
        EXX
69 savelij 7036
        LD E,IYL
36 savelij 7037
        LD D,0
7038
        RET
7039
 
69 savelij 7040
S518    DB 0XCB,0X31;SLI C
36 savelij 7041
        JP NC,S5180
7042
        JP S5181
7043
 
7044
S5184   INC E
7045
S5185   RRC C
69 savelij 7046
        LD IYL,C
36 savelij 7047
        EXX
69 savelij 7048
        LD E,IYL
36 savelij 7049
        RET
7050
 
7051
S5186   RRC C
69 savelij 7052
        LD IYL,C
36 savelij 7053
        EXX
69 savelij 7054
        LD E,IYL
36 savelij 7055
        LD D,4
7056
        RET
7057
 
7058
S51866  RRC C
69 savelij 7059
        LD IYL,C
36 savelij 7060
        EXX
69 savelij 7061
        LD E,IYL
36 savelij 7062
        LD D,3
7063
        RET
7064
 
7065
S51867  RRC C
69 savelij 7066
        LD IYL,C
36 savelij 7067
        EXX
69 savelij 7068
        LD E,IYL
36 savelij 7069
        LD D,2
7070
        RET
7071
 
7072
S51868  RRC C
69 savelij 7073
        LD IYL,C
36 savelij 7074
        EXX
69 savelij 7075
        LD E,IYL
36 savelij 7076
        LD D,1
7077
        RET
7078
 
7079
S51869  RRC C
69 savelij 7080
        LD IYL,C
36 savelij 7081
        EXX
69 savelij 7082
        LD E,IYL
36 savelij 7083
        LD D,0
7084
        RET
7085
 
7086
S5182   JR Z,S5184
7087
        INC E
7088
S51822  JR Z,S5185
69 savelij 7089
S518222 LD IYL,A
36 savelij 7090
        ADD A,(HL)
7091
        RRA
69 savelij 7092
        LD IYH,A
7093
        ADD A,IYL
36 savelij 7094
        RRA
7095
        LD (DE),A
7096
        INC E
7097
        JR Z,S5186
69 savelij 7098
        ADD A,IYH
36 savelij 7099
        RRA
7100
        LD (DE),A
7101
        INC E
7102
        JR Z,S51866
69 savelij 7103
        LD A,IYH
36 savelij 7104
        LD (DE),A
7105
        INC E
7106
        JR Z,S51867
7107
        ADD A,(HL)
7108
        RRA
7109
        LD (DE),A
7110
        INC E
7111
        JR Z,S51868
7112
        ADD A,(HL)
7113
        RRA
7114
        LD (DE),A
7115
        INC E
7116
        JR Z,S51869
7117
S5181   LD A,C
7118
        ADD A,B
7119
        LD C,A
7120
        LD A,(HL)
7121
        INC HL
69 savelij 7122
        DEC IXL
36 savelij 7123
        LD (DE),A
7124
        JP C,S5182
7125
        JR Z,S51871
7126
        JP S51831
7127
S5183   JR Z,S5187
7128
        INC E
7129
        JR Z,S5188
7130
        LD (DE),A
7131
S51831  INC E
7132
        JR Z,S5189
69 savelij 7133
        LD IYL,A
36 savelij 7134
        ADD A,(HL)
7135
        RRA
69 savelij 7136
        LD IYH,A
7137
        ADD A,IYL
36 savelij 7138
        RRA
7139
        LD (DE),A
7140
        INC E
7141
        JR Z,S51891
69 savelij 7142
        LD A,IYH
36 savelij 7143
        LD (DE),A
7144
        INC E
7145
        JR Z,S51892
7146
        ADD A,(HL)
7147
        RRA
7148
        LD (DE),A
7149
        INC E
7150
        JR Z,S51893
7151
        ADD A,(HL)
7152
        RRA
7153
        LD (DE),A
7154
        INC E
7155
        JR Z,S51894
7156
S5180   LD A,C
7157
        ADD A,B
7158
        LD C,A
7159
        LD A,(HL)
7160
        INC HL
69 savelij 7161
        DEC IXL
36 savelij 7162
        LD (DE),A
7163
        JP C,S5183
7164
        JR Z,S51844
7165
        INC E
7166
        JP NZ,S518222
7167
        RRC C
69 savelij 7168
        LD IYL,C
36 savelij 7169
        EXX
69 savelij 7170
        LD E,IYL
36 savelij 7171
        RET
7172
 
7173
S51844  INC E
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
S5187   INC E
7181
S5188   SRL C
69 savelij 7182
        LD IYL,C
36 savelij 7183
        EXX
69 savelij 7184
        LD E,IYL
36 savelij 7185
        RET
7186
 
7187
S5189   SRL C
69 savelij 7188
        LD IYL,C
36 savelij 7189
        EXX
69 savelij 7190
        LD E,IYL
36 savelij 7191
        LD D,4
7192
        RET
7193
 
7194
S51871  INC E
7195
S51891  SRL C
69 savelij 7196
        LD IYL,C
36 savelij 7197
        EXX
69 savelij 7198
        LD E,IYL
36 savelij 7199
        LD D,3
7200
        RET
7201
 
7202
S51892  SRL C
69 savelij 7203
        LD IYL,C
36 savelij 7204
        EXX
69 savelij 7205
        LD E,IYL
36 savelij 7206
        LD D,2
7207
        RET
7208
 
7209
S51893  SRL C
69 savelij 7210
        LD IYL,C
36 savelij 7211
        EXX
69 savelij 7212
        LD E,IYL
36 savelij 7213
        LD D,1
7214
        RET
7215
 
7216
S51894  SRL C
69 savelij 7217
        LD IYL,C
36 savelij 7218
        EXX
69 savelij 7219
        LD E,IYL
36 savelij 7220
        LD D,0
7221
        RET
7222
 
7223
;INCLUDE "SGEN6.a80"
7224
S6_     LD D,C
7225
        PUSH DE
7226
        LD D,B
7227
        EXX
7228
        POP BC
7229
S61     SLA B
7230
        JP C,S618
69 savelij 7231
        DB 0XCB,0X31;SLI C
36 savelij 7232
        JP C,S6101
7233
        JP S6100
7234
 
7235
S61052  SRL C
69 savelij 7236
        LD IYL,C
36 savelij 7237
        EXX
69 savelij 7238
        LD E,IYL
36 savelij 7239
        LD D,4
7240
        RET
7241
 
7242
S61053  SRL C
69 savelij 7243
        LD IYL,C
36 savelij 7244
        EXX
69 savelij 7245
        LD E,IYL
36 savelij 7246
        LD D,3
7247
        RET
7248
 
7249
S61054  SRL C
69 savelij 7250
        LD IYL,C
36 savelij 7251
        EXX
69 savelij 7252
        LD E,IYL
36 savelij 7253
        LD D,2
7254
        RET
7255
 
7256
S61055  SRL C
69 savelij 7257
        LD IYL,C
36 savelij 7258
        EXX
69 savelij 7259
        LD E,IYL
36 savelij 7260
        LD D,1
7261
        RET
7262
 
7263
S61056  SRL C
69 savelij 7264
        LD IYL,C
36 savelij 7265
        EXX
69 savelij 7266
        LD E,IYL
36 savelij 7267
        LD D,0
7268
        RET
7269
 
7270
S6102   JR Z,S6104
7271
S610A   INC E
7272
        JR Z,S6105
69 savelij 7273
        LD IYL,A
36 savelij 7274
        ADD A,(HL)
7275
        RRA
69 savelij 7276
        LD IYH,A
7277
        ADD A,IYL
36 savelij 7278
        RRA
7279
        LD (DE),A
7280
        INC E
7281
        JR Z,S61052
69 savelij 7282
        ADD A,IYH
36 savelij 7283
        RRA
7284
        LD (DE),A
7285
        INC E
7286
        JR Z,S61053
69 savelij 7287
        LD A,IYH
36 savelij 7288
        LD (DE),A
7289
        INC E
7290
        JR Z,S61054
7291
        ADD A,(HL)
7292
        RRA
7293
        LD (DE),A
7294
        INC E
7295
        JR Z,S61055
7296
        ADD A,(HL)
7297
        RRA
7298
        LD (DE),A
7299
        INC E
7300
        JR Z,S61056
7301
S6100   LD A,C
7302
        ADD A,B
7303
        LD C,A
7304
        LD A,(HL)
7305
        INC HL
69 savelij 7306
        DEC IXL
36 savelij 7307
        LD (DE),A
7308
        JP NC,S6102
7309
        JR Z,S6106
7310
        INC E
7311
        JR Z,S6107
7312
        LD (DE),A
7313
        DEC E
7314
        INC E
7315
S6103   JR Z,S6108
7316
        INC E
7317
        JR Z,S6109
69 savelij 7318
        LD IYL,A
36 savelij 7319
        ADD A,(HL)
7320
        RRA
69 savelij 7321
        LD IYH,A
7322
        ADD A,IYL
36 savelij 7323
        RRA
7324
        LD (DE),A
7325
        INC E
7326
        JR Z,S61092
69 savelij 7327
        ADD A,IYH
36 savelij 7328
        RRA
7329
        LD (DE),A
7330
        INC E
7331
        JR Z,S61093
69 savelij 7332
        LD A,IYH
36 savelij 7333
        LD (DE),A
7334
        INC E
7335
        JR Z,S61094
7336
        ADD A,(HL)
7337
        RRA
7338
        LD (DE),A
7339
        INC E
7340
        JR Z,S61095
7341
        ADD A,(HL)
7342
        RRA
7343
        LD (DE),A
7344
        INC E
7345
        JR Z,S61096
7346
S6101   LD A,C
7347
        ADD A,B
7348
        LD C,A
7349
        LD A,(HL)
7350
        INC HL
69 savelij 7351
        DEC IXL
36 savelij 7352
        LD (DE),A
7353
        JP NC,S6103
7354
        JP NZ,S610A
7355
S6104   INC E
7356
S6105   SRL C
69 savelij 7357
        LD IYL,C
36 savelij 7358
        EXX
69 savelij 7359
        LD E,IYL
36 savelij 7360
        LD D,5
7361
        RET
7362
 
7363
S6106   INC E
7364
S6107   RRC C
69 savelij 7365
        LD IYL,C
36 savelij 7366
        EXX
69 savelij 7367
        LD E,IYL
36 savelij 7368
        RET
7369
 
7370
S6108   INC E
7371
S6109   RRC C
69 savelij 7372
        LD IYL,C
36 savelij 7373
        EXX
69 savelij 7374
        LD E,IYL
36 savelij 7375
        LD D,5
7376
        RET
7377
 
7378
S61092  RRC C
69 savelij 7379
        LD IYL,C
36 savelij 7380
        EXX
69 savelij 7381
        LD E,IYL
36 savelij 7382
        LD D,4
7383
        RET
7384
 
7385
S61093  RRC C
69 savelij 7386
        LD IYL,C
36 savelij 7387
        EXX
69 savelij 7388
        LD E,IYL
36 savelij 7389
        LD D,3
7390
        RET
7391
 
7392
S61094  RRC C
69 savelij 7393
        LD IYL,C
36 savelij 7394
        EXX
69 savelij 7395
        LD E,IYL
36 savelij 7396
        LD D,2
7397
        RET
7398
 
7399
S61095  RRC C
69 savelij 7400
        LD IYL,C
36 savelij 7401
        EXX
69 savelij 7402
        LD E,IYL
36 savelij 7403
        LD D,1
7404
        RET
7405
 
7406
S61096  RRC C
69 savelij 7407
        LD IYL,C
36 savelij 7408
        EXX
69 savelij 7409
        LD E,IYL
36 savelij 7410
        LD D,0
7411
        RET
7412
 
69 savelij 7413
S618    DB 0XCB,0X31;SLI C
36 savelij 7414
        JP NC,S6180
7415
        JP S6181
7416
 
7417
S6184   INC E
7418
S6185   RRC C
69 savelij 7419
        LD IYL,C
36 savelij 7420
        EXX
69 savelij 7421
        LD E,IYL
36 savelij 7422
        RET
7423
 
7424
S6186   RRC C
69 savelij 7425
        LD IYL,C
36 savelij 7426
        EXX
69 savelij 7427
        LD E,IYL
36 savelij 7428
        LD D,5
7429
        RET
7430
 
7431
S61866  RRC C
69 savelij 7432
        LD IYL,C
36 savelij 7433
        EXX
69 savelij 7434
        LD E,IYL
36 savelij 7435
        LD D,4
7436
        RET
7437
 
7438
S61867  RRC C
69 savelij 7439
        LD IYL,C
36 savelij 7440
        EXX
69 savelij 7441
        LD E,IYL
36 savelij 7442
        LD D,3
7443
        RET
7444
 
7445
S61868  RRC C
69 savelij 7446
        LD IYL,C
36 savelij 7447
        EXX
69 savelij 7448
        LD E,IYL
36 savelij 7449
        LD D,2
7450
        RET
7451
 
7452
S61869  RRC C
69 savelij 7453
        LD IYL,C
36 savelij 7454
        EXX
69 savelij 7455
        LD E,IYL
36 savelij 7456
        LD D,1
7457
        RET
7458
 
7459
S6186A  RRC C
69 savelij 7460
        LD IYL,C
36 savelij 7461
        EXX
69 savelij 7462
        LD E,IYL
36 savelij 7463
        LD D,0
7464
        RET
7465
 
7466
S6182   JR Z,S6184
7467
        INC E
7468
S61822  JR Z,S6185
7469
S618222 LD (DE),A
7470
        INC E
7471
        JR Z,S6186
69 savelij 7472
        LD IYL,A
36 savelij 7473
        ADD A,(HL)
7474
        RRA
69 savelij 7475
        LD IYH,A
7476
        ADD A,IYL
36 savelij 7477
        RRA
7478
        LD (DE),A
7479
        INC E
7480
        JR Z,S61866
69 savelij 7481
        ADD A,IYH
36 savelij 7482
        RRA
7483
        LD (DE),A
7484
        INC E
7485
        JR Z,S61867
69 savelij 7486
        LD A,IYH
36 savelij 7487
        LD (DE),A
7488
        INC E
7489
        JR Z,S61868
7490
        ADD A,(HL)
7491
        RRA
7492
        LD (DE),A
7493
        INC E
7494
        JR Z,S61869
7495
        ADD A,(HL)
7496
        RRA
7497
        LD (DE),A
7498
        INC E
7499
        JR Z,S6186A
7500
S6181   LD A,C
7501
        ADD A,B
7502
        LD C,A
7503
        LD A,(HL)
7504
        INC HL
69 savelij 7505
        DEC IXL
36 savelij 7506
        LD (DE),A
7507
        JP C,S6182
7508
        JR Z,S61871
7509
        JP S61831
7510
S6183   JR Z,S6187
7511
        INC E
7512
        JR Z,S6188
7513
        LD (DE),A
7514
S61831  INC E
7515
        JR Z,S6189
69 savelij 7516
        LD IYL,A
36 savelij 7517
        ADD A,(HL)
7518
        RRA
69 savelij 7519
        LD IYH,A
7520
        ADD A,IYL
36 savelij 7521
        RRA
7522
        LD (DE),A
7523
        INC E
7524
        JR Z,S61891
69 savelij 7525
        ADD A,IYH
36 savelij 7526
        RRA
7527
        LD (DE),A
7528
        INC E
7529
        JR Z,S61892
69 savelij 7530
        LD A,IYH
36 savelij 7531
        LD (DE),A
7532
        INC E
7533
        JR Z,S61893
7534
        ADD A,(HL)
7535
        RRA
7536
        LD (DE),A
7537
        INC E
7538
        JR Z,S61894
7539
        ADD A,(HL)
7540
        RRA
7541
        LD (DE),A
7542
        INC E
7543
        JR Z,S61895
7544
S6180   LD A,C
7545
        ADD A,B
7546
        LD C,A
7547
        LD A,(HL)
7548
        INC HL
69 savelij 7549
        DEC IXL
36 savelij 7550
        LD (DE),A
7551
        JP C,S6183
7552
        JR Z,S61844
7553
        INC E
7554
        JP NZ,S618222
7555
        RRC C
69 savelij 7556
        LD IYL,C
36 savelij 7557
        EXX
69 savelij 7558
        LD E,IYL
36 savelij 7559
        RET
7560
 
7561
S61844  INC E
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
S6187   INC E
7569
S6188   SRL C
69 savelij 7570
        LD IYL,C
36 savelij 7571
        EXX
69 savelij 7572
        LD E,IYL
36 savelij 7573
        RET
7574
 
7575
S6189    SRL C
69 savelij 7576
        LD IYL,C
36 savelij 7577
        EXX
69 savelij 7578
        LD E,IYL
36 savelij 7579
        LD D,5
7580
        RET
7581
 
7582
S61871  INC E
7583
S61891  SRL C
69 savelij 7584
        LD IYL,C
36 savelij 7585
        EXX
69 savelij 7586
        LD E,IYL
36 savelij 7587
        LD D,4
7588
        RET
7589
 
7590
S61892  SRL C
69 savelij 7591
        LD IYL,C
36 savelij 7592
        EXX
69 savelij 7593
        LD E,IYL
36 savelij 7594
        LD D,3
7595
        RET
7596
 
7597
S61893  SRL C
69 savelij 7598
        LD IYL,C
36 savelij 7599
        EXX
69 savelij 7600
        LD E,IYL
36 savelij 7601
        LD D,2
7602
        RET
7603
 
7604
S61894  SRL C
69 savelij 7605
        LD IYL,C
36 savelij 7606
        EXX
69 savelij 7607
        LD E,IYL
36 savelij 7608
        LD D,1
7609
        RET
7610
 
7611
S61895  SRL C
69 savelij 7612
        LD IYL,C
36 savelij 7613
        EXX
69 savelij 7614
        LD E,IYL
36 savelij 7615
        LD D,0
7616
        RET
7617
 
7618
;INCLUDE "SGEN7.a80"
7619
S7_     LD D,C
7620
        PUSH DE
7621
        LD D,B
7622
        EXX
7623
        POP BC
7624
S71     SLA B
7625
        JP C,S718
69 savelij 7626
        DB 0XCB,0X31;SLI C
36 savelij 7627
        JP C,S7101
7628
        JP S7100
7629
 
7630
S71052  SRL C
69 savelij 7631
        LD IYL,C
36 savelij 7632
        EXX
69 savelij 7633
        LD E,IYL
36 savelij 7634
        LD D,5
7635
        RET
7636
 
7637
S71053  SRL C
69 savelij 7638
        LD IYL,C
36 savelij 7639
        EXX
69 savelij 7640
        LD E,IYL
36 savelij 7641
        LD D,4
7642
        RET
7643
 
7644
S71054  SRL C
69 savelij 7645
        LD IYL,C
36 savelij 7646
        EXX
69 savelij 7647
        LD E,IYL
36 savelij 7648
        LD D,3
7649
        RET
7650
 
7651
S71055  SRL C
69 savelij 7652
        LD IYL,C
36 savelij 7653
        EXX
69 savelij 7654
        LD E,IYL
36 savelij 7655
        LD D,2
7656
        RET
7657
 
7658
S71056  SRL C
69 savelij 7659
        LD IYL,C
36 savelij 7660
        EXX
69 savelij 7661
        LD E,IYL
36 savelij 7662
        LD D,1
7663
        RET
7664
 
7665
S71057  SRL C
69 savelij 7666
        LD IYL,C
36 savelij 7667
        EXX
69 savelij 7668
        LD E,IYL
36 savelij 7669
        LD D,0
7670
        RET
7671
 
7672
S7102   JR Z,S7104
7673
S710A   INC E
7674
        JR Z,S7105
7675
        LD (DE),A
7676
        INC E
7677
        JR Z,S71052
69 savelij 7678
        LD IYL,A
36 savelij 7679
        ADD A,(HL)
7680
        RRA
69 savelij 7681
        LD IYH,A
7682
        ADD A,IYL
36 savelij 7683
        RRA
7684
        LD (DE),A
7685
        INC E
7686
        JR Z,S71053
69 savelij 7687
        ADD A,IYH
36 savelij 7688
        RRA
7689
        LD (DE),A
7690
        INC E
7691
        JR Z,S71054
69 savelij 7692
        LD A,IYH
36 savelij 7693
        LD (DE),A
7694
        INC E
7695
        JR Z,S71055
7696
        ADD A,(HL)
7697
        RRA
7698
        LD (DE),A
7699
        INC E
7700
        JR Z,S71056
7701
        ADD A,(HL)
7702
        RRA
7703
        LD (DE),A
7704
        INC E
7705
        JR Z,S71057
7706
S7100   LD A,C
7707
        ADD A,B
7708
        LD C,A
7709
        LD A,(HL)
7710
        INC HL
69 savelij 7711
        DEC IXL
36 savelij 7712
        LD (DE),A
7713
        JP NC,S7102
7714
        JR Z,S7106
7715
        INC E
7716
        JR Z,S7107
7717
        LD (DE),A
7718
        DEC E
7719
        INC E
7720
S7103   JR Z,S7108
7721
        INC E
7722
        JR Z,S7109
7723
        LD (DE),A
7724
        INC E
7725
        JR Z,S71092
69 savelij 7726
        LD IYL,A
36 savelij 7727
        ADD A,(HL)
7728
        RRA
69 savelij 7729
        LD IYH,A
7730
        ADD A,IYL
36 savelij 7731
        RRA
7732
        LD (DE),A
7733
        INC E
7734
        JR Z,S71093
69 savelij 7735
        ADD A,IYH
36 savelij 7736
        RRA
7737
        LD (DE),A
7738
        INC E
7739
        JR Z,S71094
69 savelij 7740
        LD A,IYH
36 savelij 7741
        LD (DE),A
7742
        INC E
7743
        JR Z,S71095
7744
        ADD A,(HL)
7745
        RRA
7746
        LD (DE),A
7747
        INC E
7748
        JR Z,S71096
7749
        ADD A,(HL)
7750
        RRA
7751
        LD (DE),A
7752
        INC E
7753
        JR Z,S71097
7754
S7101   LD A,C
7755
        ADD A,B
7756
        LD C,A
7757
        LD A,(HL)
7758
        INC HL
69 savelij 7759
        DEC IXL
36 savelij 7760
        LD (DE),A
7761
        JP NC,S7103
7762
        JP NZ,S710A
7763
S7104   INC E
7764
S7105   SRL C
69 savelij 7765
        LD IYL,C
36 savelij 7766
        EXX
69 savelij 7767
        LD E,IYL
36 savelij 7768
        LD D,6
7769
        RET
7770
 
7771
S7106   INC E
7772
S7107   RRC C
69 savelij 7773
        LD IYL,C
36 savelij 7774
        EXX
69 savelij 7775
        LD E,IYL
36 savelij 7776
        RET
7777
 
7778
S7108   INC E
7779
S7109   RRC C
69 savelij 7780
        LD IYL,C
36 savelij 7781
        EXX
69 savelij 7782
        LD E,IYL
36 savelij 7783
        LD D,6
7784
        RET
7785
 
7786
S71092  RRC C
69 savelij 7787
        LD IYL,C
36 savelij 7788
        EXX
69 savelij 7789
        LD E,IYL
36 savelij 7790
        LD D,5
7791
        RET
7792
 
7793
S71093  RRC C
69 savelij 7794
        LD IYL,C
36 savelij 7795
        EXX
69 savelij 7796
        LD E,IYL
36 savelij 7797
        LD D,4
7798
        RET
7799
 
7800
S71094  RRC C
69 savelij 7801
        LD IYL,C
36 savelij 7802
        EXX
69 savelij 7803
        LD E,IYL
36 savelij 7804
        LD D,3
7805
        RET
7806
 
7807
S71095  RRC C
69 savelij 7808
        LD IYL,C
36 savelij 7809
        EXX
69 savelij 7810
        LD E,IYL
36 savelij 7811
        LD D,2
7812
        RET
7813
 
7814
S71096  RRC C
69 savelij 7815
        LD IYL,C
36 savelij 7816
        EXX
69 savelij 7817
        LD E,IYL
36 savelij 7818
        LD D,1
7819
        RET
7820
 
7821
S71097  RRC C
69 savelij 7822
        LD IYL,C
36 savelij 7823
        EXX
69 savelij 7824
        LD E,IYL
36 savelij 7825
        LD D,0
7826
        RET
7827
 
69 savelij 7828
S718    DB 0XCB,0X31;SLI C
36 savelij 7829
        JP NC,S7180
7830
        JP S7181
7831
 
7832
S7184   INC E
7833
S7185   RRC C
69 savelij 7834
        LD IYL,C
36 savelij 7835
        EXX
69 savelij 7836
        LD E,IYL
36 savelij 7837
        RET
7838
 
7839
S7186   RRC C
69 savelij 7840
        LD IYL,C
36 savelij 7841
        EXX
69 savelij 7842
        LD E,IYL
36 savelij 7843
        LD D,6
7844
        RET
7845
 
7846
S71866  RRC C
69 savelij 7847
        LD IYL,C
36 savelij 7848
        EXX
69 savelij 7849
        LD E,IYL
36 savelij 7850
        LD D,5
7851
        RET
7852
 
7853
S71867  RRC C
69 savelij 7854
        LD IYL,C
36 savelij 7855
        EXX
69 savelij 7856
        LD E,IYL
36 savelij 7857
        LD D,4
7858
        RET
7859
 
7860
S71868  RRC C
69 savelij 7861
        LD IYL,C
36 savelij 7862
        EXX
69 savelij 7863
        LD E,IYL
36 savelij 7864
        LD D,3
7865
        RET
7866
 
7867
S71869  RRC C
69 savelij 7868
        LD IYL,C
36 savelij 7869
        EXX
69 savelij 7870
        LD E,IYL
36 savelij 7871
        LD D,2
7872
        RET
7873
 
7874
S7186A  RRC C
69 savelij 7875
        LD IYL,C
36 savelij 7876
        EXX
69 savelij 7877
        LD E,IYL
36 savelij 7878
        LD D,1
7879
        RET
7880
 
7881
S7186B  RRC C
69 savelij 7882
        LD IYL,C
36 savelij 7883
        EXX
69 savelij 7884
        LD E,IYL
36 savelij 7885
        LD D,0
7886
        RET
7887
 
7888
S7182   JR Z,S7184
7889
        INC E
7890
S71822  JR Z,S7185
7891
S718222 LD (DE),A
7892
        INC E
7893
        JR Z,S7186
69 savelij 7894
        LD IYL,A
36 savelij 7895
        ADD A,(HL)
7896
        RRA
69 savelij 7897
        LD IYH,A
7898
        ADD A,IYL
36 savelij 7899
        RRA
7900
        LD (DE),A
7901
        INC E
7902
        JR Z,S71866
69 savelij 7903
        ADD A,IYH
36 savelij 7904
        RRA
7905
        LD (DE),A
7906
        INC E
7907
        JR Z,S71867
69 savelij 7908
        LD A,IYH
36 savelij 7909
        LD (DE),A
7910
        INC E
7911
        JR Z,S71868
7912
        LD (DE),A
7913
        INC E
7914
        JR Z,S71869
7915
        ADD A,(HL)
7916
        RRA
7917
        LD (DE),A
7918
        INC E
7919
        JR Z,S7186A
7920
        ADD A,(HL)
7921
        RRA
7922
        LD (DE),A
7923
        INC E
7924
        JR Z,S7186B
7925
S7181   LD A,C
7926
        ADD A,B
7927
        LD C,A
7928
        LD A,(HL)
7929
        INC HL
69 savelij 7930
        DEC IXL
36 savelij 7931
        LD (DE),A
7932
        JP C,S7182
7933
        JR Z,S71871
7934
        JP S71831
7935
S7183   JR Z,S7187
7936
        INC E
7937
        JR Z,S7188
7938
        LD (DE),A
7939
S71831  INC E
7940
        JR Z,S7189
69 savelij 7941
        LD IYL,A
36 savelij 7942
        ADD A,(HL)
7943
        RRA
69 savelij 7944
        LD IYH,A
7945
        ADD A,IYL
36 savelij 7946
        RRA
7947
        LD (DE),A
7948
        INC E
7949
        JR Z,S71891
69 savelij 7950
        ADD A,IYH
36 savelij 7951
        RRA
7952
        LD (DE),A
7953
        INC E
7954
        JR Z,S71892
69 savelij 7955
        LD A,IYH
36 savelij 7956
        LD (DE),A
7957
        INC E
7958
        JR Z,S71893
7959
        LD (DE),A
7960
        INC E
7961
        JR Z,S71894
7962
        ADD A,(HL)
7963
        RRA
7964
        LD (DE),A
7965
        INC E
7966
        JR Z,S71895
7967
        ADD A,(HL)
7968
        RRA
7969
        LD (DE),A
7970
        INC E
7971
        JR Z,S71896
7972
S7180   LD A,C
7973
        ADD A,B
7974
        LD C,A
7975
        LD A,(HL)
7976
        INC HL
69 savelij 7977
        DEC IXL
36 savelij 7978
        LD (DE),A
7979
        JP C,S7183
7980
        JR Z,S71844
7981
        INC E
7982
        JP NZ,S718222
7983
        RRC C
69 savelij 7984
        LD IYL,C
36 savelij 7985
        EXX
69 savelij 7986
        LD E,IYL
36 savelij 7987
        RET
7988
 
7989
S71844  INC E
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
S7187   INC E
7997
S7188   SRL C
69 savelij 7998
        LD IYL,C
36 savelij 7999
        EXX
69 savelij 8000
        LD E,IYL
36 savelij 8001
        RET
8002
 
8003
S7189   SRL C
69 savelij 8004
        LD IYL,C
36 savelij 8005
        EXX
69 savelij 8006
        LD E,IYL
36 savelij 8007
        LD D,6
8008
        RET
8009
 
8010
S71871  INC E
8011
S71891  SRL C
69 savelij 8012
        LD IYL,C
36 savelij 8013
        EXX
69 savelij 8014
        LD E,IYL
36 savelij 8015
        LD D,5
8016
        RET
8017
 
8018
S71892  SRL C
69 savelij 8019
        LD IYL,C
36 savelij 8020
        EXX
69 savelij 8021
        LD E,IYL
36 savelij 8022
        LD D,4
8023
        RET
8024
 
8025
S71893  SRL C
69 savelij 8026
        LD IYL,C
36 savelij 8027
        EXX
69 savelij 8028
        LD E,IYL
36 savelij 8029
        LD D,3
8030
        RET
8031
 
8032
S71894  SRL C
69 savelij 8033
        LD IYL,C
36 savelij 8034
        EXX
69 savelij 8035
        LD E,IYL
36 savelij 8036
        LD D,2
8037
        RET
8038
 
8039
S71895  SRL C
69 savelij 8040
        LD IYL,C
36 savelij 8041
        EXX
69 savelij 8042
        LD E,IYL
36 savelij 8043
        LD D,1
8044
        RET
8045
 
8046
S71896  SRL C
69 savelij 8047
        LD IYL,C
36 savelij 8048
        EXX
69 savelij 8049
        LD E,IYL
36 savelij 8050
        LD D,0
8051
        RET
8052
 
8053
;INCLUDE "SGEN8.a80"
8054
S8_     LD D,C
8055
        PUSH DE
8056
        LD D,B
8057
        EXX
8058
        POP BC
8059
S81     SLA B
8060
        JP C,S818
69 savelij 8061
        DB 0XCB,0X31;SLI C
36 savelij 8062
        JP C,S8101
8063
        JP S8100
8064
 
8065
S81052  SRL C
69 savelij 8066
        LD IYL,C
36 savelij 8067
        EXX
69 savelij 8068
        LD E,IYL
36 savelij 8069
        LD D,6
8070
        RET
8071
 
8072
S81053  SRL C
69 savelij 8073
        LD IYL,C
36 savelij 8074
        EXX
69 savelij 8075
        LD E,IYL
36 savelij 8076
        LD D,5
8077
        RET
8078
 
8079
S81054  SRL C
69 savelij 8080
        LD IYL,C
36 savelij 8081
        EXX
69 savelij 8082
        LD E,IYL
36 savelij 8083
        LD D,4
8084
        RET
8085
 
8086
S81055  SRL C
69 savelij 8087
        LD IYL,C
36 savelij 8088
        EXX
69 savelij 8089
        LD E,IYL
36 savelij 8090
        LD D,3
8091
        RET
8092
 
8093
S81056  SRL C
69 savelij 8094
        LD IYL,C
36 savelij 8095
        EXX
69 savelij 8096
        LD E,IYL
36 savelij 8097
        LD D,2
8098
        RET
8099
 
8100
S81057  SRL C
69 savelij 8101
        LD IYL,C
36 savelij 8102
        EXX
69 savelij 8103
        LD E,IYL
36 savelij 8104
        LD D,1
8105
        RET
8106
 
8107
S81058  SRL C
69 savelij 8108
        LD IYL,C
36 savelij 8109
        EXX
69 savelij 8110
        LD E,IYL
36 savelij 8111
        LD D,0
8112
        RET
8113
 
8114
S8102   JP Z,S8104
8115
S810A   INC E
8116
        JP Z,S8105
8117
        LD (DE),A
8118
        INC E
8119
        JR Z,S81052
69 savelij 8120
        LD IYL,A
36 savelij 8121
        ADD A,(HL)
8122
        RRA
69 savelij 8123
        LD IYH,A
8124
        ADD A,IYL
36 savelij 8125
        RRA
8126
        LD (DE),A
8127
        INC E
8128
        JR Z,S81053
69 savelij 8129
        ADD A,IYH
36 savelij 8130
        RRA
8131
        LD (DE),A
8132
        INC E
8133
        JR Z,S81054
69 savelij 8134
        LD A,IYH
36 savelij 8135
        LD (DE),A
8136
        INC E
8137
        JR Z,S81055
8138
        LD (DE),A
8139
        INC E
8140
        JR Z,S81056
8141
        ADD A,(HL)
8142
        RRA
8143
        LD (DE),A
8144
        INC E
8145
        JR Z,S81057
8146
        ADD A,(HL)
8147
        RRA
8148
        LD (DE),A
8149
        INC E
8150
        JR Z,S81058
8151
S8100   LD A,C
8152
        ADD A,B
8153
        LD C,A
8154
        LD A,(HL)
8155
        INC HL
69 savelij 8156
        DEC IXL
36 savelij 8157
        LD (DE),A
8158
        JP NC,S8102
8159
        JR Z,S8106
8160
        INC E
8161
        JR Z,S8107
8162
        LD (DE),A
8163
        DEC E
8164
        INC E
8165
S8103   JR Z,S8108
8166
        INC E
8167
        JR Z,S8109
8168
        LD (DE),A
8169
        INC E
8170
        JR Z,S81092
69 savelij 8171
        LD IYL,A
36 savelij 8172
        ADD A,(HL)
8173
        RRA
69 savelij 8174
        LD IYH,A
8175
        ADD A,IYL
36 savelij 8176
        RRA
8177
        LD (DE),A
8178
        INC E
8179
        JR Z,S81093
69 savelij 8180
        ADD A,IYH
36 savelij 8181
        RRA
8182
        LD (DE),A
8183
        INC E
8184
        JR Z,S81094
69 savelij 8185
        LD A,IYH
36 savelij 8186
        LD (DE),A
8187
        INC E
8188
        JR Z,S81095
8189
        LD (DE),A
8190
        INC E
8191
        JR Z,S81096
8192
        ADD A,(HL)
8193
        RRA
8194
        LD (DE),A
8195
        INC E
8196
        JR Z,S81097
8197
        ADD A,(HL)
8198
        RRA
8199
        LD (DE),A
8200
        INC E
8201
        JR Z,S81098
8202
S8101   LD A,C
8203
        ADD A,B
8204
        LD C,A
8205
        LD A,(HL)
8206
        INC HL
69 savelij 8207
        DEC IXL
36 savelij 8208
        LD (DE),A
8209
        JP NC,S8103
8210
        JP NZ,S810A
8211
S8104   INC E
8212
S8105   SRL C
69 savelij 8213
        LD IYL,C
36 savelij 8214
        EXX
69 savelij 8215
        LD E,IYL
36 savelij 8216
        LD D,7
8217
        RET
8218
 
8219
S8106   INC E
8220
S8107   RRC C
69 savelij 8221
        LD IYL,C
36 savelij 8222
        EXX
69 savelij 8223
        LD E,IYL
36 savelij 8224
        RET
8225
 
8226
S8108   INC E
8227
S8109   RRC C
69 savelij 8228
        LD IYL,C
36 savelij 8229
        EXX
69 savelij 8230
        LD E,IYL
36 savelij 8231
        LD D,7
8232
        RET
8233
 
8234
S81092  RRC C
69 savelij 8235
        LD IYL,C
36 savelij 8236
        EXX
69 savelij 8237
        LD E,IYL
36 savelij 8238
        LD D,6
8239
        RET
8240
 
8241
S81093  RRC C
69 savelij 8242
        LD IYL,C
36 savelij 8243
        EXX
69 savelij 8244
        LD E,IYL
36 savelij 8245
        LD D,5
8246
        RET
8247
 
8248
S81094  RRC C
69 savelij 8249
        LD IYL,C
36 savelij 8250
        EXX
69 savelij 8251
        LD E,IYL
36 savelij 8252
        LD D,4
8253
        RET
8254
 
8255
S81095  RRC C
69 savelij 8256
        LD IYL,C
36 savelij 8257
        EXX
69 savelij 8258
        LD E,IYL
36 savelij 8259
        LD D,3
8260
        RET
8261
 
8262
S81096  RRC C
69 savelij 8263
        LD IYL,C
36 savelij 8264
        EXX
69 savelij 8265
        LD E,IYL
36 savelij 8266
        LD D,2
8267
        RET
8268
 
8269
S81097  RRC C
69 savelij 8270
        LD IYL,C
36 savelij 8271
        EXX
69 savelij 8272
        LD E,IYL
36 savelij 8273
        LD D,1
8274
        RET
8275
 
8276
S81098  RRC C
69 savelij 8277
        LD IYL,C
36 savelij 8278
        EXX
69 savelij 8279
        LD E,IYL
36 savelij 8280
        LD D,0
8281
        RET
8282
 
69 savelij 8283
S818    DB 0XCB,0X31;SLI C
36 savelij 8284
        JP NC,S8180
8285
        JP S8181
8286
 
8287
S8184   INC E
8288
S8185   RRC C
69 savelij 8289
        LD IYL,C
36 savelij 8290
        EXX
69 savelij 8291
        LD E,IYL
36 savelij 8292
        RET
8293
 
8294
S8186   RRC C
69 savelij 8295
        LD IYL,C
36 savelij 8296
        EXX
69 savelij 8297
        LD E,IYL
36 savelij 8298
        LD D,7
8299
        RET
8300
 
8301
S81866  RRC C
69 savelij 8302
        LD IYL,C
36 savelij 8303
        EXX
69 savelij 8304
        LD E,IYL
36 savelij 8305
        LD D,6
8306
        RET
8307
 
8308
S81867  RRC C
69 savelij 8309
        LD IYL,C
36 savelij 8310
        EXX
69 savelij 8311
        LD E,IYL
36 savelij 8312
        LD D,5
8313
        RET
8314
 
8315
S81868  RRC C
69 savelij 8316
        LD IYL,C
36 savelij 8317
        EXX
69 savelij 8318
        LD E,IYL
36 savelij 8319
        LD D,4
8320
        RET
8321
 
8322
S81869  RRC C
69 savelij 8323
        LD IYL,C
36 savelij 8324
        EXX
69 savelij 8325
        LD E,IYL
36 savelij 8326
        LD D,3
8327
        RET
8328
 
8329
S8186A  RRC C
69 savelij 8330
        LD IYL,C
36 savelij 8331
        EXX
69 savelij 8332
        LD E,IYL
36 savelij 8333
        LD D,2
8334
        RET
8335
 
8336
S8186B  RRC C
69 savelij 8337
        LD IYL,C
36 savelij 8338
        EXX
69 savelij 8339
        LD E,IYL
36 savelij 8340
        LD D,1
8341
        RET
8342
 
8343
S8186C  RRC C
69 savelij 8344
        LD IYL,C
36 savelij 8345
        EXX
69 savelij 8346
        LD E,IYL
36 savelij 8347
        LD D,0
8348
        RET
8349
 
8350
S8182   JR Z,S8184
8351
        INC E
8352
S81822  JR Z,S8185
8353
S818222 LD (DE),A
8354
        INC E
8355
        JR Z,S8186
69 savelij 8356
        LD IYL,A
36 savelij 8357
        ADD A,(HL)
8358
        RRA
69 savelij 8359
        LD IYH,A
8360
        ADD A,IYL
36 savelij 8361
        RRA
8362
        LD (DE),A
8363
        INC E
8364
        JR Z,S81866
69 savelij 8365
        ADD A,IYH
36 savelij 8366
        RRA
8367
        LD (DE),A
8368
        INC E
8369
        JR Z,S81867
8370
        LD (DE),A
8371
        INC E
8372
        JR Z,S81868
69 savelij 8373
        LD A,IYH
36 savelij 8374
        LD (DE),A
8375
        INC E
8376
        JR Z,S81869
8377
        LD (DE),A
8378
        INC E
8379
        JR Z,S8186A
8380
        ADD A,(HL)
8381
        RRA
8382
        LD (DE),A
8383
        INC E
8384
        JR Z,S8186B
8385
        ADD A,(HL)
8386
        RRA
8387
        LD (DE),A
8388
        INC E
8389
        JR Z,S8186C
8390
S8181   LD A,C
8391
        ADD A,B
8392
        LD C,A
8393
        LD A,(HL)
8394
        INC HL
69 savelij 8395
        DEC IXL
36 savelij 8396
        LD (DE),A
8397
        JP C,S8182
8398
        JR Z,S81871
8399
        JP S81831
8400
S8183   JR Z,S8187
8401
        INC E
8402
        JR Z,S8188
8403
        LD (DE),A
8404
S81831  INC E
8405
        JR Z,S8189
69 savelij 8406
        LD IYL,A
36 savelij 8407
        ADD A,(HL)
8408
        RRA
69 savelij 8409
        LD IYH,A
8410
        ADD A,IYL
36 savelij 8411
        RRA
8412
        LD (DE),A
8413
        INC E
8414
        JR Z,S81891
69 savelij 8415
        ADD A,IYH
36 savelij 8416
        RRA
8417
        LD (DE),A
8418
        INC E
8419
        JR Z,S81892
8420
        LD (DE),A
8421
        INC E
8422
        JR Z,S81893
69 savelij 8423
        LD A,IYH
36 savelij 8424
        LD (DE),A
8425
        INC E
8426
        JR Z,S81894
8427
        LD (DE),A
8428
        INC E
8429
        JR Z,S81895
8430
        ADD A,(HL)
8431
        RRA
8432
        LD (DE),A
8433
        INC E
8434
        JR Z,S81896
8435
        ADD A,(HL)
8436
        RRA
8437
        LD (DE),A
8438
        INC E
8439
        JR Z,S81897
8440
S8180   LD A,C
8441
        ADD A,B
8442
        LD C,A
8443
        LD A,(HL)
8444
        INC HL
69 savelij 8445
        DEC IXL
36 savelij 8446
        LD (DE),A
8447
        JP C,S8183
8448
        JR Z,S81844
8449
        INC E
8450
        JP NZ,S818222
8451
        RRC C
69 savelij 8452
        LD IYL,C
36 savelij 8453
        EXX
69 savelij 8454
        LD E,IYL
36 savelij 8455
        RET
8456
 
8457
S81844  INC E
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
S8187   INC E
8465
S8188   SRL C
69 savelij 8466
        LD IYL,C
36 savelij 8467
        EXX
69 savelij 8468
        LD E,IYL
36 savelij 8469
        RET
8470
 
8471
S8189   SRL C
69 savelij 8472
        LD IYL,C
36 savelij 8473
        EXX
69 savelij 8474
        LD E,IYL
36 savelij 8475
        LD D,7
8476
        RET
8477
 
8478
S81871  INC E
8479
S81891  SRL C
69 savelij 8480
        LD IYL,C
36 savelij 8481
        EXX
69 savelij 8482
        LD E,IYL
36 savelij 8483
        LD D,6
8484
        RET
8485
 
8486
S81892  SRL C
69 savelij 8487
        LD IYL,C
36 savelij 8488
        EXX
69 savelij 8489
        LD E,IYL
36 savelij 8490
        LD D,5
8491
        RET
8492
 
8493
S81893  SRL C
69 savelij 8494
        LD IYL,C
36 savelij 8495
        EXX
69 savelij 8496
        LD E,IYL
36 savelij 8497
        LD D,4
8498
        RET
8499
 
8500
S81894  SRL C
69 savelij 8501
        LD IYL,C
36 savelij 8502
        EXX
69 savelij 8503
        LD E,IYL
36 savelij 8504
        LD D,3
8505
        RET
8506
 
8507
S81895  SRL C
69 savelij 8508
        LD IYL,C
36 savelij 8509
        EXX
69 savelij 8510
        LD E,IYL
36 savelij 8511
        LD D,2
8512
        RET
8513
 
8514
S81896  SRL C
69 savelij 8515
        LD IYL,C
36 savelij 8516
        EXX
69 savelij 8517
        LD E,IYL
36 savelij 8518
        LD D,1
8519
        RET
8520
 
8521
S81897  SRL C
69 savelij 8522
        LD IYL,C
36 savelij 8523
        EXX
69 savelij 8524
        LD E,IYL
36 savelij 8525
        LD D,0
8526
        RET
8527
 
8528
;___END
8529
;       ENDMODULE
8530
 
69 savelij 8531
        ORG GSRomBaseL+0X3E00
36 savelij 8532
DIVTAB3
69 savelij 8533
;INCLUDE "_DIVTAB3.a80"                                 0X10*0X20=0X200
8534
        DB 0X00,0X01,0X01,0X02,0X03,0X03,0X04,0X05,0X05,0X06,0X07,0X07,0X08,0X09,0X09,0X0A
8535
        DB 0X0B,0X0B,0X0C,0X0D,0X0D,0X0E,0X0F,0X0F,0X10,0X11,0X11,0X12,0X13,0X13,0X14,0X15
8536
        DB 0X15,0X16,0X17,0X17,0X18,0X19,0X19,0X1A,0X1B,0X1B,0X1C,0X1D,0X1D,0X1E,0X1F,0X1F
8537
        DB 0X20,0X21,0X21,0X22,0X23,0X23,0X24,0X25,0X25,0X26,0X27,0X27,0X28,0X29,0X29,0X2A
8538
        DB 0X2B,0X2B,0X2C,0X2D,0X2D,0X2E,0X2F,0X2F,0X30,0X31,0X31,0X32,0X33,0X33,0X34,0X35
8539
        DB 0X35,0X36,0X37,0X37,0X38,0X39,0X39,0X3A,0X3B,0X3B,0X3C,0X3D,0X3D,0X3E,0X3F,0X3F
8540
        DB 0X40,0X41,0X41,0X42,0X43,0X43,0X44,0X45,0X45,0X46,0X47,0X47,0X48,0X49,0X49,0X4A
8541
        DB 0X4B,0X4B,0X4C,0X4D,0X4D,0X4E,0X4F,0X4F,0X50,0X51,0X51,0X52,0X53,0X53,0X54,0X55
8542
        DB 0X55,0X56,0X57,0X57,0X58,0X59,0X59,0X5A,0X5B,0X5B,0X5C,0X5D,0X5D,0X5E,0X5F,0X5F
8543
        DB 0X60,0X61,0X61,0X62,0X63,0X63,0X64,0X65,0X65,0X66,0X67,0X67,0X68,0X69,0X69,0X6A
8544
        DB 0X6B,0X6B,0X6C,0X6D,0X6D,0X6E,0X6F,0X6F,0X70,0X71,0X71,0X72,0X73,0X73,0X74,0X75
8545
        DB 0X75,0X76,0X77,0X77,0X78,0X79,0X79,0X7A,0X7B,0X7B,0X7C,0X7D,0X7D,0X7E,0X7F,0X7F
8546
        DB 0X80,0X81,0X81,0X82,0X83,0X83,0X84,0X85,0X85,0X86,0X87,0X87,0X88,0X89,0X89,0X8A
8547
        DB 0X8B,0X8B,0X8C,0X8D,0X8D,0X8E,0X8F,0X8F,0X90,0X91,0X91,0X92,0X93,0X93,0X94,0X95
8548
        DB 0X95,0X96,0X97,0X97,0X98,0X99,0X99,0X9A,0X9B,0X9B,0X9C,0X9D,0X9D,0X9E,0X9F,0X9F
8549
        DB 0XA0,0XA1,0XA1,0XA2,0XA3,0XA3,0XA4,0XA5,0XA5,0XA6,0XA7,0XA7,0XA8,0XA9,0XA9,0XAA
8550
        DB 0X55,0X56,0X57,0X57,0X58,0X59,0X59,0X5A,0X5B,0X5B,0X5C,0X5D,0X5D,0X5E,0X5F,0X5F
8551
        DB 0X60,0X61,0X61,0X62,0X63,0X63,0X64,0X65,0X65,0X66,0X67,0X67,0X68,0X69,0X69,0X6A
8552
        DB 0X6B,0X6B,0X6C,0X6D,0X6D,0X6E,0X6F,0X6F,0X70,0X71,0X71,0X72,0X73,0X73,0X74,0X75
8553
        DB 0X75,0X76,0X77,0X77,0X78,0X79,0X79,0X7A,0X7B,0X7B,0X7C,0X7D,0X7D,0X7E,0X7F,0X7F
8554
        DB 0X80,0X81,0X81,0X82,0X83,0X83,0X84,0X85,0X85,0X86,0X87,0X87,0X88,0X89,0X89,0X8A
8555
        DB 0X8B,0X8B,0X8C,0X8D,0X8D,0X8E,0X8F,0X8F,0X90,0X91,0X91,0X92,0X93,0X93,0X94,0X95
8556
        DB 0X95,0X96,0X97,0X97,0X98,0X99,0X99,0X9A,0X9B,0X9B,0X9C,0X9D,0X9D,0X9E,0X9F,0X9F
8557
        DB 0XA0,0XA1,0XA1,0XA2,0XA3,0XA3,0XA4,0XA5,0XA5,0XA6,0XA7,0XA7,0XA8,0XA9,0XA9,0XAA
8558
        DB 0XAB,0XAB,0XAC,0XAD,0XAD,0XAE,0XAF,0XAF,0XB0,0XB1,0XB1,0XB2,0XB3,0XB3,0XB4,0XB5
8559
        DB 0XB5,0XB6,0XB7,0XB7,0XB8,0XB9,0XB9,0XBA,0XBB,0XBB,0XBC,0XBD,0XBD,0XBE,0XBF,0XBF
8560
        DB 0XC0,0XC1,0XC1,0XC2,0XC3,0XC3,0XC4,0XC5,0XC5,0XC6,0XC7,0XC7,0XC8,0XC9,0XC9,0XCA
8561
        DB 0XCB,0XCB,0XCC,0XCD,0XCD,0XCE,0XCF,0XCF,0XD0,0XD1,0XD1,0XD2,0XD3,0XD3,0XD4,0XD5
8562
        DB 0XD5,0XD6,0XD7,0XD7,0XD8,0XD9,0XD9,0XDA,0XDB,0XDB,0XDC,0XDD,0XDD,0XDE,0XDF,0XDF
8563
        DB 0XE0,0XE1,0XE1,0XE2,0XE3,0XE3,0XE4,0XE5,0XE5,0XE6,0XE7,0XE7,0XE8,0XE9,0XE9,0XEA
8564
        DB 0XEB,0XEB,0XEC,0XED,0XED,0XEE,0XEF,0XEF,0XF0,0XF1,0XF1,0XF2,0XF3,0XF3,0XF4,0XF5
8565
        DB 0XF5,0XF6,0XF7,0XF7,0XF8,0XF9,0XF9,0XFA,0XFB,0XFB,0XFC,0XFD,0XFD,0XFE,0XFF,0XFF
36 savelij 8566
 
8567
___LEND
8568
 
8569
        ; HIGH ROM INCLUDES
69 savelij 8570
        PHASE GSRomBaseH
36 savelij 8571
 
8572
;INCLUDE "INIT_H.a80"
8573
 
8574
INITVAR DI
8575
;---patched
8576
        CALL Patch5i1
8577
;---
8578
        EX AF,AF'
8579
        LD A,(NUMPG)
69 savelij 8580
        LD SP,0X8000
8581
        LD HL,0X8080
8582
        LD B,0X00
112 savelij 8583
INITV00 REPT 16
36 savelij 8584
        PUSH HL
112 savelij 8585
        ENDM
36 savelij 8586
        DJNZ INITV00
69 savelij 8587
        LD HL,0X0000
112 savelij 8588
        LD B,0XFC;0XFE  ;     00X4080     
8589
INITV01 REPT 16
36 savelij 8590
        PUSH HL
112 savelij 8591
        ENDM
36 savelij 8592
        DJNZ INITV01
8593
        LD SP,ISTACK
8594
        LD (NUMPG),A
8595
        EX AF,AF'
8596
;---patched
8597
        CALL Patch5i2
8598
;---
69 savelij 8599
        LD A,0X00
36 savelij 8600
        LD (INFO),A
8601
        XOR A
8602
        LD (ROMPG),A
8603
        LD HL,DAC0
8604
        LD A,(HL)
8605
        INC H
8606
        LD A,(HL)
8607
        INC H
8608
        LD A,(HL)
8609
        INC H
8610
        LD A,(HL)
69 savelij 8611
        LD A,0X3F
36 savelij 8612
        OUT (VOL1),A
8613
        OUT (VOL2),A
8614
        OUT (VOL3),A
8615
        OUT (VOL4),A
8616
        LD HL,CHNVOL
8617
        LD DE,CHNVOL+1
69 savelij 8618
        LD BC,0X0007
8619
        LD (HL),0XBF
36 savelij 8620
        LDIR
69 savelij 8621
        LD A,HIGH (INTTAB)
36 savelij 8622
        LD I,A
8623
        LD HL,INT7
8624
        LD DE,INTAREA
69 savelij 8625
        LD BC,0X0017
36 savelij 8626
        LDIR
8627
        EX DE,HL
69 savelij 8628
        LD (HL),0XC3
36 savelij 8629
        INC L
69 savelij 8630
        LD (HL),LOW (INT7)
36 savelij 8631
        INC L
69 savelij 8632
        LD (HL),HIGH (INT7)
36 savelij 8633
        LD HL,QTMAP
8634
        LD (QTFREE),HL
8635
        LD (QTBUSY),HL
8636
        LD DE,QTMAP+1
69 savelij 8637
        LD BC,0X001F
36 savelij 8638
        LD (HL),B
8639
        LDIR
8640
        LD HL,VOLTAB
8641
        LD DE,VOLTAB+1
69 savelij 8642
        LD BC,0X001F
8643
        LD (HL),0X3F
36 savelij 8644
        LDIR
8645
        LD HL,VOLRQTB
8646
        LD DE,VOLRQTB+1
69 savelij 8647
        LD BC,0X0007
8648
        LD (HL),0X3F
36 savelij 8649
        LDIR
69 savelij 8650
        LD A,0X0F
36 savelij 8651
        LD (GSCHNS),A
8652
        LD (MTCHNS),A
69 savelij 8653
        LD A,0X40
36 savelij 8654
        LD (MODVOL),A
8655
        LD (FXMVOL),A
8656
        LD (FXVOL),A
8657
        LD A,%11000011
8658
        LD (MTSTAT),A
8659
        XOR A
8660
        LD (MODULE),A
8661
        LD A,(NUMPG)
8662
        SRL A
8663
        LD B,A
69 savelij 8664
        LD HL,0X8000
36 savelij 8665
        RR H
8666
        LD A,B
8667
        LD (RAMTOP),HL
8668
        LD (RAMTOP+2),A
8669
        LD (PTRC),HL
8670
        LD (PTRC+2),A
8671
        LD (PTRB),HL
8672
        LD (PTRB+2),A
8673
        LD (PTRA),HL
8674
        LD (PTRA+2),A
8675
        LD (PTR9),HL
8676
        LD (PTR9+2),A
8677
        LD (PTR8),HL
8678
        LD (PTR8+2),A
8679
        LD (PTR7),HL
8680
        LD (PTR7+2),A
8681
        LD (PTR6),HL
8682
        LD (PTR6+2),A
8683
        LD (PTR5),HL
8684
        LD (PTR5+2),A
8685
        LD (MEMTOP),HL
8686
        LD (MEMTOP+2),A
8687
        LD (PTR4),HL
8688
        LD (PTR4+2),A
8689
        LD IY,CHANSFX
8690
        LD (CURCHAN),IY
69 savelij 8691
        LD BC,0X0801
36 savelij 8692
        LD DE,CHANLEN
69 savelij 8693
INITV03 LD (IY+CHSTAT),0X40
36 savelij 8694
        LD (IY+CHRDR),C
8695
        LD (IY+CHRDRI),C
69 savelij 8696
        LD A,0X08
36 savelij 8697
        SUB B
8698
        LD (IY+CHRDN),A
69 savelij 8699
        AND 0X02
36 savelij 8700
        JR Z,INITV05
8701
        SET 5,(IY+CHSTAT)
69 savelij 8702
INITV05 LD (IY+CHFLAGS),0X00
8703
        LD (IY+CHPORT),0X01
8704
        LD (IY+CHVIBCM),0X11
8705
        LD (IY+CHTRMCM),0X11
8706
        LD (IY+CHOFFST),0X01
8707
        LD (IY+CHWNT),0X7F
8708
        LD (IY+CHOLDV),0X80
8709
        LD (IY+CHEPAN),0X20
8710
        LD (IY+CHEVOL),0X40
36 savelij 8711
        RLC C
8712
        ADD IY,DE
8713
        DJNZ INITV03
8714
        LD IY,CHANS
69 savelij 8715
        LD B,0X08
8716
INITV04 LD (IY+CHSTAT),0X00
8717
        LD (IY+CHFLAGS),0X00
8718
        LD (IY+CHPORT),0X01
8719
        LD (IY+CHVIBCM),0X11
8720
        LD (IY+CHTRMCM),0X11
8721
        LD (IY+CHOFFST),0X01
8722
        LD (IY+CHWNT),0X7F
8723
        LD (IY+CHOLDV),0X80
8724
        LD (IY+CHEPAN),0X20
8725
        LD (IY+CHEVOL),0X40
36 savelij 8726
        ADD IY,DE
8727
        DJNZ INITV04
8728
        LD IY,CHANS
69 savelij 8729
        LD (IY+CHSTAT),0X00
8730
        LD (IY+CHRDR),0X01
8731
        LD (IY+CHRDRI),0X01
8732
        LD (IY+CHRDN),0X00
36 savelij 8733
        ADD IY,DE
69 savelij 8734
        LD (IY+CHSTAT),0X20
8735
        LD (IY+CHRDR),0X04
8736
        LD (IY+CHRDRI),0X04
8737
        LD (IY+CHRDN),0X02
36 savelij 8738
        ADD IY,DE
69 savelij 8739
        LD (IY+CHSTAT),0X20
8740
        LD (IY+CHRDR),0X08
8741
        LD (IY+CHRDRI),0X08
8742
        LD (IY+CHRDN),0X03
36 savelij 8743
        ADD IY,DE
69 savelij 8744
        LD (IY+CHSTAT),0X00
8745
        LD (IY+CHRDR),0X02
8746
        LD (IY+CHRDRI),0X02
8747
        LD (IY+CHRDN),0X01
36 savelij 8748
        LD HL,750
8749
        LD (TICKLEN),HL
8750
        LD (TCKLEFT),HL
8751
        LD (FXTICK),HL
8752
        LD (FXTCLEN),HL
69 savelij 8753
        LD IXH,0X80
8754
        LD DE,0X0000
36 savelij 8755
        IN A,(ZXDATRD)
8756
        JP COMINT
8757
 
8758
; B - NUMBER OF CHANNELS
8759
 
69 savelij 8760
INITCHN LD HL,(0XEC60)
36 savelij 8761
        LD (IY+CHPERL),L  ; C-4
8762
        LD (IY+CHPERH),H
69 savelij 8763
        LD HL,(0XE060)
36 savelij 8764
        LD (IY+CHFRQL),L
8765
        LD (IY+CHFRQH),H
8766
        LD (IY+CHNOTE),48
69 savelij 8767
        LD (IY+CHFLAGS),0X00
8768
        LD (IY+CHREAL),0X7F
8769
        LD (IY+CHCNTL),0X00
8770
        LD (IY+CHCNTH),0X00
8771
        LD (IY+CHINS),0X00
8772
        LD (IY+CHSMP),0X00
8773
        LD (IY+CHCOM),0X00
8774
        LD (IY+CHPARM),0X00
8775
        LD (IY+CHVIBPS),0X00
8776
        LD (IY+CHTRMPS),0X00
8777
        LD (IY+CHPATPS),0X00
8778
        LD (IY+CHLPCNT),0X00
36 savelij 8779
        LD A,B
8780
        LD BC,CHANLEN
8781
        ADD IY,BC
8782
        LD B,A
8783
        DJNZ INITCHN
8784
        RET
8785
 
8786
;INCLUDE "COM_H.a80"
8787
 
8788
HGET    IN A,(ZXSTAT)
69 savelij 8789
        AND 0X81
36 savelij 8790
        JR Z,HGET
8791
        IN A,(ZXDATRD)
8792
        RET M
8793
        JP COMINT
8794
 
8795
HSEND   IN A,(ZXSTAT)
8796
        OR A
8797
        RET P
8798
        RRCA
8799
        JP NC,HSEND
8800
        JP COMINT
8801
 
8802
HTAIL   LD HL,HTAIL2
8803
HTAIL2  IN A,(ZXSTAT)
69 savelij 8804
        AND 0X81
36 savelij 8805
        JR Z,HTAIL2
8806
        RRCA
8807
        JR C,HTAIL3
8808
        IN A,(ZXDATRD)
8809
        JP (HL)
8810
HTAIL3  IN A,(ZXCMD)
69 savelij 8811
        CP 0XE0
36 savelij 8812
        JP NC,COMINT
69 savelij 8813
        CP 0XD0
36 savelij 8814
        JP C,COMINT
8815
        JR Z,HTAIL5
69 savelij 8816
        CP 0XD1
36 savelij 8817
        JR Z,HTAIL6
8818
        XOR A
8819
HTAIL4  OUT (ZXDATWR),A
8820
        IN A,(ZXDATRD)
8821
HTAIL6  OUT (CLRCBIT),A
8822
        JP (HL)
8823
HTAIL5  LD A,(ERRCODE)
8824
        JR HTAIL4
8825
 
8826
ERR30
8827
ERR20
69 savelij 8828
ERR10   LD A,0X10        ;NOT ENOUGH FREE SPACE
36 savelij 8829
        JR ERR
8830
 
69 savelij 8831
ERR11   LD A,0X11        ;NOT ENOUGH FREE ENTRIES
36 savelij 8832
        JR ERR
8833
 
8834
ERR     LD (ERRCODE),A
8835
        JP COMINT
8836
 
8837
;Get total RAM
69 savelij 8838
; 騩 ꥬ 㯭   GS. (  ᨨ  112)
36 savelij 8839
COM20   LD DE,(RAMBOT)
8840
        LD A,(RAMBOT+2)
8841
        LD C,A
8842
        LD HL,(RAMTOP)
8843
        LD A,(RAMTOP+2)
8844
        OR A
8845
        SBC HL,DE
8846
        SBC A,C
8847
        LD C,A
8848
        LD A,L
8849
        OUT (ZXDATWR),A
8850
        OUT (CLRCBIT),A
8851
        CALL HSEND
8852
        LD A,H
8853
        OUT (ZXDATWR),A
8854
        CALL HSEND
8855
        LD A,C
8856
        OUT (ZXDATWR),A
8857
        RET
8858
 
8859
;Get free RAM
69 savelij 8860
; 騩 ' ᢮   GS.
36 savelij 8861
COM21   LD DE,(MEMBOT)
8862
        LD A,(MEMBOT+2)
8863
        LD C,A
8864
        LD HL,(MEMTOP)
8865
        LD A,(MEMTOP+2)
8866
        OR A
8867
        SBC HL,DE
8868
        SBC A,C
8869
        LD C,A
8870
        LD A,L
8871
        OUT (ZXDATWR),A
8872
        OUT (CLRCBIT),A
8873
        XOR A
8874
        LD (ERRCODE),A
8875
        CALL HSEND
8876
        LD A,H
8877
        OUT (ZXDATWR),A
8878
        CALL HSEND
8879
        LD A,C
8880
        OUT (ZXDATWR),A
8881
        RET
8882
 
8883
;Get free RAM
69 savelij 8884
; 騩 ' ᢮   GS.
36 savelij 8885
COM22   IN A,(ZXDATRD)
8886
        LD E,A
69 savelij 8887
        LD D,HIGH (RAMPG)
36 savelij 8888
        LD A,(DE)
8889
        OUT (ZXDATWR),A
8890
        OUT (CLRCBIT),A
8891
        RET
8892
 
8893
;Get number of RAM Pages
69 savelij 8894
; ᫮ ࠭   GS.
36 savelij 8895
COM23   LD A,(NUMPG)
8896
        OUT (ZXDATWR),A
8897
        OUT (CLRCBIT),A
8898
        RET
8899
 
8900
;Set Module Master Volume
69 savelij 8901
;⠭ ஬ ந뢠 㫥.
36 savelij 8902
COM2A   LD A,(MODVOL)
8903
        OUT (ZXDATWR),A
8904
        IN A,(ZXDATRD)
8905
        OUT (CLRCBIT),A
69 savelij 8906
        CP 0X40
36 savelij 8907
        JR C,COM2A_
69 savelij 8908
        LD A,0X40
36 savelij 8909
COM2A_  LD (MODVOL),A
8910
        LD IY,CHANS
69 savelij 8911
        LD B,0X08
36 savelij 8912
        LD DE,CHANLEN
8913
COM2A__ SET 0,(IY+CHSTAT)
8914
        ADD IY,DE
8915
        DJNZ COM2A__
8916
        RET
8917
 
8918
;Set FX Master Volume
69 savelij 8919
;⠭ ஬ ந뢠 䥪⮢.
36 savelij 8920
COM2B   LD A,(FXVOL)
8921
        OUT (ZXDATWR),A
8922
        IN A,(ZXDATRD)
8923
        OUT (CLRCBIT),A
69 savelij 8924
        CP 0X40
36 savelij 8925
        JR C,COM2B_
69 savelij 8926
        LD A,0X40
36 savelij 8927
COM2B_  LD (FXVOL),A
8928
        LD IY,CHANSFX
69 savelij 8929
        LD B,0X08
36 savelij 8930
        LD DE,CHANLEN
8931
COM2B__ SET 0,(IY+CHSTAT)
8932
        ADD IY,DE
8933
        DJNZ COM2B__
8934
        RET
8935
 
8936
COM2C   LD A,(CURMOD)
8937
        OUT (ZXDATWR),A
8938
        IN A,(ZXDATRD)
8939
        OUT (CLRCBIT),A
8940
        OR A
8941
        JR Z,COM2C_
8942
        LD B,A
8943
        LD A,(CNTMOD)
8944
        CP B
8945
        JR C,COM2C__
8946
        LD A,B
8947
        LD (CURMOD),A
8948
        RET
8949
 
8950
COM2C_  LD A,(CNTMOD)
8951
        LD (CURMOD),A
8952
        RET
8953
 
8954
COM2C__ XOR A
8955
        LD (CURMOD),A
8956
        RET
8957
 
8958
COM2D   LD A,(CURSMP)
8959
        OUT (ZXDATWR),A
8960
        IN A,(ZXDATRD)
8961
        OUT (CLRCBIT),A
8962
        OR A
8963
        JR Z,COM2D_
8964
        LD B,A
8965
        LD A,(CNTSMP)
8966
        CP B
8967
        JR C,COM2D__
8968
        LD A,B
8969
        LD (CURSMP),A
8970
        RET
8971
 
8972
COM2D_  LD A,(CNTSMP)
8973
        LD (CURSMP),A
8974
        RET
8975
 
8976
COM2D__ XOR A
8977
        LD (CURSMP),A
8978
        RET
8979
 
8980
;Set Current FX
69 savelij 8981
;⠭ ⥪騩 䥪.  ᢠ ६ CURFX  -
8982
;祭. ᫨ -  ॡ   (sample handle), 
8983
;  ⮣    0X00   ⠢ -
8984
; ⮣  祭 ६ CURFX. (.  0X38, 0X39, 0X40-0X4F
8985
;  襨.)
36 savelij 8986
COM2E   LD A,(CURFX)
8987
        OUT (ZXDATWR),A
8988
        IN A,(ZXDATRD)
8989
        OUT (CLRCBIT),A
8990
        OR A
8991
        JR Z,COM2E_
8992
        LD B,A
8993
        LD A,(CNTFX)
8994
        CP B
8995
        JR C,COM2E__
8996
        LD A,B
8997
        LD (CURFX),A
8998
        RET
8999
 
9000
COM2E_  LD A,(CNTFX)
9001
        LD (CURFX),A
9002
        RET
9003
 
9004
COM2E__ XOR A
9005
        LD (CURFX),A
9006
        RET
9007
 
9008
COM2F   IN A,(ZXDATRD)
9009
        OUT (CLRCBIT),A
9010
        LD E,A
9011
        CALL HGET
9012
        LD D,A
9013
        OR E
9014
        JR Z,COM2F_
9015
        LD HL,(CNTTRK)
9016
        SBC HL,DE
9017
        JR C,COM2F__
9018
        LD (CURTRK),DE
9019
        RET
9020
 
9021
COM2F_  LD HL,(CNTTRK)
9022
        LD (CURTRK),HL
9023
        RET
9024
 
69 savelij 9025
COM2F__ LD HL,0X0000
36 savelij 9026
        LD (CURTRK),HL
9027
        RET
9028
 
9029
;Load Module
69 savelij 9030
;㧪   .
36 savelij 9031
COM30   LD A,(CNTMOD)
9032
        OR A
9033
        JP NZ,INITVAR
9034
        INC A
9035
        LD (CNTMOD),A
9036
        LD (CURMOD),A
9037
        OUT (ZXDATWR),A
9038
        IN A,(ZXDATRD)
9039
        OUT (CLRCBIT),A
69 savelij 9040
        LD C,0X00
36 savelij 9041
        CALL LOAD
69 savelij 9042
LDMOD   LD A,0X00               ;0XC3F8
36 savelij 9043
        LD (CONVERT),A
9044
;---patched
9045
        CALL Patch5x
9046
;---
9047
        RET
9048
 
9049
;Jump to position (*)
69 savelij 9050
; 室   .
36 savelij 9051
COM65   IN A,(ZXDATRD)
9052
        LD C,A
9053
        LD A,(CURMOD)
9054
        LD B,A
9055
        JP COM65_
9056
 
9057
;Play module
69 savelij 9058
;ந뢠 .
36 savelij 9059
COM31   IN A,(ZXDATRD)
9060
        OR A
9061
        JR NZ,COM31_
9062
        LD A,(CURMOD)
9063
        OR A
9064
        JP Z,COM31_1
9065
COM31_  LD B,A
9066
        LD A,(CNTMOD)
9067
        CP B
9068
        JP C,COM31_2
9069
        LD A,B
69 savelij 9070
        LD C,0X00
36 savelij 9071
COM65_  OUT (ZXDATWR),A
9072
        OUT (CLRCBIT),A
69 savelij 9073
PLAYMOD LD A,(BUSY)             ;0XC426
36 savelij 9074
        PUSH AF
69 savelij 9075
        LD A,0XFF
36 savelij 9076
        LD (BUSY),A
9077
        LD A,B
9078
        LD (MODULE),A
9079
        LD (CURMOD),A
9080
        LD A,%00000011
9081
        LD (MTSTAT),A
69 savelij 9082
        LD A,0X06
36 savelij 9083
        LD (MTSPEED),A
9084
        LD A,C
9085
        LD (MTSNGPS),A
9086
        XOR A
9087
        LD (MTFLAGS),A
9088
        LD (MTCOUNT),A
9089
        LD (MTPATPS),A
9090
        LD (MTPDT),A
9091
        LD (MTPDT2),A
9092
        LD (MTBRKFL),A
9093
        LD (MTBRKPS),A
9094
        LD (MTJMPFL),A
9095
        INC A
9096
        LD (MTTYPE),A
69 savelij 9097
        LD A,0X40
36 savelij 9098
        LD (MTVOL),A
9099
        DEC A
9100
        LD (MTROWS),A
9101
        LD A,125
9102
        CALL FXF
9103
        LD IY,CHANS
69 savelij 9104
        LD B,0X08
36 savelij 9105
        LD DE,CHANLEN
9106
COM31__ RES 7,(IY+CHSTAT)
9107
        SET 0,(IY+CHSTAT)
69 savelij 9108
        LD (IY+CHVOL),0X40
9109
        LD (IY+CHMVOL),0X40
36 savelij 9110
        ADD IY,DE
9111
        DJNZ COM31__
9112
        CALL INITPAT
9113
        CALL EFXGTNT
69 savelij 9114
        LD A,0XFF
36 savelij 9115
        LD (PROCESS),A
9116
        POP AF
9117
        LD (BUSY),A
9118
        RET
9119
 
9120
COM31_1
9121
COM31_2 XOR A
9122
        LD (CURMOD),A
9123
        OUT (ZXDATWR),A
9124
        OUT (CLRCBIT),A
9125
        RET
9126
 
9127
;Stop module
69 savelij 9128
;⠭ ந뢠 .
36 savelij 9129
COM32   LD A,(MODULE)
9130
        OUT (ZXDATWR),A
9131
        IN A,(ZXDATRD)
9132
        OUT (CLRCBIT),A
69 savelij 9133
STOPMOD LD HL,MTSTAT            ;0XC4AE
36 savelij 9134
        SET 7,(HL)
9135
        RET
9136
 
9137
;Continue module
69 savelij 9138
;த ந뢠  ᫥ ⠭.
36 savelij 9139
COM33   LD A,(MODULE)
9140
        OUT (ZXDATWR),A
9141
        IN A,(ZXDATRD)
9142
        OUT (CLRCBIT),A
69 savelij 9143
CONTMOD LD A,(MODULE)           ;0XC4BD
36 savelij 9144
        OR A
9145
        RET Z
9146
        LD HL,MTSTAT
9147
        BIT 6,(HL)
9148
        RET NZ
69 savelij 9149
        LD A,0XFF
36 savelij 9150
        LD (PROCESS),A
9151
        RES 7,(HL)
9152
        LD (PROCESS),A
9153
        RET
9154
 
9155
COM34   LD A,(MODFADE)
9156
        OUT (ZXDATWR),A
9157
        IN A,(ZXDATRD)
9158
        OUT (CLRCBIT),A
9159
        LD (MODFADE),A
9160
        RET
9161
 
9162
;Set Module Volume
69 savelij 9163
;⠭ ஬ ந뢠 㫥.
36 savelij 9164
COM35   LD A,(MTVOL)
9165
        OUT (ZXDATWR),A
9166
        IN A,(ZXDATRD)
9167
        OUT (CLRCBIT),A
69 savelij 9168
        CP 0X40
36 savelij 9169
        JR C,COM35_
69 savelij 9170
        LD A,0X40
36 savelij 9171
COM35_  LD (MTVOL),A
9172
        LD IY,CHANS
69 savelij 9173
        LD B,0X08
36 savelij 9174
        LD DE,CHANLEN
9175
COM35__ SET 0,(IY+CHSTAT)
9176
        ADD IY,DE
9177
        DJNZ COM35__
9178
        RET
9179
 
9180
;Data on (*)
69 savelij 9181
;⠭ ॣ   0XFF.
9182
COM36   LD A,0XFF
36 savelij 9183
        OUT (ZXDATWR),A
9184
        OUT (CLRCBIT),A
9185
        RET
9186
 
9187
;Reinitialisation (*)
69 savelij 9188
;⠭ ७ ६  室 ﭨ.
36 savelij 9189
COM37   OUT (CLRCBIT),A
9190
        LD HL,MTSTAT
9191
        SET 7,(HL)
69 savelij 9192
        LD HL,0X0000
36 savelij 9193
        XOR A
9194
        LD (CURADR),HL
9195
        LD (CURADR+2),A
9196
        LD (MEMBOT),HL
9197
        LD (MEMBOT+2),A
9198
        LD (CURMOD),A
9199
        LD (CNTMOD),A
9200
        LD (MODULE),A
9201
        RET
9202
 
9203
;Load FX (Extended version)
69 savelij 9204
;㧪  䥪  .  㦠   .
36 savelij 9205
COM3E   IN A,(ZXDATRD)
69 savelij 9206
        CP 0X01
36 savelij 9207
        JR Z,COM38
69 savelij 9208
        LD IXL,0X80
36 savelij 9209
        OR A
9210
        JR Z,COM38_
9211
        XOR A
9212
        OUT (ZXDATWR),A
9213
        IN A,(ZXDATRD)
9214
        OUT (CLRCBIT),A
9215
        RET
9216
 
9217
;Load FX
69 savelij 9218
;㧪  䥪  . 㦠   (PC type)
9219
COM38   LD IXL,0X00
36 savelij 9220
COM38_  LD A,(CNTFX)
9221
        CP 60
9222
        JP NC,COM38_9
9223
        INC A
9224
        OUT (ZXDATWR),A
9225
        PUSH AF
9226
        IN A,(ZXDATRD)
9227
        OUT (CLRCBIT),A
9228
        POP AF
9229
        LD (CNTFX),A
9230
        LD (CURFX),A
9231
        CALL GETFX
9232
        PUSH HL
9233
        POP IY
9234
        LD E,L
9235
        LD D,H
9236
        INC DE
69 savelij 9237
        LD BC,0X003F
36 savelij 9238
        LD (HL),B
9239
        LDIR
9240
        LD HL,(CURADR)
9241
        LD A,(CURADR+2)
9242
        LD (IY+8),L
9243
        LD (IY+9),H
9244
        LD (IY+10),A
69 savelij 9245
        LD C,IXL
36 savelij 9246
        CALL LOAD
9247
        LD A,(CURADR)
9248
        SUB (IY+8)
9249
        LD (IY+11),A
9250
        LD (IY+17),A
9251
        LD A,(CURADR+1)
9252
        SBC A,(IY+9)
9253
        LD (IY+12),A
9254
        LD (IY+18),A
9255
        LD A,(CURADR+2)
9256
        SBC A,(IY+10)
9257
        LD (IY+13),A
9258
        LD (IY+19),A
69 savelij 9259
        LD (IY+16),0XFF
9260
        LD (IY+20),0X40
9261
        LD (IY+23),0X80
9262
        LD (IY+24),0X0F
9263
        LD (IY+25),0X0F
9264
        LD (IY+26),0X80
9265
        LD (IY+27),0XFF
9266
        LD (IY+28),0XFF
36 savelij 9267
        LD (IY+31),60
9268
        LD E,60
9269
        CALL GETPER
9270
        LD (IY+54),L
9271
        LD (IY+55),H
9272
        CALL GETFRQ
9273
        LD (IY+56),L
9274
        LD (IY+57),H
9275
        RET
9276
 
9277
COM38_9 XOR A
9278
        OUT (ZXDATWR),A
9279
        LD (CURFX),A
9280
        IN A,(ZXDATRD)
9281
        OUT (CLRCBIT),A
9282
        RET
9283
 
9284
GETFX   DEC A
69 savelij 9285
        CP 0X20
36 savelij 9286
        JR C,GETFX2
69 savelij 9287
        SUB 0X20
9288
        LD H,0X00
36 savelij 9289
        ADD A,A
9290
        ADD A,A
9291
        ADD A,A
9292
        RL H
9293
        ADD A,A
9294
        RL H
9295
        ADD A,A
9296
        RL H
9297
        ADD A,A
9298
        RL H
9299
        LD L,A
9300
        LD A,H
69 savelij 9301
        ADD A,HIGH (BUFFER)+1
36 savelij 9302
        LD H,A
9303
        PUSH HL
9304
        POP IY
9305
        RET
9306
 
69 savelij 9307
GETFX2  LD H,0X00
36 savelij 9308
        ADD A,A
9309
        ADD A,A
9310
        ADD A,A
9311
        RL H
9312
        ADD A,A
9313
        RL H
9314
        ADD A,A
9315
        RL H
9316
        ADD A,A
9317
        RL H
9318
        LD L,A
9319
        LD A,H
69 savelij 9320
        ADD A,HIGH (SMPADR)
36 savelij 9321
        LD H,A
9322
        PUSH HL
9323
        POP IY
9324
        RET
9325
 
9326
;Play FX
69 savelij 9327
;ந뢠 䥪.
36 savelij 9328
COM39   IN A,(ZXDATRD)
9329
        OR A
9330
        JR NZ,COM39_1
9331
        LD A,(CURFX)
9332
COM39_1 LD (CURFX),A
9333
        LD B,A
9334
        LD A,(CNTFX)
9335
        CP B
9336
        JP C,COM39_9
9337
        XOR A
9338
        OUT (ZXDATWR),A
9339
        OUT (CLRCBIT),A
9340
        LD A,(CURFX)
9341
        CALL GETFX
9342
        LD A,(BUSY)
9343
        PUSH AF
69 savelij 9344
        LD A,0XFF
36 savelij 9345
        LD (BUSY),A
9346
        PUSH HL
9347
        POP IY
9348
        CALL PLAYFX
9349
        POP AF
9350
        LD (BUSY),A
9351
        RET
9352
 
69 savelij 9353
COM39_9 LD A,0XFF
36 savelij 9354
        OUT (ZXDATWR),A
9355
        OUT (CLRCBIT),A
9356
        RET
9357
 
9358
COM3B
9359
COM3C   LD A,(FXFADE)
9360
        OUT (ZXDATWR),A
9361
        IN A,(ZXDATRD)
9362
        OUT (CLRCBIT),A
9363
        LD (FXFADE),A
9364
        RET
9365
 
9366
;Set FX Volume
69 savelij 9367
;⠭ ஬ ந뢠 䥪⮢.
36 savelij 9368
COM3D   LD A,(FXMVOL)
9369
        OUT (ZXDATWR),A
9370
        IN A,(ZXDATRD)
9371
        OUT (CLRCBIT),A
69 savelij 9372
        CP 0X40
36 savelij 9373
        JR C,COM3D_
69 savelij 9374
        LD A,0X40
36 savelij 9375
COM3D_  LD (FXMVOL),A
9376
        LD IY,CHANSFX
69 savelij 9377
        LD B,0X08
36 savelij 9378
        LD DE,CHANLEN
9379
COM3D__ SET 0,(IY+CHSTAT)
9380
        ADD IY,DE
9381
        DJNZ COM3D__
9382
        RET
9383
 
9384
COM3F
9385
 
9386
;Set FX Sample Playing Note
69 savelij 9387
;⠭   㬮砭  ⥪饣 䥪.
36 savelij 9388
COM40   IN A,(ZXDATRD)
9389
        OUT (CLRCBIT),A
9390
        LD E,A
9391
        LD A,(CURFX)
9392
        OR A
9393
        RET Z
9394
        CALL GETFX
9395
        LD A,E
9396
        CP 96
9397
        JR C,COM40_
9398
        LD E,95
9399
COM40_  LD (IY+31),E
9400
        CALL GETPER
9401
        LD (IY+54),L
9402
        LD (IY+55),H
9403
        CALL GETFRQ
9404
        LD (IY+56),L
9405
        LD (IY+57),H
9406
        RET
9407
 
9408
;Set FX Sample Volume
69 savelij 9409
;⠭ ஬  㬮砭  ⥪饣 䥪.
36 savelij 9410
COM41   IN A,(ZXDATRD)
9411
        OUT (CLRCBIT),A
9412
        LD E,A
9413
        LD A,(CURFX)
9414
        OR A
9415
        RET Z
9416
        CALL GETFX
9417
        LD A,E
69 savelij 9418
        CP 0X41
36 savelij 9419
        JR C,COM41_
69 savelij 9420
        LD E,0X40
36 savelij 9421
COM41_  LD (IY+20),E
9422
        RET
9423
 
9424
;Set FX Sample Finetune
69 savelij 9425
;⠭ Finetune  㬮砭  ⥪饣 䥪. 
36 savelij 9426
COM42   LD A,(CURFX)
9427
        CALL GETFX
9428
        PUSH HL
9429
        POP IY
9430
        LD A,(IY+21)
9431
        OUT (ZXDATWR),A
9432
        IN A,(ZXDATRD)
9433
        OUT (CLRCBIT),A
9434
        LD (IY+21),A
9435
        RET
9436
 
9437
;Set FX Sample Priority
69 savelij 9438
;⠭ ਮ  ⥪饣 䥪. (.  0X39)
36 savelij 9439
COM45   LD A,(CURFX)
9440
        CALL GETFX
9441
        PUSH HL
9442
        POP IY
9443
        LD A,(IY+26)
9444
        OUT (ZXDATWR),A
9445
        IN A,(ZXDATRD)
9446
        OUT (CLRCBIT),A
9447
        LD (IY+26),A
9448
        RET
9449
 
9450
;Set FX Sample Seek First parameter
69 savelij 9451
;⠭ ࠬ Seek First  ⥪饣 䥪. (.  0X39) 
36 savelij 9452
COM46   LD A,(CURFX)
9453
        CALL GETFX
9454
        PUSH HL
9455
        POP IY
9456
        LD A,(IY+24)
9457
        OUT (ZXDATWR),A
9458
        IN A,(ZXDATRD)
9459
        OUT (CLRCBIT),A
9460
        LD (IY+24),A
9461
        RET
9462
 
9463
;Set FX Sample Seek Last parameter
69 savelij 9464
;⠭ ࠬ Seek Last  ⥪饣 䥪. (.  0X39)
36 savelij 9465
COM47   LD A,(CURFX)
9466
        CALL GETFX
9467
        PUSH HL
9468
        POP IY
9469
        LD A,(IY+25)
9470
        OUT (ZXDATWR),A
9471
        IN A,(ZXDATRD)
9472
        OUT (CLRCBIT),A
9473
        LD (IY+25),A
9474
        RET
9475
 
9476
;Set FX Sample Loop Begin (*)
69 savelij 9477
;⠭ 砫 横  ⥪饣 䥪.
36 savelij 9478
COM48   LD A,(CURFX)
9479
        CALL GETFX
9480
        PUSH HL
9481
        POP IY
9482
        IN A,(ZXDATRD)
9483
        OUT (CLRCBIT),A
9484
        LD (IY+14),A
9485
        CALL HGET
9486
        LD (IY+15),A
9487
        CALL HGET
9488
        LD (IY+16),A
9489
        RET
9490
 
9491
;Set FX Sample Loop End (*)
69 savelij 9492
;⠭  横  ⥪饣 䥪.
36 savelij 9493
COM49   LD A,(CURFX)
9494
        CALL GETFX
9495
        PUSH HL
9496
        POP IY
9497
        IN A,(ZXDATRD)
9498
        OUT (CLRCBIT),A
9499
        LD (IY+17),A
9500
        CALL HGET
9501
        LD (IY+18),A
9502
        CALL HGET
9503
        LD (IY+19),A
9504
        RET
9505
 
69 savelij 9506
COM58   LD B,0X00
36 savelij 9507
        OUT (ZXDATWR),A
9508
        JP COM50_
9509
 
9510
COM50   IN A,(ZXDATRD)
9511
        LD B,A
9512
COM50_  IN A,(ZXCMD)
9513
        OUT (CLRCBIT),A
69 savelij 9514
        AND 0X07
36 savelij 9515
        LD E,A
9516
        CALL HGET
9517
        LD L,A
9518
        LD A,E
69 savelij 9519
        CP 0X04
36 savelij 9520
        CALL NC,HGET
9521
        LD H,A
9522
        LD A,E
69 savelij 9523
        CP 0X07
36 savelij 9524
        CALL Z,HGET
9525
        LD D,A
9526
        LD A,B
9527
        OR A
9528
        JR NZ,C50_00
9529
        LD A,(LSTCHN)
9530
        OR A
9531
        JP Z,ERR20
9532
C50_00  LD B,A
69 savelij 9533
        LD C,0X01
36 savelij 9534
        LD IY,CHANSFX
9535
C50_01  LD A,B
9536
        AND C
9537
        JR NZ,C50_02
9538
        RLC C
69 savelij 9539
        LD A,IYL
9540
        ADD A,LOW (CHANLEN)
9541
        LD IYL,A
9542
        LD A,IYH
9543
        ADC A,0X00
9544
        LD IYH,A
36 savelij 9545
        JP C50_01
9546
 
9547
C50_02  LD A,E
9548
        OR A
9549
        JP Z,C50_80
69 savelij 9550
        CP 0X02
36 savelij 9551
        JP Z,C50_A0
69 savelij 9552
        CP 0X04
36 savelij 9553
        JP Z,C50_C0
69 savelij 9554
        CP 0X05
36 savelij 9555
        JP Z,C50_D0
69 savelij 9556
        CP 0X06
36 savelij 9557
        JP Z,C50_E0
69 savelij 9558
        CP 0X07
36 savelij 9559
        JP Z,C50_F0
9560
C50_LP
9561
C50_80  SET 7,(IY+CHSTAT)
9562
        LD A,L
69 savelij 9563
        AND 0X7F
36 savelij 9564
        CP 96
9565
        JP NC,C50_LP
9566
C50_81  LD A,(IY+CHSMP)
9567
        OR A
9568
        JP Z,C50_LP
9569
        PUSH DE
9570
        PUSH BC
9571
        PUSH HL
9572
        LD E,L
9573
        RES 7,E
9574
        CALL GETFRQ
9575
        LD (IY+CHFRQL),L
9576
        LD (IY+CHFRQH),H
9577
        CALL GETPER
9578
        LD (IY+CHPERL),L
9579
        LD (IY+CHPERH),H
9580
        BIT 7,(IY+CHSTAT)
9581
        JR NZ,C50_82
9582
        LD A,(IY+CHNOTE)
9583
        CP E
9584
        JR Z,C50_83
9585
        LD (IY+CHNOTE),E
69 savelij 9586
C50_82  LD (IY+CHCNTL),0X00
9587
        LD (IY+CHCNTH),0X00
36 savelij 9588
C50_83  POP HL
9589
        PUSH HL
9590
        BIT 7,(IY+CHSTAT)
9591
        JR NZ,C50_84
9592
        BIT 7,L
9593
C50_84  POP HL
9594
        POP BC
9595
        POP DE
9596
        JP C50_LP
9597
 
9598
C50_90  LD A,L
69 savelij 9599
        CP 0X40
36 savelij 9600
        JR C,C50_91
69 savelij 9601
        LD L,0X40
36 savelij 9602
C50_91  LD (IY+CHVOL),A
9603
        LD (IY+CHMVOL),A
9604
        JP C50_LP
9605
 
9606
C50_A0  LD (IY+CHFINE),L
9607
        JP C50_LP
9608
 
9609
C50_B0  LD (IY+CHPAN),L
9610
        JP C50_LP
9611
 
9612
C50_C0  LD A,H
9613
        OR A
9614
        JR NZ,C50_C1
9615
        OR L
9616
        JR NZ,C50_C1
69 savelij 9617
        LD L,0X01
36 savelij 9618
C50_C1  LD A,H
69 savelij 9619
        CP 0X20
36 savelij 9620
        JR C,C50_C2
69 savelij 9621
        LD HL,0X1FFF
36 savelij 9622
C50_C2  LD A,(IY+CHSTAT)
9623
        SET 7,(IY+CHSTAT)
9624
        LD (IY+CHPERL),L
9625
        LD (IY+CHPERH),H
69 savelij 9626
        LD (IY+CHCNTL),0X00
9627
        LD (IY+CHCNTH),0X00
36 savelij 9628
        LD (IY+CHSTAT),A
9629
        JP C50_LP
9630
 
9631
C50_D0  LD A,H
9632
        OR A
9633
        JR NZ,C50_D1
9634
        OR L
9635
        JR NZ,C50_D1
69 savelij 9636
        LD L,0X01
36 savelij 9637
C50_D1  LD A,H
69 savelij 9638
        CP 0X80
36 savelij 9639
        JR C,C50_D2
69 savelij 9640
        LD HL,0X7FFF
36 savelij 9641
C50_D2  LD A,(IY+CHSTAT)
9642
        SET 7,(IY+CHSTAT)
9643
        LD (IY+CHFRQL),L
9644
        LD (IY+CHFRQH),H
69 savelij 9645
        LD (IY+CHCNTL),0X00
9646
        LD (IY+CHCNTH),0X00
36 savelij 9647
        LD (IY+CHSTAT),A
9648
        JP C50_LP
9649
 
9650
C50_E0
9651
C50_F0
9652
 
9653
;Get Song Position
69 savelij 9654
;祭 祭 ६ Song_Position  ⥪饬 㫥.
36 savelij 9655
COM60   LD A,(MTSNGPS)
9656
        OUT (ZXDATWR),A
9657
        OUT (CLRCBIT),A
9658
        RET
9659
 
9660
;Get Pattern Position
69 savelij 9661
;祭 祭 ६ Pattern_Position  ⥪饬 㫥.
36 savelij 9662
COM61   LD A,(MTPATPS)
9663
        OUT (ZXDATWR),A
9664
        OUT (CLRCBIT),A
9665
        RET
9666
 
9667
;Get Mixed Position
69 savelij 9668
; 祭 Pattern_Position,  ᬥ蠭  Song_Position.
36 savelij 9669
COM62   LD A,(MTSNGPS)
9670
        RRCA
9671
        RRCA
69 savelij 9672
        AND 0XC0
36 savelij 9673
        LD B,A
9674
        LD A,(MTPATPS)
69 savelij 9675
        AND 0X3F
36 savelij 9676
        OR B
9677
        OUT (ZXDATWR),A
9678
        OUT (CLRCBIT),A
9679
        RET
9680
 
9681
;Get Channel Volumes
69 savelij 9682
; ஬   .
36 savelij 9683
COM64   LD HL,CHANS+CHMVOL
9684
        JP COM64_
9685
 
9686
COM63   LD HL,CHANS+CHREAL
9687
COM64_  LD DE,CHANLEN
69 savelij 9688
        LD B,0X04
36 savelij 9689
        LD A,(HL)
9690
        OUT (ZXDATWR),A
9691
        OUT (CLRCBIT),A
9692
        JP COM63__
9693
 
9694
;Get Channel Notes
69 savelij 9695
;    .
36 savelij 9696
COM63_  LD A,(HL)
9697
        OUT (ZXDATWR),A
9698
COM63__ SET 7,(HL)
9699
        CALL HSEND
9700
        ADD HL,DE
9701
        DJNZ COM63_
9702
        RET
9703
 
9704
;Set speed/tempo (*)
69 savelij 9705
;⠭ ᪮  । 0X01-0X1F.  祭 0X20-0XFF ⠭-
9706
; ⥬ ந뢠. 祭 ⥬ ᮮ⢥ ਣ 
9707
;᪮ ࠢ 0X06.
36 savelij 9708
COM66   IN A,(ZXDATRD)
9709
        OUT (CLRCBIT),A
9710
        CALL FXF
9711
        RET
9712
 
9713
;Get speed value (*)
69 savelij 9714
;⥭ ⥪饩 ᪮.
36 savelij 9715
COM67   LD A,(MTSPEED)
9716
        OUT (ZXDATWR),A
9717
        OUT (CLRCBIT),A
9718
        RET
9719
 
9720
;Get tempo value (*)
69 savelij 9721
;⥭ ⥪饣 ⥬.
36 savelij 9722
COM68   LD A,(MTBPM)
9723
        OUT (ZXDATWR),A
9724
        OUT (CLRCBIT),A
9725
        RET
9726
 
9727
;Process Sound (*)
69 savelij 9728
;室  ᫥騩  ( ⨪)   ந뢠 㪠.
9729
COM69   LD A,0XFF
36 savelij 9730
        LD (INGEN),A
9731
        CALL ENGINE
9732
        XOR A
9733
        LD (INGEN),A
9734
        OUT (CLRCBIT),A
9735
        RET
9736
 
9737
;Stop FX in channels
69 savelij 9738
;⠭ ந뢠 䥪⮢   ,   㪠뢠-
9739
;  ᪥  (Channel Mask).      n-    㪠-
9740
;  ,  䥪  n-  ॡ ⠭
36 savelij 9741
COM3A   IN A,(ZXDATRD)
9742
        OUT (CLRCBIT),A
9743
        LD C,A
9744
        CPL
9745
        LD B,A
9746
        LD A,(FXCHNS)
9747
        AND B
9748
        LD (FXCHNS),A
9749
        LD IY,CHANSFX
9750
        LD DE,CHANLEN
9751
        SLA C
9752
        JR NC,COM3A_2
9753
COM3A_1 RES 7,(IY+CHSTAT)
9754
COM3A_2 ADD IY,DE
9755
        SLA C
9756
        JR C,COM3A_1
9757
        JP NZ,COM3A_2
9758
        RET
9759
 
69 savelij 9760
;Direct Play FX Sample (0X80..0X83)
9761
;ந뢠    .
36 savelij 9762
COM80   IN A,(ZXDATRD)
9763
        OR A
9764
        JR NZ,COM80_1
9765
        LD A,(CURFX)
9766
COM80_1 LD (CURFX),A
9767
        LD C,A
9768
        LD A,(CNTFX)
9769
        CP C
9770
        JP C,COM39_9
9771
        IN A,(ZXCMD)
9772
        OUT (CLRCBIT),A
9773
        LD B,A
9774
        BIT 3,B
9775
        CALL NZ,HGET
9776
        LD E,A
9777
        BIT 4,B
9778
        CALL NZ,HGET
9779
        LD D,A
9780
        LD A,C
9781
        CALL GETFX
9782
        PUSH DE
9783
        PUSH BC
9784
        CALL COM80_2
9785
        POP  BC
9786
        POP  DE
9787
        PUSH HL
9788
        POP  IY
9789
        BIT 4,B
9790
        JR Z,COM80_4
9791
        LD (IY+CHVOL),D
9792
        LD (IY+CHMVOL),D
9793
COM80_4 BIT 3,B
9794
        RET Z
9795
        CALL GETFRQ
9796
        LD (IY+CHFRQL),L
9797
        LD (IY+CHFRQH),H
9798
        CALL GETPER
9799
        LD (IY+CHPERL),L
9800
        LD (IY+CHPERH),H
9801
        RET
9802
 
9803
COM80_2 PUSH IY
9804
        LD IY,CHANSFX
9805
        LD DE,CHANLEN
9806
        LD A,B
69 savelij 9807
        AND 0X07
36 savelij 9808
COM80_3 JP Z,PLFX_12
9809
        ADD IY,DE
9810
        DEC A
9811
        JP COM80_3
9812
 
9813
COMA0   IN A,(ZXDATRD)
9814
        LD C,A
9815
        IN A,(ZXCMD)
9816
        OUT (CLRCBIT),A
9817
        LD B,A
9818
        LD IY,CHANSFX
9819
        LD DE,CHANLEN
69 savelij 9820
        AND 0X07
36 savelij 9821
COMA0_1 JR Z,COMA0_2
9822
        ADD IY,DE
9823
        DEC A
9824
        JP NZ,COMA0_1
9825
COMA0_2 BIT 3,B
9826
        JR NZ,COMA0_3
9827
        LD E,C
9828
        CALL GETPER
9829
        LD (IY+CHPERL),L
9830
        LD (IY+CHPERH),H
9831
        CALL GETFRQ
9832
        LD (IY+CHFRQL),L
9833
        LD (IY+CHFRQH),H
9834
        RET
9835
 
9836
COMA0_3 LD (IY+CHVOL),C
9837
        LD (IY+CHMVOL),C
9838
        SET 0,(IY+CHSTAT)
9839
        RET
9840
 
9841
; INPUT : E=NOTE,IY=CHANNEL
9842
; OUTPUT: HL=PERIOD OR FREQUENCY
9843
; USED  : HL,D,BC,A
9844
 
9845
GETPER  LD HL,AMFRQTB   ; FOR AMIGA FREQUENCY
9846
        JR GETFRQ_
9847
 
9848
GETFRQ  LD HL,GSFRQTB
9849
GETFRQ_ LD A,(IY+CHFINE)
9850
        RRA
69 savelij 9851
        AND 0X0F
36 savelij 9852
        JR Z,GETFRQ2
9853
        LD C,A
9854
        ADD A,A
9855
        ADD A,C
9856
        ADD A,A
9857
        ADD A,A
9858
        ADD A,A
9859
        LD B,0
9860
        RL B
9861
        ADD A,A
9862
        RL B
9863
        ADD A,A
9864
        RL B
9865
        LD C,A
9866
        ADD HL,BC
9867
        ADD HL,BC
9868
GETFRQ2 LD D,0
9869
        LD A,E
9870
        CP 96
9871
        JR C,GETFRQ3
9872
        LD E,95
9873
GETFRQ3 SLA E
9874
        ADD HL,DE
9875
        LD E,(HL)
9876
        INC HL
9877
        LD D,(HL)
9878
        EX DE,HL
9879
        LD E,A
9880
        BIT 0,(IY+CHFINE)
9881
        RET Z
9882
        RET
9883
 
69 savelij 9884
PLAYFX  LD C,0X00
36 savelij 9885
        LD A,(MTSTAT)
9886
        OR A
9887
        JP M,PLFX_03
9888
        LD A,(MODULE)
9889
        OR A
9890
        JR Z,PLFX_03
9891
        LD IY,CHANS
9892
        LD DE,CHANLEN
69 savelij 9893
        LD B,0X04
36 savelij 9894
PLFX_00 BIT 7,(IY+CHSTAT)
9895
        JR Z,PLFX_01
9896
        LD A,(IY+CHMVOL)
9897
        OR A
9898
        JR Z,PLFX_01
9899
        LD A,C
9900
        OR (IY+CHRDR)
9901
        LD C,A
9902
PLFX_01 ADD IY,DE
9903
        DJNZ  PLFX_00
9904
PLFX_03 PUSH HL
9905
        POP IY
9906
        LD HL,GSCHNS
9907
        LD A,(HL)
9908
        OR A
9909
        SCF
9910
        RET Z
9911
        LD A,(FXCHNS)
9912
        OR C
9913
        CPL
9914
        AND (HL)
9915
        LD C,A
9916
        AND (IY+24)
9917
        JR NZ,PLFX_10
9918
        LD A,(IY+26)
69 savelij 9919
        CP 0X40
36 savelij 9920
        JR NC,PLFX_04
9921
        LD A,C
9922
        AND (IY+25)
9923
        JR NZ,PLFX_10
9924
        JP PLFX_05
9925
 
9926
PLFX_04 LD A,(FXCHNS)
9927
        CPL
9928
        AND (HL)
9929
        AND (IY+24)
9930
        JR NZ,PLFX_10
9931
        LD A,(FXCHNS)
9932
        CPL
9933
        AND (HL)
9934
        AND (IY+25)
9935
        JR NZ,PLFX_10
9936
PLFX_05 LD A,(FXCHNS)
9937
        LD B,A
9938
        LD A,(GSCHNS)
9939
        AND B
9940
        LD B,A
9941
        PUSH IY
9942
        LD IY,CHANSFX
9943
        LD L,A
69 savelij 9944
        LD H,0XFF
36 savelij 9945
        LD DE,CHANLEN
9946
        SRL B
9947
        JP C,PLFX_06
9948
        JP NZ,PLFX_07
9949
        JP PLFX_08
9950
 
9951
PLFX_06 LD A,(IY+CHPRIOR)
9952
        CP H
9953
        JR NC,PLFX_07
9954
        LD H,A
9955
        LD L,(IY+CHRDR)
9956
PLFX_07 ADD IY,DE
9957
        SRL B
9958
        JP C,PLFX_06
9959
        JP NZ,PLFX_07
9960
PLFX_08 POP IY
9961
        LD A,L
9962
        OR A
9963
        SCF
9964
        RET Z
9965
        LD A,H
9966
        CP (IY+26)
9967
        LD A,L
9968
        JR C,PLFX_10
9969
        SCF
9970
        RET
9971
 
9972
PLFX_10 LD B,A
9973
        PUSH IY
9974
        LD IY,CHANSFX
9975
        LD DE,CHANLEN
9976
        SRL B
9977
        JP C,PLFX_12
9978
PLFX_11 ADD IY,DE
9979
        SRL B
9980
        JP NC,PLFX_11
9981
PLFX_12 LD A,(FXCHNS)
9982
        OR (IY+CHRDR)
9983
        LD (FXCHNS),A
9984
        EX (SP),IY
9985
        LD E,(IY+8)
9986
        LD D,(IY+9)
9987
        LD A,(IY+10)
69 savelij 9988
        DB 0XCB,0X32;SLI D
36 savelij 9989
        RLA
9990
        RRC D
9991
        EX (SP),IY
9992
        LD (IY+CHCURP),A
9993
        LD (IY+CHCURL),E
9994
        LD (IY+CHCURH),D
9995
        EX (SP),IY
9996
        LD A,(IY+8)
9997
        ADD A,(IY+11)
9998
        LD E,A
9999
        LD A,(IY+9)
10000
        ADC A,(IY+12)
10001
        LD D,A
10002
        LD A,(IY+10)
10003
        ADC A,(IY+13)
69 savelij 10004
        DB 0XCB,0X32;SLI D
36 savelij 10005
        RLA
10006
        RRC D
10007
        EX (SP),IY
10008
        LD (IY+CHENDP),A
10009
        LD (IY+CHENDL),E
10010
        LD (IY+CHENDH),D
69 savelij 10011
        LD (IY+CHLPBP),0XFF
36 savelij 10012
        EX (SP),IY
10013
        LD A,(IY+16)
10014
        INC A
10015
        JR Z,PLFX_13
10016
        LD A,(IY+8)
10017
        ADD A,(IY+14)
10018
        LD E,A
10019
        LD A,(IY+9)
10020
        ADC A,(IY+15)
10021
        LD D,A
10022
        LD A,(IY+10)
10023
        ADC A,(IY+16)
69 savelij 10024
        DB 0XCB,0X32;SLI D
36 savelij 10025
        RLA
10026
        RRC D
10027
        EX (SP),IY
10028
        LD (IY+CHLPBP),A
10029
        LD (IY+CHLPBL),E
10030
        LD (IY+CHLPBH),D
10031
        EX (SP),IY
10032
        LD A,(IY+8)
10033
        ADD A,(IY+17)
10034
        LD E,A
10035
        LD A,(IY+9)
10036
        ADC A,(IY+18)
10037
        LD D,A
10038
        LD A,(IY+10)
10039
        ADC A,(IY+19)
69 savelij 10040
        DB 0XCB,0X32;SLI D
36 savelij 10041
        RLA
10042
        RRC D
10043
        EX (SP),IY
10044
        LD (IY+CHLPEP),A
10045
        LD (IY+CHLPEL),E
10046
        LD (IY+CHLPEH),D
10047
        EX (SP),IY
10048
PLFX_13 LD E,(IY+20)
10049
        LD D,(IY+21)
10050
        LD B,(IY+31)
10051
        LD C,(IY+23)
10052
        LD L,(IY+22)
10053
        LD H,(IY+6)
10054
        EX (SP),IY
10055
        LD (IY+CHVOL),E
10056
        LD (IY+CHMVOL),E
10057
        LD (IY+CHFINE),D
10058
        LD (IY+CHNOTE),B
10059
        LD (IY+CHPAN),C
10060
        LD (IY+CHRLNT),L
10061
        LD (IY+CHSQZ),H
10062
        EX (SP),IY
10063
        LD E,(IY+54)
10064
        LD D,(IY+55)
10065
        LD L,(IY+56)
10066
        LD H,(IY+57)
10067
        LD C,(IY+26)
10068
        EX (SP),IY
10069
        SRL D
10070
        RR E
10071
        SRL D
10072
        RR E
10073
        LD (IY+CHPERL),E
10074
        LD (IY+CHPERH),D
10075
        LD (IY+CHFRQL),L
10076
        LD (IY+CHFRQH),H
10077
        LD (IY+CHPRIOR),C
69 savelij 10078
        LD (IY+CHFADVH),0XFF
10079
        LD (IY+CHFADVL),0XFF
10080
        LD (IY+CHDELVH),0XFF
10081
        LD (IY+CHDELVL),0XFF
10082
        LD (IY+CHEPAN),0X20
10083
        LD (IY+CHEVOL),0X40
10084
        LD (IY+CHCNTL),0X00
10085
        LD (IY+CHCNTH),0X00
10086
        LD (IY+CHVOL),0X40
10087
        LD (IY+CHPAN),0X80
36 savelij 10088
        SET 7,(IY+CHSTAT)
10089
        SET 0,(IY+CHSTAT)
10090
        PUSH IY
10091
        POP HL
10092
        POP IY
69 savelij 10093
        LD A,0XFF
36 savelij 10094
        LD (PROCESS),A
10095
        RET
10096
 
10097
;INCLUDE "MEM_H.a80"
10098
;MEMORY MOVEMENT MODULE - HIGH PART
10099
 
10100
;PROCEDURE: MOVE MEMORY
10101
;INPUT    : B ,HL  - SOURCE START LOGICAL ADRESS
10102
;           C ,DE  - SOURCE END LOGICAL ADRESS
10103
;           B',HL' - DESTINATION LOGICAL ADRESS
10104
;OUTPUT   : C ,DE  = DEST-START
10105
;USES     : TYPE 1 REGS,RAMPG,CPAGE,BUFFER,SYSTEM
10106
;EFFECT   : MOVES MEMORY REGION {START,END-1} TO DEST
10107
;           ALL ADRESSES IS LOGICAL
10108
 
10109
MOVMEM  XOR A
10110
        LD (SYSTEM),A
10111
        PUSH HL
10112
        LD A,B
10113
        EXX
10114
        POP DE
10115
        PUSH HL
10116
        PUSH BC
10117
        LD C,A
10118
        OR A
10119
        SBC HL,DE
10120
        LD A,B
10121
        SBC A,C
10122
        EX DE,HL
10123
        POP BC
10124
        POP HL
10125
        LD C,A
10126
        OR E
10127
        OR D
10128
        RET Z
10129
        EXX
10130
        EX DE,HL
10131
        SBC HL,DE
10132
        LD A,C
10133
        SBC A,B
69 savelij 10134
        LD IXL,A
36 savelij 10135
        OR L
10136
        OR H
10137
        EXX
10138
        RET Z
10139
        PUSH DE
10140
        PUSH BC
10141
        BIT 7,C
10142
        LD A,B
10143
        EXX
10144
        JR NZ,MOVL
10145
        CP C
10146
        JP C,MOVH
10147
        JR NZ,MOVL
10148
        EXX
10149
        LD A,H
10150
        EXX
10151
        CP D
10152
        JP C,MOVH
10153
        JR NZ,MOVL
10154
        EXX
10155
        LD A,L
10156
        EXX
10157
        CP E
10158
        JP C,MOVH
69 savelij 10159
MOVL    DB 0XCB,0X32;SLI D
36 savelij 10160
        RL B
10161
        RRC D
10162
        PUSH DE
10163
        EXX
10164
        EX DE,HL
10165
        POP HL
69 savelij 10166
        DB 0XCB,0X32;SLI D
36 savelij 10167
        RL B
10168
        RRC D
10169
        LD A,B
69 savelij 10170
        LD BC,0X0000
36 savelij 10171
        EXX
10172
        LD C,A
10173
ML1     EXX
10174
        LD A,H
10175
        CP D
10176
        JR C,ML3
10177
        JR NZ,ML2
10178
        LD A,L
10179
        CP E
10180
        JR C,ML3
10181
ML2     LD A,C
10182
        SUB L
10183
        LD C,A
10184
        LD A,B
10185
        SBC A,H
10186
        JR ML4
10187
ML3     LD A,C
10188
        SUB E
10189
        LD C,A
10190
        LD A,B
10191
        SBC A,D
10192
ML4     LD B,A
69 savelij 10193
        LD A,IXL
36 savelij 10194
        OR A
10195
        JR NZ,ML6
10196
        LD A,B
10197
        EXX
10198
        CP H
10199
        JR C,ML7
10200
        JR NZ,ML5
10201
        EXX
10202
        LD A,C
10203
        EXX
10204
        CP L
10205
        JR C,ML7
10206
ML5     PUSH HL
10207
        EXX
10208
        POP BC
10209
ML6     EXX
69 savelij 10210
ML7     LD D,HIGH (RAMPG)
36 savelij 10211
        LD A,B
10212
        CP C
10213
        JR NZ,ML9
10214
        LD E,B
10215
        LD A,(DE)
10216
        LD (SDPAGE),A
10217
        EXX
10218
        PUSH BC
10219
ML8     LD A,C
10220
        CALL MLDI
10221
        JP PE,ML8
10222
        JR MLD
10223
 
10224
ML9     EXX
10225
        PUSH BC
10226
MLA     PUSH BC
10227
        PUSH DE
10228
        EXX
10229
        LD E,B
10230
        LD A,(DE)
10231
        LD (SDPAGE),A
10232
        EXX
10233
        LD DE,BUFFER
10234
        LD A,C
10235
        CALL MLDI
10236
        POP DE
10237
        POP BC
10238
        PUSH HL
10239
        EXX
10240
        LD E,C
10241
        LD A,(DE)
10242
        LD (SDPAGE),A
10243
        EXX
10244
        LD HL,BUFFER
10245
        LD A,C
10246
        CALL MLDI
10247
        POP HL
10248
        JP PE,MLA
10249
MLD     BIT 7,H
10250
        JR NZ,MLB
10251
        SET 7,H
10252
        EXX
10253
        INC B
10254
        JP MLC
10255
 
10256
MLB     SET 7,D
10257
        EXX
10258
        INC C
10259
MLC     POP DE
10260
        OR A
10261
        SBC HL,DE
69 savelij 10262
        LD A,IXL
10263
        SBC A,0X00
10264
        LD IXL,A
36 savelij 10265
        OR L
10266
        OR H
10267
        JP NZ,ML1
10268
        POP BC
10269
        POP DE
10270
        RET
10271
 
10272
MOVH    LD A,L
10273
        OR H
10274
        JR NZ,MH0
69 savelij 10275
        DEC IXL
36 savelij 10276
MH0     DEC HL
10277
        EX DE,HL
10278
        ADD HL,DE
10279
        LD A,B
69 savelij 10280
        ADC A,IXL
10281
        DB 0XCB,0X34;SLI H
36 savelij 10282
        RLA
10283
        RRC H
10284
        LD B,A
10285
        PUSH HL
10286
        PUSH DE
10287
        INC DE
10288
        LD A,E
10289
        OR D
69 savelij 10290
        LD A,IXL
36 savelij 10291
        JR NZ,MHF
69 savelij 10292
        INC IXL
36 savelij 10293
MHF     EX DE,HL
10294
        EXX
10295
        POP DE
10296
        ADD HL,DE
10297
        ADC A,B
69 savelij 10298
        DB 0XCB,0X34;SLI H
36 savelij 10299
        RLA
10300
        RRC H
10301
        EX DE,HL
10302
        POP HL
10303
        EXX
10304
        LD C,A
10305
MH1     EXX
10306
        LD A,H
10307
        CP D
10308
        JR C,MH3
10309
        JR NZ,MH2
10310
        LD A,L
10311
        CP E
10312
        JR C,MH3
10313
MH2     LD C,E
10314
        LD B,D
10315
        JR MH4
10316
 
10317
MH3     LD C,L
10318
        LD B,H
10319
MH4     RES 7,B
10320
        INC BC
69 savelij 10321
        LD A,IXL
36 savelij 10322
        OR A
10323
        JR NZ,MH6
10324
        LD A,B
10325
        EXX
10326
        CP H
10327
        JR C,MH7
10328
        JR NZ,MH5
10329
        EXX
10330
        LD A,C
10331
        EXX
10332
        CP L
10333
        JR C,MH7
10334
MH5     PUSH HL
10335
        EXX
10336
        POP BC
10337
MH6     EXX
69 savelij 10338
MH7     LD D,HIGH (RAMPG)
36 savelij 10339
        LD A,B
10340
        CP C
10341
        JR NZ,MH9
10342
        LD E,B
10343
        LD A,(DE)
10344
        LD (SDPAGE),A
10345
        EXX
10346
        PUSH BC
10347
MH8     LD A,C
10348
        CALL MLDD
10349
        JP PE,MH8
10350
        JR MHD
10351
 
10352
MH9     EXX
10353
        PUSH BC
10354
MHA     PUSH BC
10355
        PUSH DE
10356
        EXX
10357
        LD E,B
10358
        LD A,(DE)
10359
        LD (SDPAGE),A
10360
        EXX
69 savelij 10361
        LD DE,BUFFER+0X00FF
36 savelij 10362
        LD A,C
10363
        CALL MLDD
10364
        POP DE
10365
        POP BC
10366
        PUSH HL
10367
        EXX
10368
        LD E,C
10369
        LD A,(DE)
10370
        LD (SDPAGE),A
10371
        EXX
69 savelij 10372
        LD HL,BUFFER+0X00FF
36 savelij 10373
        LD A,C
10374
        CALL MLDD
10375
        POP HL
10376
        JP PE,MHA
10377
MHD     BIT 7,H
10378
        JR NZ,MHB
10379
        SET 7,H
10380
        EXX
10381
        DEC B
10382
        JP MHC
10383
MHB     SET 7,D
10384
        EXX
10385
        DEC C
10386
MHC     POP DE
10387
        OR A
10388
        SBC HL,DE
69 savelij 10389
        LD A,IXL
10390
        SBC A,0X00
10391
        LD IXL,A
36 savelij 10392
        OR L
10393
        OR H
10394
        JP NZ,MH1
10395
        POP BC
10396
        POP DE
10397
        RET
10398
 
10399
;PROCEDURE: LOAD MEMORY BLOCK
10400
;INPUT    : A,HL  - SOURCE LOGICAL ADRESS
10401
;           DE    - DESTINATION PHISICAL ADRESS (LOW RAM)
10402
;           BC    - BLOCK LENGTH
10403
;USES     : TYPE 2 REGS,RAMPG,CPAGE,SYSTEM
10404
;EFFECT   : MOVES MEMORY BLOCK FROM HIGH MEMORY TO LOW
10405
;               SWITCH TO PAGE 0
10406
 
69 savelij 10407
LDMEM   DB 0XCB,0X34;SLI H
36 savelij 10408
        RLA
10409
        RRC H
69 savelij 10410
LM1     LD IXL,A
36 savelij 10411
        PUSH HL
10412
        LD L,A
69 savelij 10413
        LD H,HIGH (RAMPG)
36 savelij 10414
        LD A,(HL)
10415
        POP HL
10416
        LD (SDPAGE),A
10417
        ADD HL,BC
10418
        JR NC,LM2
10419
        JR NZ,LM4
10420
LM2     SBC HL,BC
10421
LM3     LD A,C
10422
        CALL MLDI
10423
        JP PE,LM3
10424
        RET
10425
 
10426
LM4     XOR A
10427
        SBC HL,BC
10428
LM5     LD A,L
10429
        NEG
10430
        CALL MLDI
10431
        BIT 7,H
10432
        JP NZ,LM5
10433
        SET 7,H
69 savelij 10434
        LD A,IXL
36 savelij 10435
        INC A
10436
        JP  LM1
10437
 
10438
;PROCEDURE: SAVE MEMORY BLOCK
10439
;INPUT    : A,DE  - DESTINATION LOGICAL ADRESS
10440
;           HL    - SOURCE PHISICAL ADRESS (LOW RAM)
10441
;           BC    - BLOCK LENGTH
10442
;USES     : TYPE 2 REGS,RAMPG,CPAGE,SYSTEM
10443
;EFFECT   : MOVES MEMORY BLOCK FROM LOW MEMORY TO HIGH
10444
;               SWITCH TO PAGE 0
10445
 
69 savelij 10446
SVMEM   DB 0XCB,0X32;SLI D
36 savelij 10447
        RLA
10448
        RRC D
69 savelij 10449
SM1     LD IXL,A
36 savelij 10450
        PUSH HL
10451
        LD L,A
69 savelij 10452
        LD H,HIGH (RAMPG)
36 savelij 10453
        LD A,(HL)
10454
        POP HL
10455
        LD (SDPAGE),A
10456
        EX DE,HL
10457
        ADD HL,BC
10458
        JR NC,SM2
10459
        JR NZ,SM4
10460
SM2     SBC HL,BC
10461
        EX DE,HL
10462
SM3     LD A,C
10463
        CALL MLDI
10464
        JP PE,SM3
10465
        RET
10466
 
10467
SM4     XOR A
10468
        SBC HL,BC
10469
        EX DE,HL
10470
SM5     LD A,E
10471
        NEG
10472
        CALL MLDI
10473
        BIT 7,D
10474
        JP NZ,SM5
10475
        SET 7,D
69 savelij 10476
        LD A,IXL
36 savelij 10477
        INC A
10478
        JP  SM1
10479
 
10480
;INCLUDE "ENGINE_L.a80"
10481
ENGINE  LD HL,(QTFREE)
69 savelij 10482
        LD H,HIGH (QTMAP)
36 savelij 10483
        LD A,L
69 savelij 10484
        AND 0X1C
36 savelij 10485
        LD L,A
10486
        LD (QTFREE),HL
10487
        LD A,(HL)
10488
        OR A
10489
        JP NZ,ENG_FUL
69 savelij 10490
        LD A,(CHANSFX+0X000)
36 savelij 10491
        RLCA
10492
        RR C
69 savelij 10493
        LD A,(CHANSFX+0X040)
36 savelij 10494
        RLCA
10495
        RR C
69 savelij 10496
        LD A,(CHANSFX+0X080)
36 savelij 10497
        RLCA
10498
        RR C
69 savelij 10499
        LD A,(CHANSFX+0X0C0)
36 savelij 10500
        RLCA
10501
        RR C
69 savelij 10502
        LD A,(CHANSFX+0X100)
36 savelij 10503
        RLCA
10504
        RR C
69 savelij 10505
        LD A,(CHANSFX+0X140)
36 savelij 10506
        RLCA
10507
        RR C
69 savelij 10508
        LD A,(CHANSFX+0X180)
36 savelij 10509
        RLCA
10510
        RR C
69 savelij 10511
        LD A,(CHANSFX+0X1C0)
36 savelij 10512
        RLCA
10513
        RR C
10514
        LD A,(GSCHNS)
10515
        AND C
10516
        LD C,A
10517
        LD (FXCHNS),A
10518
        JR NZ,ENG_01
10519
        LD A,(MTSTAT)
10520
        BIT 6,A
10521
        RET NZ
10522
        OR A
10523
        JP M,ENG_00
10524
        LD A,(MODULE)
10525
        OR A
10526
        JR NZ,ENG_01
10527
ENG_00  XOR A
10528
        LD (PROCESS),A
10529
        RET
10530
 
10531
ENG_01  LD A,(MODSWCH)
10532
        OR A
10533
        JR NZ,ENG_03
10534
        LD A,(MODULE)
10535
        OR A
10536
        JR Z,ENG_03
69 savelij 10537
        LD A,0X01
36 savelij 10538
        LD (SGENOFF),A
10539
        LD A,(TCKLEFT+1)
69 savelij 10540
        CP 0X02
36 savelij 10541
        JR NC,ENG_05
10542
        OR A
10543
        LD A,(TCKLEFT)
10544
        JR Z,ENG_04
69 savelij 10545
        SUB 0X80
36 savelij 10546
        JR NC,ENG_05
10547
        JP ENG_04
10548
 
69 savelij 10549
ENG_03  LD A,0X01
36 savelij 10550
        LD (SGENOFF),A
10551
        LD A,(FXTICK+1)
69 savelij 10552
        CP 0X02
36 savelij 10553
        JR NC,ENG_05
10554
        OR A
10555
        LD A,(FXTICK)
10556
        JR Z,ENG_04
69 savelij 10557
        SUB 0X80
36 savelij 10558
        JR NC,ENG_05
10559
ENG_04  NEG
10560
        LD (SGENOFF),A
10561
ENG_05  XOR A
10562
        LD (CHANNEL),A
10563
        OR C
10564
        JR Z,ENG_07
10565
        LD IY,CHANSFX
10566
        SRL C
10567
ENG_06  PUSH BC
10568
        CALL C,GEN
10569
        LD BC,CHANLEN
10570
        ADD IY,BC
10571
        POP BC
10572
        SRL C
10573
        JR C,ENG_06
10574
        JR NZ,ENG_06
10575
 
10576
ENG_07  CALL QUANTUM
10577
        XOR A
10578
        LD (CPAGE),A
10579
        OUT (MPAG),A
10580
        RET
10581
 
10582
ENG_80  LD A,(SGENOFF)
10583
        LD E,A
69 savelij 10584
        LD D,0X00
36 savelij 10585
        LD HL,(FXTICK)
10586
        OR A
10587
        SBC HL,DE
10588
        JR Z,ENG_81
10589
        JR C,ENG_81
10590
        LD (FXTICK),HL
10591
        JP ENG_82
10592
 
10593
ENG_81
10594
ENG_82  LD A,(MODSWCH)
10595
        OR A
10596
        JR NZ,$
10597
        LD A,(MODULE)
10598
        OR A
10599
        JR Z,$
10600
        LD HL,(TCKLEFT)
10601
        SBC HL,DE
10602
        LD (TCKLEFT),HL
10603
        JR NZ,ENG_83
10604
ENG_83
10605
ENG_FUL LD A,(PLAYING)
10606
        OR A
10607
        RET NZ
10608
        DI
10609
        XOR A
10610
        LD (FILLALL),A
10611
        CALL QTPLAY
10612
        RET
10613
 
10614
;INCLUDE "FX_H.a80"
10615
 
10616
FXCHK_  LD HL,FXJP2
10617
        JP FXCHK__
10618
 
10619
FXCHK   LD HL,FXJP1
10620
FXCHK__ LD A,(IY+CHCOM)
69 savelij 10621
        AND 0X1F
36 savelij 10622
        ADD A,A
10623
        ADD A,L
10624
        LD L,A
10625
        LD A,(HL)
10626
        INC L
10627
        LD H,(HL)
10628
        LD L,A
10629
        LD A,(IY+CHPARM)
10630
        JP (HL)
10631
 
10632
FXE_    LD HL,FXEJP2
10633
        JP FXE__
10634
 
10635
FXE     LD HL,FXEJP1
10636
FXE__   RRCA
10637
        RRCA
10638
        RRCA
10639
        RRCA
69 savelij 10640
        AND 0X0F
36 savelij 10641
        ADD A,A
10642
        ADD A,L
10643
        LD L,A
10644
        LD A,(HL)
10645
        INC L
10646
        LD H,(HL)
10647
        LD L,A
10648
        LD A,(IY+CHPARM)
69 savelij 10649
        AND 0X0F
36 savelij 10650
        JP (HL)
10651
 
10652
FXRET   RET
10653
 
10654
FXNOP   LD L,(IY+CHPERL)
10655
        LD H,(IY+CHPERH)
10656
EFXNOP2 CALL EFXCNV
10657
        LD (IY+CHFRQL),L
10658
        LD (IY+CHFRQH),H
10659
        RET
10660
 
10661
;---patched
10662
EFXCNV  LD A,H
69 savelij 10663
        CP 0X04
36 savelij 10664
        JR NC,EFXCNV1
10665
        XOR A
10666
        LD (CPAGE),A
10667
        OUT (MPAG),A
10668
        ADD HL,HL
10669
        LD A,H
69 savelij 10670
        ADD A,0XF8
36 savelij 10671
        LD H,A
10672
        LD A,(HL)
10673
        INC HL
10674
        LD H,(HL)
10675
        LD L,A
10676
        RET
10677
 
10678
EFXCNV1 PUSH HL
10679
        LD E,L
10680
        LD D,H
10681
        ADD HL,HL
10682
        ADD HL,HL
10683
        ADD HL,DE
10684
        XOR A   ;HL A
10685
        LD C,A  ;DE C
10686
        SRL D           ;/2
10687
        RR E
10688
        RR C
10689
        ADD A,C
10690
        ADC HL,DE               ;+/2
10691
        SRL D           ;/4
10692
        RR E
10693
        RR C
10694
        SRL D           ;/8
10695
        RR E
10696
        RR C
10697
        ADD A,C
10698
        ADC HL,DE               ;+/8
10699
        SRL D           ;/16
10700
        RR E
10701
        RR C
10702
        SRL D           ;/32
10703
        RR E
10704
        RR C
10705
        SRL D           ;/64
10706
        RR E
10707
        RR C
10708
        SRL D           ;/128
10709
        RR E
10710
        RR C
10711
        SRL D           ;/256
10712
        RR E
10713
        RR C
10714
        ADD A,C
10715
        ADC HL,DE               ;+/256
10716
        SRL E           ;/512
10717
        RR C
10718
        ADD A,C
10719
        ADC HL,DE               ;+/512
10720
        SRL E           ;/1024
10721
        RR C
10722
        ADD A,C
10723
        ADC HL,DE               ;+/1024
10724
        SRL E           ;/2048
10725
        RR C
10726
        SRL E           ;/4096
10727
        RR C
10728
        ADD A,C
10729
        ADC HL,DE               ;+/4096
10730
        SRL H
10731
        RR L
10732
        SRL H
10733
        RR L
10734
        SRL H
10735
        RR L
10736
        JR NC,EFXCNV2
10737
        INC HL
10738
EFXCNV2 POP DE
10739
        ADD HL,DE
10740
        ADD HL,DE
10741
        RET
10742
 
10743
        INC A
10744
        RR L
10745
        JR NC,TUT00
10746
        INC HL
10747
TUT00   POP DE
10748
        ADD HL,DE
10749
        ADD HL,DE
10750
        RET
10751
 
69 savelij 10752
ARPTAB  DB 0,1,2,0,1,2,0,1,2,0
10753
        DB 1,2,0,1,2,0,1,2,0,1,2
10754
        DB 0,1,2,0,1,2,0,1,2,0
10755
        DB 1,2,0,1,2,0,1,2,0,1,2
36 savelij 10756
 
10757
FX0     OR A
10758
        JP Z,FXNOP
10759
        LD B,A
10760
        LD A,(MTCOUNT)
10761
        LD HL,ARPTAB
10762
        ADD A,L
10763
        LD L,A
10764
        LD A,H
69 savelij 10765
        ADC A,0X00
36 savelij 10766
        LD H,A
10767
        LD A,(HL)
10768
        OR A
10769
        JP Z,FXNOP
10770
        PUSH AF
10771
        PUSH BC
10772
        CALL NOTEFND
10773
        POP BC
10774
        POP AF
10775
        DEC A
10776
        LD A,B
10777
        JR NZ,FX0_2
10778
        RRCA
10779
        RRCA
10780
        RRCA
10781
        RRCA
69 savelij 10782
FX0_2   AND 0X0F
36 savelij 10783
        ADD A,E
10784
        LD E,A
10785
        CP 96
10786
        RET NC
10787
        CALL GETFRQ
10788
        LD (IY+CHFRQL),L
10789
        LD (IY+CHFRQH),H
10790
        RET
10791
 
10792
FX1     LD E,A
69 savelij 10793
        LD D,0X00
36 savelij 10794
        LD L,(IY+CHPERL)
10795
        LD H,(IY+CHPERH)
10796
        OR A
10797
        SBC HL,DE
10798
        JR NC,FX1_2
69 savelij 10799
        LD HL,0X0000
36 savelij 10800
FX1_2   PUSH HL
10801
        LD HL,113
10802
FX1_8   POP DE
10803
        OR A
10804
        SBC HL,DE
10805
        JR C,FX1_9
10806
        ADD HL,DE
10807
        EX DE,HL
10808
FX1_9   SET 7,(IY+CHFLAGS)
10809
        LD (IY+CHPERL),E
10810
        LD (IY+CHPERH),D
10811
        PUSH DE
10812
        EX DE,HL
10813
        CALL EFXCNV
10814
        LD (IY+CHFRQL),L
10815
        LD (IY+CHFRQH),H
10816
        POP DE
10817
        CALL NOTEFND
10818
        LD (IY+CHREAL),A
10819
        RET NC
10820
        LD (IY+CHNOTE),A
10821
        RES 7,(IY+CHFLAGS)
10822
        RET
10823
 
10824
FX2     LD E,A
69 savelij 10825
        LD D,0X00
36 savelij 10826
        LD L,(IY+CHPERL)
10827
        LD H,(IY+CHPERH)
10828
        ADD HL,DE
10829
        JR NC,FX2_2
69 savelij 10830
        LD HL,0XFFFF
36 savelij 10831
FX2_2   PUSH HL
10832
        LD HL,856
10833
FX2_8   POP DE
10834
        OR A
10835
        SBC HL,DE
10836
        JR NC,FX2_9
10837
        ADD HL,DE
10838
        EX DE,HL
10839
FX2_9   SET 7,(IY+CHFLAGS)
10840
        LD (IY+CHPERL),E
10841
        LD (IY+CHPERH),D
10842
        PUSH DE
10843
        EX DE,HL
10844
        CALL EFXCNV
10845
        LD (IY+CHFRQL),L
10846
        LD (IY+CHFRQH),H
10847
        POP DE
10848
        CALL NOTEFND
10849
        LD (IY+CHREAL),A
10850
        RET NC
10851
        LD (IY+CHNOTE),A
10852
        RES 7,(IY+CHFLAGS)
10853
        RET
10854
 
10855
FX3     OR A
10856
        JR Z,FX3_1
10857
        LD (IY+CHPORT),A
10858
FX3_1   LD A,(IY+CHWNT)
10859
        CP 96
10860
        RET NC
10861
        LD E,A
10862
        CALL GETPER
10863
        EX DE,HL
10864
        LD L,(IY+CHPERL)
10865
        LD H,(IY+CHPERH)
10866
        OR A
10867
        SBC HL,DE
10868
        JR Z,FX3_9
10869
        ADD HL,DE
10870
        LD C,(IY+CHPORT)
69 savelij 10871
        LD B,0X00
36 savelij 10872
        JR C,FX3_5
10873
        SBC HL,BC
10874
        JR C,FX3_9
10875
        SBC HL,DE
10876
        JR C,FX3_9
10877
FX3_2   ADD HL,DE
10878
        LD (IY+CHPERL),L
10879
        LD (IY+CHPERH),H
10880
        BIT 2,(IY+CHFLAGS)
10881
        CALL Z,EFXCNV
10882
        BIT 2,(IY+CHFLAGS)
10883
        JR Z,FX3_3
10884
        EX DE,HL
10885
        CALL NOTEFND
10886
        LD E,A
10887
        CALL GETFRQ
10888
FX3_3   LD (IY+CHFRQL),L
10889
        LD (IY+CHFRQH),H
10890
        RET
10891
 
10892
FX3_5   ADD HL,BC
10893
        JR C,FX3_9
10894
        SBC HL,DE
10895
        JR C,FX3_2
10896
FX3_9   LD E,(IY+CHWNT)
10897
        LD (IY+CHNOTE),E
10898
        LD (IY+CHREAL),E
10899
        CALL GETPER
10900
        LD (IY+CHPERL),L
10901
        LD (IY+CHPERH),H
10902
        CALL GETFRQ
10903
        LD (IY+CHFRQL),L
10904
        LD (IY+CHFRQH),H
10905
        RES 7,(IY+CHFLAGS)
69 savelij 10906
        LD (IY+CHCOM),0X00
10907
        LD (IY+CHPARM),0X00
10908
        LD (IY+CHWNT),0X7F
36 savelij 10909
        RET
10910
 
10911
FX3_    RET
10912
 
10913
FX4     PUSH DE
10914
        PUSH BC
10915
        OR A
10916
        JR Z,FX4_3
10917
        LD L,A
10918
        LD H,(IY+CHVIBCM)
69 savelij 10919
        AND 0X0F
36 savelij 10920
        JR Z,FX4_1
10921
        XOR H
69 savelij 10922
        AND 0X0F
36 savelij 10923
        XOR H
10924
        LD H,A
10925
FX4_1   LD A,L
69 savelij 10926
        AND 0XF0
36 savelij 10927
        JR Z,FX4_2
10928
        XOR H
69 savelij 10929
        AND 0XF0
36 savelij 10930
        XOR H
10931
        LD H,A
10932
FX4_2   LD (IY+CHVIBCM),H
10933
FX4_3   LD D,(IY+CHVIBPS)
10934
        LD A,D
69 savelij 10935
        AND 0X03
36 savelij 10936
        JR Z,FX4_5
69 savelij 10937
        CP 0X03
36 savelij 10938
        JR NZ,FX4_A
10939
        LD A,R
69 savelij 10940
        AND 0X03
36 savelij 10941
        JR Z,FX4_5
69 savelij 10942
        CP 0X03
36 savelij 10943
        JR Z,FX4_5
10944
FX4_A   DEC A
10945
        JR Z,FX4_4
69 savelij 10946
        LD E,0XFF
36 savelij 10947
        JP FX4_6
10948
 
10949
FX4_4   LD A,D
69 savelij 10950
        AND 0X7C
36 savelij 10951
        RLCA
10952
        LD E,A
10953
        BIT 7,D
10954
        JR NZ,FX4_6
69 savelij 10955
        LD A,0XF8
36 savelij 10956
        SUB E
10957
        LD E,A
10958
        JP FX4_6
10959
 
10960
FX4_5   LD A,D
10961
        RRCA
10962
        RRCA
69 savelij 10963
        AND 0X1F
36 savelij 10964
        LD HL,VIBTB
10965
        ADD A,L
10966
        LD L,A
10967
        LD E,(HL)
10968
FX4_6   LD A,(IY+CHVIBCM)
69 savelij 10969
        AND 0X0F
36 savelij 10970
        JR Z,FX4_9
10971
        LD B,A
69 savelij 10972
        LD HL,0X0000
36 savelij 10973
        LD D,H
10974
FX4_7   ADD HL,DE
10975
        DJNZ FX4_7
69 savelij 10976
        LD B,0X07
36 savelij 10977
        LD A,L
10978
FX4_8   SRL H
10979
        RRA
10980
        DJNZ FX4_8
10981
        ADC A,D
10982
        LD L,A
69 savelij 10983
        LD H,0X00
36 savelij 10984
        BIT 7,(IY+CHVIBPS)
10985
        JR Z,FX4_9
10986
        DEC H
10987
        CPL
10988
        LD L,A
10989
        INC HL
10990
FX4_9   LD E,(IY+CHPERL)
10991
        LD D,(IY+CHPERH)
10992
        ADD HL,DE
10993
        CALL EFXNOP2
10994
        LD A,(IY+CHVIBCM)
69 savelij 10995
        AND 0XF0
36 savelij 10996
        RRCA
10997
        RRCA
10998
        ADD A,(IY+CHVIBPS)
10999
        LD (IY+CHVIBPS),A
11000
        POP BC
11001
        POP DE
11002
        RET
11003
 
11004
FX5     CALL FXA
11005
        JP FX3_1
11006
 
11007
FX6     CALL FXA
11008
        PUSH DE
11009
        PUSH BC
11010
        JP FX4_3
11011
 
11012
FX7     PUSH DE
11013
        PUSH BC
11014
        OR A
11015
        JR Z,FX7_3
11016
        LD L,A
11017
        LD H,(IY+CHTRMCM)
69 savelij 11018
        AND 0X0F
36 savelij 11019
        JR Z,FX7_1
11020
        XOR H
69 savelij 11021
        AND 0X0F
36 savelij 11022
        XOR H
11023
        LD H,A
11024
FX7_1   LD A,L
69 savelij 11025
        AND 0XF0
36 savelij 11026
        JR Z,FX7_2
11027
        XOR H
69 savelij 11028
        AND 0XF0
36 savelij 11029
        XOR H
11030
        LD H,A
11031
FX7_2   LD (IY+CHTRMCM),H
11032
FX7_3   LD D,(IY+CHTRMPS)
11033
        LD A,D
69 savelij 11034
        AND 0X03
36 savelij 11035
        JR Z,FX7_5
69 savelij 11036
        CP 0X03
36 savelij 11037
        JR NZ,FX7_A
11038
        LD A,R
69 savelij 11039
        AND 0X03
36 savelij 11040
        JR Z,FX7_5
69 savelij 11041
        CP 0X03
36 savelij 11042
        JR Z,FX7_5
11043
FX7_A   DEC A
11044
        JR Z,FX7_4
69 savelij 11045
        LD E,0XFF
36 savelij 11046
        JP FX7_6
11047
 
11048
FX7_4   LD A,D
69 savelij 11049
        AND 0X7C
36 savelij 11050
        RLCA
11051
        LD E,A
11052
        BIT 7,D
11053
        JR NZ,FX7_6
69 savelij 11054
        LD A,0XF8
36 savelij 11055
        SUB E
11056
        LD E,A
11057
        JP FX7_6
11058
 
11059
FX7_5   LD A,D
11060
        RRCA
11061
        RRCA
69 savelij 11062
        AND 0X1F
36 savelij 11063
        LD HL,VIBTB
11064
        ADD A,L
11065
        LD L,A
11066
        LD E,(HL)
11067
FX7_6   LD A,(IY+CHTRMCM)
69 savelij 11068
        AND 0X0F
36 savelij 11069
        JR Z,FX7_9
11070
        LD B,A
69 savelij 11071
        LD HL,0X0000
36 savelij 11072
        LD D,H
11073
FX7_7   ADD HL,DE
11074
        DJNZ FX7_7
69 savelij 11075
        LD B,0X06
36 savelij 11076
        LD A,L
11077
FX7_8   SRL H
11078
        RRA
11079
        DJNZ FX7_8
11080
        ADC A,D
11081
        BIT 7,(IY+CHTRMPS)
11082
        JR Z,FX7_9
11083
        LD L,A
11084
        LD A,(IY+CHVOL)
11085
        SUB L
11086
        JR NC,FX7_B
11087
        XOR A
11088
        JP FX7_B
11089
 
11090
FX7_9   ADD A,(IY+CHVOL)
69 savelij 11091
        CP 0X40
36 savelij 11092
        JR C,FX7_B
69 savelij 11093
        LD A,0X40
36 savelij 11094
FX7_B   CP (IY+CHMVOL)
11095
        LD (IY+CHMVOL),A
11096
        JR Z,FX7_C
11097
        SET 0,(IY+CHSTAT)
11098
FX7_C   LD A,(IY+CHTRMCM)
69 savelij 11099
        AND 0XF0
36 savelij 11100
        RRCA
11101
        RRCA
11102
        ADD A,(IY+CHTRMPS)
11103
        LD (IY+CHTRMPS),A
11104
        POP BC
11105
        POP DE
11106
        RET
11107
 
11108
FX9     OR A
11109
        RET
11110
 
11111
        JR Z,FX9_1
11112
        LD (IY+CHOFFST),A
11113
FX9_1   LD H,(IY+CHOFFST)
69 savelij 11114
        LD L,0X00
36 savelij 11115
FXA     OR A
11116
        RET Z
11117
        LD L,A
11118
        LD A,(IY+CHVOL)
11119
        LD H,A
11120
        LD A,L
69 savelij 11121
        AND 0XF0
36 savelij 11122
        JR Z,FXA_1
11123
        RRCA
11124
        RRCA
11125
        RRCA
11126
        RRCA
11127
        ADD A,H
69 savelij 11128
        CP 0X40
36 savelij 11129
        JR C,FXA_2
69 savelij 11130
        LD A,0X40
36 savelij 11131
        JP FXA_2
11132
 
11133
FXA_1   LD A,H
11134
        SUB L
11135
        JR NC,FXA_2
69 savelij 11136
        LD A,0X00
36 savelij 11137
        LD (IY+CHCOM),A
11138
        LD (IY+CHPARM),A
11139
FXA_2   LD (IY+CHVOL),A
11140
        CP (IY+CHMVOL)
11141
        LD (IY+CHMVOL),A
11142
        RET Z
11143
        SET 0,(IY+CHSTAT)
11144
        RET
11145
 
11146
FXB     DEC A
11147
        LD (MTSNGPS),A
11148
        ;CALL CP_END_MOD
11149
        XOR A
11150
        LD (MTBRKPS),A
11151
        INC A
11152
        LD (MTJMPFL),A
11153
        RET
11154
 
69 savelij 11155
FXC     CP 0X40
36 savelij 11156
        JR C,FXC_1
69 savelij 11157
        LD A,0X40
36 savelij 11158
FXC_1   LD (IY+CHVOL),A
11159
        CP (IY+CHMVOL)
11160
        LD (IY+CHMVOL),A
11161
        RET Z
11162
        SET 0,(IY+CHSTAT)
11163
        RET
11164
 
11165
FXD     LD L,A
69 savelij 11166
        AND 0XF0
36 savelij 11167
        RRCA
11168
        LD H,A
11169
        RRCA
11170
        RRCA
11171
        ADD A,H
11172
        LD H,A
11173
        LD A,L
69 savelij 11174
        AND 0X0F
36 savelij 11175
        ADD A,H
69 savelij 11176
        CP 0X40
36 savelij 11177
        JR C,FXD_1
11178
        XOR A
11179
FXD_1   LD (MTBRKPS),A
69 savelij 11180
        LD A,0X01
36 savelij 11181
        LD (MTJMPFL),A
11182
        RET
11183
 
11184
FXF     OR A
11185
        JR Z,FXF_5
69 savelij 11186
        CP 0X20
36 savelij 11187
        JR NC,FXF_1
11188
FXF_0   LD (MTSPEED),A
11189
        RET
11190
 
11191
FXF_1   LD (MTBPM),A
69 savelij 11192
        SUB 0X20
36 savelij 11193
        LD HL,BPMTAB
11194
        ADD A,A
11195
        JR NC,FXF_3
11196
        INC H
11197
FXF_3   ADD A,L
11198
        LD L,A
11199
        JR NC,FXF_4
11200
        INC H
11201
FXF_4   LD A,(HL)
11202
        INC HL
11203
        LD H,(HL)
11204
        LD L,A
11205
        LD (TICKLEN),HL
11206
        LD (TCKLEFT),HL
11207
        RET
11208
 
11209
FXF_5  
11210
;LD HL,MTSTAT
11211
;---patched
11212
        JP Patch2x
11213
;---
11214
        SET 7,(HL)
11215
        RET
11216
 
69 savelij 11217
FXE0    AND 0X01
36 savelij 11218
        LD (MTFILTR),A
11219
        RET
11220
 
11221
FXE3    RES 2,(IY+CHFLAGS)
11222
        OR A
11223
        RET Z
11224
        SET 2,(IY+CHFLAGS)
11225
        RET
11226
 
11227
FXE4    RES 1,(IY+CHFLAGS)
11228
        BIT 2,A
11229
        JR Z,FXE4_2
11230
        SET 1,(IY+CHFLAGS)
69 savelij 11231
FXE4_2  AND 0X03
36 savelij 11232
        LD L,A
11233
        LD A,(IY+CHVIBPS)
69 savelij 11234
        AND 0XFC
36 savelij 11235
        OR L
11236
        LD (IY+CHVIBPS),A
11237
        RET
11238
 
11239
FXE5    ADD A,A
11240
        LD (IY+CHFINE),A
11241
        RET
11242
 
11243
FXE6    OR A
11244
        JR Z,FXE6_3
11245
        INC (IY+CHLPCNT)
11246
        DEC (IY+CHLPCNT)
11247
        JR Z,FXE6_2
11248
        DEC (IY+CHLPCNT)
11249
        RET Z
11250
FXE6_1  LD A,(IY+CHPATPS)
11251
        LD (MTBRKPS),A
69 savelij 11252
        LD A,0X01
36 savelij 11253
        LD (MTBRKFL),A
11254
        RET
11255
 
11256
FXE6_2  LD (IY+CHLPCNT),A
11257
        JP FXE6_1
11258
 
11259
FXE6_3  LD A,(MTPATPS)
11260
        LD (IY+CHPATPS),A
11261
        RET
11262
 
11263
FXE7    RES 0,(IY+CHFLAGS)
11264
        BIT 2,A
11265
        JR Z,FXE7_2
11266
        SET 0,(IY+CHFLAGS)
69 savelij 11267
FXE7_2  AND 0X03
36 savelij 11268
        LD L,A
11269
        LD A,(IY+CHTRMPS)
69 savelij 11270
        AND 0XFC
36 savelij 11271
        OR L
11272
        LD (IY+CHTRMPS),A
11273
        RET
11274
 
11275
FXE9    OR A
11276
        RET Z
11277
        LD L,A
11278
        LD A,(MTCOUNT)
11279
FXE9_1  SUB L
11280
        JR NC,FXE9_1
11281
        ADD A,L
11282
        RET NZ
11283
        CALL GETSMP
11284
        RET
11285
 
11286
FXEA    RLCA
11287
        RLCA
11288
        RLCA
11289
        RLCA
11290
        JP FXA
11291
 
11292
FXEC    LD HL,MTCOUNT
11293
        CP (HL)
11294
        RET NZ
11295
        XOR A
11296
        LD (IY+CHVOL),A
11297
        CP (IY+CHMVOL)
11298
        LD (IY+CHMVOL),A
11299
        RET Z
11300
        SET 0,(IY+CHSTAT)
11301
        RET
11302
 
11303
FXED    LD HL,MTCOUNT
11304
        CP (HL)
11305
        RET NZ
11306
        CALL GETSMP
11307
        RET
11308
 
11309
FXEE    LD HL,MTPDT2
11310
        INC (HL)
11311
        DEC (HL)
11312
        RET NZ
11313
        INC A
11314
        LD (MTPDT),A
11315
        RET
11316
 
11317
;INCLUDE "VOL_H.a80"
11318
 
11319
;VOLUME CALCULATION FOR MODULES AND FX
11320
 
11321
CALCVOL RES 0,(IY+CHSTAT)
69 savelij 11322
        LD DE,0XFC00
36 savelij 11323
        LD A,(IY+CHMVOL)
69 savelij 11324
        AND 0X7F
36 savelij 11325
        JP Z,CALCV_Z
69 savelij 11326
        CP 0X40
36 savelij 11327
        CALL C,MUL64
11328
        LD A,(IY+CHEVOL)
11329
        OR A
11330
        JP Z,CALCV_Z
69 savelij 11331
        CP 0X40
36 savelij 11332
        CALL C,MUL64
11333
        LD A,(IY+CHFADVH)
11334
        SRL A
11335
        SRL A
69 savelij 11336
        ADC A,0X00
36 savelij 11337
        JP Z,CALCV_Z
69 savelij 11338
        CP 0X40
36 savelij 11339
        CALL C,MUL64
11340
        BIT 6,(IY+CHSTAT)
11341
        JP Z,CALCV_N
11342
        LD A,(FXVOL)
11343
        OR A
11344
        JP Z,CALCV_Z
69 savelij 11345
        CP 0X40
36 savelij 11346
        CALL C,MUL64
11347
        LD A,(FXMVOL)
11348
        OR A
11349
        JP Z,CALCV_Z
69 savelij 11350
        CP 0X40
36 savelij 11351
        CALL C,MUL64
11352
        JP CALCV_X
11353
 
11354
CALCV_N LD A,(MTVOL)
11355
        OR A
11356
        JP Z,CALCV_Z
69 savelij 11357
        CP 0X40
36 savelij 11358
        CALL C,MUL64
11359
        LD A,(MODVOL)
11360
        OR A
11361
        JP Z,CALCV_Z
69 savelij 11362
        CP 0X40
36 savelij 11363
        CALL C,MUL64
11364
CALCV_X LD C,(IY+CHPAN)
11365
        LD A,(IY+CHEPAN)
69 savelij 11366
        SUB 0X20
36 savelij 11367
        JR Z,CALCV_V
11368
        JR NC,CALCV_I
11369
        NEG
69 savelij 11370
CALCV_I CP 0X20
36 savelij 11371
        JR C,CALCV_U
11372
        LD H,(IY+CHPAN)
11373
        LD A,H
11374
        OR A
11375
        JP P,CALCV_Q
11376
        NEG
11377
        LD H,A
11378
        JP CALCV_Q
11379
 
11380
CALCV_U RLCA
11381
        RLCA
11382
        RLCA
11383
        LD L,A
11384
        LD A,(IY+CHPAN)
11385
        OR A
11386
        JP P,CALCV_T
11387
        NEG
11388
CALCV_T LD B,A
11389
        XOR A
11390
        JP CALCV_M
11391
 
11392
CALCV_R ADD A,B
11393
CALCV_E SRL B
11394
CALCV_M SLA L
11395
        JR C,CALCV_R
11396
        JR NZ,CALCV_E
11397
        SRL A
11398
        LD H,A
11399
CALCV_Q LD A,(IY+CHEPAN)
69 savelij 11400
        CP 0X20
36 savelij 11401
        JR C,CALCV_P
11402
        LD A,C
11403
        ADD A,H
11404
        LD C,A
11405
        JR NC,CALCV_V
69 savelij 11406
        LD C,0XFF
36 savelij 11407
        JP CALCV_W
11408
CALCV_P LD A,C
11409
        SUB H
69 savelij 11410
        LD C,0X00
36 savelij 11411
        JR C,CALCV_O
11412
        LD C,A
11413
CALCV_V LD A,C
69 savelij 11414
        CP 0X80
36 savelij 11415
        JR Z,CALCV_Y
11416
        OR A
11417
        JP M,CALCV_W
11418
CALCV_O BIT 5,(IY+CHSTAT)
11419
        JR Z,CALCV_Y
11420
        SRL A
11421
        CALL MUL64
11422
        JP CALCV_Y
11423
 
11424
CALCV_W BIT 5,(IY+CHSTAT)
11425
        JR NZ,CALCV_Y
11426
        NEG
11427
        SRL A
11428
        CALL MUL64
11429
CALCV_Y LD A,D
11430
        SRL A
11431
        SRL A
69 savelij 11432
        ADC A,0X00
36 savelij 11433
CALCV_Z LD C,A
11434
        LD HL,VOLRQTB
11435
        LD A,L
11436
        ADD A,(IY+CHRDN)
11437
        LD L,A
11438
        LD (HL),C
11439
        RET
11440
 
11441
MUL64   LD B,A
69 savelij 11442
        LD HL,0X0000
11443
        AND 0X0F
36 savelij 11444
        JR Z,MUL64_F
11445
        SLA B
11446
        SLA B
11447
        JP MUL64_E
11448
 
11449
MUL64_A ADD HL,DE
11450
MUL64_E SRL D
11451
        RR E
11452
        SLA B
11453
        JP C,MUL64_A
11454
        JP NZ,MUL64_E
11455
        EX DE,HL
11456
        RET
11457
 
11458
MUL64_F LD A,B
11459
        OR A
11460
        JR Z,MUL64_S
11461
        SRL D
11462
        RR E
69 savelij 11463
        CP 0X20
36 savelij 11464
        RET Z
11465
        LD L,E
11466
        LD H,D
11467
        SRL D
11468
        RR E
69 savelij 11469
        CP 0X10
36 savelij 11470
        RET Z
11471
        ADD HL,DE
11472
MUL64_S EX DE,HL
11473
        RET
11474
 
11475
;INCLUDE "TEST_H.a80"
11476
 
11477
TCOM    IN A,(ZXSTAT)
11478
        RRCA
11479
        JR NC,TCOM
11480
TCOM_   IN A,(ZXCMD)
69 savelij 11481
        CP 0X20
36 savelij 11482
        JP NC,COMINT2
69 savelij 11483
        CP 0X01
36 savelij 11484
        JR Z,TCOM
11485
        OUT (CLRCBIT),A
11486
        LD HL,TCOMTB
11487
        ADD A,A
11488
        ADD A,L
11489
        LD L,A
11490
        LD A,(HL)
11491
        INC L
11492
        LD H,(HL)
11493
        LD L,A
11494
        JP (HL)
11495
 
11496
TCOM2   LD HL,DAC0
69 savelij 11497
        LD A,0X3F
36 savelij 11498
        OUT (VOL1),A
11499
TCOMDAC LD (HL),0
11500
        LD A,(HL)
11501
        LD IY,TCONT1
11502
        JP TWAIT
11503
 
69 savelij 11504
TCONT1  LD (HL),0XFF
36 savelij 11505
        LD A,(HL)
11506
        LD IY,TCOMDAC
11507
        JP TWAIT
11508
 
11509
TCOM3   LD HL,DAC1
69 savelij 11510
        LD A,0X3F
36 savelij 11511
        OUT (VOL2),A
11512
        JR TCOMDAC
11513
 
11514
TCOM4   LD HL,DAC2
69 savelij 11515
        LD A,0X3F
36 savelij 11516
        OUT (VOL3),A
11517
        JR TCOMDAC
11518
 
11519
TCOM5   LD HL,DAC3
69 savelij 11520
        LD A,0X3F
36 savelij 11521
        OUT (VOL4),A
11522
        JR TCOMDAC
11523
 
11524
TCOM6   XOR A
11525
        OUT (ZXDATWR),A
11526
        LD IY,TCONT2
11527
        JP TWAIT
11528
 
69 savelij 11529
TCONT2  LD A,0XFF
36 savelij 11530
        OUT (ZXDATWR),A
11531
        LD IY,TCOM6
11532
        JP TWAIT
11533
 
11534
TCOM7   LD C,VOL1
11535
        LD HL,DAC0
69 savelij 11536
        LD (HL),0XFF
36 savelij 11537
        LD A,(HL)
69 savelij 11538
TCOMVOL LD A,0X00
36 savelij 11539
        OUT (C),A
11540
        LD IY,TCONT3
11541
        JP TWAIT
11542
 
69 savelij 11543
TCONT3  LD A,0XFF
36 savelij 11544
        OUT (C),A
11545
        LD IY,TCOMVOL
11546
        JP TWAIT
11547
 
11548
TCOM8   LD C,VOL2
11549
        LD HL,DAC1
69 savelij 11550
        LD (HL),0XFF
36 savelij 11551
        LD A,(HL)
11552
        JR TCOMVOL
11553
 
11554
TCOM9   LD C,VOL3
11555
        LD HL,DAC2
69 savelij 11556
        LD (HL),0XFF
36 savelij 11557
        LD A,(HL)
11558
        JR TCOMVOL
11559
 
11560
TCOMA   LD C,VOL4
11561
        LD HL,DAC3
69 savelij 11562
        LD (HL),0XFF
36 savelij 11563
        LD A,(HL)
11564
        JR TCOMVOL
11565
 
11566
TCOMB   LD HL,DAC0
11567
        LD C,VOL1
69 savelij 11568
TCOMTST LD B,0X3F
36 savelij 11569
TCOMT4  OUT (C),B
11570
        LD D,114
69 savelij 11571
TCOMT5  LD (HL),0X00
36 savelij 11572
        LD A,(HL)
11573
        XOR A
11574
TCOMT6  DEC A
11575
        JR NZ,TCOMT6
69 savelij 11576
        LD (HL),0XFF
36 savelij 11577
        LD A,(HL)
11578
        XOR A
11579
TCOMT7  DEC A
11580
        JR NZ,TCOMT7
11581
        DEC D
11582
        JR NZ,TCOMT5
11583
        DEC B
11584
        JP P,TCOMT4
11585
        IN A,(ZXSTAT)
11586
        RRCA
11587
        JR NC,TCOMTST
11588
        JP TCOM_
11589
 
11590
TCOMC   LD HL,DAC1
11591
        LD C,VOL2
11592
        JP TCOMTST
11593
 
11594
TCOMD   LD HL,DAC2
11595
        LD C,VOL3
11596
        JP TCOMTST
11597
 
11598
TCOME   LD HL,DAC3
11599
        LD C,VOL4
11600
        JP TCOMTST
11601
 
69 savelij 11602
TCOMF   LD A,0X3F
36 savelij 11603
        OUT (VOL1),A
11604
        OUT (VOL2),A
11605
        OUT (VOL3),A
11606
        OUT (VOL4),A
69 savelij 11607
        LD B,0X00
36 savelij 11608
        LD L,B
69 savelij 11609
TCONT8  LD H,HIGH (DAC0)
36 savelij 11610
        LD (HL),B
11611
        LD A,(HL)
11612
        INC H
11613
        LD (HL),B
11614
        LD A,(HL)
11615
        INC H
11616
        LD (HL),B
11617
        LD A,(HL)
11618
        INC H
11619
        LD (HL),B
11620
        LD A,(HL)
11621
        DJNZ TCONT8
11622
        IN A,(ZXSTAT)
11623
        RRCA
11624
        JP NC,TCONT8
11625
        JP TCOM_
11626
 
11627
TCOM10  IN A,(ZXDATRD)
11628
        OUT (ZXDATWR),A
11629
        JP TCOM_
11630
 
11631
TCOM11  IN A,(ZXDATRD)
11632
        JP TCOM_
11633
 
11634
TCOM12  LD HL,DAC0
69 savelij 11635
TCONT9  LD A,0X3F
36 savelij 11636
        OUT (VOL1),A
11637
        OUT (VOL2),A
11638
        OUT (VOL3),A
11639
        OUT (VOL4),A
11640
TCONTA  IN A,(ZXDATRD)
11641
        LD (HL),A
11642
        LD A,(HL)
11643
TCONTB  DJNZ TCONTB
69 savelij 11644
        LD (HL),0X00
36 savelij 11645
        LD A,(HL)
11646
TCONTC  DJNZ TCONTC
11647
        IN A,(ZXSTAT)
11648
        RRCA
11649
        JP C,TCOM_
11650
        JP TCONTA
11651
 
11652
TCOM13  LD HL,DAC1
11653
        JR TCONT9
11654
 
11655
TCOM14  LD HL,DAC2
11656
        JR TCONT9
11657
 
11658
TCOM15  LD HL,DAC3
11659
        JR TCONT9
11660
 
69 savelij 11661
TWAIT   LD B,0X04
36 savelij 11662
TWAIT1  LD DE,38686
11663
TWAIT2  IN A,(ZXSTAT)
11664
        RRCA
11665
        JP C,TCOM_
11666
        DEC DE
11667
        LD A,D
11668
        OR E
11669
        JR NZ,TWAIT2
11670
        DJNZ TWAIT2
11671
        JP (IY)
11672
 
11673
;INCLUDE "TABLES_H.a80"
11674
 
11675
        align 256
11676
 
69 savelij 11677
VIBTB   db 0X00,0X18,0X31,0X4A,0X61,0X78,0X8D,0XA1
11678
        db 0XB4,0XC5,0XD4,0XE0,0XEB,0XF4,0XFA,0XFD
11679
        db 0XFF,0XFD,0XFA,0XF4,0XEB,0XE0,0XD4,0XC5
11680
        db 0XB4,0XA1,0X8D,0X78,0X61,0X4A,0X31,0X18
36 savelij 11681
 
69 savelij 11682
COMTABH DB LOW (COM20),LOW (COM21),LOW (COM22),LOW (COM23),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0X20
11683
        DB LOW (COMHZ),LOW (COMHZ),LOW (COM2A),LOW (COM2B),LOW (COM2C),LOW (COM2D),LOW (COM2E),LOW (COM2F)  ;0X28
11684
        DB LOW (COM30),LOW (COM31),LOW (COM32),LOW (COM33),LOW (COM34),LOW (COM35),LOW (COM36),LOW (COM37)  ;0X30
11685
        DB LOW (COM38),LOW (COM39),LOW (COM3A),LOW (COM3B),LOW (COM3C),LOW (COM3D),LOW (COM3E),LOW (COM3F)  ;0X38
11686
        DB LOW (COM40),LOW (COM41),LOW (COM42),LOW (COMHZ),LOW (COMHZ),LOW (COM45),LOW (COM46),LOW (COM47)  ;0X40
11687
        DB LOW (COM48),LOW (COM49),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0X48
11688
        DB LOW (COM50),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0X50
11689
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0X58
11690
        DB LOW (COM60),LOW (COM61),LOW (COM62),LOW (COM63),LOW (COM64),LOW (COM65),LOW (COM66),LOW (COM67)  ;0X60
11691
        DB LOW (COM68),LOW (COM69),LOW (COM6A),LOW (COM6B),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0X68 patched
11692
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0X70
11693
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0X78
11694
        DB LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80)  ;0X80
11695
        DB LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80)  ;0X88
11696
        DB LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80)  ;0X90
11697
        DB LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80),LOW (COM80)  ;0X98
11698
        DB LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0)  ;0XA0
11699
        DB LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0),LOW (COMA0)  ;0XA8
11700
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0XB0
11701
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0XB8
11702
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0XC0
11703
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0XC8
11704
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0XD0
11705
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0XD8
11706
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0XE0
11707
        DB LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ),LOW (COMHZ)  ;0XE8
36 savelij 11708
 
69 savelij 11709
        DUPL 0X10,0
11710
        DUPL 0X20,0
36 savelij 11711
 
69 savelij 11712
        DB HIGH (COM20),HIGH (COM21),HIGH (COM22),HIGH (COM23),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0X20
11713
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COM2A),HIGH (COM2B),HIGH (COM2C),HIGH (COM2D),HIGH (COM2E),HIGH (COM2F)  ;0X28
11714
        DB HIGH (COM30),HIGH (COM31),HIGH (COM32),HIGH (COM33),HIGH (COM34),HIGH (COM35),HIGH (COM36),HIGH (COM37)  ;0X30
11715
        DB HIGH (COM38),HIGH (COM39),HIGH (COM3A),HIGH (COM3B),HIGH (COM3C),HIGH (COM3D),HIGH (COM3E),HIGH (COM3F)  ;0X38
11716
        DB HIGH (COM40),HIGH (COM41),HIGH (COM42),HIGH (COMHZ),HIGH (COMHZ),HIGH (COM45),HIGH (COM46),HIGH (COM47)  ;0X40
11717
        DB HIGH (COM48),HIGH (COM49),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0X48
11718
        DB HIGH (COM50),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0X50
11719
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0X58
11720
        DB HIGH (COM60),HIGH (COM61),HIGH (COM62),HIGH (COM63),HIGH (COM64),HIGH (COM65),HIGH (COM66),HIGH (COM67)  ;0X60
11721
        DB HIGH (COM68),HIGH (COM69),HIGH (COM6A),HIGH (COM6B),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0X68 patched
11722
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0X70
11723
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0X78
11724
        DB HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80)  ;0X80
11725
        DB HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80)  ;0X88
11726
        DB HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80)  ;0X90
11727
        DB HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80),HIGH (COM80)  ;0X98
11728
        DB HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0)  ;0XA0
11729
        DB HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0),HIGH (COMA0)  ;0XA8
11730
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0XB0
11731
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0XB8
11732
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0XC0
11733
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0XC8
11734
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0XD0
11735
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0XD8
11736
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0XE0
11737
        DB HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ),HIGH (COMHZ)  ;0XE8
36 savelij 11738
 
69 savelij 11739
        DUPL 0X10,0
36 savelij 11740
 
11741
FXJP1   DW FXNOP,FXNOP,FXNOP,FXNOP,FXNOP,FXNOP,FXNOP,FXNOP
11742
        DW FXNOP,FXNOP,FXNOP,FXB  ,FXC  ,FXD  ,FXE  ,FXF
11743
 
11744
        DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11745
        DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11746
 
11747
FXJP2   DW FX0  ,FX1  ,FX2  ,FX3  ,FX4  ,FX5  ,FX6  ,FX7
11748
        DW FXRET,FXRET,FXA  ,FXRET,FXRET,FXRET,FXE_ ,FXRET
11749
 
11750
        DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11751
        DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11752
 
11753
FXEJP1  DW FXE0,FX1,FX2,FXE3,FXE4,FXE5,FXE6,FXE7
11754
        DW FXRET,FXE9,FXEA,FXA,FXEC,FXED,FXEE,FXRET
11755
 
11756
FXEJP2  DW FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET,FXRET
11757
        DW FXRET,FXE9,FXRET,FXRET,FXEC,FXED,FXRET,FXRET
11758
 
11759
TCOMTB  DEFW TCOM,TCOM,TCOM2,TCOM3,TCOM4,TCOM5,TCOM6,TCOM7
11760
        DEFW TCOM8,TCOM9,TCOMA,TCOMB,TCOMC,TCOMD,TCOME,TCOMF
11761
        DEFW TCOM10,TCOM11,TCOM12,TCOM13,TCOM14,TCOM15,TCOM,TCOM
11762
        DEFW TCOM,TCOM,TCOM,TCOM,TCOM,TCOM,TCOM,TCOM
11763
 
11764
;INCLUDE "DIHO.a80"
11765
;RETURN: E - NOTE
11766
 
11767
NOTEID  LD HL,AMINOTE
11768
        CALL DIH
11769
        LD E,A
11770
        RET
11771
 
11772
;RETURN: E - NOTE
11773
 
11774
NOTEGET LD E,(IY+CHNOTE)
11775
        LD A,E
11776
        INC A
11777
        RET NZ
11778
NOTEFND LD HL,AMFRQTB
11779
        LD A,(IY+CHFINE)
11780
        RRA
69 savelij 11781
        AND 0X0F
36 savelij 11782
        JR Z,NOTEFN1
11783
        LD C,A
11784
        ADD A,A
11785
        ADD A,C
11786
        ADD A,A
11787
        ADD A,A
11788
        ADD A,A
11789
        LD B,0
11790
        RL B
11791
        ADD A,A
11792
        RL B
11793
        ADD A,A
11794
        RL B
11795
        LD C,A
11796
        ADD HL,BC
11797
NOTEFN1 LD E,(IY+CHPERL)
11798
        LD D,(IY+CHPERH)
11799
        CALL DIH
11800
        LD E,A
11801
        RET
11802
 
69 savelij 11803
DIH     LD BC,0X005F
36 savelij 11804
        PUSH HL
11805
        INC HL
11806
        LD A,(HL)
11807
        DEC HL
11808
        CP D
11809
        JR C,DIHRGR
11810
        JR NZ,DIH2
11811
        LD A,(HL)
11812
        CP E
11813
        JR C,DIHRGR
11814
        JR NZ,DIH2
11815
        POP HL
11816
        XOR A
11817
        SCF
11818
        RET
11819
 
11820
DIHRGR  LD E,(HL)
11821
        INC HL
11822
        LD D,(HL)
11823
        POP HL
11824
        XOR A
11825
        RET
11826
 
69 savelij 11827
DIH2    LD A,0XBF
36 savelij 11828
        ADD A,L
11829
        LD L,A
11830
        LD A,H
11831
        ADC A,B
11832
        LD H,A
11833
        LD A,(HL)
11834
        DEC HL
11835
        CP D
11836
        JR C,DIH3
11837
        JR NZ,DIHRLO
11838
        LD A,(HL)
11839
        CP E
11840
        JR C,DIH3
11841
        JR NZ,DIHRLO
11842
        POP HL
11843
        LD A,C
11844
        SCF
11845
        RET
11846
 
11847
DIHRLO  LD E,(HL)
11848
        INC HL
11849
        LD D,(HL)
11850
        POP HL
11851
        LD A,C
11852
        OR A
11853
        RET
11854
 
11855
DIH3    POP HL
11856
DIHLP   PUSH HL
11857
        LD A,B
11858
        ADD A,C
69 savelij 11859
        AND 0XFE
36 savelij 11860
        ADD A,L
11861
        LD L,A
11862
        LD A,H
69 savelij 11863
        ADC A,0X00
36 savelij 11864
        LD H,A
11865
        INC HL
11866
        LD A,(HL)
11867
        DEC HL
11868
        CP D
11869
        JR C,DIHGR
11870
        JR NZ,DIHLO
11871
        LD A,(HL)
11872
        CP E
11873
        JR C,DIHGR
11874
        JR NZ,DIHLO
11875
        POP HL
11876
        LD A,B
11877
        ADD A,C
11878
        SRL A
11879
        SCF
11880
        RET
11881
 
11882
DIHGR   LD A,B
11883
        ADD A,C
11884
        SRL A
11885
        LD C,A
11886
        POP HL
11887
        JP DIHLP
11888
 
11889
DIHLO   LD A,B
11890
        ADD A,C
11891
        SRL A
11892
        CP B
11893
        LD B,A
11894
        JR Z,DIHMID
11895
        POP HL
11896
        JP DIHLP
11897
 
11898
DIHMID  PUSH HL
11899
        PUSH BC
11900
        LD A,(HL)
11901
        INC HL
11902
        SUB E
11903
        LD C,A
11904
        LD A,(HL)
11905
        INC HL
11906
        SBC A,D
11907
        LD B,A
11908
        LD A,(HL)
11909
        INC HL
11910
        LD H,(HL)
11911
        LD L,A
11912
        EX DE,HL
11913
        OR A
11914
        SBC HL,DE
11915
        LD A,H
11916
        CP B
11917
        JR C,DIHFLO
11918
        JR NZ,DIHFGR
11919
        LD A,L
11920
        CP C
11921
        JR C,DIHFLO
11922
        JR NZ,DIHFGR
11923
DIHFLO  POP BC
11924
        POP HL
11925
        POP HL
11926
        LD A,C
11927
        OR A
11928
        RET
11929
 
11930
DIHFGR  POP BC
11931
        POP HL
11932
        LD E,(HL)
11933
        INC HL
11934
        LD D,(HL)
11935
        POP HL
11936
        LD A,B
11937
        RET
11938
 
69 savelij 11939
AMINOTE dw 0X1AC0,0X1940,0X17D0,0X1680,0X1530,0X1400,0X12E0,0X11D0,0X10D0,0X0FE0,0X0F00,0X0E28;C-0
11940
        dw 0X0D60,0X0CA0,0X0BE8,0X0B40,0X0A98,0X0A00,0X0970,0X08E8,0X0868,0X07F0,0X0780,0X0714;C-1
11941
        dw 0X06B0,0X0650,0X05F4,0X05A0,0X054C,0X0500,0X04B8,0X0474,0X0434,0X03F8,0X03C0,0X038A;C-2
11942
        dw 0X0358,0X0328,0X02FA,0X02D0,0X02A6,0X0280,0X025C,0X023A,0X021A,0X01FC,0X01E0,0X01C5;C-3
11943
        dw 0X01AC,0X0194,0X017D,0X0168,0X0153,0X0140,0X012E,0X011D,0X010D,0X00FE,0X00F0,0X00E2;C-4
11944
        dw 0X00D6,0X00CA,0X00BE,0X00B4,0X00AA,0X00A0,0X0097,0X008F,0X0087,0X007F,0X0078,0X0071;C-5
11945
        dw 0X006B,0X0065,0X005F,0X005A,0X0055,0X0050,0X004B,0X0047,0X0043,0X003F,0X003C,0X0038;C-6
11946
        dw 0X0035,0X0032,0X002F,0X002D,0X002A,0X0028,0X0025,0X0023,0X0021,0X001F,0X001E,0X001C;C-7
36 savelij 11947
___END
11948
 
69 savelij 11949
                DUPL GSRomBaseH+0X2000-$,0XFF
11950
                PHASE GSRomBaseH+0X2000
36 savelij 11951
 
11952
;INCLUDE "_GSFRQTB.a80" ;patched
11953
GSFRQTB
11954
;00
69 savelij 11955
        dw 0X4854,0X4446,0X4071,0X3CD1,0X3968,0X362F,0X3324,0X3045,0X2D91,0X2B02,0X2897,0X2652
11956
        dw 0X242A,0X2223,0X2037,0X1E68,0X1CB5,0X1B17,0X1992,0X1822,0X16C8,0X1581,0X144D,0X1329
11957
        dw 0X1215,0X1111,0X101B,0X0F35,0X0E5A,0X0D8D,0X0CCA,0X0C12,0X0B62,0X0AC0,0X0A26,0X0994
11958
        dw 0X090A,0X0888,0X080F,0X079A,0X072C,0X06C5,0X0663,0X0607,0X05B1,0X0560,0X0511,0X04C8
11959
        dw 0X0485,0X0444,0X0406,0X03CD,0X0397,0X0363,0X0333,0X0305,0X02DA,0X02AE,0X0288,0X0265
11960
        dw 0X0242,0X0222,0X0204,0X01E6,0X01CB,0X01B0,0X0198,0X0182,0X016D,0X0157,0X0144,0X0131
11961
        dw 0X0121,0X0111,0X0100,0X00F3,0X00E5,0X00D8,0X00CD,0X00BF,0X00B5,0X00AD,0X00A2,0X009A
11962
        dw 0X0092,0X0087,0X0081,0X0079,0X0071,0X006C,0X0066,0X0061,0X005B,0X0056,0X0051,0X004B
36 savelij 11963
;01
69 savelij 11964
        dw 0X47D0,0X43C7,0X3FFA,0X3C62,0X38FE,0X35CB,0X32C6,0X2FEE,0X2D3D,0X2AB4,0X284E,0X260B
11965
        dw 0X23E6,0X21E5,0X1FFB,0X1E32,0X1C7F,0X1AE7,0X1964,0X17F7,0X169D,0X1558,0X1427,0X1305
11966
        dw 0X11F4,0X10F1,0X0FFD,0X0F18,0X0E3F,0X0D72,0X0CB2,0X0BFA,0X0B4F,0X0AAD,0X0A13,0X0981
11967
        dw 0X08FA,0X0878,0X07FE,0X078D,0X0721,0X06BA,0X0659,0X05FD,0X05A6,0X0555,0X0509,0X04C0
11968
        dw 0X047D,0X043C,0X0400,0X03C5,0X038F,0X035B,0X032B,0X02FF,0X02D4,0X02AC,0X0283,0X0260
11969
        dw 0X023D,0X021F,0X01FF,0X01E4,0X01C8,0X01AD,0X0195,0X017F,0X016A,0X0154,0X0141,0X0131
11970
        dw 0X011E,0X010E,0X0100,0X00F0,0X00E3,0X00D8,0X00CA,0X00BF,0X00B5,0X00AA,0X00A2,0X0097
11971
        dw 0X008F,0X0087,0X007F,0X0079,0X0071,0X006C,0X0066,0X005E,0X0059,0X0056,0X0051,0X004B
36 savelij 11972
;02
69 savelij 11973
        dw 0X474C,0X434B,0X3F83,0X3BF3,0X3895,0X356A,0X326A,0X2F95,0X2CE9,0X2A63,0X2802,0X25C5
11974
        dw 0X23A6,0X21A4,0X1FC2,0X1DF9,0X1C4C,0X1AB3,0X1933,0X17C9,0X1674,0X1532,0X1401,0X12E2
11975
        dw 0X11D1,0X10D3,0X0FE0,0X0EFC,0X0E24,0X0D59,0X0C99,0X0BE4,0X0B3A,0X0A98,0X0A00,0X0971
11976
        dw 0X08EA,0X0868,0X07F1,0X077D,0X0713,0X06AC,0X064E,0X05F2,0X059E,0X054D,0X0501,0X04B8
11977
        dw 0X0475,0X0434,0X03F8,0X03BF,0X0389,0X0356,0X0325,0X02FA,0X02CF,0X02A6,0X0280,0X025A
11978
        dw 0X023A,0X021A,0X01FC,0X01DE,0X01C3,0X01AB,0X0192,0X017D,0X0167,0X0152,0X013F,0X012E
11979
        dw 0X011B,0X010E,0X00FE,0X00F0,0X00E3,0X00D5,0X00CA,0X00BD,0X00B2,0X00AA,0X009F,0X0097
11980
        dw 0X008F,0X0087,0X007F,0X0076,0X0071,0X006C,0X0064,0X005E,0X0059,0X0053,0X0051,0X004B
36 savelij 11981
;03
69 savelij 11982
        dw 0X46C7,0X42CE,0X3F0E,0X3B85,0X382E,0X3506,0X320E,0X2F3E,0X2C98,0X2A17,0X27B9,0X257F
11983
        dw 0X2365,0X2168,0X1F87,0X1DC3,0X1C15,0X1A83,0X1905,0X179E,0X164C,0X150A,0X13DB,0X12BF
11984
        dw 0X11B1,0X10B3,0X0FC5,0X0EE1,0X0E0C,0X0D41,0X0C84,0X0BCF,0X0B24,0X0A85,0X09ED,0X095E
11985
        dw 0X08D9,0X085A,0X07E1,0X076F,0X0706,0X06A2,0X0640,0X05E7,0X0593,0X0542,0X04F6,0X04B0
11986
        dw 0X046C,0X042C,0X03F0,0X03B7,0X0381,0X0351,0X0320,0X02F5,0X02C9,0X02A1,0X027B,0X0258
11987
        dw 0X0235,0X0217,0X01F9,0X01DB,0X01C0,0X01A8,0X0190,0X017A,0X0164,0X0152,0X013F,0X012C
11988
        dw 0X011B,0X010B,0X00FB,0X00ED,0X00E0,0X00D2,0X00C8,0X00BD,0X00B2,0X00A7,0X009F,0X0094
11989
        dw 0X008C,0X0084,0X007F,0X0076,0X0071,0X0069,0X0064,0X005E,0X0059,0X0053,0X004E,0X004B
36 savelij 11990
;04
69 savelij 11991
        dw 0X4645,0X4255,0X3E9A,0X3B18,0X37C7,0X34A4,0X31AF,0X2EE5,0X2C44,0X29C9,0X2770,0X2538
11992
        dw 0X2324,0X212A,0X1F4E,0X1D8B,0X1BE2,0X1A52,0X18D7,0X1772,0X1623,0X14E4,0X13B8,0X129C
11993
        dw 0X1190,0X1095,0X0FA7,0X0EC6,0X0DF1,0X0D29,0X0C6B,0X0BB9,0X0B11,0X0A72,0X09DA,0X094E
11994
        dw 0X08C9,0X084A,0X07D3,0X0762,0X06F8,0X0694,0X0635,0X05DC,0X0588,0X0537,0X04EE,0X04A8
11995
        dw 0X0464,0X0423,0X03E8,0X03B2,0X037C,0X034B,0X031A,0X02EF,0X02C4,0X029B,0X0276,0X0252
11996
        dw 0X0232,0X0211,0X01F4,0X01D9,0X01BE,0X01A5,0X018D,0X0177,0X0162,0X014F,0X013C,0X0129
11997
        dw 0X0119,0X0108,0X00FB,0X00EB,0X00E0,0X00D2,0X00C8,0X00BA,0X00AF,0X00A7,0X009C,0X0094
11998
        dw 0X008C,0X0084,0X007C,0X0076,0X006E,0X0069,0X0064,0X005E,0X0059,0X0053,0X004E,0X004B
36 savelij 11999
;05
69 savelij 12000
        dw 0X45C3,0X41D8,0X3E29,0X3AAA,0X3761,0X3443,0X3156,0X2E8F,0X2BF3,0X297A,0X2727,0X24F5
12001
        dw 0X22E3,0X20EC,0X1F13,0X1D55,0X1BAF,0X1A21,0X18A9,0X1747,0X15FB,0X14BE,0X1395,0X1279
12002
        dw 0X1170,0X1077,0X0F89,0X0EAB,0X0DD8,0X0D10,0X0C56,0X0BA3,0X0AFC,0X0A5F,0X09CA,0X093E
12003
        dw 0X08B9,0X083A,0X07C6,0X0754,0X06EB,0X0689,0X062B,0X05D1,0X057E,0X052F,0X04E3,0X049D
12004
        dw 0X045C,0X041E,0X03E3,0X03AA,0X0376,0X0343,0X0315,0X02EA,0X02BF,0X0296,0X0273,0X0250
12005
        dw 0X022D,0X020F,0X01F1,0X01D6,0X01BB,0X01A3,0X018A,0X0175,0X015F,0X014C,0X0139,0X0126
12006
        dw 0X0116,0X0106,0X00F8,0X00EB,0X00DD,0X00D0,0X00C5,0X00BA,0X00AF,0X00A4,0X009C,0X0094
12007
        dw 0X008C,0X0084,0X007C,0X0074,0X006E,0X0069,0X0061,0X005B,0X0059,0X0053,0X004E,0X0049
36 savelij 12008
;06
69 savelij 12009
        dw 0X4544,0X4161,0X3DB4,0X3A3D,0X36FA,0X33E4,0X30FA,0X2E3B,0X2BA2,0X292E,0X26DE,0X24B1
12010
        dw 0X22A2,0X20B0,0X1EDA,0X1D1E,0X1B7B,0X19F1,0X187B,0X171C,0X15D2,0X1498,0X136F,0X1258
12011
        dw 0X114F,0X1057,0X0F6E,0X0E90,0X0DBD,0X0CF8,0X0C3D,0X0B8E,0X0AE9,0X0A4C,0X09B7,0X092B
12012
        dw 0X08A9,0X082C,0X07B5,0X0747,0X06E0,0X067C,0X0620,0X05C7,0X0573,0X0524,0X04DB,0X0495
12013
        dw 0X0454,0X0416,0X03DA,0X03A4,0X036E,0X033E,0X0310,0X02E4,0X02B9,0X0293,0X026D,0X024A
12014
        dw 0X022A,0X0209,0X01EE,0X01D1,0X01B8,0X01A0,0X0188,0X0172,0X015C,0X0149,0X0136,0X0126
12015
        dw 0X0113,0X0106,0X00F6,0X00E8,0X00DB,0X00D0,0X00C2,0X00B7,0X00AF,0X00A4,0X009C,0X0092
12016
        dw 0X0089,0X0081,0X007C,0X0074,0X006E,0X0066,0X0061,0X005B,0X0056,0X0051,0X004E,0X0049
36 savelij 12017
;07
69 savelij 12018
        dw 0X44C3,0X40E8,0X3D43,0X39D4,0X3693,0X3383,0X30A1,0X2DE4,0X2B51,0X28E3,0X2698,0X246E
12019
        dw 0X2261,0X2075,0X1EA1,0X1CE8,0X1B4B,0X19C3,0X1850,0X16F3,0X15A9,0X1472,0X134C,0X1235
12020
        dw 0X1132,0X1039,0X0F50,0X0E75,0X0DA5,0X0CE0,0X0C28,0X0B78,0X0AD3,0X0A39,0X09A4,0X091A
12021
        dw 0X0899,0X081C,0X07A8,0X0739,0X06D2,0X0671,0X0612,0X05BC,0X056B,0X051C,0X04D3,0X048D
12022
        dw 0X044C,0X040E,0X03D5,0X039C,0X0369,0X0338,0X030A,0X02DF,0X02B4,0X028E,0X0268,0X0248
12023
        dw 0X0224,0X0207,0X01E9,0X01CE,0X01B3,0X019B,0X0185,0X016F,0X015A,0X0147,0X0134,0X0124
12024
        dw 0X0113,0X0103,0X00F6,0X00E8,0X00DB,0X00CD,0X00C2,0X00B7,0X00AD,0X00A2,0X009A,0X0092
12025
        dw 0X0089,0X0081,0X0079,0X0074,0X006C,0X0066,0X0061,0X005B,0X0056,0X0051,0X004E,0X0049
36 savelij 12026
;08
69 savelij 12027
        dw 0X4CA1,0X4854,0X4446,0X4071,0X3CD1,0X3968,0X362F,0X3324,0X3045,0X2D91,0X2B02,0X2897
12028
        dw 0X2652,0X242A,0X2223,0X2037,0X1E68,0X1CB5,0X1B17,0X1992,0X1822,0X16C8,0X1581,0X144D
12029
        dw 0X1329,0X1215,0X1111,0X101B,0X0F35,0X0E5A,0X0D8D,0X0CCA,0X0C12,0X0B62,0X0AC0,0X0A26
12030
        dw 0X0994,0X090A,0X0888,0X080F,0X079A,0X072C,0X06C5,0X0663,0X0607,0X05B1,0X0560,0X0511
12031
        dw 0X04C8,0X0485,0X0444,0X0406,0X03CD,0X0397,0X0363,0X0333,0X0305,0X02DA,0X02AE,0X0288
12032
        dw 0X0265,0X0242,0X0222,0X0204,0X01E6,0X01CB,0X01B0,0X0198,0X0182,0X016D,0X0157,0X0144
12033
        dw 0X0131,0X0121,0X0111,0X0100,0X00F3,0X00E5,0X00D8,0X00CD,0X00BF,0X00B5,0X00AD,0X00A2
12034
        dw 0X009A,0X0092,0X0087,0X0081,0X0079,0X0071,0X006C,0X0066,0X0061,0X005B,0X0056,0X0051
36 savelij 12035
;09
69 savelij 12036
        dw 0X4C14,0X47D0,0X43C7,0X3FFA,0X3C62,0X38FE,0X35CB,0X32C6,0X2FEE,0X2D3D,0X2AB4,0X284E
12037
        dw 0X260B,0X23E6,0X21E5,0X1FFB,0X1E32,0X1C7F,0X1AE7,0X1964,0X17F7,0X169D,0X1558,0X1427
12038
        dw 0X1305,0X11F4,0X10F1,0X0FFD,0X0F18,0X0E3F,0X0D72,0X0CB2,0X0BFA,0X0B4F,0X0AAD,0X0A13
12039
        dw 0X0981,0X08FA,0X0878,0X07FE,0X078D,0X0721,0X06BA,0X0659,0X05FD,0X05A6,0X0555,0X0509
12040
        dw 0X04C0,0X047D,0X043C,0X0400,0X03C5,0X038F,0X035B,0X032B,0X02FF,0X02D4,0X02AC,0X0283
12041
        dw 0X0260,0X023D,0X021F,0X01FF,0X01E4,0X01C8,0X01AD,0X0195,0X017F,0X016A,0X0154,0X0141
12042
        dw 0X0131,0X011E,0X010E,0X0100,0X00F0,0X00E3,0X00D8,0X00CA,0X00BF,0X00B5,0X00AA,0X00A2
12043
        dw 0X0097,0X008F,0X0087,0X007F,0X0079,0X0071,0X006C,0X0066,0X005E,0X0059,0X0056,0X0051
36 savelij 12044
;0A
69 savelij 12045
        dw 0X4B88,0X474C,0X434B,0X3F83,0X3BF3,0X3895,0X356A,0X326A,0X2F95,0X2CE9,0X2A63,0X2802
12046
        dw 0X25C5,0X23A6,0X21A4,0X1FC2,0X1DF9,0X1C4C,0X1AB3,0X1933,0X17C9,0X1674,0X1532,0X1401
12047
        dw 0X12E2,0X11D1,0X10D3,0X0FE0,0X0EFC,0X0E24,0X0D59,0X0C99,0X0BE4,0X0B3A,0X0A98,0X0A00
12048
        dw 0X0971,0X08EA,0X0868,0X07F1,0X077D,0X0713,0X06AC,0X064E,0X05F2,0X059E,0X054D,0X0501
12049
        dw 0X04B8,0X0475,0X0434,0X03F8,0X03BF,0X0389,0X0356,0X0325,0X02FA,0X02CF,0X02A6,0X0280
12050
        dw 0X025A,0X023A,0X021A,0X01FC,0X01DE,0X01C3,0X01AB,0X0192,0X017D,0X0167,0X0152,0X013F
12051
        dw 0X012E,0X011B,0X010E,0X00FE,0X00F0,0X00E3,0X00D5,0X00CA,0X00BD,0X00B2,0X00AA,0X009F
12052
        dw 0X0097,0X008F,0X0087,0X007F,0X0076,0X0071,0X006C,0X0064,0X005E,0X0059,0X0053,0X0051
36 savelij 12053
;0B
69 savelij 12054
        dw 0X4AFE,0X46C7,0X42CE,0X3F0E,0X3B85,0X382E,0X3506,0X320E,0X2F3E,0X2C98,0X2A17,0X27B9
12055
        dw 0X257F,0X2365,0X2168,0X1F87,0X1DC3,0X1C15,0X1A83,0X1905,0X179E,0X164C,0X150A,0X13DB
12056
        dw 0X12BF,0X11B1,0X10B3,0X0FC5,0X0EE1,0X0E0C,0X0D41,0X0C84,0X0BCF,0X0B24,0X0A85,0X09ED
12057
        dw 0X095E,0X08D9,0X085A,0X07E1,0X076F,0X0706,0X06A2,0X0640,0X05E7,0X0593,0X0542,0X04F6
12058
        dw 0X04B0,0X046C,0X042C,0X03F0,0X03B7,0X0381,0X0351,0X0320,0X02F5,0X02C9,0X02A1,0X027B
12059
        dw 0X0258,0X0235,0X0217,0X01F9,0X01DB,0X01C0,0X01A8,0X0190,0X017A,0X0164,0X0152,0X013F
12060
        dw 0X012C,0X011B,0X010B,0X00FB,0X00ED,0X00E0,0X00D2,0X00C8,0X00BD,0X00B2,0X00A7,0X009F
12061
        dw 0X0094,0X008C,0X0084,0X007F,0X0076,0X0071,0X0069,0X0064,0X005E,0X0059,0X0053,0X004E
36 savelij 12062
;0C
69 savelij 12063
        dw 0X4A74,0X4645,0X4255,0X3E9A,0X3B18,0X37C7,0X34A4,0X31AF,0X2EE5,0X2C44,0X29C9,0X2770
12064
        dw 0X2538,0X2324,0X212A,0X1F4E,0X1D8B,0X1BE2,0X1A52,0X18D7,0X1772,0X1623,0X14E4,0X13B8
12065
        dw 0X129C,0X1190,0X1095,0X0FA7,0X0EC6,0X0DF1,0X0D29,0X0C6B,0X0BB9,0X0B11,0X0A72,0X09DA
12066
        dw 0X094E,0X08C9,0X084A,0X07D3,0X0762,0X06F8,0X0694,0X0635,0X05DC,0X0588,0X0537,0X04EE
12067
        dw 0X04A8,0X0464,0X0423,0X03E8,0X03B2,0X037C,0X034B,0X031A,0X02EF,0X02C4,0X029B,0X0276
12068
        dw 0X0252,0X0232,0X0211,0X01F4,0X01D9,0X01BE,0X01A5,0X018D,0X0177,0X0162,0X014F,0X013C
12069
        dw 0X0129,0X0119,0X0108,0X00FB,0X00EB,0X00E0,0X00D2,0X00C8,0X00BA,0X00AF,0X00A7,0X009C
12070
        dw 0X0094,0X008C,0X0084,0X007C,0X0076,0X006E,0X0069,0X0064,0X005E,0X0059,0X0053,0X004E
36 savelij 12071
;0D
69 savelij 12072
        dw 0X49EA,0X45C3,0X41D8,0X3E29,0X3AAA,0X3761,0X3443,0X3156,0X2E8F,0X2BF3,0X297A,0X2727
12073
        dw 0X24F5,0X22E3,0X20EC,0X1F13,0X1D55,0X1BAF,0X1A21,0X18A9,0X1747,0X15FB,0X14BE,0X1395
12074
        dw 0X1279,0X1170,0X1077,0X0F89,0X0EAB,0X0DD8,0X0D10,0X0C56,0X0BA3,0X0AFC,0X0A5F,0X09CA
12075
        dw 0X093E,0X08B9,0X083A,0X07C6,0X0754,0X06EB,0X0689,0X062B,0X05D1,0X057E,0X052F,0X04E3
12076
        dw 0X049D,0X045C,0X041E,0X03E3,0X03AA,0X0376,0X0343,0X0315,0X02EA,0X02BF,0X0296,0X0273
12077
        dw 0X0250,0X022D,0X020F,0X01F1,0X01D6,0X01BB,0X01A3,0X018A,0X0175,0X015F,0X014C,0X0139
12078
        dw 0X0126,0X0116,0X0106,0X00F8,0X00EB,0X00DD,0X00D0,0X00C5,0X00BA,0X00AF,0X00A4,0X009C
12079
        dw 0X0094,0X008C,0X0084,0X007C,0X0074,0X006E,0X0069,0X0061,0X005B,0X0059,0X0053,0X004E
36 savelij 12080
;0E
69 savelij 12081
        dw 0X4963,0X4544,0X4161,0X3DB4,0X3A3D,0X36FA,0X33E4,0X30FA,0X2E3B,0X2BA2,0X292E,0X26DE
12082
        dw 0X24B1,0X22A2,0X20B0,0X1EDA,0X1D1E,0X1B7B,0X19F1,0X187B,0X171C,0X15D2,0X1498,0X136F
12083
        dw 0X1258,0X114F,0X1057,0X0F6E,0X0E90,0X0DBD,0X0CF8,0X0C3D,0X0B8E,0X0AE9,0X0A4C,0X09B7
12084
        dw 0X092B,0X08A9,0X082C,0X07B5,0X0747,0X06E0,0X067C,0X0620,0X05C7,0X0573,0X0524,0X04DB
12085
        dw 0X0495,0X0454,0X0416,0X03DA,0X03A4,0X036E,0X033E,0X0310,0X02E4,0X02B9,0X0293,0X026D
12086
        dw 0X024A,0X022A,0X0209,0X01EE,0X01D1,0X01B8,0X01A0,0X0188,0X0172,0X015C,0X0149,0X0136
12087
        dw 0X0126,0X0113,0X0106,0X00F6,0X00E8,0X00DB,0X00D0,0X00C2,0X00B7,0X00AF,0X00A4,0X009C
12088
        dw 0X0092,0X0089,0X0081,0X007C,0X0074,0X006E,0X0066,0X0061,0X005B,0X0056,0X0051,0X004E
36 savelij 12089
;0F
69 savelij 12090
        dw 0X48DC,0X44C3,0X40E8,0X3D43,0X39D4,0X3693,0X3383,0X30A1,0X2DE4,0X2B51,0X28E3,0X2698
12091
        dw 0X246E,0X2261,0X2075,0X1EA1,0X1CE8,0X1B4B,0X19C3,0X1850,0X16F3,0X15A9,0X1472,0X134C
12092
        dw 0X1235,0X1132,0X1039,0X0F50,0X0E75,0X0DA5,0X0CE0,0X0C28,0X0B78,0X0AD3,0X0A39,0X09A4
12093
        dw 0X091A,0X0899,0X081C,0X07A8,0X0739,0X06D2,0X0671,0X0612,0X05BC,0X056B,0X051C,0X04D3
12094
        dw 0X048D,0X044C,0X040E,0X03D5,0X039C,0X0369,0X0338,0X030A,0X02DF,0X02B4,0X028E,0X0268
12095
        dw 0X0248,0X0224,0X0207,0X01E9,0X01CE,0X01B3,0X019B,0X0185,0X016F,0X015A,0X0147,0X0134
12096
        dw 0X0124,0X0113,0X0103,0X00F6,0X00E8,0X00DB,0X00CD,0X00C2,0X00B7,0X00AD,0X00A2,0X009A
12097
        dw 0X0092,0X0089,0X0081,0X0079,0X0074,0X006C,0X0066,0X0061,0X005B,0X0056,0X0051,0X004E
36 savelij 12098
 
12099
;INCLUDE "_AMFRQTB.a80"
69 savelij 12100
AMFRQTB ;EQU 0XEC00
36 savelij 12101
;00
69 savelij 12102
        dw 0X1AC0,0X1940,0X17D5,0X167E,0X153B,0X140A,0X12EA,0X11DA,0X10DA,0X0FE8,0X0F03,0X0E2C
12103
        dw 0X0D60,0X0CA0,0X0BEA,0X0B3F,0X0A9E,0X0A05,0X0975,0X08ED,0X086D,0X07F4,0X0782,0X0716
12104
        dw 0X06B0,0X0650,0X05F5,0X05A0,0X054F,0X0503,0X04BB,0X0477,0X0436,0X03FA,0X03C1,0X038B
12105
        dw 0X0358,0X0328,0X02FB,0X02D0,0X02A7,0X0281,0X025D,0X023B,0X021B,0X01FD,0X01E0,0X01C5
12106
        dw 0X01AC,0X0194,0X017D,0X0168,0X0154,0X0141,0X012F,0X011E,0X010E,0X00FE,0X00F0,0X00E3
12107
        dw 0X00D6,0X00CA,0X00BF,0X00B4,0X00AA,0X00A0,0X0097,0X008F,0X0087,0X007F,0X0078,0X0071
12108
        dw 0X006B,0X0065,0X005F,0X005A,0X0055,0X0050,0X004C,0X0047,0X0043,0X0040,0X003C,0X0039
12109
        dw 0X0036,0X0032,0X0030,0X002D,0X002A,0X0028,0X0026,0X0024,0X0022,0X0020,0X001E,0X001C
36 savelij 12110
;01
69 savelij 12111
        dw 0X1A8F,0X1911,0X17A9,0X1655,0X1514,0X13E5,0X12C7,0X11BA,0X10BB,0X0FCB,0X0EE8,0X0E12
12112
        dw 0X0D47,0X0C89,0X0BD4,0X0B2B,0X0A8A,0X09F3,0X0964,0X08DD,0X085D,0X07E5,0X0774,0X0709
12113
        dw 0X06A4,0X0644,0X05EA,0X0595,0X0545,0X04F9,0X04B2,0X046E,0X042F,0X03F3,0X03BA,0X0384
12114
        dw 0X0352,0X0322,0X02F5,0X02CB,0X02A3,0X027D,0X0259,0X0237,0X0217,0X01F9,0X01DD,0X01C2
12115
        dw 0X01A9,0X0191,0X017B,0X0165,0X0151,0X013E,0X012C,0X011C,0X010C,0X00FD,0X00EE,0X00E1
12116
        dw 0X00D4,0X00C9,0X00BD,0X00B3,0X00A9,0X009F,0X0096,0X008E,0X0086,0X007E,0X0077,0X0071
12117
        dw 0X006A,0X0064,0X005F,0X0059,0X0054,0X0050,0X004B,0X0047,0X0043,0X003F,0X003C,0X0038
12118
        dw 0X0035,0X0032,0X002F,0X002D,0X002A,0X0028,0X0026,0X0023,0X0021,0X0020,0X001E,0X001C
36 savelij 12119
;02
69 savelij 12120
        dw 0X1A5E,0X18E3,0X177D,0X162C,0X14ED,0X13C1,0X12A5,0X1199,0X109C,0X0FAD,0X0ECC,0X0DF8
12121
        dw 0X0D2F,0X0C71,0X0BBF,0X0B16,0X0A77,0X09E0,0X0952,0X08CC,0X084E,0X07D7,0X0766,0X06FC
12122
        dw 0X0697,0X0639,0X05DF,0X058B,0X053B,0X04F0,0X04A9,0X0466,0X0427,0X03EB,0X03B3,0X037E
12123
        dw 0X034C,0X031C,0X02F0,0X02C5,0X029E,0X0278,0X0255,0X0233,0X0214,0X01F6,0X01DA,0X01BF
12124
        dw 0X01A6,0X018E,0X0178,0X0163,0X014F,0X013C,0X012A,0X011A,0X010A,0X00FB,0X00ED,0X00DF
12125
        dw 0X00D3,0X00C7,0X00BC,0X00B1,0X00A7,0X009E,0X0095,0X008D,0X0085,0X007D,0X0076,0X0070
12126
        dw 0X0069,0X0064,0X005E,0X0059,0X0054,0X004F,0X004B,0X0046,0X0042,0X003F,0X003B,0X0038
12127
        dw 0X0035,0X0032,0X002F,0X002C,0X002A,0X0028,0X0025,0X0023,0X0021,0X001F,0X001E,0X001C
36 savelij 12128
;03
69 savelij 12129
        dw 0X1A2D,0X18B5,0X1752,0X1603,0X14C7,0X139C,0X1283,0X1179,0X107E,0X0F91,0X0EB1,0X0DDE
12130
        dw 0X0D17,0X0C5B,0X0BA9,0X0B02,0X0A63,0X09CE,0X0941,0X08BC,0X083F,0X07C8,0X0758,0X06EF
12131
        dw 0X068B,0X062D,0X05D5,0X0581,0X0532,0X04E7,0X04A1,0X045E,0X041F,0X03E4,0X03AC,0X0377
12132
        dw 0X0346,0X0317,0X02EA,0X02C0,0X0299,0X0274,0X0250,0X022F,0X0210,0X01F2,0X01D6,0X01BC
12133
        dw 0X01A3,0X018B,0X0175,0X0160,0X014C,0X013A,0X0128,0X0118,0X0108,0X00F9,0X00EB,0X00DE
12134
        dw 0X00D1,0X00C6,0X00BB,0X00B0,0X00A6,0X009D,0X0094,0X008C,0X0084,0X007D,0X0076,0X006F
12135
        dw 0X0069,0X0063,0X005D,0X0058,0X0053,0X004E,0X004A,0X0046,0X0042,0X003E,0X003B,0X0037
12136
        dw 0X0034,0X0031,0X002F,0X002C,0X002A,0X0027,0X0025,0X0023,0X0021,0X001F,0X001D,0X001C
36 savelij 12137
;04
69 savelij 12138
        dw 0X19FD,0X1888,0X1727,0X15DB,0X14A1,0X1378,0X1260,0X1158,0X105F,0X0F74,0X0E96,0X0DC4
12139
        dw 0X0CFF,0X0C44,0X0B94,0X0AED,0X0A50,0X09BC,0X0930,0X08AC,0X0830,0X07BA,0X074B,0X06E2
12140
        dw 0X067F,0X0622,0X05CA,0X0577,0X0528,0X04DE,0X0498,0X0456,0X0418,0X03DD,0X03A5,0X0371
12141
        dw 0X0340,0X0311,0X02E5,0X02BB,0X0294,0X026F,0X024C,0X022B,0X020C,0X01EE,0X01D3,0X01B9
12142
        dw 0X01A0,0X0188,0X0172,0X015E,0X014A,0X0138,0X0126,0X0116,0X0106,0X00F7,0X00E9,0X00DC
12143
        dw 0X00D0,0X00C4,0X00B9,0X00AF,0X00A5,0X009C,0X0093,0X008B,0X0083,0X007C,0X0075,0X006E
12144
        dw 0X0068,0X0062,0X005D,0X0057,0X0053,0X004E,0X004A,0X0045,0X0041,0X003E,0X003A,0X0037
12145
        dw 0X0034,0X0031,0X002E,0X002C,0X0029,0X0027,0X0025,0X0023,0X0021,0X001F,0X001D,0X001C
36 savelij 12146
;05
69 savelij 12147
        dw 0X19CD,0X185A,0X16FD,0X15B2,0X147B,0X1354,0X123F,0X1138,0X1041,0X0F57,0X0E7B,0X0DAB
12148
        dw 0X0CE7,0X0C2D,0X0B7E,0X0AD9,0X0A3D,0X09AA,0X091F,0X089C,0X0821,0X07AC,0X073E,0X06D5
12149
        dw 0X0673,0X0617,0X05BF,0X056D,0X051F,0X04D5,0X0490,0X044E,0X0410,0X03D6,0X039F,0X036B
12150
        dw 0X033A,0X030B,0X02E0,0X02B6,0X028F,0X026B,0X0248,0X0227,0X0208,0X01EB,0X01CF,0X01B5
12151
        dw 0X019D,0X0186,0X0170,0X015B,0X0148,0X0135,0X0124,0X0114,0X0104,0X00F5,0X00E8,0X00DB
12152
        dw 0X00CE,0X00C3,0X00B8,0X00AE,0X00A4,0X009B,0X0092,0X008A,0X0082,0X007B,0X0074,0X006D
12153
        dw 0X0067,0X0061,0X005C,0X0057,0X0052,0X004D,0X0049,0X0045,0X0041,0X003D,0X003A,0X0037
12154
        dw 0X0034,0X0031,0X002E,0X002B,0X0029,0X0027,0X0024,0X0022,0X0021,0X001F,0X001D,0X001B
36 savelij 12155
;06
69 savelij 12156
        dw 0X199E,0X182E,0X16D2,0X158A,0X1455,0X1331,0X121D,0X1119,0X1023,0X0F3B,0X0E60,0X0D92
12157
        dw 0X0CCF,0X0C17,0X0B69,0X0AC5,0X0A2A,0X0998,0X090E,0X088C,0X0812,0X079E,0X0730,0X06C9
12158
        dw 0X0667,0X060B,0X05B5,0X0563,0X0515,0X04CC,0X0487,0X0446,0X0409,0X03CF,0X0398,0X0364
12159
        dw 0X0334,0X0306,0X02DA,0X02B1,0X028B,0X0266,0X0244,0X0223,0X0204,0X01E7,0X01CC,0X01B2
12160
        dw 0X019A,0X0183,0X016D,0X0159,0X0145,0X0133,0X0122,0X0112,0X0102,0X00F4,0X00E6,0X00D9
12161
        dw 0X00CD,0X00C1,0X00B7,0X00AC,0X00A3,0X009A,0X0091,0X0089,0X0081,0X007A,0X0073,0X006D
12162
        dw 0X0066,0X0061,0X005B,0X0056,0X0051,0X004D,0X0048,0X0044,0X0041,0X003D,0X003A,0X0036
12163
        dw 0X0033,0X0030,0X002E,0X002B,0X0029,0X0026,0X0024,0X0022,0X0020,0X001E,0X001D,0X001B
36 savelij 12164
;07
69 savelij 12165
        dw 0X196E,0X1801,0X16A8,0X1563,0X142F,0X130D,0X11FC,0X10F9,0X1005,0X0F1F,0X0E46,0X0D79
12166
        dw 0X0CB7,0X0C01,0X0B54,0X0AB1,0X0A18,0X0987,0X08FE,0X087D,0X0803,0X0790,0X0723,0X06BC
12167
        dw 0X065C,0X0600,0X05AA,0X0559,0X050C,0X04C3,0X047F,0X043E,0X0401,0X03C8,0X0391,0X035E
12168
        dw 0X032E,0X0300,0X02D5,0X02AC,0X0286,0X0262,0X023F,0X021F,0X0201,0X01E4,0X01C9,0X01AF
12169
        dw 0X0197,0X0180,0X016B,0X0156,0X0143,0X0131,0X0120,0X0110,0X0100,0X00F2,0X00E4,0X00D8
12170
        dw 0X00CB,0X00C0,0X00B5,0X00AB,0X00A1,0X0098,0X0090,0X0088,0X0080,0X0079,0X0072,0X006C
12171
        dw 0X0066,0X0060,0X005B,0X0056,0X0051,0X004C,0X0048,0X0044,0X0040,0X003C,0X0039,0X0036
12172
        dw 0X0033,0X0030,0X002D,0X002B,0X0028,0X0026,0X0024,0X0022,0X0020,0X001E,0X001D,0X001B
36 savelij 12173
;08
69 savelij 12174
        dw 0X1C57,0X1AC0,0X1940,0X17D5,0X167E,0X153B,0X140A,0X12EA,0X11DA,0X10DA,0X0FE8,0X0F03
12175
        dw 0X0E2C,0X0D60,0X0CA0,0X0BEA,0X0B3F,0X0A9E,0X0A05,0X0975,0X08ED,0X086D,0X07F4,0X0782
12176
        dw 0X0716,0X06B0,0X0650,0X05F5,0X05A0,0X054F,0X0503,0X04BB,0X0477,0X0436,0X03FA,0X03C1
12177
        dw 0X038B,0X0358,0X0328,0X02FB,0X02D0,0X02A7,0X0281,0X025D,0X023B,0X021B,0X01FD,0X01E0
12178
        dw 0X01C5,0X01AC,0X0194,0X017D,0X0168,0X0154,0X0141,0X012F,0X011E,0X010E,0X00FE,0X00F0
12179
        dw 0X00E3,0X00D6,0X00CA,0X00BF,0X00B4,0X00AA,0X00A0,0X0097,0X008F,0X0087,0X007F,0X0078
12180
        dw 0X0071,0X006B,0X0065,0X005F,0X005A,0X0055,0X0050,0X004C,0X0047,0X0043,0X0040,0X003C
12181
        dw 0X0039,0X0036,0X0032,0X0030,0X002D,0X002A,0X0028,0X0026,0X0024,0X0022,0X0020,0X001E
36 savelij 12182
;09
69 savelij 12183
        dw 0X1C23,0X1A8F,0X1911,0X17A9,0X1655,0X1514,0X13E5,0X12C7,0X11BA,0X10BB,0X0FCB,0X0EE8
12184
        dw 0X0E12,0X0D47,0X0C89,0X0BD4,0X0B2B,0X0A8A,0X09F3,0X0964,0X08DD,0X085D,0X07E5,0X0774
12185
        dw 0X0709,0X06A4,0X0644,0X05EA,0X0595,0X0545,0X04F9,0X04B2,0X046E,0X042F,0X03F3,0X03BA
12186
        dw 0X0384,0X0352,0X0322,0X02F5,0X02CB,0X02A3,0X027D,0X0259,0X0237,0X0217,0X01F9,0X01DD
12187
        dw 0X01C2,0X01A9,0X0191,0X017B,0X0165,0X0151,0X013E,0X012C,0X011C,0X010C,0X00FD,0X00EE
12188
        dw 0X00E1,0X00D4,0X00C9,0X00BD,0X00B3,0X00A9,0X009F,0X0096,0X008E,0X0086,0X007E,0X0077
12189
        dw 0X0071,0X006A,0X0064,0X005F,0X0059,0X0054,0X0050,0X004B,0X0047,0X0043,0X003F,0X003C
12190
        dw 0X0038,0X0035,0X0032,0X002F,0X002D,0X002A,0X0028,0X0026,0X0023,0X0021,0X0020,0X001E
36 savelij 12191
;0A
69 savelij 12192
        dw 0X1BEF,0X1A5E,0X18E3,0X177D,0X162C,0X14ED,0X13C1,0X12A5,0X1199,0X109C,0X0FAD,0X0ECC
12193
        dw 0X0DF8,0X0D2F,0X0C71,0X0BBF,0X0B16,0X0A77,0X09E0,0X0952,0X08CC,0X084E,0X07D7,0X0766
12194
        dw 0X06FC,0X0697,0X0639,0X05DF,0X058B,0X053B,0X04F0,0X04A9,0X0466,0X0427,0X03EB,0X03B3
12195
        dw 0X037E,0X034C,0X031C,0X02F0,0X02C5,0X029E,0X0278,0X0255,0X0233,0X0214,0X01F6,0X01DA
12196
        dw 0X01BF,0X01A6,0X018E,0X0178,0X0163,0X014F,0X013C,0X012A,0X011A,0X010A,0X00FB,0X00ED
12197
        dw 0X00DF,0X00D3,0X00C7,0X00BC,0X00B1,0X00A7,0X009E,0X0095,0X008D,0X0085,0X007D,0X0076
12198
        dw 0X0070,0X0069,0X0064,0X005E,0X0059,0X0054,0X004F,0X004B,0X0046,0X0042,0X003F,0X003B
12199
        dw 0X0038,0X0035,0X0032,0X002F,0X002C,0X002A,0X0028,0X0025,0X0023,0X0021,0X001F,0X001E
36 savelij 12200
;0B
69 savelij 12201
        dw 0X1BBC,0X1A2D,0X18B5,0X1752,0X1603,0X14C7,0X139C,0X1283,0X1179,0X107E,0X0F91,0X0EB1
12202
        dw 0X0DDE,0X0D17,0X0C5B,0X0BA9,0X0B02,0X0A63,0X09CE,0X0941,0X08BC,0X083F,0X07C8,0X0758
12203
        dw 0X06EF,0X068B,0X062D,0X05D5,0X0581,0X0532,0X04E7,0X04A1,0X045E,0X041F,0X03E4,0X03AC
12204
        dw 0X0377,0X0346,0X0317,0X02EA,0X02C0,0X0299,0X0274,0X0250,0X022F,0X0210,0X01F2,0X01D6
12205
        dw 0X01BC,0X01A3,0X018B,0X0175,0X0160,0X014C,0X013A,0X0128,0X0118,0X0108,0X00F9,0X00EB
12206
        dw 0X00DE,0X00D1,0X00C6,0X00BB,0X00B0,0X00A6,0X009D,0X0094,0X008C,0X0084,0X007D,0X0076
12207
        dw 0X006F,0X0069,0X0063,0X005D,0X0058,0X0053,0X004E,0X004A,0X0046,0X0042,0X003E,0X003B
12208
        dw 0X0037,0X0034,0X0031,0X002F,0X002C,0X002A,0X0027,0X0025,0X0023,0X0021,0X001F,0X001D
36 savelij 12209
;0C
69 savelij 12210
        dw 0X1B89,0X19FD,0X1888,0X1727,0X15DB,0X14A1,0X1378,0X1260,0X1158,0X105F,0X0F74,0X0E96
12211
        dw 0X0DC4,0X0CFF,0X0C44,0X0B94,0X0AED,0X0A50,0X09BC,0X0930,0X08AC,0X0830,0X07BA,0X074B
12212
        dw 0X06E2,0X067F,0X0622,0X05CA,0X0577,0X0528,0X04DE,0X0498,0X0456,0X0418,0X03DD,0X03A5
12213
        dw 0X0371,0X0340,0X0311,0X02E5,0X02BB,0X0294,0X026F,0X024C,0X022B,0X020C,0X01EE,0X01D3
12214
        dw 0X01B9,0X01A0,0X0188,0X0172,0X015E,0X014A,0X0138,0X0126,0X0116,0X0106,0X00F7,0X00E9
12215
        dw 0X00DC,0X00D0,0X00C4,0X00B9,0X00AF,0X00A5,0X009C,0X0093,0X008B,0X0083,0X007C,0X0075
12216
        dw 0X006E,0X0068,0X0062,0X005D,0X0057,0X0053,0X004E,0X004A,0X0045,0X0041,0X003E,0X003A
12217
        dw 0X0037,0X0034,0X0031,0X002E,0X002C,0X0029,0X0027,0X0025,0X0023,0X0021,0X001F,0X001D
36 savelij 12218
;0D
69 savelij 12219
        dw 0X1B56,0X19CD,0X185A,0X16FD,0X15B2,0X147B,0X1354,0X123F,0X1138,0X1041,0X0F57,0X0E7B
12220
        dw 0X0DAB,0X0CE7,0X0C2D,0X0B7E,0X0AD9,0X0A3D,0X09AA,0X091F,0X089C,0X0821,0X07AC,0X073E
12221
        dw 0X06D5,0X0673,0X0617,0X05BF,0X056D,0X051F,0X04D5,0X0490,0X044E,0X0410,0X03D6,0X039F
12222
        dw 0X036B,0X033A,0X030B,0X02E0,0X02B6,0X028F,0X026B,0X0248,0X0227,0X0208,0X01EB,0X01CF
12223
        dw 0X01B5,0X019D,0X0186,0X0170,0X015B,0X0148,0X0135,0X0124,0X0114,0X0104,0X00F5,0X00E8
12224
        dw 0X00DB,0X00CE,0X00C3,0X00B8,0X00AE,0X00A4,0X009B,0X0092,0X008A,0X0082,0X007B,0X0074
12225
        dw 0X006D,0X0067,0X0061,0X005C,0X0057,0X0052,0X004D,0X0049,0X0045,0X0041,0X003D,0X003A
12226
        dw 0X0037,0X0034,0X0031,0X002E,0X002B,0X0029,0X0027,0X0024,0X0022,0X0021,0X001F,0X001D
36 savelij 12227
;0E
69 savelij 12228
        dw 0X1B24,0X199E,0X182E,0X16D2,0X158A,0X1455,0X1331,0X121D,0X1119,0X1023,0X0F3B,0X0E60
12229
        dw 0X0D92,0X0CCF,0X0C17,0X0B69,0X0AC5,0X0A2A,0X0998,0X090E,0X088C,0X0812,0X079E,0X0730
12230
        dw 0X06C9,0X0667,0X060B,0X05B5,0X0563,0X0515,0X04CC,0X0487,0X0446,0X0409,0X03CF,0X0398
12231
        dw 0X0364,0X0334,0X0306,0X02DA,0X02B1,0X028B,0X0266,0X0244,0X0223,0X0204,0X01E7,0X01CC
12232
        dw 0X01B2,0X019A,0X0183,0X016D,0X0159,0X0145,0X0133,0X0122,0X0112,0X0102,0X00F4,0X00E6
12233
        dw 0X00D9,0X00CD,0X00C1,0X00B7,0X00AC,0X00A3,0X009A,0X0091,0X0089,0X0081,0X007A,0X0073
12234
        dw 0X006D,0X0066,0X0061,0X005B,0X0056,0X0051,0X004D,0X0048,0X0044,0X0041,0X003D,0X003A
12235
        dw 0X0036,0X0033,0X0030,0X002E,0X002B,0X0029,0X0026,0X0024,0X0022,0X0020,0X001E,0X001D
36 savelij 12236
;0F
69 savelij 12237
        dw 0X1AF2,0X196E,0X1801,0X16A8,0X1563,0X142F,0X130D,0X11FC,0X10F9,0X1005,0X0F1F,0X0E46
12238
        dw 0X0D79,0X0CB7,0X0C01,0X0B54,0X0AB1,0X0A18,0X0987,0X08FE,0X087D,0X0803,0X0790,0X0723
12239
        dw 0X06BC,0X065C,0X0600,0X05AA,0X0559,0X050C,0X04C3,0X047F,0X043E,0X0401,0X03C8,0X0391
12240
        dw 0X035E,0X032E,0X0300,0X02D5,0X02AC,0X0286,0X0262,0X023F,0X021F,0X0201,0X01E4,0X01C9
12241
        dw 0X01AF,0X0197,0X0180,0X016B,0X0156,0X0143,0X0131,0X0120,0X0110,0X0100,0X00F2,0X00E4
12242
        dw 0X00D8,0X00CB,0X00C0,0X00B5,0X00AB,0X00A1,0X0098,0X0090,0X0088,0X0080,0X0079,0X0072
12243
        dw 0X006C,0X0066,0X0060,0X005B,0X0056,0X0051,0X004C,0X0048,0X0044,0X0040,0X003C,0X0039
12244
        dw 0X0036,0X0033,0X0030,0X002D,0X002B,0X0028,0X0026,0X0024,0X0022,0X0020,0X001E,0X001D
36 savelij 12245
 
12246
;INCLUDE "_AMTOGS.a80" ;patched
69 savelij 12247
;AMTOGS  ;EQU 0XF800
12248
        dw 0X0000,0X0003,0X0005,0X0008,0X000B,0X000E,0X0010,0X0013
12249
        dw 0X0016,0X0018,0X001B,0X001E,0X0020,0X0023,0X0026,0X0029
12250
        dw 0X002B,0X002E,0X0031,0X0033,0X0036,0X0039,0X003B,0X003E
12251
        dw 0X0041,0X0044,0X0046,0X0049,0X004C,0X004E,0X0051,0X0054
12252
        dw 0X0057,0X0059,0X005C,0X005F,0X0061,0X0064,0X0067,0X0069
12253
        dw 0X006C,0X006F,0X0072,0X0074,0X0077,0X007A,0X007C,0X007F
12254
        dw 0X0082,0X0084,0X0087,0X008A,0X008D,0X008F,0X0092,0X0095
12255
        dw 0X0097,0X009A,0X009D,0X00A0,0X00A2,0X00A5,0X00A8,0X00AA
12256
        dw 0X00AD,0X00B0,0X00B2,0X00B5,0X00B8,0X00BB,0X00BD,0X00C0
12257
        dw 0X00C3,0X00C5,0X00C8,0X00CB,0X00CD,0X00D0,0X00D3,0X00D6
12258
        dw 0X00D8,0X00DB,0X00DE,0X00E0,0X00E3,0X00E6,0X00E9,0X00EB
12259
        dw 0X00EE,0X00F1,0X00F3,0X00F6,0X00F9,0X00FB,0X00FE,0X0101
12260
        dw 0X0104,0X0106,0X0109,0X010C,0X010E,0X0111,0X0114,0X0117
12261
        dw 0X0119,0X011C,0X011F,0X0121,0X0124,0X0127,0X0129,0X012C
12262
        dw 0X012F,0X0132,0X0134,0X0137,0X013A,0X013C,0X013F,0X0142
12263
        dw 0X0144,0X0147,0X014A,0X014D,0X014F,0X0152,0X0155,0X0157
12264
        dw 0X015A,0X015D,0X0160,0X0162,0X0165,0X0168,0X016A,0X016D
12265
        dw 0X0170,0X0172,0X0175,0X0178,0X017B,0X017D,0X0180,0X0183
12266
        dw 0X0185,0X0188,0X018B,0X018D,0X0190,0X0193,0X0196,0X0198
12267
        dw 0X019B,0X019E,0X01A0,0X01A3,0X01A6,0X01A9,0X01AB,0X01AE
12268
        dw 0X01B1,0X01B3,0X01B6,0X01B9,0X01BB,0X01BE,0X01C1,0X01C4
12269
        dw 0X01C6,0X01C9,0X01CC,0X01CE,0X01D1,0X01D4,0X01D6,0X01D9
12270
        dw 0X01DC,0X01DF,0X01E1,0X01E4,0X01E7,0X01E9,0X01EC,0X01EF
12271
        dw 0X01F2,0X01F4,0X01F7,0X01FA,0X01FC,0X01FF,0X0202,0X0204
12272
        dw 0X0207,0X020A,0X020D,0X020F,0X0212,0X0215,0X0217,0X021A
12273
        dw 0X021D,0X021F,0X0222,0X0225,0X0228,0X022A,0X022D,0X0230
12274
        dw 0X0232,0X0235,0X0238,0X023B,0X023D,0X0240,0X0243,0X0245
12275
        dw 0X0248,0X024B,0X024D,0X0250,0X0253,0X0256,0X0258,0X025B
12276
        dw 0X025E,0X0260,0X0263,0X0266,0X0269,0X026B,0X026E,0X0271
12277
        dw 0X0273,0X0276,0X0279,0X027B,0X027E,0X0281,0X0284,0X0286
12278
        dw 0X0289,0X028C,0X028E,0X0291,0X0294,0X0296,0X0299,0X029C
12279
        dw 0X029F,0X02A1,0X02A4,0X02A7,0X02A9,0X02AC,0X02AF,0X02B2
12280
        dw 0X02B4,0X02B7,0X02BA,0X02BC,0X02BF,0X02C2,0X02C4,0X02C7
12281
        dw 0X02CA,0X02CD,0X02CF,0X02D2,0X02D5,0X02D7,0X02DA,0X02DD
12282
        dw 0X02DF,0X02E2,0X02E5,0X02E8,0X02EA,0X02ED,0X02F0,0X02F2
12283
        dw 0X02F5,0X02F8,0X02FB,0X02FD,0X0300,0X0303,0X0305,0X0308
12284
        dw 0X030B,0X030D,0X0310,0X0313,0X0316,0X0318,0X031B,0X031E
12285
        dw 0X0320,0X0323,0X0326,0X0328,0X032B,0X032E,0X0331,0X0333
12286
        dw 0X0336,0X0339,0X033B,0X033E,0X0341,0X0344,0X0346,0X0349
12287
        dw 0X034C,0X034E,0X0351,0X0354,0X0356,0X0359,0X035C,0X035F
12288
        dw 0X0361,0X0364,0X0367,0X0369,0X036C,0X036F,0X0371,0X0374
12289
        dw 0X0377,0X037A,0X037C,0X037F,0X0382,0X0384,0X0387,0X038A
12290
        dw 0X038D,0X038F,0X0392,0X0395,0X0397,0X039A,0X039D,0X039F
12291
        dw 0X03A2,0X03A5,0X03A8,0X03AA,0X03AD,0X03B0,0X03B2,0X03B5
12292
        dw 0X03B8,0X03BB,0X03BD,0X03C0,0X03C3,0X03C5,0X03C8,0X03CB
12293
        dw 0X03CD,0X03D0,0X03D3,0X03D6,0X03D8,0X03DB,0X03DE,0X03E0
12294
        dw 0X03E3,0X03E6,0X03E8,0X03EB,0X03EE,0X03F1,0X03F3,0X03F6
12295
        dw 0X03F9,0X03FB,0X03FE,0X0401,0X0404,0X0406,0X0409,0X040C
12296
        dw 0X040E,0X0411,0X0414,0X0416,0X0419,0X041C,0X041F,0X0421
12297
        dw 0X0424,0X0427,0X0429,0X042C,0X042F,0X0431,0X0434,0X0437
12298
        dw 0X043A,0X043C,0X043F,0X0442,0X0444,0X0447,0X044A,0X044D
12299
        dw 0X044F,0X0452,0X0455,0X0457,0X045A,0X045D,0X045F,0X0462
12300
        dw 0X0465,0X0468,0X046A,0X046D,0X0470,0X0472,0X0475,0X0478
12301
        dw 0X047A,0X047D,0X0480,0X0483,0X0485,0X0488,0X048B,0X048D
12302
        dw 0X0490,0X0493,0X0496,0X0498,0X049B,0X049E,0X04A0,0X04A3
12303
        dw 0X04A6,0X04A8,0X04AB,0X04AE,0X04B1,0X04B3,0X04B6,0X04B9
12304
        dw 0X04BB,0X04BE,0X04C1,0X04C3,0X04C6,0X04C9,0X04CC,0X04CE
12305
        dw 0X04D1,0X04D4,0X04D6,0X04D9,0X04DC,0X04DF,0X04E1,0X04E4
12306
        dw 0X04E7,0X04E9,0X04EC,0X04EF,0X04F1,0X04F4,0X04F7,0X04FA
12307
        dw 0X04FC,0X04FF,0X0502,0X0504,0X0507,0X050A,0X050D,0X050F
12308
        dw 0X0512,0X0515,0X0517,0X051A,0X051D,0X051F,0X0522,0X0525
12309
        dw 0X0528,0X052A,0X052D,0X0530,0X0532,0X0535,0X0538,0X053A
12310
        dw 0X053D,0X0540,0X0543,0X0545,0X0548,0X054B,0X054D,0X0550
12311
        dw 0X0553,0X0556,0X0558,0X055B,0X055E,0X0560,0X0563,0X0566
12312
        dw 0X0568,0X056B,0X056E,0X0571,0X0573,0X0576,0X0579,0X057B
12313
        dw 0X057E,0X0581,0X0583,0X0586,0X0589,0X058C,0X058E,0X0591
12314
        dw 0X0594,0X0596,0X0599,0X059C,0X059F,0X05A1,0X05A4,0X05A7
12315
        dw 0X05A9,0X05AC,0X05AF,0X05B1,0X05B4,0X05B7,0X05BA,0X05BC
12316
        dw 0X05BF,0X05C2,0X05C4,0X05C7,0X05CA,0X05CC,0X05CF,0X05D2
12317
        dw 0X05D5,0X05D7,0X05DA,0X05DD,0X05DF,0X05E2,0X05E5,0X05E8
12318
        dw 0X05EA,0X05ED,0X05F0,0X05F2,0X05F5,0X05F8,0X05FA,0X05FD
12319
        dw 0X0600,0X0603,0X0605,0X0608,0X060B,0X060D,0X0610,0X0613
12320
        dw 0X0615,0X0618,0X061B,0X061E,0X0620,0X0623,0X0626,0X0628
12321
        dw 0X062B,0X062E,0X0631,0X0633,0X0636,0X0639,0X063B,0X063E
12322
        dw 0X0641,0X0643,0X0646,0X0649,0X064C,0X064E,0X0651,0X0654
12323
        dw 0X0656,0X0659,0X065C,0X065F,0X0661,0X0664,0X0667,0X0669
12324
        dw 0X066C,0X066F,0X0671,0X0674,0X0677,0X067A,0X067C,0X067F
12325
        dw 0X0682,0X0684,0X0687,0X068A,0X068C,0X068F,0X0692,0X0695
12326
        dw 0X0697,0X069A,0X069D,0X069F,0X06A2,0X06A5,0X06A8,0X06AA
12327
        dw 0X06AD,0X06B0,0X06B2,0X06B5,0X06B8,0X06BA,0X06BD,0X06C0
12328
        dw 0X06C3,0X06C5,0X06C8,0X06CB,0X06CD,0X06D0,0X06D3,0X06D5
12329
        dw 0X06D8,0X06DB,0X06DE,0X06E0,0X06E3,0X06E6,0X06E8,0X06EB
12330
        dw 0X06EE,0X06F1,0X06F3,0X06F6,0X06F9,0X06FB,0X06FE,0X0701
12331
        dw 0X0703,0X0706,0X0709,0X070C,0X070E,0X0711,0X0714,0X0716
12332
        dw 0X0719,0X071C,0X071E,0X0721,0X0724,0X0727,0X0729,0X072C
12333
        dw 0X072F,0X0731,0X0734,0X0737,0X073A,0X073C,0X073F,0X0742
12334
        dw 0X0744,0X0747,0X074A,0X074C,0X074F,0X0752,0X0755,0X0757
12335
        dw 0X075A,0X075D,0X075F,0X0762,0X0765,0X0767,0X076A,0X076D
12336
        dw 0X0770,0X0772,0X0775,0X0778,0X077A,0X077D,0X0780,0X0783
12337
        dw 0X0785,0X0788,0X078B,0X078D,0X0790,0X0793,0X0795,0X0798
12338
        dw 0X079B,0X079E,0X07A0,0X07A3,0X07A6,0X07A8,0X07AB,0X07AE
12339
        dw 0X07B1,0X07B3,0X07B6,0X07B9,0X07BB,0X07BE,0X07C1,0X07C3
12340
        dw 0X07C6,0X07C9,0X07CC,0X07CE,0X07D1,0X07D4,0X07D6,0X07D9
12341
        dw 0X07DC,0X07DE,0X07E1,0X07E4,0X07E7,0X07E9,0X07EC,0X07EF
12342
        dw 0X07F1,0X07F4,0X07F7,0X07FA,0X07FC,0X07FF,0X0802,0X0804
12343
        dw 0X0807,0X080A,0X080C,0X080F,0X0812,0X0815,0X0817,0X081A
12344
        dw 0X081D,0X081F,0X0822,0X0825,0X0827,0X082A,0X082D,0X0830
12345
        dw 0X0832,0X0835,0X0838,0X083A,0X083D,0X0840,0X0843,0X0845
12346
        dw 0X0848,0X084B,0X084D,0X0850,0X0853,0X0855,0X0858,0X085B
12347
        dw 0X085E,0X0860,0X0863,0X0866,0X0868,0X086B,0X086E,0X0870
12348
        dw 0X0873,0X0876,0X0879,0X087B,0X087E,0X0881,0X0883,0X0886
12349
        dw 0X0889,0X088C,0X088E,0X0891,0X0894,0X0896,0X0899,0X089C
12350
        dw 0X089E,0X08A1,0X08A4,0X08A7,0X08A9,0X08AC,0X08AF,0X08B1
12351
        dw 0X08B4,0X08B7,0X08B9,0X08BC,0X08BF,0X08C2,0X08C4,0X08C7
12352
        dw 0X08CA,0X08CC,0X08CF,0X08D2,0X08D5,0X08D7,0X08DA,0X08DD
12353
        dw 0X08DF,0X08E2,0X08E5,0X08E7,0X08EA,0X08ED,0X08F0,0X08F2
12354
        dw 0X08F5,0X08F8,0X08FA,0X08FD,0X0900,0X0903,0X0905,0X0908
12355
        dw 0X090B,0X090D,0X0910,0X0913,0X0915,0X0918,0X091B,0X091E
12356
        dw 0X0920,0X0923,0X0926,0X0928,0X092B,0X092E,0X0930,0X0933
12357
        dw 0X0936,0X0939,0X093B,0X093E,0X0941,0X0943,0X0946,0X0949
12358
        dw 0X094C,0X094E,0X0951,0X0954,0X0956,0X0959,0X095C,0X095E
12359
        dw 0X0961,0X0964,0X0967,0X0969,0X096C,0X096F,0X0971,0X0974
12360
        dw 0X0977,0X0979,0X097C,0X097F,0X0982,0X0984,0X0987,0X098A
12361
        dw 0X098C,0X098F,0X0992,0X0995,0X0997,0X099A,0X099D,0X099F
12362
        dw 0X09A2,0X09A5,0X09A7,0X09AA,0X09AD,0X09B0,0X09B2,0X09B5
12363
        dw 0X09B8,0X09BA,0X09BD,0X09C0,0X09C2,0X09C5,0X09C8,0X09CB
12364
        dw 0X09CD,0X09D0,0X09D3,0X09D5,0X09D8,0X09DB,0X09DE,0X09E0
12365
        dw 0X09E3,0X09E6,0X09E8,0X09EB,0X09EE,0X09F0,0X09F3,0X09F6
12366
        dw 0X09F9,0X09FB,0X09FE,0X0A01,0X0A03,0X0A06,0X0A09,0X0A0B
12367
        dw 0X0A0E,0X0A11,0X0A14,0X0A16,0X0A19,0X0A1C,0X0A1E,0X0A21
12368
        dw 0X0A24,0X0A27,0X0A29,0X0A2C,0X0A2F,0X0A31,0X0A34,0X0A37
12369
        dw 0X0A39,0X0A3C,0X0A3F,0X0A42,0X0A44,0X0A47,0X0A4A,0X0A4C
12370
        dw 0X0A4F,0X0A52,0X0A55,0X0A57,0X0A5A,0X0A5D,0X0A5F,0X0A62
12371
        dw 0X0A65,0X0A67,0X0A6A,0X0A6D,0X0A70,0X0A72,0X0A75,0X0A78
12372
        dw 0X0A7A,0X0A7D,0X0A80,0X0A82,0X0A85,0X0A88,0X0A8B,0X0A8D
12373
        dw 0X0A90,0X0A93,0X0A95,0X0A98,0X0A9B,0X0A9E,0X0AA0,0X0AA3
12374
        dw 0X0AA6,0X0AA8,0X0AAB,0X0AAE,0X0AB0,0X0AB3,0X0AB6,0X0AB9
12375
        dw 0X0ABB,0X0ABE,0X0AC1,0X0AC3,0X0AC6,0X0AC9,0X0ACB,0X0ACE  
12376
 
12377
                DEPHASE