PROTRACKER372 PTU367 H

From MSX MUSIC WIKI
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