PROTRACKER372 PT6 371 H

From MSX MUSIC WIKI
Revision as of 23:25, 14 February 2020 by Kumokosi (talk | contribs) (Created page with "pt6_371 C��ЦЛ�МН( MAIN "",#C6 EDORN XOR A LD (volA),A,(volC),A LD BC,mEDORN CALL WINDUM LD HL,tEDORN,DE,#800 C...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

pt6_371 C��ЦЛ�МН( MAIN "",#C6 EDORN

       XOR A
       LD (volA),A,(volC),A
       LD BC,mEDORN
       CALL WINDUM
       LD HL,tEDORN,DE,#800
       CALL PRMENU
      ;LD HL,tORNKEY,DE,#12
      ;CALL PRMENU
       LD HL,tORNo_s,DE,#711
       CALL PRMENU
       CALL OUT4
       CALL HLORN
       LD (ornadr),HL
       LD DE,EDORbf
       LD BC,64
       LDIR 
       CALL PRORNos
       LD A,(ORN),HL,TORNSZ
       ADD A,A,A,L
       LD L,A,A,(HL),B,A,(EoLOOP),A
       INC L
       LD A,(HL)
       SUB B
       LD (EoLPlen),A
      PUSH HL
       CALL PRORN
       XOR A
       LD (EoLIN),A,(EoMflag),A
       CALL GornMRK

EDORN0

      CALL RESHALT
       CALL EORNCUR
       CALL EoCHMRK
       CALL EoPRMRK
       CALL EDORNKY
       LD A,(ORN),(piaORN),A

EoSMP=$+1

       LD A,0,(piaSMP),A
       ADD A,A
       LD L,A,H,'TSMPSZ
       LD A,(HL),(piSLOOP),A
       INC L
       LD A,(HL),(piSEND),A
       LD A,(EoLPlen),B,A
       LD A,(EoLOOP),(piOLOOP),A
       ADD A,B
       LD (piOEND),A
       CALL OUT4
       LD HL,EDORbf

ornadr=$+1

       LD DE,0,BC,64
       LDIR 
       CALL PIANO
       CALL TSTFIRE
       JNC EDORN0
      CALL DOWNMER
      POP HL

ORNQU

       LD A,(EoLOOP),B,A
       LD A,(EoLPlen)

ORNQ ADD A,B

       LD (HL),A
       DEC L
       LD (HL),B
      CALL CLOSWIN
      LD A,(OCT)
      JP PROCT

HEXDIG

       ADD A,"0
       CP ":
       RET C
       ADD A,"A"-":
       RET 

PRMEMOS memol=$+1

       LD DE,#60E
       CALL PRMEMO
       LD HL,Tmemo

memo=$+1

       LD B,0
       DJNZ $+4
       LD D,6
       DJNZ $+4
       LD D,11
       DJNZ $+4
       LD D,#E+2
       DJNZ $+4
       LD D,#18+8
       DJNZ $+4
       LD D,#22+14
       LD (memol),DE
       JP PRMENU

EPsseP

       LD A,(CURX)
       LD E,1
       LD BC,#200
       CP 4
       RET C
       INC E
       LD BC,#102
       CP 6
       RET C
       LD BC,#503
       INC E
       CP 11+4
       RET C
       LD C,8
       INC E
       CP 16+8
       RET C
       LD C,13
       INC E
       RET 

EPsse

       CALL EPsseP
       LD A,E,(memo),A
       PUSH BC
       CALL PRMEMOS
       LD A,(EPAT),B,A,C,0
       CALL GETnADR
       LD DE,BUF
       LD BC,#480
       LDIR 
       CALL OUT6
       LD HL,BUF
       POP BC
       LD A,B,B,0
       ADD HL,BC
       LD C,A
       LD DE,MEMOBUF
       LD A,64

EPsse0 PUSH BC

       PUSH HL
       LDIR 
       POP HL
       LD C,18
       ADD HL,BC
       POP BC
       DEC A
       JNZ EPsse0
       RET 

EPssr

       CALL EPsseP
       LD A,(memo)
       CP E
       JZ EPssrE
       CP 3
       RET C
       LD A,E
       CP 3
       RET C

EPssrE

       PUSH BC
       LD A,(EPAT)
       LD B,A,C,0
       CALL GETnADR
       LD (EPssrDE),HL
       LD DE,BUF
       LD BC,#480
       LDIR 
       LD A,(pg) ;pat
       EXA 
       CALL OUT6
       LD HL,BUF
       POP BC
       LD A,B,B,0
       ADD HL,BC
       LD C,A
       LD DE,MEMOBUF
       EXD 
       LD A,64

EPssr0 PUSH BC

       PUSH DE
       LDIR 
       POP DE
       EXD 
       LD C,18
       ADD HL,BC
       EXD 
       POP BC
       DEC A
       JNZ EPssr0
       EXA 
       CALL OUTME
       LD HL,BUF

EPssrDE=$+1

       LD DE,0
       LD BC,#480
       LDIR 
       JP PRPATU

EXCHANG

       CALL FROMSZ
       PUSH AF
       LD A,(pat1)
       LD B,A
       CALL GETnADR
       PUSH HL
       POP IX
       CALL CHN1PP
       ADD HL,BC
       LD A,(chn2)
       LD C,3
       DEC A
       JZ EXCHX2
       LD C,8
       DEC A
       JZ $+4
       LD C,13

EXCHX2 ADD IX,BC

       POP AF

EXCH0 EXA

       PUSH HL
       LD DE,BUF
       LD BC,5
       LDIR 
       POP DE
       PUSH DE,IX
       POP HL
       LD C,5
       LDIR 
       LD HL,BUF
       PUSH IX
       POP DE
       LD C,5
       LDIR 
       POP HL
       LD C,18
       ADD HL,BC
       ADD IX,BC
       EXA 
       DEC A
       JNZ EXCH0
       JP PRPATO

CATBAR

       LD HL,#48B5
       XOR A
       LD (CATBf),A
       LD B,A,C,A
       LD E,#81
       LD A,(catH)
       OR A
       JNZ CATBNZ
       INC A
       LD D,A
       JR CATBARP

CATBNZ ADD A,A

       DEC A
       LD D,A
       LD A,(cattop)
       OR A
       CALL NZ,CATBARP
       LD E,#BD
       LD A,(catH)
       CP 9
       JC CATBARP
       LD A,8
       CALL CATBARP
       LD A,(catH)

cattop=$+1

      SUB 0
      SUB 8
       LD E,#81
       RET Z

CATBARP EXA CATBf=$+1 CATBAR0 LD A,0

       XOR -1
       LD (CATBf),A
       JZ $+6
       LD (HL),E
       CALL DHL
       SCF 
       LD A,C
       ADC A,D
       LD C,A
       JNC CATBAR0
       EXA 
       DEC A
       JNZ CATBARP
       RET 

USEBAR

       LD A,(catH)
      CP 9
       RET C
       EXA 
       CALL FIRE
       RET Z
       LD A,(ARX)
       SUB #A8
       CP 8
       RET NC
       LD A,(ARXY)
       SUB #68
       CP #40
       RET NC
       LD L,A
       XOR A
       LD (USEBf),A
       LD E,A,C,A,H,A
       LD A,(catH)
       ADD A,A
       DEC A
       LD D,A

USEBAR0 LD A,E

       CP L
       JNC USEBok

USEBf=$+1 USEBAR1 LD A,0

       XOR -1
       LD (USEBf),A
       JZ $+3
       INC E
       SCF 
       LD A,C
       ADC A,D
       LD C,A
       JNC USEBAR1
       INC H
       JR USEBAR0

USEBok LD B,0

       EXA 
       LD C,A
       OR A
       RET Z
       SUB 9
       JC USEBARQ
       LD B,H,A,H
       ADD A,7
       CP C
       JC $+6
       LD A,C
       SUB 8
       LD B,A

USEBARQ LD A,B,(cattop),A

       JP PRCAT

AUDATER

       LD C,#7F
       LD DE,AUTO2
       LD A,(DE)
       CP C
       JZ AUDnS
       AND #80
       LD B,A
       LD A,(HL)
       AND C
       OR B
       LD (HL),A
       INC HL,HL,HL
       LD A,(DE)
       AND #7F
       RRCA 
       RRCA 
       RRCA 
       RRCA 
       LD B,A
       LD A,(HL)
       AND #F
       OR B
       LD (HL),A
       JR $+5

AUDnS INC HL,HL,HL

       INC DE
       LD A,(DE)
       CP C
       JZ AUDnT
       LD B,A
       LD A,(HL)
       AND #F0
       OR B
       LD (HL),A

AUDnT INC DE,HL

       LD A,(DE)
       CP C
       JZ AUDnO
       RRCA 
       RRCA 
       RRCA 
       RRCA 
       LD B,A
       LD A,(HL)
       AND #F
       OR B
       LD (HL),A

AUDnO INC DE

       LD A,(DE)
       CP C
       RET Z
       LD B,A
       LD A,(HL)
       AND #F0
       OR B
       LD (HL),A
       RET 

AENVER

       CP E
       JZ AEnres
       LD HL,ead
       RES 7,(HL)
       INC L
       RES 7,(HL)

AEnres AENVFRQ=$+1

       LD HL,0

AENVnot=$+1

      LD DE,0
       INC HL,HL,HL
       LD A,(HL)
      AND 9
      SUB 8
       RET NZ
      OR E
      RET Z

div=$+1

       LD B,0
       LD A,23
       DJNZ $+4
       LD A,28  ;3:4
       DJNZ $+4
       LD A,35  ;1:2
       DJNZ $+4
       LD A,47  ;1:4
       DJNZ $+4
       LD A,4   ;3:1
       DJNZ $+4
       LD A,7   ;5:2
       DJNZ $+4
       LD A,11  ;2:1
       DJNZ $+4
       LD A,16  ;3:2
       ADD A,E
       LD B,0
       INC B
       SUB 12
       JNC $-3
       LD E,A
00,01->+0
10,11->+1
       LD HL,FrTab+24-512
       ADD HL,DE,HL,DE
       LD A,(HL)
       INC L
       LD E,(HL)
       SRL E
       RRA 
       DJNZ $-3
       ADC A,D
       LD D,A

AENVadr=$+2

       LD (0),DE
       RET 

EPdelln

       CALL XPPSCF
       RET NC
       LD HL,(CURY),H,L
       INC L
       LD A,201,(COPQJP),A
       CALL EPdellnP
       LD A,195,(COPQJP),A
       CALL PRPATU
       JR TSTNROL

TSTnSSL

       LD A,(ead)
       RLA 
       JC AEskip
       LD A,(HL)
       AND #80
       OR D
       LD (HL),A

AEskip

      LD A,D

TSTSSLQ

      LD (AENVnot),A
       INC E
       JZ TSTNQ

auto=$+1

       LD A,-1
       OR A
       CALL Z,AUDATER
       LD A,(ead)
       RLA 
       SBC A,A
       CPL 

aenv=$+1

       LD E,-1
       AND E
       CALL Z,AENVER

TSTNQ CALL PRCU7

      ;LD A,(EPAT),B,A
      ;LD A,(CURY),E,#13
      ;CALL STROKA
      CALL PRPATUU
       LD A,(23560)
       CP kL
       JZ $+4
       CP kssL
       CALL NZ,PLNOTE

TSTNROL LD A,(roll)

       OR A
       LD L,A ;на сколько строк вниз
       JP NZ,ROLLPATFON
       LD HL,CURX
      LD A,(HL)
      CP 3
      RET Z
      CP 5
      RET NC
      ;LD A,2;(curite)
      ;CP (HL)
      ;RET C
       INC (HL)
       RET 

TSTNnot

       LD (AENVadr),HL
       XOR A
       LD B,A
       ADD HL,BC
       LD (AENVFRQ),HL
       LD E,-1
       OR D
       JZ TSTnNOT
       CP 97
       JNC TSTnNOT
       INC E
      CP 25
      LD A,(HL)
      RES 7,A
      JZ TSTSSLQ
       CALL NotOct

TSTnNOT

      ;LD A,D
       SUB 99
       JZ TSTk
       INC A
       JP NZ,TSTnSSL
       LD (HL),A
       INC HL
       LD (HL),A
       INC HL
       LD (HL),A

TSTk INC HL

       LD (HL),A
       INC HL
       LD (HL),A
       LD (IY-50),kssL
       JP TSTSSLQ

EPdellnP

       LD A,64
       SUB H
       LD DE,(EPAT),D,A,A,E
       DEC BC
       LD B,C
       RET Z
       JP COPYU

EPins

       CALL XPPSCF
       RET NC
       LD HL,(CURY),H,L
       INC H
       CALL EPdellnP
      LD A,(chnall)
      OR A
      JZ insNALL
      LD BC,(CURY)
      CALL GETnADR
      EXD 
      LD HL,BUF+#480 ;тут нули
      LD BC,18
      LDIR 

insNALL HALT

       LD (IY-50),kssL

TSTNOTE

       LD BC,(CURY)
       CALL GETnADR
       CALL NOTEKEY
       BIT 7,D
       CALL Z,XPPSCF
       DEC BC
       JZ TSTNnot
      LD A,D
      CP 98
      JZ $-5
       CALL RECHEX
       INC D
       JNZ TSTnDIG
       LD C,D,B,D,D,A
       LD A,(CURX)
       OR A
       CALL TSTnPP+2
       CALL TSTnP
       LD C,6
       CALL TSTnPP
       LD C,4
       CALL TSTnPP+1
       LD C,11
       CALL TSTnPP
       LD C,9
       CALL TSTnPP+1
       LD C,16
       CALL TSTnPP
       LD C,14
       CALL TSTnPP+1

TSTnDIG

      LD A,D
      CP 9
      JZ EVENODD
       CALL RECopq
       INC D
       RET NZ
       LD D,A
       OR A
       CALL XPP
       RET NZ
       INC C,C
       LD B,0
       ADD HL,BC
      LD A,(HL)
      LD (HL),D
      RLD 
       SCF 
       JR TSTs0

EVENODD

       LD HL,COPSCF
       LD A,(HL)
       XOR 128
       LD (HL),A
       LD HL,#485A
       LD C,2
       CALL INVSYMS
       POP AF
       RET 
2(EDSONG,EPEXT)

MELINV

       LD HL,#40EA
       LD C,6

INVSYMS

       PUSH HL
       LD B,8

invsym0 LD A,(HL)

       CPL 
       LD (HL),A
       INC H
       DJNZ invsym0
       POP HL
       INC L
       DEC C
       JR NZ,INVSYMS
       RET 

TSTL

       POP AF
       ADD HL,BC
      LD A,(HL)
      LD (HL),D
      RLD 
      OR A
       CALL XPP
       JZ TSTs0-1
      CP -7
      JNZ tstnq
      LD A,(CURX)
      OR A
      JZ tstnq
       LD A,D
       OR A
       JZ tstnq
      PUSH AF
      LD A,(ORN)
      LD (ORN2),A
      XOR A
      CALL ONCORN2
      POP AF
       LD (ORN),A
       XOR A
       CALL ONCORN

tstnq JP TSTNQ

       OR A

TSTs0 DEC HL,HL,HL

       RL (HL)
       RRC (HL)
       LD A,(HL)
       RRA 
       RRA 
       RRA 
       AND 16
       OR D
       JZ tstnq
      PUSH AF
      LD A,(smp)
      LD (SMP2),A
      XOR A
      CALL ONCSMP2
      POP AF
       LD (smp),A
       XOR A
       CALL ONCSMP
       JP tstnq

TSTnPP

       DEC A,A
       JZ TSTL
       DEC A
       JZ TSTR

TSTnP INC BC

       DEC A
       JZ TSTL
       DEC A
       RET NZ

TSTR POP AF

       ADD HL,BC
       LD A,(HL)
       AND #F0
       OR D
       LD (HL),A
       JP TSTNQ

RECopq

       LD DE,"O
       LD A,(23560)
       CP ";
       JZ RECopY
       CP E
       RET Z
       INC E
       CP #22
       JZ RECopY
       CP E
       RET Z
       CP "G
       RET C
       CP "W
       RET NC
       LD E,A
       XOR "Q
       CALL Z,8026
       RET C

RECopY LD A,E

       SUB "G
       DEC D
       RET 

RECHEX

       LD D,0
       LD A,(23560)
       CP "0
       RET C
       CP "G
       RET NC
       CP ":
       JNC $+6
       SUB "0
       DEC D
       RET 
       CP "A
       RET C
       SUB #37
       DEC D
       RET 

D0TO_

       LD A,(HL)
       CP "0
       JC d0TO0
       CP ":
       JNC $+5
       SUB "0
       RET 
       CP "A
       JC d0TO0
       CP "G
       JNC $+5
       SUB #37
       RET 

d0TO0 LD (HL),"-

       LD A,#7F
       RET 

ENVFL

       LD HL,ead,A,(HL)
       XOR 128
       LD (HL),A
       INC L
       LD (HL),A
       RET 

TSTOCT

       LD A,(23560)
       CP kE
       JZ ENVFL
       SUB "1
       CP 9
       RET NC
      ;CALL NEWOCT
      ;JP SHOLK
NEWOCT
       AND 7
       INC A
       LD (OCT),A
1

PROCT LD DE,#D08

       JP PRBCD

POSEDIT

       LD BC,mPOS
       CALL WINDUM
       LD HL,tPOS
       LD DE,0
       CALL PRMENU
       XOR A
       LD (EpMflag),A
       LD (EpY),A
       LD A,(POS)
       CALL EDPOSR

POSED0

      CALL RESHALT
       LD A,#28
       CALL EpPRCUR
       CALL EDPOSKY
       LD A,5
       CALL EpPRCUR
       CALL EpCHMRK
       CALL EpPRMRK
       CALL TSTFIRE
       JNC POSED0
       LD A,(EsTOP),B,A
       LD A,(EpY)
       ADD A,B
       LD (POS),A
       LD L,A,H,'TPOSS
       LD A,(HL),(EPAT),A
       LD L,A
       INC H
       LD A,(HL),(PATLEN),A
       CALL CLOSWIN
       CALL POSFON
       JP PRPAT

EpPRMRK

       LD HL,#58C3
       LD BC,(LOOP)
       LD DE,32
       LD A,(EsTOP)
       EXA 
       LD A,16

EpPRMR0 EXA

       CP C
       JNC EpPRMR1+1

EpPRMRQ LD (HL),#28

       INC A
       EXA 
       ADD HL,DE
       DEC A
       JNZ EpPRMR0
       RET 

EpPRMR1 EXA

       CP B
       JNC EpPRMRQ
       LD (HL),#55
       INC A
       EXA 
       ADD HL,DE
       DEC A
       JNZ EpPRMR1
       RET 

EpCHMRK

       LD A,(EpMflag)
       OR A
       CALL NZ,EpCHEND
       LD A,(NOPKA)
       OR A
       RET Z
       XOR A

EpMflag=$+1

       CP 0
       JNZ EpCHMRQ
       CALL EpARPOS
       RET C
       LD (LOOP),A
       CPL 

EpCHMRQ LD (EpMflag),A

       RET 

EpCHEND CALL EpARPOS

       RET C
       LD HL,LOOP
       CP (HL)
       JNC $+3
       LD A,(HL)
       INC A,HL
       LD (HL),A
       RET 
1

EsCHMRK

       LD A,(EsMflag)
       OR A
       CALL NZ,esCHEND
       LD A,(NOPKA)
       OR A
       RET Z
       XOR A

EsMflag=$+1

       CP 0
       JNZ esCHMRQ
       CALL EsARPOS
       RET C
       LD (EsLOOP),A
       CPL 

esCHMRQ LD (EsMflag),A

       RET 

esCHEND

       CALL EsARPOS
       RET C
      LD HL,EsLOOP
      SUB (HL)
       RET C
       INC A
       LD (EsLEN),A
       RET 
1

EoCHMRK

       LD A,(EoMflag)
       OR A
       CALL NZ,eoCHEND
       LD A,(NOPKA)
       OR A
       RET Z
       XOR A

EoMflag=$+1

       CP 0
       JNZ eoCHMRQ
       CALL EoARLOP
       RET C
       LD (EoLOOP),A
       CPL 

eoCHMRQ LD (EoMflag),A

       RET 

eoCHEND CALL EoARLOP

       RET C
       LD HL,EoLOOP
       SUB (HL)
       RET C
       INC A
       LD (EoLPlen),A
       RET 

EpARPOS

       LD BC,#610
       LD L,3
       JR psARPOS

EsARPOS

       LD BC,SMPY+1<8+SMPH
       LD L,1+SMPX

psARPOS LD A,(ARXY)

       RRA 
       RRA 
       RRA 
       AND 31
       SUB B
       CP C
       CCF 
       RET C
       LD C,A
       LD A,(ARX)
       RRA 
       RRA 
       RRA 
       AND 31
       CP L
       JNZ SCFRET
       LD A,(EsTOP)
       ADD A,C
       RET 

EoARLOP

       LD A,1

EoARPOS

       LD E,A
       LD HL,(ARXY)
       LD A,L
       RRA 
       RRA 
       RRA 
       AND 31
       SUB 3
       RET C
       CP 16
       CCF 
       RET C
       LD D,A
       LD A,H
       RRA 
       RRA 
       RRA 
       AND 31
       LD BC,#400

EoARp0 CP E

       JZ EoARpQ
       SUB 4
       INC C
       DJNZ EoARp0

SCFRET SCF

       RET 

EoARpQ LD A,C

       ADD A,A,A,A,A,A,A,A,A,D
       RET 

decCOR

       LD A,(DE)
       CP L
       RET C
       DEC A
       LD (DE),A
       RET 

incCOR

       LD A,(DE)
       CP L
       RET C
       RET Z
       INC A
       RET Z
       LD (DE),A
       RET 

EDPOSB

       CALL EpGadr
       LD (LOOP),A
       RET 

EDPOSE

       CALL EpGadr
       LD (LENG),A
       RET 

EpPRCUR

       EXA 
       LD A,(EpY)
       ADD A,A,A,A,A,A,A,A
       LD L,A,H,0
       ADD HL,HL
       LD DE,#58C6
       ADD HL,DE
       EXA 
       LD (HL),A
       INC L
       LD (HL),A
       INC L
       LD (HL),A
       RET 

EpGadr

       LD A,H
       ADD A,L
       LD L,A
       LD H,'TPOSS
       RET 

EDPOSDQ

       LD (EpY),A
       JP SHOLK

EDPOSKY

       CALL BIT5
       RET Z
       LD HL,(EsTOP)

EpY=$+1

       LD H,0
       CALL RECHEX
       INC D
       JZ EDpDIG
       LD A,(23560)
       CP "K
       JZ EDPOSB
       CP "L
       JZ EDPOSE
       SUB 8
       JNZ EDPOSNL
       LD A,L
       SUB 15
       JNC $+3
       XOR A
       JR EDPOSTO

EDPOSNL DEC A

       JNZ EDPOSNR
       LD A,L
       ADD A,15

EDPOSR CP -16

       JC $+4
       LD A,-16
       JR EDPOSTO

EDPOSNR DEC A

       JNZ EDPOSND
       LD A,H
       INC A
       AND 15
       JNZ EDPOSDQ
       LD A,L
       INC A
       CP -15
       RET Z
       JR EDPOSTO

EDPOSND DEC A

       JNZ EDPOSNU
       LD A,H
       DEC A
       JP P,EDPOSDQ
       LD A,L
       SUB 1
       RET C

EDPOSTO LD (EsTOP),A

       JR PRPOS

EDPOSNU CP kDelLn-11

       JNZ EDpNdelln
       CALL EpGadr
       LD D,H,E,L
       INC L
       RET Z
       PUSH HL
       LD A,(HL),(DE),A
       INC E,L
       JNZ $-4
       POP HL
       LD DE,LOOP
       CALL decCOR
       LD DE,LENG
       CALL decCOR
       JR PRPOS

EDpDIG

       LD D,A
       CALL EpGadr
       LD A,(HL)
       LD B,4
       ADD A,A
       JC EpDIGo
       DJNZ $-3
       ADD A,D
       CP PATS
       JC $+3

EpDIGo LD A,D

       LD (HL),A

PRPOS

       LD HL,(EsTOP),H,'TPOSS
       LD A,16,DE,#41C3

PRPOS0 PUSH AF,DE

       LD A,L
       PUSH HL
       CALL PRF8
       POP HL
       INC E,E,E
       LD A,(HL)
       INC L
       PUSH HL
       CALL PRF8
       POP HL,DE
       LD A,D
       ADD A,6
       LD D,A
       CALL DDE
       INC D
       POP AF
       DEC A
       JNZ PRPOS0
       JP SHOLK

EDpNdelln

       CP 201-11
       RET NZ
       CALL EpGadr
       XOR -1
       RET Z
       PUSH HL
       LD C,A,B,0
       LD DE,bf240
       PUSH HL,DE
       LDIR 
       LD C,A
       POP HL,DE
       INC E
       LDIR 
       POP HL
       LD DE,LOOP
       CALL incCOR
       LD DE,LENG
       CALL incCOR
       JR PRPOS

EoGadr EoLIN=$+1

       LD A,0

ornADR=$+1

       LD HL,EDORbf
       ADD A,L
       LD L,A
       LD A,(HL)
       RET 

EDOR_p

       POP AF,HL
       CALL ORNQU
       CALL DECORN ;+print
       JP EDORN

EDOR_n

       POP AF,HL
       CALL ORNQU
       CALL INCORN ;+print
       JP EDORN

EDORNKY

       CALL BIT5
       RET Z
       LD B,1
      CP 4
      JZ EDOR_p
      CP 5
      JZ EDOR_n
       CP 172;i
       JZ EDORSMP
       CP "E
       JZ EDORNUM
       LD B,-1
       CP 197;u
       JZ EDORSMP
       CP "W
       JZ EDORNUM
       LD B,12
       CP "T
       JZ EDORNUM
       LD B,-12
       CP "R
       JZ EDORNUM
       CP "0
       JZ EDOR0
       CP kIns
      JZ EDoINS
       CP kDelLn
      JP Z,EDoDELLN
       CP "K
      JP Z,EDoBEG
       CP "L
      JP Z,EDoEND
       CP "+
       JZ EDoPLU
      SUB "0;1
      CP 9;8
       RET NC
      LD (OCT),A

EDORSq CALL PRORNos

       JP SHOLK

EDoPLU CALL EoGadr

       JR EDORNEG

EDORSMP

       LD HL,EoSMP,A,(HL)
       ADD A,B
       AND 31
       LD (HL),A
       JR EDORSq

EDORNUM

       CALL EoGadr
       ADD A,B
       LD B,0
       JP P,$+6
       INC B
       NEG 
      AND 127
      CP 96
      JC $+4
      LD A,96
       DJNZ $+4

EDORNEG

       NEG 
       LD (HL),A
       CALL ORNline
       JP SHOLK

EDOR0

       CALL EoGadr
       XOR A
       JR EDORNEG

EDoINS

       CALL EoGadr
       LD A,63
       SUB L
       RET Z
       LD L,62,E,63,D,H,B,0,C,A
       LDDR 
      INC L
       LD DE,EoLOOP
       CALL incCOR
      JZ $+4
      JNC EDoz
       EXD 
       INC HL
      DEC A
       ADD A,(HL)
       CP E
       JC EDoz
       CP 63
       JNC $+3

EDoINSQ INC (HL)

       JR EDoz

EDoDELLN

       CALL EoGadr
       LD D,H,E,L
       INC L
       LD A,64
       SUB L
       RET Z
       LD B,0,C,A,A,L
       LDIR 
       LD L,A
       LD DE,EoLOOP
       CALL decCOR
      JNC EDoz
       EXD 
       INC HL
       ADD A,(HL)
       CP E
       JC EDoz
       DEC (HL)
       JZ EDoINSQ

EDoz

       CALL PRORN
       JP SHOLK

EDoBEG

       LD A,(EoLIN)
      LD HL,EoLOOP

EDoBEGQ LD C,(HL)

      LD (HL),A
      INC HL
      SUB C
      NEG 
      ADD A,(HL)
      LD (HL),A
       RET 

EDoEND

       LD HL,EoLOOP
       LD A,(EoLIN)
       SUB (HL)
       INC HL
       LD (HL),A
       RET 

EDsBEG

       LD A,(EsLIN)
      LD HL,EsLOOP
      JR EDoBEGQ

EDsEND

       LD HL,EsLOOP
       LD A,(EsLIN)
       SUB (HL)
       INC HL
       LD (HL),A
       RET 

PRORN

       LD HL,EDORbf
       LD E,1,C,16

PRORN0 PUSH HL

       LD D,1,B,4

PRORN1 PUSH BC

       LD A,L
       CALL toOO
       INC D,D
       PUSH HL
       LD A,(HL),L,A
       OR A
       LD B,"+
       CALL M,NEGHL-2
       LD A,B
       CALL PRADD
       INC D
       LD A,L
       CALL toOO
       INC D,D,D
       POP HL
       LD BC,16
       ADD HL,BC
       POP BC
       DJNZ PRORN1
       INC E
       POP HL
       INC L
       DEC C
       JNZ PRORN0
       RET 

EORNCUR

       CALL BIT5
       RET Z
       SUB 8
       LD B,-16
       JZ EORNC
       DEC A
       LD B,16
       JZ EORNC
       DEC A
       LD B,1
       JZ EORNC
       DEC A
       LD B,-1
       RET NZ

EORNC LD A,(EoLIN)

       ADD A,B
       AND 63

EORNCQ EXA

       LD E,7
       CALL GornMRK+2
       EXA 
       LD (EoLIN),A
       LD HL,SHOLK
       PUSH HL

GornMRK LD E,56,A,(EoLIN)

       LD BC,16
       LD H,B
       INC B
       SUB C
       JNC $-2
       ADD A,C,A,3
       ADD A,A,A,A,A,A
       LD L,A
       ADD HL,HL,HL,HL
       LD A,H
       SUB -88
       LD H,A,A,B
       ADD A,A,A,A
       SUB 2
       OR L
       LD L,A,(HL),E
       INC L
       LD (HL),E
       RET 

ORNline

       LD A,(EoLIN),BC,16
       INC B
       SUB C
       JNC $-2
       ADC A,C
       LD E,A,A,B
       ADD A,A,A,A,A,A
       SUB 4
       LD D,A
       LD HL,(ornADR)
       LD A,(EoLIN)
       ADD A,L
       LD L,A,A,(HL),L,A
       OR A
       LD B,"+
       CALL M,NEGHL-2
       LD A,B
       CALL PRADD
       INC D
       LD A,L
       JP toOO

EoPRMRK

       LD A,(NOPKA)
       OR A
       LD A,3
       CCF 
       CALL NZ,EoARPOS
       CALL NC,EORNCQ

EoLOOP=$+1 EoLPlen=$+2

       LD BC,0,DE,32
       XOR A
       LD HL,#5861

PRoLP0 CP C

       JZ PRoLPQ
       LD (HL),5
       CALL PRoLPP
       JNZ PRoLP0
       RET 

PRoLPQ LD (HL),#5D

       CALL PRoLPP
       RET Z
       DJNZ PRoLPQ
       JR PRoLP0

PRoLPP INC A

       PUSH AF
       AND 15
       JNZ PRoLPE
       LD A,L
       AND 31
       LD H,88
       ADD A,#44
       LD L,A

PRoLPE ADD HL,DE

       POP AF
       AND 63
       RET 

EsPRMRK

       LD HL,SMPATR+1;#58E5

EsLOOP=$+1 EsLEN=$+2

       LD BC,#100,A,C
       ADD A,B
       LD B,A,DE,32
       LD A,(EsTOP)
       EXA 
       LD A,SMPH

EsPRMR0 EXA

       CP C
       JNC EsPRMR1+1

EsPRMRQ LD (HL),5

       INC A
       EXA 
       ADD HL,DE
       DEC A
       JNZ EsPRMR0
       RET 

EsPRMR1 EXA

       CP B
       JNC EsPRMRQ
       LD (HL),#5D
       INC A
       EXA 
       ADD HL,DE
       DEC A
       JNZ EsPRMR1
       RET 

EDSMORN

       LD HL,EsORN,A,(HL)
       ADD A,C
       AND #F
       LD (HL),A
       JR EDSMOq

EDSM_p

       POP AF,HL
       CALL SMPQU
       CALL DECSMP
       JP EDSMP

EDSM_n

       POP AF,HL
       CALL SMPQU
       CALL INCSMP
       JP EDSMP

EDSMPKY

       CALL FIRE
       JP NZ,EDSMPFI
       XOR A
       LD (EDSMFIh),A
       CALL BIT5
       RET Z
      CP 4
      JZ EDSM_p
      CP 5
      JZ EDSM_n
       LD BC,32
       CP "R
       JZ EDSMNUM
       LD C,1
       CP 172;i
       JZ EDSMORN
       CP "W
       JZ EDSMNUM
       DEC BC,BC
       CP 197;u
       JZ EDSMORN
       CP "E
       JZ EDSMNUM
       LD C,-32
       CP "T
       JZ EDSMNUM
       CP "0
       JZ EDSM0
       CP "+
       JZ EDsPLU
      SUB "0;1
      CP 9;8
       RET NC
      LD (OCT),A

EDSMOq CALL PROCORN

       JP SHOLK

EsX=$+1 EDsPLU LD A,0

       INC A
       RET Z
       CALL EsGadr
       PUSH HL
       POP IX
       LD L,(IX),H,(IX+1)
       CALL NEGHL
       JR EDSMNQ

EDSM0

       CALL EsGadr
       LD A,(EsX)
       INC A
       JNZ EDsNOI0
       INC L,L
       LD A,(HL)
       AND #E0
       LD (HL),A
       JR EDsNOIQ

EDsNOI0 XOR A

       LD (HL),A
       INC L
       LD (HL),A
       JR EDSMKQ

EDSMNUM

       LD A,(EsX)
       INC A
       JZ EDSMNOI
       CALL EsGadr
       PUSH HL
       POP IX
       LD L,(IX),H,(IX+1)
       ADD HL,BC
       LD A,H
       OR A
       LD B,#F
       JP P,EDSMNOK
       CALL NEGHL
       LD A,H
       AND B
       LD H,A
       CALL NEGHL
       JR $+4

EDSMNOK AND B

       LD H,A

EDSMNQ LD (IX),L,(IX+1),H EDSMKQ CALL EsPRNUM

       JP SHOLK

EDSMNOI

       CALL EsGadr
       INC L,L
       LD A,(HL)
       SUB C
       XOR (HL)
       AND 31
       XOR (HL)
       LD (HL),A

EDsNOIQ CALL EsPRNOI

       JP SHOLK

EsGadr

       LD H,'EDORbf,A,(EsTOP),D,A

EsLIN=$+1

       LD A,0
       PUSH AF
       SUB D
       LD E,A
       POP AF
       ADD A,A,A,A
       LD L,A
       RET 
3

PRSMLIN

       PUSH AF,AF
       LD D,1
       CALL toOO
       LD D,8
       POP AF
       ADD A,A,A,A
       LD HX,'EDORbf,LX,A
       LD A,(IX+1)
       OR A
       LD L,(IX),H,(IX+1)
       LD B,"+
       CALL M,NEGHL-2
       LD A,"+"+"-
       SUB B
       CALL PRADD
       INC D
       CALL toOOOO
       INC D,D
       LD A,(IX+2)
       PUSH AF
       AND 31
       CALL toOO
       INC D,D
       POP AF
       CALL PRTNE
       LD A,(IX+3)
       CALL PRVTN
       POP AF
       JP PRSMVOL

EsPRNUM

       CALL EsGadr
       LD D,8,A,(HL)
       INC L
       LD H,(HL),L,A,A,H
      RLA 
       LD B,"-
      JNC $+7
       LD B,"+
       CALL NEGHL
       LD A,B
       CALL PRADD
       INC D
       JP toOOOO

EsPRNOI

       CALL EsGadr
       ADD A,2
       LD L,A,D,#E,A,(HL)
       AND 31
       JP toOO

TNEVTN

       LD H,'EDORbf

TNEVTNl=$+1

       LD L,0

TNEVTNy=$+1

       LD DE,#1100
       LD A,(HL)
       INC HL
       LD B,(HL)
       PUSH BC
       CALL PRTNE
       POP AF
       JR PRVTN

PRTNE

       LD L,A,H,"-
       AND #80
       LD A,"T
       JZ $+3
       LD A,H
       CALL PRADD
       INC D
       LD A,L
       AND 64
       LD A,"N
       JZ $+3
       LD A,H
       CALL PRADD
       INC D
       LD A,L
       AND 32
       LD A,"E
       JZ $+3
       LD A,H
       JP PRADD

PRVTN

       LD D,4,C,A
       RLA 
       LD A,"0
       JNC PRVTN0
       BIT 6,C
       LD A,"-
       JZ $+4
       LD A,"+

PRVTN0 CALL PRADD

       LD A,32
       CALL PRVTNPP
       LD A,16

PRVTNPP AND C

       LD A,"0
       JZ $+4
       LD A,"+
       INC D
       JP PRADD

EsFITN

       LD B,32
       CP SMPX<3+#1C
       JC $+7

EsFIfN LD B,16

       CP 64
       RET NC
       INC HL
       LD A,(HL)
       XOR B
       JR EsFIVTQ

EsFIx

       SBC A,A
       EXA 
       CALL GsMRK7
       LD A,(EsFIlin),(EsLIN),A
       EXA 
       LD (EsX),A
       CALL GsMRK56
       JP SHOLK

EsNfix

       CALL EDSMFIp
       XOR A
       JR EsFIfN

EsTfix

       CALL EDSMFIp
       XOR A
       JR EsFITN

EsAfix

       CALL EDSMFIp
       JR EsFIV

EsTi

       CALL EDSMFIp
       XOR A
       JR Es_T

EsNi

       CALL EDSMFIp
       XOR A
       JR Es_N

EsEi

       CALL EDSMFIp
       JR Es_E

EsFIVTN

       CP SMPX<3+#38
       CCF 
       JC EsFIx ;смещ.шума
       CP SMPX<3+#28
       JNC EsFIx ;цикл
       CP SMPX<3+#14
       RET C ;слева от VTN
       CP SMPX<3+#18
       JNC EsFITN

EsFIV INC HL

       LD A,(HL),C,A
       LD B,#80
       AND B
       JNZ $+6
       LD A,C
       OR B
       JR EsFIVTQ
       LD A,C
       XOR 64
       LD C,A
       AND 64
       LD A,C
       JNZ $+4
       AND 63

EsFIVTQ LD (HL),A

       JR EsFIQ

EDSMPFI

       LD HL,(ARXY),A,L
       SUB SMPY+1<3;#38
       CP SMPH<3
       RET NC
       RES 0,H,1,H
       RRA 
       RRA 
       RRA 
       AND #1F
       LD B,A
       CP 0
       LD ($-1),A
       LD A,H
       JNZ EDSMFIn

EDSMFIh=$+1

       CP 0

EDSMFIn LD ($-1),A

       RET Z
      CALL EDSMFIP
       CP SMPX<3+#48
       JC EsFIVTN
       CP SMPX<3+#54
       JNC EsFIVOL

Es_T LD B,#80

       CP SMPX<3+#4C
       JC EsFINUM

Es_N LD B,64

       CP SMPX<3+#50
       JC $+4

Es_E LD B,32 EsFINUM LD A,(HL)

       XOR B
       LD (HL),A

EsFIQ CALL TNEVTN

       JP SHOLK

EDSMFIp

       LD A,(EsLIN),HL,EsTOP
       SUB (HL)
       LD B,A

EDSMFIP LD A,(EsTOP)

       ADD A,B
       LD (EsFIlin),A
       ADD A,A,A,A,A,2
       LD L,A,(TNEVTNl),A
       LD A,B

EDSpQ LD (TNEVTNy),A

       LD A,H,H,'EDORbf
       RET 

EsVOLi

       CALL EDSMFIp
       INC HL
       LD A,(HL)
       INC A
       JR EsVOLQ

EsVOLd

       CALL EDSMFIp
       INC HL
       LD A,(HL)
       DEC A
       JR EsVOLQ

EsFIVOL

       SUB SMPX<3+#54
       CP #40
       RET NC
       RRA 
       RRA 
       INC HL

EsVOLQ AND #F

       LD E,A,A,(HL)
       AND #F0
       OR E
       LD (HL),A
       LD A,(TNEVTNy),E,A

EsFIlin=$+1

       LD A,0
       CALL PRSMVOL
       JP SHOLK

EDsSCUP

       LD DE,SMPATR&#300<3+.SMPATR+#4001+SMPX
       LD HL,SMPATR+32&#300<3+.(SMPATR+32)+#4001+SMPX
       LD A,SMPH<3-8

EDsSCU0

       CALL EDsLDI
       CALL DHL,DDE
       EXA 
       JNZ EDsSCU0
       RET 

EDsSCDN

       LD DE,SMPBOT&#300<3+.SMPBOT+#4001+SMPX
       LD HL,SMPBOT-32&#300<3+.(SMPBOT-32)+#4001+SMPX
       LD A,SMPH<3-8

EDsSCD0

       CALL EDsLDI
       CALL UHL,UDE
       EXA 
       JNZ EDsSCD0
       RET 

EDsLDI

       DEC A
       EXA 
       LD BC,19
       PUSH HL,DE
       LDIR 
       POP DE,HL
       RET 

EDsUP

       DEC A
       RET NZ
       CALL GsMRK7
       LD A,(EsLIN)
       DEC A
       JP M,EDsCQ
       LD B,A,A,(EsTOP),C,A
       DEC A
       CP B
       JNZ EDsUQ
       PUSH BC
       CALL EDsSCDN
       POP BC
       LD A,C
       DEC A
       LD (EsTOP),A
       PUSH BC
       LD E,0
       CALL PRSMLIN
       POP BC

EDsUQ LD A,B,(EsLIN),A

       JR EDsCQ

EDsLR

       CALL GsMRK7
       LD HL,EsX,A,(HL)
       CPL 
       LD (HL),A

EDsCQ CALL GsMRK56

       JP SHOLK

EDSMCUR

       CALL BIT5
       RET Z
       CP "A
      JP Z,EsAfix
       CP "9
      JP Z,EsTfix
       CP "F
      JP Z,EsNfix
       CP ")
      JP Z,EsVOLi
       CP "(
      JP Z,EsVOLd
       CP kIns
      JZ EDsINS
       CP kDelLn
      JP Z,EDsDELLN
       CP "K
      JP Z,EDsBEG
       CP "L
      JP Z,EDsEND
       CP "Y
      JP Z,EsTi
       CP "U
      JP Z,EsNi
       CP "I
      JP Z,EsEi
     ; SUB 4
     ; JZ EDsTRU
     ; DEC A
     ; JP Z,EDsINV
       SUB 3+5
       JZ EDsLR
       DEC A
       JZ EDsLR
       DEC A
       JP NZ,EDsUP
       CALL GsMRK7
       LD A,(EsLIN)
       INC A
       AND 63
       JZ EDsCQ
       LD BC,(EsTOP),B,A
       SUB C
       CP SMPH
       JNZ EDsDQ
       PUSH BC
       CALL EDsSCUP
       POP BC
       LD A,C
       INC A
       LD (EsTOP),A
       PUSH BC
       LD E,SMPH-1
       ADD A,E
       CALL PRSMLIN
       POP BC

EDsDQ LD A,B,(EsLIN),A

       JP EDsCQ
      IFN 0

EDsTRU

       CALL GsMRK7
       LD HL,EsLIN,A,(HL)
       SUB SMPH
       LD (HL),A
       LD DE,EsTOP,A,(DE)
       SUB SMPH
       JNC $+4
       XOR A
       LD (HL),A
       JR EDsInE
      ENDIF 

EDsINS

       CALL EsGadr
       LD A,-4
       SUB L
       RET Z
       LD L,-5,D,H,E,-1,B,0,C,A
       LDDR 
      INC L
      SRL L,L
       LD DE,EsLOOP
       CALL incCOR
      JZ $+4
      JNC EDsINVQ
       EXD 
       INC HL
      DEC A
       ADD A,(HL)
       CP E
       JC EDsINVQ
       CP 63
       JNC $+3
       INC (HL)
       JR EDsINVQ

EDsDELLN

       CALL EsGadr
       LD D,H,A,L
       ADD A,4
       LD E,A
       EXD 
       XOR A
       LD B,A
       SUB L
       RET Z
       LD C,A
      LD A,L
       LDIR 
      LD L,A
      SRL L,L
       LD DE,EsLOOP
       CALL decCOR
      JNC EDsINVQ
       EXD 
       INC HL
       ADD A,(HL)
       CP E
       JC $+3
       DEC (HL)
      IFN 0
       JR EDsINVQ

EDsINV

       CALL GsMRK7
       LD HL,EsLIN,A,(HL)
       ADD A,SMPH
       LD (HL),A,DE,EsTOP,A,(DE)
       ADD A,SMPH
       CP 65-SMPH
       JC EDsInE
       LD (HL),63
       LD A,64-SMPH

EDsInE LD (DE),A

      ENDIF 

EDsINVQ CALL SHOLK

       CALL PRSMP

GsMRK56

       LD E,56
       JR GsmpMRK

GsMRK7

       LD E,7

GsmpMRK

       LD A,(EsLIN)

EsTOP=$+1

       SUB 0
       ADD A,A,A,A,A,A
       LD L,A,H,0,BC,SMPATR;#58E4
       ADD HL,HL,HL,HL,HL,BC
       LD A,(EsX)
       OR A
       LD A,5
       JZ $+4
       LD A,7
       ADD A,L
       LD L,A
       LD (HL),E
       INC L
       LD (HL),E
       RET 

PRORNos

      LD A,(OCT)
      ADD A,"0
       LD DE,#E11
       CALL PRADD
       LD A,(EoSMP)
       CALL HEXDIG
       LD D,#18
       JP PRADD

PROCORN

      LD A,(OCT)
      ADD A,"0
       LD DE,#1000+SMPH
       CALL PRADD
       LD A,(EsORN)
       CALL HEXDIG
       LD D,#1C
       JP PRADD

PRSMP

       LD E,0
       LD A,(EsTOP)
       ADD A,SMPH
       LD (PRSMPe),A
       SUB SMPH

PRSMP0 PUSH AF,DE

       CALL PRSMLIN
       POP DE,AF
       INC E,A

PRSMPe=$+1

       CP 0
       JNZ PRSMP0
       RET 

PRSMVOL

       PUSH DE,AF
       CALL PRADDPP
       LD D,11+SMPX
       CALL DE2SCR
       INC H
       EXD 
       LD H,'EDORbf
       POP AF
       ADD A,A,A,A,A,3
       LD L,A,A,(HL)
       AND #F
       LD (PRSMVa),A
       EXD 
       PUSH AF,HL
       LD A,#22,B,7
       CALL BLOBER
       INC L
       DJNZ $-4
       LD A,#20
       CALL BLOBER
       POP HL,AF
       LD E,A
       RRA 
       PUSH AF
       AND 7
       JZ PRVOL7
       LD B,A,A,#77

PRVOL0 LD D,H

      DUP 5
       LD (HL),A
       INC H
      EDUP 
       LD (HL),A,H,D
       INC L
       DJNZ PRVOL0

PRVOL7 LD A,E

       CP #F
       LD E,#72
       JNZ $+4
       LD E,#70
       POP AF
       LD A,E
       CALL C,BLOBER7

PRSMVa=$+1

       LD A,0
       POP DE
       LD D,#25
       JP D2HEX

DQ LD A,B,(EsLIN),A

       JP EDsCQ
      IFN 0

EDsTRU

       CALL GsMRK7
       LD HL,EsLIN,A,(HL)