?login_element?

Subversion Repositories NedoOS

Rev

Rev 678 | Blame | Compare with Previous | Last modification | View Log | Download

  1. ;        align 256
  2. ;CMbuf   DB -1 ;USED ORNS+SMPS
  3. ;        DS 16+31
  4. ;t1buf   DB -1,-1,-1,-1,0
  5.  
  6.         MACRO IYAi
  7.         LD (IY),A
  8.         INC IY
  9.         ENDM
  10.  
  11.         MACRO IYNi par
  12.         LD (IY),par
  13.         INC IY
  14.         ENDM
  15.  
  16.         MACRO IYLi
  17.         LD (IY),L
  18.         INC IY
  19.         ENDM
  20.  
  21.         MACRO IYHi
  22.         LD (IY),H
  23.         INC IY
  24.         ENDM
  25. PatDisp
  26.         LD A,(IX-0) ;-8
  27. patdisp=$-1
  28.         IYAi
  29.         LD A,(IX-0) ;-7
  30. patdisp1=$-1
  31.         IYAi
  32.         RET
  33. PUTIY
  34.         PUSH AF
  35.         CALL OUT7
  36.         PUSH HL
  37.         LD HL,(pnter)
  38.         LD A,LY
  39.         SUB ptmod&0xff
  40.         LD (HL),A
  41.         INC HL
  42.         LD A,HY
  43.         SBC A,ptmod/256
  44.         LD (HL),A
  45.         INC HL
  46.         LD (pnter),HL
  47.         POP HL
  48.         POP AF
  49.         RET
  50.  
  51. cMPILE
  52.         LD (CMsmpU0),A
  53.         LD (CMornU0),A
  54.         XOR A
  55.         LD (CMPcnt),A
  56.         DI
  57.         CALL CMPIL
  58.         CALL CMPso
  59.         ;LD IY,23610
  60.         EI
  61.        IF process
  62.         CALL CLOSWIN
  63.         LD A,205
  64.         ld (MHEXFNT+2),A
  65.         CALL OUT7
  66.        ENDIF
  67. sngE=$+1
  68.         LD HL,lce84
  69.         LD DE,ptmod
  70.        ;OR A
  71.         SBC HL,DE
  72.         ex de,hl
  73.         RET
  74. ;1
  75. CMPIL
  76.        IF process
  77.         CALL PROCESS
  78.        ENDIF
  79.        IF 0==portres
  80.        LD A,97
  81.        LD (t1not),A
  82.        LD (po2not),A
  83.        ENDIF
  84.        ;DI
  85.         LD HL,CMbuf+1
  86.         LD DE,CMbuf+2
  87.         LD BC,16+31-1
  88.         LD (HL),B
  89.         LDIR
  90.         LD DE,l5b00+1
  91.         LD H,D
  92.         ld L,B
  93.         LD C,250
  94.         LD (HL),L
  95.         LDIR
  96.         CALL OUT7
  97.         LD HL,TPROTR
  98.         LD DE,ptmod
  99.         LD C,99
  100.         LDIR
  101.         LD H,D
  102.         ld L,E
  103.         INC DE
  104.         LD (HL),B
  105.        LD B,3 ;на всякий случ trks
  106.         LDIR
  107.         LD A,(FRQn)
  108.         LD (lce84),A
  109.         LD A,(TEMPO)
  110.         LD (lce85),A
  111.         LD A,(LENG)
  112.         LD (lce86),A
  113.         LD B,A
  114.         LD A,(LOOP)
  115.         CP B
  116.         jr C,$+3
  117.          XOR A
  118.         LD (lce87),A
  119.         LD HL,TPOSS
  120.         LD DE,lceea
  121. CMPpos  LD A,(HL)
  122.         ADD A,A
  123.         ADD A,(HL)
  124.         LD (DE),A
  125.         INC L
  126.         INC DE
  127.         DJNZ CMPpos
  128.         LD A,-1
  129.         LD (DE),A
  130.         INC DE
  131.         ex de,hl
  132.         LD (sngCUR),HL
  133.         LD DE,-ptmod
  134.         ADD HL,DE
  135.         LD (lce88),HL
  136.         LD A,(LENG)
  137.         LD C,A
  138.         LD A,PATS-1
  139. CMPmax  LD B,C
  140.         LD HL,TPOSS
  141.         CP (HL)
  142.         jr Z,CMPmaxQ
  143.         INC L
  144.         DJNZ $-4
  145.         DEC A
  146.         JP P,CMPmax
  147. CMPmaxQ INC A
  148.         LD (CMPlst),A
  149.         LD B,A
  150.        ADD A,A
  151.        ADD A,B
  152.        LD L,A
  153.        ld H,0
  154.        ADD HL,HL
  155.        ;LD DE,6
  156.        ;LD H,D,L,D
  157.        ;ADD HL,DE
  158.        ;DJNZ $-1
  159. sngCUR=$+1
  160.         LD DE,0
  161.         ADD HL,DE
  162.         LD (sngE),HL
  163.        PUSH DE
  164.        LD B,3
  165. CMP00   XOR A
  166.       ;PUSH DE
  167. CMP0
  168.        IF portres
  169.         LD (CMporeA),A
  170.        ENDIF
  171.         PUSH AF
  172.        PUSH BC
  173.         CALL CMPP
  174.        POP BC
  175.         POP AF
  176.         INC A
  177. CMPlst=$+1
  178.         CP 0
  179.        IF process
  180.         jr Z,CMP0Q
  181.        ;PUSH AF
  182.        PUSH BC
  183.        BIT 0,B
  184.      ;A<>0: bar увеличивается на 1
  185.        CALL Z,PROBAR
  186.        POP BC
  187.        ;POP AF
  188.        ;LD L,A
  189.         JR CMP0
  190.        ELSE
  191.         jr NZ,CMP0
  192.        ENDIF
  193. CMP0Q
  194.       ;POP HL
  195.       ;INC HL,HL
  196.       ;LD (sngCUR),HL
  197.       ;ex de,hl
  198.        LD A,B
  199.        ADD A,5
  200.        LD B,A
  201.        CP 13+5
  202.        jr C,CMP00
  203.  
  204.        POP HL
  205.        PUSH HL
  206.        LD DE,BUF
  207.        LD B,3
  208.        LDIR
  209.        LD HL,BUF
  210.        POP DE
  211.        LD B,3
  212. CMPRE60
  213.        LD A,(CMPlst)
  214.        PUSH DE
  215. CMPRE61
  216.        LDI
  217.        INC BC
  218.        LDI
  219.        INC BC
  220.        INC DE
  221.        inc DE
  222.        inc DE
  223.        inc DE
  224.        DEC A
  225.        jr NZ,CMPRE61
  226.        POP DE
  227.        INC DE
  228.        inc DE
  229.        DJNZ CMPRE60
  230.        IF process
  231.         JP CMPQ
  232.        ELSE
  233.         RET
  234.        ENDIF
  235. CMPP
  236.        PUSH BC
  237.         LD L,A
  238.         ld H,TPATSZ/256
  239.         LD A,(HL)
  240.         ld (CMPPlen),A
  241.         LD A,L
  242.        CALL PATtoBUF ;делает OUT7
  243.         LD IY,(sngE)
  244.        IF portres
  245.        LD A,97
  246.        LD (t1not),A
  247.        LD (po2not),A
  248.        ENDIF
  249.        POP AF ;3/8/13
  250.         CALL CMt
  251.         LD (sngE),IY
  252.         RET
  253. CMt
  254.        LD IX,BUF
  255.        LD C,A
  256.        ld B,0
  257.        ADD IX,BC
  258.         NEG
  259.         LD (patdisp),A
  260.         INC A
  261.         LD (patdisp1),A
  262.        SUB -8+1
  263.        jr Z,$+4
  264.         LD A,DJt1Nn
  265.        LD (CMisb-1),A
  266.  
  267.         LD (CMt2IY),IY  ;начало трека
  268.         PUSH IX
  269.         LD HL,t1buf+4
  270.         XOR A
  271. ;LD (CMoldT),A
  272.         LD (CMoldN),A
  273.        LD (HL),A
  274.        DEC HL
  275.         LD (HL),A
  276.         DEC HL
  277.        DEC A
  278.         LD (HL),A
  279.         DEC HL
  280.         LD (HL),A
  281.         DEC HL
  282.         LD (HL),A
  283. CMPPlen=$+1
  284.         LD A,0
  285.         INC A
  286. CMt10   ex af,af'
  287.        LD A,(t1not)
  288.        CP 96
  289.        jr NC,$+5
  290.        LD (po2not),A
  291.        LD HL,t1buf
  292.        LD A,(IX)
  293.        LD C,A
  294.        AND #7F
  295.        jr NZ,CMt1NZ
  296.        LD A,97
  297.        ld (t1not),A
  298.        JP CMt1IG
  299. CMt1NZ
  300.        DEC A
  301.        LD (t1not),A
  302.       SLA C
  303.        LD A,(IX+3)
  304.        RRA
  305.        RRA
  306.        RRA
  307.        RRA
  308.        AND 31
  309.        jr Z,$+3
  310.         CP (HL)
  311.        jr Z,CMt1IG
  312.        LD (HL),A
  313.        SUB -#D0
  314.        LD (t1smp),A
  315.        INC L
  316.        inc L
  317.        LD A,(IX+3)
  318.        AND #F
  319.       ;jr Z,CMt1Nt1
  320.       LD C,A
  321.        LD A,(IX+4)
  322.        AND #F0
  323.       CP C
  324.       jr Z,CMt1Nt1
  325.        RRCA
  326.        RRCA
  327.        RRCA
  328.        RRCA
  329.        CP (HL)
  330.        jr Z,CMt1No1
  331.        LD (HL),A
  332.       INC C
  333.       DEC C
  334.       jr NZ,CMseFx
  335.       LD A,(t1smp)
  336.       IYAi
  337.       LD A,(HL)
  338.       DEC L
  339.       SUB -#40
  340.       JR CMt1G
  341. CMseFx
  342.        DEC L
  343.        LD (HL),#F
  344.        SUB -#F0
  345.        IYAi
  346.        LD A,(t1smp)
  347.        SUB -#30
  348.        ADD A,A
  349.        JR CMt1G
  350. CMt1No1
  351.        DEC L
  352.        LD A,C
  353.        OR A
  354.        jr Z,CMt1Nt2
  355.        CP #F
  356.        jr NZ,CMt1Yt
  357.        CP (HL)
  358.        jr Z,CMt1Nt2
  359.        LD (HL),A
  360.        XOR A
  361.        JR $+3
  362. CMt1Yt   LD (HL),A
  363.        SUB -#10
  364.        IYAi
  365.        SUB #10
  366.       ;JZ CMt1NE1
  367.       CALL NZ,PatDisp
  368. CMt1NE1 LD A,(t1smp)
  369.        SUB -#30
  370.        ADD A,A
  371.        IYAi
  372.        JR CMt1INE
  373.  
  374. CMt1Nt1
  375.        LD A,(t1smp)
  376.        JR CMt1Yo2
  377.  
  378. t1smp=$+1
  379. CMt1Nt2
  380.        LD A,0
  381. CMt1G   IYAi
  382.        DEC L
  383. CMt1IG  INC L
  384.        LD A,(IX+3)
  385.       ;INC L
  386.        AND #F
  387.       LD C,A
  388.       jr Z,CMt1INE
  389.       ;jr Z,CMt1INo
  390.       ;DEC L
  391.        CP #F
  392.        jr NZ,$+5
  393.        CP (HL)
  394.        jr Z,CMt1INE
  395.        LD (HL),A
  396.        INC A
  397.        AND #F
  398.        SUB -#B0
  399.        IYAi
  400.        SUB #B0
  401.       ;jr Z,CMt1INE ;B0
  402. ;Bx,Henv,Lenv
  403.       CALL NZ,PatDisp
  404. CMt1INE INC L
  405.        LD A,(IX+4)
  406.        AND #F0
  407.       CP C
  408.       jr Z,CMt1INo
  409.        RRCA
  410.        RRCA
  411.        RRCA
  412.        RRCA
  413.        CP (HL)
  414.        jr Z,CMt1INo
  415.        LD (HL),A
  416.        SUB -#40
  417. CMt1Yo2 IYAi
  418. CMt1INo INC L
  419.        LD A,(IX+4)
  420.        AND #F
  421.        jr Z,CMt1Nv
  422.        CP (HL)
  423.        jr Z,CMt1Nv
  424.        LD (HL),A
  425.        SUB 64
  426.        IYAi
  427. CMt1Nv  INC L
  428.       JR CMt1Nn
  429. CMisb
  430.        LD A,(IX-6)
  431.        AND 31
  432.        CP (HL)
  433.        jr Z,CMt1Nn
  434.        LD (HL),A
  435.        SUB -#20
  436.        IYAi
  437. DJt1Nn=$-CMisb
  438. CMt1Nn  LD A,(IX+1)
  439.        AND #F0
  440.        CALL NZ,CMcom
  441.        CALL CMt1PP
  442.        LD A,C
  443. CMoldN=$+1
  444.        CP 0
  445.        jr Z,CMt1Nb
  446.        IYNi #B1
  447.        LD (CMoldN),A
  448.        IYAi
  449. CMt1Nb  CALL CMnot
  450. CMt1Q   LD H,CMbuf/256
  451.        LD A,(t1buf+2)
  452.        LD L,A
  453.        RLA
  454.        jr C,$+4
  455.         LD (HL),-1
  456.        LD A,(t1buf)
  457.        ADD A,16
  458.        jr C,$+5
  459.         LD L,A
  460.         LD (HL),-1
  461.        ex af,af'
  462.         OR A
  463.         JP NZ,CMt10
  464.         IYAi       ;#0=end of track
  465.         POP IX
  466.  
  467.         PUSH IY
  468. ;CMPcnt=$+1
  469.        LD A,(CMPcnt)
  470.         OR A
  471.         jr Z,CMt2Q
  472.        ;LD (CMt2L),A ;кол-во сделанных треков
  473.        ;LD IX,lce88  ;начало треков
  474.        ;LD E,(IX)
  475.        ;LD D,(IX+1)
  476.        ;LD HL,ptmod
  477.        ;ADD HL,DE
  478.        ;PUSH HL
  479.        ;POP IX
  480.        LD IX,(lce88)
  481.        LD DE,ptmod
  482.        ADD IX,DE
  483.        ;LD IY,(CMt2IY)  ;начало текущего трека
  484.         XOR A
  485. CMt20   LD E,A
  486.         ADD A,A
  487.         LD L,A
  488.         LD H,l5b00/256
  489.         LD C,(HL)
  490.         INC L
  491.         LD B,(HL) ;длина старого трека
  492.         LD A,E
  493.         ex af,af'
  494.        LD L,(IX)
  495.        INC IX
  496.        LD H,(IX)
  497.        LD (CMt2HL),HL ;смещ. старого трека
  498.        INC IX
  499.        LD DE,ptmod
  500.        ADD HL,DE
  501.       ;PUSH IY
  502.       ;POP DE  ;начало текущего трека
  503.       LD DE,(CMt2IY)  ;начало текущего трека
  504.        LD A,B
  505.        OR C
  506.        jr Z,CMt2Ncp
  507. CMt2cp  LD A,(DE)
  508.        CP (HL)
  509.        jr NZ,CMt2Ncp
  510.        INC HL
  511.        inc DE
  512.        DEC BC
  513.        LD A,B
  514.        OR C
  515.        jr NZ,CMt2cp
  516. CMt2Ycp POP HL  ;бывший IY
  517. CMt2HL=$+1
  518.        LD DE,0  ;смещ. старого трека (к-й такой же, как новый)
  519.        LD HL,CMPcnt
  520.        INC (HL)
  521.        LD HL,(sngCUR)
  522.        LD (HL),E
  523.        INC HL
  524.        LD (HL),D
  525.        INC HL
  526.    ;INC HL,HL,HL,HL
  527.        LD (sngCUR),HL
  528. CMt2IY=$+2
  529.        LD IY,0  ;как было до компиляции трека
  530.        RET
  531. CMt2Ncp
  532.        BIT 7,D
  533.       jr NZ,CMtNeMEM
  534.       LD A,6
  535.       OUT (-2),A
  536.       JR CMt2Ycp ;память кончилась
  537. CMtNeMEM
  538.        ex af,af'
  539.         INC A
  540. CMPcnt=$+1
  541.         CP 0  ;кол-во сделанных треков
  542.         jr NZ,CMt20
  543. CMt2Q   LD HL,CMPcnt
  544.         LD B,(HL)
  545.         INC (HL) ;кол-во сделанных треков
  546.         LD HL,(CMt2IY)
  547.        PUSH HL
  548.         LD DE,-ptmod
  549.         ADD HL,DE
  550.         ex de,hl
  551.         LD HL,(sngCUR)
  552.         LD (HL),E
  553.         INC HL
  554.         LD (HL),D
  555.         INC HL
  556.     ;INC HL,HL,HL,HL
  557.         LD (sngCUR),HL
  558.        POP DE  ;начало текущего трека
  559.         POP HL  ;бывший IY=после конца трека
  560.         PUSH HL
  561.         POP IY
  562.         OR A
  563.         SBC HL,DE
  564.         ex de,hl
  565.         LD L,B ;кол-во сделанных треков
  566.         ADD HL,HL
  567.         LD H,l5b00/256
  568.         LD (HL),E
  569.         INC L
  570.         LD (HL),D ;длина трека
  571.         RET
  572. CMPso
  573.         LD HL,lce8a
  574.         LD (pnter),HL
  575.         LD IY,(sngE)
  576.         XOR A
  577. CMPs    PUSH AF
  578.         CALL CMPsmp
  579.         POP AF
  580.         INC A
  581.         AND 31
  582.         jr NZ,CMPs
  583.         LD HL,lceca
  584.         LD (pnter),HL
  585. CMPo    PUSH AF
  586.         CALL CMPorn
  587.         POP AF
  588.         INC A
  589.         AND 15
  590.         jr NZ,CMPo
  591.         LD (sngE),IY
  592.         RET
  593. CMPsmp
  594.         LD L,0
  595.         PUSH AF
  596.         ADD A,SMPS/256
  597.         LD H,A
  598.         CALL OUT4
  599.         LD DE,BUF
  600.         PUSH DE
  601.         POP IX
  602.         LD BC,256
  603.         LDIR
  604.         POP AF
  605.         LD B,A
  606.         ADD A,16
  607.         LD H,CMbuf/256
  608.         LD L,A
  609.         LD A,(HL)
  610.         LD L,B
  611.         ADD HL,HL
  612.         LD H,TSMPSZ/256
  613.         OR A
  614.         jr NZ,CMsmpU
  615.         OR (HL)
  616.         jr NZ,CMsmpU0
  617.         INC A
  618.         INC HL
  619.         SUB (HL)
  620.         DEC HL
  621.         jr NZ,CMsmpU0
  622.         LD A,(IX+2)
  623.         XOR 64
  624.         OR (IX)
  625.         OR (IX+1)
  626.         jr NZ,CMsmpU0
  627.         LD A,(IX+3)
  628.         CP 15
  629. CMsmpU0 jr Z,pntii ;
  630. CMsmpU
  631.         CALL PUTIY
  632.         LD A,(HL)
  633.         IYAi
  634.         INC HL
  635.         LD A,(HL)
  636.         IYAi
  637.         LD B,A
  638. CMPS0   LD A,(IX+2)
  639.         LD C,A
  640.         AND 31
  641.         RLCA
  642.         LD D,A
  643.         LD A,C
  644.         AND #20
  645.         jr Z,$+4
  646.          LD A,1
  647.         OR D
  648.        LD D,A
  649.         LD A,(IX+3)
  650.         AND #C0
  651.        OR D
  652.         IYAi
  653.         LD A,C
  654.         RLCA
  655.         AND #80
  656.         LD D,A
  657.         LD A,C
  658.         RRCA
  659.         RRCA
  660.         RRCA
  661.         AND #10
  662.         OR D
  663.         LD D,A
  664.         LD A,(IX+3)
  665.         LD E,A
  666.         AND #F
  667.         OR D
  668.         LD D,A
  669.         LD A,E
  670.         RLCA
  671.         AND #60
  672.         OR D
  673.         IYAi
  674.         LD A,(IX)
  675.         IYAi
  676.         LD A,(IX+1)
  677.         IYAi
  678.         LD DE,4
  679.         ADD IX,DE
  680.         DJNZ CMPS0
  681.         RET
  682. pnter=$+1
  683. pntii
  684.         LD HL,0
  685.         INC HL
  686.         inc HL
  687.         LD (pnter),HL
  688.         RET
  689. CMPorn
  690.         PUSH AF
  691.         CALL HLOR3
  692.         CALL OUT4
  693.         LD DE,BUF
  694.         LD BC,64
  695.         LDIR
  696.         POP AF
  697.         LD L,A
  698.         ld H,CMbuf/256
  699.         LD C,(HL)
  700.         LD HL,TORNSZ
  701.         ADD A,A
  702.         ADD A,L
  703.         LD L,A
  704.         LD A,C
  705.         OR A
  706.         jr NZ,CMornU
  707.         OR (HL)
  708.         jr NZ,CMornU0
  709.         INC A
  710.         INC HL
  711.         SUB (HL)
  712.         DEC HL
  713.         jr NZ,CMornU0
  714.         LD A,(BUF)
  715.         OR A
  716. CMornU0 jr Z,pntii ;
  717. CMornU
  718.         CALL PUTIY
  719.         PUSH IY
  720.         POP DE
  721.        LDI
  722.        INC BC
  723.         LD A,(HL)
  724.         LD (DE),A
  725.         INC DE
  726.         LD C,A
  727.         LD HL,BUF
  728.         LDIR
  729.         PUSH DE
  730.         POP IY
  731.         RET
  732.  
  733. t1not=$+1
  734. CMnot
  735.         LD A,0
  736.        LD H,#D0
  737.         CP 97
  738.         jr Z,CMnotQ
  739.        LD H,#C0
  740.         CP 96
  741.         jr Z,CMnotQ
  742.         SUB #B0
  743.        LD H,A
  744. CMnotQ  IYHi
  745.         PUSH IX
  746. CMnotIX=$+2
  747.         LD IX,0
  748. CMjp=$+1
  749.         CALL CMret
  750.         LD HL,CMret
  751.         ld (CMjp),HL
  752.         POP IX
  753. CMret   RET
  754. CMcom
  755.         LD C,16
  756.         SUB C
  757.         jr Z,CMglD
  758.         SUB C
  759.         jr Z,CMglU
  760.         SUB C
  761.         jr Z,CMpor
  762.         SUB C
  763.         JP Z,CMso
  764.         SUB C
  765.         JP Z,CMoo
  766.         SUB C
  767.         JP Z,CMvib
  768.        IF gs
  769.         SUB 32
  770.         JP Z,CMgs
  771.         SUB C
  772.        ELSE
  773.         SUB 48
  774.        ENDIF
  775.         jr Z,CMenD
  776.         SUB C
  777.         jr Z,CMenU
  778.         SUB C
  779.         RET NZ
  780.         LD A,(IX+2)
  781. ;CMoldT=$+1
  782. ;CP 0
  783. ;RET Z
  784.         OR A
  785.         RET Z
  786.         LD A,9
  787.         LD HL,CMtm2
  788.         JR CMenDQ
  789. CMglD
  790.         LD HL,CMgD2
  791.         JR $+5
  792. CMglU
  793.          LD HL,CMgU2
  794.         LD A,1
  795.         JR CMenDQ
  796. CMgD2
  797.         LD A,(IX+1)
  798.         AND #F
  799.         LD H,A
  800.         JR CMpoQ
  801. CMgU2
  802.         LD A,(IX+1)
  803.         AND #F
  804.         LD H,A
  805.         SCF
  806.         JR CMpoQ
  807. CMenU
  808.         LD HL,CMgU2
  809.         JR $+5
  810. CMenD
  811.          LD HL,CMgD2
  812.         LD A,8
  813. CMenDQ  IYAi
  814.         LD (CMjp),HL
  815.         RET
  816. CMpor
  817.        IF portres
  818.         LD A,(po2not)
  819.         CP 96
  820.         CALL NC,CMpores
  821.         LD (po2not),A
  822.        ENDIF
  823.         LD A,(t1not)
  824.         CP 96
  825.         RET NC
  826. po2not=$+1
  827.        CP 0
  828.        RET Z
  829.         LD A,2
  830.         LD HL,CMpo2
  831.         JR CMenDQ
  832. CMpo2
  833.         LD A,(IX+1)
  834.         AND #F
  835.         IYAi
  836.         LD A,(po2not)
  837.         LD HL,FrTab
  838.         ADD A,A
  839.        ADD A,L
  840.         LD L,A
  841.         LD E,(HL)
  842.         INC L
  843.         LD D,(HL)
  844.         LD A,(t1not)
  845.         ADD A,A
  846.        ADD A,FrTab&0xff
  847.         LD L,A
  848.         LD A,(HL)
  849.         INC L
  850.         LD H,(HL)
  851.         LD L,A
  852.         SBC HL,DE
  853.         PUSH AF
  854.         CALL C,NEGHL
  855.         POP AF
  856.         IYLi
  857. CMpoQ
  858.         IYHi
  859.         LD L,(IX+2)
  860.         ld H,0
  861.         CALL C,NEGHL
  862.         IYLi
  863.         IYHi
  864.         RET
  865. CMoo
  866.         LD A,4
  867.         JR CMsoQ
  868. CMso
  869.         LD A,3
  870. CMsoQ   LD HL,CMof
  871.         JR CMenDQ
  872. CMvib
  873.         LD A,5
  874.         LD HL,CMv2
  875.         JR CMenDQ
  876. CMof
  877.         LD A,(IX+2)
  878.         AND 63
  879.         IYAi
  880.         RET
  881. CMtm2
  882.         LD A,(IX+2)
  883. ;LD (CMoldT),A
  884.         IYAi
  885.         RET
  886.  
  887.        IF gs
  888. CMgs
  889.         LD A,7
  890.         LD HL,CMgs2
  891.         JP CMenDQ
  892. CMgs2
  893.         LD A,(IX+1)
  894.         AND #F ;smp
  895.         IYAi
  896.         JR CMtm2
  897.        ENDIF
  898.  
  899. CMv2
  900.         LD A,(IX+2)
  901.         LD C,A
  902.         AND #F0
  903.         RRCA
  904.         RRCA
  905.         RRCA
  906.         RRCA
  907.         IYAi
  908.         LD A,C
  909.         AND #F
  910.         IYAi
  911.         RET
  912. CMt1PP
  913.         LD (CMnotIX),IX
  914.         ex af,af'
  915.        LD B,A
  916.        ex af,af'
  917.         DJNZ CMisnot
  918.         ex af,af'
  919.        DEC A
  920.        ex af,af'
  921.         LD A,(CMoldN)
  922.         DEC A
  923.         jr Z,CMt1PPQ
  924.         IYNi #B1
  925.         IYNi 1
  926. CMt1PPQ CALL CMnot
  927.         POP HL
  928.         JP CMt1Q
  929.  
  930. ;COUNT blS
  931. CMisnot
  932.         LD C,1
  933. CMisno0 LD DE,18
  934.         ADD IX,DE
  935.         LD HL,t1buf+1
  936.         LD A,(IX)
  937.         AND #7F
  938.         jr NZ,CMisnoQ
  939.         LD A,(IX+1)
  940.         AND #F0
  941.         jr NZ,CMisnoQ
  942.         INC L
  943.         LD A,(IX+3)
  944.         AND #F
  945.        LD E,A
  946.        jr Z,CMisn0x
  947.        ;jr Z,CMisnNE
  948.         CP #F
  949.         jr NZ,CMisnoQ
  950.         DEC L
  951.         CP (HL)
  952.         jr NZ,CMisnoQ
  953. CMisn0x LD A,(IX+4)
  954.         AND #F0
  955.        CP E
  956.        jr Z,CMisnNE
  957.         RRCA
  958.         RRCA
  959.         RRCA
  960.         RRCA
  961.         INC L
  962.         CP (HL)
  963.         jr NZ,CMisnoQ
  964. CMisnNE LD A,(IX+4)
  965.         INC L
  966.         AND #F
  967.         jr Z,$+5
  968.          CP (HL)
  969.          jr NZ,CMisnoQ
  970.         INC L
  971.         LD A,(CMisb-1)
  972.         OR A
  973.         jr NZ,CMisnNQ
  974.         LD A,(IX-6)
  975.         CP (HL)
  976.         jr NZ,CMisnoQ
  977. CMisnNQ INC C
  978.         DJNZ CMisno0
  979. CMisnoQ ex af,af'
  980.        SUB C
  981.        ex af,af'
  982.         RET
  983. LDPT3PP
  984.         CALL cs_8026 ;CS=merge
  985.         jr NC,PT3PP2
  986.         CALL CLPATS
  987.         CALL CLORNSM
  988.         LD DE,TPATSZ+1
  989.         LD BC,PATS-1
  990.         LD H,D
  991.         ld L,B
  992.         LD (HL),63
  993.         LDIR
  994. PT3PP2
  995.        ;DI
  996.         CALL OUT7
  997.         LD A,(lce84)
  998.         ld (FRQn),A
  999.         LD A,(lce85)
  1000.         ld (TEMPO),A
  1001.         LD A,(lce87)
  1002.         ld (LOOP),A
  1003.         LD H,l5b00/256
  1004.         LD BC,PATS*256
  1005. Mdiv3   LD A,C
  1006.         ADD A,A
  1007.         add A,C
  1008.         LD L,A
  1009.         LD (HL),C
  1010.         INC C
  1011.         DJNZ Mdiv3
  1012.         CALL CLPOS
  1013.         LD A,(lce86)
  1014.         ld (LENG),A
  1015.         LD B,A
  1016.         LD IX,lceea
  1017.         LD H,l5b00/256
  1018.         LD DE,TPOSS
  1019. PT3POS  LD L,(IX)
  1020.         LD A,(HL)
  1021.         ld (DE),A
  1022.         INC E
  1023.         INC IX
  1024.         DJNZ PT3POS
  1025.        XOR A
  1026.        LD (DE),A
  1027.        INC E
  1028.        jr NZ,$-2
  1029.         LD HL,lce3f
  1030.         LD DE,TTITLE
  1031.         LD C,32
  1032.         LDIR
  1033.         LD HL,lce63
  1034.         LD DE,TAUTHOR
  1035.         LD C,33;32 ;3.7 for TS
  1036.         LDIR
  1037.         CALL PT3PATS
  1038.         CALL PT3SMP
  1039.         CALL PT3ORN
  1040.        JP GETPATLEN
  1041.        ;LD HL,(TPOSS),H,'TPATSZ
  1042.        ;LD A,(HL),(PATLEN),A
  1043.       ;IF process
  1044.       ;LD IY,23610
  1045.       ;ENDIF
  1046.        ;RET
  1047.        IF process
  1048. PROCESS
  1049.         LD A,201
  1050.         ld (MHEXFNT+2),A
  1051.         XOR A
  1052.         LD (PROBARX),A
  1053.         LD BC,mPROCES
  1054.         CALL WINDUM
  1055.         LD HL,tPROCES
  1056.         JP PRMENU
  1057. mPROCES DB 4,#C,#1C,#10,#47
  1058. tPROCES DB 6,#11,0,"PROCESSIN",#C7
  1059. CMPQ
  1060.         XOR A
  1061. ;2
  1062. PROBAR
  1063.         PUSH AF
  1064. PROBARY=$+1
  1065. PROBARX=$+2
  1066.         LD DE,1
  1067.         OR A     ;A=0: 100%
  1068.         LD B,1
  1069.         jr NZ,PROBAR0
  1070.         LD A,#2A ;?
  1071.         SUB D
  1072.         jr C,PROBARQ
  1073.        jr Z,PROBARQ
  1074.         LD B,A
  1075. PROBAR0 LD A,'0'
  1076.         CALL PRADD
  1077.         INC D
  1078.         DJNZ PROBAR0
  1079.         LD (PROBARY),DE
  1080. PROBARQ POP AF
  1081.         RET
  1082.        ENDIF
  1083.        IF portres
  1084. CMpores
  1085. CMporeA=$+1
  1086.         LD A,0
  1087.         LD HL,TPOSS
  1088.         LD B,(HL)
  1089.         INC L
  1090. cMpore0 CP (HL)
  1091.         jr Z,$+6
  1092.          LD B,(HL)
  1093.          INC L
  1094.          jr NZ,cMpore0
  1095.         LD A,B ;пред.паттерн
  1096.        CALL AtoPAT
  1097.         LD HL,(patdisp)
  1098.         ld H,0
  1099.         ADD HL,DE
  1100.         LD B,#40
  1101.         LD DE,18
  1102.         LD A,(HL)
  1103.         AND #7F
  1104.         DEC A
  1105.         LD C,A
  1106. cMpore1 LD A,(HL)
  1107.         AND #7F
  1108.         jr Z,cMpore2
  1109.         DEC A
  1110.         CP 96
  1111.         jr Z,$+3
  1112.         LD C,A
  1113. cMpore2 ADD HL,DE
  1114.         DJNZ cMpore1
  1115.         CALL OUT7
  1116.         LD A,C
  1117.         RET
  1118.        ENDIF
  1119. LDPT2PP
  1120.        LD A,32
  1121.        LD (ts48),A
  1122.         LD A,1
  1123.         ld (FRQn),A
  1124.         CALL CLPATS
  1125.         CALL CLSMPS ;DICLos? CLORNSM?
  1126.         CALL CLORNS
  1127.         LD DE,TPATSZ+1
  1128.         LD BC,PATS-1
  1129.         LD H,D
  1130.         ld L,B
  1131.         LD (HL),63
  1132.         LDIR
  1133.         CALL PT2PP2
  1134.         XOR A
  1135.         LD (POS),A
  1136.         RET
  1137. PT2PP2
  1138.         CALL OUT7
  1139.         LD HL,ptmod
  1140.         LD A,(HL)
  1141.         ld (TEMPO),A
  1142.         INC HL
  1143.         LD A,(HL)
  1144.         ld (LENG),A
  1145.         INC HL
  1146.         PUSH AF
  1147.         LD A,(HL)
  1148.         ld (LOOP),A
  1149.         LD HL,_ce86
  1150.         LD DE,TTITLE
  1151.         LD BC,30
  1152.         LDIR
  1153.         LD A,' '
  1154.         LD (DE),A
  1155.         INC DE
  1156.         LD (DE),A
  1157.         LD HL,TAUTHOR
  1158.         LD DE,TAUTHOR+1
  1159.         LD (HL),A
  1160.         LD C,31
  1161.         LDIR
  1162.         POP AF
  1163.         LD C,A
  1164.         LD HL,_cea4
  1165.         LD DE,TPOSS
  1166.         LDIR
  1167.        XOR A
  1168.        LD (DE),A
  1169.        INC E
  1170.        jr NZ,$-2
  1171.         CALL PT2SMP
  1172.         CALL PT2ORN
  1173.         CALL PT2PATS
  1174. GETPATLEN
  1175.         LD HL,(TPOSS)
  1176.         ld H,TPATSZ/256
  1177.         LD A,(HL)
  1178.         ld (PATLEN),A
  1179.         RET
  1180. PT3PATS
  1181.         CALL OUT7
  1182.         LD B,PATS-1
  1183. PT3P0   LD HL,TPOSS
  1184. PT3P1   LD A,(HL)
  1185.         CP B
  1186.         jr Z,PT3P0Q
  1187.         INC L
  1188.         jr NZ,PT3P1
  1189.         DJNZ PT3P0
  1190. PT3P0Q  LD A,B
  1191.         ld (PT3Plst),A
  1192.         LD HL,(lce88)
  1193.         LD DE,ptmod
  1194.         ADD HL,DE
  1195.         XOR A
  1196. PT3P2   PUSH AF
  1197.        CALL KILLBUF
  1198.         LD E,(HL)
  1199.         INC HL
  1200.         LD D,(HL)
  1201.         INC HL
  1202.         PUSH HL
  1203.          LD A,3
  1204.          ld (PT3Edsp),A
  1205.         LD IX,BUF+3
  1206.         CALL PT3PAPP
  1207.         POP HL
  1208.         LD E,(HL)
  1209.         INC HL
  1210.         LD D,(HL)
  1211.         INC HL
  1212.         PUSH HL
  1213.          LD A,8
  1214.          ld (PT3Edsp),A
  1215.        ;LD (PT3putN+1),A ;noise ON
  1216.         LD IX,BUF+8
  1217.         CALL PT3PAPP
  1218.         POP HL
  1219.         LD E,(HL)
  1220.         INC HL
  1221.         LD D,(HL)
  1222.         INC HL
  1223.         PUSH HL
  1224.        ;XOR A
  1225.        ;LD (PT3putN+1),A ;noise OFF
  1226.          LD A,13
  1227.          ld (PT3Edsp),A
  1228.         LD IX,BUF+13
  1229.         CALL PT3PAPP
  1230.         POP HL
  1231.         POP AF
  1232. ;D=patlen-1
  1233.        CALL PATfrBUF
  1234. PT3Plst=$+1
  1235.         CP 0
  1236.         RET Z
  1237.         INC A
  1238.         JR PT3P2
  1239.  
  1240. ;на 99% совпадает с PT3PATS
  1241. PT2PATS
  1242.         CALL OUT7
  1243.         LD B,31
  1244. PT2P0   LD HL,TPOSS
  1245. PT2P1   LD A,(HL)
  1246.         CP B
  1247.         jr Z,PT2P0Q
  1248.         INC L
  1249.         jr NZ,PT2P1
  1250.         DJNZ PT2P0
  1251. PT2P0Q  LD A,B
  1252.         ld (PT2Plst),A
  1253.         LD HL,(_ce84)
  1254.         LD DE,ptmod
  1255.         ADD HL,DE
  1256.         XOR A
  1257. PT2P2   PUSH AF
  1258.        CALL KILLBUF
  1259.         LD E,(HL)
  1260.         INC HL
  1261.         LD D,(HL)
  1262.         INC HL
  1263.         PUSH HL
  1264.         LD A,3
  1265.         LD IX,BUF+3
  1266.         CALL PT2PAPP
  1267.         POP HL
  1268.         LD E,(HL)
  1269.         INC HL
  1270.         LD D,(HL)
  1271.         INC HL
  1272.         PUSH HL
  1273.         LD A,8
  1274.         LD IX,BUF+8
  1275.         CALL PT2PAPP
  1276.         POP HL
  1277.         LD E,(HL)
  1278.         INC HL
  1279.         LD D,(HL)
  1280.         INC HL
  1281.         PUSH HL
  1282.         LD A,13
  1283.         LD IX,BUF+13
  1284.         CALL PT2PAPP
  1285.         POP HL
  1286.         POP AF
  1287.        CALL PATfrBUF
  1288. PT2Plst=$+1
  1289.         CP 0
  1290.         RET Z
  1291.         INC A
  1292.         JR PT2P2
  1293. PT3PAPP
  1294.         ex de,hl
  1295.         LD DE,ptmod
  1296.         ADD HL,DE
  1297.         XOR A
  1298.         LD (PT3orN),A
  1299.         LD (PT3n),A
  1300.         LD D,A
  1301. PT3PAP0 LD BC,#1020
  1302.         LD A,(HL)
  1303.         INC HL
  1304.         OR A
  1305.         RET Z
  1306.         ADD A,B
  1307.         jr C,PT3orn
  1308.         ADD A,C
  1309.         jr C,PT3smp
  1310.         ADD A,B
  1311.         JP C,PT3vol
  1312.         ADD A,B
  1313.         JP C,PT3Et
  1314.         ADD A,96
  1315.         jr C,PT3note
  1316.         ADD A,B
  1317.         JP C,PT3newO
  1318.         ADD A,C
  1319.         JP C,PT3nois
  1320.         ADD A,B
  1321.         JP C,PT3Etyp
  1322.         ADD A,B
  1323.         JP PT3com
  1324. PT3blN
  1325.         LD A,(HL)
  1326.         INC HL
  1327.         DEC A
  1328.         LD (PT3bls),A
  1329.         JR PT3PAP0
  1330.  
  1331. PT3bls=$+1
  1332. PT3blQ
  1333.         LD A,0
  1334.         OR A
  1335.         jr Z,PT3PAP0
  1336.         LD E,A
  1337.         LD BC,18
  1338. PT3bl0  INC D
  1339.         CALL PT3putN
  1340.         ADD IX,BC
  1341.         DEC E
  1342.         jr NZ,PT3bl0
  1343.         JR PT3PAP0
  1344. PT3note
  1345.         INC D
  1346.         INC A
  1347.         LD B,A
  1348.         LD A,(IX)
  1349.         AND #80
  1350.         OR B
  1351.         LD (IX),A
  1352.         CALL PT3putN
  1353.         CALL PT3cU
  1354.         LD BC,18
  1355.         ADD IX,BC
  1356.         JR PT3blQ
  1357. PT3orn
  1358. ;Fx,smp*2
  1359.         RRCA
  1360.         RRCA
  1361.         RRCA
  1362.         RRCA
  1363.         LD (PT3orN),A
  1364.         OR (IX+4)
  1365.         LD (IX+4),A
  1366.         LD A,#F
  1367.        ;LD (PT3typ),A
  1368.         LD (IX+3),A
  1369. PT3oQ   LD A,(HL)
  1370.         INC HL
  1371.         RLCA
  1372.         RLCA
  1373.         LD B,A
  1374.         AND #80
  1375.         LD (IX),A
  1376.         LD A,B
  1377.         RLA
  1378.         OR (IX+3)
  1379.         LD (IX+3),A
  1380.         JP PT3PAP0
  1381. PT3smp
  1382.         jr Z,PT3bl ;end of note
  1383.         CP 16
  1384.         jr C,$+6
  1385.         SET 7,(IX)
  1386.         AND #F
  1387.         RLCA
  1388.         RLCA
  1389.         RLCA
  1390.         RLCA
  1391.         OR (IX+3)
  1392.         LD (IX+3),A
  1393.         JP PT3PAP0
  1394. PT3bl
  1395.         INC D
  1396.         CALL PT3putN
  1397.         CALL PT3cU
  1398.          LD BC,18 ;см. то же выше
  1399.          ADD IX,BC
  1400.         JP PT3blQ
  1401. PT3vol
  1402.         jr Z,PT3res
  1403.         OR (IX+4)
  1404.         LD (IX+4),A
  1405.         JP PT3PAP0
  1406. PT3res
  1407.         LD A,(IX)
  1408.         AND #80
  1409.         OR 97
  1410.         LD (IX),A
  1411.         CALL PT3putN
  1412.         CALL PT3cU
  1413.          LD BC,18
  1414.          ADD IX,BC ;см. то же выше
  1415.         INC D
  1416.         JP PT3blQ
  1417. PT3Et
  1418.         jr NZ,PT3nEof
  1419. ;B0=envoff
  1420.         LD A,#F
  1421.        ;LD (PT3typ),A
  1422.         OR (IX+3)
  1423.         LD (IX+3),A
  1424.         JP PT3eQ
  1425. PT3nEof DEC A
  1426.         JP Z,PT3blN
  1427.        ;LD (PT3typ),A
  1428.         LD B,A
  1429.         LD A,(IX+3)
  1430.         AND #F0
  1431.         OR B
  1432.         LD (IX+3),A
  1433.         CALL PT3env
  1434. PT3orN=$+1
  1435. PT3eQ   LD A,0
  1436.         OR (IX+4)
  1437.         LD (IX+4),A
  1438.         JP PT3PAP0
  1439. PT3env
  1440.         PUSH HL
  1441.         PUSH IX
  1442.         POP HL
  1443. PT3Edsp=$+1
  1444.         LD BC,0
  1445.         OR A
  1446.         SBC HL,BC
  1447.         LD B,H
  1448.         LD C,L
  1449.         POP HL
  1450.         LD A,(HL)
  1451.         INC HL
  1452.         LD (BC),A
  1453.         INC BC
  1454.         LD A,(HL)
  1455.         INC HL
  1456.         LD (BC),A
  1457.         RET
  1458. PT3newO
  1459.         RLCA
  1460.         RLCA
  1461.         RLCA
  1462.         RLCA
  1463.         LD (PT3orN),A
  1464.         LD B,A
  1465.         jr NZ,PT3nXF0X
  1466.         LD A,(IX+3)
  1467.         AND #F
  1468.         jr NZ,PT3nXF0X
  1469.         LD A,(IX+3)
  1470.         OR #F
  1471.         LD (IX+3),A ;env off - см. выше такой же
  1472. PT3nXF0X
  1473.         LD A,(IX+4)
  1474.         AND #F
  1475.         OR B
  1476.         LD (IX+4),A
  1477. ;PT3typ=$+1
  1478.        ;LD A,0
  1479.        ;OR (IX+3)
  1480.        ;LD (IX+3),A
  1481.         JP PT3PAP0
  1482. PT3nois
  1483.         LD (PT3n),A
  1484.         JP PT3PAP0
  1485. ;4
  1486. PT3putN
  1487.        ;LD A,0
  1488.        ;OR A
  1489.        ;RET Z
  1490.        LD A,LX ;проверяем channel=B
  1491.        RRA
  1492.        RET C
  1493.         LD (IX-6),0
  1494. PT3n=$-1
  1495.         RET
  1496. PT3Etyp
  1497.         jr NZ,PT3EnO
  1498.         LD A,#F
  1499.        ;LD (PT3typ),A
  1500.         OR (IX+3)
  1501.         LD (IX+3),A
  1502.         JR PT3EtyQ
  1503.  
  1504. PT3EnO ;LD (PT3typ),A
  1505.         OR (IX+3)
  1506.         LD (IX+3),A
  1507.         CALL PT3env
  1508. PT3EtyQ LD A,(PT3orN)
  1509.         OR (IX+4)
  1510.         LD (IX+4),A
  1511.         JP PT3oQ
  1512.  
  1513. PT3jp=$+1
  1514. PT3cU
  1515.         CALL PT3ret
  1516.         PUSH HL
  1517.         LD HL,PT3ret
  1518.         LD (PT3jp),HL
  1519.         POP HL
  1520. PT3ret  RET
  1521. PT3com
  1522.         PUSH HL
  1523.         DEC A
  1524.         LD HL,PT3glis
  1525.         jr Z,PT3cQ
  1526.         DEC A
  1527.         LD HL,PT3port
  1528.         jr Z,PT3cQ
  1529.         DEC A
  1530.         LD HL,PT3so
  1531.         jr Z,PT3cQ
  1532.         DEC A
  1533.         LD HL,PT3oo
  1534.         jr Z,PT3cQ
  1535.         DEC A
  1536.         LD HL,PT3vib
  1537.         jr Z,PT3cQ
  1538.        IF gs
  1539.         SUB 2
  1540.         LD HL,PT3gs
  1541.         jr Z,PT3cQ
  1542.         DEC A
  1543.        ELSE
  1544.         SUB 3
  1545.        ENDIF
  1546.         LD HL,PT3egl
  1547.         jr Z,$+5
  1548.         LD HL,PT3tmp
  1549. PT3cQ   LD (PT3jp),HL
  1550.         POP HL
  1551.         JP PT3PAP0
  1552. PT3tmp
  1553.         LD A,(HL)
  1554.         INC HL
  1555.         LD (IX+1),#B0
  1556.         LD (IX+2),A
  1557.         RET
  1558. PT3port
  1559.         LD A,(HL)
  1560.         OR #30
  1561.         LD (IX+1),A
  1562.         INC HL
  1563.         inc HL
  1564.         inc HL
  1565.         PUSH DE
  1566.         LD E,(HL)
  1567.         INC HL
  1568.         LD D,(HL)
  1569.         INC HL
  1570.         ex de,hl
  1571.         LD A,H
  1572.         OR A
  1573.        ;JP P,$+6
  1574.         CALL M,NEGHL
  1575. XIX2EPOP
  1576.         ex de,hl
  1577.        IF goodpak
  1578.         LD (IX+2),E
  1579.         POP DE
  1580.         RET
  1581.        ELSE
  1582.         LD A,E
  1583.         POP DE
  1584. IX2A    LD (IX+2),A
  1585.         RET
  1586.        ENDIF
  1587. PT3so
  1588.         LD A,(HL)
  1589.         INC HL
  1590.         LD (IX+1),#40
  1591.        IF goodpak
  1592.         LD (IX+2),A
  1593.         RET
  1594.        ELSE
  1595.         JR IX2A
  1596.        ENDIF
  1597. PT3oo
  1598.         LD A,(HL)
  1599.         INC HL
  1600.         LD (IX+1),#50
  1601.        IF goodpak
  1602.         LD (IX+2),A
  1603.         RET
  1604.        ELSE
  1605.         JR IX2A
  1606.        ENDIF
  1607. PT3vib
  1608.         LD A,(HL)
  1609.         RRCA
  1610.         RRCA
  1611.         RRCA
  1612.         RRCA
  1613.         INC HL
  1614.         OR (HL)
  1615.         INC HL
  1616.         LD (IX+1),#60
  1617.        IF goodpak
  1618.         LD (IX+2),A
  1619.         RET
  1620.        ELSE
  1621.         JR IX2A
  1622.        ENDIF
  1623. PT3glis
  1624.         PUSH DE
  1625.         LD A,(HL)
  1626.         OR #10
  1627.         LD C,A
  1628.         INC HL
  1629.         LD E,(HL)
  1630.         INC HL
  1631.         LD D,(HL)
  1632.         INC HL
  1633.         ex de,hl
  1634.        ;LD A,H
  1635.        ;OR A
  1636.         LD (IX+1),C
  1637.        BIT 7,H
  1638.        jr Z,PT3gl1
  1639.        ;JP P,PT3gl1
  1640.         CALL NEGHL
  1641.         LD A,C
  1642.         AND #F
  1643.         OR #20
  1644.         LD (IX+1),A
  1645. PT3gl1  ex de,hl
  1646.         LD (IX+2),E
  1647.         POP DE
  1648.         RET
  1649. PT3egl
  1650.         PUSH DE
  1651.         LD A,(HL)
  1652.         OR #90
  1653.         LD C,A
  1654.         INC HL
  1655.         LD E,(HL)
  1656.         INC HL
  1657.         LD D,(HL)
  1658.         INC HL
  1659.         ex de,hl
  1660.        ;LD A,H
  1661.        ;OR A
  1662.         LD (IX+1),C
  1663.        BIT 7,H
  1664.        jr Z,PT3egl9
  1665.        ;JP P,PT3egl9
  1666.         CALL NEGHL
  1667.         LD A,C
  1668.         AND #F
  1669.         OR #A0
  1670.         LD (IX+1),A
  1671. PT3egl9
  1672.        IF goodpak
  1673.         ex de,hl
  1674.         LD (IX+2),E
  1675.         POP DE
  1676.         RET
  1677.        ELSE
  1678.         JR XIX2EPOP
  1679.        ENDIF
  1680.  
  1681.        IF gs
  1682. PT3gs
  1683.         LD A,(HL)
  1684.         INC HL
  1685.         OR #80
  1686.         LD (IX+1),A
  1687.         LD A,(HL)
  1688.         INC HL
  1689.         LD (IX+2),A
  1690.         RET
  1691.        ENDIF
  1692.  
  1693. PT2orn
  1694.         RLCA
  1695.         RLCA
  1696.         RLCA
  1697.         RLCA
  1698.         LD (PT2orN),A
  1699.         LD B,A
  1700.         LD A,(IX+4)
  1701.         AND #F
  1702.         OR B
  1703.         LD (IX+4),A
  1704. PT2typ=$+1
  1705.         LD A,0
  1706.         OR (IX+3)
  1707.         LD (IX+3),A
  1708.         JR PT2PAP0
  1709. PT2blN
  1710.         LD (PT2bls),A
  1711.         JR PT2PAP0
  1712. PT2vol
  1713.         OR (IX+4)
  1714.         LD (IX+4),A
  1715.         JR PT2PAP0
  1716. PT2tmp
  1717.         LD (IX+1),#B0
  1718.         LD A,(HL)
  1719.         JR IX2P2P
  1720. PT2port
  1721.         LD (IX+1),#31
  1722.         LD A,(HL)
  1723.         INC HL
  1724.         INC HL
  1725.         OR A
  1726.         JP P,IX2P2P
  1727.         NEG
  1728.         JR IX2P2P
  1729. PT2glis
  1730.         LD (IX+1),#11
  1731.         LD A,(HL)
  1732.         BIT 7,A
  1733.         jr Z,$+8
  1734.          LD (IX+1),#21
  1735.          NEG
  1736. IX2P2P  LD (IX+2),A
  1737.         INC HL
  1738.         JR PT2PAP0
  1739. PT2PAPP
  1740.         LD (PT2Edsp),A
  1741.         ex de,hl
  1742.         LD DE,ptmod
  1743.         ADD HL,DE
  1744.         XOR A
  1745.         LD (PT2typ),A
  1746.         LD (PT2orN),A
  1747.         LD D,A
  1748. PT2PAP0 LD C,16
  1749.         LD A,(HL)
  1750.         INC HL
  1751.         OR A
  1752.         RET Z
  1753.         ADD A,32
  1754.         jr C,PT2smp
  1755.         ADD A,96
  1756.         jr C,PT2note
  1757.         ADD A,C
  1758.         JP C,PT2env
  1759.         ADD A,C
  1760.         jr C,PT2orn
  1761.         ADD A,64
  1762.         jr C,PT2blN
  1763.         ADD A,C
  1764.         jr C,PT2vol
  1765.         INC A
  1766.         jr Z,PT2tmp
  1767.         INC A
  1768.         jr Z,PT2glis
  1769.         INC A
  1770.         jr Z,PT2port
  1771.         INC A
  1772.         jr Z,PT2PAP0
  1773.         LD A,(HL)
  1774.         INC HL
  1775.         PUSH HL
  1776.         LD BC,(PT2Edsp)
  1777.         DEC BC,BC
  1778.         PUSH IX
  1779.         POP HL
  1780.         SBC HL,BC
  1781. PT2NOI  LD (HL),A ;noise
  1782.        LD BC,18
  1783.        ADD HL,BC
  1784.        LD BC,BUF+#480
  1785.        SBC HL,BC
  1786.        ADD HL,BC
  1787.        jr C,PT2NOI
  1788.         POP HL
  1789.         JR PT2PAP0
  1790. PT2smp
  1791.         jr Z,PT2res
  1792.         CP 16
  1793.         jr C,$+6
  1794.          SET 7,(IX)
  1795.         AND #F
  1796.         RLCA
  1797.         RLCA
  1798.         RLCA
  1799.         RLCA
  1800.         OR (IX+3)
  1801.         LD (IX+3),A
  1802.         JR PT2PAP0
  1803. PT2res
  1804.         LD A,96
  1805. PT2note INC A
  1806.         LD B,A
  1807.         LD A,(IX)
  1808.         AND #80
  1809.         OR B
  1810.         LD (IX),A
  1811. PT2bl   INC D
  1812.         LD BC,18
  1813.         ADD IX,BC
  1814. PT2bls=$+1
  1815.         LD A,0
  1816.         OR A
  1817.         jr Z,PT2PAP0
  1818.          INC D
  1819.          ADD IX,BC
  1820.          DEC A
  1821.         jr NZ,$-4
  1822.         JR PT2PAP0
  1823. PT2env
  1824.         jr Z,PT2bl
  1825.         CP #F
  1826.         LD (PT2typ),A
  1827.         jr NZ,PT2norn
  1828.         OR (IX+3)
  1829.         LD (IX+3),A
  1830.         JR PT2eQ
  1831. PT2norn OR (IX+3)
  1832.         LD (IX+3),A
  1833.         PUSH HL
  1834.         PUSH IX
  1835.         POP HL
  1836. PT2Edsp=$+1
  1837.         LD BC,0
  1838.         OR A
  1839.         SBC HL,BC
  1840.         LD B,H
  1841.         ld C,L
  1842.         INC BC
  1843.         POP HL
  1844.         LD A,(HL)
  1845.         INC HL
  1846.         LD (BC),A
  1847.         DEC BC
  1848.         LD A,(HL)
  1849.         INC HL
  1850.         LD (BC),A
  1851. PT2orN=$+1
  1852. PT2eQ  LD A,0
  1853.        OR (IX+4)
  1854.        LD (IX+4),A
  1855.         JP PT2PAP0
  1856. PT3SMP
  1857.         LD A,1
  1858.         LD HL,lce8a+2
  1859. PT3SMP0  PUSH AF
  1860.         CALL OUT7
  1861.         LD E,(HL)
  1862.         INC HL
  1863.         LD D,(HL)
  1864.         INC HL
  1865.        EX (SP),HL
  1866.        PUSH HL ;AF
  1867.         LD A,E
  1868.         OR D
  1869.         jr Z,PT3SMPQ
  1870.         LD HL,ptmod
  1871.         ADD HL,DE
  1872.         LD DE,BUF
  1873.         PUSH DE
  1874.         POP IX
  1875.         LD B,2;BC,258
  1876.         LDIR
  1877.          POP AF
  1878.          PUSH AF
  1879.         ADD A,A
  1880.         LD L,A
  1881.         ld H,TSMPSZ/256
  1882.         LD A,(IX)
  1883.         ld (HL),A
  1884.         INC L
  1885.         LD B,(IX+1)
  1886.         ld (HL),B
  1887.          POP AF
  1888.          PUSH AF
  1889.         ADD A,SMPS/256
  1890.         LD H,A
  1891.         XOR A
  1892.         LD L,A
  1893.      CP B
  1894.      jr Z,PT3SMPQ
  1895.         CALL OUT4
  1896. PT3SMP1 LD A,(IX+2+2)
  1897.         ld (HL),A
  1898.         INC HL
  1899.         LD A,(IX+3+2)
  1900.         ld (HL),A
  1901.         INC HL
  1902.         LD A,(IX+0+2)
  1903.         ld D,A
  1904.         AND #3F
  1905.         RRA ;SRL A
  1906.         jr NC,$+4
  1907.         OR #20
  1908.         LD C,A
  1909.         LD A,(IX+1+2)
  1910.         ld E,A
  1911.         AND #F
  1912.         INC HL
  1913.         LD (HL),A
  1914.         LD A,D;(IX+0+2)
  1915.         AND #C0
  1916.         OR (HL)
  1917.         LD (HL),A
  1918.         LD A,E
  1919.         AND #80
  1920.         RRCA
  1921.         OR C
  1922.         LD C,A
  1923.         LD A,E
  1924.         AND #10
  1925.         RLCA
  1926.         RLCA
  1927.         RLCA
  1928.         OR C
  1929.         DEC HL
  1930.         LD (HL),A
  1931.         INC HL
  1932.         LD A,E
  1933.         RRCA
  1934.         AND #30
  1935.         OR (HL)
  1936.         LD (HL),A
  1937.         INC HL
  1938.         LD DE,4
  1939.         ADD IX,DE
  1940.         DJNZ PT3SMP1
  1941. PT3SMPQ  POP AF
  1942.        POP HL
  1943.         INC A
  1944.         AND 31
  1945.         jr NZ,PT3SMP0
  1946.         RET
  1947.  
  1948. PT2SMP
  1949.         LD A,1
  1950.         LD HL,_ce26
  1951. PT2SMP0  PUSH AF
  1952.         CALL OUT7
  1953.         LD E,(HL)
  1954.         INC HL
  1955.         LD D,(HL)
  1956.         INC HL
  1957.        EX (SP),HL
  1958.        PUSH HL ;AF
  1959.         LD A,E
  1960.         OR D
  1961.         jr Z,PT2SMPQ
  1962.         LD HL,ptmod
  1963.         ADD HL,DE
  1964.         LD DE,BUF
  1965.         PUSH DE
  1966.         POP IX
  1967.         LD B,2;BC,#C6
  1968.         LDIR
  1969.          POP AF
  1970.          PUSH AF
  1971.         ADD A,A
  1972.         LD L,A
  1973.         ld H,TSMPSZ/256
  1974.         LD A,(IX+1)
  1975.         ld (HL),A
  1976.         INC L
  1977.         LD B,(IX)
  1978.         ld (HL),B
  1979.          POP AF
  1980.          PUSH AF
  1981.         ADD A,SMPS/256
  1982.         LD H,A
  1983.         XOR A
  1984.         LD L,A
  1985.         CALL OUT4
  1986. PT2SMP1 LD A,(IX+0+2)
  1987.        LD C,A
  1988.         RRCA
  1989.         RRCA
  1990.         RRCA
  1991.         AND 31
  1992.         INC HL
  1993.         inc HL
  1994.         LD (HL),A
  1995.        BIT 1,C;(IX+0+2)
  1996.         jr Z,$+4
  1997.         SET 7,(HL)
  1998.  
  1999.         LD A,(IX+1+2)
  2000.         ;AND #F0
  2001.         ;RRCA
  2002.         ;RRCA
  2003.         ;RRCA
  2004.         ;RRCA
  2005.         INC HL
  2006.         LD (HL),A
  2007.        XOR A
  2008.        RRD
  2009.         ;LD A,(IX+1+2)
  2010.         ;AND #F
  2011.        LD D,A ;(IX+1+2)&#0F
  2012.  
  2013.         DEC HL
  2014.        BIT 0,C;(IX+0+2)
  2015.         jr Z,PT2SMPN
  2016.         LD A,(HL)
  2017.         OR #40
  2018.         AND #E0
  2019.         LD (HL),A
  2020. PT2SMPN LD E,(IX+2+2)
  2021.        ;LD A,(IX+1+2)
  2022.        ;AND #F
  2023.        ;LD H,A
  2024.        BIT 2,C;(IX+0+2)
  2025.         ex de,hl
  2026.         CALL Z,NEGHL
  2027.         ex de,hl
  2028.         DEC HL,HL
  2029.         LD (HL),E
  2030.         INC HL
  2031.         LD (HL),D
  2032.         LD DE,3
  2033.         ADD IX,DE
  2034.         ADD HL,DE
  2035.         DJNZ PT2SMP1
  2036. PT2SMPQ  POP AF
  2037.        POP HL
  2038.         INC A
  2039.         AND 31
  2040.         jr NZ,PT2SMP0
  2041.         RET
  2042.  
  2043. PT2ORN
  2044.         LD HL,_ce66
  2045.         SCF
  2046.         JR PT23ORN
  2047. PT3ORN
  2048.         LD HL,lceca+2
  2049.         OR A
  2050. PT23ORN LD A,1
  2051. PT3ORN0  PUSH AF
  2052.         CALL OUT7
  2053.         LD E,(HL)
  2054.         INC HL
  2055.         LD D,(HL)
  2056.         INC HL
  2057.        EX (SP),HL
  2058.        PUSH HL ;AF
  2059.         LD A,D
  2060.         OR E
  2061.         jr Z,PT3ORNQ
  2062.         LD HL,ptmod
  2063.         ADD HL,DE
  2064.         LD DE,BUF
  2065.         PUSH DE
  2066.         LD B,2;BC,66
  2067.         LDIR
  2068.         POP DE
  2069.          POP AF
  2070.          PUSH AF
  2071.         CALL HLOR3
  2072.         ex de,hl
  2073.         LD C,A
  2074.         ld B,TORNSZ/256
  2075.         CALL OUT4
  2076.          POP AF
  2077.          PUSH AF
  2078.          jr NC,PT3ORN3
  2079.         INC L
  2080.         LD A,(HL)
  2081.         ld (BC),A
  2082.         DEC L
  2083.         LD A,(HL)
  2084.         INC L
  2085.         JR $+6
  2086. PT3ORN3  LD A,(HL)
  2087.         ld (BC),A
  2088.          INC L
  2089.          LD A,(HL)
  2090.         INC C
  2091.         LD (BC),A
  2092.         INC L
  2093.         LD C,A
  2094.         ld B,0
  2095.         LDIR
  2096. PT3ORNQ  POP AF
  2097.        POP HL
  2098.         INC A
  2099.         BIT 4,A
  2100.         jr Z,PT3ORN0
  2101.         RET
  2102.