PROTRACKER372 PTU367 H

From MSX MUSIC WIKI
Revision as of 23:31, 14 February 2020 by Kumokosi (talk | contribs) (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...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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