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