Subversion Repositories ngs

Rev

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

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