Difference between revisions of "PROTRACKER372 PT5 371 H"
From MSX MUSIC WIKI
(Created page with "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...") (Tags: Mobile edit, Mobile web edit) |
(Tags: Mobile edit, Mobile web edit) |
||
Line 1: | Line 1: | ||
− | pt5_371 C��VМ�НNщ MAIN "",#C6 | + | pt5_371 C��VМ�НNщ |
− | AUTOS | + | MAIN "",#C6 |
− | + | AUTOS | |
− | + | LD HL,AUTO1 | |
− | + | LD A,4 | |
− | + | LD DE,#E0A | |
− | AUTOSu LD HL,AUTO1 | + | CALL EDTXT |
− | LD DE, | + | 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,0 | ||
+ | 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) | LD A,(HL) | ||
− | + | LD (CURY),A | |
− | + | PUSH AF | |
− | + | CALL PRCU7 | |
− | + | LD A,(POS) | |
− | + | EXA | |
− | + | LD HL,(EPAT) | |
− | LD ( | + | LD B,L |
− | + | LD H,'TPATSZ | |
− | + | LD C,(HL) ;0..63 | |
− | + | POP AF ;line# | |
− | LD ( | + | patSUB=$+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 DE | |
− | + | EXA ;A=pos | |
− | + | CALL ROLprPO ;будет A'=pos | |
− | + | LD B,E ;pat ;глючит при ssQ !!!??? | |
− | + | LD A,(DE) ;patsz | |
− | + | LD C,A ;0..63 | |
− | + | POP DE | |
− | + | PRPATuP LD A,C | |
− | + | PRPATuY DEC E | |
− | + | JNZ PRPATu0 | |
− | + | ENDIF | |
− | + | ;A=line# | |
+ | ;B=pat | ||
+ | INC C | ||
+ | ;C=patsz 1..64 | ||
+ | EXA | ||
LD D,A | LD D,A | ||
− | + | EXA | |
− | + | ;D=POS | |
− | + | patHGT=$+1 | |
− | + | LD L,9 | |
− | + | LD E,#F | |
− | + | PRPAT0 PUSH HL,DE | |
− | + | CALL STROKA | |
− | LD | + | POP DE |
− | LD E, | + | 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,A | LD L,A | ||
− | + | PRPATE XOR A | |
− | + | PRPATNE | |
− | + | DEC L | |
− | + | JNZ PRPAT0 | |
− | + | CALL FILLATR | |
− | + | JP PLREAD | |
− | + | CLPATS | |
− | + | XOR A | |
− | + | CLPATS0 PUSH AF | |
− | + | CALL CLPAT | |
− | LD | + | POP AF |
− | LD | + | INC A |
− | + | CP PATS | |
− | + | JNZ CLPATS0 | |
− | + | RET | |
− | + | EDSONGCS | |
+ | CALL 8026 | ||
+ | JP NC,ONOFFTS | ||
+ | EDSONG | ||
+ | CALL MELINV | ||
+ | LD HL,ESNGon | ||
+ | LD A,(HL) | ||
+ | CPL | ||
LD (HL),A | LD (HL),A | ||
− | + | LD A,(POS) | |
− | + | LD E,A,D,'TPOSS | |
− | RET | + | 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 ;редактируем | |
− | + | JP EDPATu ;включаем редактирование | |
− | + | ||
− | + | curfla=$+1 | |
− | + | FLACUR LD A,1 | |
− | + | DEC A | |
− | + | RET NZ | |
− | + | curon=$+1 | |
− | + | PRCUR 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 $-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) | ||
+ | OR A | ||
+ | RET Z | ||
+ | JR PRCUR | ||
+ | |||
+ | EDPATQ CALL JPITEM | ||
+ | LD A,#6F | ||
+ | LD (DOWNM),A | ||
+ | JR EDPAT0 | ||
+ | INCROLL | ||
+ | roll=$+1 | ||
+ | LD A,0 | ||
+ | INC A | ||
+ | CP 9 | ||
+ | JC $+3 | ||
+ | XOR A | ||
+ | IROLQ LD (roll),A | ||
+ | LD DE,#D09 | ||
+ | JP PRBCD | ||
+ | DECROLL 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 ROLLPATFON | ||
+ | EPDQ JP SHOLK | ||
+ | |||
+ | EPEXT | ||
+ | CALL PRCU7 | ||
+ | XOR A | ||
+ | LD (editON),A | ||
+ | LD HL,ESNGon | ||
+ | CP (HL) | ||
LD (HL),A | LD (HL),A | ||
− | CALL | + | CALL NZ,MELINV |
− | + | POP AF | |
− | + | JP WAITNOK | |
− | + | EPUP | |
− | + | CALL PRCU7 | |
− | + | LD L,1 | |
− | + | CALL UPROLL | |
− | + | JR EPDQ | |
− | + | ;3(ini,NLOOP,MENUUSE) | |
− | + | EDPAT | |
− | + | editON=$+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 PRPAT | |
− | + | EDPAT0 | |
− | + | 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 | |
− | JP | + | 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 | |
− | LD | + | CP kChip |
− | + | JP Z,SWPSONG | |
− | JNZ | + | 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,POSEDIT | ||
+ | NCAPCOM CALL TSTNOTE | ||
+ | CALL XPPSCF | ||
+ | JP Z,TSTOCT | ||
+ | RET | ||
+ | EPGRA | ||
+ | XOR A | ||
+ | LD HL,CURY | ||
+ | CP (HL) | ||
+ | JNZ ePGQ | ||
+ | DEC H | ||
+ | EPEND | ||
+ | LD HL,(EPAT) | ||
+ | LD H,'TPATSZ | ||
+ | LD A,(HL) | ||
JZ $+4 | JZ $+4 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
INC A | INC A | ||
− | + | RRA | |
− | + | ePGQ LD (CURY),A | |
− | + | JP PRPATU | |
− | + | LCUR | |
− | + | CALL PRCU7 | |
− | + | CURX=$+1 | |
− | + | LD A,6 | |
− | + | DEC A | |
− | + | JP P,LCURQM3 | |
− | + | LD A,20+12 | |
− | + | JP LCURQM3 | |
− | + | RCUR | |
− | + | CALL PRCU7 | |
− | + | LD A,(CURX) | |
− | + | INC A | |
− | + | CP 21+12 | |
− | + | JC $+3 | |
− | + | XOR A | |
− | + | LCURQM3 LD (CURX),A | |
− | + | LCURQ CALL PRCUR | |
− | + | JP SHOLK | |
− | + | EPENT | |
− | + | playon=$+1 | |
− | + | LD A,-1 | |
− | + | OR A | |
− | + | JP NZ,EPENTi | |
− | + | LD A,(CURX) | |
− | + | CP 6 | |
− | + | JZ EPENTi | |
− | + | CP 11 | |
− | + | JZ EPENTi | |
− | + | CP 16 | |
− | + | JP NZ,PLNOTE | |
− | + | EPENTi LD A,(NOTENV) | |
− | + | LD (env),A | |
− | + | LD HL,PLCANC | |
− | + | LD (PLJP),HL | |
− | + | CALL INICHAN | |
− | + | JP PLAYER | |
− | + | IFN tab | |
− | + | JCUR | |
− | + | CALL PRCU7 | |
− | + | LD BC,TJP | |
− | + | JR JCUROK | |
− | + | JCURL | |
− | + | CALL PRCU7 | |
− | + | LD BC,TJPLEFT | |
− | + | JCUROK LD HL,(CURX),H,0 | |
− | + | ADD HL,BC | |
− | + | LD A,(HL) | |
− | + | JP LCURQM3 | |
− | + | ENDIF | |
− | + | ROLLPATFON | |
− | + | CALL ROLL | |
− | + | JP PATFON | |
− | + | ;3 | |
− | + | ROLL | |
− | + | ;L=на сколько строк (для autoscroll) | |
− | + | PUSH HL | |
− | + | CALL PRCU7 | |
− | + | ROLnRE LD A,(EPAT) | |
− | + | LD (nPAT),A | |
− | + | POP HL | |
− | + | ROL0 | |
− | + | ;идем на строчку вниз | |
− | + | LD A,(PATLEN) | |
− | + | INC A | |
− | + | LD C,A | |
− | + | LD A,(CURY) | |
− | + | INC A | |
− | + | CP C | |
− | + | JNZ ROLNZ | |
− | + | LD A,(ESNGon) | |
− | + | OR A | |
− | + | CALL NZ,ROLnxPO ;C тоже корректируется | |
− | + | XOR A | |
− | + | ROLNZ LD (CURY),A | |
− | + | ;ищем +4-ю строчку | |
− | + | EXA | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
LD A,(POS) | LD A,(POS) | ||
EXA | EXA | ||
− | + | LD B,4 | |
− | + | ROLnx0 INC A | |
− | + | CP C ;patsz=1..64 | |
− | + | JNZ ROLnx4 | |
− | + | ESNGon=$+1 | |
− | + | LD A,0 | |
− | + | OR A | |
− | + | JZ ROLnxY | |
− | + | EXA | |
− | + | CALL GETnPAA;T ;(DE)->A->(nPAT) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | JZ | ||
− | |||
− | EXA | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
EXA | EXA | ||
− | LD | + | LD A,E |
EXA | EXA | ||
− | + | LD E,A | |
− | + | INC D ;TPATSZ | |
− | + | LD A,(DE) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | LD E, | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
INC A | INC A | ||
− | + | LD C,A | |
− | + | ROLnxY XOR A | |
− | + | ROLnx4 DJNZ ROLnx0 | |
− | + | ;печатаем +4-ю строчку | |
− | + | PUSH HL | |
− | + | CALL scrolST ;DI;не портит регистры | |
− | + | LD HL,(POS) | |
− | + | PUSH HL | |
− | + | EXA | |
− | + | LD (POS),A | |
− | + | EXA | |
− | + | nPAT=$+1 | |
− | + | LD B,0 | |
− | + | LD E,#17 | |
− | + | CALL STROKA ;A=line#,E=scrY | |
− | + | POP HL | |
− | + | LD (POS),HL | |
− | + | POP HL | |
− | + | DEC L | |
− | + | JNZ ROL0 | |
− | JP | + | rOLQ JP FILLATR ;DI;EI |
− | + | ;JP PATFON ;3000t | |
− | + | UPROLL | |
− | LD A, | + | CALL PRCU7 |
+ | PATLEN=$+1 | ||
+ | UPRnRE LD C,63 | ||
+ | LD A,(CURY) | ||
+ | DEC A | ||
+ | CP C | ||
+ | JC UPRNZ | ||
+ | LD A,(ESNGon) | ||
OR A | OR A | ||
− | + | JNZ UPRnxPO | |
− | LD A,( | + | LD A,C |
− | CP | + | UPRNZ LD (CURY),A |
− | + | LD B,4 | |
− | + | UPRnx4 DEC A | |
− | + | CP C | |
− | + | JC $+3 | |
− | + | LD A,C | |
− | + | DJNZ UPRnx4 | |
− | + | LD E,#F | |
− | + | LD BC,(EPAT-1) | |
− | + | CALL scrol2 ;не портит регистры,не DI | |
− | + | CALL STROKA | |
− | + | uPRQ JR rOLQ | |
− | + | UPRnxPO | |
− | + | PUSH AF | |
− | + | LD A,(POS) | |
− | + | CALL ROLprPO | |
− | + | LD (EPAT),A | |
− | + | EXA | |
− | + | LD (POS),A | |
− | + | POP AF | |
− | + | RET C;pgUp | |
− | + | LD A,(DE) | |
− | + | LD (PATLEN),A | |
− | + | LD (CURY),A | |
− | + | ; PUSH AF ;! | |
− | + | ; LD A,5 | |
− | CALL | + | ;LD (patHGT),A |
− | + | ; LD (patSUB),A | |
− | ;3 | + | ;CALL scrol2 ;не портит регистры,не DI |
− | + | CALL PRPATU ;PRPAT | |
− | ; | + | CALL POSFON ;3+699 |
− | + | ; POP AF | |
− | + | ; LD (CURY),A | |
− | + | ; LD A,4,(patSUB),A | |
− | LD ( | + | ;LD A,9,(patHGT),A |
− | + | JR uPRQ | |
− | + | PLAYER | |
− | + | IFN hidearr | |
− | + | LD A,1 | |
− | + | LD (ARROWt),A | |
− | + | ENDIF | |
− | + | LD A,18,(options),A | |
− | + | LD A,(TEMPO) | |
− | + | LD (temp1),A | |
− | + | LD (tempCNT),A | |
− | + | XOR A | |
− | + | LD (Acom),A | |
− | + | LD (Bcom),A | |
− | + | LD (Ccom),A | |
− | + | CALL PLREAD | |
− | + | IFN ts | |
− | + | ;5 | |
− | + | tson=$+1 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
LD A,0 | LD A,0 | ||
OR A | OR A | ||
− | + | JZ PLnots1 | |
− | + | LD A,#FE | |
− | + | CALL SWPAYPP | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | LD | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
XOR A | XOR A | ||
LD (Acom),A | LD (Acom),A | ||
Line 839: | Line 853: | ||
LD (Ccom),A | LD (Ccom),A | ||
CALL PLREAD | CALL PLREAD | ||
− | + | LD A,#FF | |
− | + | CALL SWPAYPP | |
− | + | PLnots1 | |
− | + | ENDIF | |
− | + | CALL ARROW ;1700 | |
− | + | LD A,(temp1) | |
− | + | LD (tempCNT),A ;иначе игнорит темп на 1-й строке | |
− | + | PLAYER0 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | PLnots1 | ||
− | |||
− | |||
− | |||
− | |||
− | PLAYER0 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
LD A,(tempCNT) | LD A,(tempCNT) | ||
DEC A | DEC A | ||
− | CALL Z,PLREAD ;2100 | + | LD L,1 |
− | + | CALL Z,ROLL ;35500 | |
− | + | CALL HALTnAR ;10000 | |
− | + | CALL JPITEM ;стрелка выкл. | |
− | + | CALL PATFON ;3000 | |
− | PLnots2 | + | ;при выходе после перекл.POS будет сначала READ,потом ROLL |
− | + | CALL ARROW ;1700 | |
− | tempCNT=$+1 | + | CALL OUT4 ;100 |
− | + | CALL PLnOUT ;5400 | |
− | + | IFN ts | |
− | + | LD A,(tson) | |
− | + | OR A | |
− | temp1=$+1 | + | JZ PLnots2 |
− | + | LD A,(tempCNT) | |
− | PLnoNL LD (tempCNT),A | + | 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 | OR A | ||
− | JZ tfcplayno | + | LD A,#FF |
− | + | CALL NZ,SWPAYPP;7700;6881 | |
− | + | ENDIF | |
− | + | ;CALL RE ;1000 | |
− | tfcplayno | + | ;CALL JPITEM |
− | + | IFN pttfc | |
− | PLJP=$+1 | + | tfcplayon=$+1 |
− | + | LD A,0 | |
− | PLCANC | + | OR A |
− | + | JZ tfcplayno | |
− | + | LD A,pttfc | |
− | + | CALL OUTME | |
− | PLEXT | + | CALL tfm |
− | + | tfcplayno | |
− | + | ENDIF | |
− | + | PLJP=$+1 | |
− | + | JP PLCANC ;or PLEXT (ed.song) | |
− | + | PLCANC | |
− | + | CALL CANCEL | |
− | + | JNC PLAYER0 | |
− | PLQ LD A,mains | + | JR PLQ |
− | + | PLEXT | |
− | + | CALL CANCEL2 | |
− | + | JNC PLQ | |
− | + | CALL 8026 | |
− | PLREAD | + | 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 | |
− | USEchan | + | 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) | |
− | USEnR LD B,(IY+#B) | + | 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 | |
− | uSEnNOT LD (IY),A | + | 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 | |
− | USEbl LD A,C | + | LD H,'TSMPSZ |
− | + | LD B,(HL) | |
− | + | LD (IY+#A),B | |
− | + | INC L | |
− | ;FX:B=F | + | LD B,(HL) |
− | ;?X:B=1F | + | LD (IY+8),B |
− | ;0X:не менять | + | 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 | |
− | USEnE | + | JZ USEnE |
− | + | LD (NOTENV),A | |
− | USE0x | + | 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 | |
− | USEoldE LD A,(IX+4) | + | RRCA |
− | + | CALL HLOR3 | |
− | + | LD (IY+4),0 | |
− | + | LD (IY+1),L | |
− | + | LD (IY+2),H | |
− | USEnV LD A,(IX+1) | + | 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 | |
− | upcom | + | JP Z,eucom |
− | + | SUB C | |
− | + | RET NZ | |
− | upcomQ LD (IY+#F),A ;delay | + | 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+#13),L | ||
LD (IY+#14),H | LD (IY+#14),H | ||
− | + | 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),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,DE | ||
EXD | 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 | PUSH HL | ||
− | + | ;OR A | |
− | + | SBC HL,DE | |
− | |||
− | |||
− | |||
POP HL | POP HL | ||
− | portUP OR A | + | POP DE |
− | + | JNC portUP | |
− | + | EXD | |
− | + | PUSH HL | |
− | + | LD L,(IY+#11) | |
− | edcom | + | 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 | |
− | eucom | + | LD (IY+#17),H |
− | + | RET | |
− | + | edcom | |
− | + | LD A,(IX+1) | |
− | + | AND #F | |
− | ;2:TSTNQ,EPENT(nu) | + | LD (EstCNT),A |
− | PLNOTE | + | 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 | CALL PLNOTPP | ||
− | PLNOTE0 CALL HALTER | + | 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 | CALL PLnOUT | ||
− | LD A,#81 | + | 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 | |
− | PIAN2AY | + | JNZ PLNOTE0 |
− | + | CALL 8026 | |
− | + | CPL | |
− | + | AND 15 | |
− | + | JNZ PLNOTE0 | |
− | + | PIAN2AY | |
− | + | IFN ts | |
− | + | LD A,#FE | |
− | + | CALL SWPAYPP | |
− | ;2 тут | + | CALL PIANAY |
− | PLNOTPP | + | LD A,#FF |
− | LD A,( | + | CALL SWPAYPP |
− | LD ( | + | 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,(IY+#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,(IY+#16) | ||
+ | JZ $+5 | ||
+ | LD A,(IY+#17) | ||
+ | LD (IY+#10),A | ||
+ | RET | ||
+ | COPcur | ||
+ | LD A,(CURY),(beg2),A | ||
XOR A | XOR A | ||
− | + | CALL IBEG2q | |
− | + | LD A,(EPAT) | |
− | + | CALL iPAT2q | |
− | + | CALL XPP2 | |
− | + | LD A,C | |
− | + | CALL ICHN2Q | |
− | + | LD HL,TSTNROL | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | LD A, | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | LD | ||
− | |||
− | |||
− | |||
− | |||
− | |||
PUSH HL | PUSH HL | ||
− | + | COPY | |
− | + | CALL FROMSZ | |
− | + | LD DE,(pat2),D,A | |
− | + | LD HL,(beg1) | |
− | + | beg2=$+1 | |
− | PUSH | + | LD H,0 |
− | + | CALL CHN1PP | |
− | + | chn2=$+1 | |
− | + | LD A,1 | |
+ | LD B,3 | ||
+ | DEC A | ||
+ | JZ COP2X | ||
+ | LD B,8 | ||
+ | DEC A | ||
+ | JZ $+4 | ||
+ | LD B,13 | ||
+ | COP2X 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,HL | ||
PUSH BC | PUSH BC | ||
− | + | CALL PATtoBUF ;делает OUT7 | |
− | LD BC, | + | POP BC |
− | ADD | + | 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 L | ||
+ | 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,18 | ||
+ | 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 HL,BC | ||
EXA | EXA | ||
− | + | DEC A | |
− | + | JNZ COPY0 | |
− | + | COPYALQ | |
− | + | IFN opcompl | |
− | LD | + | POP AF |
− | + | CALL C,PROK | |
− | + | ENDIF | |
− | + | COPQJP | |
+ | JP PRPATU | ||
+ | FROMSZ | ||
+ | fromEND=$+1 | ||
+ | LD A,63 | ||
+ | beg1=$+1 | ||
+ | LD C,0 | ||
+ | SUB C | ||
+ | INC A | ||
+ | RET NC | ||
+ | POP AF | ||
+ | IFN opcompl | ||
+ | PRERR LD HL,TERROR | ||
+ | JR PROKU | ||
+ | ELSE | ||
+ | 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 WAITNOK | ||
+ | HALT | ||
XOR A | XOR A | ||
− | + | CALL CANCEL+2 | |
− | + | JC $-5 | |
− | + | JP CLOSWIN | |
− | + | CLEARS | |
− | + | XOR A | |
− | + | LD (patcled),A | |
− | + | LD HL,CLEACOO | |
− | + | LD DE,CLEAUSE | |
− | + | LD BC,mCLEAR | |
− | + | CALL WINDOW | |
− | + | LD HL,tCLEAR | |
− | + | LD DE,0 | |
− | + | CALL PRMENU | |
− | + | CLELOOP | |
− | + | CALL HALTER | |
− | + | CALL JPITEM | |
− | + | CALL TSTFIRE | |
− | + | JNC CLELOOP | |
− | + | CLEARSQ CALL CLOSWIN | |
− | + | CALL POSFON | |
− | CALL | + | patcled=$+1 |
− | + | LD A,0 | |
− | + | OR A | |
− | + | CALL NZ,PRPAT | |
− | + | RET | |
− | + | clPAT | |
− | + | CALL SURE | |
− | + | DEC A | |
− | + | JZ clPATS | |
− | + | LD A,(EPAT) | |
− | + | CALL CLPAT | |
− | + | LD A,-1 | |
− | + | LD (patcled),A | |
− | + | JR clQ | |
− | + | ||
− | + | clSONG CALL SURE | |
− | + | CALL CLORNSM | |
− | + | clPATS CALL CLPATS | |
− | + | CALL CLPOS | |
− | + | XOR A | |
− | + | LD (LOOP),A | |
− | + | LD (POS),A | |
− | + | LD (EPAT),A | |
− | + | INC A | |
− | + | LD (LENG),A | |
− | + | LD A,63 | |
− | + | ;LD BC,PATS-1 | |
− | + | ;LD DE,TPATSZ+1 | |
− | + | ;LD H,D,L,B | |
− | + | ;LD (HL),A | |
− | + | ;LDIR | |
− | + | CALL FILLENS | |
− | + | LD (patcled),A | |
− | + | LD (PATLEN),A | |
− | + | clQ POP HL | |
− | + | JR CLEARSQ | |
− | + | ||
− | + | clPOS CALL SURE | |
− | + | CALL CLPOS | |
− | + | XOR A | |
− | + | LD (LOOP),A | |
− | + | JR clQ | |
− | + | ||
− | + | clSMP CALL SURE | |
− | + | DEC A | |
− | + | CALL Z,CLSMPS | |
− | + | LD A,(smp) | |
− | + | CALL CLSMP | |
− | + | JR clQ | |
− | + | ||
− | + | clORN CALL SURE | |
− | + | DEC A | |
− | + | CALL Z,CLORNS | |
− | + | LD A,(ORN) | |
− | + | CALL CLORN | |
− | + | JR clQ | |
− | + | ||
− | + | SURE LD HL,SURECOO | |
− | + | LD DE,SUREUSE | |
− | + | LD BC,mSURE | |
− | + | CALL WINDOW | |
− | + | LD HL,tSURE | |
− | + | LD DE,0 | |
− | + | CALL PRMENU | |
− | + | SURE0 | |
− | + | CALL HALTER | |
− | + | CALL JPITEM | |
− | + | CALL TSTFIRE | |
− | LD | + | JNC SURE0 |
− | LD H, | + | LD C,1 |
− | + | SUREQ CALL CLOSWIN | |
− | + | LD A,C | |
− | + | DEC A | |
− | LD ( | + | RET NZ |
− | + | POP AF | |
− | + | JP clQ | |
− | + | YES | |
− | + | LD A,(ITEM) | |
− | + | DEC A | |
− | |||
− | |||
− | CALL | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
LD C,A | LD C,A | ||
− | + | POP HL | |
− | + | JR SUREQ | |
− | + | TRANSP | |
− | + | CALL TransPP | |
− | + | TRNS0 LD A,(HL) | |
− | + | AND #80 | |
− | + | LD D,A | |
− | + | XOR (HL) | |
− | LD | + | 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 | |
− | + | LD DE,18 | |
− | + | ADD HL,DE | |
− | + | 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 | ||
+ | LD (HL),A | ||
+ | LD DE,18 | ||
+ | ADD HL,DE | ||
+ | DJNZ TRNV0 | ||
+ | JR PRPATO | ||
+ | TransPP | ||
+ | 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 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 (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 | DEC A | ||
− | + | CP 24 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
RET NC | RET NC | ||
− | + | pIANO0 | |
− | + | CALL NotOct | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | CALL | ||
DEC A | 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 | |
− | LD ( | + | RLCA |
− | LD ( | + | 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 | DEC A | ||
− | + | CP 24 | |
− | + | JC pIANO0 | |
− | + | ;6 | |
− | + | PIANAY | |
− | + | LD HL,pianRG | |
− | + | JR $+5 | |
− | + | ;2 | |
− | + | OUTAY LD HL,frqA | |
− | + | LD DE,#00BF | |
− | + | LD A,#D | |
− | + | OUTAY0 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 | |
− | CALL | + | RET Z |
− | + | INC D | |
− | + | CP kssL | |
+ | RET Z | ||
+ | INC D | ||
+ | CP kK | ||
+ | RET Z | ||
+ | NOTEKYQ LD D,-1 | ||
+ | RET | ||
+ | ADDVOL | ||
+ | ADD A,(IY+#18) | ||
+ | JP P,$+6 | ||
+ | XOR A | ||
+ | JR PLnAv | ||
+ | CP 16 | ||
+ | JC $+4 | ||
+ | LD A,#F | ||
+ | PLnAv 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 SAMPLER | ||
+ | SAMPLER | ||
+ | ;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 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 | |
− | LD | + | 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 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ;DNOIS=$+1 | ||
− | |||
− | |||
− | |||
− | NOnois LD A,(Edfrq),H,A | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | NOdenv LD A,E | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ORNADR=$+1 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | NOdfrq ADD HL,DE | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | YEdvol DEC A | ||
− | |||
− | NOdvol LD A,D | ||
− | |||
− | |||
− | |||
− | ;4 | ||
− | ;Z=NOTE | ||
− | XPPSCF | ||
SCF | SCF | ||
− | + | RET Z | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
SUB 9 | 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 | |
− | ;4 | + | RET |
− | XPP2 | + | IT5 |
− | + | JZ NOTEKYQ | |
− | + | LD BC,TNOTEKE-TNOTEKY | |
− | + | PUSH HL | |
− | + | LD HL,TNOTEKY | |
− | + | CPIR | |
− | + | POP HL | |
− | + | LD D,C | |
− | + | RET Z | |
− | + | LD D,97 | |
− | IT5 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 20:32, 8 March 2020
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,0 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) LD (CURY),A PUSH AF CALL PRCU7 LD A,(POS) EXA LD HL,(EPAT) LD B,L LD H,'TPATSZ LD C,(HL) ;0..63 POP AF ;line# patSUB=$+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 DE EXA ;A=pos CALL ROLprPO ;будет A'=pos LD B,E ;pat ;глючит при ssQ !!!??? LD A,(DE) ;patsz LD C,A ;0..63 POP DE PRPATuP LD A,C PRPATuY DEC E JNZ PRPATu0 ENDIF ;A=line# ;B=pat INC C ;C=patsz 1..64 EXA LD D,A EXA ;D=POS patHGT=$+1 LD L,9 LD E,#F PRPAT0 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,A PRPATE XOR A PRPATNE DEC L JNZ PRPAT0 CALL FILLATR JP PLREAD CLPATS XOR A CLPATS0 PUSH AF CALL CLPAT POP AF INC A CP PATS JNZ CLPATS0 RET EDSONGCS CALL 8026 JP NC,ONOFFTS EDSONG 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 ;редактируем JP EDPATu ;включаем редактирование curfla=$+1 FLACUR LD A,1 DEC A RET NZ curon=$+1 PRCUR 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 $-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) OR A RET Z JR PRCUR EDPATQ CALL JPITEM LD A,#6F LD (DOWNM),A JR EDPAT0 INCROLL roll=$+1 LD A,0 INC A CP 9 JC $+3 XOR A IROLQ LD (roll),A LD DE,#D09 JP PRBCD DECROLL 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 ROLLPATFON EPDQ JP SHOLK EPEXT CALL PRCU7 XOR A LD (editON),A LD HL,ESNGon CP (HL) LD (HL),A CALL NZ,MELINV POP AF JP WAITNOK EPUP CALL PRCU7 LD L,1 CALL UPROLL JR EPDQ ;3(ini,NLOOP,MENUUSE) EDPAT editON=$+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 PRPAT EDPAT0 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,POSEDIT NCAPCOM CALL TSTNOTE CALL XPPSCF JP Z,TSTOCT RET EPGRA XOR A LD HL,CURY CP (HL) JNZ ePGQ DEC H EPEND LD HL,(EPAT) LD H,'TPATSZ LD A,(HL) JZ $+4 INC A RRA ePGQ LD (CURY),A JP PRPATU LCUR CALL PRCU7 CURX=$+1 LD A,6 DEC A JP P,LCURQM3 LD A,20+12 JP LCURQM3 RCUR CALL PRCU7 LD A,(CURX) INC A CP 21+12 JC $+3 XOR A LCURQM3 LD (CURX),A LCURQ CALL PRCUR JP SHOLK EPENT playon=$+1 LD A,-1 OR A JP NZ,EPENTi LD A,(CURX) CP 6 JZ EPENTi CP 11 JZ EPENTi CP 16 JP NZ,PLNOTE EPENTi LD A,(NOTENV) LD (env),A LD HL,PLCANC LD (PLJP),HL CALL INICHAN JP PLAYER IFN tab JCUR CALL PRCU7 LD BC,TJP JR JCUROK JCURL CALL PRCU7 LD BC,TJPLEFT JCUROK LD HL,(CURX),H,0 ADD HL,BC LD A,(HL) JP LCURQM3 ENDIF ROLLPATFON CALL ROLL JP PATFON ;3 ROLL ;L=на сколько строк (для autoscroll) PUSH HL CALL PRCU7 ROLnRE LD A,(EPAT) LD (nPAT),A POP HL ROL0 ;идем на строчку вниз LD A,(PATLEN) INC A LD C,A LD A,(CURY) INC A CP C JNZ ROLNZ LD A,(ESNGon) OR A CALL NZ,ROLnxPO ;C тоже корректируется XOR A ROLNZ LD (CURY),A ;ищем +4-ю строчку EXA LD A,(POS) EXA LD B,4 ROLnx0 INC A CP C ;patsz=1..64 JNZ ROLnx4 ESNGon=$+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,A ROLnxY XOR A ROLnx4 DJNZ ROLnx0 ;печатаем +4-ю строчку PUSH HL CALL scrolST ;DI;не портит регистры LD HL,(POS) PUSH HL EXA LD (POS),A EXA nPAT=$+1 LD B,0 LD E,#17 CALL STROKA ;A=line#,E=scrY POP HL LD (POS),HL POP HL DEC L JNZ ROL0 rOLQ JP FILLATR ;DI;EI ;JP PATFON ;3000t UPROLL CALL PRCU7 PATLEN=$+1 UPRnRE LD C,63 LD A,(CURY) DEC A CP C JC UPRNZ LD A,(ESNGon) OR A JNZ UPRnxPO LD A,C UPRNZ LD (CURY),A LD B,4 UPRnx4 DEC A CP C JC $+3 LD A,C DJNZ UPRnx4 LD E,#F LD BC,(EPAT-1) CALL scrol2 ;не портит регистры,не DI CALL STROKA uPRQ JR rOLQ UPRnxPO PUSH AF LD A,(POS) CALL ROLprPO LD (EPAT),A EXA LD (POS),A POP AF RET C;pgUp LD A,(DE) 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 uPRQ PLAYER IFN hidearr LD A,1 LD (ARROWt),A ENDIF LD A,18,(options),A LD A,(TEMPO) LD (temp1),A LD (tempCNT),A XOR A LD (Acom),A LD (Bcom),A LD (Ccom),A CALL PLREAD IFN ts ;5 tson=$+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 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 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 upcomQ smpcom 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,DE 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 ;OR A SBC HL,DE 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 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 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,(IY+#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,(IY+#16) JZ $+5 LD A,(IY+#17) LD (IY+#10),A RET COPcur LD A,(CURY),(beg2),A XOR A CALL IBEG2q LD A,(EPAT) CALL iPAT2q CALL XPP2 LD A,C CALL ICHN2Q LD HL,TSTNROL 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 A JZ COP2X LD B,8 DEC A JZ $+4 LD B,13 COP2X 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,HL PUSH BC 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 L 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,18 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 HL,BC EXA DEC A JNZ COPY0 COPYALQ IFN opcompl POP AF CALL C,PROK ENDIF COPQJP JP PRPATU FROMSZ fromEND=$+1 LD A,63 beg1=$+1 LD C,0 SUB C INC A RET NC POP AF IFN opcompl PRERR LD HL,TERROR JR PROKU ELSE 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 WAITNOK HALT XOR A CALL CANCEL+2 JC $-5 JP CLOSWIN CLEARS XOR A LD (patcled),A LD HL,CLEACOO LD DE,CLEAUSE LD BC,mCLEAR CALL WINDOW LD HL,tCLEAR LD DE,0 CALL PRMENU CLELOOP CALL HALTER CALL JPITEM CALL TSTFIRE JNC CLELOOP CLEARSQ CALL CLOSWIN CALL POSFON patcled=$+1 LD A,0 OR A CALL NZ,PRPAT RET clPAT CALL SURE DEC A JZ clPATS LD A,(EPAT) CALL CLPAT LD A,-1 LD (patcled),A JR clQ clSONG CALL SURE CALL CLORNSM clPATS CALL CLPATS CALL CLPOS XOR A LD (LOOP),A LD (POS),A LD (EPAT),A INC A LD (LENG),A LD A,63 ;LD BC,PATS-1 ;LD DE,TPATSZ+1 ;LD H,D,L,B ;LD (HL),A ;LDIR CALL FILLENS LD (patcled),A LD (PATLEN),A clQ POP HL JR CLEARSQ clPOS CALL SURE CALL CLPOS XOR A LD (LOOP),A JR clQ clSMP CALL SURE DEC A CALL Z,CLSMPS LD A,(smp) CALL CLSMP JR clQ clORN CALL SURE DEC A CALL Z,CLORNS LD A,(ORN) CALL CLORN JR clQ SURE LD HL,SURECOO LD DE,SUREUSE LD BC,mSURE CALL WINDOW LD HL,tSURE LD DE,0 CALL PRMENU SURE0 CALL HALTER CALL JPITEM CALL TSTFIRE JNC SURE0 LD C,1 SUREQ CALL CLOSWIN LD A,C DEC A RET NZ POP AF JP clQ YES LD A,(ITEM) DEC A LD C,A POP HL JR SUREQ TRANSP CALL TransPP TRNS0 LD A,(HL) 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 LD DE,18 ADD HL,DE 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 LD (HL),A LD DE,18 ADD HL,DE DJNZ TRNV0 JR PRPATO TransPP 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 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 (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 NC pIANO0 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 ;6 PIANAY LD HL,pianRG JR $+5 ;2 OUTAY LD HL,frqA LD DE,#00BF LD A,#D OUTAY0 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 Z NOTEKYQ LD D,-1 RET ADDVOL ADD A,(IY+#18) JP P,$+6 XOR A JR PLnAv CP 16 JC $+4 LD A,#F PLnAv 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 SAMPLER SAMPLER ;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 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