Changes

Jump to: navigation, search

PROTRACKER372 PT5 371 H

2,115 bytes added, 20:32, 8 March 2020
no edit summary
pt5_371 C��VМ�НNщ MAIN "",#C6 AUTOS LD HL,AUTO1 LD A,4 LD DE,#E0A CALL EDTXT AUTOSu LD HL,AUTO1 LD DE,AUTO2 LD A,(HL) CP "G JC AUT0s CP "W JNC AUT0s SUB "G OR #80 LD (DE),A INC DE,HL JR AUTO0-2 AUT0s CALL D0TO_ LD (DE),A INC DE,HL LD B,3 AUTO0 CALL D0TO_ LD (DE),A INC DE,HL DJNZ AUTO0 LD HL,AUTO1 LD DE,#E0A LD B,4 JP PRTXADD BYS LD HL,TAUTHOR,DE,#60D JR $+8 TITLES LD HL,TTITLE,DE,#60C LD A,#20 JP EDTXT COPYSMP CALL OUT4 SMP2=$+1 smp=$+2 LD BC,#101 LD A,B ADD A,'SMPS LD H,A SUB B ADD A,C LD D,A PUSH BC LD BC,256 LD L,C,E,C LDIR POP BC LD A,B ADD A,A LD L,A,H,'TSMPSZ LD E,(HL) INC L LD D,(HL) LD A,C ADD A,A LD L,A LD (HL),E INC L LD (HL),D JP PROK DECSMP LD A,31 JR $+4 INCSMP LD A,1 ONCSMP LD HL,smp LD DE,#2F06 LD B,A ADD A,(HL) AND 31 JNZ $+3 ADD A,B LD (HL),A CALL D2HEX LD A,(digit),(EDSMPN),A RET DECSMP2 LD A,31 JR $+4 INCSMP2 LD A,1 ONCSMP2 LD HL,SMP2 LD DE,#3906 LD B,A ADD A,(HL) AND 31 JR IORN2U DECORN LD A,15 JR $+4 INCORN LD A,1 ONCORN LD HL,ORN LD DE,#2F07 LD B,A ADD A,(HL) AND 15 JNZ $+3 ADD A,B LD (HL),A CALL D2HEX digit=$+1 LD A,"1 LD (EDORNN),A RET DECORN2 LD A,15 JR $+4 INCORN2 LD A,1 ONCORN2 LD HL,ORN2 LD DE,#3907 LD B,A ADD A,(HL) AND 15 IORN2U JNZ $+3 ADD A,B LD (HL),A JP D2HEX COPYORN CALL OUT4 CALL HLORN LD D,A PUSH HL ORN2=$+1 LD A,0 CALL HLOR3 LD E,A EXD EX (SP),HL LD BC,64 LDIR POP BC LD L,B,H,'TORNSZ LD E,(HL) INC L LD D,(HL) LD L,C LD (HL),E INC L LD (HL),D JP PROK IFN about ABOUT CALL PIANAY LD BC,mABOUT CALL WINDUM LD HL,tABOUT LD DE,AUTO20 CALL PRMENU CALL TSTFIRH JNC $-3 JP CLOSWIN ENDIF HOMEtra XOR A JZ ITRAQ INCTRA LD A,(transp) INC A ITRAQ LD C,0 JP P,$+7 NEG LD C,-1 AND #3F LD B,A INC C JNZ $+4 NEG LD (transp),A DEC C LD A,"+ JZ $+4 LD A,"- LD DE,#360D CALL PRADD LD A,B INC D JP toOO DECTRA LD A,(transp) DEC A JR ITRAQ pat1=$+1 INCPAT1 LD A,0 INC A LD B,0 IPAT1Q CP PATS JC $+3 LD A,B iPATq LD (pat1),A LD DE,#4937 JP PRF8 DECPAT1 LD A,(pat1) LD B,PATS-1 DEC A JR IPAT1Q pat2=$+1 INCPAT2 LD A,0 INC A LD B,0 IPAT2Q CP PATS JC $+3 LD A,B iPAT2q LD (pat2),A LD DE,#493C JP PRF8 DECPAT2 LD A,(pat2) LD B,PATS-1 DEC A JR IPAT2Q HOMEcop XOR A LD (beg1),A CALL IBEGq XOR A LD (beg2),A CALL IBEG2q LD A,63 JR IENDQ ENDcur LD A,(CURY) JR IENDQ INCEND LD A,(fromEND) INC A IENDQ AND 63 LD (fromEND),A LD DE,#2E0C JP toOO DECEND LD A,(fromEND) DEC A JR IENDQ PLSONG POS=$+1 LD DE,TPOSS LD A,(DE),(EPAT),A LD E,A INC D LD A,(DE),(PATLEN),A LD A,-1 PLPaSo LD HL,ESNGon LD B,(HL) PUSH BC,HL LD (HL),A CALL PATFON ;для PLPAT не надо,но можно CALL PRPAT LD HL,PLEXT,(PLJP),HL CALL INICHAN IFN pttfc LD A,pttfc CALL OUTME LD HL,tfmmuz CALL tfmini CALL tfm ;первый фрейм пуст LD A,1 LD (tfcplayon),A ENDIF CALL PLAYER IFN pttfc XOR A LD (tfcplayon),A LD A,pttfc CALL OUTME CALL tfmshut ENDIF POP HL,BC LD (HL),B RET PLPAT XOR A JR PLPaSo ;1(PRPAT) INITPLY LD A,#F LD (Avol),A LD (Bvol),A LD (Cvol),A LD A,#F0 LD (Avol2),A LD (Bvol2),A LD (Cvol2),A LD HL,ORNS LD (Aorn),HL LD (Born),HL LD (Corn),HL IFN ts LD HL,ayblock LD DE,ayblock2 LD BC,szayblock LDIR ENDIF ;3(EPENT,PLPAT,PLSONG) INICHAN LD A,-1 LD (Achan),A LD (Bchan),A LD (Cchan),A IFN ts LD (Achan+szayblock),A LD (Bchan+szayblock),A LD (Cchan+szayblock),A ENDIF RET PATLENS LD A,(PATLEN) CALL FILLENS CALL PROK PRPAT XOR A LD (CURY),A PRPATU CALL PIANAY CALL INITPLY PRPATUU CALL CHKTS ;3.7 LD A,(CURY) LD HL,PATLEN CP (HL) JC $+3
LD A,(HL)
CP "G JC AUT0s CP "W JNC AUT0s SUB "G OR #80 LD (DECURY),A INC DE,HL JR AUTO0-2 PUSH AFAUT0s CALL D0TO_PRCU7 LD A,(DEPOS),A INC DE,HLEXA LD BHL,3AUTO0 CALL D0TO_ LD (DEEPAT),A INC DE LD B,HLL DJNZ AUTO0 LD HLH,AUTO1'TPATSZ LD DEC,(HL) ;0..63 POP AF ;line#E0A patSUB=$+1 LD BE,4;5 для UPROLL IFN 1 ;см IFN ниже JP PRTXADD SUB EBYS JNC $+3 LD HL ADC A,TAUTHORC ELSE ;глючит печать 0-й позиции,DEт.к.идем на посл.поз.,#60Dпотом на LOOP ;а надо на 0-ю ;т.е. на средней строке надо вспоминать тек. позицию JR $+8 PRPATu0TITLES DEC A LD HL,TTITLE,DE JP P,#60CPRPATuY LD A,#20(ESNGon) JP EDTXT OR ACOPYSMP JZ PRPATuP PUSH DE CALL OUT4SMP2EXA ;A=$+1possmp CALL ROLprPO ;будет A'=$+2pos LD BCB,#101E ;pat ;глючит при ssQ !!!??? LD A,B(DE) ;patsz ADD LD C,A,'SMPS;0..63 POP DE PRPATuP LD HA,C PRPATuY DEC E JNZ PRPATu0 ENDIF ;A=line# SUB ;B=pat INC C ;C=patsz 1..64 ADD A,CEXA
LD D,A
PUSH BCEXA ;D=POS patHGT=$+1 LD BCL,2569 LD LE,C#F PRPAT0 PUSH HL,DE CALL STROKA POP DE INC E,A POP HL CP C LDIR POP BC JNZ PRPATNE LD A,B(ESNGon) INC A JNZ PRPATE IFN 1 ;см IFN выше ADD LD A,AE CP #14 JC PRPATE ENDIF LD LB,E LD A,HD CALL GETnPAA LD D,'TSMPSZE LD E,(HL)B LD B,A INC LD A,L LD L,B LD H,'TPATSZ LD DC,(HL) LD A, INC C ADD A,A
LD L,A
LD (HL),E PRPATE XOR A PRPATNE INC DEC L LD (HL),D JNZ PRPAT0 CALL FILLATR JP PROKPLREADDECSMP CLPATS LD XOR A,31 JR $+4 CLPATS0 PUSH AF CALL CLPATINCSMP POP AF LD INC A CP PATS JNZ CLPATS0 RET EDSONGCS CALL 8026 JP NC,1ONOFFTSONCSMP LD HL,smpEDSONG CALL MELINV LD DEHL,#2F06ESNGon LD B,A ADD A,(HL) AND 31 JNZ $+3 ADD A,BCPL
LD (HL),A
CALL D2HEX LD A,(POS) LD E,A,D,'TPOSS LD A,(DE),(EPAT),A LD E,A INC D LD A,(digitDE),(EDSMPNPATLEN),A CALL PATFON CALL PRPATU LD A,(editON) OR A ;0=не редактируем RET NZ ;редактируем JP EDPATu ;включаем редактированиеDECSMP2 curfla=$+1 FLACUR LD A,311 DEC A JR RET NZ curon=$+1 PRCUR LD A,0 CPL LD (curon),A LD A,(CURX) CP 6 JZ CUR2 CP 11+4INCSMP2 JZ CUR2 CP 16+8 JZ CUR2 LD HL,TEDCURX ADD A,L LD L,A LD A,(HL) lineX=$+1ONCSMP2 ADD A,0 SRL A LD HLC,#F0 JNC $+4 LD C,SMP2#F LD DED,A,E,#390613 CALL DE2SCR LD B,8 LD A,(HL) XOR C LD (HL),A INC H DJNZ $-4 CURQ LD A,6 RET CUR2 LD HL,TEDCURX ADD A,L LD L,A LD A,(HL) RRA LD D,A,E,#13 CALL DE2SCR LD BC,#8F0 cUR3 LD A,(HL) CPL LD (HL),A INC L LD A,(HL) XOR C LD (HL),A DEC L INC H DJNZ cUR3 JR CURQ PRCU7 LD A,(curon) AND 31 OR A RET Z JR IORN2UPRCURDECORN EDPATQ CALL JPITEM LD A,15#6F LD (DOWNM),A JR EDPAT0 INCROLL roll=$+4INCORN1 LD A,10 INC A CP 9 JC $+3 XOR AONCORN IROLQ LD HL(roll),ORNA LD DE,#2F07D09 JP PRBCD DECROLL LD BA,(roll) DEC A JP P,IROLQ LD A,8 ADD JR IROLQ EPss LD A,C JR IROLQ EPDOWN CALL PRCU7 LD L,1 CALL ROLLPATFON EPDQ JP SHOLK EPEXT CALL PRCU7 XOR A LD (HLeditON),A AND 15LD HL,ESNGon JNZ $+3 ADD A,BCP (HL)
LD (HL),A
CALL D2HEXNZ,MELINV POP AF JP WAITNOK EPUP CALL PRCU7 LD L,1 CALL UPROLL JR EPDQ ;3(ini,NLOOP,MENUUSE)digit EDPAT editON=$+1 LD A,"10 OR A LD ;если не редактировали(EDORNN0),Aто входим на EDPATu JZ EDPATu RET ;иначеDECORN2 ;если был EDSONG, то на EDSONG LD A,15(ESNGon) JR $+4 INC A JP Z,EDSONGINCORN2 RET EDPATu LD A,-1ONCORN2 LD HL,ORN2 LD DE,#3907 LD B(editON),A ADD A,(HL) AND 15IORN2U JNZ $+3 ADD XOR A,B LD (HLCURY),A JP D2HEX CALL PRPATCOPYORN EDPAT0 CALL OUT4RESHALT CALL HLORNFLACUR LD DHL,AEDPATQ PUSH HLORN2=$+1 LD (curfla),A,0 CALL HLOR3BIT5 RET Z LD HL,tSS LD EBC,A9 CPIR JZ EPss EXD CP "W EX (SP) JP Z,HLEDSONGCS LD BCIFN bemol CP kBEM JP Z,64EPbem LDIR ENDIF POP BC CP kssA LD L JP Z,BSSA CP kssR JP Z,HEPssr CP kIns JP Z,'TORNSZEPins CP kssE LD E JP Z,(HL)EPsse INC L CP kDelLn LD D JP Z,(HL)EPdelln CP kHom JZ EPGRA CP kEnd JZ EPEND LD LIFN tab CP kTab JP Z,CJCUR CP kTabL LD (HL) JP Z,EJCURL INC LENDIF LD (HL)IFN ts CP kChip JP Z,DSWPSONG ENDIF CP kSmp JP PROKZ,EDSMP IFN about CP kOrnABOUT JP Z,EDORN CALL PIANAY SUB 4 LD BC JP Z,mABOUTDECPOSU CALL WINDUM DEC A LD HL JP Z,tABOUTINCPOSU SUB 3 JZ LCUR DEC A LD DE,0 JZ RCUR CALL PRMENU DEC A CALL TSTFIRH JP Z,EPDOWN JNC $-3 DEC A JP CLOSWINZ,EPUP ENDIF DEC A,AHOMEtra JP Z,EPENT XOR DEC A JZ ITRAQ JP Z,EPEXT CALL 8026INCTRA JC NCAPCOM LD A,(transp23560) INC A CP kAON JP Z,AUTOON CP kEON JP Z,ENVON CP kTRA JP Z,TRANSP CP kBEG JP Z,BEGcur CP kEND JP Z,ENDcur CP kCOPITRAQ LD C JP Z,0COPcur CP kORD JP PZ,$+7POSEDIT NCAPCOM CALL TSTNOTE NEG CALL XPPSCF LD C JP Z,-1TSTOCT RET EPGRA AND #3F XOR A LD BHL,ACURY INC CCP (HL) JNZ $+4ePGQ NEG DEC H EPEND LD HL,(transpEPAT) LD H,A'TPATSZ DEC C LD A,"+(HL)
JZ $+4
LD A,"-
LD DE,#360D
CALL PRADD
LD A,B
INC D
JP toOO
DECTRA LD A,(transp)
DEC A
JR ITRAQ
 
pat1=$+1
INCPAT1 LD A,0
INC A
LD B,0RRA IPAT1Q CP PATS JC $+3 LD A,BiPATq ePGQ LD (pat1CURY),A LD DE,#4937 JP PRF8PRPATUDECPAT1 LD A,(pat1) LCUR LD B,PATS-1 CALL PRCU7 DEC A JR IPAT1Q pat2 CURX=$+1INCPAT2 LD A,06 INC DEC A LD B JP P,0LCURQM3IPAT2Q CP PATS JC $+3 LD A,B20+12 JP LCURQM3iPAT2q LD (pat2),ARCUR LD DE,#493C JP PRF8 CALL PRCU7DECPAT2 LD A,(pat2CURX) LD B,PATS-1 DEC INC A JR IPAT2Q CP 21+12HOMEcop JC $+3 XOR A LCURQM3 LD (beg1CURX),A LCURQ CALL IBEGqPRCUR XOR A JP SHOLK LD (beg2),A EPENT CALL IBEG2q playon=$+1 LD A,63-1 JR IENDQ OR AENDcur JP NZ,EPENTi LD A,(CURYCURX) JR IENDQ CP 6INCEND JZ EPENTi LD A,(fromEND) CP 11 INC A JZ EPENTiIENDQ AND 63 LD (fromEND),A CP 16 LD DE,#2E0C JP toOODECEND LD ANZ,(fromEND)PLNOTE DEC A JR IENDQPLSONGPOS=$+1 LD DE,TPOSS EPENTi LD A,(DENOTENV),(EPAT),A LD E,A INC D LD A,(DEenv),(PATLEN),A LD A,-1PLPaSo LD HL,ESNGonPLCANC LD B,(HLPLJP) PUSH BC,HL LD (HL),A CALL PATFON ;для PLPAT не надо,но можноINICHAN CALL PRPAT LD HL,PLEXT,(PLJP),HL JP PLAYER CALL INICHAN IFN pttfctab LD A,pttfc JCUR CALL OUTMEPRCU7 LD HLBC,tfmmuzTJP CALL tfmini JR JCUROK JCURL CALL tfm ;первый фрейм пустPRCU7 LD ABC,1TJPLEFT JCUROK LD (tfcplayon)HL,A ENDIF CALL PLAYER IFN pttfc XOR A LD (tfcplayonCURX),A LD AH,pttfc CALL OUTME CALL tfmshut ENDIF 0 POP ADD HL,BC LD A,(HL),B JP LCURQM3 RET ENDIF PLPAT ROLLPATFON XOR A CALL ROLL JR PLPaSo JP PATFON ;1(PRPAT)3INITPLY ROLL LD A,#F LD ;L=на сколько строк (Avolдля autoscroll),A LD (Bvol),A PUSH HL LD (Cvol),A CALL PRCU7 ROLnRE LD A,#F0 LD (Avol2EPAT),A LD (Bvol2nPAT),A LD (Cvol2),A LD POP HL,ORNS LD (Aorn),HL LD (Born),HL LD (Corn),HL IFN ts LD HL,ayblock LD DE,ayblock2 LD BC,szayblock LDIR ENDIF ROL0 ;3(EPENT,PLPAT,PLSONG)идем на строчку внизINICHAN LD A,-1 LD (AchanPATLEN), INC A LD (Bchan)C,A LD (Cchan),A IFN ts LD (Achan+szayblock),A LD (Bchan+szayblockCURY),A LD (Cchan+szayblock), INC A ENDIF RET CP CPATLENS JNZ ROLNZ LD A,(PATLENESNGon) CALL FILLENS OR A CALL PROKNZ,ROLnxPO ;C тоже корректируетсяPRPAT XOR A ROLNZ LD (CURY),APRPATU CALL PIANAY CALL INITPLYPRPATUU CALL CHKTS ;3.7 LD A,(CURY) LD HL,PATLEN CP (HL) JC $ищем +34-ю строчку LD A,(HL) LD (CURY),A PUSH AF CALL PRCU7EXA
LD A,(POS)
EXA
LD HL,(EPAT) LD B,L4 LD H,'TPATSZ ROLnx0 INC A LD CP C,(HL) ;0patsz=1..6364 POP AF ;line# JNZ ROLnx4patSUB ESNGon=$+1 LD E,4 ;5 для UPROLL IFN 1 ;см IFN ниже SUB E JNC $+3 ADC A,C ELSE ;глючит печать 0-й позиции, т.к.идем на посл.поз., потом на LOOP ;а надо на 0-ю;т.е. на средней строке надо вспоминать тек. позициюPRPATu0 DEC A JP P,PRPATuY LD A,(ESNGon) OR A JZ PRPATuP PUSH DEROLnxY EXA ;A=pos CALL ROLprPO ;будет A'=pos LD B,E GETnPAA;pat T ;глючит при ssQ !!!??? LD A,(DE) ;patsz LD C,->A ;0..63 POP DEPRPATuP LD A,CPRPATuY DEC E JNZ PRPATu0 ENDIF ;A=line#;B=pat INC C;C=patsz 1..64->(nPAT)
EXA
LD DA,AE
EXA
;D=POSpatHGT=$+1 LD L,9 LD E,#FPRPAT0 PUSH HL,DE CALL STROKA POP DE INC E,A POP HL CP C JNZ PRPATNE LD A,(ESNGon) INC A JNZ PRPATE IFN 1 ;см IFN выше LD A,E CP #14 JC PRPATE ENDIF LD B,E LD A,D CALL GETnPAA LD D,E LD E,B LD B,A LD A,L LD L,B LD H,'TPATSZ LD C,(HL) INC C LD L,APRPATE XOR APRPATNE DEC L JNZ PRPAT0 CALL FILLATR JP PLREADCLPATS XOR ACLPATS0 PUSH AF CALL CLPAT POP AF INC A CP PATS JNZ CLPATS0 RET EDSONGCS CALL 8026 JP NC,ONOFFTSEDSONG CALL MELINV LD HL,ESNGon LD A,(HL) CPL LD (HL),A LD A,(POS) LD E,A,D,'TPOSS LD A,(DE),(EPAT),A LD E,A INC D LD A,(DE),(PATLEN),A CALL PATFON CALL PRPATU LD A,(editON) OR A ;0=не редактируем RET NZ ;редактируемTPATSZ JP EDPATu ;включаем редактирование curfla=$+1FLACUR LD A,1 DEC A RET NZcuron=$+1PRCUR LD A,0 CPL LD (curon),A LD A,(CURX) CP 6 JZ CUR2 CP 11+4 JZ CUR2 CP 16+8 JZ CUR2 LD HL,TEDCURX ADD A,L LD L,A LD A,(HL)lineX=$+1 ADD A,0 SRL A LD C,#F0 JNC $+4 LD C,#F LD D,A,E,#13 CALL DE2SCR LD B,8 LD A,(HL) XOR C LD (HL),A INC H DJNZ $-4CURQ LD A,6 RET  CUR2 LD HL,TEDCURX ADD A,L LD L,A LD A,(HL) RRA LD D,A,E,#13 CALL DE2SCR LD BC,#8F0cUR3 LD A,(HL) CPL LD (HL),A INC L LD A,(HL) XOR C LD (HL),A DEC L INC H DJNZ cUR3 JR CURQ PRCU7 LD A,(curon) OR A RET Z JR PRCUR EDPATQ CALL JPITEM LD A,#6F LD (DOWNM),A JR EDPAT0INCROLLroll=$+1 LD A,0 INC A CP 9 JC $+3 XOR AIROLQ LD (roll),A LD DE,#D09 JP PRBCDDECROLL LD A,(roll) DEC A JP P,IROLQ LD A,8 JR IROLQ EPss LD A,C JR IROLQ EPDOWN CALL PRCU7 LD L,1 CALL ROLLPATFONEPDQ JP SHOLK EPEXT CALL PRCU7 XOR A LD (editON),A LD HL,ESNGon CP (HL) LD (HL),A CALL NZ,MELINV POP AF JP WAITNOKEPUP CALL PRCU7 LD L,1 CALL UPROLL JR EPDQ;3(ini,NLOOP,MENUUSE)EDPATeditON=$+1 LD A,0 OR A;если не редактировали(0), то входим на EDPATu JZ EDPATu;иначе;если был EDSONG, то на EDSONG LD A,(ESNGon) INC A JP Z,EDSONG RET EDPATu LD A,-1 LD (editON),A XOR A LD (CURY),A CALL PRPATEDPAT0 CALL RESHALT CALL FLACUR LD HL,EDPATQ PUSH HL LD (curfla),A CALL BIT5 RET Z LD HL,tSS LD BC,9 CPIR JZ EPss CP "W JP Z,EDSONGCS IFN bemol CP kBEM JP Z,EPbem ENDIF CP kssA JP Z,SSA CP kssR JP Z,EPssr CP kIns JP Z,EPins CP kssE JP Z,EPsse CP kDelLn JP Z,EPdelln CP kHom JZ EPGRA CP kEnd JZ EPEND IFN tab CP kTab JP Z,JCUR CP kTabL JP Z,JCURL ENDIF IFN ts CP kChip JP Z,SWPSONG ENDIF CP kSmp JP Z,EDSMP CP kOrn JP Z,EDORN SUB 4 JP Z,DECPOSU DEC A JP Z,INCPOSU SUB 3 JZ LCUR DEC A JZ RCUR DEC A JP Z,EPDOWN DEC A JP Z,EPUP DEC A,A JP Z,EPENT DEC A JP Z,EPEXT CALL 8026 JC NCAPCOM LD A,(23560) CP kAON JP Z,AUTOON CP kEON JP Z,ENVON CP kTRA JP Z,TRANSP CP kBEG JP Z,BEGcur CP kEND JP Z,ENDcur CP kCOP JP Z,COPcur CP kORD JP Z,POSEDITNCAPCOM CALL TSTNOTE CALL XPPSCF JP Z,TSTOCT RET EPGRA XOR A LD HL,CURY CP (HL) JNZ ePGQ DEC HEPEND LD HL,(EPAT) LD H,'TPATSZ LD A,(HL) JZ $+4
INC A
RRA ePGQ LD (CURY)C,A JP PRPATU ROLnxY XOR ALCUR ROLnx4 DJNZ ROLnx0 CALL PRCU7CURX=$ ;печатаем +14-ю строчку LD A,6 PUSH HL DEC A JP P,LCURQM3 CALL scrolST ;DI;не портит регистры LD AHL,20+12 JP LCURQM3(POS)RCUR PUSH HL CALL PRCU7 EXA LD A,(CURXPOS) INC ,A CP 21+12 EXA JC nPAT=$+31 XOR LD B,0 LD E,#17 CALL STROKA ;A=line#,E=scrY POP HLLCURQM3 LD (CURXPOS),AHL POP HL DEC L JNZ ROL0LCURQ rOLQ JP CALL PRCURFILLATR ;DI;EI ;JP SHOLKPATFON ;3000tEPENT UPROLLplayon CALL PRCU7 PATLEN=$+1 UPRnRE LD C,63 LD A,-1(CURY) DEC A CP C JC UPRNZ LD A,(ESNGon)
OR A
JP NZ,EPENTiJNZ UPRnxPO LD A,C UPRNZ LD (CURXCURY),A LD B,4 UPRnx4 DEC A CP 6C JZ EPENTiJC $+3 CP 11LD A,C DJNZ UPRnx4 JZ EPENTiLD E,#F CP 16LD BC,(EPAT-1) JP NZCALL scrol2 ;не портит регистры,PLNOTEне DI CALL STROKA uPRQ JR rOLQEPENTi UPRnxPO PUSH AF LD A,(NOTENVPOS) CALL ROLprPO LD (envEPAT),A LD HL,PLCANC EXA LD (PLJPPOS),HLA CALL INICHANPOP AF JP PLAYERRET C;pgUp IFN tabJCUR CALL PRCU7 LD BCA,TJP(DE) JR JCUROKJCURL CALL PRCU7 LD BC(PATLEN),TJPLEFTAJCUROK LD HL,(CURXCURY),HA ; PUSH AF ;! ; LD A,05 ADD HL;LD (patHGT),BCA ; LD A,(HLpatSUB),A JP LCURQM3;CALL scrol2 ;не портит регистры,не DI ENDIF ROLLPATFON CALL PRPATU ;PRPAT CALL ROLL JP PATFONPOSFON ;3+699ROLL ; POP AF ;L=на сколько строк LD (для autoscrollCURY),A PUSH HL CALL PRCU7ROLnRE ; LD A,4,(EPATpatSUB),A ;LD A,9,(nPATpatHGT),A POP HL JR uPRQROL0 PLAYER;идем на строчку вниз IFN hidearr LD A,1 LD (PATLENARROWt) INC ,A LD C,AENDIF LD A,18,(CURYoptions) INC ,A CP C JNZ ROLNZ LD A,(ESNGonTEMPO) OR LD (temp1),A CALL NZ LD (tempCNT),ROLnxPO ;C тоже корректируетсяA XOR AROLNZ LD (CURYAcom),A;ищем +4-ю строчку LD (Bcom),A EXA LD A,(POSCcom),A EXA CALL PLREAD LD B,4IFN tsROLnx0 INC A CP C ;patsz=1..645 JNZ ROLnx4ESNGon tson=$+1
LD A,0
OR A
JZ ROLnxY EXA CALL GETnPAA;T ;(DE)->A->(nPAT) EXA LD A,E EXA LD E,A INC D ;TPATSZ LD A,(DE) INC A LD C,AROLnxY XOR AROLnx4 DJNZ ROLnx0;печатаем +4-ю строчку PUSH HL CALL scrolST ;DI;не портит регистры LD HL,(POS) PUSH HL EXA LD (POS),A EXA nPAT=$+1 LD B,0PLnots1 LD E,#17 CALL STROKA ;A=line#,E=scrY POP HL LD (POS),HL POP HL DEC L JNZ ROL0rOLQ JP FILLATR ;DI;EI ;JP PATFON ;3000tUPROLL CALL PRCU7PATLEN=$+1UPRnRE LD C,63 LD A,(CURY) DEC A CP C JC UPRNZ LD A,(ESNGon) OR A JNZ UPRnxPO LD A,CUPRNZ LD (CURY),A LD B,4UPRnx4 DEC A CP C JC $+3 LD A,C DJNZ UPRnx4 LD E,#F LD BC,(EPAT-1) CALL scrol2 ;не портит регистры,не DI CALL STROKAuPRQ JR rOLQUPRnxPO PUSH AF LD A,(POS) CALL ROLprPO LD (EPAT),A EXA LD (POS),A POP AF RET C;pgUp LD A,(DE)FE LD (PATLEN),A LD (CURY),A ; PUSH AF ;! ; LD A,5 ;LD (patHGT),A ; LD (patSUB),A ;CALL scrol2 ;не портит регистры,не DI CALL PRPATU ;PRPAT CALL POSFON ;3+699 ; POP AF ; LD (CURY),A ; LD A,4,(patSUB),A ;LD A,9,(patHGT),A JR uPRQPLAYER IFN hidearr LD A,1 LD (ARROWt),A ENDIF LD A,18,(options),A LD A,(TEMPO) LD (temp1),A LD (tempCNT),ASWPAYPP
XOR A
LD (Acom),A
LD (Ccom),A
CALL PLREAD
IFN ts;5tson=$+1 LD A,0 OR A JZ PLnots1 LD A,#FE CALL SWPAYPP XOR A LD (Acom),A LD (Bcom),A LD (Ccom),A CALL PLREAD LD A,#FF CALL SWPAYPP PLnots1 ENDIF CALL ARROW ;1700 LD A,(temp1) LD (tempCNT),A ;иначе игнорит темп на 1-й строке PLAYER0 LD A,(tempCNT) DEC A LD L,1 CALL Z,ROLL ;35500 CALL HALTnAR ;10000 CALL JPITEM ;стрелка выкл. CALL PATFON ;3000 ;при выходе после перекл.POS будет сначала READ,потом ROLL CALL ARROW ;1700 CALL OUT4 ;100 CALL PLnOUT ;5400 IFN ts LD A,(tson) OR A JZ PLnots2
LD A,(tempCNT)
DEC A
LD L,1 CALL Z,ROLL ;35500 CALL HALTnAR ;10000 CALL JPITEM ;стрелка выкл. CALL PATFON ;3000 ;при выходе после перекл.POS будет сначала READ,потом ROLL CALL ARROW ;1700 CALL OUT4 ;100 CALL PLnOUT ;5400 IFN ts LD A,(tson) OR A JZ PLnots2 LD A,(tempCNT) DEC A CALL Z,PLREAD ;2100 LD A,#FE CALL SWPAYPP ;7700;6881 CALL OUT4 ;100 CALL PLnOUT ;5400 PLnots2 ENDIF tempCNT=$+1 LD A,0 DEC A JNZ PLnoNL CALL PLREAD ;2100 temp1=$+1 LD A,0 PLnoNL LD (tempCNT),A IFN ts LD A,(tson) OR A LD A,#FF CALL NZ,SWPAYPP;7700;6881 ENDIF ;CALL RE ;1000 ;CALL JPITEM IFN pttfctfcplayon=$+1 LD A,0
OR A
LD A,#FF CALL NZ,SWPAYPP;7700;6881 ENDIF ;CALL RE ;1000 ;CALL JPITEM IFN pttfc tfcplayon=$+1 LD A,0 OR A JZ tfcplayno LD A,pttfc CALL OUTME CALL tfm tfcplayno ENDIF PLJP=$+1 JP PLCANC ;or PLEXT (ed.song) PLCANC CALL CANCEL JNC PLAYER0 JR PLQ PLEXT CALL CANCEL2 JNC PLQ CALL 8026 JC PLAYER0 CALL 8020 RRA JC PLAYER0 PLQ LD A,mains LD (options),A CALL RE ;1000 CALL PIAN2AY JP WAITNOK PLREAD LD A,(CURY),C,A LD A,(EPAT),B,A CALL GETnADR LD A,(HL),(ENV+1),A INC HL LD A,(HL),(ENV),A INC HL LD A,(HL),(DNOIS),A INC HL PUSH HL POP IX LD IY,Achan CALL USEchan LD BC,5 ADD IX,BC LD IY,Bchan CALL USEchan LD BC,5 ADD IX,BC LD IY,Cchan CALL USEchan LD IY,iy RET USEchan LD C,(IX+3) LD A,(IX) AND #7F DEC A JP M,USEbl CP 96 JNZ USEnR LD (IY+#E),0 LD A,-1 JR uSEnNOT USEnR LD B,(IY+#B) LD (IY+#B),A LD (IY+#12),B XOR A LD (IY+#1C),A LD (IY+#18),A LD (IY+#19),A ; LD (IY+#1A),A ;shift LD (IY+#1B),A LD (IY+#E),A LD L,(IY+#13) LD H,(IY+#14) LD (usedisp),HL LD (IY+#13),A LD (IY+#14),A LD (IY+4),A LD (IY+9),A uSEnNOT LD (IY),A LD A,(IX) RLA LD A,C RRA RRA RRA RRA AND 31 JZ USEbl LD L,A ADD HL,HL LD H,'TSMPSZ LD B,(HL) LD (IY+#A),B INC L LD B,(HL) LD (IY+8),B LD (IY+6),0 ADD A,'SMPS LD (IY+7),A USEbl LD A,C LD B,#F AND B LD C,A ;FX:B=F ;?X:B=1F ;0X:не менять JZ USE0x ;JZ USEoldE CP B JZ USEnE LD (NOTENV),A LD (env),A XOR A LD L,A,H,A LD (Efrq),HL LD (EstCNT),A LD HL,(ENV),(BASENV),HL LD B,31 USEnE LD (IY+#D),B ;vol|envmask USE0x LD A,(IX+4) AND #F0 CP C JZ USEoldE RRCA RRCA RRCA RRCA CALL HLOR3 LD (IY+4),0 LD (IY+1),L LD (IY+2),H LD L,A,H,'TORNSZ LD A,(HL),(IY+5),A INC L LD A,(HL),(IY+3),A USEoldE LD A,(IX+4) AND #F JZ USEnV ADD A,A,A,A,A,A,A,A LD (IY+#C),A USEnV LD A,(IX+1) AND #F0 RET Z LD C,16 SUB C JZ dncom SUB C JZ upcom SUB C JZ portcom SUB C JZ smpcom SUB C JZ orncom SUB C JP Z,vibcom SUB C RET Z SUB C RET Z SUB C JP Z,edcom SUB C JP Z,eucom SUB C RET NZ LD A,(IX+2) CP 1 RET C ;LD (tempCNT),A ;v3+698 LD (temp1),A RET upcom LD A,(IX+1) AND #F upcomQ LD (IY+#F),A ;delay LD (IY+#E),1 ;com.type LD (IY+#10),A ;count IFN fixtoENV PUSH AF ENDIF LD L,(IX+2) LD H,0 CALL NC,NEGHL LD (IY+#11),L LD (IY+#15),H IFN fixtoENV POP AF RET NZ OR H,L RET Z ;3!699(глючили 1000,2000) LD (IY+#13),L LD (IY+#14),H ENDIF RET dncom LD A,(IX+1) AND #F SCF JR upcomQsmpcom LD A,(IX+2),(IY+9),A RET orncom LD A,(IX+2),(IY+4),A RET vibcom LD (IY+#E),3 LD A,(IX+2),B,A AND #F LD (IY+#17),A LD A,B AND #F0 RRCA RRCA RRCA RRCA LD (IY+#16),A LD (IY+#10),A RET portcom LD A,(IX) AND #7F DEC A CP 96 RET NC LD A,(IX+1) AND #F LD (IY+#F),A LD (IY+#10),A LD A,(IX+2) LD (IY+#11),A LD (IY+#15),0 LD (IY+#E),2 LD A,(IY+#12),C,A LD HL,FrTab ADD A,A ADD A,L LD L,A LD E,(HL) INC L LD D,(HL) PUSH DE LD HL,(usedisp)
LD (IY+#13),L
LD (IY+#14),H
ADD HL ENDIF RET dncom LD A,(IX+1) AND #F SCF JR upcomQ smpcom LD A,(IX+2),(IY+9),A RET orncom LD A,(IX+2),(IY+4),DEA RET vibcom EXD LD (IY+#E),3 LD A,(IX+2),B,A AND #F LD (IY+#17),A LD A,B AND #F0 RRCA RRCA RRCA RRCA LD (IY+#16),A LD (IY+#10),A RET portcom LD A,(IX) AND #7F DEC A CP 96 RET NC LD A,(IX+1) AND #F LD (IY+#F),A LD (IY+#10),A LD A,(IX+2) LD (IY+#1211),A LD (IY+#15),0 LD (IY+#BE),2 LD A,(IY+#12),C,A LD HL,FrTab ADD A,A ADD A,L LD L,A LD AE,(HL) INC L LD HD,(HL),L,A PUSH DE LD HL,(usedisp) ;OR A LD (IY+#13),L SBC HL LD (IY+#14),DEH POP ADD HL POP ,DE JNC portUP
EXD
LD A,(IY+#B)
LD (IY+#12),A
LD (IY+#B),C
LD HL,FrTab
ADD A,A
ADD A,L
LD L,A
LD A,(HL)
INC L
LD H,(HL),L,A
PUSH HL
LD L,(IY+#11) LD H,(IY+#15) CALL NEGHL LD (IY+#11),L ;OR A LD (IY+#15)SBC HL,HDE
POP HL
POP DE JNC portUP EXD PUSH HL LD L,(IY+#11) LD H,(IY+#15) CALL NEGHL LD (IY+#11),L LD (IY+#15),H POP HL portUP OR A SBC HL,DE LD (IY+#16),L LD (IY+#17),H RET edcom LD A,(IX+1) AND #F LD (EstCNT),A LD (EiniCNT),A LD L,(IX+2),H,0 LD (Estep),HL RET eucom CALL edcom CALL NEGHL LD (Estep),HL RET ;2:TSTNQ,EPENT(nu) PLNOTE IFN ts LD A,(tson) OR A JZ PLnotsP LD A,#FE CALL SWPAYPP CALL PLNOTPP LD A,#FF CALL SWPAYPPPLnotsP ENDIF
CALL PLNOTPP
LD A,#FF CALL SWPAYPP PLnotsP ENDIF CALL PLNOTPP PLNOTE0 CALL HALTER CALL OUT4 IFN ts LD A,(tson) OR A JZ PLnotsP2 LD A,#FE CALL SWPAYPP CALL PLnOUT LD A,#FF CALL SWPAYPPPLnotsP2 ENDIF
CALL PLnOUT
LD A,#FF CALL SWPAYPP PLnotsP2 ENDIF CALL PLnOUT LD A,#81 IN A,(-2) CPL AND 31 JNZ PLNOTE0 CALL 8020 CPL AND 14 JNZ PLNOTE0 CALL 8026 CPL AND 15 JNZ PLNOTE0 PIAN2AY IFN ts LD A,#FE CALL SWPAYPP CALL PIANAY LD A,#FF CALL SWPAYPP ENDIF JP PIANAY ;2 тут PLNOTPP LD A,(NOTENV) LD (env),A XOR A LD (Acom),A LD (Bcom),A LD (Ccom),A CPL LD (Achan),A LD (Bchan),A LD (Cchan),A JP PLREAD FILLATR DI LD HL,LINESon LD A,(PATLEN) LD C,A INC C LD DE,#FF00 ;;; LD A,(CURY) LD B,4 SUB B FATR0 OR A JP P,FATR0Q LD (HL),D INC HL INC A DJNZ FATR0 JR FATR1Q FATR0Q LD (HL),E INC HL DJNZ $-2 FATR1Q INC HL LD B,4 LD A,(CURY) FATR2 INC A CP C JZ FATR2Q LD (HL),E INC HL DJNZ FATR2 JR FATR3Q FATR2Q LD (HL),D INC HL DJNZ $-2 FATR3Q LD (FATRSP),SP LD IX,#59FF LD IY,LINESon LD A,9 FATRFIL EXA col1=$+1 LD HL,#606 col2=$+1 LD DE,#707 LD BC,#744 LD A,(IY) CP #7F JZ FATRNO OR A JZ FATRPUS LD HL,0 LD D,L,E,L LD C,L FATRPUS LD SP,IX PUSH HL DEC SP PUSH HL,HL DEC SP PUSH HL DEC SP PUSH HL,HL DEC SP PUSH HL DEC SP PUSH HL,HL DEC SP PUSH DE,HL DEC SP PUSH BC FATRNO INC IY LD BC,32 ADD IX,BC EXA DEC A JNZ FATRFIL FATRSP=$+1 LD SP,0 LD IY,iy EI RET PLnOUT XOR A LD (mix),A LD IY,Achan LD A,(IY) INC A JZ PLnAres CALL iSMPORN LD DE,(Adfrq) ADD HL,DE LD (frqA),HL CALL ADDVOL LD A,B CALL GLOVOL1 PLoffA=$+1 AND -1 PLnAres LD (volA),A CALL PLcoms LD IY,Bchan LD A,(IY) INC A JZ PLnBres CALL iSMPORN LD DE,(Bdfrq) ADD HL,DE LD (frqB),HL CALL ADDVOL RLC B CALL GLOVOL PLoffB=$+1 AND -1 PLnBres LD (volB),A CALL PLcoms LD IY,Cchan LD A,(IY) INC A JZ PLnCres CALL iSMPORN LD DE,(Cdfrq) ADD HL,DE LD (frqC),HL CALL ADDVOL RLC B,B CALL GLOVOL PLoffC=$+1 AND -1 PLnCres LD (volC),A CALL PLcoms LD HL,(BASENV) LD A,(Edfrq) ADD A,L LD L,A LD DE,(Efrq) ADD HL,DE LD (frqE),HL LD A,(EstCNT) DEC A JP M,EstOFF JNZ EstNZ LD HL,(Estep) ADD HL,DE LD (Efrq),HL LD A,(EiniCNT) EstNZ LD (EstCNT),A EstOFF XOR A LD (Edfrq),A LD IY,iy JP OUTAY GLOVOL LD A,(mix) OR B GLOVOL1 LD (mix),A LD H,'TVOL,L,(IY+#C) ADD HL,DE LD E,(HL) glovol=$+1 LD L,#F0 ADD HL,DE LD A,(HL) OR C AND (IY+#D) RET PLcoms LD A,(IY+#E) DEC A RET M JNZ PLcomNG DEC (IY+#10) RET NZ PLcomG LD A,(IY+#F),(IY+#10),A LD L,(IY+#13) LD H,(IY+#14) LD E,(IY+#11) LD D,(IY+#15) ADD HL,DE LD (IY+#13),L LD (IY+#14),H RET PLcomNG DEC A JNZ PLcomNP DEC (IY+#10) RET NZ CALL PLcomG LD A,D EXD LD L,(NOTENVIY+#16) LD H,(IY+#17) RLA JNC PLportA ADD HL,DE,HL,DE PLportA SBC HL,DE INC H RET NZ LD A,(IY+#12),(IY+#B),A XOR A LD (IY+#E),A LD (IY+#13),A LD (IY+#14),A RET PLcomNP DEC A RET NZ DEC (IY+#10) RET NZ LD A,(IY) XOR -1 LD (IY),A LD A,(envIY+#16) JZ $+5 LD A,(IY+#17) LD (IY+#10),A RET COPcur LD A,(CURY),(beg2),A
XOR A
LD (Acom),A LD (Bcom),A LD (Ccom),A CPL LD (Achan),A LD (Bchan),A LD (Cchan),A JP PLREADFILLATR DI LD HL,LINESon LD A,(PATLEN) LD C,A INC C LD DE,#FF00 ;;; LD A,(CURY) CALL IBEG2q LD B,4 SUB BFATR0 OR A JP P,FATR0Q LD (HL),D INC HL INC A DJNZ FATR0 JR FATR1QFATR0Q LD (HLEPAT),E INC HL DJNZ $-2FATR1Q INC HL CALL iPAT2q LD B,4CALL XPP2 LD A,(CURY)FATR2 INC A CP C JZ FATR2Q LD (HL),E INC HL DJNZ FATR2 JR FATR3QFATR2Q LD (HL),D INC HL DJNZ $-2FATR3Q LD (FATRSP),SP LD IX,#59FF LD IY,LINESon LD A,9FATRFIL EXA col1=$+1 LD HL,#606col2=$+1 LD DE,#707 LD BC,#744 LD A,(IY) CP #7F JZ FATRNO OR A JZ FATRPUS LD HL,0 LD D,L,E,L CALL ICHN2Q LD C,LFATRPUS LD SP,IX PUSH HL DEC SP PUSH HL,HL DEC SPTSTNROL
PUSH HL
COPY CALL FROMSZ LD DE,(pat2),D,A LD HL,(beg1) beg2=$+1 LD H,0 CALL CHN1PP chn2=$+1 LD A,1 LD B,3 DEC SPA PUSH HL JZ COP2X LD B,HL8 DEC SPA JZ $+4 LD B,13 COP2X LD A,(pat1) PUSH HLIFN opcompl SCF DEC SPENDIF COPYU ;A=patfrom ;D=lines ;E=patto ;B=chnto(3/8/13) ;C=chnfrom ;H=lineto ;L=linefrom IFN opcompl PUSH HL,HLAF DEC SPENDIF PUSH DE,DE,HL DEC SP
PUSH BC
FATRNO CALL PATtoBUF ;делает OUT7 POP BC LD A,C ADD A,3 LD (DISPc1),A LD A,B INC A LD (DISPc2),A POP HL LD A,H ADD HL,HL LD H,'TLINES LD E,(HL) INC L LD D,(HL) LD HL,BUF ADD HL,DE LD E,C,D,0 LD C,A LD A,(chnall) OR A JNZ noall1 ADD HL,DE noall1 EX (SP),HL LD A,L CALL AtoPAT ;DE LD L,C ADD HL,HL LD H,'TLINES LD A,(HL) INC IYL LD H,(HL),L,A ADD HL,DE LD A,(chnall) OR A JNZ noall2 LD E,B,D,0 ADD HL,DE noall2 LD A,64 SUB C POP DE EXD LD C,A POP AF CP C JC $+3 LD A,C chnall=$+1 LD C,0 ;не0=все каналы INC C DEC C JZ COPSCF ;копирование всех каналов COPYAL0 LD BC,3218 LDIR DEC A JNZ COPYAL0 JR COPYALQ ;копирование 1 канала ;1 COPSCF SCF ;NC=9 on COPY0 PUSH HL,DE JC COPyN EXA LD A,(HL) AND #7F JZ COPnN COPyN PUSH DE,HL LDI INC HL,DE INC HL,DE LDI LDI POP HL,DE COPnN INC HL,DE JC COPyC LD A,(HL) AND #F0 JZ COPnC EXA COPyC EXA LDI LDD COPnC INC HL,HL LD A,(HL) AND #F JZ COPnE XOR #F JZ COPnE DISPc2=$+1 LD BC,0 EXD SBC HL,BC EXD DISPc1=$+1 LD C,0 SBC HL,BC LDI LDI COPnE POP HL LD BC,18;B портится ADD HL,BC EXD POP HL ADD IXHL,BC
EXA
DEC A JNZ COPY0 COPYALQ JNZ FATRFILIFN opcompl POP AF CALL C,PROK ENDIF COPQJP JP PRPATU FROMSZ fromEND=$+1 LD A,63FATRSP beg1=$+1 LD SPC,0 SUB C INC A RET NC POP AF IFN opcompl PRERR LD IYHL,iyTERROR JR PROKU EI ELSE RET RET ENDIF ;5 PROK IFN opcompl LD HL,TCOMPLE PROKU LD (PROKHL),HL ENDIF LD BC,mOK CALL WINDUM PROKHL=$+1 LD HL,TCOMPLE LD DE,0 CALL PRMENU CALL DOWNMER CALL WAITNOKPLnOUT HALT
XOR A
LD (mix),ACALL CANCEL+2 LD IY,AchanJC $-5 JP CLOSWIN LD A,(IY) CLEARS INC XOR A JZ PLnAres CALL iSMPORN LD DE,(Adfrqpatcled) ADD HL,DEA LD (frqA)HL,HL CALL ADDVOLCLEACOO LD ADE,B CALL GLOVOL1CLEAUSEPLoffA=$+1 AND -1PLnAres LD (volA)BC,AmCLEAR CALL PLcomsWINDOW LD IYHL,BchantCLEAR LD ADE,(IY)0 INC A CALL PRMENU JZ PLnBres CLELOOP CALL iSMPORNHALTER LD DE,(Bdfrq) CALL JPITEM ADD HL,DE CALL TSTFIRE LD (frqB),HL JNC CLELOOP CLEARSQ CALL ADDVOLCLOSWIN RLC B CALL GLOVOLPOSFONPLoffB patcled=$+1 AND -1PLnBres LD (volB),A CALL PLcoms LD IY,Cchan LD A,(IY)0 INC OR A JZ PLnCres CALL iSMPORN LD DENZ,(Cdfrq)PRPAT ADD HL,DE RET LD (frqC),HL clPAT CALL ADDVOLSURE RLC B,B CALL GLOVOLPLoffC=$+1 AND -1PLnCres LD (volC), DEC A CALL PLcoms LD HL,(BASENV) JZ clPATS LD A,(EdfrqEPAT) ADD A,L CALL CLPAT LD L,A LD DE,(Efrq)-1 ADD HL,DE LD (frqEpatcled),HL LD A,(EstCNT) DEC A JR clQ JP M,EstOFF JNZ EstNZ clSONG CALL SURE LD HL,(Estep) CALL CLORNSM ADD HL,DE clPATS CALL CLPATS LD (Efrq),HL CALL CLPOS LD XOR A,(EiniCNT)EstNZ LD (EstCNTLOOP),AEstOFF XOR A LD (EdfrqPOS),A LD IY,iy JP OUTAYGLOVOL LD A,(mix) OR BGLOVOL1 LD (mixEPAT),A LD H,'TVOL,L,(IY+#C) INC A ADD HL,DE LD E,(HLLENG)glovol=$+1 LD L,#F0 ADD HL,DE LD A,(HL) OR C AND (IY+#D) RET  PLcoms LD A,(IY+#E)63 DEC A RET M JNZ PLcomNG DEC (IY+#10) RET NZPLcomG ;LD ABC,(IY+#F),(IY+#10),APATS-1 ;LD LDE,(IYTPATSZ+#13)1 ;LD H,(IY+#14) LD E,(IY+#11) LD D,(IY+#15) ADD HLL,DEB ;LD (IY+#13),L LD (IY+#14HL),H RET  PLcomNG DEC A JNZ PLcomNP DEC (IY+#10) RET NZ;LDIR CALL PLcomGFILLENS LD (patcled),A,D EXD LD L,(IY+#16PATLEN) LD H,(IY+#17)A RLA JNC PLportA ADD HL,DE, clQ POP HL,DEPLportA SBC HL,DE JR CLEARSQ INC H RET NZ clPOS CALL SURE LD A,(IY+#12),(IY+#B),A CALL CLPOS XOR A LD (IY+#ELOOP),A LD (IY+#13),A JR clQ LD (IY+#14),A RET clSMP CALL SURE PLcomNP DEC A RET NZ DEC (IY+#10) RET NZ LD A CALL Z,(IY)CLSMPS XOR -1 LD (IY),A LD A,(IY+#16smp) JZ $+5 CALL CLSMP LD A,(IY+#17) JR clQ LD (IY+#10),A RET clORN CALL SURECOPcur LD A,(CURY),(beg2),A XOR DEC A CALL IBEG2qZ,CLORNS LD A,(EPATORN) CALL iPAT2qCLORN CALL XPP2 JR clQ LD A,C CALL ICHN2Q SURE LD HL,TSTNROL PUSH HLCOPY CALL FROMSZSURECOO LD DE,(pat2),D,ASUREUSE LD HL,(beg1)beg2=$+1 LD HBC,0mSURE CALL CHN1PPWINDOWchn2=$+1 LD AHL,1tSURE LD BDE,30 DEC A CALL PRMENU JZ COP2X SURE0 LD B,8CALL HALTER DEC A CALL JPITEM JZ $+4 CALL TSTFIRE LD B,13 JNC SURE0COP2X LD A,(pat1) IFN opcompl SCF ENDIF COPYU;A=patfrom;D=lines;E=patto;B=chnto(3/8/13);C=chnfrom;H=lineto;L=linefrom IFN opcompl PUSH AF ENDIF PUSH DE,DE,HL1 PUSH BC SUREQ CALL PATtoBUF ;делает OUT7CLOSWIN POP BC LD A,C ADD DEC A,3 LD (DISPc1),A RET NZ LD A,B POP AF INC A JP clQ LD (DISPc2),A YES POP HL LD A,H ADD HL,HL LD H,'TLINES LD E,(HLITEM) INC L LD D,(HL) LD HL,BUF ADD HL,DE LD E,C,D,0 DEC A
LD C,A
POP HL JR SUREQ TRANSP CALL TransPP TRNS0 LD A,(chnallHL) AND #80 LD D,A XOR (HL) JZ TRNSNO CP 97 JZ TRNSNO DEC A ADD A,C CP 96 JC $+3 SUB C INC A TRNSNO OR D LD (HL),A JNZ noall1 LD DE,18 ADD HL,DEnoall1 DJNZ TRNS0 PRPATO CALL PROK JP PRPATU TRANVOL CALL TransPP INC HL,HL,HL,HL TRNV0 LD A,(HL) AND #F0 LD D,A XOR (HL) JZ TRNVNO ADD A,C JZ TRNV1 CP 16 JC TRNVNO CPL ; RLA ; SBC A,A ;будет AND #0F ;F TRNV1 OR 1 ;или 1 TRNVNO OR D EX LD (SPHL),A LD DE,18 ADD HL,DE DJNZ TRNV0 JR PRPATO TransPP CALL FROMSZ PUSH AF LD A,L(pat1) CALL AtoPAT ;DE CALL CHN1PP LD LA,C(beg1) ADD HLA,HLA LD L,A,H,'TLINES LD A,(HL) INC L LD H,(HL),L,A ADD HL,DE,HL,BC POP BC transp=$+1 LD C,0 RET ;edsmp/orn PIANO XOR A LD H,A,L,A LD (piCURv),HL LD (piCURv+2),HL LD (chnallmix),A OR LD (DNOIS),A JNZ noall2 LD HL,piaSMP LD ED,B(HL),D(HL),0A ADD HL LD (piSLIN),DEAnoall2 LD (piOLIN),A LD A,64D SUB C ADD A,'SMPS POP DE INC HL EXD LD C(HL),A POP AF CP C JC $+3 LD A,C(piaORN)chnall=$+1 CALL HLOR3 LD C(piaORN),0 ;не0=все каналыHL INC C CALL NOTEKEY DEC C JZ COPSCF;копирование всех каналовCOPYAL0 LD BCA,18 LDIR D
DEC A
JNZ COPYAL0 JR COPYALQ;копирование 1 канала;1COPSCF SCF ;NC=9 onCOPY0 PUSH HL,DE JC COPyN EXA LD A,(HL) AND #7F JZ COPnNCOPyN PUSH DE,HL LDI INC HL,DE INC HL,DE LDI LDI POP HL,DECOPnN INC HL,DE JC COPyC LD A,(HL) AND #F0 JZ COPnC EXA COPyC EXA LDI LDD COPnC INC HL,HL LD A,(HL) AND #F JZ COPnE XOR #F JZ COPnEDISPc2=$+1 LD BC,0 EXD SBC HL,BC EXD DISPc1=$+1 LD C,0 SBC HL,BC LDI LDI COPnE POP HL LD BC,18;B портится ADD HL,BC EXD POP HL ADD HL,BC EXA DEC A JNZ COPY0COPYALQ IFN opcompl POP AF CALL C,PROK ENDIF COPQJP JP PRPATUFROMSZfromEND=$+1 LD A,63beg1=$+1 LD C,0 SUB C INC A CP 24
RET NC
POP AF IFN opcomplPRERR LD HL,TERROR JR PROKU ELSE RET ENDIF ;5PROK IFN opcompl LD HL,TCOMPLEPROKU LD (PROKHL),HL ENDIF LD BC,mOK CALL WINDUMPROKHL=$+1 LD HL,TCOMPLE LD DE,0 CALL PRMENU CALL DOWNMER CALL WAITNOK HALT XOR A CALL CANCEL+2 JC $-5 JP CLOSWINCLEARS XOR A LD (patcled),A LD HL,CLEACOO LD DE,CLEAUSE LD BC,mCLEAR CALL WINDOW LD HL,tCLEAR LD DE,0 CALL PRMENUCLELOOP CALL HALTER CALL JPITEM CALL TSTFIRE JNC CLELOOPCLEARSQ CALL CLOSWIN CALL POSFONpatcled=$+1 LD A,0 OR A CALL NZ,PRPAT RET clPAT pIANO0 CALL SURENotOct
DEC A
JZ clPATS LD L,A,(EPAT) CALL CLPAT LD AIY,-1pianRG LD DE,(piaORN),(patcledORNADR),ADE JR clQ LD BC,(piOLIN) LD A,CclSONG CALL SURE INC A CALL CLORNSM CP BclPATS CALL CLPATS JC $+5 CALL CLPOS XOR LD A,(piOLOOP) LD (LOOPpiOLIN),A LD IX,(piaSMP) LD A,(POSpiSEND),B,A LD A,(EPATpiSLIN),E,A INC A CP B JC $+5 LD A,(piSLOOP) LD (LENGpiSLIN),A LD A,63E,B,0 CALL SAMPLER ; LD BC(frqB),PATS-1HL CALL ADDVOL ; LD DE(volB),TPATSZ+1A ; LD H,D,LA,B ; RLCA LD (HLmix),A ;LDIR CALL OUTAY CALL FILLENS LD IY,iy LD (patcledIY-52),A1 LD (PATLENIY-56),AclQ POP HL1 JR CLEARSQ clPOS CALL SURERESHALT CALL CLPOSNOTEKEY XOR LD A LD (LOOP),A JR clQ clSMP CALL SURED
DEC A
CALL Z CP 24 JC pIANO0 ;6 PIANAY LD HL,pianRG JR $+5 ;2 OUTAY LD HL,frqA LD DE,CLSMPS#00BF LD A,#D OUTAY0 LD BC,-3 OUT (smpC),D CALL CLSMP JR clQ LD B,E OUTI clORN CALL SURE INC D DEC A CALL Z JNZ OUTAY0 LD B,-1 OUT (C),D LD B,E LD D,CLORNS(HL) CP D LD (env),A, RET Z OUT (ORNC),D RET NOTEKEY CALL CLORNBIT5 JR clQ JZ NOTEKYQ LD BC,TNOTEKE-TNOTEKY PUSH HLSURE LD HL,SURECOOTNOTEKY CPIR POP HL LD D,C RET Z LD DED,SUREUSE97 CP "R RET Z INC D CP kssL RET Z INC D CP kK RET Z NOTEKYQ LD BCD,-1 RET ADDVOL ADD A,(IY+#18) JP P,mSURE$+6 CALL WINDOW XOR A JR PLnAv CP 16 JC $+4 LD HLA,tSURE#F PLnAv LD DED,0,E,A CALL PRMENU RET SURE0 iSMPORN CALL HALTER LD E,(IY+1) LD D,(IY+2) CALL JPITEM LD (ORNADR),DE CALL TSTFIRE LD B,(IY+3) ;len JNC SURE0 LD A,(IY+4) ;pos LD C,1A INC A CP BSUREQ CALL CLOSWIN JC $+5 LD A,C(IY+5) ;loop DEC LD (IY+4),A RET NZ LD L,(IY+6) ; LD H,(IY+7) ;smpadr PUSH HL POP AFIX JP clQ LD B,(IY+8) ;len LD A,(IY+9),E,A INC A CP BYES JC $+5 LD A,(ITEMIY+10);loop DEC LD (IY+9),A;pos LD A,E ;oldpos LD CL,A(IY+11) ;note POP HL;JP SAMPLER SAMPLER ;L=note ;C=posinORN ;A=posinSMP JR SUREQ ADD A,A,A,ATRANSP LD LX,A ;+smpadr CALL TransPPOUT4TRNS0 LD A,(HLIX+2),E,A LD B,8 AND #8040 JNZ NOnois LD B,A LD A,(IX+2) ADD A,(IY+#1B) BIT 4,(IX+3) JZ $+5 LD (IY+#1B),A
LD D,A
XOR (HL) JZ TRNSNO CP 97 JZ TRNSNO DEC A ADD A,C CP 96 JC $+3 SUB C INC ATRNSNO OR D LD (HL),A LD DE,18 ADD HL,DE DJNZ TRNS0PRPATO CALL PROK JP PRPATUTRANVOL CALL TransPP INC HL,HL,HL,HLTRNV0 LD A,(HL) AND #F0 LD D,A XOR (HL) JZ TRNVNO ADD A,C JZ TRNV1 CP 16 JC TRNVNO CPL ; RLA ; SBC A,A ;будет AND #0F ;FTRNV1 OR 1 ;или 1TRNVNO OR D LD (HL),A LD DE,18 ADD HL,DE DJNZ TRNV0 JR PRPATOTransPP CALL FROMSZ PUSH AF LD A,(pat1) CALL AtoPAT CALL CHN1PP LD A,(beg1) ADD A,A LD L,A,H,'TLINES LD A,(HL) INC L LD H,(HL),L,A ADD HL,DE,HL,BC POP BCtransp=$+1 LD C,0 RET ;edsmp/ornPIANO XOR A LD H,A,L,A LD (piCURv),HL LD (piCURv+2),HL LD (mix),A LD (DNOIS),A LD HL,piaSMP LD D,(HL),(HL),A LD (piSLIN),A LD (piOLIN),A LD A,D ADD A,'SMPS INC HL LD (HL),A LD A,(piaORN) CALL HLOR3 LD (piaORN),HL CALL NOTEKEY LD A,D DEC A CP 24 RET NCpIANO0 CALL NotOct DEC A LD L,A LD IY,pianRG LD DE,(piaORN),(ORNADR),DE LD BC,(piOLIN) LD A,C INC A CP B JC $+5 LD A,(piOLOOP) LD (piOLIN),A LD IX,(piaSMP) LD A,(piSEND),B,A LD A,(piSLIN),E,A INC A CP B JC $+5 LD A,(piSLOOP) LD (piSLIN),A LD A,E,B,0 CALL SAMPLER LD (frqB),HL CALL ADDVOL LD (volB),A LD A,B RLCA LD (mix),A CALL OUTAY LD IY,iy LD (IY-52),1 LD (IY-56),1 CALL RESHALT CALL NOTEKEY LD A,D DEC A CP 24 JC pIANO0;6PIANAY LD HL,pianRG JR $+5;2OUTAY LD HL,frqA LD DE,#00BF LD A,#DOUTAY0 LD BC,-3 OUT (C),D LD B,E OUTI INC D DEC A JNZ OUTAY0 LD B,-1 OUT (C),D LD B,E LD D,(HL) CP D LD (env),A RET Z OUT (C),D RET NOTEKEY CALL BIT5 JZ NOTEKYQ LD BC,TNOTEKE-TNOTEKY PUSH HL LD HL,TNOTEKY CPIR POP HL LD D,C RET Z LD D,97 CP "R RET Z INC D CP kssL RET Z INC D CP kK RET ZNOTEKYQ LD D,-1 RET ADDVOL ADD A,(IY+#18) JP P,$+6 XOR A JR PLnAv CP 16 JC $+4 LD A,#FPLnAv LD D,0,E,A RET iSMPORN LD E,(IY+1) LD D,(IY+2) LD (ORNADR),DE LD B,(IY+3) ;len LD A,(IY+4) ;pos LD C,A INC A CP B JC $+5 LD A,(IY+5) ;loop LD (IY+4),A LD L,(IY+6) ; LD H,(IY+7) ;smpadr PUSH HL POP IX LD B,(IY+8) ;len LD A,(IY+9),E,A INC A CP B JC $+5 LD A,(IY+10) ;loop LD (IY+9),A ;pos LD A,E ;oldpos LD L,(IY+11) ;note ;JP SAMPLERSAMPLER;L=note;C=posinORN;A=posinSMP ADD A,A,A,A LD LX,A ;+smpadr CALL OUT4 LD A,(IX+2),E,A LD B,8 AND #40 JNZ NOnois LD B,A LD A,(IX+2) ADD A,(IY+#1B) BIT 4,(IX+3) JZ $+5 LD (IY+#1B),A LD D,A LD A,(DNOIS);DNOIS=$+1 ADD A,D LD (nois),A JR NOdenv NOnois LD A,(Edfrq),H,A LD A,(IX+2) AND 31 CP 16 JC $+4 OR #F0 ADD A,(IY+#1C) BIT 4,(IX+3) JZ $+5 LD (IY+#1C),A ADD A,H LD (Edfrq),A NOdenv LD A,E AND #80 JZ $+4 SET 0,B LD A,E AND #20 LD E,C,D,0 LD C,16 JZ $+3 LD C,D LD A,L ;note ORNADR=$+1 LD HL,0 ADD HL,DE ADD A,(HL),A,A JNC $+3 XOR A LD HL,FrTab LD E,A ADD HL,DE LD A,(HL) INC HL LD H,(HL),L,A LD D,(IX+1) LD E,(IX) ;shift в сэмпле BIT 5,(IX+3) JZ NOdfrq PUSH HL LD L,(IY+#19) LD H,(IY+#1A) ADD HL,DE LD (IY+#19),L LD (IY+#1A),H ;shift LD DE,0 POP HL NOdfrq ADD HL,DE LD E,(IY+#19) LD D,(IY+#1A) ;shift ADD HL,DE LD A,(IX+3),D,A AND #80 JZ NOdvol LD A,D AND #40 CPL JZ $+4 LD A,1 ADD A,(IY+#18) CP 16 JZ YEdvol INC A CP -17 JZ $+3 YEdvol DEC A LD (IY+#18),A NOdvol LD A,D AND #F RET ;4 ;Z=NOTE XPPSCF SCF ;2 ;Z=SMP XPP LD A,(CURX) ADC A,-7 LD BC,#C04 RET Z RET NC SUB 9 RET C LD BC,#1609 SCF RET Z SUB 9 RET C LD BC,#200E
SCF
;2;Z=SMPXPP LD A,(CURX) ADC A,-7 LD BC,#C04 RET Z RET NC
SUB 9
RET C LD BC,#1609 SCF RET Z SUB 9 RET C LD BC,#200E SCF RET Z SUB 9 RET ;4 XPP2 LD A,(CURX) LD C,1 SUB 11+4 RET C INC C SUB 5+4 RET C INC C RET IT5 JZ NOTEKYQ LD BC,TNOTEKE-TNOTEKY PUSH HL LD HL,TNOTEKY CPIR POP HL LD D,C RET Z LD D,97

Navigation menu