Subversion Repositories ngs

Rev

Blame | Last modification | View Log | Download | RSS feed

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