Changes

PROTRACKER372 MKPT37 H

37,907 bytes added, 22:04, 14 February 2020
Created page with "mkpt37 C��9Т�Уp� ORG #FF32,2 IF0 {4>4+{$}}-#BF43 make DISPLAY "please wait,compile&save ENDIF alasm=0;1 fixtoENV=1 hidearr=1 ts=1 pttfc=0..."
mkpt37 C��9Т�Уp� ORG #FF32,2
IF0 {4>4+{$}}-#BF43
make DISPLAY "please wait,compile&save
ENDIF
alasm=0;1
fixtoENV=1
hidearr=1
ts=1
pttfc=0;#55
PATS=48
SMPX=0;4
SMPY=2;5
SMPH=19;по WBUFTOP=#FFxx INPAGE опр-ет edsmp!
skipABC=1;иначе в PLAYER стрелка исчезает
cl12345=1
bemol=1
tab=1
ply=0;компиляция с плейером
cmpilmnu=0|ply
frqrosh=1
mkvol=1
process=1;1
portres=1
goodpak=1
about=1;1
tstPT=0
savset=0
set=1;1
opcompl=0
ead=#5965 ;место inv для прозр.ENV
SMPATR=SMPY<5+#5820+SMPX
SMPBOT=SMPH<5+SMPATR
IFN pttfc
ORG #C000,pttfc
tfcinclude
INCLUDE "pttfc",#85
tfmmuz
INCBIN "tat*.t"
ENDIF

ORG #5CDD,0
DB "PT3.72 B"
INCLUDE "B:m2hr*",#C0
ORG #5BFB
ink1 DB #30
pap1 NOP
ink2 DB #38
pap2 NOP
bord NOP
IMVEC=#8000 ;todo #BE00
TXTBUF=23698
OOOO=23698
BUF=#6F60;#480+18zeros
l5b00=#6000;#5B00 глючит(Risk);CAT низя;длины треков при compile
;не более 128 треков(нет проверки!)
CATfilt=BUF-#500 ;,#500 todo pg4/pg7
CATdos=BUF-#480 ;,#900
BUFEND=BUF+#4A0
SPRAR=BUFEND
TVOL=#BE00
;many
EDORbf=#7100;(64)
;1
bf240=#7180;EDPOSssQ BUF(#240)
FONT=#7400;%512(лежит на 256 выше)
FNTDEC=#7800;(512)
FNTNOTE=FNTDEC+512;(256)
TSMPSZ=#7B00;SMPLP,END(64)
TPOSS=#7C00
;10
TPATSZ=TPOSS+256;=0..63
TORNSZ=#7DD0;ORNLP,END(32)
;2
;убить?
ARBUF=#7D80
;2(GO,AtoPAT)
;убить?
TPATS=#7E00;pg,E,D
;5
;убить?
TLINES=#7F00;L/2*18(128)
;2+1
;убить
TORNS=#7FD0;(32).TORNS=.TORNSZ
FrTab=#BF00
INCLUDE "PTcon*",#C7
modC=mod
ORG #6100
begin
;3тут+4(STPAT0,COPYU,CMpores,TransPP)
AtoPAT
;HL,A на выходе не важны
;C надо сохранять для COPYU
AtoPnsJ JR AtoPns2
CPL
ADD A,PATS;48
AtoPns2 LD L,A
ADD A,A
ADD A,L
LD L,A
LD H,'TPATS
LD A,(HL)
CALL OUTME
INC L
LD E,(HL)
INC L
LD D,(HL)
RET
SWPAYPP
LD BC,#FFFD
IFN pttfc
RES 2,A
ENDIF
OUT (C),A
sWPSNGPP
LD HL,ayblock
;LD DE,ayblock2
LD B,szayblock4
SWPAY0
DUP 4
LD A,(HL)
INC H
LD E,(HL)
LD (HL),A
DEC H
LD (HL),E
INC L
EDUP
DJNZ SWPAY0
LD HL,AtoPnsJ
LD A,(HL)
XOR 24!46
LD (HL),A
RET
SWPSONG
CALL sWPSNGPP
RRA
AND 1
ADD A,"1"
LD DE,#1D0B
CALL PRADD
LD A,(pat1)
CPL
ADD A,PATS;48
CALL iPATq
LD A,(pat2)
CPL
ADD A,PATS;48
CALL iPAT2q
LD HL,TPATSZ
LD DE,TPATSZ+PATS-1
LD B,PATS/2
SWPSNGL LD A,(DE)
LD C,(HL)
LD (HL),A
LD A,C
LD (DE),A
INC L
DEC E
DJNZ SWPSNGL
LD A,(EPAT)
LD L,A
LD A,(HL)
LD (PATLEN),A
;LD A,(PATLEN)
CALL IPATLQ
JP PRPATUU
CHKTS
LD A,(ts48)
LD HL,tson
CP 33 ;32=не TS
SBC A,A ;#FF=не TS
CP (HL)
RET NZ
ONOFFTS
LD HL,#486B
LD C,3
CALL INVSYMS
LD HL,tson
LD A,(HL)
CPL
LD (HL),A
OR A
LD A,32
JZ $+4
LD A,48;PATS
LD (ts48),A
RET
ALLCHAN
LD HL,#4853
LD C,4
CALL INVSYMS
LD HL,chnall
LD A,(HL)
CPL
LD (HL),A
RET
;10
GETnADR
LD A,B
CALL AtoPAT
LD A,C
ADD A,A
LD L,A
LD H,'TLINES
LD A,(HL)
INC L
LD H,(HL)
LD L,A
ADD HL,DE
RET
;2(PT2PATS,PT3PATS)
PATfrBUF
PUSH AF,HL
LD L,A,H,'TPATSZ
DEC D
LD (HL),D
CALL aPATBUF
POP HL,AF
RET
;2(CLPATS,clPAT)
CLPAT
CALL KILLBUF
LD HL,97
LD (BUF+3),HL
LD (BUF+8),HL
LD (BUF+13),HL
aPATBUF CALL AtoPAT
LD HL,BUF
JR bUFLDIR
;2(COPYU,CMPP)
PATtoBUF
CALL AtoPAT
LD HL,BUF
EXD
bUFLDIR LD BC,#480
LDIR
JP OUT7
;3(CLPAT,PT2PATS,PT3PATS)
KILLBUF
PUSH HL
LD HL,BUF
LD DE,BUF+1
LD (HL),0
LD BC,#47F
LDIR
POP HL
RET
;2
GETnPAT
LD A,(POS)
GETnPAA
LOOP=$+1
LENG=LOOP+1
LD DE,#100
INC A
CP D
JNC $+3
LD E,A
LD D,'TPOSS
LD A,(DE),(nPAT),A
RET
;2(INCPOSU,ROLL)
ROLnxPO
CALL GETnPAT ;(DE)->A->(nPAT)
LD (EPAT),A
LD B,E
LD E,A
INC D ;TPATSZ
LD A,(DE),(PATLEN),A
INC A
LD C,A
LD A,B,(POS),A
RET
;2(UPRnxPO,PRPAT)
ROLprPO
;LD A,(POS)
LD DE,(LENG)
DEC A
CP E
JC $+4
LD A,E
DEC A
LD E,A
LD D,'TPOSS
EXA
;LD (POS),A
LD A,(DE)
LD E,A
INC D
RET
HLORN
ORN=$+1
LD A,1
;6
HLOR3 ADD A,A
ADD A,TORNS
LD L,A
;1:CLORN (убить)
_orn LD H,'TORNS
PUSH AF
LD A,(HL)
INC L
LD H,(HL),L,A
POP AF
RET
FILLENS
LD DE,TPATSZ+1
LD BC,PATS-1
LD H,D,L,B
LD (HL),A
LDIR
RET
DE2ATTR
LD A,E
RRCA
RRCA
RRCA
DA2ATTR LD H,A
AND #E0
OR D
LD L,A,A,H
AND 3
OR 88
LD H,A
RET
DE2SCR
LD A,E
AND 24
OR 64
LD H,A
LD A,E
AND 7
RRA
RRA
RRA
RRA
ADD A,D
LD L,A
RET
DHL
INC H
LD A,H
AND 7
RET NZ
LD A,L
ADD A,32
LD L,A
RET C
LD A,H
SUB 8
LD H,A
ret RET
DDE
INC D
LD A,D
AND 7
RET NZ
LD A,E
ADD A,32
LD E,A
RET C
LD A,D
SUB 8
LD D,A
RET
SHOLK
NOP
LD HL,shlkR
LD DE,#202
CALL SHLK0
LD DE,#406
CALL SHLK0
LD DE,#30B
SHLK0 LD BC,-3
OUT (C),E
LD B,#BF
OUTI
INC E
DEC D
JNZ SHLK0
RET
WINDUM
LD HL,DUMMY
WINDOW
CALL WINmema
LD (useadr),DE
LD (optadr),HL
DEC HL
LD A,(HL),(options),A
PUSH BC
POP IX
LD A,#B7,(DOWNM),A
CALL OUT4
LD D,(IX),E,(IX+1)
CALL DE2ATTR
LD (WINATR),HL
PUSH HL
CALL DE2SCR
LD (WINTOP),HL
PUSH HL
CALL WINMEM
LD A,(IX),C,A
ADD A,A,A,A,A,A
LD (TSTXMIN),A,A,C
INC A
ADD A,A
DEC A
LD (ADDX),A,A,(IX+1)
INC A
LD (ADDY),A
DEC A
ADD A,A,A,A,A,A
LD (TSTYMIN),A,A,(IX+2)
ADD A,A
DEC A
LD (PRMRGT),A
INC A
ADD A,A,A,A
LD (TSTXMAX),A
POP HL ;WINTOP
LD A,(IX+3)
PUSH AF
ADD A,A,A,A,A,A
LD (TSTYMAX),A
POP AF
SUB (IX+1)
ADD A,A,A,A,A,A
LD (RMKHGT),A
DEC (IX+2)
LD B,0
WIN0 EXA
PUSH HL
LD (HL),B,D,H,E,L
INC E
LD A,(IX+2)
SUB (IX)
LD (WINWID),A,C,A
LDIR
POP HL
CALL DHL
EXA
DEC A
JNZ WIN0
POP HL ;WINATR
LD A,(IX+4)
EXA
LD A,(IX+3)
SUB (IX+1)
LD B,0
WIN1 EXA
PUSH HL
LD (HL),A,D,H,E,L
INC E
WINWID=$+1
LD C,0
LDIR
POP HL
LD C,32
ADD HL,BC
EXA
DEC A
JNZ WIN1
LD A,(IX+2)
INC (IX+2)
SUB (IX)
LD C,A,B,0
PUSH BC
LD HL,(WINTOP)
CALL FILM1,DHL
RMKHGT=$+1
LD D,0
DEC D
LD B,D,C,1
CALL VERLIN
LD B,D,HL,(WINTOP)
DEC B
CALL DHL
LD C,#80
CALL VERLIN
POP BC
FILM1 LD D,H,E,L,(HL),-1
INC DE
LDIR
RET
VERLIN LD (HL),C
CALL DHL
DJNZ $-4
RET
;2
WINmema
LD A,(options),(Oldopt),A
PUSH HL
LD HL,(optadr),(Oldoad),HL
LD HL,(useadr),(Olduse),HL
POP HL
RET
WINMEM
WBUFTOP=$+1
LD HL,winbuf
PUSH HL
Oldopt=$+1
LD (HL),0
INC HL
Oldoad=$+1
LD DE,0
CALL WMEMPP
Olduse=$+1
LD DE,0
CALL WMEMPP
ADDY=$+1
ADDX=$+2
LD DE,0
CALL WMEMPP
LD A,(PRMRGT)
LD (HL),A
INC HL
WINATR=$+1
LD DE,0
CALL WMEMPP
LD A,(IX+2)
SUB (IX)
INC A
LD (HL),A,C,A
INC HL
LD A,(IX+3)
SUB (IX+1)
INC A
LD (HL),A
INC HL
PUSH AF
LD B,0
EXD
WMEM0 PUSH BC,HL
LDIR
POP HL
LD C,32
ADD HL,BC
POP BC
DEC A
JNZ WMEM0
POP AF
DEC C
ADD A,A,A,A,A,A
EXD
WINTOP=$+1
LD DE,0
CALL WMEMPP
EXD
WMEM1 EXA
PUSH HL,BC
LDIR
POP BC,HL
CALL DHL
EXA
DEC A
JNZ WMEM1
EXD
POP DE
WMEMPP LD (HL),E
INC HL
LD (HL),D
INC HL
LD (WBUFTOP),HL
RET
CLOSWIN
CALL OUT4
LD HL,(WBUFTOP)
DEC HL
LD A,(HL)
DEC HL
LD L,(HL),H,A
OR L
RET Z
LD (WBUFTOP),HL
PUSH BC
LD DE,options
LDI
LD DE,optadr
LDI
LDI
LD DE,useadr
LDI
LDI
LD DE,ADDY
LDI
LDI
LD DE,PRMRGT
LDI
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD A,(HL)
INC HL
PUSH AF
LD B,0
CLOS0 PUSH BC,DE
LDIR
EXD
POP HL
LD C,32
ADD HL,BC
EXD
POP BC
DEC A
JNZ CLOS0
POP AF
DEC A
ADD A,A,A,A,A,A
DEC C
LD E,(HL)
INC HL
LD D,(HL)
INC HL
CLOS1 EXA
PUSH DE,BC
LDIR
POP BC,DE
CALL DDE
EXA
DEC A
JNZ CLOS1
LD A,"0",(PR1dot),A
CALL MHEXFNT
LD A,".",(PR1dot),A
LD A,pg7;(filladr+1),A
CALL MHEXFNTpg
POP BC
CALL TSTFIRH
JC $-3
RET
;6
WAITNOK
CALL HALTER
CALL ANYKEY
CPL
AND 31
JNZ WAITNOK
RET
LDKSAPP
LD A,32
LD (ts48),A
CALL CLORNSM
CALL BIGso
CALL OUT3
LD BC,(#5CE8),HL,#BFFF,D,L,E,L
ADD HL,BC
LDDR
INC DE
EXD
LD DE,la000,A,(HL)
PUSH AF
INC HL
KSAPP0 LD A,(HL)
KSAPP1 INC HL
LD B,0
SRL A
JC KSAPPb0
RRA
JC KSAPPb1
RRA
LD C,A
JC $+5
LD B,A,C,(HL)
INC HL
LD A,(HL)
INC HL
KSAPP2 LD (DE),A
PUSH HL
LD A,(HL)
EXA
LD H,D,L,E
INC DE
JR KSAPP2G

KSAPPb1 SRL A
LD C,(HL)
JNC KSAPPn2
LD C,A
INC C
LDIR
JR KSAPP0

KSAPPb0 SRL A
JC KSAPP01
AND 7
LD B,A
DEC HL
RLD
RRA
LD C,A
LD A,B
KSAPPn2 LD B,A
INC HL,HL
LD A,(HL)
EXA
PUSH HL
DEC HL
LD A,E
SUB (HL)
LD L,A
LD A,D
SBC A,B
LD B,0
LD H,A
INC BC
KSAPP2G INC BC,BC
LDIR
POP HL
EXA
JR KSAPP1
KSAPP01
SRL A
DEC A
LD C,B
DEC BC
JC KSAPP2
POP AF
LD (DE),A
LD HL,labc0
LD DE,TPATSZ
LD B,31
KSAlens LD A,(HL)
DEC A
LD (DE),A
INC HL,DE
DJNZ KSAlens
CALL STSMP
LD HL,labdf
LD A,(HL),(LOOP),A
INC L
LD DE,TTITLE
LD C,25
LDIR
LD A,E,(STtit),A
LD A,7,(STtitZ),A
XOR A
CALL STORN
LD A,1,(FRQn),A
CALL OUT3
LD HL,labf9
LD DE,labc1
LD B,96
LDIR
JR LDSTPGO
BIGso
LD A,33
LD HL,TSMPSZ+3
LD DE,TSMPSZ+4
LD (HL),A
DEC A
CALL BIGsoQ
LD HL,TORNSZ+3
LD DE,TORNSZ+4
LD (HL),A
XOR A
BIGsoQ DEC L
LD (HL),A
LD BC,30
LDIR
RET
LDSTPP
LD A,32
LD (ts48),A
CALL CLORNSM
CALL BIGso
INC A
LD (FRQn),A
LD A,(labc0)
DEC A
;LD C,PATS-1
;LD DE,TPATSZ+1
;LD H,D,L,B
;LD (HL),A
;LDIR
CALL FILLENS
LD (PATLEN),A
CALL STSMP
LD A,TTITLE,(STtit),A
LD A,31,(STtitZ),A
LD A,'LOOP
CALL STORN
CALL OUT3
LDSTPGO LD A,(labbf),(TEMPO),A
LD A,(la99e)
INC A
LD (LENG),A
LD HL,la79e
LD DE,TPOSS
LD A,E
LDSTpos DEC (HL)
LDI
INC HL
DEC A
JNZ LDSTpos
LD HL,labc1
LD DE,la000
PUSH DE
LD B,#5F
LDIR
POP HL
STPAT0 PUSH AF
CALL OUT3
POP AF
PUSH AF
LD DE,EDORbf
LD BC,#240
LDIR
PUSH HL
CALL AtoPAT
LD HL,EDORbf
PUSH DE
POP IX
LD B,64
STPAT1 PUSH BC
INC DE,DE,DE
PUSH IX
LD (IX),C
LD (IX+1),C
LD (IX+2),C
LD B,3
STPAT2 PUSH BC,DE
XOR A
LD (DE),A
INC DE
LD (DE),A
INC DE
INC DE
LD (DE),A
INC DE
LD (DE),A
EXD
EX (SP),HL
EXD
CALL STPAPP
POP DE
INC DE
POP BC
DJNZ STPAT2
POP IX
LD C,18
ADD IX,BC
POP BC
DJNZ STPAT1
POP HL,AF
INC A
AND 31
JNZ STPAT0
STloop=$+2
LD (LOOP),A
LD (POS),A
STtit=$+1
LD HL,TTITLE
STtitZ=$+1
LD BC,31
CALL STtitQ
LD HL,TAUTHOR
LD C,31
STtitQ LD D,H
LD E,L
INC E
LD (HL),32
LDIR
RET

STSMP CALL OUT4
LD HL,la000
LD DE,_c000+256
LD A,15
STSMP0 PUSH AF
PUSH HL
PUSH DE
CALL STSMPP
LD A,(IX+#60)
LD H,(IX+#61)
OR A
JZ STSMPQ
DEC A
INC H
LD L,A
ADD A,H
LD H,A
LD A,D
SUB 'SMPS
EXD
ADD A,A
LD L,A
LD H,'TSMPSZ
LD (HL),E
INC L
LD (HL),D
STSMPQ POP DE
POP HL
INC D
LD BC,#82
ADD HL,BC
POP AF
DEC A
JNZ STSMP0
RET

STSMPP PUSH HL
POP IX
LD (STSMbse),HL
EXD
LD B,32
STSMPP0 LD A,64
SUB B
ADD A,A
LD (STSMix1),A
INC A
LD (STSMix2),A
PUSH IX
STSMbse=$+2
LD IX,0
STSMix1=$+2
LD E,(IX)
STSMix2=$+2
LD D,(IX+1)
POP IX
BIT 4,D
RES 4,D
EXD
CALL Z,NEGHL
EXD
LD (HL),E
INC L
LD (HL),D
INC L
LD A,(IX+#20),E,A
AND 31
RL E
JNC $+4
LD A,#40
RL E
RLA
RRCA
ksaON=$+1
LD D,0
DEC D
INC D
JZ $+8
RL E
JC $+4
OR #20
LD (HL),A
INC L
LD A,(IX),(HL),A
INC L
INC IX
DJNZ STSMPP0
INC L,L
LD (HL),96
EXD
RET

STORN LD (STloop),A
LD A,(ksaON)
LD HL,la9bf
LD DE,ORNS+64
OR A
JNZ KSAORN
LD A,15
STORN0 LD BC,32
LDIR
EXD
LD C,32
ADD HL,BC
EXD
DEC A
JNZ STORN0
RET

KSAORN LD A,1
KSAORN0 PUSH AF
LD BC,TORNSZ
ADD A,A,A,C
LD C,A
LD A,(HL),(BC),A
INC C
INC HL
LD A,(HL)
INC A
LD (BC),A
INC HL
LD BC,30
LDIR
EXD
LD C,34
ADD HL,BC
EXD
POP AF
INC A
AND 15
JNZ KSAORN0
RET

STPAPP LD A,(HL)
CP #10
JC STEt
CP #F0
JNC STres
AND 7
ADD A,A,A,A
LD B,A
ADD A,A,A,B
LD B,A
LD A,(HL)
LD C,8
CP #78
JNC STnot
DEC C
CP #70
JNC STnot
DEC C
CP #68
JNC STnot
DEC C
CP #60
JNC STnot
DEC C
CP #50
JNC STnot
DEC C
CP #48
JNC STnot
DEC C
CP #40
JNC STnot
DEC C
CP #38
JNC STnot
DEC C
CP #30
JNC STnot
LD C,11
CP #20
JNC STnot
DEC C
CP #18
JNC $+3
DEC C
STnot LD A,C
ADD A,B
INC A
JR STPAPQ

STres LD A,97
JR $+3
STEt XOR A
STPAPQ LD (DE),A
INC DE,DE,DE
INC HL
LD A,(HL),(DE),A
INC DE,HL
AND #F
JZ STEold
CP #F
JZ STorn
LD C,A
LD A,(ksaON)
OR A
JZ STnKSA
LD A,C
CP 3
JC STglis
STnKSA LD A,(HL),(IX+1),A
INC HL
RET

STEold LD A,(ksaON)
OR A
LD A,(HL)
INC HL
RET Z
AND #F0
JR STgliQ

STorn LD A,(HL)
INC HL
STand=$+1
AND -1
JR STgliQ

STglis LD C,A
DEC DE
LD A,(DE)
AND #F0
LD (DE),A
LD A,C
LD C,1
DEC A
JNZ $+3
INC C
LD A,(HL)
OR A
JP P,$+6
NEG
INC C
DEC DE
LD (DE),A
DEC DE
INC HL
LD A,C
AND 1
ADD A,17
STgliQ RRCA
RRCA
RRCA
RRCA
LD (DE),A
RET
IF0 ply
DS #15C ;???
ELSE
TRELOC INCBIN "REL3*
ENDIF
FREE=CATfilt-$
DISPLAY /T,FREE
PRESSED
IF0 ply
DS #900
ELSE
ORG $,pg7
DISP #C000
DUP #90
DW {$}
DW {$}
DW {$}
DW {$}
DW {$}
DW {$}
DW {$}
DW {$}
EDUP
ENT
ORG $,pg6
ENDIF
ENDPRES
DS FONT+256-$;BUF+#480 пустое место для ssQ
INCBIN "F7400
;FNTDEC
INCBIN "DIGITS
ORG $-72
DS 72
;FNTNOTE+512
DISPLAY "bufs ",$,"..7FXX=",#7F7D-$
DS #7F81-$
sprar DW #BF,#401F,#600F,#7007,#7803,#6007,#401F,#BF
GO
DISPLAY /T,GO
LD SP,#6000
LD (IY+1),#CC
LD HL,#108
LD (#5C09),HL
LD HL,Tfonscr,DE,0
CALL PRMENU,PRFONSCR
LD HL,FONATRS,DE,#5800,B,3
LDIR
LD H,'wassin
CALL INPAGE
CALL OUT7
LD HL,PRESSED,DE,#C000,B,A
LDIR
LD HL,SPRAR,A,127
MKAR0 LD IX,sprar
RLCA
LD B,8
MKAR1 LD C,(IX)
INC IX
LD D,(IX)
INC IX
LD E,0
PUSH AF
MKAR2 SRL D
RR E
SCF
RR C
RRA
JC MKAR2
LD (HL),C
INC L
LD (HL),D
INC L
LD (HL),A
INC L
LD (HL),E
POP AF
INC L
DJNZ MKAR1
JNZ MKAR0
LD H,#FE,(HL),#5E
CALL SETIM
DEC (HL)
LD HL,#C9AF,(#5E5D),HL,(#5D5E),HL
IM 2
HALT
IM 1
JNZ NOMOUSE
DEC A
LD BC,#FADF
IN C,(C),A,(#DF)
LD (OLDY+1),A,B,A,A,-5
IN A,(#DF)
LD (OLDX+1),A
CP B
JNZ NOMOUQ
CP C
JNZ NOMOUQ
NOMOUSE LD A,62,(MOUSF),A,(MOUSF2),A
LD HL,LEFT,(CALLER+1),HL
NOMOUQ ;LD HL,(#5CF4),(SETsec),HL
CALL MHEXFNT
LD HL,#5D3B
LD DE,ink1
LD B,3
JR saG
sa LD A,(HL)
AND #38
LD (DE),A
INC DE
INC HL
saG LD A,(HL)
RLA
RLA
RLA
AND #38
LD (DE),A
INC DE
DJNZ sa
LD C,(HL)
RL C
SBC A,A
AND 31
LD (joy),A
RL C
SBC A,A
LD (poion),A
RL C
SBC A,A
AND 201
LD (SHOLK),A
RL C
SBC A,A
LD (playon),A
;LD A,(HL),(poion),A
CALL SETCOLS ;EI
LD A,pg7
CALL MHEXFNTpg
LD HL,TSMPSZ+1,DE,TSMPSZ+2,C,62
LD (HL),L;1
DEC L
PUSH HL
LD (HL),B
LDIR
POP HL
LD DE,TORNSZ,C,E;32
LDIR
;LD DE,TPATSZ+1,H,D,L,B,(HL),63
;LD C,PATS-1
;LDIR
LD A,63
CALL FILLENS
CALL CLPOS
LD IX,TPATS
LD A,pg6;#10
LD HL,42-PATS*#480
LD BC,3,DE,#480
JR MpA0
MpatADS LD H,#C1
MpA0 LD (IX),A,(IX+1),L,(IX+2),H
ADD IX,BC,HL,DE
JNC MpA0
INC A
CP #12
JNZ $+3
INC A
CP #15
JNZ MpatADS
LD HL,TLINES,D,L,E,L,C,18,A,65
MTLIN LD (HL),E
INC L
LD (HL),D
INC L
EXD
ADD HL,BC
EXD
DEC A
JNZ MTLIN
LD DE,ORNS,HL,TORNS,C,64,A,16
MTORN LD (HL),E
INC L
LD (HL),D
INC L
EXD
ADD HL,BC
EXD
DEC A
JNZ MTORN
INC A
LD (#5C0A),A
CALL CLORNSM
CALL COPYFRQ
CALL CLPATS
CALL MKSCROL
IFN alasm
CALL LOADASM
ENDIF
LD HL,IMVEC,(HL),IMER
LD (IY+48),8
CALL SETIM
DISPLAY $,">#8100
IM 2
EI
LD HL,NLOOP
PUSH HL
JP EDPAT
SETIM
LD BC,256,D,H,E,B,A,H
LDIR
LD I,A
RET

DB 1
DUMMY DS 4;MENUCOORDS
shlkR DB 0,9,0,0,0,#10,0,1,0
MHEXFNT
LD A,pg4
MHEXFNTpg
CALL OUTME
XOR A
LD DE,#F801,H,D,L,A,(HL),A,BC,#7FF
PUSH HL
LDIR
POP DE
HFNT0 PUSH AF,AF
RRCA
RRCA
RRCA
RRCA
LD C,#F0
PUSH DE
CALL PR1
POP DE,AF
LD C,#F
CALL PR1
INC DE,DE
POP AF
INC A
JNZ HFNT0
RET
PR1
AND #F
ADD A,#90
DAA
ADC A,#40
DAA
poion=$+1
LD B,0;при старте 0
INC B
DEC B
JZ PR1np
CP "0
JNZ $+4
PR1dot=$+1
LD A,".
PR1np ADD A,A,A,A
LD L,A
ADC A,'FONT/2
SUB L
LD H,A
ADD HL,HL
LD B,6
EXD
PR10 LD A,(DE)
AND C
OR (HL)
LD (HL),A
INC E,L
DJNZ PR10
EXD
RET
OCT
DB 4
SNGST
DW #C000
DISPLAY $,"<=",#8181
DS #8181-$
IMER
PUSH HL,DE,BC,AF
RST 56
CALL MANAGE
POP AF,BC,DE,HL
RET
SNGLEN
DW 0
TEDCURX
;NO CROSS sec!
DISPLAY "TEDCURX=",$
DB 6,7,8,9,12,13
DB 16,20,21,22,23,26,27,28,29
DB 32,36,37,38,39,42,43,44,45
DB 48,52,53,54,55,58,59,60,61

TPROTR DB "ProTracker 3.7 compilation of "
TTITLE
;NO CROSS sec!
DISPLAY "TTITLE=",$
DS 33,32
DB "by "
TAUTHOR DS 33,32
ts48=$-1

AUTO1 DB "----
AUTO2 DB "����
LINESon DS 9,#7F
NLOOP
LD (IY+48),8
CALL RESHALT
LD HL,NLOOP
PUSH HL
JZ NLOONK
CP "W
JP Z,EDSONG
SUB 13
JP Z,PLSONG
DEC A
JP Z,EDPAT
NLOONK CALL JPITEM
DOWNMER LD A,#6F,(DOWNM),A
RET
FIRE
;NZ=y
;CALL 8026
;JNC fIREcs
LD A,#7F
IN A,(-2)
RRA
fIREOK DEC A
JNC FIREYES
fIREcs LD A,#FA
MOUSF IN A,(#DF)
RRA
JNC FIREYES
RRA
JC fIREKJ
LD A,(ITEM)
CP DIVNO+1
JZ fIREOK
fIREKJ CALL KEMPJOY
AND 16
RET Z
FIREYES
IFN hidearr
LD A,(ARROWt)
DEC A
RET Z ;Z=нет
LD A,0 ;NZ=да
LD (ARROWt),A
ENDIF
RET
CANCEL
LD A,#BF
IN A,(-2)
RRA
RET NC
CANCEL2 LD A,#FA
MOUSF2 IN A,(#DF)
RRA
RRA
RET
CLPOS
IF0 cl12345
LD DE,TPOSS+1
LD BC,255
LD H,D,L,B
LD (HL),L
LDIR
RET
ELSE
LD HL,TPOSS
LD BC,PATS*255+255
LD (HL),L
INC L
DJNZ $-2
LD D,H,E,L
INC E
LD (HL),B
LDIR
RET
ENDIF
MOVD0A0
LD (movd0a0),A
CALL OUT7
LD HL,la000,(LDADR),HL
LD DE,ld000,BC,#2000
LDIR
OUT3 LD A,pg3
JR OUTME
OUT7 LD A,pg7
JR OUTME
OUT6 LD A,pg6
JR OUTME
OUT4 LD A,pg4
OUTME
LD (pg),A
PUSH BC
LD BC,FD
OUT (C),A
POP BC
RET

PRADDPP
PUSH HL
LD HL,(ADDY)
ADD HL,DE
EXD
POP HL
RET

PRTXADDBUF
LD HL,TXTBUF
PRTXADD CALL PRADDPP
PRTXT LD A,(HL)
INC HL
CALL PR4X8
INC D
DJNZ PRTXT
RET

PRMEMO LD HL,T____
PRMENU
CALL PRADDPP
PRMNU0 LD A,(HL)
CP 6
JNZ PRMNUN6
INC HL
LD D,(HL)
INC HL
LD E,(HL)
INC HL
CALL PRADDPP
LD A,(HL)
PRMNUN6 PUSH AF
CALL PR4X8
INC HL
LD A,D
INC A
PRMRGT=$+1
CP 62
JNZ $+6
LD A,(ADDX)
INC E
LD D,A
POP AF
RLA
JNC PRMNU0
RET
RESHALT
RES 5,(IY+1)
HALTER
CALL ARROW
HALTnAR
options=$+1
LD DE,mains
LD BC,(ARXY)
optadr=$+1
LD HL,MENUCOO
OPTER0 INC D
LD A,B
CP (HL)
INC HL
JP C,OPTI3
LD A,C
CP (HL)
JP C,OPTI3
INC HL
LD A,B
CP (HL)
INC HL
JP NC,OPTI1
LD A,C
CP (HL)
JP NC,OPTI1
LD A,D
DEC HL,HL,HL
LD (ITEMADR),HL
JR OPTQ
OPTI3 INC HL,HL
OPTI1 INC HL
DEC E
JP NZ,OPTER0
LD A,-1
OPTQ LD (ITEM),A
ITEM=$+1
LD A,-1
INC A
CALL NZ,OP_INV
HALT
CALL RE
fillpat=$+1
LD A,#68
filladr=$+1
LD HL,0
fillN=$+1
LD C,1
CALL FILLPP
LD A,7,(#5810),A,(#5890),A,(#58B0),A
LD (filladr+1),A
CALL OUT6
XOR A
NOPKA=$+1
CP 0 ;fire
CALL GETAYER
BIT5
BIT 5,(IY+1)
LD A,(23560)
RET
RE
PUSH AF,BC,DE,HL
ARSCR=$+1
LD DE,0,HL,ARBUF,BC,#8FF
RE0 LDI
LDI
DEC DE,DE
CALL DDE
DJNZ RE0
POP HL,DE,BC,AF
RET
ARROW
ARXY=$+1
ARX=$+2
LD HL,#7707
IFN hidearr
LD BC,0
LD ($-2),HL
XOR A
SBC HL,BC
ADD HL,BC
JNZ ARROWsT
LD (ARSCR+1),A
ARROWt=$+1
LD A,0
DEC A
RET Z
ARROWsT
LD (ARROWt),A
ENDIF
LD C,H,A,L
CALL 8880
LD (ARSCR),HL
EXD
RRCA
RRCA
RRCA
LD L,A,H,'SPRAR,BC,ARBUF
ARR0 DUP 2
LD A,(DE),(BC),A
AND (HL)
INC L
OR (HL)
INC L
LD (DE),A
INC C,E
EDUP
ORG $-1
DEC E
CALL DDE
LD A,L
AND 31
JNZ ARR0
RET

RIGHT LD A,#DF
IN A,(-2)
RRA
CALL C,KEMPJOY
RRA
RET NC
LD A,(ARX)
INC C
ADD A,B
RIGHTU JNC $+4
LD A,-9
CP -8
JNC $-4
L14 LD (ARX),A
RET
MOUSER PUSH BC,HL
LD HL,(ARXY)
LD A,-5
IN A,(#DF)
OLDX LD E,0,(OLDX+1),A
SUB E
JP P,MPX
ADD A,H
CCF
CALL LEFTU
JR MXQ
MPX ADD A,H
CALL RIGHTU
MXQ LD A,-1
IN A,(#DF)
OLDY LD E,0,(OLDY+1),A
SUB E
NEG
JP P,MPY
ADD A,L
JC $+3
XOR A
SUB L
MPY ADD A,L
LD (ARXY),A
POP HL,BC
LEFT LD A,#DF
IN A,(-2)
RRA
RRA
CALL C,KEMPJOY
AND 2
LD A,(ARX)
JZ $+4
INC C
SUB B
LEFTU JNC $+3
XOR A
JR L14
UP LD A,#FB
IN A,(-2)
RRA
CALL C,KEMPJOY
AND 8
RET Z
LD A,(HL)
SUB B
JC $+6
CP 4
JNC $+4
LD A,4
L27 LD (HL),A
INC C
RET
DOWN LD A,#FE
IN A,(-2)
RRA
CALL C,KEMPJOY
AND 4
RET Z
LD A,#EF
IN A,(-2)
CPL
AND 31
RET NZ ;cs+0..6
LD A,#F7
IN A,(-2)
CPL
AND 31
RET NZ ;cs+1..5
LD A,#7F
IN A,(-2)
AND 2
RET Z ;Ext
LD A,(HL)
ADD A,B
JR L27
MANAGE
XOR A
LD (NOPKA),A
CALL FIRE
LD A,9,B,1
JZ L2
L3 LD A,1
DEC A
JNZ L6
CPL
LD (NOPKA),A
TIMER LD A,9
DEC A
JNZ $+3
INC A
LD B,A
L2 LD (TIMER+1),A
LD A,B
L6 LD (L3+1),A
SPEED LD BC,#101
CALLER CALL MOUSER
CALL RIGHT
LD HL,ARXY
CALL UP
CALL DOWN
DOWNM=$+1
LD A,#6F
CP (HL)
CALL C,L27
LD A,1
DEC C
JZ L9
LD A,1
RLCA
LD ($-2),A
RET NC
LD A,(SPEED+2)
INC A
CP 7
RET Z
L9 LD (SPEED+2),A
RET
;5
KEMPJOY
XOR A
IN A,(31)
joy=$+1
AND 0
RET
;1
OP_INV
ITEMADR=$+1
LD HL,0
LD B,(HL),D,B
INC HL
LD C,(HL)
INC HL
LD A,(HL)
CP -1
JNZ $+3
DEC B
SUB B
RRA
RRA
RRA
PUSH AF
SRL D,D,D
LD A,C
RLCA
RLCA
CALL DA2ATTR
POP AF
LD (fillN),A
LD C,A
LD A,(HL),(fillpat),A
RRCA
LD B,A
RRCA
RRCA
XOR B
AND #E0
XOR B
RRA
SRL A
LD (filladr),HL
FILLPP
LD (HL),A,D,H,E,L
INC E
DEC C
RET Z
LD B,0
LDIR
RET
CURPRTXADD
PUSH DE
CALL PRTXADDBUF
POP DE
CALL PRADDPP
LD HL,(TXTLEN),A,(TXTX)
CP L
RET Z
ADD A,D
LD D,A
LD A,"_
PR4X8
PUSH HL,DE,BC,AF
SRL D
LD C,15
JC $+4
LD C,#F0
CALL DE2SCR
POP AF
ADD A,A
ADD A,A
LD E,A
ADC A,'FONT/2
SUB E
SLA E
RLA
LD D,A
DUP 6
INC H
LD A,(DE)
XOR (HL)
AND C
XOR (HL)
LD (HL),A
INC E
EDUP
ORG $-1
POP BC,DE,HL
RET
SSA
LD BC,(CURY)
CALL GETnADR,XPP2
LD A,C
ADD A,A,A,A,A,C,A,-2
ADD A,L
LD L,A
JNC $+3
INC H
LD A,(HL)
INC HL,HL
RLA
LD DE,AUTO1
CALL puthB
OR A
LD BC,AUTOSu
PUSH BC
puthB INC HL
LD A,(HL)
RRA
RRA
RRA
RRA
AND 31
CALL puth
LD A,(HL)
AND 15
puth ADD A,"0
CP ":
JC $+4
ADD A,"A"-":
LD (DE),A
INC DE
RET
NotOct
CALL 8026
LD A,(OCT)
SBC A,8
ADC A,7
LD C,A
LD A,D
SUB 13
JC nOssnot
INC A
LD D,A
INC C
DEC C
JZ $+3
DEC C
nOssnot LD A,C
ADD A,A,A,C
ADD A,A,A,A,A,D
LD D,A
RET
EDSMP
XOR A
LD (volA),A
LD (volC),A
CALL OUT4
LD A,(smp)
ADD A,'SMPS
LD H,A,BC,256,L,C
LD (ESMPadr),HL
LD DE,EDORbf
LDIR
LD BC,mEDSMP
CALL WINDUM
XOR A
LD (EsTOP),A
LD HL,tSMPKEY
LD DE,#900+SMPH
CALL PRMENU
CALL PROCORN
CALL PRSMP
LD A,(smp)
ADD A,A
LD L,A,H,'TSMPSZ
LD A,(HL),(EsLOOP),A,B,A
INC L
LD A,(HL)
SUB B
LD (EsLEN),A
PUSH HL
XOR A
LD (EsMflag),A,(EsLIN),A
CALL GsMRK56
EDSMP0
CALL RESHALT
CALL EsCHMRK
CALL EsPRMRK ;долго
CALL EDSMCUR
CALL EDSMPKY
LD A,(smp),(piaSMP),A
EsORN=$+1
LD A,0,(piaORN),A
LD HL,TORNSZ
ADD A,A,A,L
LD L,A,A,(HL),(piOLOOP),A
INC L
LD A,(HL),(piOEND),A
LD BC,(EsLOOP),A,C,(piSLOOP),A
ADD A,B
LD (piSEND),A
CALL OUT4
LD HL,EDORbf
ESMPadr=$+1
LD DE,0
LD BC,256
LDIR
CALL PIANO
CALL TSTFIRE
JNC EDSMP0
CALL DOWNMER
POP HL
SMPQU
LD DE,(EsLOOP)
LD A,D,B,E
JP ORNQ
EDTXT
LD (TXTSCR),DE,(TXTLEN),A
EDTXw ;LD A,#7F
CALL ANYKEY
RRA
JNC EDTXw
PUSH HL
LD DE,TXTBUF,(CURADR),DE,BC,32
LDIR
XOR A
LD (TXTX),A
TXTSCR=$+1
EDTX0 LD DE,0
TXTLEN=$+1
LD B,0
PUSH BC,DE
CALL CURPRTXADD
CALL RESHALT
JZ $-3
POP DE,BC
CALL PRTXADDBUF
LD A,(23560)
CP 6
JNZ EDTXn6
LD HL,#5C6A,A,8
XOR (HL)
LD (HL),A
EDsholk CALL SHOLK
JR EDTX0
EDTXn6 CP 13
JZ EDTXQ
CP 12
JZ EDTXdel
CP 8
JZ EDTXdel
CP 9
JZ EDTXrgt
CP 32
JC EDTX0
EDTXrgt LD B,A
RLA
JC EDTX0
TXTX=$+1
LD C,0,A,(TXTLEN)
INC C
CP C
JC EDTX0
LD A,C,(TXTX),A
CURADR=$+1
LD HL,TXTBUF
LD A,B
CP 9
JZ $+3
LD (HL),B
INC HL
LD (CURADR),HL
LD A,(TXTLEN),C,A,A,(TXTX)
SUB C
JNZ EDsholk
EDTXQIF=$+1
CP 0
JZ EDsholk
LD A,(TXTLEN),B,A,DE,(TXTSCR)
CALL PRTXADDBUF
EDTXQ LD HL,TXTBUF
POP DE
LD BC,(TXTLEN),B,0
LDIR
LD A,8,(#5C6A),A
RET
EDTXdel
LD HL,TXTX,B,(HL)
DEC B
JP M,EDTX0
LD (HL),B,HL,(CURADR)
DEC HL
CP 8
JZ $+4
LD (HL),32
LD (CURADR),HL
JR EDsholk
IFN alasm
LOADASM
LD A,#51
LD HL,NAMASM1
LD DE,#C000
CALL LOADNAM
LD A,#57
LD HL,NAMASM2
LD DE,#C000
CALL LOADNAM
LD A,#57
LD HL,NAMSTS
LD DE,#DB00
CALL LOADNAM
LD A,#D6
LD HL,NAMASM4
LD DE,#C000
LOADNAM
PUSH DE
CALL LDOUTA
LD C,19
CALL #3D13 ;copy desc
LD C,#A
CALL #3D13
LD A,C
INC C
POP HL
RET Z
PUSH HL
LD C,8
CALL #3D13 ;load file desc
POP HL;#C000
LD C,#E
LD A,3
JP #3D13 ;load file
NAMASM1
DB "alasm_64C"
NAMASM2
DB "olasm_64C"
NAMSTS
DB "sts7 C"
NAMASM4
DB "playFAS4H"

RESALM
DISP #5B80
DI
IM 1
LD H,#40
LD A,#52
CALL RESM2PG
LD A,#54
CALL RESM2PG
LD D,#80
LD A,#10
CALL RESPG2M
LD H,#80
LD A,#55
CALL RESM2PG
LD A,#51
CALL RESOUTA
CALL #C000
POP AF ;в аласме зачем-то лишний PUSH
LD D,#80
LD A,#55
CALL RESPG2M
LD H,#80
LD A,#10
CALL RESM2PG
LD D,#80
LD A,#54
CALL RESPG2M
LD D,#40
LD A,#52
;CALL RESPG2M ;RET не туда
LD H,#C0
CALL RESOUTA
LD BC,#4000,L,C,E,C
LDIR
LD HL,IMVEC,(HL),IMER
CALL SETIM
IM 2
EI
RET
RESM2PG
LD D,#C0
RESL40 CALL RESOUTA
LD BC,#4000,L,C,E,C
LDIR
RET
RESPG2M
LD H,#C0
JR RESL40
RESOUTA
LD BC,#7FFD
OUT (C),A
RET
ENT
LDOUTA
LD BC,#7FFD
OUT (C),A
RET
ENDIF

INCLUDE "pt3*",#44
INCLUDE "pt5*",#86
INCLUDE "pt6*",#84
INCLUDE "ptmsg*",#87

DISPLAY "FREE2=",plaer-$
IF0 plaer-$<1&1
DS plaer-$
ENDIF
ss ORG #5D3B
DB 6
DB 7
DB %01010000;bord,bits
;D7=joy 0/1F
;D6=poion 0/FF
;D5=SHOLK 0/C9
;D4=playon 0/FF
;curite DB 2;NU
ORG END
DB 1 ;FRQn
ORG #5BFA
CALL 3435
JP nenado

JZ EDTXrgt
CP 32
JC EDTX0
EDTXrgt LD B,A
RLA
JC EDTX0
TXTX=$+1
LD C,0,A,(TXTLEN)
INC C
CP C
JC EDTX0
LD A,C,(TXTX),A