Subversion Repositories ngs

Rev

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

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