Changes

Jump to: navigation, search

PROTRACKER372 PTSPLAY H

3,295 bytes added, 21:46, 8 March 2020
no edit summary
PTSPlay C��3w�x{�;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum;2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>;http://bulba.untergrund.net/ (http://bulba.at.kz/) Release="0" ;read SjAsm or ZXAsm version source for comments. ;Conditional assembly;1) Current position counters at (Vars1+0) and (Vars2+0)CurPosCounter=0;2) Allow channels allocation bits at (START+10)ACBBAC=0;3) Allow loop checking and disablingLoopChecker=0;4) Insert official identificatorIFN ?IdId=1ENDIF ;5) Set IY for correct return to ZX BasicIFN ?BasicBasic=0ENDIF   ;ORG #C000 TonA=0TonB=2TonC=4Noise=6Mixer=7AmplA=8AmplB=9AmplC=10Env=11EnvTp=13 ;ChannelsVars ;STRUCT CHP;reset groupPsInOr=0PsInSm=1CrAmSl=2CrNsSl=3CrEnSl=4TSlCnt=5CrTnSl=6TnAcc=8COnOff=10;reset group OnOffD=11 ;IX for PTDECOD here (+12)OffOnD=12OrnPtr=13SamPtr=15NNtSkp=17Note=18SlToNt=19Env_En=20Flags=21 ;Enabled - 0, SimpleGliss - 2TnSlDl=22TSlStp=23TnDelt=25NtSkCn=27Volume=28 ;ENDSCHP=29  ;STRUCT VRS CurPos=0PosSub=1 ModNum=2 ;bit0: ChipNum ;bit1: 1-reversed patterns order (AlCo TS)ChanA=3ChanB=ChanA+CHPChanC=ChanB+CHP ;GlobalVarsMODADDR=ChanC+CHPOrnPtrs=MODADDR+2SamPtrs=MODADDR+4PatsPtr=MODADDR+6AdInPtA=MODADDR+8AdInPtB=MODADDR+10AdInPtC=MODADDR+12CrPsPtr=MODADDR+14LPosPtr=MODADDR+16Delay=MODADDR+18DelyCnt=MODADDR+19ESldAdd=MODADDR+20CurESld=MODADDR+22Env_Del=MODADDR+24CurEDel=MODADDR+25Ns_Base=MODADDR+26AddToNs=MODADDR+27AddToEn=MODADDR+28EnvBase=MODADDR+29AYREGS=MODADDR+31 ;ENDSVRS=AYREGS+14 START LD HL,MDLADDR ;DE - address of 2nd module for TS JR INIT JP PLAY JR MUTESETUP DB 0  IFN Id DB "=UniPT2/PT3/TS-Player r.",Release,"=" ENDIF   IFN LoopCheckerCHECKLP LD HL,SETUP BIT 0,(IY-100+ModNum) JR Z,CHL1 SET 6,(HL) JR CHL2CHL1 SET 7,(HL)CHL2 BIT 0,(HL) RET Z POP HL INC (IY-100+DelyCnt) INC (IY-100+ChanA+NtSkCn) XOR A LD (IY-100+AYREGS+AmplA),A LD (IY-100+AYREGS+AmplB),A LD (IY-100+AYREGS+AmplC),A RET ENDIF  MUTE XOR A LD H,A LD L,A LD (VARS1+AYREGS+AmplA),A LD (VARS1+AYREGS+AmplB),HL LD (VARS2+AYREGS+AmplA),A LD (VARS2+AYREGS+AmplB),HL JP ROUT INIT;HL - AddressOfModule;DE - AddresOf2ndModule PUSH DE PUSH HL LD HL,VARS LD (HL),0 LD DE,VARS+1 LD BC,VAR0END-VARS-1 LDIR INC HL LD (VARS1+AdInPtA),HL ;ptr to zero LD (VARS2+AdInPtA),HL  POP HL LD IY,VARS1+100 LD A,(START+10) AND 2 JP NZ,I_PT2  CALL INITPT3 LD HL,#1F18 ;(e_-SamCnv-2)*256+#18 ;ALASM :( LD (SamCnv),HL LD A,#BA LD (OrnCP),A LD (SamCP),A LD A,#7B LD (OrnLD),A LD (SamLD),A LD A,#87 LD (SamClc2),A POP HL ;Use version and ton table of 1st module LD A,(IX+13-100) ;EXTRACT VERSION NUMBER SUB #30 JR C,L20 CP 10 JR C,L21L20 LD A,6L21 LD (Version),A PUSH AF ;VolTable version CP 4 LD A,(IX+99-100) ;TONE TABLE NUMBER RLA AND 7 PUSH AF ;NoteTable number  LD IY,VARS2+100 LD A,(START+10) AND 48 JR Z,NOTS CP 16 JR Z,TwoPT3s LD A,(Version) CP 7 JR C,NOTS LD A,(IX+98-100) ;ALCO TS MARKER CP #20 JR Z,NOTS LD HL,VARS1 LD DE,VARS2 LD BC,VRS LDIR SET 1,(IY-100+ModNum) LD C,A ADD A,A ADD A,C SUB 2 LD (TSSub),A JR AlCoTS_TwoPT3s CALL INITPT3AlCoTS_ LD A,1 LD (is_ts),A SET 0,(IY-100+ModNum) NOTS LD BC,PT3PD LD HL,0 LD DE,PT3EMPTYORN JR INITCOMMON I_PT2 CALL INITPT2 LD HL,#51CB LD (SamCnv),HL LD A,#BB LD (OrnCP),A LD (SamCP),A LD A,#7A LD (OrnLD),A LD (SamLD),A LD A,#80 LD (SamClc2),A POP HL LD A,5 LD (Version),A PUSH AF LD A,2 PUSH AF  LD A,(START+10) AND 48 JR Z,NOTS2  LD IY,VARS2+100 LD A,1 LD (is_ts),A SET 0,(IY-100+ModNum) CALL INITPT2 NOTS2 LD BC,PT2PD LD HL,#8687 LD DE,PT2EMPTYORN INITCOMMON  IFN Basic LD IY,#5C3A ENDIF   LD (PTDEC),BC LD (PsCalc),HL PUSH DE ;note table data depacker;(c) Ivan Roshin LD DE,T_PACK LD BC,T1_+(2*49)-1TP_0 LD A,(DE) INC DE CP 15*2 PTSPlay C��3w�x{� ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum ;2004-2007 S.V.Bulba <vorobey@mail.khstu.ru> ;http://bulba.untergrund.net/ (http://bulba.at.kz/) Release="0" ;read SjAsm or ZXAsm version source for comments. ;Conditional assembly ;1) Current position counters at (Vars1+0) and (Vars2+0) CurPosCounter=0 ;2) Allow channels allocation bits at (START+10) ACBBAC=0 ;3) Allow loop checking and disabling LoopChecker=0 ;4) Insert official identificator IFN ?Id Id=1 ENDIF ;5) Set IY for correct return to ZX Basic IFN ?Basic Basic=0 ENDIF ;ORG #C000 TonA=0 TonB=2 TonC=4 Noise=6 Mixer=7 AmplA=8 AmplB=9 AmplC=10 Env=11 EnvTp=13 ;ChannelsVars ;STRUCT CHP ;reset group PsInOr=0 PsInSm=1 CrAmSl=2 CrNsSl=3 CrEnSl=4 TSlCnt=5 CrTnSl=6 TnAcc=8 COnOff=10 ;reset group OnOffD=11 ;IX for PTDECOD here (+12) OffOnD=12 OrnPtr=13 SamPtr=15 NNtSkp=17 Note=18 SlToNt=19 Env_En=20 Flags=21 ;Enabled - 0, SimpleGliss - 2 TnSlDl=22 TSlStp=23 TnDelt=25 NtSkCn=27 Volume=28 ;ENDS CHP=29 ;STRUCT VRS CurPos=0 PosSub=1 ModNum=2 ;bit0: ChipNum ;bit1: 1-reversed patterns order (AlCo TS) ChanA=3 ChanB=ChanA+CHP ChanC=ChanB+CHP ;GlobalVars MODADDR=ChanC+CHP OrnPtrs=MODADDR+2 SamPtrs=MODADDR+4 PatsPtr=MODADDR+6 AdInPtA=MODADDR+8 AdInPtB=MODADDR+10 AdInPtC=MODADDR+12 CrPsPtr=MODADDR+14 LPosPtr=MODADDR+16 Delay=MODADDR+18 DelyCnt=MODADDR+19 ESldAdd=MODADDR+20 CurESld=MODADDR+22 Env_Del=MODADDR+24 CurEDel=MODADDR+25 Ns_Base=MODADDR+26 AddToNs=MODADDR+27 AddToEn=MODADDR+28 EnvBase=MODADDR+29 AYREGS=MODADDR+31 ;ENDS VRS=AYREGS+14 START LD HL,MDLADDR ;DE - address of 2nd module for TS JR INIT JP PLAY JR MUTE SETUP DB 0 IFN Id DB "=UniPT2/PT3/TS-Player r.",Release,"=" ENDIF IFN LoopChecker CHECKLP LD HL,SETUP BIT 0,(IY-100+ModNum) JR Z,CHL1 SET 6,(HL) JR CHL2 CHL1 SET 7,(HL) CHL2 BIT 0,(HL) RET Z POP HL INC (IY-100+DelyCnt) INC (IY-100+ChanA+NtSkCn) XOR A LD (IY-100+AYREGS+AmplA),A LD (IY-100+AYREGS+AmplB),A LD (IY-100+AYREGS+AmplC),A RET ENDIF MUTE XOR A LD H,A LD L,A LD (VARS1+AYREGS+AmplA),A LD (VARS1+AYREGS+AmplB),HL LD (VARS2+AYREGS+AmplA),A LD (VARS2+AYREGS+AmplB),HL JP ROUT INIT ;HL - AddressOfModule ;DE - AddresOf2ndModule PUSH DE PUSH HL LD HL,VARS LD (HL),0 LD DE,VARS+1 LD BC,VAR0END-VARS-1 LDIR INC HL LD (VARS1+AdInPtA),HL ;ptr to zero LD (VARS2+AdInPtA),HL POP HL LD IY,VARS1+100 LD A,(START+10) AND 2 JP NZ,I_PT2 CALL INITPT3 LD HL,#1F18 ;(e_-SamCnv-2)*256+#18 ;ALASM :( LD (SamCnv),HL LD A,#BA LD (OrnCP),A LD (SamCP),A LD A,#7B LD (OrnLD),A LD (SamLD),A LD A,#87 LD (SamClc2),A POP HL ;Use version and ton table of 1st module LD A,(IX+13-100) ;EXTRACT VERSION NUMBER SUB #30 JR C,L20 CP 10 JR C,L21 L20 LD A,6 L21 LD (Version),A PUSH AF ;VolTable version CP 4 LD A,(IX+99-100) ;TONE TABLE NUMBER RLA AND 7 PUSH AF ;NoteTable number LD IY,VARS2+100 LD A,(START+10) AND 48 JR Z,NOTS CP 16 JR Z,TwoPT3s LD A,(Version) CP 7 JR C,NOTS LD A,(IX+98-100) ;ALCO TS MARKER CP #20 JR Z,NOTS LD HL,VARS1 LD DE,VARS2 LD BC,VRS LDIR SET 1,(IY-100+ModNum) LD C,A ADD A,A ADD A,C SUB 2 LD (TSSub),A JR AlCoTS_ TwoPT3s CALL INITPT3 AlCoTS_ LD A,1 LD (is_ts),A SET 0,(IY-100+ModNum) NOTS LD BC,PT3PD LD HL,0 LD DE,PT3EMPTYORN JR INITCOMMON I_PT2 CALL INITPT2 LD HL,#51CB LD (SamCnv),HL LD A,#BB LD (OrnCP),A LD (SamCP),A LD A,#7A LD (OrnLD),A LD (SamLD),A LD A,#80 LD (SamClc2),A POP HL LD A,5 LD (Version),A PUSH AF LD A,2 PUSH AF LD A,(START+10) AND 48 JR Z,NOTS2 LD IY,VARS2+100 LD A,1 LD (is_ts),A SET 0,(

Navigation menu