; ; PROTRACKER COMPILER ; CLUT: EQU 248 LINE: EQU 249 LMPR: EQU 250 HMPR: EQU 251 ORG 32768 DUMP 32768 LD HL,0000 DI IN A,(LMPR) LD (LMPRS),A IN A,(HMPR) LD (HMPRS+32768),A AND 31 OR 32 OUT (LMPR),A JP LMEM ORG $-32768 DEFS 56-$ INTERRUPT: EI RET DEFS 100-$ OUT (LMPR),A NMI: LD A,31 JR 100 LMEM: LD (SPSTORE),SP LD SP,32767 LD (ORGOFFSET),HL LD HL,SAMPADDR LD (HL),0 LD DE,SAMPADDR+1 LD BC,767 LDIR INITUCADDR: EQU $+1 LD HL,32768 LD (UNCOMPADDR),HL INITUCPAGE: EQU $+1 LD A,8 LD (UNCOMPPAGE),A INC A INC A OUT (HMPR),A LD BC,15104 ADD HL,BC LD E,(HL) INC E XOR A RL E RLA LD D,A INITCOMPADDR: EQU $+1 LD HL,32768 ADD HL,DE INITCOMPPAGE: EQU $+1 LD A,3 LD (COMPPAGE),A OUT (HMPR),A LD (HL),0 INC HL LD (HL),0 INC HL LD (COMPADDR),HL LD B,32 ; NEXTINSTRUMENT: EXX UNCOMPPAGE: EQU $+1 LD A,00 OUT (HMPR),A UNCOMPADDR: EQU $+1 LD HL,0000 LD DE,BUFFERSPACE LD BC,363 LDIR LD (UNCOMPADDR),HL LD A,(BUFFERSPACE) OR A JP Z,ENDINSTRUMENT COMPPAGE: EQU $+1 LD A,00 OUT (HMPR),A COMPADDR: EQU $+1 LD DE,0000 LD A,32 EXX SUB B EXX RLA LD C,A LD B,0 LD HL,SAMPADDR ADD HL,BC LD A,(ORGOFFSET) ADD E LD (HL),A LD A,(ORGOFFSET+1) ADC D INC HL LD (HL),A LD HL,BUFFERSPACE LD A,(HL) EX AF,AF' LDI LD A,(HL) INC HL LDI LD C,A XOR A RL C RLA RL C RLA LD B,A INC BC INC BC LD A,E ADD C LD C,A LD A,D ADC B LD B,A LD A,(ORGOFFSET) ADD C LD (DE),A LD A,(ORGOFFSET+1) ADC B INC DE LD (DE),A INC DE EX AF,AF' LD B,A INSTLOOP: LD A,(HL) LD (DE),A INC HL INC DE LD C,(HL) INC HL BIT 3,C JR NZ,NEGATIVEDISP LD A,%00000111 AND C EX AF,AF' LD A,(HL) LD (DE),A INC HL INC DE EX AF,AF' LD (DE),A INC DE JR NOISEFLAGS NEGATIVEDISP: PUSH BC LD A,%00000111 AND C LD B,A LD C,(HL) INC HL DEC BC LD A,C CPL LD (DE),A INC DE LD A,B CPL LD (DE),A INC DE POP BC NOISEFLAGS: LD A,C AND %11110000 RRCA RRCA LD C,A AND %00110000 RRCA RRCA RRCA RRCA OR C LD (DE),A INC DE DJNZ INSTLOOP LD (COMPADDR),DE ENDINSTRUMENT: EXX DEC B JP NZ,NEXTINSTRUMENT ; LD A,(UNCOMPPAGE) INC A LD (UNCOMPPAGE),A LD HL,32768 LD (UNCOMPADDR),HL LD HL,ORNADDR LD B,0 NEXTORNAMENT: EXX LD A,(UNCOMPPAGE) OUT (HMPR),A LD HL,(UNCOMPADDR) LD DE,BUFFERSPACE LD BC,123 LDIR LD (UNCOMPADDR),HL LD A,(BUFFERSPACE) OR A JR Z,NOORNAMENT LD B,A LD A,(COMPPAGE) OUT (HMPR),A LD HL,(COMPADDR) PUSH HL LD (HL),B INC HL EXX POP DE LD A,(ORGOFFSET) ADD E LD (HL),A LD A,(ORGOFFSET+1) ADC D INC HL LD (HL),A INC HL EXX LD A,(BUFFERSPACE+2) LD (HL),A INC HL LD A,(BUFFERSPACE+1) INC A LD E,A XOR A RL E RLA LD D,A EX DE,HL ADD HL,DE EX DE,HL LD A,(ORGOFFSET) ADD E LD (HL),A LD A,(ORGOFFSET+1) ADC D INC HL LD (HL),A INC HL LD DE,BUFFERSPACE+3 ORNELEMENT: LD C,0 LD A,(DE) CP 12 JR C,OKORN CP 128 JR NC,DOWNORN MOREOCT: INC C SUB 12 JR NC,MOREOCT ADD 12 DEC C JR OKORN DOWNORN: DEC C ADD 12 JR NC,DOWNORN OKORN: INC A RLCA RLCA RLCA RLCA LD (HL),A INC HL LD A,C LD (HL),A INC HL INC DE DJNZ ORNELEMENT LD (COMPADDR),HL EXX JR MOREORNAMENT NOORNAMENT: EXX INC HL INC HL MOREORNAMENT: DEC B JP NZ,NEXTORNAMENT LD A,(UNCOMPPAGE) ; OUT (HMPR),A LD HL,PATTERNFLAGS LD (TESTUSED),HL LD A,64 LD (NUMBERPATTERN),A LD DE,PATTERNFLAGS+1 LD BC,63 LD (HL),B LDIR LD IX,PATTERNFLAGS LD HL,64256 LD DE,BUFFERSPACE+1791 LD A,(HL) LD (DE),A INC A LD B,A LD C,1 USEDPATTERNS: INC HL INC DE LD A,(HL) LD (DE),A LD (PATNO),A PATNO: EQU $+2 LD (IX+0),C DJNZ USEDPATTERNS LD A,(UNCOMPPAGE) INC A INC A LD (UNCOMPPAGE),A LD HL,PATTADDR LD (NEXTPATTADDR),HL LD HL,32768 LD (UNCOMPADDR),HL NEXTPATTERN: OUT (HMPR),A LD DE,BUFFERSPACE LD BC,1536 LDIR BIT 6,H JR Z,NOWRAPUNCOMP RES 6,H INC A NOWRAPUNCOMP: LD (UNCOMPPAGE),A LD (UNCOMPADDR),HL TESTUSED: EQU $+1 LD HL,0000 LD A,(HL) INC HL LD (TESTUSED),HL LD DE,(COMPADDR) ORGOFFSET: EQU $+1 LD HL,0000 ADD HL,DE LD C,L LD B,H NEXTPATTADDR: EQU $+1 LD HL,0000 LD (HL),C INC HL LD (HL),B INC HL LD (NEXTPATTADDR),HL EX DE,HL OR A JP Z,UNUSEDPATTERN LD A,(COMPPAGE) OUT (HMPR),A LD IX,BUFFERSPACE LD B,64 LD (LASTREPEAT),HL LD A,255 LD (LASTINS1),A LD (LASTORN1),A LD (LASTINS2),A LD (LASTORN2),A LD (LASTINS3),A LD (LASTORN3),A LD (LASTINS4),A LD (LASTORN4),A LD (LASTINS5),A LD (LASTORN5),A LD (LASTINS6),A LD (LASTORN6),A LD (LASTCOM1),A LD (LASTPAR1),A LD (LASTCOM2),A LD (LASTPAR2),A LD (LASTCOM3),A LD (LASTPAR3),A LD (LASTCOM4),A LD (LASTPAR4),A LD (LASTCOM5),A LD (LASTPAR5),A LD (LASTCOM6),A LD (LASTPAR6),A NEWROW: LD DE,&0E60 LD C,&F0 CALL SEARCHALL JP NZ,NOJUMPLOOP AND 15 JR Z,LOOPMARKER LD (HL),JRJUMPLOOP INC HL LD (HL),A INC HL LASTREPEAT: EQU $+1 LD DE,0000 LD A,(ORGOFFSET) ADD E LD (HL),A INC HL LD A,(ORGOFFSET+1) OOPSERROR: ADC D LD (HL),A INC HL JP NOJUMPLOOP LOOPMARKER: LD (LASTREPEAT),HL LD A,255 LD (LASTINS1),A LD (LASTORN1),A LD (LASTINS2),A LD (LASTORN2),A LD (LASTINS3),A LD (LASTORN3),A LD (LASTINS4),A LD (LASTORN4),A LD (LASTINS5),A LD (LASTORN5),A LD (LASTINS6),A LD (LASTORN6),A LD (LASTCOM1),A LD (LASTPAR1),A LD (LASTCOM2),A LD (LASTPAR2),A LD (LASTCOM3),A LD (LASTPAR3),A LD (LASTCOM4),A LD (LASTPAR4),A LD (LASTCOM5),A LD (LASTPAR5),A LD (LASTCOM6),A LD (LASTPAR6),A NOJUMPLOOP: LD DE,&0B00 LD C,0 CALL SEARCHALL JR NZ,NONEWSONGPOS LD (HL),JRNEWSONGPOS INC HL LD E,A XOR A RL E RLA ADD 128 LD D,A LD A,(ORGOFFSET) ADD E LD (HL),A LD A,(ORGOFFSET+1) ADC D INC HL LD (HL),A INC HL LD B,1 NONEWSONGPOS: LD A,B CP 1 JR Z,PATTBREAK LD DE,&0D00 LD C,0 CALL SEARCHALL JR NZ,NOPATTBREAK PATTBREAK: LD (HL),JRPATTBREAK INC HL LD B,1 NOPATTBREAK: LD DE,&0F00 LD C,0 CALL SEARCHALL JR NZ,NONEWTEMPO LD (HL),JRNEWTEMPO INC HL LD (HL),A INC HL NONEWTEMPO: LD DE,&0EE0 LD C,&F0 CALL SEARCHALL JR NZ,NOPATTDELAY LD (HL),JRPATTDELAY INC HL AND 15 INC A LD (HL),A INC HL NOPATTDELAY: LD DE,&0800 LD C,0 CALL SEARCHLOW JR NZ,NOENVELOPE1 LD (HL),JRLOWENVELOPE INC HL AND 31 JR Z,CANCELENV1 OR 128 XOR 16 CANCELENV1: LD (HL),A INC HL NOENVELOPE1: LD DE,&0800 LD C,0 CALL SEARCHHIGH JR NZ,NOENVELOPE2 LD (HL),JRHIGHENVELOPE INC HL AND 31 JR Z,CANCELENV2 OR 128 XOR 16 CANCELENV2: LD (HL),A INC HL NOENVELOPE2: LD A,(IX+1) AND 15 LASTCOM1: EQU $+1 CP 00 JR NZ,NEWCOMM1 LD A,(IX+2) LASTPAR1: EQU $+1 CP 00 JP Z,NONEWCOMM1 NEWCOMM1: LD A,(IX+1) AND 15 JP Z,NOCOMM1 CP &0C JR NZ,NOSETVOLUME1 LD (LASTCOM1),A LD (HL),JRSETVOLUME INC HL LD A,(IX+2) LD (LASTPAR1),A RRCA RRCA RRCA RRCA LD C,A AND 15 NEG ADD 15 LD (HL),A INC HL LD A,C AND 240 NEG ADD 240 LD (HL),A INC HL JP NONEWCOMM1 NOSETVOLUME1: CP &01 JR NZ,NOUPSLIDE1 LD (LASTCOM1),A LD (HL),JRUPSLIDE INC HL LD A,(IX+2) LD (HL),A INC HL LD (LASTPAR1),A JP NONEWCOMM1 NOUPSLIDE1: CP &02 JR NZ,NODNSLIDE1 LD (LASTCOM1),A LD (HL),JRDNSLIDE INC HL LD A,(IX+2) LD (HL),A INC HL LD (LASTPAR1),A JP NONEWCOMM1 NODNSLIDE1: CP &03 JR NZ,NOPORTAM1 LD (LASTCOM1),A LD A,(IX+0) AND 127 JR NZ,NEWPORTAM1 LD (HL),JRREPORTAM INC HL LD A,(IX+2) LD (HL),A INC HL LD (LASTPAR1),A JP AFTERPORTAM1 NEWPORTAM1: LD (HL),JRPORTAMENTO INC HL LD C,0 PORTAMOCT1: CP 12 JR C,PORTAMOK1 SUB 12 INC C JR PORTAMOCT1 PORTAMOK1: LD (HL),A INC HL LD (HL),C INC HL LD A,(IX+2) LD (HL),A INC HL LD (LASTPAR1),A JP AFTERPORTAM1 NOPORTAM1: CP &04 JR NZ,NOVIBRAT1 LD (LASTCOM1),A LD (HL),JRVIBRATO INC HL LD A,(IX+2) LD (LASTPAR1),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM1 NOVIBRAT1: CP &07 JR NZ,NOTREMOLO1 LD (LASTCOM1),A LD (HL),JRTREMOLO INC HL LD A,(IX+2) LD (LASTPAR1),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM1 NOTREMOLO1: CP &0E JP NZ,NEWNOCOMMAND1 LD C,(IX+2) LD A,C AND 240 CP &C0 JR NZ,NOCUTNOTE1 LD (HL),JRCUTNOTE INC HL LD A,C AND 15 INC A LD (HL),A INC HL XOR A LD (LASTCOM1),A LD (LASTPAR1),A JP NONEWCOMM1 NOCUTNOTE1: CP &D0 JP NZ,NEWNOCOMMAND1 LD A,(IX+0) AND 127 JR Z,CUTCHANNEL1 LD (HL),JRDELAYNOTE INC HL LD A,(IX+2) AND 15 INC A LD (HL),A INC HL JR NONEWCOMM1 CUTCHANNEL1: LD (HL),JRCUTCHANNEL INC HL JR NONEWCOMM1 NEWCHORD1: LD (LASTPAR1),A LD C,A XOR A LD E,A LD (LASTCOM1),A LD (HL),JRSETCHORD INC HL LD A,C AND 240 LD E,0 CP 192 JR C,HIGH11 INC E SUB 192 HIGH11: ADD 16 AND 240 OR E LD (HL),A INC HL LD A,C AND 15 CP 12 JR C,HIGH21 INC E SUB 12 HIGH21: INC A RLA RLA RLA RLA AND 240 OR E LD (HL),A INC HL JR NONEWCOMM1 NOCOMM1: LD A,(IX+2) OR A JR NZ,NEWCHORD1 LD A,(IX+0) AND 127 JR NZ,NEWNOCOMMAND1 LD A,(LASTCOM1) CP &0C JR Z,AFTERPORTAM1 INC A JR Z,AFTERPORTAM1 NEWNOCOMMAND1: XOR A LD (LASTCOM1),A LD (LASTPAR1),A LD (HL),JRNOCOMMAND INC HL NONEWCOMM1: LD A,(IX+0) AND 127 JP NZ,NEWNOTE1 AFTERPORTAM1: LD A,(LASTPAR2) CP (IX+6) JP NZ,NOTEGAP1_1 LD A,(LASTCOM2) LD C,A LD A,(IX+5) AND 15 CP C JP NZ,NOTEGAP1_1 LD A,(IX+4) AND 127 JP NZ,NOTEGAP1_1 LD A,(LASTPAR3) CP (IX+10) JR NZ,NOTEGAP2_1 LD A,(LASTCOM3) LD C,A LD A,(IX+9) AND 15 CP C JR NZ,NOTEGAP2_1 LD A,(IX+8) AND 127 JR NZ,NOTEGAP2_1 LD A,(LASTPAR4) CP (IX+14) JR NZ,NOTEGAP3_1 LD A,(LASTCOM4) LD C,A LD A,(IX+13) AND 15 CP C JR NZ,NOTEGAP3_1 LD A,(IX+12) AND 127 JR NZ,NOTEGAP3_1 LD A,(LASTPAR5) CP (IX+18) JR NZ,NOTEGAP4_1 LD A,(LASTCOM5) LD C,A LD A,(IX+17) AND 15 CP C JR NZ,NOTEGAP4_1 LD A,(IX+16) AND 127 JR NZ,NOTEGAP4_1 LD A,(LASTPAR6) CP (IX+22) JR NZ,NOTEGAP5_1 LD A,(LASTCOM6) LD C,A LD A,(IX+21) AND 15 CP C JR NZ,NOTEGAP5_1 LD A,(IX+20) AND 127 JR NZ,NOTEGAP5_1 LD (HL),JRNONOTEROW INC HL JP AFTERNOTE6 NOTEGAP5_1: LD (HL),JRNONOTE5 INC HL JP AFTERNOTE5 NOTEGAP4_1: LD (HL),JRNONOTE4 INC HL JP AFTERNOTE4 NOTEGAP3_1: LD (HL),JRNONOTE3 INC HL JP AFTERNOTE3 NOTEGAP2_1: LD (HL),JRNONOTE2 INC HL JP AFTERNOTE2 NOTEGAP1_1: LD (HL),JRNONOTE1 INC HL JP AFTERNOTE1 NEWNOTE1: LD A,(IX+3) LASTORN1: EQU $+1 CP 00 JR Z,NONEWORN1 LD (LASTORN1),A OR A JR Z,NOORN1 LD DE,ORNADDR RLA JR NC,NOHIGHORN1 INC D NOHIGHORN1: ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) OR A JR NZ,VALIDORN1 INC DE LD A,(DE) OR A JR Z,NOORN1 DEC DE VALIDORN1: LD A,(LASTINS1) LD C,A LD A,(IX+0) RLA LD A,(IX+1) RRA RRA RRA AND 62 CP C JR Z,ORNONLY1 LD (LASTINS1),A OR A JR Z,ORNONLY1 LD (HL),JRNEWBOTH INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL LD A,(LASTINS1) JR AUTOINS1 ORNONLY1: LD (HL),JRNEWORN INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE1 NOORN1: LD A,(LASTINS1) LD C,A LD A,(IX+0) RLA LD A,(IX+1) RRA RRA RRA AND 62 CP C JR Z,NOORNONLY1 LD (LASTINS1),A OR A JR Z,NOORNONLY1 LD (HL),JRNOORNINS INC HL JR AUTOINS1 NOORNONLY1: LD (HL),JRNOORN INC HL JR AUTONOTE1 NONEWORN1: LD A,(IX+0) RLA LD A,(IX+1) RRA RRA RRA AND 62 LASTINS1: EQU $+1 CP 00 JR Z,NONEWINS1 LD (LASTINS1),A OR A JR Z,NONEWINS1 LD (HL),JRNEWINST INC HL AUTOINS1: LD DE,SAMPADDR ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE1 NONEWINS1: LD (HL),JRNOTE INC HL AUTONOTE1: LD C,0 LD A,(IX+0) AND 127 NEXTOCTAVE1: CP 12 JR C,OKAYNOTE1 SUB 12 INC C JR NEXTOCTAVE1 OKAYNOTE1: LD (HL),A INC HL LD (HL),C INC HL AFTERNOTE1: LD A,(IX+5) AND 15 LASTCOM2: EQU $+1 CP 00 JR NZ,NEWCOMM2 LD A,(IX+6) LASTPAR2: EQU $+1 CP 00 JP Z,NONEWCOMM2 NEWCOMM2: LD A,(IX+5) AND 15 JP Z,NOCOMM2 CP &0C JR NZ,NOSETVOLUME2 LD (LASTCOM2),A LD (HL),JRSETVOLUME INC HL LD A,(IX+6) LD (LASTPAR2),A RRCA RRCA RRCA RRCA LD C,A AND 15 NEG ADD 15 LD (HL),A INC HL LD A,C AND 240 NEG ADD 240 LD (HL),A INC HL JP NONEWCOMM2 NOSETVOLUME2: CP &01 JR NZ,NOUPSLIDE2 LD (LASTCOM2),A LD (HL),JRUPSLIDE INC HL LD A,(IX+6) LD (HL),A INC HL LD (LASTPAR2),A JP NONEWCOMM2 NOUPSLIDE2: CP &02 JR NZ,NODNSLIDE2 LD (LASTCOM2),A LD (HL),JRDNSLIDE INC HL LD A,(IX+6) LD (HL),A INC HL LD (LASTPAR2),A JP NONEWCOMM2 NODNSLIDE2: CP &03 JR NZ,NOPORTAM2 LD (LASTCOM2),A LD A,(IX+4) AND 127 JR NZ,NEWPORTAM2 LD (HL),JRREPORTAM INC HL LD A,(IX+6) LD (HL),A INC HL LD (LASTPAR2),A JP AFTERPORTAM2 NEWPORTAM2: LD (HL),JRPORTAMENTO INC HL LD C,0 PORTAMOCT2: CP 12 JR C,PORTAMOK2 SUB 12 INC C JR PORTAMOCT2 PORTAMOK2: LD (HL),A INC HL LD (HL),C INC HL LD A,(IX+6) LD (HL),A INC HL LD (LASTPAR2),A JP AFTERPORTAM2 NOPORTAM2: CP &04 JR NZ,NOVIBRAT2 LD (LASTCOM2),A LD (HL),JRVIBRATO INC HL LD A,(IX+6) LD (LASTPAR2),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM2 NOVIBRAT2: CP &07 JR NZ,NOTREMOLO2 LD (LASTCOM2),A LD (HL),JRTREMOLO INC HL LD A,(IX+6) LD (LASTPAR2),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM2 NOTREMOLO2: CP &0E JP NZ,NEWNOCOMMAND2 LD C,(IX+6) LD A,C AND 240 CP &C0 JR NZ,NOCUTNOTE2 LD (HL),JRCUTNOTE INC HL LD A,C AND 15 INC A LD (HL),A INC HL XOR A LD (LASTCOM2),A LD (LASTPAR2),A JP NONEWCOMM2 NOCUTNOTE2: CP &D0 JP NZ,NEWNOCOMMAND2 LD A,(IX+4) AND 127 JR Z,CUTCHANNEL2 LD (HL),JRDELAYNOTE INC HL LD A,(IX+6) AND 15 INC A LD (HL),A INC HL JR NONEWCOMM2 CUTCHANNEL2: LD (HL),JRCUTCHANNEL INC HL JR NONEWCOMM2 NEWCHORD2: LD (LASTPAR2),A LD C,A XOR A LD E,A LD (LASTCOM2),A LD (HL),JRSETCHORD INC HL LD A,C AND 240 LD E,0 CP 192 JR C,HIGH12 INC E SUB 192 HIGH12: ADD 16 AND 240 OR E LD (HL),A INC HL LD A,C AND 15 CP 12 JR C,HIGH22 INC E SUB 12 HIGH22: INC A RLA RLA RLA RLA AND 240 OR E LD (HL),A INC HL JR NONEWCOMM2 NOCOMM2: LD A,(IX+6) OR A JR NZ,NEWCHORD2 LD A,(IX+4) AND 127 JR NZ,NEWNOCOMMAND2 LD A,(LASTCOM2) CP &0C JR Z,AFTERPORTAM2 INC A JR Z,AFTERPORTAM2 NEWNOCOMMAND2: XOR A LD (LASTCOM2),A LD (LASTPAR2),A LD (HL),JRNOCOMMAND INC HL NONEWCOMM2: LD A,(IX+4) AND 127 JP NZ,NEWNOTE2 AFTERPORTAM2: LD A,(LASTPAR3) CP (IX+10) JP NZ,NOTEGAP1_2 LD A,(LASTCOM3) LD C,A LD A,(IX+9) AND 15 CP C JP NZ,NOTEGAP1_2 LD A,(IX+8) AND 127 JP NZ,NOTEGAP1_2 LD A,(LASTPAR4) CP (IX+14) JR NZ,NOTEGAP2_2 LD A,(LASTCOM4) LD C,A LD A,(IX+13) AND 15 CP C JR NZ,NOTEGAP2_2 LD A,(IX+12) AND 127 JR NZ,NOTEGAP2_2 LD A,(LASTPAR5) CP (IX+18) JR NZ,NOTEGAP3_2 LD A,(LASTCOM5) LD C,A LD A,(IX+17) AND 15 CP C JR NZ,NOTEGAP3_2 LD A,(IX+16) AND 127 JR NZ,NOTEGAP3_2 LD A,(LASTPAR6) CP (IX+22) JR NZ,NOTEGAP4_2 LD A,(LASTCOM6) LD C,A LD A,(IX+21) AND 15 CP C JR NZ,NOTEGAP4_2 LD A,(IX+20) AND 127 JR NZ,NOTEGAP4_2 LD (HL),JRNONOTE5 INC HL JP AFTERNOTE6 NOTEGAP4_2: LD (HL),JRNONOTE4 INC HL JP AFTERNOTE5 NOTEGAP3_2: LD (HL),JRNONOTE3 INC HL JP AFTERNOTE4 NOTEGAP2_2: LD (HL),JRNONOTE2 INC HL JP AFTERNOTE3 NOTEGAP1_2: LD (HL),JRNONOTE1 INC HL JP AFTERNOTE2 NEWNOTE2: LD A,(IX+7) LASTORN2: EQU $+1 CP 00 JR Z,NONEWORN2 LD (LASTORN2),A OR A JR Z,NOORN2 LD DE,ORNADDR RLA JR NC,NOHIGHORN2 INC D NOHIGHORN2: ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) OR A JR NZ,VALIDORN2 INC DE LD A,(DE) OR A JR Z,NOORN2 DEC DE VALIDORN2: LD A,(LASTINS2) LD C,A LD A,(IX+4) RLA LD A,(IX+5) RRA RRA RRA AND 62 CP C JR Z,ORNONLY2 LD (LASTINS2),A OR A JR Z,ORNONLY2 LD (HL),JRNEWBOTH INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL LD A,(LASTINS2) JR AUTOINS2 ORNONLY2: LD (HL),JRNEWORN INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE2 NOORN2: LD A,(LASTINS2) LD C,A LD A,(IX+4) RLA LD A,(IX+5) RRA RRA RRA AND 62 CP C JR Z,NOORNONLY2 LD (LASTINS2),A OR A JR Z,NOORNONLY2 LD (HL),JRNOORNINS INC HL JR AUTOINS2 NOORNONLY2: LD (HL),JRNOORN INC HL JR AUTONOTE2 NONEWORN2: LD A,(IX+4) RLA LD A,(IX+5) RRA RRA RRA AND 62 LASTINS2: EQU $+1 CP 00 JR Z,NONEWINS2 LD (LASTINS2),A OR A JR Z,NONEWINS2 LD (HL),JRNEWINST INC HL AUTOINS2: LD DE,SAMPADDR ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE2 NONEWINS2: LD (HL),JRNOTE INC HL AUTONOTE2: LD C,0 LD A,(IX+4) AND 127 NEXTOCTAVE2: CP 12 JR C,OKAYNOTE2 SUB 12 INC C JR NEXTOCTAVE2 OKAYNOTE2: LD (HL),A INC HL LD (HL),C INC HL AFTERNOTE2: LD A,(IX+9) AND 15 LASTCOM3: EQU $+1 CP 00 JR NZ,NEWCOMM3 LD A,(IX+10) LASTPAR3: EQU $+1 CP 00 JP Z,NONEWCOMM3 NEWCOMM3: LD A,(IX+9) AND 15 JP Z,NOCOMM3 CP &0C JR NZ,NOSETVOLUME3 LD (LASTCOM3),A LD (HL),JRSETVOLUME INC HL LD A,(IX+10) LD (LASTPAR3),A RRCA RRCA RRCA RRCA LD C,A AND 15 NEG ADD 15 LD (HL),A INC HL LD A,C AND 240 NEG ADD 240 LD (HL),A INC HL JP NONEWCOMM3 NOSETVOLUME3: CP &01 JR NZ,NOUPSLIDE3 LD (LASTCOM3),A LD (HL),JRUPSLIDE INC HL LD A,(IX+10) LD (HL),A INC HL LD (LASTPAR3),A JP NONEWCOMM3 NOUPSLIDE3: CP &02 JR NZ,NODNSLIDE3 LD (LASTCOM3),A LD (HL),JRDNSLIDE INC HL LD A,(IX+10) LD (HL),A INC HL LD (LASTPAR3),A JP NONEWCOMM3 NODNSLIDE3: CP &03 JR NZ,NOPORTAM3 LD (LASTCOM3),A LD A,(IX+8) AND 127 JR NZ,NEWPORTAM3 LD (HL),JRREPORTAM INC HL LD A,(IX+10) LD (HL),A INC HL LD (LASTPAR3),A JP AFTERPORTAM3 NEWPORTAM3: LD (HL),JRPORTAMENTO INC HL LD C,0 PORTAMOCT3: CP 12 JR C,PORTAMOK3 SUB 12 INC C JR PORTAMOCT3 PORTAMOK3: LD (HL),A INC HL LD (HL),C INC HL LD A,(IX+10) LD (HL),A INC HL LD (LASTPAR3),A JP AFTERPORTAM3 NOPORTAM3: CP &04 JR NZ,NOVIBRAT3 LD (LASTCOM3),A LD (HL),JRVIBRATO INC HL LD A,(IX+10) LD (LASTPAR3),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM3 NOVIBRAT3: CP &07 JR NZ,NOTREMOLO3 LD (LASTCOM3),A LD (HL),JRTREMOLO INC HL LD A,(IX+10) LD (LASTPAR3),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM3 NOTREMOLO3: CP &0E JP NZ,NEWNOCOMMAND3 LD C,(IX+10) LD A,C AND 240 CP &C0 JR NZ,NOCUTNOTE3 LD (HL),JRCUTNOTE INC HL LD A,C AND 15 INC A LD (HL),A INC HL XOR A LD (LASTCOM3),A LD (LASTPAR3),A JP NONEWCOMM3 NOCUTNOTE3: CP &D0 JP NZ,NEWNOCOMMAND3 LD A,(IX+8) AND 127 JR Z,CUTCHANNEL3 LD (HL),JRDELAYNOTE INC HL LD A,(IX+10) AND 15 INC A LD (HL),A INC HL JR NONEWCOMM3 CUTCHANNEL3: LD (HL),JRCUTCHANNEL INC HL JR NONEWCOMM3 NEWCHORD3: LD (LASTPAR3),A LD C,A XOR A LD E,A LD (LASTCOM3),A LD (HL),JRSETCHORD INC HL LD A,C AND 240 LD E,0 CP 192 JR C,HIGH13 INC E SUB 192 HIGH13: ADD 16 AND 240 OR E LD (HL),A INC HL LD A,C AND 15 CP 12 JR C,HIGH23 INC E SUB 12 HIGH23: INC A RLA RLA RLA RLA AND 240 OR E LD (HL),A INC HL JR NONEWCOMM3 NOCOMM3: LD A,(IX+10) OR A JR NZ,NEWCHORD3 LD A,(IX+8) AND 127 JR NZ,NEWNOCOMMAND3 LD A,(LASTCOM3) CP &0C JR Z,AFTERPORTAM3 INC A JR Z,AFTERPORTAM3 NEWNOCOMMAND3: XOR A LD (LASTCOM3),A LD (LASTPAR3),A LD (HL),JRNOCOMMAND INC HL NONEWCOMM3: LD A,(IX+8) AND 127 JP NZ,NEWNOTE3 AFTERPORTAM3: LD A,(LASTPAR4) CP (IX+14) JP NZ,NOTEGAP1_3 LD A,(LASTCOM4) LD C,A LD A,(IX+13) AND 15 CP C JP NZ,NOTEGAP1_3 LD A,(IX+12) AND 127 JP NZ,NOTEGAP1_3 LD A,(LASTPAR5) CP (IX+18) JR NZ,NOTEGAP2_3 LD A,(LASTCOM5) LD C,A LD A,(IX+17) AND 15 CP C JR NZ,NOTEGAP2_3 LD A,(IX+16) AND 127 JR NZ,NOTEGAP2_3 LD A,(LASTPAR6) CP (IX+22) JR NZ,NOTEGAP3_3 LD A,(LASTCOM6) LD C,A LD A,(IX+21) AND 15 CP C JR NZ,NOTEGAP3_3 LD A,(IX+20) AND 127 JR NZ,NOTEGAP3_3 LD (HL),JRNONOTE4 INC HL JP AFTERNOTE6 NOTEGAP3_3: LD (HL),JRNONOTE3 INC HL JP AFTERNOTE5 NOTEGAP2_3: LD (HL),JRNONOTE2 INC HL JP AFTERNOTE4 NOTEGAP1_3: LD (HL),JRNONOTE1 INC HL JP AFTERNOTE3 NEWNOTE3: LD A,(IX+11) LASTORN3: EQU $+1 CP 00 JR Z,NONEWORN3 LD (LASTORN3),A OR A JR Z,NOORN3 LD DE,ORNADDR RLA JR NC,NOHIGHORN3 INC D NOHIGHORN3: ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) OR A JR NZ,VALIDORN3 INC DE LD A,(DE) OR A JR Z,NOORN3 DEC DE VALIDORN3: LD A,(LASTINS3) LD C,A LD A,(IX+8) RLA LD A,(IX+9) RRA RRA RRA AND 62 CP C JR Z,ORNONLY3 LD (LASTINS3),A OR A JR Z,ORNONLY3 LD (HL),JRNEWBOTH INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL LD A,(LASTINS3) JR AUTOINS3 ORNONLY3: LD (HL),JRNEWORN INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE3 NOORN3: LD A,(LASTINS3) LD C,A LD A,(IX+8) RLA LD A,(IX+9) RRA RRA RRA AND 62 CP C JR Z,NOORNONLY3 LD (LASTINS3),A OR A JR Z,NOORNONLY3 LD (HL),JRNOORNINS INC HL JR AUTOINS3 NOORNONLY3: LD (HL),JRNOORN INC HL JR AUTONOTE3 NONEWORN3: LD A,(IX+8) RLA LD A,(IX+9) RRA RRA RRA AND 62 LASTINS3: EQU $+1 CP 00 JR Z,NONEWINS3 LD (LASTINS3),A OR A JR Z,NONEWINS3 LD (HL),JRNEWINST INC HL AUTOINS3: LD DE,SAMPADDR ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE3 NONEWINS3: LD (HL),JRNOTE INC HL AUTONOTE3: LD C,0 LD A,(IX+8) AND 127 NEXTOCTAVE3: CP 12 JR C,OKAYNOTE3 SUB 12 INC C JR NEXTOCTAVE3 OKAYNOTE3: LD (HL),A INC HL LD (HL),C INC HL AFTERNOTE3: LD A,(IX+13) AND 15 LASTCOM4: EQU $+1 CP 00 JR NZ,NEWCOMM4 LD A,(IX+14) LASTPAR4: EQU $+1 CP 00 JP Z,NONEWCOMM4 NEWCOMM4: LD A,(IX+13) AND 15 JP Z,NOCOMM4 CP &0C JR NZ,NOSETVOLUME4 LD (LASTCOM4),A LD (HL),JRSETVOLUME INC HL LD A,(IX+14) LD (LASTPAR4),A RRCA RRCA RRCA RRCA LD C,A AND 15 NEG ADD 15 LD (HL),A INC HL LD A,C AND 240 NEG ADD 240 LD (HL),A INC HL JP NONEWCOMM4 NOSETVOLUME4: CP &01 JR NZ,NOUPSLIDE4 LD (LASTCOM4),A LD (HL),JRUPSLIDE INC HL LD A,(IX+14) LD (HL),A INC HL LD (LASTPAR4),A JP NONEWCOMM4 NOUPSLIDE4: CP &02 JR NZ,NODNSLIDE4 LD (LASTCOM4),A LD (HL),JRDNSLIDE INC HL LD A,(IX+14) LD (HL),A INC HL LD (LASTPAR4),A JP NONEWCOMM4 NODNSLIDE4: CP &03 JR NZ,NOPORTAM4 LD (LASTCOM4),A LD A,(IX+12) AND 127 JR NZ,NEWPORTAM4 LD (HL),JRREPORTAM INC HL LD A,(IX+14) LD (HL),A INC HL LD (LASTPAR4),A JP AFTERPORTAM4 NEWPORTAM4: LD (HL),JRPORTAMENTO INC HL LD C,0 PORTAMOCT4: CP 12 JR C,PORTAMOK4 SUB 12 INC C JR PORTAMOCT4 PORTAMOK4: LD (HL),A INC HL LD (HL),C INC HL LD A,(IX+14) LD (HL),A INC HL LD (LASTPAR4),A JP AFTERPORTAM4 NOPORTAM4: CP &04 JR NZ,NOVIBRAT4 LD (LASTCOM4),A LD (HL),JRVIBRATO INC HL LD A,(IX+14) LD (LASTPAR4),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM4 NOVIBRAT4: CP &07 JR NZ,NOTREMOLO4 LD (LASTCOM4),A LD (HL),JRTREMOLO INC HL LD A,(IX+14) LD (LASTPAR4),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM4 NOTREMOLO4: CP &0E JP NZ,NEWNOCOMMAND4 LD C,(IX+14) LD A,C AND 240 CP &C0 JR NZ,NOCUTNOTE4 LD (HL),JRCUTNOTE INC HL LD A,C AND 15 INC A LD (HL),A INC HL XOR A LD (LASTCOM4),A LD (LASTPAR4),A JP NONEWCOMM4 NOCUTNOTE4: CP &D0 JP NZ,NEWNOCOMMAND4 LD A,(IX+12) AND 127 JR Z,CUTCHANNEL4 LD (HL),JRDELAYNOTE INC HL LD A,(IX+14) AND 15 INC A LD (HL),A INC HL JR NONEWCOMM4 CUTCHANNEL4: LD (HL),JRCUTCHANNEL INC HL JR NONEWCOMM4 NEWCHORD4: LD (LASTPAR4),A LD C,A XOR A LD E,A LD (LASTCOM4),A LD (HL),JRSETCHORD INC HL LD A,C AND 240 LD E,0 CP 192 JR C,HIGH14 INC E SUB 192 HIGH14: ADD 16 AND 240 OR E LD (HL),A INC HL LD A,C AND 15 CP 12 JR C,HIGH24 INC E SUB 12 HIGH24: INC A RLA RLA RLA RLA AND 240 OR E LD (HL),A INC HL JR NONEWCOMM4 NOCOMM4: LD A,(IX+14) OR A JR NZ,NEWCHORD4 LD A,(IX+12) AND 127 JR NZ,NEWNOCOMMAND4 LD A,(LASTCOM4) CP &0C JR Z,AFTERPORTAM4 INC A JR Z,AFTERPORTAM4 NEWNOCOMMAND4: XOR A LD (LASTCOM4),A LD (LASTPAR4),A LD (HL),JRNOCOMMAND INC HL NONEWCOMM4: LD A,(IX+12) AND 127 JR NZ,NEWNOTE4 AFTERPORTAM4: LD A,(LASTPAR5) CP (IX+18) JR NZ,NOTEGAP1_4 LD A,(LASTCOM5) LD C,A LD A,(IX+17) AND 15 CP C JR NZ,NOTEGAP1_4 LD A,(IX+16) AND 127 JR NZ,NOTEGAP1_4 LD A,(LASTPAR6) CP (IX+22) JR NZ,NOTEGAP2_4 LD A,(LASTCOM6) LD C,A LD A,(IX+21) AND 15 CP C JR NZ,NOTEGAP2_4 LD A,(IX+20) AND 127 JR NZ,NOTEGAP2_4 LD (HL),JRNONOTE3 INC HL JP AFTERNOTE6 NOTEGAP2_4: LD (HL),JRNONOTE2 INC HL JP AFTERNOTE5 NOTEGAP1_4: LD (HL),JRNONOTE1 INC HL JP AFTERNOTE4 NEWNOTE4: LD A,(IX+15) LASTORN4: EQU $+1 CP 00 JR Z,NONEWORN4 LD (LASTORN4),A OR A JR Z,NOORN4 LD DE,ORNADDR RLA JR NC,NOHIGHORN4 INC D NOHIGHORN4: ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) OR A JR NZ,VALIDORN4 INC DE LD A,(DE) OR A JR Z,NOORN4 DEC DE VALIDORN4: LD A,(LASTINS4) LD C,A LD A,(IX+12) RLA LD A,(IX+13) RRA RRA RRA AND 62 CP C JR Z,ORNONLY4 LD (LASTINS4),A OR A JR Z,ORNONLY4 LD (HL),JRNEWBOTH INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL LD A,(LASTINS4) JR AUTOINS4 ORNONLY4: LD (HL),JRNEWORN INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE4 NOORN4: LD A,(LASTINS4) LD C,A LD A,(IX+12) RLA LD A,(IX+13) RRA RRA RRA AND 62 CP C JR Z,NOORNONLY4 LD (LASTINS4),A OR A JR Z,NOORNONLY4 LD (HL),JRNOORNINS INC HL JR AUTOINS4 NOORNONLY4: LD (HL),JRNOORN INC HL JR AUTONOTE4 NONEWORN4: LD A,(IX+12) RLA LD A,(IX+13) RRA RRA RRA AND 62 LASTINS4: EQU $+1 CP 00 JR Z,NONEWINS4 LD (LASTINS4),A OR A JR Z,NONEWINS4 LD (HL),JRNEWINST INC HL AUTOINS4: LD DE,SAMPADDR ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE4 NONEWINS4: LD (HL),JRNOTE INC HL AUTONOTE4: LD C,0 LD A,(IX+12) AND 127 NEXTOCTAVE4: CP 12 JR C,OKAYNOTE4 SUB 12 INC C JR NEXTOCTAVE4 OKAYNOTE4: LD (HL),A INC HL LD (HL),C INC HL AFTERNOTE4: LD A,(IX+17) AND 15 LASTCOM5: EQU $+1 CP 00 JR NZ,NEWCOMM5 LD A,(IX+18) LASTPAR5: EQU $+1 CP 00 JP Z,NONEWCOMM5 NEWCOMM5: LD A,(IX+17) AND 15 JP Z,NOCOMM5 CP &0C JR NZ,NOSETVOLUME5 LD (LASTCOM5),A LD (HL),JRSETVOLUME INC HL LD A,(IX+18) LD (LASTPAR5),A RRCA RRCA RRCA RRCA LD C,A AND 15 NEG ADD 15 LD (HL),A INC HL LD A,C AND 240 NEG ADD 240 LD (HL),A INC HL JP NONEWCOMM5 NOSETVOLUME5: CP &01 JR NZ,NOUPSLIDE5 LD (LASTCOM5),A LD (HL),JRUPSLIDE INC HL LD A,(IX+18) LD (HL),A INC HL LD (LASTPAR5),A JP NONEWCOMM5 NOUPSLIDE5: CP &02 JR NZ,NODNSLIDE5 LD (LASTCOM5),A LD (HL),JRDNSLIDE INC HL LD A,(IX+18) LD (HL),A INC HL LD (LASTPAR5),A JP NONEWCOMM5 NODNSLIDE5: CP &03 JR NZ,NOPORTAM5 LD (LASTCOM5),A LD A,(IX+16) AND 127 JR NZ,NEWPORTAM5 LD (HL),JRREPORTAM INC HL LD A,(IX+18) LD (HL),A INC HL LD (LASTPAR5),A JP AFTERPORTAM5 NEWPORTAM5: LD (HL),JRPORTAMENTO INC HL LD C,0 PORTAMOCT5: CP 12 JR C,PORTAMOK5 SUB 12 INC C JR PORTAMOCT5 PORTAMOK5: LD (HL),A INC HL LD (HL),C INC HL LD A,(IX+18) LD (HL),A INC HL LD (LASTPAR5),A JP AFTERPORTAM5 NOPORTAM5: CP &04 JR NZ,NOVIBRAT5 LD (LASTCOM5),A LD (HL),JRVIBRATO INC HL LD A,(IX+18) LD (LASTPAR5),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM5 NOVIBRAT5: CP &07 JR NZ,NOTREMOLO5 LD (LASTCOM5),A LD (HL),JRTREMOLO INC HL LD A,(IX+18) LD (LASTPAR5),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM5 NOTREMOLO5: CP &0E JP NZ,NEWNOCOMMAND5 LD C,(IX+18) LD A,C AND 240 CP &C0 JR NZ,NOCUTNOTE5 LD (HL),JRCUTNOTE INC HL LD A,C AND 15 INC A LD (HL),A INC HL XOR A LD (LASTCOM5),A LD (LASTPAR5),A JP NONEWCOMM5 NOCUTNOTE5: CP &D0 JP NZ,NEWNOCOMMAND5 LD A,(IX+16) AND 127 JR Z,CUTCHANNEL5 LD (HL),JRDELAYNOTE INC HL LD A,(IX+18) AND 15 INC A LD (HL),A INC HL JR NONEWCOMM5 CUTCHANNEL5: LD (HL),JRCUTCHANNEL INC HL JR NONEWCOMM5 NEWCHORD5: LD (LASTPAR5),A LD C,A XOR A LD E,A LD (LASTCOM5),A LD (HL),JRSETCHORD INC HL LD A,C AND 240 LD E,0 CP 192 JR C,HIGH15 INC E SUB 192 HIGH15: ADD 16 AND 240 OR E LD (HL),A INC HL LD A,C AND 15 CP 12 JR C,HIGH25 INC E SUB 12 HIGH25: INC A RLA RLA RLA RLA AND 240 OR E LD (HL),A INC HL JR NONEWCOMM5 NOCOMM5: LD A,(IX+18) OR A JR NZ,NEWCHORD5 LD A,(IX+16) AND 127 JR NZ,NEWNOCOMMAND5 LD A,(LASTCOM5) CP &0C JR Z,AFTERPORTAM5 INC A JR Z,AFTERPORTAM5 NEWNOCOMMAND5: XOR A LD (LASTCOM5),A LD (LASTPAR5),A LD (HL),JRNOCOMMAND INC HL NONEWCOMM5: LD A,(IX+16) AND 127 JR NZ,NEWNOTE5 AFTERPORTAM5: LD A,(LASTPAR6) CP (IX+22) JR NZ,NOTEGAP1_5 LD A,(LASTCOM6) LD C,A LD A,(IX+21) AND 15 CP C JR NZ,NOTEGAP1_5 LD A,(IX+20) AND 127 JR NZ,NOTEGAP1_5 LD (HL),JRNONOTE2 INC HL JP AFTERNOTE6 NOTEGAP1_5: LD (HL),JRNONOTE1 INC HL JP AFTERNOTE5 NEWNOTE5: LD A,(IX+19) LASTORN5: EQU $+1 CP 00 JR Z,NONEWORN5 LD (LASTORN5),A OR A JR Z,NOORN5 LD DE,ORNADDR RLA JR NC,NOHIGHORN5 INC D NOHIGHORN5: ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) OR A JR NZ,VALIDORN5 INC DE LD A,(DE) OR A JR Z,NOORN5 DEC DE VALIDORN5: LD A,(LASTINS5) LD C,A LD A,(IX+16) RLA LD A,(IX+17) RRA RRA RRA AND 62 CP C JR Z,ORNONLY5 LD (LASTINS5),A OR A JR Z,ORNONLY5 LD (HL),JRNEWBOTH INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL LD A,(LASTINS5) JR AUTOINS5 ORNONLY5: LD (HL),JRNEWORN INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE5 NOORN5: LD A,(LASTINS5) LD C,A LD A,(IX+16) RLA LD A,(IX+17) RRA RRA RRA AND 62 CP C JR Z,NOORNONLY5 LD (LASTINS5),A OR A JR Z,NOORNONLY5 LD (HL),JRNOORNINS INC HL JR AUTOINS5 NOORNONLY5: LD (HL),JRNOORN INC HL JR AUTONOTE5 NONEWORN5: LD A,(IX+16) RLA LD A,(IX+17) RRA RRA RRA AND 62 LASTINS5: EQU $+1 CP 00 JR Z,NONEWINS5 LD (LASTINS5),A OR A JR Z,NONEWINS5 LD (HL),JRNEWINST INC HL AUTOINS5: LD DE,SAMPADDR ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE5 NONEWINS5: LD (HL),JRNOTE INC HL AUTONOTE5: LD C,0 LD A,(IX+16) AND 127 NEXTOCTAVE5: CP 12 JR C,OKAYNOTE5 SUB 12 INC C JR NEXTOCTAVE5 OKAYNOTE5: LD (HL),A INC HL LD (HL),C INC HL AFTERNOTE5: LD A,(IX+21) AND 15 LASTCOM6: EQU $+1 CP 00 JR NZ,NEWCOMM6 LD A,(IX+22) LASTPAR6: EQU $+1 CP 00 JP Z,NONEWCOMM6 NEWCOMM6: LD A,(IX+21) AND 15 JP Z,NOCOMM6 CP &0C JR NZ,NOSETVOLUME6 LD (LASTCOM6),A LD (HL),JRSETVOLUME INC HL LD A,(IX+22) LD (LASTPAR6),A RRCA RRCA RRCA RRCA LD C,A AND 15 NEG ADD 15 LD (HL),A INC HL LD A,C AND 240 NEG ADD 240 LD (HL),A INC HL JP NONEWCOMM6 NOSETVOLUME6: CP &01 JR NZ,NOUPSLIDE6 LD (LASTCOM6),A LD (HL),JRUPSLIDE INC HL LD A,(IX+22) LD (HL),A INC HL LD (LASTPAR6),A JP NONEWCOMM6 NOUPSLIDE6: CP &02 JR NZ,NODNSLIDE6 LD (LASTCOM6),A LD (HL),JRDNSLIDE INC HL LD A,(IX+22) LD (HL),A INC HL LD (LASTPAR6),A JP NONEWCOMM6 NODNSLIDE6: CP &03 JR NZ,NOPORTAM6 LD (LASTCOM6),A LD A,(IX+20) AND 127 JR NZ,NEWPORTAM6 LD (HL),JRREPORTAM INC HL LD A,(IX+22) LD (HL),A INC HL LD (LASTPAR6),A JP AFTERPORTAM6 NEWPORTAM6: LD (HL),JRPORTAMENTO INC HL LD C,0 PORTAMOCT6: CP 12 JR C,PORTAMOK6 SUB 12 INC C JR PORTAMOCT6 PORTAMOK6: LD (HL),A INC HL LD (HL),C INC HL LD A,(IX+22) LD (HL),A INC HL LD (LASTPAR6),A JP AFTERPORTAM6 NOPORTAM6: CP &04 JR NZ,NOVIBRAT6 LD (LASTCOM6),A LD (HL),JRVIBRATO INC HL LD A,(IX+22) LD (LASTPAR6),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM6 NOVIBRAT6: CP &07 JR NZ,NOTREMOLO6 LD (LASTCOM6),A LD (HL),JRTREMOLO INC HL LD A,(IX+22) LD (LASTPAR6),A LD C,A AND &0F OR A LD E,0 RRA RR E RR A RR E LD (HL),E INC HL LD (HL),A INC HL LD A,C RRA RRA RRA RRA AND 15 LD (HL),A INC HL JP NONEWCOMM6 NOTREMOLO6: CP &0E JP NZ,NEWNOCOMMAND6 LD C,(IX+22) LD A,C AND 240 CP &C0 JR NZ,NOCUTNOTE6 LD (HL),JRCUTNOTE INC HL LD A,C AND 15 INC A LD (HL),A INC HL XOR A LD (LASTCOM6),A LD (LASTPAR6),A JP NONEWCOMM6 NOCUTNOTE6: CP &D0 JP NZ,NEWNOCOMMAND6 LD A,(IX+20) AND 127 JR Z,CUTCHANNEL6 LD (HL),JRDELAYNOTE INC HL LD A,(IX+22) AND 15 INC A LD (HL),A INC HL JR NONEWCOMM6 CUTCHANNEL6: LD (HL),JRCUTCHANNEL INC HL JR NONEWCOMM6 NEWCHORD6: LD (LASTPAR6),A LD C,A XOR A LD E,A LD (LASTCOM6),A LD (HL),JRSETCHORD INC HL LD A,C AND 240 LD E,0 CP 192 JR C,HIGH16 INC E SUB 192 HIGH16: ADD 16 AND 240 OR E LD (HL),A INC HL LD A,C AND 15 CP 12 JR C,HIGH26 INC E SUB 12 HIGH26: INC A RLA RLA RLA RLA AND 240 OR E LD (HL),A INC HL JR NONEWCOMM6 NOCOMM6: LD A,(IX+22) OR A JR NZ,NEWCHORD6 LD A,(IX+20) AND 127 JR NZ,NEWNOCOMMAND6 LD A,(LASTCOM6) CP &0C JR Z,AFTERPORTAM6 INC A JR Z,AFTERPORTAM6 NEWNOCOMMAND6: XOR A LD (LASTCOM6),A LD (LASTPAR6),A LD (HL),JRNOCOMMAND INC HL NONEWCOMM6: LD A,(IX+20) AND 127 JR NZ,NEWNOTE6 AFTERPORTAM6: LD (HL),JRNONOTE1 INC HL JP AFTERNOTE6 NEWNOTE6: LD A,(IX+23) LASTORN6: EQU $+1 CP 00 JR Z,NONEWORN6 LD (LASTORN6),A OR A JR Z,NOORN6 LD DE,ORNADDR RLA JR NC,NOHIGHORN6 INC D NOHIGHORN6: ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) OR A JR NZ,VALIDORN6 INC DE LD A,(DE) OR A JR Z,NOORN6 DEC DE VALIDORN6: LD A,(LASTINS6) LD C,A LD A,(IX+20) RLA LD A,(IX+21) RRA RRA RRA AND 62 CP C JR Z,ORNONLY6 LD (LASTINS6),A OR A JR Z,ORNONLY6 LD (HL),JRNEWBOTH INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL LD A,(LASTINS6) JR AUTOINS6 ORNONLY6: LD (HL),JRNEWORN INC HL LD A,(DE) OR A LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE6 NOORN6: LD A,(LASTINS6) LD C,A LD A,(IX+20) RLA LD A,(IX+21) RRA RRA RRA AND 62 CP C JR Z,NOORNONLY6 LD (LASTINS6),A OR A JR Z,NOORNONLY6 LD (HL),JRNOORNINS INC HL JR AUTOINS6 NOORNONLY6: LD (HL),JRNOORN INC HL JR AUTONOTE6 NONEWORN6: LD A,(IX+20) RLA LD A,(IX+21) RRA RRA RRA AND 62 LASTINS6: EQU $+1 CP 00 JR Z,NONEWINS6 LD (LASTINS6),A OR A JR Z,NONEWINS6 LD (HL),JRNEWINST INC HL AUTOINS6: LD DE,SAMPADDR ADD E LD E,A LD A,D ADC 0 LD D,A LD A,(DE) LD (HL),A INC HL INC DE LD A,(DE) LD (HL),A INC HL JR AUTONOTE6 NONEWINS6: LD (HL),JRNOTE INC HL AUTONOTE6: LD C,0 LD A,(IX+20) AND 127 NEXTOCTAVE6: CP 12 JR C,OKAYNOTE6 SUB 12 INC C JR NEXTOCTAVE6 OKAYNOTE6: LD (HL),A INC HL LD (HL),C INC HL AFTERNOTE6: LD DE,24 ADD IX,DE DEC B JP NZ,NEWROW LD (COMPADDR),HL UNUSEDPATTERN: LD HL,(UNCOMPADDR) NUMBERPATTERN: EQU $+1 LD A,00 DEC A LD (NUMBERPATTERN),A LD A,(UNCOMPPAGE) JP NZ,NEXTPATTERN LD A,(COMPPAGE) OUT (HMPR),A LD DE,BUFFERSPACE+1791 LD A,(DE) INC A LD B,A INC DE LD IX,32768 SONGPOSITIONS: LD A,(DE) INC DE OR A RLA ADD PATTADDR\256 LD L,A LD A,PATTADDR/256 ADC 0 LD H,A LD A,(HL) LD (IX+0),A INC HL INC IX LD A,(HL) LD (IX+0),A INC IX DJNZ SONGPOSITIONS LD BC,(COMPADDR) SPSTORE: EQU $+1 LD SP,0000 HMPRS: EQU $+1 LD A,00 OUT (HMPR),A JP HMEM ORG $+32768 HMEM: LMPRS: EQU $+1 LD A,00 OUT (LMPR),A EI RET ORG $-32768 SAMPADDR: DEFS 64 ORNADDR: DEFS 512 PATTADDR: DEFS 128 PATTERNFLAGS: DEFS 64 BUFFERSPACE: DEFS 2048 SEARCHALL: ;SEARCH FOR COMMAND D CALL SEARCHLOW ;WITH PARAMETER E (MASK C) RET Z ;RETURNS NZ NO MATCH CALL SEARCHHIGH ; Z MATCH (A=PARAM) RET SEARCHLOW: LD A,(IX+1) AND &0F CP D JR NZ,TRYCH2 LD A,(IX+2) AND C CP E LD A,(IX+2) RET Z TRYCH2: LD A,(IX+5) AND &0F CP D JR NZ,TRYCH3 LD A,(IX+6) AND C CP E LD A,(IX+6) RET Z TRYCH3: LD A,(IX+9) AND &0F CP D RET NZ LD A,(IX+10) AND C CP E LD A,(IX+10) RET SEARCHHIGH: LD A,(IX+13) AND &0F CP D JR NZ,TRYCH5 LD A,(IX+14) AND C CP E LD A,(IX+14) RET Z TRYCH5: LD A,(IX+17) AND &0F CP D JR NZ,TRYCH6 LD A,(IX+18) AND C CP E LD A,(IX+18) RET Z TRYCH6: LD A,(IX+21) AND &0F CP D RET NZ LD A,(IX+22) AND C CP E LD A,(IX+22) RET STARTPLAYER: RESETPLAYER: LD HL,32768 JP RPLAYERDASH PLAYROUTINE: LD HL,SOUNDTABLE LD BC,511 LD E,0 BYTE0: LD A,(HL) INC L SENTCHIP0: EQU $+1 CP 00 JR Z,BYTE1 LD (SENTCHIP0),A OUT (C),E DEC B OUT (C),A INC B BYTE1: INC E LD A,(HL) INC L SENTCHIP1: EQU $+1 CP 00 JR Z,BYTE2 LD (SENTCHIP1),A OUT (C),E DEC B OUT (C),A INC B BYTE2: INC E LD A,(HL) INC L SENTCHIP2: EQU $+1 CP 00 JR Z,BYTE3 LD (SENTCHIP2),A OUT (C),E DEC B OUT (C),A INC B BYTE3: INC E LD A,(HL) INC L SENTCHIP3: EQU $+1 CP 00 JR Z,BYTE4 LD (SENTCHIP3),A OUT (C),E DEC B OUT (C),A INC B BYTE4: INC E LD A,(HL) INC L SENTCHIP4: EQU $+1 CP 00 JR Z,BYTE5 LD (SENTCHIP4),A OUT (C),E DEC B OUT (C),A INC B BYTE5: INC E LD A,(HL) INC L SENTCHIP5: EQU $+1 CP 00 JR Z,BYTE6 LD (SENTCHIP5),A OUT (C),E DEC B OUT (C),A INC B BYTE6: LD E,8 LD A,(HL) INC L SENTCHIP8: EQU $+1 CP 00 JR Z,BYTE7 LD (SENTCHIP8),A OUT (C),E DEC B OUT (C),A INC B BYTE7: INC E LD A,(HL) INC L SENTCHIP9: EQU $+1 CP 00 JR Z,BYTEA LD (SENTCHIP9),A OUT (C),E DEC B OUT (C),A INC B BYTEA: LD D,16 LD A,(SOUNDTABLE+12) SENTCHIPA: EQU $+1 CP 00 JR Z,BYTE8 LD (SENTCHIPA),A OUT (C),D DEC B OUT (C),A INC B BYTE8: INC E LD A,(HL) INC L SENTCHIP10: EQU $+1 CP 00 JR Z,BYTE9 LD (SENTCHIP10),A OUT (C),E DEC B OUT (C),A INC B BYTE9: INC E LD A,(HL) INC L SENTCHIP11: EQU $+1 CP 00 JR Z,BYTEB LD (SENTCHIP11),A OUT (C),E DEC B OUT (C),A INC B BYTEB: INC D LD A,(SOUNDTABLE+13) SENTCHIPB: EQU $+1 CP 00 JR Z,BYTE10 LD (SENTCHIPB),A OUT (C),D DEC B OUT (C),A INC B BYTE10: INC E LD A,(HL) INC L SENTCHIP12: EQU $+1 CP 00 JR Z,BYTE11 LD (SENTCHIP12),A OUT (C),E DEC B OUT (C),A INC B BYTE11: INC E LD A,(HL) INC L SENTCHIP13: EQU $+1 CP 00 JR Z,BYTE14 LD (SENTCHIP13),A OUT (C),E DEC B OUT (C),A INC B BYTE14: LD E,18 LD HL,SOUNDTABLE+14 LD A,(HL) INC L SENTCHIP18: EQU $+1 CP 00 JR Z,BYTE15 LD (SENTCHIP18),A OUT (C),E DEC B OUT (C),A INC B BYTE15: INC E INC E LD A,(HL) INC L SENTCHIP20: EQU $+1 CP 00 JR Z,BYTE16 LD (SENTCHIP20),A OUT (C),E DEC B OUT (C),A INC B BYTE16: INC E LD A,(HL) INC L SENTCHIP21: EQU $+1 CP 00 JR Z,BYTE17 LD (SENTCHIP21),A OUT (C),E DEC B OUT (C),A INC B BYTE17: INC E LD A,(HL) INC L SENTCHIP22: EQU $+1 CP 00 JR Z,BYTE18 LD (SENTCHIP22),A OUT (C),E DEC B OUT (C),A INC B BYTE18: INC E INC E LD A,(HL) INC L SENTCHIP24: EQU $+1 CP 00 JR Z,BYTE19 LD (SENTCHIP24),A OUT (C),E DEC B OUT (C),A INC B BYTE19: INC E LD A,(HL) INC L SENTCHIP25: EQU $+1 CP 00 JR Z,AFTERSOUNDCHIP LD (SENTCHIP25),A OUT (C),E DEC B OUT (C),A INC B AFTERSOUNDCHIP: DELAY: EQU $+1 LD A,00 DEC A JP NZ,NOCHANGES PATTDELAY: EQU $+1 LD A,00 OR A JR Z,NOPATTERND DEC A LD (PATTDELAY),A JP PATDELAYTEMPO NOPATTERND: LD (DELAYFLAG1),A LD (DELAYFLAG2),A LD (DELAYFLAG3),A LD (DELAYFLAG4),A LD (DELAYFLAG5),A LD (DELAYFLAG6),A NEXTPLAYADDR: EQU $+1 LD HL,0000 NEXTCOMMAND1: LD A,(HL) LD (JRCOMMAND1),A JRCOMMAND1: EQU $+1 JR JRSTARTS JRSTARTS: JRNOTE: EQU $-JRSTARTS JP DONOTE1 JRNEWINST: EQU $-JRSTARTS JP DONEWINST1 JRNEWORN: EQU $-JRSTARTS JP DONEWORN1 JRNEWBOTH: EQU $-JRSTARTS JP DONEWBOTH1 JRNOORN: EQU $-JRSTARTS JP DONOORN1 JRNOORNINS: EQU $-JRSTARTS JP DONOORNINS1 JRNOCOMMAND: EQU $-JRSTARTS JP DONOCOMMAND1 JRSETVOLUME: EQU $-JRSTARTS JP DOSETVOLUME1 JRCUTNOTE: EQU $-JRSTARTS JP DOCUTNOTE1 JRSETCHORD: EQU $-JRSTARTS JP DOSETCHORD1 JRUPSLIDE: EQU $-JRSTARTS JP DOUPSLIDE1 JRDNSLIDE: EQU $-JRSTARTS JP DODNSLIDE1 JRPORTAMENTO: EQU $-JRSTARTS JP DOPORTAMENTO1 JRREPORTAM: EQU $-JRSTARTS JP DOREPORTAM1 JRVIBRATO: EQU $-JRSTARTS JP DOVIBRATO1 JRTREMOLO: EQU $-JRSTARTS JP DOTREMOLO1 JRDELAYNOTE: EQU $-JRSTARTS JP DODELAYNOTE1 JRCUTCHANNEL: EQU $-JRSTARTS JP DOCUTCHANNEL1 DEFS 18 JRNONOTE1: EQU $-JRSTARTS JP AFTERCHANGES1 JRNONOTE2: EQU $-JRSTARTS JP AFTERCHANGES2 JRNONOTE3: EQU $-JRSTARTS JP AFTERCHANGES3 JRNONOTE4: EQU $-JRSTARTS JP AFTERCHANGES4 JRNONOTE5: EQU $-JRSTARTS JP AFTERCHANGES5 JRNONOTEROW: EQU $-JRSTARTS JP AFTERCHANGES6 JRLOWENVELOPE: EQU $-JRSTARTS JP DOENVELOPE1 JRHIGHENVELOPE:EQU $-JRSTARTS JP DOENVELOPE2 JRNEWTEMPO: EQU $-JRSTARTS JP DONEWTEMPO JRPATTDELAY: EQU $-JRSTARTS JP DOPATTDELAY JRJUMPLOOP: EQU $-JRSTARTS JP DOJUMPLOOP JRPATTBREAK: EQU $-JRSTARTS JP DOPATTBREAK JRNEWSONGPOS: EQU $-JRSTARTS JP DONEWSONGPOS DONEWTEMPO: INC HL LD A,(HL) LD (TEMPO),A INC HL JR NEXTCOMMAND1 DOPATTDELAY: INC HL LD A,(HL) LD (PATTDELAY),A INC HL JP NEXTCOMMAND1 DOJUMPLOOP: INC HL REPEATNUM: EQU $+1 LD A,00 OR A JR Z,NEWREPEAT DEC A LD (REPEATNUM),A JR Z,DONEREPEAT REPEATADDR: EQU $+1 LD DE,0000 LD (NEXTPLAYADDR),DE LD A,AFTERSETADDR-SETADDR LD (SKIPSETADDR),A DONEREPEAT: INC HL INC HL INC HL JP NEXTCOMMAND1 NEWREPEAT: LD A,(HL) LD (REPEATNUM),A INC HL LD E,(HL) INC HL LD D,(HL) INC HL LD (REPEATADDR),DE LD (NEXTPLAYADDR),DE LD A,AFTERSETADDR-SETADDR LD (SKIPSETADDR),A JP NEXTCOMMAND1 DONEWSONGPOS: LD A,(SKIPSETADDR) OR A JR Z,YESSONGPOS INC HL INC HL INC HL JP NEXTCOMMAND1 YESSONGPOS: INC HL LD E,(HL) INC HL LD D,(HL) INC HL LD A,(DE) JR NOLOOPSONG DOPATTBREAK: INC HL LD A,(SKIPSETADDR) OR A JP NZ,NEXTCOMMAND1 NEXTSONGPOS: EQU $+1 LD DE,0000 LD A,(DE) OR A JR NZ,NOLOOPSONG INC DE LD A,(DE) DEC DE OR A LD A,(DE) JR NZ,NOLOOPSONG ;BEGINSONG: EQU $+1 ; LD DE,32768 ; In 1.01 changed to: LD DE,(RESETPLAYER+1) LD A,(DE) NOLOOPSONG: LD (NEXTPLAYADDR),A INC DE LD A,(DE) LD (NEXTPLAYADDR+1),A INC DE LD (NEXTSONGPOS),DE LD A,AFTERSETADDR-SETADDR LD (SKIPSETADDR),A JP NEXTCOMMAND1 DOENVELOPE1: INC HL LD A,(HL) LD (SOUNDTABLE+18),A INC HL JP NEXTCOMMAND1 DOENVELOPE2: INC HL LD A,(HL) LD (SOUNDTABLE+19),A INC HL JP NEXTCOMMAND1 DOCUTNOTE1: INC HL LD A,(HL) INC HL LD (CUTAFTERT1),A LD DE,AFTERCOMMAND1 LD (JPCOMMAND1),DE JP NEXTCOMMAND1 DONOCOMMAND1: INC HL LD DE,AFTERCOMMAND1 LD (JPCOMMAND1),DE JP NEXTCOMMAND1 DOSETVOLUME1: INC HL LD A,(HL) LD (SUBVOLUMEL1),A INC HL LD A,(HL) LD (SUBVOLUMER1),A INC HL LD DE,JPSETVOLUME1 LD (JPCOMMAND1),DE JP NEXTCOMMAND1 DOSETCHORD1: INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD1_1),A LD A,E AND 15 LD (OCTCHORD1_1),A INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD1_2),A LD A,E AND 15 LD (OCTCHORD1_2),A LD DE,JPCHORD1_0 LD (JPCOMMAND1),DE INC HL JP NEXTCOMMAND1 DOUPSLIDE1: INC HL LD A,(HL) LD (UPSPEED1),A LD A,7 LD (UPOCTTARGET1),A LD A,255 LD (UPTONETARGET1),A LD DE,JPUPSLIDE1 LD (JPCOMMAND1),DE INC HL JP NEXTCOMMAND1 DODNSLIDE1: INC HL LD A,(HL) LD (DNSPEED1),A XOR A LD (DNOCTTARGET1),A LD (DNTONETARGET1),A LD DE,JPDNSLIDE1 LD (JPCOMMAND1),DE INC HL JP NEXTCOMMAND1 DOPORTAMENTO1: INC HL LD A,(HL) LD (NOTENUMBER1),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD E,A INC HL LD A,(HL) INC HL LD D,A LD A,(BASEOCT1) CP D JR C,PORTAMUP1 JR NZ,PORTAMDN1 LD A,(BASETONE1) CP E JR C,PORTAMUP1 PORTAMDN1: LD A,(HL) INC HL LD (DNSPEED1),A LD A,D LD (DNOCTTARGET1),A LD A,E LD (DNTONETARGET1),A LD DE,JPDNSLIDE1 LD (JPCOMMAND1),DE JP NEXTCOMMAND1 PORTAMUP1: LD A,(HL) INC HL LD (UPSPEED1),A LD A,D LD (UPOCTTARGET1),A LD A,E LD (UPTONETARGET1),A LD DE,JPUPSLIDE1 LD (JPCOMMAND1),DE JP NEXTCOMMAND1 DOREPORTAM1: INC HL LD A,(HL) INC HL LD (UPSPEED1),A LD (DNSPEED1),A JP NEXTCOMMAND1 DOVIBRATO1: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (VIBRATABLE1),DE LD A,(HL) INC HL LD (VIBRASPEED1),A LD DE,JPVIBRATO1 LD (JPCOMMAND1),DE JP NEXTCOMMAND1 DOTREMOLO1: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (TREMOLOTABLE1),DE LD A,(HL) INC HL LD (TREMOLOSPEED1),A LD DE,JPTREMOLO1 LD (JPCOMMAND1),DE JP NEXTCOMMAND1 DOCUTCHANNEL1: INC HL XOR A LD (DELAYFLAG1),A INC A LD (DELAY1),A LD DE,AFTERCOMMAND1 LD (JPCOMMAND1),DE JP NEXTCOMMAND1 DODELAYNOTE1: INC HL LD A,(HL) INC HL LD (DELAY1),A LD A,1 LD (DELAYFLAG1),A LD DE,AFTERCOMMAND1 LD (JPCOMMAND1),DE JP NEXTCOMMAND1 DONOORN1: XOR A LD (ORNLEN1),A JP DONOTE1 DONOORNINS1: XOR A LD (ORNLEN1),A JP DONEWINST1 DONEWORN1: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN1),A INC DE LD A,(DE) LD (ORNREPLEN1),A INC DE LD A,(DE) LD (ORNREPADDR1),A INC DE LD A,(DE) LD (ORNREPADDR1+1),A INC DE LD (ORNADDR1),DE JP DONOTE1 DONEWBOTH1: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN1),A INC DE LD A,(DE) LD (ORNREPLEN1),A INC DE LD A,(DE) LD (ORNREPADDR1),A INC DE LD A,(DE) LD (ORNREPADDR1+1),A INC DE LD (ORNADDR1),DE DONEWINST1: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (INSTLEN1),A INC DE LD A,(DE) LD (REPLEN1),A INC DE LD A,(DE) LD (REPADDR1),A INC DE LD A,(DE) LD (REPADDR1+1),A INC DE LD (INSTADDR1),DE DONOTE1: INC HL LD A,(HL) LD (NOTENUMBER1),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD (BASETONE1),A INC HL LD A,(HL) LD (BASEOCT1),A INSTLEN1: EQU $+1 LD A,00 LD (PLAYLEN1),A INSTADDR1: EQU $+1 LD DE,0000 LD (PLAYADDR1),DE ORNLEN1: EQU $+1 LD A,00 LD (ORNPLAYLEN1),A ORNADDR1: EQU $+1 LD DE,0000 LD (ORNPLAYADDR1),DE AFTERCHANGES1: INC HL NEXTCOMMAND2: LD A,(HL) LD (JRCOMMAND2),A JRCOMMAND2: EQU $+1 JR $ JP DONOTE2 JP DONEWINST2 JP DONEWORN2 JP DONEWBOTH2 JP DONOORN2 JP DONOORNINS2 JP DONOCOMMAND2 JP DOSETVOLUME2 JP DOCUTNOTE2 JP DOSETCHORD2 JP DOUPSLIDE2 JP DODNSLIDE2 JP DOPORTAMENTO2 JP DOREPORTAM2 JP DOVIBRATO2 JP DOTREMOLO2 JP DODELAYNOTE2 JP DOCUTCHANNEL2 DEFS 18 JP AFTERCHANGES2 JP AFTERCHANGES3 JP AFTERCHANGES4 JP AFTERCHANGES5 JP AFTERCHANGES6 DOCUTNOTE2: INC HL LD A,(HL) INC HL LD (CUTAFTERT2),A LD DE,AFTERCOMMAND2 LD (JPCOMMAND2),DE JP NEXTCOMMAND2 DONOCOMMAND2: INC HL LD DE,AFTERCOMMAND2 LD (JPCOMMAND2),DE JP NEXTCOMMAND2 DOSETVOLUME2: INC HL LD A,(HL) LD (SUBVOLUMEL2),A INC HL LD A,(HL) LD (SUBVOLUMER2),A INC HL LD DE,JPSETVOLUME2 LD (JPCOMMAND2),DE JP NEXTCOMMAND2 DOSETCHORD2: INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD2_1),A LD A,E AND 15 LD (OCTCHORD2_1),A INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD2_2),A LD A,E AND 15 LD (OCTCHORD2_2),A LD DE,JPCHORD2_0 LD (JPCOMMAND2),DE INC HL JP NEXTCOMMAND2 DOUPSLIDE2: INC HL LD A,(HL) LD (UPSPEED2),A LD A,7 LD (UPOCTTARGET2),A LD A,255 LD (UPTONETARGET2),A LD DE,JPUPSLIDE2 LD (JPCOMMAND2),DE INC HL JP NEXTCOMMAND2 DODNSLIDE2: INC HL LD A,(HL) LD (DNSPEED2),A XOR A LD (DNOCTTARGET2),A LD (DNTONETARGET2),A LD DE,JPDNSLIDE2 LD (JPCOMMAND2),DE INC HL JP NEXTCOMMAND2 DOPORTAMENTO2: INC HL LD A,(HL) LD (NOTENUMBER2),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD E,A INC HL LD A,(HL) INC HL LD D,A LD A,(BASEOCT2) CP D JR C,PORTAMUP2 JR NZ,PORTAMDN2 LD A,(BASETONE2) CP E JR C,PORTAMUP2 PORTAMDN2: LD A,(HL) INC HL LD (DNSPEED2),A LD A,D LD (DNOCTTARGET2),A LD A,E LD (DNTONETARGET2),A LD DE,JPDNSLIDE2 LD (JPCOMMAND2),DE JP NEXTCOMMAND2 PORTAMUP2: LD A,(HL) INC HL LD (UPSPEED2),A LD A,D LD (UPOCTTARGET2),A LD A,E LD (UPTONETARGET2),A LD DE,JPUPSLIDE2 LD (JPCOMMAND2),DE JP NEXTCOMMAND2 DOREPORTAM2: INC HL LD A,(HL) INC HL LD (UPSPEED2),A LD (DNSPEED2),A JP NEXTCOMMAND2 DOVIBRATO2: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (VIBRATABLE2),DE LD A,(HL) INC HL LD (VIBRASPEED2),A LD DE,JPVIBRATO2 LD (JPCOMMAND2),DE JP NEXTCOMMAND2 DOTREMOLO2: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (TREMOLOTABLE2),DE LD A,(HL) INC HL LD (TREMOLOSPEED2),A LD DE,JPTREMOLO2 LD (JPCOMMAND2),DE JP NEXTCOMMAND2 DOCUTCHANNEL2: INC HL XOR A LD (DELAYFLAG2),A INC A LD (DELAY2),A LD DE,AFTERCOMMAND2 LD (JPCOMMAND2),DE JP NEXTCOMMAND2 DODELAYNOTE2: INC HL LD A,(HL) INC HL LD (DELAY2),A LD A,1 LD (DELAYFLAG2),A LD DE,AFTERCOMMAND2 LD (JPCOMMAND2),DE JP NEXTCOMMAND2 DONOORN2: XOR A LD (ORNLEN2),A JP DONOTE2 DONOORNINS2: XOR A LD (ORNLEN2),A JP DONEWINST2 DONEWORN2: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN2),A INC DE LD A,(DE) LD (ORNREPLEN2),A INC DE LD A,(DE) LD (ORNREPADDR2),A INC DE LD A,(DE) LD (ORNREPADDR2+1),A INC DE LD (ORNADDR2),DE JP DONOTE2 DONEWBOTH2: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN2),A INC DE LD A,(DE) LD (ORNREPLEN2),A INC DE LD A,(DE) LD (ORNREPADDR2),A INC DE LD A,(DE) LD (ORNREPADDR2+1),A INC DE LD (ORNADDR2),DE DONEWINST2: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (INSTLEN2),A INC DE LD A,(DE) LD (REPLEN2),A INC DE LD A,(DE) LD (REPADDR2),A INC DE LD A,(DE) LD (REPADDR2+1),A INC DE LD (INSTADDR2),DE DONOTE2: INC HL LD A,(HL) LD (NOTENUMBER2),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD (BASETONE2),A INC HL LD A,(HL) LD (BASEOCT2),A INSTLEN2: EQU $+1 LD A,00 LD (PLAYLEN2),A INSTADDR2: EQU $+1 LD DE,0000 LD (PLAYADDR2),DE ORNLEN2: EQU $+1 LD A,00 LD (ORNPLAYLEN2),A ORNADDR2: EQU $+1 LD DE,0000 LD (ORNPLAYADDR2),DE AFTERCHANGES2: INC HL NEXTCOMMAND3: LD A,(HL) LD (JRCOMMAND3),A JRCOMMAND3: EQU $+1 JR $ JP DONOTE3 JP DONEWINST3 JP DONEWORN3 JP DONEWBOTH3 JP DONOORN3 JP DONOORNINS3 JP DONOCOMMAND3 JP DOSETVOLUME3 JP DOCUTNOTE3 JP DOSETCHORD3 JP DOUPSLIDE3 JP DODNSLIDE3 JP DOPORTAMENTO3 JP DOREPORTAM3 JP DOVIBRATO3 JP DOTREMOLO3 JP DODELAYNOTE3 JP DOCUTCHANNEL3 DEFS 18 JP AFTERCHANGES3 JP AFTERCHANGES4 JP AFTERCHANGES5 JP AFTERCHANGES6 DOCUTNOTE3: INC HL LD A,(HL) INC HL LD (CUTAFTERT3),A LD DE,AFTERCOMMAND3 LD (JPCOMMAND3),DE JP NEXTCOMMAND3 DONOCOMMAND3: INC HL LD DE,AFTERCOMMAND3 LD (JPCOMMAND3),DE JP NEXTCOMMAND3 DOSETVOLUME3: INC HL LD A,(HL) LD (SUBVOLUMEL3),A INC HL LD A,(HL) LD (SUBVOLUMER3),A INC HL LD DE,JPSETVOLUME3 LD (JPCOMMAND3),DE JP NEXTCOMMAND3 DOSETCHORD3: INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD3_1),A LD A,E AND 15 LD (OCTCHORD3_1),A INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD3_2),A LD A,E AND 15 LD (OCTCHORD3_2),A LD DE,JPCHORD3_0 LD (JPCOMMAND3),DE INC HL JP NEXTCOMMAND3 DOUPSLIDE3: INC HL LD A,(HL) LD (UPSPEED3),A LD A,7 LD (UPOCTTARGET3),A LD A,255 LD (UPTONETARGET3),A LD DE,JPUPSLIDE3 LD (JPCOMMAND3),DE INC HL JP NEXTCOMMAND3 DODNSLIDE3: INC HL LD A,(HL) LD (DNSPEED3),A XOR A LD (DNOCTTARGET3),A LD (DNTONETARGET3),A LD DE,JPDNSLIDE3 LD (JPCOMMAND3),DE INC HL JP NEXTCOMMAND3 DOPORTAMENTO3: INC HL LD A,(HL) LD (NOTENUMBER3),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD E,A INC HL LD A,(HL) INC HL LD D,A LD A,(BASEOCT3) CP D JR C,PORTAMUP3 JR NZ,PORTAMDN3 LD A,(BASETONE3) CP E JR C,PORTAMUP3 PORTAMDN3: LD A,(HL) INC HL LD (DNSPEED3),A LD A,D LD (DNOCTTARGET3),A LD A,E LD (DNTONETARGET3),A LD DE,JPDNSLIDE3 LD (JPCOMMAND3),DE JP NEXTCOMMAND3 PORTAMUP3: LD A,(HL) INC HL LD (UPSPEED3),A LD A,D LD (UPOCTTARGET3),A LD A,E LD (UPTONETARGET3),A LD DE,JPUPSLIDE3 LD (JPCOMMAND3),DE JP NEXTCOMMAND3 DOREPORTAM3: INC HL LD A,(HL) INC HL LD (UPSPEED3),A LD (DNSPEED3),A JP NEXTCOMMAND3 DOVIBRATO3: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (VIBRATABLE3),DE LD A,(HL) INC HL LD (VIBRASPEED3),A LD DE,JPVIBRATO3 LD (JPCOMMAND3),DE JP NEXTCOMMAND3 DOTREMOLO3: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (TREMOLOTABLE3),DE LD A,(HL) INC HL LD (TREMOLOSPEED3),A LD DE,JPTREMOLO3 LD (JPCOMMAND3),DE JP NEXTCOMMAND3 DOCUTCHANNEL3: INC HL XOR A LD (DELAYFLAG3),A INC A LD (DELAY3),A LD DE,AFTERCOMMAND3 LD (JPCOMMAND3),DE JP NEXTCOMMAND3 DODELAYNOTE3: INC HL LD A,(HL) INC HL LD (DELAY3),A LD A,1 LD (DELAYFLAG3),A LD DE,AFTERCOMMAND3 LD (JPCOMMAND3),DE JP NEXTCOMMAND3 DONOORN3: XOR A LD (ORNLEN3),A JP DONOTE3 DONOORNINS3: XOR A LD (ORNLEN3),A JP DONEWINST3 DONEWORN3: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN3),A INC DE LD A,(DE) LD (ORNREPLEN3),A INC DE LD A,(DE) LD (ORNREPADDR3),A INC DE LD A,(DE) LD (ORNREPADDR3+1),A INC DE LD (ORNADDR3),DE JP DONOTE3 DONEWBOTH3: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN3),A INC DE LD A,(DE) LD (ORNREPLEN3),A INC DE LD A,(DE) LD (ORNREPADDR3),A INC DE LD A,(DE) LD (ORNREPADDR3+1),A INC DE LD (ORNADDR3),DE DONEWINST3: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (INSTLEN3),A INC DE LD A,(DE) LD (REPLEN3),A INC DE LD A,(DE) LD (REPADDR3),A INC DE LD A,(DE) LD (REPADDR3+1),A INC DE LD (INSTADDR3),DE DONOTE3: INC HL LD A,(HL) LD (NOTENUMBER3),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD (BASETONE3),A INC HL LD A,(HL) LD (BASEOCT3),A INSTLEN3: EQU $+1 LD A,00 LD (PLAYLEN3),A INSTADDR3: EQU $+1 LD DE,0000 LD (PLAYADDR3),DE ORNLEN3: EQU $+1 LD A,00 LD (ORNPLAYLEN3),A ORNADDR3: EQU $+1 LD DE,0000 LD (ORNPLAYADDR3),DE AFTERCHANGES3: INC HL NEXTCOMMAND4: LD A,(HL) LD (JRCOMMAND4),A JRCOMMAND4: EQU $+1 JR $ JP DONOTE4 JP DONEWINST4 JP DONEWORN4 JP DONEWBOTH4 JP DONOORN4 JP DONOORNINS4 JP DONOCOMMAND4 JP DOSETVOLUME4 JP DOCUTNOTE4 JP DOSETCHORD4 JP DOUPSLIDE4 JP DODNSLIDE4 JP DOPORTAMENTO4 JP DOREPORTAM4 JP DOVIBRATO4 JP DOTREMOLO4 JP DODELAYNOTE4 JP DOCUTCHANNEL4 DEFS 18 JP AFTERCHANGES4 JP AFTERCHANGES5 JP AFTERCHANGES6 DOCUTNOTE4: INC HL LD A,(HL) INC HL LD (CUTAFTERT4),A LD DE,AFTERCOMMAND4 LD (JPCOMMAND4),DE JP NEXTCOMMAND4 DONOCOMMAND4: INC HL LD DE,AFTERCOMMAND4 LD (JPCOMMAND4),DE JP NEXTCOMMAND4 DOSETVOLUME4: INC HL LD A,(HL) LD (SUBVOLUMEL4),A INC HL LD A,(HL) LD (SUBVOLUMER4),A INC HL LD DE,JPSETVOLUME4 LD (JPCOMMAND4),DE JP NEXTCOMMAND4 DOSETCHORD4: INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD4_1),A LD A,E AND 15 LD (OCTCHORD4_1),A INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD4_2),A LD A,E AND 15 LD (OCTCHORD4_2),A LD DE,JPCHORD4_0 LD (JPCOMMAND4),DE INC HL JP NEXTCOMMAND4 DOUPSLIDE4: INC HL LD A,(HL) LD (UPSPEED4),A LD A,7 LD (UPOCTTARGET4),A LD A,255 LD (UPTONETARGET4),A LD DE,JPUPSLIDE4 LD (JPCOMMAND4),DE INC HL JP NEXTCOMMAND4 DODNSLIDE4: INC HL LD A,(HL) LD (DNSPEED4),A XOR A LD (DNOCTTARGET4),A LD (DNTONETARGET4),A LD DE,JPDNSLIDE4 LD (JPCOMMAND4),DE INC HL JP NEXTCOMMAND4 DOPORTAMENTO4: INC HL LD A,(HL) LD (NOTENUMBER4),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD E,A INC HL LD A,(HL) INC HL LD D,A LD A,(BASEOCT4) CP D JR C,PORTAMUP4 JR NZ,PORTAMDN4 LD A,(BASETONE4) CP E JR C,PORTAMUP4 PORTAMDN4: LD A,(HL) INC HL LD (DNSPEED4),A LD A,D LD (DNOCTTARGET4),A LD A,E LD (DNTONETARGET4),A LD DE,JPDNSLIDE4 LD (JPCOMMAND4),DE JP NEXTCOMMAND4 PORTAMUP4: LD A,(HL) INC HL LD (UPSPEED4),A LD A,D LD (UPOCTTARGET4),A LD A,E LD (UPTONETARGET4),A LD DE,JPUPSLIDE4 LD (JPCOMMAND4),DE JP NEXTCOMMAND4 DOREPORTAM4: INC HL LD A,(HL) INC HL LD (UPSPEED4),A LD (DNSPEED4),A JP NEXTCOMMAND4 DOVIBRATO4: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (VIBRATABLE4),DE LD A,(HL) INC HL LD (VIBRASPEED4),A LD DE,JPVIBRATO4 LD (JPCOMMAND4),DE JP NEXTCOMMAND4 DOTREMOLO4: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (TREMOLOTABLE4),DE LD A,(HL) INC HL LD (TREMOLOSPEED4),A LD DE,JPTREMOLO4 LD (JPCOMMAND4),DE JP NEXTCOMMAND4 DOCUTCHANNEL4: INC HL XOR A LD (DELAYFLAG4),A INC A LD (DELAY4),A LD DE,AFTERCOMMAND4 LD (JPCOMMAND4),DE JP NEXTCOMMAND4 DODELAYNOTE4: INC HL LD A,(HL) INC HL LD (DELAY4),A LD A,1 LD (DELAYFLAG4),A LD DE,AFTERCOMMAND4 LD (JPCOMMAND4),DE JP NEXTCOMMAND4 DONOORN4: XOR A LD (ORNLEN4),A JP DONOTE4 DONOORNINS4: XOR A LD (ORNLEN4),A JP DONEWINST4 DONEWORN4: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN4),A INC DE LD A,(DE) LD (ORNREPLEN4),A INC DE LD A,(DE) LD (ORNREPADDR4),A INC DE LD A,(DE) LD (ORNREPADDR4+1),A INC DE LD (ORNADDR4),DE JP DONOTE4 DONEWBOTH4: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN4),A INC DE LD A,(DE) LD (ORNREPLEN4),A INC DE LD A,(DE) LD (ORNREPADDR4),A INC DE LD A,(DE) LD (ORNREPADDR4+1),A INC DE LD (ORNADDR4),DE DONEWINST4: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (INSTLEN4),A INC DE LD A,(DE) LD (REPLEN4),A INC DE LD A,(DE) LD (REPADDR4),A INC DE LD A,(DE) LD (REPADDR4+1),A INC DE LD (INSTADDR4),DE DONOTE4: INC HL LD A,(HL) LD (NOTENUMBER4),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD (BASETONE4),A INC HL LD A,(HL) LD (BASEOCT4),A INSTLEN4: EQU $+1 LD A,00 LD (PLAYLEN4),A INSTADDR4: EQU $+1 LD DE,0000 LD (PLAYADDR4),DE ORNLEN4: EQU $+1 LD A,00 LD (ORNPLAYLEN4),A ORNADDR4: EQU $+1 LD DE,0000 LD (ORNPLAYADDR4),DE AFTERCHANGES4: INC HL NEXTCOMMAND5: LD A,(HL) LD (JRCOMMAND5),A JRCOMMAND5: EQU $+1 JR $ JP DONOTE5 JP DONEWINST5 JP DONEWORN5 JP DONEWBOTH5 JP DONOORN5 JP DONOORNINS5 JP DONOCOMMAND5 JP DOSETVOLUME5 JP DOCUTNOTE5 JP DOSETCHORD5 JP DOUPSLIDE5 JP DODNSLIDE5 JP DOPORTAMENTO5 JP DOREPORTAM5 JP DOVIBRATO5 JP DOTREMOLO5 JP DODELAYNOTE5 JP DOCUTCHANNEL5 DEFS 18 JP AFTERCHANGES5 JP AFTERCHANGES6 DOCUTNOTE5: INC HL LD A,(HL) INC HL LD (CUTAFTERT5),A LD DE,AFTERCOMMAND5 LD (JPCOMMAND5),DE JP NEXTCOMMAND5 DONOCOMMAND5: INC HL LD DE,AFTERCOMMAND5 LD (JPCOMMAND5),DE JP NEXTCOMMAND5 DOSETVOLUME5: INC HL LD A,(HL) LD (SUBVOLUMEL5),A INC HL LD A,(HL) LD (SUBVOLUMER5),A INC HL LD DE,JPSETVOLUME5 LD (JPCOMMAND5),DE JP NEXTCOMMAND5 DOSETCHORD5: INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD5_1),A LD A,E AND 15 LD (OCTCHORD5_1),A INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD5_2),A LD A,E AND 15 LD (OCTCHORD5_2),A LD DE,JPCHORD5_0 LD (JPCOMMAND5),DE INC HL JP NEXTCOMMAND5 DOUPSLIDE5: INC HL LD A,(HL) LD (UPSPEED5),A LD A,7 LD (UPOCTTARGET5),A LD A,255 LD (UPTONETARGET5),A LD DE,JPUPSLIDE5 LD (JPCOMMAND5),DE INC HL JP NEXTCOMMAND5 DODNSLIDE5: INC HL LD A,(HL) LD (DNSPEED5),A XOR A LD (DNOCTTARGET5),A LD (DNTONETARGET5),A LD DE,JPDNSLIDE5 LD (JPCOMMAND5),DE INC HL JP NEXTCOMMAND5 DOPORTAMENTO5: INC HL LD A,(HL) LD (NOTENUMBER5),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD E,A INC HL LD A,(HL) INC HL LD D,A LD A,(BASEOCT5) CP D JR C,PORTAMUP5 JR NZ,PORTAMDN5 LD A,(BASETONE5) CP E JR C,PORTAMUP5 PORTAMDN5: LD A,(HL) INC HL LD (DNSPEED5),A LD A,D LD (DNOCTTARGET5),A LD A,E LD (DNTONETARGET5),A LD DE,JPDNSLIDE5 LD (JPCOMMAND5),DE JP NEXTCOMMAND5 PORTAMUP5: LD A,(HL) INC HL LD (UPSPEED5),A LD A,D LD (UPOCTTARGET5),A LD A,E LD (UPTONETARGET5),A LD DE,JPUPSLIDE5 LD (JPCOMMAND5),DE JP NEXTCOMMAND5 DOREPORTAM5: INC HL LD A,(HL) INC HL LD (UPSPEED5),A LD (DNSPEED5),A JP NEXTCOMMAND5 DOVIBRATO5: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (VIBRATABLE5),DE LD A,(HL) INC HL LD (VIBRASPEED5),A LD DE,JPVIBRATO5 LD (JPCOMMAND5),DE JP NEXTCOMMAND5 DOTREMOLO5: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (TREMOLOTABLE5),DE LD A,(HL) INC HL LD (TREMOLOSPEED5),A LD DE,JPTREMOLO5 LD (JPCOMMAND5),DE JP NEXTCOMMAND5 DOCUTCHANNEL5: INC HL XOR A LD (DELAYFLAG5),A INC A LD (DELAY5),A LD DE,AFTERCOMMAND5 LD (JPCOMMAND5),DE JP NEXTCOMMAND5 DODELAYNOTE5: INC HL LD A,(HL) INC HL LD (DELAY5),A LD A,1 LD (DELAYFLAG5),A LD DE,AFTERCOMMAND5 LD (JPCOMMAND5),DE JP NEXTCOMMAND5 DONOORN5: XOR A LD (ORNLEN5),A JP DONOTE5 DONOORNINS5: XOR A LD (ORNLEN5),A JP DONEWINST5 DONEWORN5: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN5),A INC DE LD A,(DE) LD (ORNREPLEN5),A INC DE LD A,(DE) LD (ORNREPADDR5),A INC DE LD A,(DE) LD (ORNREPADDR5+1),A INC DE LD (ORNADDR5),DE JP DONOTE5 DONEWBOTH5: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN5),A INC DE LD A,(DE) LD (ORNREPLEN5),A INC DE LD A,(DE) LD (ORNREPADDR5),A INC DE LD A,(DE) LD (ORNREPADDR5+1),A INC DE LD (ORNADDR5),DE DONEWINST5: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (INSTLEN5),A INC DE LD A,(DE) LD (REPLEN5),A INC DE LD A,(DE) LD (REPADDR5),A INC DE LD A,(DE) LD (REPADDR5+1),A INC DE LD (INSTADDR5),DE DONOTE5: INC HL LD A,(HL) LD (NOTENUMBER5),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD (BASETONE5),A INC HL LD A,(HL) LD (BASEOCT5),A INSTLEN5: EQU $+1 LD A,00 LD (PLAYLEN5),A INSTADDR5: EQU $+1 LD DE,0000 LD (PLAYADDR5),DE ORNLEN5: EQU $+1 LD A,00 LD (ORNPLAYLEN5),A ORNADDR5: EQU $+1 LD DE,0000 LD (ORNPLAYADDR5),DE AFTERCHANGES5: INC HL NEXTCOMMAND6: LD A,(HL) LD (JRCOMMAND6),A JRCOMMAND6: EQU $+1 JR $ JP DONOTE6 JP DONEWINST6 JP DONEWORN6 JP DONEWBOTH6 JP DONOORN6 JP DONOORNINS6 JP DONOCOMMAND6 JP DOSETVOLUME6 JP DOCUTNOTE6 JP DOSETCHORD6 JP DOUPSLIDE6 JP DODNSLIDE6 JP DOPORTAMENTO6 JP DOREPORTAM6 JP DOVIBRATO6 JP DOTREMOLO6 JP DODELAYNOTE6 JP DOCUTCHANNEL6 DEFS 18 JP AFTERCHANGES6 DOCUTNOTE6: INC HL LD A,(HL) INC HL LD (CUTAFTERT6),A LD DE,AFTERCOMMAND6 LD (JPCOMMAND6),DE JP NEXTCOMMAND6 DONOCOMMAND6: INC HL LD DE,AFTERCOMMAND6 LD (JPCOMMAND6),DE JP NEXTCOMMAND6 DOSETVOLUME6: INC HL LD A,(HL) LD (SUBVOLUMEL6),A INC HL LD A,(HL) LD (SUBVOLUMER6),A INC HL LD DE,JPSETVOLUME6 LD (JPCOMMAND6),DE JP NEXTCOMMAND6 DOSETCHORD6: INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD6_1),A LD A,E AND 15 LD (OCTCHORD6_1),A INC HL LD A,(HL) LD E,A AND 240 LD (OSCHORD6_2),A LD A,E AND 15 LD (OCTCHORD6_2),A LD DE,JPCHORD6_0 LD (JPCOMMAND6),DE INC HL JP NEXTCOMMAND6 DOUPSLIDE6: INC HL LD A,(HL) LD (UPSPEED6),A LD A,7 LD (UPOCTTARGET6),A LD A,255 LD (UPTONETARGET6),A LD DE,JPUPSLIDE6 LD (JPCOMMAND6),DE INC HL JP NEXTCOMMAND6 DODNSLIDE6: INC HL LD A,(HL) LD (DNSPEED6),A XOR A LD (DNOCTTARGET6),A LD (DNTONETARGET6),A LD DE,JPDNSLIDE6 LD (JPCOMMAND6),DE INC HL JP NEXTCOMMAND6 DOPORTAMENTO6: INC HL LD A,(HL) LD (NOTENUMBER6),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD E,A INC HL LD A,(HL) INC HL LD D,A LD A,(BASEOCT6) CP D JR C,PORTAMUP6 JR NZ,PORTAMDN6 LD A,(BASETONE6) CP E JR C,PORTAMUP6 PORTAMDN6: LD A,(HL) INC HL LD (DNSPEED6),A LD A,D LD (DNOCTTARGET6),A LD A,E LD (DNTONETARGET6),A LD DE,JPDNSLIDE6 LD (JPCOMMAND6),DE JP NEXTCOMMAND6 PORTAMUP6: LD A,(HL) INC HL LD (UPSPEED6),A LD A,D LD (UPOCTTARGET6),A LD A,E LD (UPTONETARGET6),A LD DE,JPUPSLIDE6 LD (JPCOMMAND6),DE JP NEXTCOMMAND6 DOREPORTAM6: INC HL LD A,(HL) INC HL LD (UPSPEED6),A LD (DNSPEED6),A JP NEXTCOMMAND6 DOVIBRATO6: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (VIBRATABLE6),DE LD A,(HL) INC HL LD (VIBRASPEED6),A LD DE,JPVIBRATO6 LD (JPCOMMAND6),DE JP NEXTCOMMAND6 DOTREMOLO6: INC HL LD E,(HL) INC HL LD A,(HL) INC HL ADD VIBRATABLE/256 LD D,A LD (TREMOLOTABLE6),DE LD A,(HL) INC HL LD (TREMOLOSPEED6),A LD DE,JPTREMOLO6 LD (JPCOMMAND6),DE JP NEXTCOMMAND6 DOCUTCHANNEL6: INC HL XOR A LD (DELAYFLAG6),A INC A LD (DELAY6),A LD DE,AFTERCOMMAND6 LD (JPCOMMAND6),DE JP NEXTCOMMAND6 DODELAYNOTE6: INC HL LD A,(HL) INC HL LD (DELAY6),A LD A,1 LD (DELAYFLAG6),A LD DE,AFTERCOMMAND6 LD (JPCOMMAND6),DE JP NEXTCOMMAND6 DONOORN6: XOR A LD (ORNLEN6),A JP DONOTE6 DONOORNINS6: XOR A LD (ORNLEN6),A JP DONEWINST6 DONEWORN6: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN6),A INC DE LD A,(DE) LD (ORNREPLEN6),A INC DE LD A,(DE) LD (ORNREPADDR6),A INC DE LD A,(DE) LD (ORNREPADDR6+1),A INC DE LD (ORNADDR6),DE JP DONOTE6 DONEWBOTH6: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (ORNLEN6),A INC DE LD A,(DE) LD (ORNREPLEN6),A INC DE LD A,(DE) LD (ORNREPADDR6),A INC DE LD A,(DE) LD (ORNREPADDR6+1),A INC DE LD (ORNADDR6),DE DONEWINST6: INC HL LD E,(HL) INC HL LD D,(HL) LD A,(DE) LD (INSTLEN6),A INC DE LD A,(DE) LD (REPLEN6),A INC DE LD A,(DE) LD (REPADDR6),A INC DE LD A,(DE) LD (REPADDR6+1),A INC DE LD (INSTADDR6),DE DONOTE6: INC HL LD A,(HL) LD (NOTENUMBER6),A LD E,A LD D,SEMITONETABLE/256 LD A,(DE) LD (BASETONE6),A INC HL LD A,(HL) LD (BASEOCT6),A INSTLEN6: EQU $+1 LD A,00 LD (PLAYLEN6),A INSTADDR6: EQU $+1 LD DE,0000 LD (PLAYADDR6),DE ORNLEN6: EQU $+1 LD A,00 LD (ORNPLAYLEN6),A ORNADDR6: EQU $+1 LD DE,0000 LD (ORNPLAYADDR6),DE AFTERCHANGES6: SKIPSETADDR: EQU $+1 JR SETADDR SETADDR: INC HL LD (NEXTPLAYADDR),HL AFTERSETADDR: XOR A LD (SKIPSETADDR),A PATDELAYTEMPO: TEMPO: EQU $+1 LD A,00 NOCHANGES: LD (DELAY),A XOR A LD L,A LD H,A LD E,A EXX DELAY1: EQU $+1 LD A,00 OR A JR Z,NODELAY1 DELAYFLAG1: EQU $+1 SUB 00 LD (DELAY1),A LD A,0 JP NZ,AFTERCH1 NODELAY1: CUTAFTERT1: EQU $+1 LD A,00 OR A JR Z,NOCUT1 DEC A LD (CUTAFTERT1),A JR NZ,NOCUT1 LD (PLAYLEN1),A NOCUT1: PLAYLEN1: EQU $+1 LD A,00 OR A JP Z,AFTERCH1 PLAYADDR1: EQU $+1 LD DE,0000 LD HL,4 ADD HL,DE DEC A JR NZ,DOCH1 REPADDR1: EQU $+1 LD HL,0000 REPLEN1: EQU $+1 LD A,00 DOCH1: LD (PLAYLEN1),A LD (PLAYADDR1),HL EX DE,HL LD C,(HL) INC HL LD A,(HL) INC HL BASETONE1: EQU $+1 ADD 00 LD E,A LD A,(HL) INC HL BASEOCT1: EQU $+1 ADC 00 LD D,A LD A,(HL) LD L,A AND 3 LD H,A BIT 3,L JR Z,FREQ1 EXX LD L,1 EXX FREQ1: BIT 2,L JR Z,NOISE1 LD A,H EXX LD D,A LD H,1 EXX NOISE1: ORNPLAYLEN1: EQU $+1 LD A,00 OR A JR Z,ENDEDORN1 ORNPLAYADDR1: EQU $+1 LD HL,0000 LD A,(HL) INC HL NOTENUMBER1: EQU $+1 ADD 00 LD (ORNOFFSET1),A ORNOFFSET1: EQU $+1 LD A,(ADDORNAMENT) ADD E LD E,A LD A,(HL) INC HL ADC D LD D,A LD A,(ORNPLAYLEN1) DEC A JR NZ,AFTERORN1 ORNREPADDR1: EQU $+1 LD HL,0000 ORNREPLEN1: EQU $+1 LD A,00 AFTERORN1: LD (ORNPLAYLEN1),A LD (ORNPLAYADDR1),HL ENDEDORN1: JPCOMMAND1: EQU $+1 JP AFTERCOMMAND1 JPSETVOLUME1: LD A,C AND 15 SUBVOLUMEL1: EQU $+1 SUB 00 JR NC,NORESETVOLL1 XOR A NORESETVOLL1: LD L,A LD A,C AND 240 SUBVOLUMER1: EQU $+1 SUB 00 JR NC,NORESETVOLR1 XOR A NORESETVOLR1: OR L LD C,A JP AFTERCOMMAND1 JPVIBRATO1: VIBRATABLE1: EQU $+1 LD HL,0000 VIBRATIME1: EQU $+1 LD A,00 VIBRASPEED1: EQU $+1 ADD 00 AND 63 LD (VIBRATIME1),A OR L LD L,A LD A,E LD E,(HL) ADD E BIT 7,E LD E,A LD A,D JR Z,OCTAVIBRA1 CCF SBC 0 LD D,A JP AFTERCOMMAND1 OCTAVIBRA1: ADC 0 LD D,A JP AFTERCOMMAND1 JPTREMOLO1: TREMOLOTABLE1: EQU $+1 LD HL,0000 TREMOLOTIME1: EQU $+1 LD A,00 TREMOLOSPEED1: EQU $+1 ADD 00 AND 63 LD (TREMOLOTIME1),A OR L LD L,A LD A,C AND 15 ADD (HL) CP 16 JR C,OKAYTLCHAN1 CP 128 LD A,0 SBC 0 AND 15 OKAYTLCHAN1: LD (TREMCHAN1),A LD A,C RRA RRA RRA RRA AND 15 ADD (HL) CP 16 JR C,OKAYTRCHAN1 CP 128 LD A,0 SBC 0 OKAYTRCHAN1: RLA RLA RLA RLA AND 240 TREMCHAN1: EQU $+1 OR 00 LD C,A JP AFTERCOMMAND1 JPCHORD1_1: LD A,(NOTENUMBER1) OSCHORD1_1: EQU $+1 ADD 00 LD L,A LD H,SEMITONETABLE/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD1_1: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD1_2 LD (JPCOMMAND1),HL JR AFTERCOMMAND1 JPCHORD1_2: LD A,(NOTENUMBER4) OSCHORD1_2: EQU $+1 ADD 00 LD L,A LD H,ADDORNAMENT/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD1_2: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD1_0 LD (JPCOMMAND1),HL JR AFTERCOMMAND1 JPCHORD1_0: LD HL,JPCHORD1_1 LD (JPCOMMAND1),HL JR AFTERCOMMAND1 JPUPSLIDE1: LD A,(BASETONE1) UPSPEED1: EQU $+1 ADD 00 LD L,A LD (BASETONE1),A LD A,(BASEOCT1) ADC 0 LD (BASEOCT1),A UPOCTTARGET1: EQU $+1 CP 00 UPTONETARGET1: EQU $+1 LD A,00 JR C,AFTERCOMMAND1 JR NZ,NOTOKAYUP1 CP L JR NC,AFTERCOMMAND1 NOTOKAYUP1: LD (BASETONE1),A LD A,(UPOCTTARGET1) LD (BASEOCT1),A LD HL,AFTERCOMMAND1 LD (JPCOMMAND1),HL JP (HL) JPDNSLIDE1: LD A,(BASETONE1) DNSPEED1: EQU $+1 SUB 00 LD L,A LD (BASETONE1),A LD A,(BASEOCT1) SBC 0 LD (BASEOCT1),A DNOCTTARGET1: EQU $+1 CP 00 DNTONETARGET1: EQU $+1 LD A,00 JR C,NOTOKAYDN1 JR NZ,AFTERCOMMAND1 CP L JR C,AFTERCOMMAND1 NOTOKAYDN1: LD (BASETONE1),A LD A,(DNOCTTARGET1) LD (BASEOCT1),A LD HL,AFTERCOMMAND1 LD (JPCOMMAND1),HL JP (HL) AFTERCOMMAND1: LD A,D AND 7 BIT 3,D JR Z,OKAYTONE1 XOR A LD E,A BIT 7,D JR NZ,OKAYTONE1 DEC E LD A,7 OKAYTONE1: EXX LD E,A EXX LD A,E LD (SOUNDTABLE+6),A LD A,C AFTERCH1: LD (SOUNDTABLE+0),A DELAY2: EQU $+1 LD A,00 OR A JR Z,NODELAY2 DELAYFLAG2: EQU $+1 SUB 00 LD (DELAY2),A LD A,0 JP NZ,AFTERCH2 NODELAY2: CUTAFTERT2: EQU $+1 LD A,00 OR A JR Z,NOCUT2 DEC A LD (CUTAFTERT2),A JR NZ,NOCUT2 LD (PLAYLEN2),A NOCUT2: PLAYLEN2: EQU $+1 LD A,00 OR A JP Z,AFTERCH2 PLAYADDR2: EQU $+1 LD DE,0000 LD HL,4 ADD HL,DE DEC A JR NZ,DOCH2 REPADDR2: EQU $+1 LD HL,0000 REPLEN2: EQU $+1 LD A,00 DOCH2: LD (PLAYLEN2),A LD (PLAYADDR2),HL EX DE,HL LD C,(HL) INC HL LD A,(HL) INC HL BASETONE2: EQU $+1 ADD 00 LD E,A LD A,(HL) INC HL BASEOCT2: EQU $+1 ADC 00 LD D,A LD A,(HL) LD L,A AND 3 LD H,A BIT 3,L JR Z,FREQ2 EXX LD A,L OR 2 LD L,A EXX FREQ2: BIT 2,L JR Z,NOISE2 LD A,H EXX LD D,A LD A,H OR 2 LD H,A EXX NOISE2: ORNPLAYLEN2: EQU $+1 LD A,00 OR A JR Z,ENDEDORN2 ORNPLAYADDR2: EQU $+1 LD HL,0000 LD A,(HL) INC HL NOTENUMBER2: EQU $+1 ADD 00 LD (ORNOFFSET2),A ORNOFFSET2: EQU $+1 LD A,(ADDORNAMENT) ADD E LD E,A LD A,(HL) INC HL ADC D LD D,A LD A,(ORNPLAYLEN2) DEC A JR NZ,AFTERORN2 ORNREPADDR2: EQU $+1 LD HL,0000 ORNREPLEN2: EQU $+1 LD A,00 AFTERORN2: LD (ORNPLAYLEN2),A LD (ORNPLAYADDR2),HL ENDEDORN2: JPCOMMAND2: EQU $+1 JP AFTERCOMMAND2 JPSETVOLUME2: LD A,C AND 15 SUBVOLUMEL2: EQU $+1 SUB 00 JR NC,NORESETVOLL2 XOR A NORESETVOLL2: LD L,A LD A,C AND 240 SUBVOLUMER2: EQU $+1 SUB 00 JR NC,NORESETVOLR2 XOR A NORESETVOLR2: OR L LD C,A JP AFTERCOMMAND2 JPVIBRATO2: VIBRATABLE2: EQU $+1 LD HL,0000 VIBRATIME2: EQU $+1 LD A,00 VIBRASPEED2: EQU $+1 ADD 00 AND 63 LD (VIBRATIME2),A OR L LD L,A LD A,E LD E,(HL) ADD E BIT 7,E LD E,A LD A,D JR Z,OCTAVIBRA2 CCF SBC 0 LD D,A JP AFTERCOMMAND2 OCTAVIBRA2: ADC 0 LD D,A JP AFTERCOMMAND2 JPTREMOLO2: TREMOLOTABLE2: EQU $+1 LD HL,0000 TREMOLOTIME2: EQU $+1 LD A,00 TREMOLOSPEED2: EQU $+1 ADD 00 AND 63 LD (TREMOLOTIME2),A OR L LD L,A LD A,C AND 15 ADD (HL) CP 16 JR C,OKAYTLCHAN2 CP 128 LD A,0 SBC 0 AND 15 OKAYTLCHAN2: LD (TREMCHAN2),A LD A,C RRA RRA RRA RRA AND 15 ADD (HL) CP 16 JR C,OKAYTRCHAN2 CP 128 LD A,0 SBC 0 OKAYTRCHAN2: RLA RLA RLA RLA AND 240 TREMCHAN2: EQU $+1 OR 00 LD C,A JP AFTERCOMMAND2 JPCHORD2_1: LD A,(NOTENUMBER2) OSCHORD2_1: EQU $+1 ADD 00 LD L,A LD H,SEMITONETABLE/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD2_1: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD2_2 LD (JPCOMMAND2),HL JR AFTERCOMMAND2 JPCHORD2_2: LD A,(NOTENUMBER2) OSCHORD2_2: EQU $+1 ADD 00 LD L,A LD H,ADDORNAMENT/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD2_2: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD2_0 LD (JPCOMMAND2),HL JR AFTERCOMMAND2 JPCHORD2_0: LD HL,JPCHORD2_1 LD (JPCOMMAND2),HL JR AFTERCOMMAND2 JPUPSLIDE2: LD A,(BASETONE2) UPSPEED2: EQU $+1 ADD 00 LD L,A LD (BASETONE2),A LD A,(BASEOCT2) ADC 0 LD (BASEOCT2),A UPOCTTARGET2: EQU $+1 CP 00 UPTONETARGET2: EQU $+1 LD A,00 JR C,AFTERCOMMAND2 JR NZ,NOTOKAYUP2 CP L JR NC,AFTERCOMMAND2 NOTOKAYUP2: LD (BASETONE2),A LD A,(UPOCTTARGET2) LD (BASEOCT2),A LD HL,AFTERCOMMAND2 LD (JPCOMMAND2),HL JP (HL) JPDNSLIDE2: LD A,(BASETONE2) DNSPEED2: EQU $+1 SUB 00 LD L,A LD (BASETONE2),A LD A,(BASEOCT2) SBC 0 LD (BASEOCT2),A DNOCTTARGET2: EQU $+1 CP 00 DNTONETARGET2: EQU $+1 LD A,00 JR C,NOTOKAYDN2 JR NZ,AFTERCOMMAND2 CP L JR C,AFTERCOMMAND2 NOTOKAYDN2: LD (BASETONE2),A LD A,(DNOCTTARGET2) LD (BASEOCT2),A LD HL,AFTERCOMMAND2 LD (JPCOMMAND2),HL JP (HL) AFTERCOMMAND2: LD A,D AND 7 BIT 3,D JR Z,OKAYTONE2 XOR A LD E,A BIT 7,D JR NZ,OKAYTONE2 DEC E LD A,7 OKAYTONE2: RLCA RLCA RLCA RLCA EXX OR E LD E,A EXX LD A,E LD (SOUNDTABLE+7),A LD A,C AFTERCH2: LD (SOUNDTABLE+1),A EXX LD A,E LD (SOUNDTABLE+12),A LD E,0 EXX DELAY3: EQU $+1 LD A,00 OR A JR Z,NODELAY3 DELAYFLAG3: EQU $+1 SUB 00 LD (DELAY3),A LD A,0 JP NZ,AFTERCH3 NODELAY3: CUTAFTERT3: EQU $+1 LD A,00 OR A JR Z,NOCUT3 DEC A LD (CUTAFTERT3),A JR NZ,NOCUT3 LD (PLAYLEN3),A NOCUT3: PLAYLEN3: EQU $+1 LD A,00 OR A JP Z,AFTERCH3 PLAYADDR3: EQU $+1 LD DE,0000 LD HL,4 ADD HL,DE DEC A JR NZ,DOCH3 REPADDR3: EQU $+1 LD HL,0000 REPLEN3: EQU $+1 LD A,00 DOCH3: LD (PLAYLEN3),A LD (PLAYADDR3),HL EX DE,HL LD C,(HL) INC HL LD A,(HL) INC HL BASETONE3: EQU $+1 ADD 00 LD E,A LD A,(HL) INC HL BASEOCT3: EQU $+1 ADC 00 LD D,A LD A,(HL) LD L,A AND 3 LD H,A BIT 3,L JR Z,FREQ3 EXX LD A,L OR 4 LD L,A EXX FREQ3: BIT 2,L JR Z,NOISE3 LD A,H EXX LD D,A LD A,H OR 4 LD H,A EXX NOISE3: ORNPLAYLEN3: EQU $+1 LD A,00 OR A JR Z,ENDEDORN3 ORNPLAYADDR3: EQU $+1 LD HL,0000 LD A,(HL) INC HL NOTENUMBER3: EQU $+1 ADD 00 LD (ORNOFFSET3),A ORNOFFSET3: EQU $+1 LD A,(ADDORNAMENT) ADD E LD E,A LD A,(HL) INC HL ADC D LD D,A LD A,(ORNPLAYLEN3) DEC A JR NZ,AFTERORN3 ORNREPADDR3: EQU $+1 LD HL,0000 ORNREPLEN3: EQU $+1 LD A,00 AFTERORN3: LD (ORNPLAYLEN3),A LD (ORNPLAYADDR3),HL ENDEDORN3: JPCOMMAND3: EQU $+1 JP AFTERCOMMAND3 JPSETVOLUME3: LD A,C AND 15 SUBVOLUMEL3: EQU $+1 SUB 00 JR NC,NORESETVOLL3 XOR A NORESETVOLL3: LD L,A LD A,C AND 240 SUBVOLUMER3: EQU $+1 SUB 00 JR NC,NORESETVOLR3 XOR A NORESETVOLR3: OR L LD C,A JP AFTERCOMMAND3 JPVIBRATO3: VIBRATABLE3: EQU $+1 LD HL,0000 VIBRATIME3: EQU $+1 LD A,00 VIBRASPEED3: EQU $+1 ADD 00 AND 63 LD (VIBRATIME3),A OR L LD L,A LD A,E LD E,(HL) ADD E BIT 7,E LD E,A LD A,D JR Z,OCTAVIBRA3 CCF SBC 0 LD D,A JP AFTERCOMMAND3 OCTAVIBRA3: ADC 0 LD D,A JP AFTERCOMMAND3 JPTREMOLO3: TREMOLOTABLE3: EQU $+1 LD HL,0000 TREMOLOTIME3: EQU $+1 LD A,00 TREMOLOSPEED3: EQU $+1 ADD 00 AND 63 LD (TREMOLOTIME3),A OR L LD L,A LD A,C AND 15 ADD (HL) CP 16 JR C,OKAYTLCHAN3 CP 128 LD A,0 SBC 0 AND 15 OKAYTLCHAN3: LD (TREMCHAN3),A LD A,C RRA RRA RRA RRA AND 15 ADD (HL) CP 16 JR C,OKAYTRCHAN3 CP 128 LD A,0 SBC 0 OKAYTRCHAN3: RLA RLA RLA RLA AND 240 TREMCHAN3: EQU $+1 OR 00 LD C,A JP AFTERCOMMAND3 JPCHORD3_1: LD A,(NOTENUMBER3) OSCHORD3_1: EQU $+1 ADD 00 LD L,A LD H,SEMITONETABLE/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD3_1: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD3_2 LD (JPCOMMAND3),HL JR AFTERCOMMAND3 JPCHORD3_2: LD A,(NOTENUMBER3) OSCHORD3_2: EQU $+1 ADD 00 LD L,A LD H,ADDORNAMENT/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD3_2: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD3_0 LD (JPCOMMAND3),HL JR AFTERCOMMAND3 JPCHORD3_0: LD HL,JPCHORD3_1 LD (JPCOMMAND3),HL JR AFTERCOMMAND3 JPUPSLIDE3: LD A,(BASETONE3) UPSPEED3: EQU $+1 ADD 00 LD L,A LD (BASETONE3),A LD A,(BASEOCT3) ADC 0 LD (BASEOCT3),A UPOCTTARGET3: EQU $+1 CP 00 UPTONETARGET3: EQU $+1 LD A,00 JR C,AFTERCOMMAND3 JR NZ,NOTOKAYUP3 CP L JR NC,AFTERCOMMAND3 NOTOKAYUP3: LD (BASETONE3),A LD A,(UPOCTTARGET3) LD (BASEOCT3),A LD HL,AFTERCOMMAND3 LD (JPCOMMAND3),HL JP (HL) JPDNSLIDE3: LD A,(BASETONE3) DNSPEED3: EQU $+1 SUB 00 LD L,A LD (BASETONE3),A LD A,(BASEOCT3) SBC 0 LD (BASEOCT3),A DNOCTTARGET3: EQU $+1 CP 00 DNTONETARGET3: EQU $+1 LD A,00 JR C,NOTOKAYDN3 JR NZ,AFTERCOMMAND3 CP L JR C,AFTERCOMMAND3 NOTOKAYDN3: LD (BASETONE3),A LD A,(DNOCTTARGET3) LD (BASEOCT3),A LD HL,AFTERCOMMAND3 LD (JPCOMMAND3),HL JP (HL) AFTERCOMMAND3: LD A,D AND 7 BIT 3,D JR Z,OKAYTONE3 XOR A LD E,A BIT 7,D JR NZ,OKAYTONE3 DEC E LD A,7 OKAYTONE3: EXX LD E,A EXX LD A,E LD (SOUNDTABLE+8),A LD A,C AFTERCH3: LD (SOUNDTABLE+2),A DELAY4: EQU $+1 LD A,00 OR A JR Z,NODELAY4 DELAYFLAG4: EQU $+1 SUB 00 LD (DELAY4),A LD A,0 JP NZ,AFTERCH4 NODELAY4: CUTAFTERT4: EQU $+1 LD A,00 OR A JR Z,NOCUT4 DEC A LD (CUTAFTERT4),A JR NZ,NOCUT4 LD (PLAYLEN4),A NOCUT4: PLAYLEN4: EQU $+1 LD A,00 OR A JP Z,AFTERCH4 PLAYADDR4: EQU $+1 LD DE,0000 LD HL,4 ADD HL,DE DEC A JR NZ,DOCH4 REPADDR4: EQU $+1 LD HL,0000 REPLEN4: EQU $+1 LD A,00 DOCH4: LD (PLAYLEN4),A LD (PLAYADDR4),HL EX DE,HL LD C,(HL) INC HL LD A,(HL) INC HL BASETONE4: EQU $+1 ADD 00 LD E,A LD A,(HL) INC HL BASEOCT4: EQU $+1 ADC 00 LD D,A LD A,(HL) LD L,A AND 48 LD H,A BIT 3,L EXX JR Z,FREQ4 LD A,L OR 8 LD L,A FREQ4: LD A,D EXX BIT 2,L JR Z,NOISE4 AND 3 OR H EXX LD D,A LD A,H OR 8 LD H,A EXX NOISE4: ORNPLAYLEN4: EQU $+1 LD A,00 OR A JR Z,ENDEDORN4 ORNPLAYADDR4: EQU $+1 LD HL,0000 LD A,(HL) INC HL NOTENUMBER4: EQU $+1 ADD 00 LD (ORNOFFSET4),A ORNOFFSET4: EQU $+1 LD A,(ADDORNAMENT) ADD E LD E,A LD A,(HL) INC HL ADC D LD D,A LD A,(ORNPLAYLEN4) DEC A JR NZ,AFTERORN4 ORNREPADDR4: EQU $+1 LD HL,0000 ORNREPLEN4: EQU $+1 LD A,00 AFTERORN4: LD (ORNPLAYLEN4),A LD (ORNPLAYADDR4),HL ENDEDORN4: JPCOMMAND4: EQU $+1 JP AFTERCOMMAND4 JPSETVOLUME4: LD A,C AND 15 SUBVOLUMEL4: EQU $+1 SUB 00 JR NC,NORESETVOLL4 XOR A NORESETVOLL4: LD L,A LD A,C AND 240 SUBVOLUMER4: EQU $+1 SUB 00 JR NC,NORESETVOLR4 XOR A NORESETVOLR4: OR L LD C,A JP AFTERCOMMAND4 JPVIBRATO4: VIBRATABLE4: EQU $+1 LD HL,0000 VIBRATIME4: EQU $+1 LD A,00 VIBRASPEED4: EQU $+1 ADD 00 AND 63 LD (VIBRATIME4),A OR L LD L,A LD A,E LD E,(HL) ADD E BIT 7,E LD E,A LD A,D JR Z,OCTAVIBRA4 CCF SBC 0 LD D,A JP AFTERCOMMAND4 OCTAVIBRA4: ADC 0 LD D,A JP AFTERCOMMAND4 JPTREMOLO4: TREMOLOTABLE4: EQU $+1 LD HL,0000 TREMOLOTIME4: EQU $+1 LD A,00 TREMOLOSPEED4: EQU $+1 ADD 00 AND 63 LD (TREMOLOTIME4),A OR L LD L,A LD A,C AND 15 ADD (HL) CP 16 JR C,OKAYTLCHAN4 CP 128 LD A,0 SBC 0 AND 15 OKAYTLCHAN4: LD (TREMCHAN4),A LD A,C RRA RRA RRA RRA AND 15 ADD (HL) CP 16 JR C,OKAYTRCHAN4 CP 128 LD A,0 SBC 0 OKAYTRCHAN4: RLA RLA RLA RLA AND 240 TREMCHAN4: EQU $+1 OR 00 LD C,A JP AFTERCOMMAND4 JPCHORD4_1: LD A,(NOTENUMBER4) OSCHORD4_1: EQU $+1 ADD 00 LD L,A LD H,SEMITONETABLE/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD4_1: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD4_2 LD (JPCOMMAND4),HL JR AFTERCOMMAND4 JPCHORD4_2: LD A,(NOTENUMBER4) OSCHORD4_2: EQU $+1 ADD 00 LD L,A LD H,ADDORNAMENT/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD4_2: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD4_0 LD (JPCOMMAND4),HL JR AFTERCOMMAND4 JPCHORD4_0: LD HL,JPCHORD4_1 LD (JPCOMMAND4),HL JR AFTERCOMMAND4 JPUPSLIDE4: LD A,(BASETONE4) UPSPEED4: EQU $+1 ADD 00 LD L,A LD (BASETONE4),A LD A,(BASEOCT4) ADC 0 LD (BASEOCT4),A UPOCTTARGET4: EQU $+1 CP 00 UPTONETARGET4: EQU $+1 LD A,00 JR C,AFTERCOMMAND4 JR NZ,NOTOKAYUP4 CP L JR NC,AFTERCOMMAND4 NOTOKAYUP4: LD (BASETONE4),A LD A,(UPOCTTARGET4) LD (BASEOCT4),A LD HL,AFTERCOMMAND4 LD (JPCOMMAND4),HL JP (HL) JPDNSLIDE4: LD A,(BASETONE4) DNSPEED4: EQU $+1 SUB 00 LD L,A LD (BASETONE4),A LD A,(BASEOCT4) SBC 0 LD (BASEOCT4),A DNOCTTARGET4: EQU $+1 CP 00 DNTONETARGET4: EQU $+1 LD A,00 JR C,NOTOKAYDN4 JR NZ,AFTERCOMMAND4 CP L JR C,AFTERCOMMAND4 NOTOKAYDN4: LD (BASETONE4),A LD A,(DNOCTTARGET4) LD (BASEOCT4),A LD HL,AFTERCOMMAND4 LD (JPCOMMAND4),HL JP (HL) AFTERCOMMAND4: LD A,D AND 7 BIT 3,D JR Z,OKAYTONE4 XOR A LD E,A BIT 7,D JR NZ,OKAYTONE4 DEC E LD A,7 OKAYTONE4: RLCA RLCA RLCA RLCA EXX OR E LD E,A EXX LD A,E LD (SOUNDTABLE+9),A LD A,C AFTERCH4: LD (SOUNDTABLE+3),A EXX LD A,E LD (SOUNDTABLE+13),A LD E,0 EXX DELAY5: EQU $+1 LD A,00 OR A JR Z,NODELAY5 DELAYFLAG5: EQU $+1 SUB 00 LD (DELAY5),A LD A,0 JP NZ,AFTERCH5 NODELAY5: CUTAFTERT5: EQU $+1 LD A,00 OR A JR Z,NOCUT5 DEC A LD (CUTAFTERT5),A JR NZ,NOCUT5 LD (PLAYLEN5),A NOCUT5: PLAYLEN5: EQU $+1 LD A,00 OR A JP Z,AFTERCH5 PLAYADDR5: EQU $+1 LD DE,0000 LD HL,4 ADD HL,DE DEC A JR NZ,DOCH5 REPADDR5: EQU $+1 LD HL,0000 REPLEN5: EQU $+1 LD A,00 DOCH5: LD (PLAYLEN5),A LD (PLAYADDR5),HL EX DE,HL LD C,(HL) INC HL LD A,(HL) INC HL BASETONE5: EQU $+1 ADD 00 LD E,A LD A,(HL) INC HL BASEOCT5: EQU $+1 ADC 00 LD D,A LD A,(HL) LD L,A AND 3 LD H,A BIT 3,L EXX JR Z,FREQ5 LD A,L OR 16 LD L,A FREQ5: LD A,D EXX BIT 2,L JR Z,NOISE5 AND 3 OR H EXX LD D,A LD A,H OR 16 LD H,A EXX NOISE5: ORNPLAYLEN5: EQU $+1 LD A,00 OR A JR Z,ENDEDORN5 ORNPLAYADDR5: EQU $+1 LD HL,0000 LD A,(HL) INC HL NOTENUMBER5: EQU $+1 ADD 00 LD (ORNOFFSET5),A ORNOFFSET5: EQU $+1 LD A,(ADDORNAMENT) ADD E LD E,A LD A,(HL) INC HL ADC D LD D,A LD A,(ORNPLAYLEN5) DEC A JR NZ,AFTERORN5 ORNREPADDR5: EQU $+1 LD HL,0000 ORNREPLEN5: EQU $+1 LD A,00 AFTERORN5: LD (ORNPLAYLEN5),A LD (ORNPLAYADDR5),HL ENDEDORN5: JPCOMMAND5: EQU $+1 JP AFTERCOMMAND5 JPSETVOLUME5: LD A,C AND 15 SUBVOLUMEL5: EQU $+1 SUB 00 JR NC,NORESETVOLL5 XOR A NORESETVOLL5: LD L,A LD A,C AND 240 SUBVOLUMER5: EQU $+1 SUB 00 JR NC,NORESETVOLR5 XOR A NORESETVOLR5: OR L LD C,A JP AFTERCOMMAND5 JPVIBRATO5: VIBRATABLE5: EQU $+1 LD HL,0000 VIBRATIME5: EQU $+1 LD A,00 VIBRASPEED5: EQU $+1 ADD 00 AND 63 LD (VIBRATIME5),A OR L LD L,A LD A,E LD E,(HL) ADD E BIT 7,E LD E,A LD A,D JR Z,OCTAVIBRA5 CCF SBC 0 LD D,A JP AFTERCOMMAND5 OCTAVIBRA5: ADC 0 LD D,A JP AFTERCOMMAND5 JPTREMOLO5: TREMOLOTABLE5: EQU $+1 LD HL,0000 TREMOLOTIME5: EQU $+1 LD A,00 TREMOLOSPEED5: EQU $+1 ADD 00 AND 63 LD (TREMOLOTIME5),A OR L LD L,A LD A,C AND 15 ADD (HL) CP 16 JR C,OKAYTLCHAN5 CP 128 LD A,0 SBC 0 AND 15 OKAYTLCHAN5: LD (TREMCHAN5),A LD A,C RRA RRA RRA RRA AND 15 ADD (HL) CP 16 JR C,OKAYTRCHAN5 CP 128 LD A,0 SBC 0 OKAYTRCHAN5: RLA RLA RLA RLA AND 240 TREMCHAN5: EQU $+1 OR 00 LD C,A JP AFTERCOMMAND5 JPCHORD5_1: LD A,(NOTENUMBER5) OSCHORD5_1: EQU $+1 ADD 00 LD L,A LD H,SEMITONETABLE/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD5_1: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD5_2 LD (JPCOMMAND5),HL JR AFTERCOMMAND5 JPCHORD5_2: LD A,(NOTENUMBER5) OSCHORD5_2: EQU $+1 ADD 00 LD L,A LD H,ADDORNAMENT/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD5_2: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD5_0 LD (JPCOMMAND5),HL JR AFTERCOMMAND5 JPCHORD5_0: LD HL,JPCHORD5_1 LD (JPCOMMAND5),HL JR AFTERCOMMAND5 JPUPSLIDE5: LD A,(BASETONE5) UPSPEED5: EQU $+1 ADD 00 LD L,A LD (BASETONE5),A LD A,(BASEOCT5) ADC 0 LD (BASEOCT5),A UPOCTTARGET5: EQU $+1 CP 00 UPTONETARGET5: EQU $+1 LD A,00 JR C,AFTERCOMMAND5 JR NZ,NOTOKAYUP5 CP L JR NC,AFTERCOMMAND5 NOTOKAYUP5: LD (BASETONE5),A LD A,(UPOCTTARGET5) LD (BASEOCT5),A LD HL,AFTERCOMMAND5 LD (JPCOMMAND5),HL JP (HL) JPDNSLIDE5: LD A,(BASETONE5) DNSPEED5: EQU $+1 SUB 00 LD L,A LD (BASETONE5),A LD A,(BASEOCT5) SBC 0 LD (BASEOCT5),A DNOCTTARGET5: EQU $+1 CP 00 DNTONETARGET5: EQU $+1 LD A,00 JR C,NOTOKAYDN5 JR NZ,AFTERCOMMAND5 CP L JR C,AFTERCOMMAND5 NOTOKAYDN5: LD (BASETONE5),A LD A,(DNOCTTARGET5) LD (BASEOCT5),A LD HL,AFTERCOMMAND5 LD (JPCOMMAND5),HL JP (HL) AFTERCOMMAND5: LD A,D AND 7 BIT 3,D JR Z,OKAYTONE5 XOR A LD E,A BIT 7,D JR NZ,OKAYTONE5 DEC E LD A,7 OKAYTONE5: EXX LD E,A EXX LD A,E LD (SOUNDTABLE+10),A LD A,C AFTERCH5: LD (SOUNDTABLE+4),A DELAY6: EQU $+1 LD A,00 OR A JR Z,NODELAY6 DELAYFLAG6: EQU $+1 SUB 00 LD (DELAY6),A LD A,0 JP NZ,AFTERCH6 NODELAY6: CUTAFTERT6: EQU $+1 LD A,00 OR A JR Z,NOCUT6 DEC A LD (CUTAFTERT6),A JR NZ,NOCUT6 LD (PLAYLEN6),A NOCUT6: PLAYLEN6: EQU $+1 LD A,00 OR A JP Z,AFTERCH6 PLAYADDR6: EQU $+1 LD DE,0000 LD HL,4 ADD HL,DE DEC A JR NZ,DOCH6 REPADDR6: EQU $+1 LD HL,0000 REPLEN6: EQU $+1 LD A,00 DOCH6: LD (PLAYLEN6),A LD (PLAYADDR6),HL EX DE,HL LD C,(HL) INC HL LD A,(HL) INC HL BASETONE6: EQU $+1 ADD 00 LD E,A LD A,(HL) INC HL BASEOCT6: EQU $+1 ADC 00 LD D,A LD A,(HL) LD L,A AND 48 LD H,A BIT 3,L EXX JR Z,FREQ6 LD A,L OR 32 LD L,A FREQ6: LD A,D EXX BIT 2,L JR Z,NOISE6 AND 3 OR H EXX LD D,A LD A,H OR 32 LD H,A EXX NOISE6: ORNPLAYLEN6: EQU $+1 LD A,00 OR A JR Z,ENDEDORN6 ORNPLAYADDR6: EQU $+1 LD HL,0000 LD A,(HL) INC HL NOTENUMBER6: EQU $+1 ADD 00 LD (ORNOFFSET6),A ORNOFFSET6: EQU $+1 LD A,(ADDORNAMENT) ADD E LD E,A LD A,(HL) INC HL ADC D LD D,A LD A,(ORNPLAYLEN6) DEC A JR NZ,AFTERORN6 ORNREPADDR6: EQU $+1 LD HL,0000 ORNREPLEN6: EQU $+1 LD A,00 AFTERORN6: LD (ORNPLAYLEN6),A LD (ORNPLAYADDR6),HL ENDEDORN6: JPCOMMAND6: EQU $+1 JP AFTERCOMMAND6 JPSETVOLUME6: LD A,C AND 15 SUBVOLUMEL6: EQU $+1 SUB 00 JR NC,NORESETVOLL6 XOR A NORESETVOLL6: LD L,A LD A,C AND 240 SUBVOLUMER6: EQU $+1 SUB 00 JR NC,NORESETVOLR6 XOR A NORESETVOLR6: OR L LD C,A JP AFTERCOMMAND6 JPVIBRATO6: VIBRATABLE6: EQU $+1 LD HL,0000 VIBRATIME6: EQU $+1 LD A,00 VIBRASPEED6: EQU $+1 ADD 00 AND 63 LD (VIBRATIME6),A OR L LD L,A LD A,E LD E,(HL) ADD E BIT 7,E LD E,A LD A,D JR Z,OCTAVIBRA6 CCF SBC 0 LD D,A JP AFTERCOMMAND6 OCTAVIBRA6: ADC 0 LD D,A JP AFTERCOMMAND6 JPTREMOLO6: TREMOLOTABLE6: EQU $+1 LD HL,0000 TREMOLOTIME6: EQU $+1 LD A,00 TREMOLOSPEED6: EQU $+1 ADD 00 AND 63 LD (TREMOLOTIME6),A OR L LD L,A LD A,C AND 15 ADD (HL) CP 16 JR C,OKAYTLCHAN6 CP 128 LD A,0 SBC 0 AND 15 OKAYTLCHAN6: LD (TREMCHAN6),A LD A,C RRA RRA RRA RRA AND 15 ADD (HL) CP 16 JR C,OKAYTRCHAN6 CP 128 LD A,0 SBC 0 OKAYTRCHAN6: RLA RLA RLA RLA AND 240 TREMCHAN6: EQU $+1 OR 00 LD C,A JP AFTERCOMMAND6 JPCHORD6_1: LD A,(NOTENUMBER6) OSCHORD6_1: EQU $+1 ADD 00 LD L,A LD H,SEMITONETABLE/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD6_1: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD6_2 LD (JPCOMMAND6),HL JR AFTERCOMMAND6 JPCHORD6_2: LD A,(NOTENUMBER6) OSCHORD6_2: EQU $+1 ADD 00 LD L,A LD H,ADDORNAMENT/256 LD A,(HL) ADD E LD E,A LD A,D OCTCHORD6_2: EQU $+1 ADC 00 LD D,A LD HL,JPCHORD6_0 LD (JPCOMMAND6),HL JR AFTERCOMMAND6 JPCHORD6_0: LD HL,JPCHORD6_1 LD (JPCOMMAND6),HL JR AFTERCOMMAND6 JPUPSLIDE6: LD A,(BASETONE6) UPSPEED6: EQU $+1 ADD 00 LD L,A LD (BASETONE6),A LD A,(BASEOCT6) ADC 0 LD (BASEOCT6),A UPOCTTARGET6: EQU $+1 CP 00 UPTONETARGET6: EQU $+1 LD A,00 JR C,AFTERCOMMAND6 JR NZ,NOTOKAYUP6 CP L JR NC,AFTERCOMMAND6 NOTOKAYUP6: LD (BASETONE6),A LD A,(UPOCTTARGET6) LD (BASEOCT6),A LD HL,AFTERCOMMAND6 LD (JPCOMMAND6),HL JP (HL) JPDNSLIDE6: LD A,(BASETONE6) DNSPEED6: EQU $+1 SUB 00 LD L,A LD (BASETONE6),A LD A,(BASEOCT6) SBC 0 LD (BASEOCT6),A DNOCTTARGET6: EQU $+1 CP 00 DNTONETARGET6: EQU $+1 LD A,00 JR C,NOTOKAYDN6 JR NZ,AFTERCOMMAND6 CP L JR C,AFTERCOMMAND6 NOTOKAYDN6: LD (BASETONE6),A LD A,(DNOCTTARGET6) LD (BASEOCT6),A LD HL,AFTERCOMMAND6 LD (JPCOMMAND6),HL JP (HL) AFTERCOMMAND6: LD A,D AND 7 BIT 3,D JR Z,OKAYTONE6 XOR A LD E,A BIT 7,D JR NZ,OKAYTONE6 DEC E LD A,7 OKAYTONE6: RLCA RLCA RLCA RLCA EXX OR E LD E,A EXX LD A,E LD (SOUNDTABLE+11),A LD A,C AFTERCH6: LD (SOUNDTABLE+5),A EXX LD A,E LD (SOUNDTABLE+14),A LD A,L LD (SOUNDTABLE+15),A LD A,H LD (SOUNDTABLE+16),A LD A,D LD (SOUNDTABLE+17),A EXX RET RPLAYERDASH: LD BC,511 LD D,28 SILENTLOOP: OUT (C),D DEC B OUT (C),B INC B DEC D JR NZ,SILENTLOOP OUT (C),D DEC B OUT (C),B INC B LD A,28 OUT (C),A DEC B LD A,1 OUT (C),A LD E,(HL) INC HL LD D,(HL) INC HL LD (NEXTSONGPOS),HL LD (NEXTPLAYADDR),DE LD A,1 LD (DELAY),A LD A,6 LD (TEMPO),A XOR A LD (PLAYLEN1),A LD (INSTLEN1),A LD (ORNPLAYLEN1),A LD (ORNLEN1),A LD (PLAYLEN2),A LD (INSTLEN2),A LD (ORNPLAYLEN2),A LD (ORNLEN2),A LD (PLAYLEN3),A LD (INSTLEN3),A LD (ORNPLAYLEN3),A LD (ORNLEN3),A LD (PLAYLEN4),A LD (INSTLEN4),A LD (ORNPLAYLEN4),A LD (ORNLEN4),A LD (PLAYLEN5),A LD (INSTLEN5),A LD (ORNPLAYLEN5),A LD (ORNLEN5),A LD (PLAYLEN6),A LD (INSTLEN6),A LD (ORNPLAYLEN6),A LD (ORNLEN6),A LD (CUTAFTERT1),A LD (CUTAFTERT2),A LD (CUTAFTERT3),A LD (CUTAFTERT4),A LD (CUTAFTERT5),A LD (CUTAFTERT6),A LD HL,AFTERCOMMAND1 LD (JPCOMMAND1),HL LD HL,AFTERCOMMAND2 LD (JPCOMMAND2),HL LD HL,AFTERCOMMAND3 LD (JPCOMMAND3),HL LD HL,AFTERCOMMAND4 LD (JPCOMMAND4),HL LD HL,AFTERCOMMAND5 LD (JPCOMMAND5),HL LD HL,AFTERCOMMAND6 LD (JPCOMMAND6),HL LD HL,SOUNDTABLE LD (HL),0 LD DE,SOUNDTABLE+1 LD BC,19 LDIR JP PLAYROUTINE DEFS 256-$\256 VIBRATABLE: MDAT "VIBRATABLE" SEMITONETABLE: DEFB 5,33,60,85,109,132,153,173,192,210,227,243 DEFB 0,0,0,0 ADDORNAMENT: DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;0 DEFB 28,27,25,24,23,21,20,19,18,17,16,18 ;1 DEFB 0,0,0,0 DEFB 55,52,49,47,44,41,39,37,35,33,34,46 ;2 DEFB 0,0,0,0 DEFB 80,76,72,68,64,60,57,54,51,51,63,73 ;3 DEFB 0,0,0,0 DEFB 104,99,93,88,83,78,74,70,69,79,89,98 ;4 DEFB 0,0,0,0 DEFB 127,120,113,107,101,95,90,88,97,106,114,122 DEFB 0,0,0,0 ;5 DEFB 148,140,132,125,118,111,108,116,124,131,138 DEFB 145,0,0,0,0 ;6 DEFB 168,159,150,142,134,129,136,143,149,155,161 DEFB 166,0,0,0,0 ;7 DEFB 187,177,167,158,152,157,163,168,173,178,182 DEFB 186,0,0,0,0 ;8 DEFB 205,194,183,176,180,184,188,192,196,199,202 DEFB 205,0,0,0,0 ;9 DEFB 222,210,201,204,207,209,212,215,217,219,221 DEFB 223,0,0,0,0 ;10 DEFB 238,228,229,231,232,233,235,236,237,238,239 DEFB 240,0,0,0,0 ;11 SOUNDTABLE: DEFS 20 ENDPLAYER: PLAYERLENGTH: EQU ENDPLAYER-STARTPLAYER