Subversion Repositories ngs

Rev

Rev 36 | Rev 75 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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