Changes

PROTRACKER372 PTU367 H

40,017 bytes added, 23:31, 14 February 2020
Created page with "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 CURSC..."
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