PROTRACKER372 PTU367 H
PTU367 C��╔Ы�ЬЕ COLOUR=5 zwet=1 CATHGT=22 HGT EQU 24 WINCOL EQU 7 TITLCOL EQU 56 FD EQU 32765 EMSTACK EQU #5F00 SYSBUF EQU #6800 LDIRKA EQU #BB80 CURSCOL EQU 56 SECBUF EQU #B700
- TEXT=SECBUF+1
LINBUF EQU #BE00 WINBUF EQU #BF00 FILENAM EQU #5CDD FNEXT EQU FILENAM+8 MUZ=#C000
ORG #8000
begin FONTS
INCBIN "42>>
GO
LD SP,#6000 OUT (-2),A INC A LD (IY-48),A LD (IY+48),A LD (IY+1),#CC LD (IY+14),COLOUR LD (IY-49),16 CALL OLDRV LD (23798),A LD HL,ONERROR LD (23747),HL CALL CLS
ST
CALL PRMENU
STC
LD C,0 CALL RULILKA LD A,C LD (STC+1),A LD DE,QUIT CALL 8020 JR NC,STPUSH LD B,0 LD HL,JPS ADD HL,BC,HL,BC LD E,(HL) INC HL LD D,(HL)
STPUSH LD HL,ST
PUSH HL,DE RET
JPS
DW PLOAD DW PPLAY DW PSAVE DW PCOM DW PSWAP DW PREN DW PSORT DW PHELP DW QUIT
PLOAD
LD HL,TLOAD CALL PRCAT JP NC,PLOADQ LD (LENGTH),HL PUSH BC PUSH DE CALL CLS LD HL,MUZ PUSH HL LD DE,MUZ+1 LD B,#40 LD (HL),L LDIR POP HL POP DE POP BC LD (ERRSP+1),SP PUSH HL LD A,64 CP B JR NC,$+3 LD B,A CALL EM15635
PLDCPU CALL DEPKFNT
POP HL LD BC,#4000
PLOADCP LD DE,TDISTIN
LD A,(DE) CPIR JR NZ,PLDBUGL LD (PLDOK+1),HL
PLDCP0 INC DE
LD A,(DE) OR A JR Z,PLDOK CP (HL) INC HL DEC BC JR Z,PLDCP0 JR PLOADCP
PLDOK LD HL,0
LD BC,-14-1 ADD HL,BC LD DE,MUZ LD BC,#4000 LDIR LD DE,MUZ CALL deinit+3 LD D,0 LD HL,MUZ+105 LD A,48
PLDOKM0 LD C,(HL)
INC HL LD B,(HL) INC HL EX DE,HL OR A SBC HL,BC ADD HL,BC EX DE,HL JR NC,$+4 LD D,B LD E,C DEC A JR NZ,PLDOKM0 LD HL,MUZ+1 ADD HL,DE LD C,(HL) LD B,0 INC HL ADD HL,BC LD DE,-MUZ ADD HL,DE LD (LENGTH),HL LD A,183 LD (MODOK),A
PLOADQ
JP CLS
PLDBUGL LD A,(MUZ)
CP 243 JR NZ,PLDBUG
PLDBGL0 LD HL,TDEPKYN
LD DE,#4040 CALL PRTEXT CALL IYKEY CP "n JR Z,PLDBUG CP "y JR NZ,PLDBGL0 LD HL,MUZ PUSH HL LD DE,(STADR+1) LD BC,(LENGTH) LDIR
STADR CALL 0
EI JP PLDCPU
PLDBUG
LD HL,TLDBUG LD DE,#4060 CALL PRTEXT CALL IYKEY LD A,55 LD (MODOK),A JR PLOADQ
TLDBUG DB "INVALID MODULE!",0 TDEPKYN DB "DEPACK (Y/N)?",0 TDISTIN DB " compilation of ",0 COPYTAB
LD A,(MUZ+99) LD L,A ADD A,A ADD A,L LD L,0 RRA RR L RRA RR L ADD A,'TABS LD H,A LD DE,tab_frq LD BC,#C0 LDIR RET
PPLAY MODOK SCF
JR C,PLDBUG CALL COPYTAB CALL initia
PPLAY0
RES 5,(IY+1) HALT CALL play BIT 5,(IY+1) JR Z,PPLAY0 LD A,(23560) OR #20 CP "f JR NZ,stop CALL play,play JR PPLAY0
stop
CALL deinit
AYOFF
LD DE,#E00
OFF0 LD BC,-3
DEC D OUT (C),D LD B,#BF OUT (C),E JR NZ,OFF0 RET
PSAVE
LD A,(MODOK) RLA JP NC,PLDBUG LD A,"m LD (FNEXT),A CALL SAVE JP CLS
PREN
LD A,(MODOK) RLA JP NC,PLDBUG
LD HL,MUZ LD DE,LINBUF LD BC,256 LDIR LD LX,20
PRENST
PUSH BC CALL PRBY POP BC PUSH BC LD A,LX CALL 3742 INC L LD A,C ADD A,6 CALL PRCU POP BC LD HL,MUZ+#1E LD A,LX RRA JR NC,$+5 LD HL,MUZ+#42 LD B,0 ADD HL,BC CALL IYKEY JP NC,PRENNO ADD A,-13 JR Z,PRENQQ LD DE,PRENST PUSH DE LD DE,#1F20 DEC A JR Z,PRENEXT DEC A JR Z,PRENGR ADD A,3 JP Z,WORKDEL ADD A,2 JR NC,PRENNUD LD A,LX XOR 1 LD LX,A RET
PRENNUD INC A
JR Z,PRENIC INC A JP Z,WORKDC INC A RET Z INC A JP Z,CAPLNT SUB 193 RET Z DEC A RET Z DEC A RET Z SUB 55 CP 172 RET Z CP E RET C PUSH BC CALL RECODE-1 LD (HL),B POP BC
PRENIC JP WORKIC PRENGR LD A,D
INC A SUB C PUSH BC LD C,A LD B,0 LD D,H LD E,L INC HL LDIR DEC DE LD A,32 LD (DE),A POP BC RET
PRENEXT LD A,D
INC A SUB C LD B,A LD E,32
PRENEX0 LD A,(HL)
LD (HL),E LD E,A INC HL DJNZ PRENEX0 RET
PRENQQ
RET
PRENNO
LD DE,MUZ LD HL,LINBUF LD BC,256 LDIR RET
CAPLNT
LD A,(23658) XOR 8 LD (23658),A RET
TLEN DB "Compiled length=",0 T_ENT DB "Press <ENTER>",0 TENSTAD DB "Enter start address=#C000",0 TEDSTAD EQU $-5
PCOM
LD A,(MODOK) RLA JP NC,PLDBUG CALL CLS CALL COPYTAB LD HL,-1-LENP LD DE,-1 LD BC,-MUZ-LENP LDDR LD BC,LENP LD HL,(LENGTH) ADD HL,BC LD (LENGTH),HL PUSH HL ;LD HL,ENDP-1 ;LDDR LD HL,T_ENT LD DE,#48EA CALL PRTEXT LD HL,TLEN LD DE,#4863 CALL PRTEXT POP HL PUSH HL INC E CALL PRNUM POP HL CALL PRNUMH LD BC,0
PCOMIN PUSH BC
LD HL,TENSTAD LD DE,#48A5 PUSH DE CALL PRTEXT POP HL INC L POP BC LD A,C ADD A,TEDSTAD-TENSTAD CALL PRCU CALL IYKEY JR NC,PCOMQQ CP 13 JR Z,PCOMOK LD E,A SUB "0 RES 5,A CP "G"-"0 JR NC,PCOMIN CP "A"-"0 JR NC,PCOMSB CP 10 JR NC,PCOMIN JR $+4
PCOMSB SUB "A"-": PCOMDG LD HL,TEDSTAD
ADD HL,BC LD (HL),E LD DE,PCOMOK+1-TEDSTAD ADD HL,DE LD (HL),A LD A,C XOR 1 LD C,A JR PCOMIN
PCOMOK LD HL,#C000
LD A,H DB ")))) OR L LD H,A LD L,0 LD (CADDR+1),HL LD DE,LENP ADD HL,DE SUB 'PLAYER LD LX,A ;LD (MUZ+1),HL EX DE,HL
- сонг лежит в MUZ+LENP
- пересчитываем его,как будто он в DE
LD B,D,C,E LD DE,MUZ+LENP CALL initia3 CALL PCOMCH LD HL,PLAYER LD DE,MUZ LD BC,LENP LDIR XOR A SUB LX LD LX,A CALL PCOMCH
CADDR LD HL,#C000
LD (SSTART+1),HL LD A,"C LD (FNEXT),A CALL SAVE LD HL,0 LD (SSTART+1),HL
PCOMQQ
LD HL,MUZ PUSH HL JP PLDCPU
PCOMCH
LD HL,TABC LD BC,LTABC
PCOMCH0 LD E,(HL)
INC HL LD A,(HL) SUB #C0-'PLAYER LD D,A INC HL LD A,(DE) ADD A,LX LD (DE),A DEC BC LD A,B OR C JR NZ,PCOMCH0 RET
PHELP
CALL CLS IFN 0 DI LD (PHELPE+1),SP LD HL,-1-LENP LD DE,-1 LD BC,-MUZ-LENP LDDR LD HL,#5FFF INC B LDDR LD HL,PHELPE LD (#5E33),HL LD HL,TEXT LD (#5D64),HL LD HL,PAKHELP+6 JP #5D5A
PHELPE LD SP,0
XOR A LD (DE),A LD (TEXT-1),A LD HL,MUZ+LENP-1 LD DE,#5FFF LD BC,256 LDDR EI ENDIF CALL LISTER IFN 0 LD HL,MUZ+LENP LD DE,MUZ LD B,64 LDIR ENDIF JP CLS
PSORT
LD A,(MODOK) RLA JP NC,PLDBUG
LD DE,MUZ+201 ;POS
LD C,0 ;CURR.PAT
PSORT0
LD A,(DE) CP -1 JR Z,POK LD B,A CP C JR C,PSORTOK LD H,D LD L,E
PSORT1 LD A,(HL)
CP -1 JR Z,PSORT1Q CP B LD (HL),C JR Z,PSORT1E CP C LD (HL),B JR Z,$+3 LD (HL),A
PSORT1E INC HL
JR PSORT1
PSORT1Q
LD A,B PUSH BC PUSH DE LD HL,(MUZ+103) SLA C LD B,'MUZ ADD HL,BC EX DE,HL LD HL,(MUZ+103) ADD A,A LD C,A ADD HL,BC LD B,6
PSORT2 LD A,(DE)
LD C,(HL) LD (HL),A LD A,C LD (DE),A INC HL INC DE DJNZ PSORT2 POP DE POP BC INC C,C,C
PSORTOK
INC DE JR PSORT0
POK
LD HL,#58E0 LD DE,#58E1 LD BC,31 LD (HL),#44 LDIR LD HL,TOK LD DE,#40E6 CALL PRTEXT CALL IYKEY JP CLS
TPOSS DB "POSITIONS:",0
DB "PATTERNS:",0 DB "TRACKS:",0
DB "SAMPLES:",0 DB "ORNAMENTS:",0
TOK DB "OPERATION COMPLETED OK.",0
TA_B DB " -> 1. A<>B",0 TB_C DB "2. B<>C",0
PSWAP
LD A,(MODOK) RLA JP NC,PLDBUG LD HL,TA_B LD DE,#4895 CALL PRTEXT INC HL LD DE,#48B8 CALL PRTEXT
PSWAPK CALL IYKEY
JP NC,CLS CP "2 JR Z,ACB CP "1 JR NZ,PSWAPK LD A,197 LD (ACBX1),A LD A,193 LD (ACBX2),A
ACB LD HL,MUZ
DI LD (Sav_SP0+1),SP LD D,H LD E,L LD BC,100 ADD HL,BC INC HL LD SP,HL ADD HL,BC XOR A
ACBMAX LD C,(HL)
INC C JR Z,ACBMAXQ DEC C INC HL CP C JR NC,ACBMAX LD A,C JR ACBMAX
ACBMAXQ POP HL;AF
POP HL ADD HL,DE
LD SP,HL
ACB0 POP BC
POP DE
ACBX1 POP HL ;PUSH BC
PUSH DE
ACBX2 PUSH HL ;POP BC
POP DE POP HL SUB 3 JR NC,ACB0 LD A,225 LD (ACBX1),A LD A,229 LD (ACBX2),A
Sav_SP0 LD SP,0
EI JP POK
PRMENU
CALL DEPKFNT LD HL,#5800 LD DE,#5801 LD BC,31 LD (HL),6 LDIR LD HL,#5A40 LD DE,#5A41 LD C,128 LD (HL),7 LDIR LD C,63 LD (HL),6 LDIR LD HL,TPTUTIL LD DE,#4004 CALL PRTEXT LD HL,TBY LD DE,#50E3 CALL PRTEXT LD HL,TMENU LD DE,#4809 PUSH DE LD LX,0
PRMENU0 PUSH DE
INC LX LD C,0
PRMENU2 LD A,(HL)
INC HL CP 32 JR C,$+7 CALL PRSYM JR PRMENU2 POP DE CALL NXTLINE XOR A OR (HL) JR NZ,PRMENU0 LD A,(MODOK) RLA JR NC,PRMENNN CALL PRBY CALL PRNS LD HL,(LENGTH) LD DE,#5040 PUSH HL CALL PRNUM POP HL CALL PRNUMH LD A,(MUZ+99) LD HL,TFRQTAB
PRMNFR0 SUB 1
JR C,PRMENFR LD E,A XOR A LD B,H CPIR LD A,E JR PRMNFR0
PRMENFR LD DE,#5050
CALL PRTEXT
PRMENNN POP HL
CALL FINDATR-1 LD H,A LD B,LX RET
TFRQTAB
DB "ProTracker 3.1",0 DB "SoundTracker or PT2",0 DB "ASM or PSC",0 DB "Real sound",0
PRNS
LD HL,MUZ+105 LD BC,#2000 LD D,C
PRNSsmp
LD A,(HL) INC HL OR (HL) INC HL JR Z,$+3 INC D DJNZ PRNSsmp LD B,#10
PRNSorn
LD A,(HL) INC HL OR (HL) INC HL JR Z,$+3 INC C DJNZ PRNSorn LD A,C PUSH AF PUSH DE
LD HL,MUZ+201 XOR A LD D,A
SRTMAX LD C,(HL)
INC C JR Z,SRTMAXQ INC D DEC C INC HL CP C JR NC,SRTMAX LD A,C JR SRTMAX
SRTMAXQ LD BC,3
INC B SUB C JR NC,$-2 PUSH BC PUSH DE LD A,B RLCA ADD A,B LD B,A LD HL,(MUZ+103) LD DE,MUZ ADD HL,DE ;PATS LD HX,0
SRTNTR
LD DE,LINBUF LD C,HX INC C DEC C JR Z,SRTNTRA
SRTNTR0 LD A,(DE)
INC E CP (HL) INC HL JR NZ,SRTNTR1 LD A,(DE) CP (HL) JR Z,SRTNTRQ
SRTNTR1 DEC HL
INC E DEC C JR NZ,SRTNTR0
SRTNTRA LD A,(HL)
LD (DE),A INC HL INC E LD A,(HL) LD (DE),A INC HX
SRTNTRQ
INC HL DJNZ SRTNTR
LD HL,TPOSS LD DE,#4040 CALL PRTEXT INC E POP AF CALL PRNUMA INC HL LD DE,#4060 CALL PRTEXT INC E POP AF CALL PRNUMA INC HL LD DE,#4080 CALL PRTEXT INC E LD A,HX CALL PRNUMA
INC HL LD DE,#40A0 CALL PRTEXT INC E POP AF CALL PRNUMA INC HL LD DE,#40C0 CALL PRTEXT INC E POP AF JP PRNUMA
PRBY
LD HL,TSONG LD DE,#5080 CALL PRTEXT LD HL,MUZ+#1E CALL PRSTR-2 LD HL,TSONGBY LD DE,#50A0 CALL PRTEXT LD HL,MUZ+#42 LD B,32
PRSTR
LD A,(HL) INC HL CALL PRSYM DJNZ PRSTR RET
TSONG DB "MUSIC:",0 TSONGBY DB " BY:",0
RULILKA
PUSH HL CALL CURSCNT LD A,14 LD (CURSOR0-1),A CALL CURSOR CALL IYKEY PUSH AF CALL CURRES LD A,8 LD (CURSOR0-1),A POP AF POP HL SUB 8 JR Z,RUL0 DEC A JR Z,RULZ SUB 2 JR NZ,RULILND CP C JR NZ,$+3
RULZ LD C,B
DEC C JR RULILKA
RULILND INC A
RET NZ INC C LD A,C SUB B JR NZ,$+3
RUL0 LD C,A
JR RULILKA
DDE
INC D LD A,D AND 7 RET NZ LD A,E ADD A,32 LD E,A RET C LD A,D ADD A,-8 LD D,A RET
LD A,H
FINDATR RRA
RRA RRA AND 3 OR 88 RET
NAME
LD C,0
WORKPN
PUSH BC CALL WORKPP POP BC LD B,0 LD HL,FILENAM ADD HL,BC CALL IYKEY RET NC ADD A,-13 RET Z LD DE,WORKPN PUSH DE LD DE,#720 INC A JR NZ,WORKND
WORKDEL CP C
RET Z DEC HL LD (HL),E
WORKDC CP C
RET Z DEC C RET
WORKND SUB -3
JR Z,WORKIC INC A JR Z,WORKDC INC A INC A JP Z,CAPLNT ADD A,6 CP E RET C CALL RECODE-1 BIT 7,B RET NZ LD (HL),B
WORKIC LD A,C
SUB D ADC A,D LD C,A RET
LD B,A
RECODE
LD A,B CP 198 LD B,"[ RET Z INC B CP 205 RET Z INC B CP 197 RET Z LD B,"{ CP 204 RET Z INC B CP 195 RET Z INC B CP 203 RET Z INC B CP 226 RET Z LD B,A RET
PRFNDO
SBC HL,BC LD (PRCDESC+1),HL LD DE,#4009 LD C,0
PRFN
LD B,8 CALL PRSYM-1 INC HL DJNZ $-4 DB ">. CALL PRSYM LD A,(HL)
PRSYM
PUSH HL PUSH DE LD L,A XOR A OR C LD H,'FONTS JR Z,PRSMED DUP 4 RLCA EDUP SUB -80 JP P,PRSSLOW LD C,0 DUP 7 LD A,(DE) OR (HL) LD (DE),A INC D INC H EDUP LD A,(DE) OR (HL) LD (DE),A POP AF LD D,A POP HL RET
PRSMED INC E
INC C DUP 8 DB "~ RLCA RLCA LD (DE),A INC D INC H EDUP ORG $-2 JR PRS42D
PRSSLOW LD H,A
INC C DUP 4 LD A,(DE) OR (HL) LD (DE),A INC E DB "$~$ LD (DE),A INC D DB "~$ LD (DE),A DEC E LD A,(DE) OR (HL) LD (DE),A INC H INC D EDUP ORG $-2 INC E
PRS42D POP AF
LD D,A POP HL RET
TYN CALL WINDTXT
DW #4847,#1F11 CALL 8020 JR NC,$-3
TYN0 CALL 8020
CCF JR C,TYNQ AND 4 HALT JR Z,TYNQ LD A,#DF IN A,(-2) CPL AND 16 JR Z,TYN0
TYNQ PUSH AF
CALL PUTWIN
POPRET POP AF
RET
IYKEY RES 5,(IY+1) IY0 BIT 5,(IY+1)
JR Z,IY0 CALL 8020 LD A,(23560) RET
CURSCNT EX DE,HL
LD L,C LD H,0 DB "))))) ADD HL,DE RET
CURSOR PUSH BC
LD A,(HL) LD (CURSORR-1),A LD C,CURSCOL JR CURSORR
CURRES PUSH BC
LD C,5
CURSORR PUSH HL
LD B,8
CURSOR0 DB "q,
DJNZ $-2 POP HL POP BC RET
EM6 LD BC,262 EM15635
LD A,195 LD (23746),A LD (EMSP+1),SP PUSH BC PUSH DE PUSH HL CALL AYOFF LD HL,#5C00 LD D,'SYSBUF LD BC,#400 LDIR
DRV LD A,0
LD (23798),A OR #3C LD (23830),A LD H,L LD (23823),HL LD (23802),HL POP HL POP DE POP BC LD SP,EMSTACK CALL 15635
EMSP LD SP,0
LD A,201 LD (23746),A RET
ONERROR LD (ERRDE+1),DE
EX (SP),HL LD DE,8020 OR A SBC HL,DE JR NZ,ERRSP POP HL
ERRDE LD DE,0
SCF RET
ERRSP LD SP,0
LD HL,SYSBUF LD DE,#5C00 LD BC,#400 LDIR CALL DEPKFNT LD HL,SAVERR CALL WINDTXT DW #4848,#2711 CALL IYKEY OR A
OLDRV LD A,(23833)
LD (DRV+1),A RET
PRCURXY PUSH BC
PUSH DE JR PRCU3
WORKPP PUSH BC
LD DE,#400B LD HL,FILENAM CALL PRFN-2 LD A,32 CALL PRSYM POP BC LD A,C CP 8 SBC A,-17 LD HL,#4000
PRCU LD E,A
PUSH BC PUSH DE PUSH HL JR PRCUS
PRCUR PUSH BC
PUSH DE
CURXY EQU $+1
LD DE,0
PRCU3 PUSH HL
LD A,D CALL 3742
PRCUS LD A,E
RLCA ADD A,E ADD A,A LD C,0 SBC A,C LD B,A RRA RRA RRA AND 31 ADD A,L LD L,A LD A,B CPL AND 7 INC A LD B,A
CUR1 PUSH BC
LD A,#FC ADD A,A RL C DJNZ $-3 LD B,A LD A,C XOR (HL) DB "w, LD A,L AND 31 LD A,B JR Z,$+4 XOR (HL) DB "w-$ POP BC LD A,H AND 7 JR NZ,CUR1
CURQ POP HL
POP DE POP BC RET
CLS LD H,64
CALL CLA+7 LD A,COLOUR
CLA LD BC,#2FF
LD H,88 JR $+6 LD BC,#17FF XOR A LD L,0 DB "w LD D,H LD E,1 JR $+5
LDIR1 LD BC,256
LDIR RET
NXTLINE
LD A,E ADD A,32 LD E,A RET NC LD A,D SUB -8 LD D,A RET
PRCATU
LD DE,SECBUF PUSH DE PUSH HL LD HL,SECBUF LD D,L,E,L LD BC,#905 CALL Z,EM15635 CALL DEPKFNT CALL CLS CALL DEPKFNT LD A,TITLCOL LD HL,#5AE0 DB "w, JR NZ,$-2 LD HL,#5820 DB "-w JR NZ,$-2 LD DE,#4000 POP HL LD (PRCRE+4),HL CALL PRTEXT LD DE,#50E0 LD HL,TFREE CALL PRTEXT INC E LD HL,(SECBUF+#8E5) CALL PRNUM LD C,B POP HL LD (PRCATF0-2),HL LD DE,#4020
PRCAT0 LD (PRCRE+1),HL
LD A,C CP 88 RET Z XOR A OR (HL) RET Z ;DEC A ;JR Z,PRCATNO PUSH BC PUSH DE LD C,3 CALL PRFN IFN zwet POP DE PUSH DE LD A,D RRCA RRCA RRCA ADD A,80 LD D,A LD A,(HL) LD C,#47 SUB "B JR Z,zwY LD C,#07 DEC A JR Z,zwY LD C,#45 CP "m"-"C JR Z,zwY DEC C CP "W"-"C JR Z,zwY CP "p"-"C JR NZ,zwN
zwY
LD B,8 LD A,C LD (DE),A INC E DJNZ $-2
zwN
ENDIF RES 3,L POP DE CALL NXTLINE LD A,E ADD A,32 LD A,D RLA CP 80+81 JR C,PRCprok LD A,E ADD A,64+8 LD E,A LD D,64
PRCprok
POP BC INC C ;DB "~
PRCATNO ;DB "w
LD A,L SUB -16 LD L,A JR NZ,PRCAT0 INC H JR PRCAT0
PRCRE
LD DE,0 LD HL,0 LD A,(DE) OR A JR NZ,$+6
PRCAT
LD DE,SECBUF XOR A LD (ERRSP+1),SP CALL PRCATU+3 XOR A CP C JP Z,OLDRV LD HL,(PRCDESC+1) CALL SAVTEST JP NZ,PRCCPN
PRCB LD B,0 PRCATST LD A,B
CP C JP NC,PRCCPN LD L,-1 INC L SUB 22 JR NC,$-3
- nom=stolb+4*(stroka+1)
- HL=8*(#1100+nom)
ADD A,23 ADD A,A,A,A ADD A,L ;SUB -4 LD H,11 LD L,A DB "))) PUSH HL CALL CURSOR PUSH BC LD A,B LD (PRCB+1),A LD BC,16 LD HL,SECBUF
PRCATF0 DEC (HL)
INC (HL) ADD HL,BC JR Z,PRCATF0 ADD A,-1 JR C,PRCATF0 CALL PRFNDO DB ",~, PUSH HL LD H,(HL) LD L,A LD B,32 SUB B CP 96 LD A,B JR NC,PRFNE LD A,H SUB B CP 96 LD A,B JR NC,$+4 LD B,H LD A,L
PRFNE CALL PRSYM
LD A,B CALL PRSYM POP BC INC C CALL PRSTLEN POP BC CALL IYKEY POP HL RET NC CALL CURRES CP 13 JR Z,PRCDESC SUB 8 JP C,PRCRE JR NZ,PRCATNL LD A,B SUB CATHGT JR NC,$+3 XOR A LD B,A XOR A
PRCATNL DEC A
JR NZ,PRCATNR LD A,B ADD A,CATHGT LD B,A XOR A
PRCATNR DEC A
JR NZ,PRCATND INC B
PRCATND DEC A
JR NZ,PRCATNU
PRCATUP XOR A
CP B JR Z,$+3 DEC B
PRCND JP PRCATST PRCCPN LD B,C
JR PRCATUP
PRCATNU SUB "1"-11
CP 4 JR NC,PRCND LD (DRV+1),A LD HL,(PRCRE+4) JP PRCAT
PRCDESC
LD HL,0 CALL LDIR9-3 LD E,(HL) INC L LD D,(HL) LD (STADR+1),DE
GETbde INC L
LD E,(HL) INC L LD D,(HL)
GETBDE INC L
PUSH DE LD A,(HL) INC L LD E,(HL) INC L LD D,(HL) POP HL LD B,A LD C,5 SCF RET
REMFN
LD HL,FNBUF LD DE,FILENAM
LDIR9 LD BC,9
LDIR RET
SAVE
LD HL,TSAVE
LENGTH EQU $+1
LD DE,0 LD (SDESCHL+1),DE DEC DE INC D RET Z LD (ERRSP+1),SP PUSH DE CALL PRCATU LD HL,(SSTART+1) LD BC,LENGTH CALL PRSTLEN LD HL,FILENAM LD DE,FNBUF CALL LDIR9 CALL NAME JP NC,POPRET LD HL,LINBUF LD DE,8 LD BC,#105 CALL EM15635 POP BC LD A,(LINBUF+#E4) LD C,A LD DE,0
SAV0 LD A,E
LD (SAVSEC+1),A LD HL,WINBUF PUSH BC PUSH DE PUSH HL LD BC,#105 CALL EM15635 POP HL POP DE POP BC
SAV1 LD A,C
OR A JP Z,SAVNEON CALL SAVTEST JR NZ,NOERASE LD A,C DEC A JR Z,SAVON PUSH BC LD A,L OR 15 LD L,A LD A,B LD B,(HL) DEC L LD C,(HL) DEC L CP (HL) RES 2,L JR Z,SAVOVER RES 3,L DEC L LD (HL),1 PUSH DE PUSH HL LD HL,LINBUF+#F4 INC (HL) LD HL,WINBUF CALL EM6 POP HL POP DE POP BC
NOERASE DEC C
LD A,16 ADD A,L LD L,A JR NC,SAV1 INC E JR SAV0
SAVOVER
LD D,B LD E,C POP BC CALL SAVTAM XOR A LD (SAVFLAG+3),A JR SAVALL2
SAVON
SET 3,L INC L CALL SAVTAM LD E,(HL) INC L LD D,(HL) LD HL,LINBUF+#E5 ADD A,(HL) LD (HL),A INC HL JR NC,$+3 INC (HL)
SAVALL LD HL,LINBUF+#E5
LD A,(HL) SUB B LD (HL),A INC HL JR NC,$+3 DEC (HL)
SAVALL2 PUSH BC
PUSH DE LD E,C LD D,'WINBUF
SDESCHL LD HL,0
LD BC,MUZ ADD HL,BC LD C,L LD L,-1 LD B,14
SAVSDES LD A,C
CP L JR Z,SAVSEC LD A,(DE) DEC E LD (HL),A DEC L DJNZ SAVSDES
SAVS0 LD A,C
CP L
- JR Z,$+4
LD (HL),0 DEC HL JR NZ,SAVS0
SAVSEC LD DE,0
LD HL,WINBUF CALL EM6 POP DE POP BC LD HL,MUZ
SVNXPAG LD C,6
CALL EM15635 LD DE,(23796)
SAVFLAG LD (LINBUF+#E1),DE
LD HL,MUZ LD (SVNXPAG-2),HL LD HL,LINBUF LD A,H LD (SAVFLAG+3),A LD DE,8 JP EM6
SAVNEON
LD HL,LINBUF+#E4 LD A,(HL) INC (HL) CP 128 RET Z PUSH BC CALL SAVEPP
SAVNEO0 LD A,(DE)
LD (HL),A INC DE INC L DJNZ SAVNEO0 POP BC CALL SAVTAM LD DE,(LINBUF+#E1) LD (HL),E INC L LD (HL),D JP SAVALL
SAVTAM
PUSH BC
SSTART LD BC,0
LD (HL),C INC L LD (HL),B INC L LD BC,(LENGTH) LD (HL),C INC L LD (HL),B INC L POP BC LD A,(HL) LD (HL),B LD C,L INC L RET
SAVEPP
LD L,A LD H,0 LD D,H DB ")))) LD E,H LD A,E LD (SAVSEC+1),A LD H,'WINBUF PUSH HL LD L,D LD BC,#105 CALL EM15635 POP HL LD DE,FILENAM LD B,9 RET
SAVTEST
PUSH BC,DE,HL LD DE,FILENAM LD B,9
SAVTST0 LD A,(DE)
CP (HL) JR NZ,POP3 INC HL,DE DJNZ SAVTST0
POP3 POP HL,DE,BC
RET
PRNUMH
CALL PRSK PUSH HL LD A,H CALL PRHEX LD A,L JR PRNUMAQ
PRSK
LD A,"( CALL PR88 LD A,"# JR PR88
PRNUMA
PUSH HL PUSH AF LD L,A LD H,0 CALL PRNUM3 CALL PRSK POP AF
PRNUMAQ CALL PRHEX
LD A,") CALL PR88 POP HL RET
PRHEX
LD C,A DUP 4 RRA EDUP CALL PRH LD A,C
PRH AND 15
ADD A,"0 CP ": JR C,$+4 SUB ":"-"A JR PR88
PRAHL
CALL PR88 LD A,H CALL PR88 LD A,L
PR88
PUSH HL ADD A,A LD L,A LD H,15 DB ")) JR PRDGUSE
PRSTLEN
PUSH BC LD DE,#4015 CALL PRNUM DB ">, CALL PR88 POP HL LD A,(HL) INC HL LD H,(HL) LD L,A
PRNUM LD BC,10000
CALL PRDIG
PRNUM4 LD BC,1000
CALL PRDIG
PRNUM3 LD BC,100
CALL PRDIG
PRNUM99 LD BC,10
LD H,B CALL PRDIG LD C,1
PRDIG LD A,120 PRDIG0 ADD A,8
SBC HL,BC JR NC,PRDIG0 ADD HL,BC PUSH HL LD H,61 LD L,A
PRDGUSE PUSH DE
LD B,8 DB "~ RRCA OR (HL) INC L LD (DE),A INC D DJNZ $-6 POP DE POP HL INC E RET
PRTEXT
LD C,0
PRTXT XOR A
OR (HL) RET Z INC HL CALL PRSYM JR PRTXT
GETWIN
LD HL,LDIRKA LD (HL),E INC HL LD (HL),D INC HL LD (HL),C INC HL LD (HL),B INC HL PUSH BC PUSH DE
GETWIN0 PUSH BC
EX DE,HL PUSH HL LD B,0 LDIR POP HL EX DE,HL POP BC CALL DDE DJNZ GETWIN0 POP DE POP BC RET
WINDTXT
EX (SP),HL LD E,(HL) INC HL LD D,(HL) INC HL LD C,(HL) INC HL LD B,(HL) INC HL EX (SP),HL PUSH DE PUSH BC PUSH DE PUSH HL LD A,B SUB -9 LD B,A CP 50 LD HL,WINBUF CALL C,GETWIN EX DE,HL PUSH BC CALL FINDATR-1 LD H,A CALL LDIR1 DEC H POP BC SRL B,B,B
GETWN1 PUSH BC
PUSH HL LD B,C
GWCOL LD (HL),WINCOL
INC L DJNZ $-3 POP HL LD C,32 ADD HL,BC POP BC DJNZ GETWN1 CALL DEPKFNT POP HL POP DE POP BC PUSH BC
WINDTIT LD B,C
PUSH DE XOR A LD (DE),A INC E DJNZ $-2 POP DE CALL DDE JR NC,WINDTIT POP BC
WINDBOK PUSH BC
PUSH DE LD A,128 LD (DE),A LD B,C DEC B XOR A INC E LD (DE),A DJNZ $-2 INC A LD (DE),A POP DE CALL DDE POP BC DJNZ WINDBOK LD B,C LD A,-1 LD (DE),A INC E DJNZ $-2 POP DE LD B,-2 PUSH DE CALL WIND0XT POP HL CALL FINDATR-1 LD H,A PUSH HL LD (HL),TITLCOL INC L DEC C JR NZ,$-4 POP HL LD DE,64 ADD HL,DE RET
WIND0XT
PUSH BC PUSH DE CALL WINDPX0 POP DE INC E CALL NXTLINE DEC E POP BC INC B XOR A OR (HL) JR NZ,WIND0XT RET
WINDPX0
LD C,0 LD B,42
WINDOX0 DEC B
XOR A OR (HL) RET Z INC HL CP 13 RET Z CALL PRSYM JR WINDOX0
PUTWIN
LD HL,LDIRKA LD E,(HL) INC HL LD D,(HL) INC HL LD C,(HL) INC HL LD B,(HL) INC HL PUSH DE
PUTWIN0 PUSH BC
PUSH DE LD B,0 LDIR POP DE POP BC CALL DDE DJNZ PUTWIN0 POP DE LD A,D CALL FINDATR LD D,A CALL LDIR1
DEPKFNT
LD E,0
DEPKFN1 LD H,#6E
LD L,E LD D,'FONTS LD B,4
DEPKFN2 CALL DEPKA
DB "q$w RES 4,H CALL DEPKB DB "w%q CALL DEPKA DB "w$q RES 4,H CALL DEPKB DB "q%w DJNZ DEPKFN2 INC E JR NZ,DEPKFN1 RET
DEPKA
LD A,(DE) INC D LD C,A DB "$$ SET 4,H XOR A
DEPKB SRL C
RRA SRL C RRA RET
OUTME
PUSH BC LD BC,FD OUT (C),A POP BC RET
QUIT
LD HL,SSBREAK CALL TYN
PUTWD RET Z
JR QUIT3
QUIT2
CALL TYN JR C,PUTWD CALL NZ,SAVE
QUIT3
LD A,23 CALL OUTME LD HL,(#C000) LD DE,#FF31 XOR A SBC HL,DE JP Z,#C000 LD H,A,L,A
QUITHL PUSH HL
LD A,16 CALL OUTME JP 15663
TFREE DB "Free:",0 TLOAD DB "Load file:",0 TSAVE DB "Save file:",0
TPTUTIL DB "Pro Tracker 3.x Utility v1.367"
NOP
TBY DB "(C) 09.03.2004 by Alone Coder"
DB "/i8",0
TMENU DB " LOAD MODULE",1
DB " PLAY MODULE",1 DB " SAVE MODULE",1 DB " COMPILE SONG",1 DB " SWAP CHANNELS",1 DB " RENAME SONG",1 DB " SORT PATTERNS",1
- DB "TRACKS/POSITIONS",1
DB " HELP",1 DB " QUIT",1,0
SSBREAK
DB " Выход из программы",13,13 DB "QUIT?STAY?QUIT?STAY?",13 DB " Sure to quit(Y/N)?",0
SAVERR
DB " ERROR",13,13 DB " Virtual memory",13 DB " allocation error",0
LISTER
;CALL DEPKFNT LD HL,TEXT CALL PRPAGE
START CALL IYKEY
RET NC LD HL,STQ PUSH HL SUB "9 JR Z,UP INC A JR Z,DOWN SUB 11-"8 JR Z,UP INC A JR Z,DOWN INC A JR Z,PGDN INC A JR Z,PGUP SUB -3 JR Z,PGDN INC A JR Z,PGUP POP HL
STQ
JR START
PGUP
LD HL,(TOP)
UPPAGE LD B,HGT
CALL LINEUP DJNZ $-3
PRPAGE LD (TOP),HL
LD DE,#4000 LD B,HGT
PRPAGE0 CALL PRLINE
CALL NXTLINE DJNZ PRPAGE0 LD (BOTTOM),HL RET
PGDN
LD HL,(BOTTOM) LD (TOP),HL LD DE,#4000 LD B,HGT
DNPAGE0 LD A,(HL)
OR A JR Z,UPPAGE CALL PRLINE CALL NXTLINE DJNZ DNPAGE0 LD (BOTTOM),HL RET
BOTTOM=$+1 DOWN
LD HL,0 LD A,(HL) OR A RET Z PUSH HL CALL SCRUP LD HL,(TOP) CALL LINEDN LD (TOP),HL POP HL LD DE,#50E0 CALL PRLINE LD (BOTTOM),HL RET
TOP=$+1 UP
LD HL,0 DEC HL LD A,(HL) INC HL OR A RET Z CALL LINEUP LD (TOP),HL PUSH HL CALL SCRDN LD HL,(BOTTOM) CALL LINEUP LD (BOTTOM),HL POP HL LD DE,#4000
PRLINE PUSH BC
PUSH DE DEC E LD BC,#2A00
PRLINEP LD A,(HL)
OR A JR Z,PRLINEQ INC HL CP 13 JR Z,PRLINEQ CALL PRSYM DJNZ PRLINEP INC HL
PRLNE
POP DE POP BC RET
PRLINEQ LD A,32
CALL PRSYM DJNZ $-5 JR PRLNE
SCRDN
LD B,HGT-1 LD HL,#50E0
SCRDN0 LD D,H,E,L,A,L
SUB 32 LD L,A JR NC,$+6 LD A,H SUB 8 LD H,A CALL LDIRER DJNZ SCRDN0 RET
LDIRER
INC B PUSH HL LD A,8
LDIR0 PUSH DE,HL
DUP 32 LDI EDUP POP HL,DE INC H,D DEC A JR NZ,LDIR0 POP HL RET
SCRUP
LD B,HGT-1 LD HL,#4000
SCRUP0 LD D,H,E,L
CALL NXTLINE EX DE,HL CALL LDIRER DJNZ SCRUP0 RET
LINEDN
LD A,(HL) OR A RET Z INC HL CP 13 JR NZ,LINEDN RET
LINEUP
DEC HL LD A,(HL) OR A JR Z,LFQ
LINEUP0 DEC HL
LD A,(HL) OR A JR Z,LFQ CP 13 JR NZ,LINEUP0
LFQ INC HL
RET
deinit
LD DE,MUZ PUSH DE LD HL,TcomT LD BC,TcomTln LDIR POP DE DI LD HL,105 ADD HL,DE LD (dei_SP0+1),SP LD SP,HL LD HL,201-105 ADD HL,SP LD BC,0 LD A,-1 CPIR OR A ;SUB HL,SP-105 SBC HL,SP LD BC,105 ADD HL,BC DEC SP,SP POP BC PUSH BC OR A SBC HL,BC EX DE,HL LD B,49;48
dia_s0 POP HL
LD A,H CP #40 JR C,$+3 ADD HL,DE PUSH HL POP HL DJNZ dia_s0
deiNpa0 LD A,B deiNpa DEC SP
POP BC INC B JR Z,deiNpaQ DEC B CP B JR NC,deiNpa JR deiNpa0
deiNpaQ
ADD A,3 LD B,A
dia_p0 POP HL
LD A,H CP #40 JR C,$+3 ADD HL,DE PUSH HL POP HL DJNZ dia_p0
dei_SP0 LD SP,0
EI RET
TcomT
DB "ProTracker 3.6"
TcomTln=$-TcomT PAKHELP
NOP
TEXT INCBIN "acbdoc .W"
NOP
TABC INCBIN "TABC LTABC EQU $-TABC/2 FNBUF DS 9 DISPLAY $
DS .(-$)
TABS
INCBIN "tb_PT INCBIN "tb_ST INCBIN "tb_ASM INCBIN "tb_REAL INCLUDE "PTUPLAY",#C2
initia
LD DE,MUZ LD B,D,C,E
initia3
;LD (ia_pos0+1),BC DI LD HL,101 ADD HL,DE PUSH HL LD (sav_SP0+1),SP LD SP,HL POP AF POP HL ADD HL,BC LD (Psa_chn+1),HL LD D,B,E,C DEC SP,SP LD B,49;48
ia_s0 POP HL
ADD HL,DE PUSH HL POP HL DJNZ ia_s0 LD L,E ADD HL,SP LD H,D LD (Psa_beg+1),HL LD C,A ADD HL,BC LD (Psa_lop+1),HL
iniNpa0 LD A,B iniNpa DEC SP
POP BC INC B JR Z,iniNpaQ DEC B CP B JR NC,iniNpa JR iniNpa0
iniNpaQ
ADD A,3 LD B,A
ia_p0 POP HL
ADD HL,DE PUSH HL POP HL DJNZ ia_p0
LD HL,T_m LD C,D LD B,T_m_l
ini_m0 LD E,(HL)
INC HL LD D,(HL) INC HL LD A,C LD (DE),A DJNZ ini_m0 LD HL,#101 LD (int_qty),HL ;&A_qty LD (B_qty),HL ;&C_qty
sav_SP0 LD SP,0
EI XOR A LD (Am_vol+1),A LD (Bm_vol+1),A LD (Cm_vol+1),A LD HL,DUMMYORN LD (Ao_adr+1),HL LD (Bo_adr+1),HL LD (Co_adr+1),HL LD (As_adr+1),HL LD (Bs_adr+1),HL LD (Cs_adr+1),HL LD (Ach_adr+1),HL SUB 16 LD (Ag_vol+1),A LD (Bg_vol+1),A LD (Cg_vol+1),A SBC A,A LD (Avb_lok+1),A LD (Cvb_lok+1),A LD (Bvb_lok+1),A POP DE DEC DE JP eff_tmp
end
DISPLAY $,"<",SECBUF ORG #5CDD DB "PTU1.367B INCLUDE "mrip*",#C5 ORG $ CALL 8026 JP NC,nenado LD HL,QUITHL LD (HL),225 XOR A JP GO+3 DISPLAY $MUZ PUSH DE LD HL,TcomT LD BC,Tco