Difference between revisions of "PROTRACKER372 JP MKPT37 H"

From MSX MUSIC WIKI
Jump to: navigation, search
(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...")
(Tags: Mobile edit, Mobile web edit)
 
(Tags: Mobile edit, Mobile web edit)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
mkpt37  C��9Т�Уp�        ORG #FF32,2
+
mkpt37  C��9Т�Уp�         
        IF0 {4>4+{$}}-#BF43
+
ORG #FF32,2
make    DISPLAY "please wait,compile&save
+
        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  
 
         ENDIF  
alasm=0;1
+
fixtoENV=1
+
        ORG #5CDD,0
hidearr=1
+
        DB "PT3.72  B"
ts=1
+
        INCLUDE "B:m2hr*",#C0
pttfc=0;#55
+
        ORG #5BFB
PATS=48
+
ink1    DB #30
SMPX=0;4
+
pap1    NOP  
SMPY=2;5
+
ink2    DB #38
SMPH=19;по WBUFTOP=#FFxx INPAGE опр-ет edsmp!
+
pap2    NOP  
skipABC=1;иначе в PLAYER стрелка исчезает
+
bord    NOP  
cl12345=1
+
IMVEC=#8000 ;todo #BE00
bemol=1
+
TXTBUF=23698
tab=1
+
OOOO=23698
ply=0;компиляция с плейером
+
BUF=#6F60;#480+18zeros
cmpilmnu=0|ply
+
l5b00=#6000;#5B00 глючит(Risk);CAT низя;длины треков при compile
frqrosh=1
+
                              ;не более 128 треков(нет проверки!)
mkvol=1
+
CATfilt=BUF-#500 ;,#500 todo pg4/pg7
process=1;1
+
CATdos=BUF-#480 ;,#900
portres=1
+
BUFEND=BUF+#4A0
goodpak=1
+
SPRAR=BUFEND
about=1;1
+
TVOL=#BE00
tstPT=0
+
;many
savset=0
+
  EDORbf=#7100;(64)
set=1;1
+
;1
opcompl=0
+
  bf240=#7180;EDPOSssQ BUF(#240)
ead=#5965 ;место inv для прозр.ENV
+
FONT=#7400;%512(лежит на 256 выше)
SMPATR=SMPY<5+#5820+SMPX
+
FNTDEC=#7800;(512)
SMPBOT=SMPH<5+SMPATR
+
FNTNOTE=FNTDEC+512;(256)
      IFN pttfc
+
TSMPSZ=#7B00;SMPLP,END(64)
        ORG #C000,pttfc
+
TPOSS=#7C00
tfcinclude
+
;10
        INCLUDE "pttfc",#85
+
TPATSZ=TPOSS+256;=0..63
tfmmuz
+
TORNSZ=#7DD0;ORNLP,END(32)
        INCBIN "tat*.t"
+
;2
      ENDIF
+
;убить?
 
+
  ARBUF=#7D80
        ORG #5CDD,0
+
;2(GO,AtoPAT)
        DB "PT3.72  B"
+
;убить?
        INCLUDE "B:m2hr*",#C0
+
  TPATS=#7E00;pg,E,D
        ORG #5BFB
+
;5
ink1    DB #30
+
;убить?
pap1    NOP  
+
  TLINES=#7F00;L/2*18(128)
ink2    DB #38
+
;2+1
pap2    NOP  
+
;убить
bord    NOP  
+
  TORNS=#7FD0;(32).TORNS=.TORNSZ
IMVEC=#8000 ;todo #BE00
+
FrTab=#BF00
TXTBUF=23698
+
        INCLUDE "PTcon*",#C7
OOOO=23698
+
modC=mod
BUF=#6F60;#480+18zeros
+
        ORG #6100
l5b00=#6000;#5B00 глючит(Risk);CAT низя;длины треков при compile
+
begin
                            ;не более 128 треков(нет проверки!)
+
;3тут+4(STPAT0,COPYU,CMpores,TransPP)
CATfilt=BUF-#500 ;,#500 todo pg4/pg7
+
AtoPAT
CATdos=BUF-#480 ;,#900
+
;HL,A на выходе не важны
BUFEND=BUF+#4A0
+
;C надо сохранять для COPYU
SPRAR=BUFEND
+
AtoPnsJ JR AtoPns2
TVOL=#BE00
+
        CPL
;many
+
        ADD A,PATS;48
EDORbf=#7100;(64)
+
AtoPns2 LD L,A
;1
+
        ADD A,A
bf240=#7180;EDPOSssQ BUF(#240)
+
        ADD A,L
FONT=#7400;%512(лежит на 256 выше)
+
        LD L,A
FNTDEC=#7800;(512)
+
        LD H,'TPATS
FNTNOTE=FNTDEC+512;(256)
+
        LD A,(HL)
TSMPSZ=#7B00;SMPLP,END(64)
+
        CALL OUTME
TPOSS=#7C00
+
        INC L
;10
+
        LD E,(HL)
TPATSZ=TPOSS+256;=0..63
+
        INC L
TORNSZ=#7DD0;ORNLP,END(32)
+
        LD D,(HL)
;2
+
        RET
;убить?
+
SWPAYPP
ARBUF=#7D80
+
        LD BC,#FFFD
;2(GO,AtoPAT)
+
        IFN pttfc
;убить?
+
        RES 2,A
TPATS=#7E00;pg,E,D
+
        ENDIF
;5
+
        OUT (C),A
;убить?
+
sWPSNGPP
TLINES=#7F00;L/2*18(128)
+
        LD HL,ayblock
;2+1
+
        ;LD DE,ayblock2
;убить
+
        LD B,szayblock4
TORNS=#7FD0;(32).TORNS=.TORNSZ
+
SWPAY0
FrTab=#BF00
+
        DUP 4
        INCLUDE "PTcon*",#C7
+
        LD A,(HL)
modC=mod
+
        INC H
        ORG #6100
+
        LD E,(HL)
begin
+
        LD (HL),A
;3тут+4(STPAT0,COPYU,CMpores,TransPP)
+
        DEC H
AtoPAT
+
        LD (HL),E
;HL,A на выходе не важны
+
        INC L
;C надо сохранять для COPYU
+
        EDUP
AtoPnsJ JR AtoPns2
+
        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  
 
         CPL  
 
         ADD A,PATS;48
 
         ADD A,PATS;48
AtoPns2 LD L,A
+
         CALL iPATq
        ADD A,A
+
         LD A,(pat2)
        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  
 
         CPL  
         LD (HL),A
+
         ADD A,PATS;48
      OR A
+
        CALL iPAT2q
      LD A,32
+
        LD HL,TPATSZ
      JZ $+4
+
        LD DE,TPATSZ+PATS-1
      LD A,48;PATS
+
        LD B,PATS/2
        LD (ts48),A
+
SWPSNGL LD A,(DE)
        RET
+
        LD C,(HL)
ALLCHAN
+
        LD (HL),A
        LD HL,#4853
+
        LD A,C
        LD C,4
+
        LD (DE),A
        CALL INVSYMS
+
        INC L
        LD HL,chnall
+
        DEC E
        LD A,(HL)
+
        DJNZ SWPSNGL
        CPL
+
        LD A,(EPAT)
        LD (HL),A
+
        LD L,A
        RET
+
        LD A,(HL)
;10
+
        LD (PATLEN),A
GETnADR
+
      ;LD A,(PATLEN)
        LD A,B
+
       CALL IPATLQ
       CALL AtoPAT
+
        JP PRPATUU
        LD A,C
+
CHKTS
        ADD A,A
+
        LD A,(ts48)
        LD L,A
+
        LD HL,tson
        LD H,'TLINES
+
        CP 33 ;32=не TS
        LD A,(HL)
+
        SBC A,A ;#FF=не TS
        INC L
+
        CP (HL)
        LD H,(HL)
+
        RET NZ
        LD L,A
+
ONOFFTS
         ADD HL,DE
+
        LD HL,#486B
         RET
+
        LD C,3
;2(PT2PATS,PT3PATS)
+
        CALL INVSYMS
PATfrBUF
+
        LD HL,tson
         PUSH AF,HL
+
        LD A,(HL)
         LD L,A,H,'TPATSZ
+
        CPL
        DEC D
+
        LD (HL),A
        LD (HL),D
+
         OR A
        CALL aPATBUF
+
         LD A,32
        POP HL,AF
+
         JZ $+4
        RET
+
         LD A,48;PATS
;2(CLPATS,clPAT)
+
        LD (ts48),A
CLPAT
+
        RET
        CALL KILLBUF
+
ALLCHAN
      LD HL,97
+
        LD HL,#4853
      LD (BUF+3),HL
+
        LD C,4
      LD (BUF+8),HL
+
        CALL INVSYMS
      LD (BUF+13),HL
+
        LD HL,chnall
aPATBUF CALL AtoPAT
+
        LD A,(HL)
        LD HL,BUF
+
        CPL
        JR bUFLDIR
+
        LD (HL),A
;2(COPYU,CMPP)
+
        RET
PATtoBUF
+
;10
 +
GETnADR
 +
        LD A,B
 
         CALL AtoPAT
 
         CALL AtoPAT
         LD HL,BUF
+
        LD A,C
         EXD  
+
        ADD A,A
bUFLDIR LD BC,#480
+
        LD L,A
        LDIR  
+
        LD H,'TLINES
        JP OUT7
+
        LD A,(HL)
;3(CLPAT,PT2PATS,PT3PATS)
+
        INC L
KILLBUF
+
        LD H,(HL)
        PUSH HL
+
        LD L,A
        LD HL,BUF
+
        ADD HL,DE
        LD DE,BUF+1
+
        RET
        LD (HL),0
+
;2(PT2PATS,PT3PATS)
        LD BC,#47F
+
PATfrBUF
        LDIR  
+
        PUSH AF,HL
        POP HL
+
        LD L,A,H,'TPATSZ
        RET  
+
        DEC D
;2
+
        LD (HL),D
GETnPAT
+
        CALL aPATBUF
        LD A,(POS)
+
        POP HL,AF
GETnPAA
+
        RET
LOOP=$+1
+
;2(CLPATS,clPAT)
LENG=LOOP+1
+
CLPAT
        LD DE,#100
+
        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
 
         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
 
         LD C,A
        JC $+5
+
         LD A,B,(POS),A
         LD B,A,C,(HL)
+
        RET
        INC HL
+
;2(UPRnxPO,PRPAT)
         LD A,(HL)
+
ROLprPO
        INC HL
+
         ;LD A,(POS)
KSAPP2  LD (DE),A
+
        LD DE,(LENG)
        PUSH HL
+
        DEC A
        LD A,(HL)
+
        CP E
 +
        JC $+4
 +
        LD A,E
 +
        DEC A
 +
        LD E,A
 +
        LD D,'TPOSS
 
         EXA  
 
         EXA  
         LD H,D,L,E
+
         ;LD (POS),A
        INC DE
+
        LD A,(DE)
        JR KSAPP2G
+
        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
  
KSAPPb1 SRL A
+
==Windowマネージャ==
        LD C,(HL)
 
        JNC KSAPPn2
 
        LD C,A
 
        INC C
 
        LDIR
 
        JR KSAPP0
 
  
KSAPPb0 SRL A
+
WINDUM
        JC KSAPP01
+
        LD HL,DUMMY
        AND 7
+
WINDOW
        LD B,A
+
        CALL WINmema
        DEC HL
+
        LD (useadr),DE
        RLD
+
        LD (optadr),HL
        RRA
+
        DEC HL
        LD C,A
+
        LD A,(HL),(options),A
         LD A,B
+
        PUSH BC
KSAPPn2 LD B,A
+
        POP IX
         INC HL,HL
+
        LD A,#B7,(DOWNM),A
        LD A,(HL)
+
         CALL OUT4
        EXA
+
        LD D,(IX),E,(IX+1)
 +
        CALL DE2ATTR
 +
        LD (WINATR),HL
 +
         PUSH HL
 +
        CALL DE2SCR
 +
        LD (WINTOP),HL
 
         PUSH HL
 
         PUSH HL
        DEC HL
+
        CALL WINMEM
        LD A,E
+
        LD A,(IX),C,A
        SUB (HL)
+
        ADD A,A,A,A,A,A
        LD L,A
+
        LD (TSTXMIN),A,A,C
        LD A,D
+
        INC A
        SBC A,B
+
        ADD A,A
        LD B,0
+
        DEC A
        LD H,A
+
        LD (ADDX),A,A,(IX+1)
        INC BC
+
        INC A
KSAPP2G INC BC,BC
+
        LD (ADDY),A
        LDIR
+
        DEC A
        POP HL
+
        ADD A,A,A,A,A,A
        EXA
+
        LD (TSTYMIN),A,A,(IX+2)
        JR KSAPP1
+
        ADD A,A
KSAPP01
+
        DEC A
        SRL A
+
        LD (PRMRGT),A
        DEC A
+
        INC A
        LD C,B
+
        ADD A,A,A,A
        DEC BC
+
        LD (TSTXMAX),A
        JC KSAPP2
+
         POP HL ;WINTOP
        POP AF
+
        LD A,(IX+3)
        LD (DE),A
+
        PUSH AF
        LD HL,labc0
+
        ADD A,A,A,A,A,A
        LD DE,TPATSZ
+
        LD (TSTYMAX),A
        LD B,31
+
        POP AF
KSAlens LD A,(HL)
+
        SUB (IX+1)
        DEC A
+
        ADD A,A,A,A,A,A
        LD (DE),A
+
        LD (RMKHGT),A
        INC HL,DE
+
        DEC (IX+2)
        DJNZ KSAlens
+
        LD B,0
        CALL STSMP
+
WIN0    EXA
        LD HL,labdf
+
        PUSH HL
        LD A,(HL),(LOOP),A
+
        LD (HL),B,D,H,E,L
         INC L
+
        INC E
        LD DE,TTITLE
+
        LD A,(IX+2)
        LD C,25
+
        SUB (IX)
        LDIR
+
        LD (WINWID),A,C,A
        LD A,E,(STtit),A
+
        LDIR
        LD A,7,(STtitZ),A
+
        POP HL
        XOR A
+
        CALL DHL
        CALL STORN
+
        EXA
        LD A,1,(FRQn),A
+
        DEC A
        CALL OUT3
+
        JNZ WIN0
        LD HL,labf9
+
         POP HL ;WINATR
        LD DE,labc1
+
        LD A,(IX+4)
        LD B,96
+
        EXA
        LDIR
+
        LD A,(IX+3)
        JR LDSTPGO
+
        SUB (IX+1)
BIGso
+
        LD B,0
        LD A,33
+
WIN1    EXA
        LD HL,TSMPSZ+3
+
        PUSH HL
        LD DE,TSMPSZ+4
+
        LD (HL),A,D,H,E,L
        LD (HL),A
+
        INC E
        DEC A
+
WINWID=$+1
         CALL BIGsoQ
+
        LD C,0
        LD HL,TORNSZ+3
+
        LDIR  
        LD DE,TORNSZ+4
+
        POP HL
        LD (HL),A
+
        LD C,32
        XOR A
+
        ADD HL,BC
BIGsoQ  DEC L
+
        EXA
        LD (HL),A
+
        DEC A
        LD BC,30
+
        JNZ WIN1
        LDIR  
+
        LD A,(IX+2)
        RET
+
        INC (IX+2)
LDSTPP
+
        SUB (IX)
      LD A,32
+
        LD C,A,B,0
      LD (ts48),A
+
        PUSH BC
        CALL CLORNSM
+
        LD HL,(WINTOP)
        CALL BIGso
+
        CALL FILM1,DHL
        INC A
+
RMKHGT=$+1
        LD (FRQn),A
+
        LD D,0
        LD A,(labc0)
+
        DEC D
        DEC A
+
        LD B,D,C,1
      ;LD C,PATS-1
+
        CALL VERLIN
      ;LD DE,TPATSZ+1
+
        LD B,D,HL,(WINTOP)
      ;LD H,D,L,B
+
        DEC B
      ;LD (HL),A
+
        CALL DHL
      ;LDIR
+
        LD C,#80
      CALL FILLENS
+
        CALL VERLIN
        LD (PATLEN),A
+
        POP BC
        CALL STSMP
+
FILM1  LD D,H,E,L,(HL),-1
        LD A,TTITLE,(STtit),A
+
        INC DE
        LD A,31,(STtitZ),A
+
        LDIR
        LD A,'LOOP
+
        RET
        CALL STORN
+
VERLIN  LD (HL),C
        CALL OUT3
+
        CALL DHL
LDSTPGO LD A,(labbf),(TEMPO),A
+
        DJNZ $-4
        LD A,(la99e)
+
        RET
        INC A
+
;2
        LD (LENG),A
+
WINmema
        LD HL,la79e
+
        LD A,(options),(Oldopt),A
        LD DE,TPOSS
+
        PUSH HL
      LD A,E
+
        LD HL,(optadr),(Oldoad),HL
LDSTpos DEC (HL)
+
        LD HL,(useadr),(Olduse),HL
        LDI
+
        POP HL
        INC HL
+
        RET
        DEC A
+
WINMEM
        JNZ LDSTpos
+
  WBUFTOP=$+1
        LD HL,labc1
+
        LD HL,winbuf
        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
 
         PUSH HL
      CALL AtoPAT
+
Oldopt=$+1
        LD HL,EDORbf
+
        LD (HL),0
        PUSH DE
+
        INC HL
        POP IX
+
Oldoad=$+1
        LD B,64
+
        LD DE,0
STPAT1 PUSH BC
+
        CALL WMEMPP
      INC DE,DE,DE
+
  Olduse=$+1
        PUSH IX
+
        LD DE,0
        LD (IX),C
+
        CALL WMEMPP
        LD (IX+1),C
+
ADDY=$+1
        LD (IX+2),C
+
ADDX=$+2
        LD B,3
+
        LD DE,0
STPAT2  PUSH BC,DE
+
        CALL WMEMPP
        XOR A
+
        LD A,(PRMRGT)
        LD (DE),A
+
        LD (HL),A
        INC DE
+
        INC HL
        LD (DE),A
+
WINATR=$+1
        INC DE
+
        LD DE,0
        INC DE
+
        CALL WMEMPP
        LD (DE),A
+
        LD A,(IX+2)
        INC DE
+
        SUB (IX)
        LD (DE),A
+
        INC A
      EXD  
+
        LD (HL),A,C,A
      EX (SP),HL
+
        INC HL
      EXD  
+
        LD A,(IX+3)
        CALL STPAPP
+
        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
 
         POP DE
      INC DE
+
WMEMPP  LD (HL),E
         POP BC
+
        INC HL
        DJNZ STPAT2
+
        LD (HL),D
        POP IX
+
        INC HL
        LD C,18
+
        LD (WBUFTOP),HL
        ADD IX,BC
+
        RET
         POP BC
+
CLOSWIN
         DJNZ STPAT1
+
         CALL OUT4
        POP HL,AF
+
        LD HL,(WBUFTOP)
        INC A
+
        DEC HL
        AND 31
+
        LD A,(HL)
        JNZ STPAT0
+
        DEC HL
STloop=$+2
+
        LD L,(HL),H,A
        LD (LOOP),A
+
         OR L
        LD (POS),A
+
         RET Z
STtit=$+1
+
        LD (WBUFTOP),HL
        LD HL,TTITLE
+
        PUSH BC
STtitZ=$+1
+
        LD DE,options
        LD BC,31
+
        LDI
        CALL STtitQ
+
        LD DE,optadr
        LD HL,TAUTHOR
+
        LDI
        LD C,31
+
        LDI
STtitQ  LD D,H
+
        LD DE,useadr
         LD E,L
+
        LDI
         INC E
+
        LDI
         LD (HL),32
+
        LD DE,ADDY
         LDIR
+
        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  
 
         RET  
 
+
;6
STSMP  CALL OUT4
+
WAITNOK
         LD HL,la000
+
         CALL HALTER
        LD DE,_c000+256
+
        CALL ANYKEY
        LD A,15
+
        CPL
STSMP0  PUSH AF
+
        AND 31
        PUSH HL
+
        JNZ WAITNOK
        PUSH DE
+
        RET
        CALL STSMPP
+
LDKSAPP
         LD A,(IX+#60)
+
         LD A,32
         LD H,(IX+#61)
+
         LD (ts48),A
        OR A
+
        CALL CLORNSM
        JZ STSMPQ
+
        CALL BIGso
        DEC A
+
        CALL OUT3
        INC H
+
         LD BC,(#5CE8),HL,#BFFF,D,L,E,L
         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
 
         ADD HL,BC
         POP AF
+
         LDDR
         DEC A
+
         INC DE
        JNZ STSMP0
 
        RET
 
 
 
STSMPP  PUSH HL
 
        POP IX
 
        LD (STSMbse),HL
 
 
         EXD  
 
         EXD  
        LD B,32
+
        LD DE,la000,A,(HL)
STSMPP0 LD A,64
+
        PUSH AF
        SUB B
+
        INC HL
        ADD A,A
+
KSAPP0  LD A,(HL)
        LD (STSMix1),A
+
KSAPP1  INC HL
        INC A
+
        LD B,0
        LD (STSMix2),A
+
        SRL A
        PUSH IX
+
        JC KSAPPb0
STSMbse=$+2
+
        RRA
        LD IX,0
+
        JC KSAPPb1
STSMix1=$+2
+
        RRA
        LD E,(IX)
+
        LD C,A
STSMix2=$+2
+
        JC $+5
        LD D,(IX+1)
+
        LD B,A,C,(HL)
        POP IX
+
        INC HL
        BIT 4,D
+
        LD A,(HL)
        RES 4,D
+
        INC HL
        EXD
+
KSAPP2  LD (DE),A
        CALL Z,NEGHL
+
        PUSH HL
        EXD
+
        LD A,(HL)
        LD (HL),E
+
        EXA
        INC L
+
        LD H,D,L,E
        LD (HL),D
+
        INC DE
        INC L
+
        JR KSAPP2G
        LD A,(IX+#20),E,A
+
        AND 31
+
KSAPPb1 SRL A
        RL E
+
        LD C,(HL)
        JNC $+4
+
        JNC KSAPPn2
        LD A,#40
+
        LD C,A
        RL E
+
        INC C
        RLA
+
        LDIR
        RRCA
+
        JR KSAPP0
ksaON=$+1
+
        LD D,0
+
KSAPPb0 SRL A
        DEC D
+
        JC KSAPP01
        INC D
+
        AND 7
        JZ $+8
+
        LD B,A
        RL E
+
        DEC HL
        JC $+4
+
        RLD
        OR #20
+
        RRA
        LD (HL),A
+
        LD C,A
        INC L
+
        LD A,B
         LD A,(IX),(HL),A
+
KSAPPn2 LD B,A
        INC L
+
        INC HL,HL
         INC IX
+
        LD A,(HL)
         DJNZ STSMPP0
+
        EXA
         INC L,L
+
        PUSH HL
         LD (HL),96
+
        DEC HL
         EXD
+
        LD A,E
         RET
+
        SUB (HL)
 
+
        LD L,A
STORN  LD (STloop),A
+
        LD A,D
        LD A,(ksaON)
+
        SBC A,B
        LD HL,la9bf
+
        LD B,0
        LD DE,ORNS+64
+
        LD H,A
         OR A
+
        INC BC
        JNZ KSAORN
+
KSAPP2G INC BC,BC
        LD A,15
+
        LDIR
STORN0  LD BC,32
+
        POP HL
        LDIR  
+
        EXA
        EXD
+
        JR KSAPP1
        LD C,32
+
KSAPP01
        ADD HL,BC
+
        SRL A
        EXD
+
        DEC A
         DEC A
+
        LD C,B
        JNZ STORN0
+
        DEC BC
        RET
+
        JC KSAPP2
 
+
        POP AF
KSAORN  LD A,1
+
        LD (DE),A
KSAORN0 PUSH AF
+
        LD HL,labc0
        LD BC,TORNSZ
+
        LD DE,TPATSZ
         ADD A,A,A,C
+
        LD B,31
        LD C,A
+
KSAlens LD A,(HL)
        LD A,(HL),(BC),A
+
        DEC A
        INC C
+
        LD (DE),A
        INC HL
+
        INC HL,DE
        LD A,(HL)
+
        DJNZ KSAlens
        INC A
+
        CALL STSMP
        LD (BC),A
+
        LD HL,labdf
        INC HL
+
        LD A,(HL),(LOOP),A
        LD BC,30
+
        INC L
        LDIR
+
        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  
 
         EXD  
         LD C,34
+
         EX (SP),HL
        ADD HL,BC
 
 
         EXD  
 
         EXD  
        POP AF
+
        CALL STPAPP
        INC A
+
        POP DE
        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 DE
        INC HL
+
        POP BC
saG    LD A,(HL)
+
        DJNZ STPAT2
        RLA  
+
        POP IX
        RLA
+
        LD C,18
        RLA
+
        ADD IX,BC
        AND #38
+
        POP BC
        LD (DE),A
+
        DJNZ STPAT1
        INC DE
+
        POP HL,AF
         DJNZ sa
+
        INC A
         LD C,(HL)
+
        AND 31
        RL C
+
        JNZ STPAT0
        SBC A,A
+
STloop=$+2
        AND 31
+
        LD (LOOP),A
        LD (joy),A
+
        LD (POS),A
        RL C
+
STtit=$+1
        SBC A,A
+
        LD HL,TTITLE
        LD (poion),A
+
STtitZ=$+1
        RL C
+
        LD BC,31
        SBC A,A
+
        CALL STtitQ
        AND 201
+
        LD HL,TAUTHOR
        LD (SHOLK),A
+
        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
 
         RL C
 
         SBC A,A
 
         SBC A,A
         LD (playon),A
+
         AND 201
      ;LD A,(HL),(poion),A
+
        LD (SHOLK),A
        CALL SETCOLS ;EI
+
          RL C
        LD A,pg7
+
          SBC A,A
        CALL MHEXFNTpg
+
          LD (playon),A
        LD HL,TSMPSZ+1,DE,TSMPSZ+2,C,62
+
        ;LD A,(HL),(poion),A
        LD (HL),L;1
+
        CALL SETCOLS ;EI
        DEC L
+
        LD A,pg7
        PUSH HL
+
        CALL MHEXFNTpg
        LD (HL),B
+
        LD HL,TSMPSZ+1,DE,TSMPSZ+2,C,62
        LDIR  
+
        LD (HL),L;1
        POP HL
+
        DEC L
        LD DE,TORNSZ,C,E;32
+
        PUSH HL
        LDIR  
+
        LD (HL),B
      ;LD DE,TPATSZ+1,H,D,L,B,(HL),63
+
        LDIR  
      ;LD C,PATS-1
+
        POP HL
      ;LDIR
+
        LD DE,TORNSZ,C,E;32
      LD A,63
+
        LDIR  
      CALL FILLENS
+
        ;LD DE,TPATSZ+1,H,D,L,B,(HL),63
        CALL CLPOS
+
        ;LD C,PATS-1
        LD IX,TPATS
+
        ;LDIR
        LD A,pg6;#10
+
        LD A,63
        LD HL,42-PATS*#480
+
        CALL FILLENS
        LD BC,3,DE,#480
+
        CALL CLPOS
        JR MpA0
+
        LD IX,TPATS
MpatADS LD H,#C1
+
        LD A,pg6;#10
MpA0    LD (IX),A,(IX+1),L,(IX+2),H
+
        LD HL,42-PATS*#480
        ADD IX,BC,HL,DE
+
        LD BC,3,DE,#480
        JNC MpA0
+
        JR MpA0
        INC A
+
MpatADS LD H,#C1
        CP #12
+
MpA0    LD (IX),A,(IX+1),L,(IX+2),H
        JNZ $+3
+
        ADD IX,BC,HL,DE
        INC A
+
        JNC MpA0
        CP #15
+
        INC A
        JNZ MpatADS
+
        CP #12
        LD HL,TLINES,D,L,E,L,C,18,A,65
+
        JNZ $+3
MTLIN  LD (HL),E
+
        INC A
        INC L
+
        CP #15
        LD (HL),D
+
        JNZ MpatADS
        INC L
+
        LD HL,TLINES,D,L,E,L,C,18,A,65
        EXD  
+
MTLIN  LD (HL),E
        ADD HL,BC
+
        INC L
        EXD  
+
        LD (HL),D
        DEC A
+
        INC L
        JNZ MTLIN
+
        EXD  
        LD DE,ORNS,HL,TORNS,C,64,A,16
+
        ADD HL,BC
MTORN  LD (HL),E
+
        EXD  
        INC L
+
        DEC A
        LD (HL),D
+
        JNZ MTLIN
        INC L
+
        LD DE,ORNS,HL,TORNS,C,64,A,16
        EXD  
+
MTORN  LD (HL),E
        ADD HL,BC
+
        INC L
        EXD  
+
        LD (HL),D
        DEC A
+
        INC L
        JNZ MTORN
+
        EXD  
        INC A
+
        ADD HL,BC
        LD (#5C0A),A
+
        EXD  
        CALL CLORNSM
+
        DEC A
        CALL COPYFRQ
+
        JNZ MTORN
        CALL CLPATS
+
        INC A
        CALL MKSCROL
+
        LD (#5C0A),A
      IFN alasm
+
        CALL CLORNSM
      CALL LOADASM
+
        CALL COPYFRQ
      ENDIF  
+
        CALL CLPATS
        LD HL,IMVEC,(HL),IMER
+
        CALL MKSCROL
        LD (IY+48),8
+
        IFN alasm
        CALL SETIM
+
        CALL LOADASM
        DISPLAY $,">#8100
+
        ENDIF  
        IM 2
+
        LD HL,IMVEC,(HL),IMER
        EI  
+
        LD (IY+48),8
        LD HL,NLOOP
+
        CALL SETIM
        PUSH HL
+
        DISPLAY $,">#8100
        JP EDPAT
+
        IM 2
SETIM
+
        EI  
        LD BC,256,D,H,E,B,A,H
+
        LD HL,NLOOP
        LDIR  
+
        PUSH HL
         LD I,A
+
        JP EDPAT
         RET  
+
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
  
        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 "----
+
FIRE
AUTO2  DB "����
+
;NZ=y
LINESon DS 9,#7F
+
      ;CALL 8026
NLOOP
+
      ;JNC fIREcs
         LD (IY+48),8
+
        LD A,#7F
      CALL RESHALT
+
        IN A,(-2)
         LD HL,NLOOP
+
        RRA
        PUSH HL
+
fIREOK  DEC A
        JZ NLOONK
+
         JNC FIREYES
        CP "W
+
fIREcs  LD A,#FA
        JP Z,EDSONG
+
MOUSF  IN A,(#DF)
         SUB 13
+
        RRA
         JP Z,PLSONG
+
         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
 
         DEC A
        JP Z,EDPAT
+
         RET Z  ;Z=нет
NLOONK  CALL JPITEM
+
        LD A,0 ;NZ=да
DOWNMER LD A,#6F,(DOWNM),A
+
        LD (ARROWt),A
        RET
+
        ENDIF  
FIRE
+
        RET  
;NZ=y
+
CANCEL
      ;CALL 8026
+
        LD A,#BF
      ;JNC fIREcs
+
        IN A,(-2)
        LD A,#7F
+
        RRA  
        IN A,(-2)
+
        RET NC
        RRA
+
CANCEL2 LD A,#FA
fIREOK  DEC A
+
MOUSF2  IN A,(#DF)
      JNC FIREYES
+
        RRA  
fIREcs  LD A,#FA
+
        RRA  
MOUSF  IN A,(#DF)
+
        RET  
        RRA
+
CLPOS
      JNC FIREYES
+
        IF0 cl12345
        RRA
+
        LD DE,TPOSS+1
        JC fIREKJ
+
        LD BC,255
        LD A,(ITEM)
+
        LD H,D,L,B
        CP DIVNO+1
+
        LD (HL),L
        JZ fIREOK
+
        LDIR
fIREKJ  CALL KEMPJOY
+
        RET
        AND 16
+
        ELSE
         RET Z
+
        LD HL,TPOSS
FIREYES
+
        LD BC,PATS*255+255
      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
 
         LD (HL),L
         LDIR
+
         INC L
        RET
+
        DJNZ $-2
      ELSE
+
        LD D,H,E,L
        LD HL,TPOSS
+
        INC E
      LD BC,PATS*255+255
+
        LD (HL),B
      LD (HL),L
+
        LDIR  
      INC L
+
        RET  
      DJNZ $-2
+
        ENDIF  
        LD D,H,E,L
+
MOVD0A0
        INC E
+
        LD (movd0a0),A
        LD (HL),B
+
        CALL OUT7
        LDIR  
+
        LD HL,la000,(LDADR),HL
        RET  
+
        LD DE,ld000,BC,#2000
      ENDIF  
+
        LDIR  
MOVD0A0
+
OUT3    LD A,pg3
        LD (movd0a0),A
+
        JR OUTME
        CALL OUT7
+
OUT7    LD A,pg7
        LD HL,la000,(LDADR),HL
+
        JR OUTME
        LD DE,ld000,BC,#2000
+
OUT6    LD A,pg6
        LDIR  
+
        JR OUTME
OUT3    LD A,pg3
+
OUT4    LD A,pg4
        JR OUTME
+
OUTME
OUT7    LD A,pg7
+
        LD (pg),A
        JR OUTME
+
        PUSH BC
OUT6    LD A,pg6
+
        LD BC,FD
        JR OUTME
+
        OUT (C),A
OUT4    LD A,pg4
+
        POP BC
OUTME
+
        RET
        LD (pg),A
+
        PUSH BC
+
PRADDPP
        LD BC,FD
+
        PUSH HL
         OUT (C),A
+
        LD HL,(ADDY)
         POP BC
+
        ADD HL,DE
        RET  
+
        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  
  
PRADDPP
+
==入力判定 カーソルキー==
        PUSH HL
 
        LD HL,(ADDY)
 
        ADD HL,DE
 
        EXD
 
        POP HL
 
        RET
 
  
PRTXADDBUF
+
  ARROW
        LD HL,TXTBUF
+
  ARXY=$+1
PRTXADD CALL PRADDPP
+
  ARX=$+2
PRTXT  LD A,(HL)
+
        LD HL,#7707
        INC HL
+
        IFN hidearr
        CALL PR4X8
+
        LD BC,0
        INC D
+
        LD ($-2),HL
        DJNZ PRTXT
+
        XOR A
        RET
+
        SBC HL,BC
 
+
        ADD HL,BC
PRMEMO LD HL,T____
+
        JNZ ARROWsT
PRMENU
+
        LD (ARSCR+1),A
        CALL PRADDPP
+
ARROWt=$+1
PRMNU0 LD A,(HL)
+
        LD A,0
        CP 6
+
        DEC A
        JNZ PRMNUN6
+
        RET Z
        INC HL
+
ARROWsT
        LD D,(HL)
+
        LD (ARROWt),A
        INC HL
+
        ENDIF  
        LD E,(HL)
+
        LD C,H,A,L
        INC HL
+
        CALL 8880
        CALL PRADDPP
+
        LD (ARSCR),HL
        LD A,(HL)
+
        EXD  
PRMNUN6 PUSH AF
+
        RRCA  
        CALL PR4X8
+
        RRCA  
        INC HL
+
        RRCA  
        LD A,D
+
        LD L,A,H,'SPRAR,BC,ARBUF
        INC A
+
ARR0  DUP 2
PRMRGT=$+1
+
        LD A,(DE),(BC),A
        CP 62
+
        AND (HL)
        JNZ $+6
+
        INC L
        LD A,(ADDX)
+
        OR (HL)
        INC E
+
        INC L
        LD D,A
+
        LD (DE),A
        POP AF
+
        INC C,E
        RLA
+
        EDUP  
        JNC PRMNU0
+
        ORG $-1
        RET
+
        DEC E
RESHALT
+
        CALL DDE
        RES 5,(IY+1)
+
        LD A,L
HALTER
+
        AND 31
      CALL ARROW
+
        JNZ ARR0
HALTnAR
+
        RET  
options=$+1
+
        LD DE,mains
+
RIGHT  LD A,#DF
        LD BC,(ARXY)
+
        IN A,(-2)
optadr=$+1
+
        RRA  
        LD HL,MENUCOO
+
        CALL C,KEMPJOY
OPTER0 INC D
+
        RRA  
        LD A,B
+
        RET NC
        CP (HL)
+
        LD A,(ARX)
        INC HL
+
        INC C
        JP C,OPTI3
+
        ADD A,B
        LD A,C
+
RIGHTU  JNC $+4
        CP (HL)
+
        LD A,-9
        JP C,OPTI3
+
        CP -8
        INC HL
+
        JNC $-4
        LD A,B
+
L14    LD (ARX),A
        CP (HL)
+
        RET  
        INC HL
+
MOUSER  PUSH BC,HL
        JP NC,OPTI1
+
        LD HL,(ARXY)
        LD A,C
+
        LD A,-5
        CP (HL)
+
        IN A,(#DF)
        JP NC,OPTI1
+
OLDX    LD E,0,(OLDX+1),A
        LD A,D
+
        SUB E
        DEC HL,HL,HL
+
        JP P,MPX
        LD (ITEMADR),HL
+
        ADD A,H
        JR OPTQ
+
        CCF  
OPTI3  INC HL,HL
+
        CALL LEFTU
OPTI1  INC HL
+
        JR MXQ
        DEC E
+
MPX    ADD A,H
        JP NZ,OPTER0
+
        CALL RIGHTU
        LD A,-1
+
MXQ    LD A,-1
OPTQ    LD (ITEM),A
+
        IN A,(#DF)
ITEM=$+1
+
OLDY    LD E,0,(OLDY+1),A
        LD A,-1
+
        SUB E
        INC A
+
        NEG  
        CALL NZ,OP_INV
+
        JP P,MPY
        HALT
+
        ADD A,L
      CALL RE
+
        JC $+3
fillpat=$+1
+
        XOR A
        LD A,#68
+
        SUB L
filladr=$+1
+
MPY    ADD A,L
        LD HL,0
+
        LD (ARXY),A
fillN=$+1
+
        POP HL,BC
        LD C,1
+
LEFT    LD A,#DF
        CALL FILLPP
+
        IN A,(-2)
      LD A,7,(#5810),A,(#5890),A,(#58B0),A
+
        RRA
      LD (filladr+1),A
+
        RRA
      CALL OUT6
+
        CALL C,KEMPJOY
        XOR A
+
        AND 2
NOPKA=$+1
+
        LD A,(ARX)
        CP 0 ;fire
+
        JZ $+4
        CALL GETAYER
+
        INC C
BIT5
+
        SUB B
        BIT 5,(IY+1)
+
LEFTU  JNC $+3
        LD A,(23560)
+
        XOR A
        RET
+
        JR L14
RE
+
UP      LD A,#FB
        PUSH AF,BC,DE,HL
+
        IN A,(-2)
ARSCR=$+1
+
        RRA
        LD DE,0,HL,ARBUF,BC,#8FF
+
        CALL C,KEMPJOY
RE0    LDI
+
        AND 8
        LDI
+
        RET Z
        DEC DE,DE
+
        LD A,(HL)
        CALL DDE
+
        SUB B
        DJNZ RE0
+
        JC $+6
        POP HL,DE,BC,AF
+
        CP 4
        RET
+
        JNC $+4
ARROW
+
        LD A,4
ARXY=$+1
+
L27    LD (HL),A
ARX=$+2
+
        INC C
        LD HL,#7707
+
        RET
      IFN hidearr
+
DOWN    LD A,#FE
      LD BC,0
+
        IN A,(-2)
        LD ($-2),HL
+
        RRA
        XOR A
+
        CALL C,KEMPJOY
        SBC HL,BC
+
        AND 4
        ADD HL,BC
+
        RET Z
        JNZ ARROWsT
+
        LD A,#EF
      LD (ARSCR+1),A
+
        IN A,(-2)
ARROWt=$+1
+
        CPL
        LD A,0
+
        AND 31
        DEC A
+
        RET NZ ;cs+0..6
        RET Z
+
        LD A,#F7
ARROWsT
+
        IN A,(-2)
      LD (ARROWt),A
+
        CPL
      ENDIF  
+
        AND 31
        LD C,H,A,L
+
        RET NZ ;cs+1..5
        CALL 8880
+
        LD A,#7F
        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)
 
         IN A,(-2)
        RRA
 
        RRA
 
        CALL C,KEMPJOY
 
 
         AND 2
 
         AND 2
        LD A,(ARX)
+
         RET Z ;Ext
      JZ $+4
+
        LD A,(HL)
      INC C
+
        ADD A,B
        SUB B
+
        JR L27
LEFTU  JNC $+3
+
MANAGE
        XOR A
+
        XOR A
        JR L14
+
        LD (NOPKA),A
UP      LD A,#FB
+
        CALL FIRE
        IN A,(-2)
+
        LD A,9,B,1
        RRA
+
        JZ L2
        CALL C,KEMPJOY
+
L3      LD A,1
        AND 8
+
        DEC A
         RET Z
+
        JNZ L6
        LD A,(HL)
+
        CPL  
        SUB B
+
        LD (NOPKA),A
        JC $+6
+
TIMER  LD A,9
        CP 4
+
        DEC A
        JNC $+4
+
        JNZ $+3
        LD A,4
+
        INC A
L27    LD (HL),A
+
        LD B,A
        INC C
+
L2      LD (TIMER+1),A
        RET
+
        LD A,B
DOWN    LD A,#FE
+
L6      LD (L3+1),A
        IN A,(-2)
+
SPEED  LD BC,#101
        RRA
+
CALLER  CALL MOUSER
        CALL C,KEMPJOY
+
        CALL RIGHT
        AND 4
+
        LD HL,ARXY
        RET Z
+
        CALL UP
        LD A,#EF
+
        CALL DOWN
        IN A,(-2)
+
DOWNM=$+1
        CPL
+
        LD A,#6F
        AND 31
+
        CP (HL)
        RET NZ ;cs+0..6
+
        CALL C,L27
        LD A,#F7
+
        LD A,1
        IN A,(-2)
+
        DEC C
        CPL
+
        JZ L9
        AND 31
+
        LD A,1
        RET NZ ;cs+1..5
+
        RLCA  
      LD A,#7F
+
        LD ($-2),A
      IN A,(-2)
+
        RET NC
      AND 2
+
        LD A,(SPEED+2)
      RET Z ;Ext
+
        INC A
        LD A,(HL)
+
        CP 7
        ADD A,B
+
        RET Z
        JR L27
+
L9      LD (SPEED+2),A
MANAGE
+
        RET  
        XOR A
+
;5
        LD (NOPKA),A
+
KEMPJOY
        CALL FIRE
+
        XOR A
        LD A,9,B,1
+
        IN A,(31)
        JZ L2
+
joy=$+1
L3      LD A,1
+
        AND 0
        DEC A
+
        RET  
        JNZ L6
+
;1
        CPL  
+
OP_INV
        LD (NOPKA),A
+
ITEMADR=$+1
TIMER  LD A,9
+
        LD HL,0
        DEC A
+
        LD B,(HL),D,B
        JNZ $+3
+
        INC HL
        INC A
+
        LD C,(HL)
        LD B,A
+
        INC HL
L2      LD (TIMER+1),A
+
        LD A,(HL)
        LD A,B
+
        CP -1
L6      LD (L3+1),A
+
        JNZ $+3
SPEED  LD BC,#101
+
        DEC B
CALLER  CALL MOUSER
+
        SUB B
        CALL RIGHT
+
        RRA  
        LD HL,ARXY
+
        RRA  
        CALL UP
+
        RRA  
        CALL DOWN
+
        PUSH AF
DOWNM=$+1
+
        SRL D,D,D
        LD A,#6F
+
        LD A,C
        CP (HL)
+
        RLCA  
        CALL C,L27
+
        RLCA  
        LD A,1
+
        CALL DA2ATTR
        DEC C
+
        POP AF
        JZ L9
+
        LD (fillN),A
        LD A,1
+
        LD C,A
        RLCA  
+
        LD A,(HL),(fillpat),A
        LD ($-2),A
+
        RRCA  
        RET NC
+
        LD B,A
        LD A,(SPEED+2)
+
        RRCA  
        INC A
+
        RRCA  
        CP 7
+
        XOR B
        RET Z
+
        AND #E0
L9      LD (SPEED+2),A
+
        XOR B
        RET  
+
        RRA  
;5
+
        SRL A
KEMPJOY
+
        LD (filladr),HL
        XOR A
+
FILLPP
        IN A,(31)
+
        LD (HL),A,D,H,E,L
joy=$+1
+
        INC E
        AND 0
+
        DEC C
        RET  
+
        RET Z
;1
+
        LD B,0
OP_INV
+
        LDIR  
ITEMADR=$+1
+
        RET  
        LD HL,0
+
CURPRTXADD
        LD B,(HL),D,B
+
        PUSH DE
        INC HL
+
        CALL PRTXADDBUF
        LD C,(HL)
+
        POP DE
        INC HL
+
        CALL PRADDPP
        LD A,(HL)
+
        LD HL,(TXTLEN),A,(TXTX)
        CP -1
+
        CP L
        JNZ $+3
+
        RET Z
        DEC B
+
        ADD A,D
        SUB B
+
        LD D,A
        RRA  
+
        LD A,"_
        RRA  
+
PR4X8
        RRA  
+
        PUSH HL,DE,BC,AF
        PUSH AF
+
        SRL D
        SRL D,D,D
+
        LD C,15
        LD A,C
+
        JC $+4
        RLCA  
+
        LD C,#F0
        RLCA  
+
        CALL DE2SCR
        CALL DA2ATTR
+
        POP AF
        POP AF
+
        ADD A,A
        LD (fillN),A
+
        ADD A,A
        LD C,A
+
        LD E,A
        LD A,(HL),(fillpat),A
+
        ADC A,'FONT/2
        RRCA  
+
        SUB E
        LD B,A
+
        SLA E
        RRCA  
+
        RLA  
        RRCA  
+
        LD D,A
        XOR B
+
        DUP 6
        AND #E0
+
        INC H
        XOR B
+
        LD A,(DE)
        RRA  
+
        XOR (HL)
        SRL A
+
        AND C
        LD (filladr),HL
+
        XOR (HL)
FILLPP
+
        LD (HL),A
        LD (HL),A,D,H,E,L
+
        INC E
        INC E
+
        EDUP
        DEC C
+
        ORG $-1
        RET Z
+
        POP BC,DE,HL
        LD B,0
+
        RET
        LDIR  
+
SSA
        RET  
+
        LD BC,(CURY)
CURPRTXADD
+
        CALL GETnADR,XPP2
        PUSH DE
+
        LD A,C
        CALL PRTXADDBUF
+
        ADD A,A,A,A,A,C,A,-2
        POP DE
+
        ADD A,L
        CALL PRADDPP
+
        LD L,A
        LD HL,(TXTLEN),A,(TXTX)
+
        JNC $+3
        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
 
         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)
 
         LD A,(HL)
         RRA  
+
        INC HL,HL
        RRA  
+
        RLA
        RRA  
+
        LD DE,AUTO1
        RRA  
+
         CALL puthB
        AND 31
+
        OR A
      CALL puth
+
        LD BC,AUTOSu
        LD A,(HL)
+
        PUSH BC
        AND 15
+
puthB  INC HL
puth    ADD A,"0
+
        LD A,(HL)
        CP ":
+
        RRA  
        JC $+4
+
        RRA  
        ADD A,"A"-":
+
        RRA  
        LD (DE),A
+
        RRA  
        INC DE
+
        AND 31
        RET  
+
        CALL puth
NotOct
+
        LD A,(HL)
        CALL 8026
+
        AND 15
        LD A,(OCT)
+
puth    ADD A,"0
        SBC A,8
+
        CP ":
        ADC A,7
+
        JC $+4
        LD C,A
+
        ADD A,"A"-":
        LD A,D
+
        LD (DE),A
        SUB 13
+
        INC DE
        JC nOssnot
+
        RET  
        INC A
+
NotOct
        LD D,A
+
        CALL 8026
        INC C
+
        LD A,(OCT)
        DEC C
+
        SBC A,8
        JZ $+3
+
        ADC A,7
        DEC C
+
        LD C,A
nOssnot LD A,C
+
        LD A,D
        ADD A,A,A,C
+
        SUB 13
        ADD A,A,A,A,A,D
+
        JC nOssnot
        LD D,A
+
        INC A
        RET  
+
        LD D,A
EDSMP
+
        INC C
        XOR A
+
        DEC C
        LD (volA),A
+
        JZ $+3
        LD (volC),A
+
        DEC C
        CALL OUT4
+
nOssnot LD A,C
        LD A,(smp)
+
        ADD A,A,A,C
        ADD A,'SMPS
+
        ADD A,A,A,A,A,D
        LD H,A,BC,256,L,C
+
        LD D,A
        LD (ESMPadr),HL
+
        RET  
        LD DE,EDORbf
+
EDSMP
        LDIR  
+
        XOR A
        LD BC,mEDSMP
+
        LD (volA),A
        CALL WINDUM
+
        LD (volC),A
        XOR A
+
        CALL OUT4
        LD (EsTOP),A
+
        LD A,(smp)
        LD HL,tSMPKEY
+
        ADD A,'SMPS
        LD DE,#900+SMPH
+
        LD H,A,BC,256,L,C
        CALL PRMENU
+
        LD (ESMPadr),HL
        CALL PROCORN
+
        LD DE,EDORbf
        CALL PRSMP
+
        LDIR  
        LD A,(smp)
+
        LD BC,mEDSMP
        ADD A,A
+
        CALL WINDUM
        LD L,A,H,'TSMPSZ
+
        XOR A
        LD A,(HL),(EsLOOP),A,B,A
+
        LD (EsTOP),A
        INC L
+
        LD HL,tSMPKEY
        LD A,(HL)
+
        LD DE,#900+SMPH
        SUB B
+
        CALL PRMENU
        LD (EsLEN),A
+
        CALL PROCORN
      PUSH HL
+
        CALL PRSMP
        XOR A
+
        LD A,(smp)
        LD (EsMflag),A,(EsLIN),A
+
        ADD A,A
        CALL GsMRK56
+
        LD L,A,H,'TSMPSZ
EDSMP0
+
        LD A,(HL),(EsLOOP),A,B,A
      CALL RESHALT
+
        INC L
        CALL EsCHMRK
+
        LD A,(HL)
        CALL EsPRMRK ;долго
+
        SUB B
        CALL EDSMCUR
+
        LD (EsLEN),A
        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
 
         PUSH HL
        LD DE,TXTBUF,(CURADR),DE,BC,32
+
        XOR A
        LDIR
+
        LD (EsMflag),A,(EsLIN),A
        XOR A
+
        CALL GsMRK56
        LD (TXTX),A
+
EDSMP0
TXTSCR=$+1
 
EDTX0  LD DE,0
 
TXTLEN=$+1
 
        LD B,0
 
      PUSH BC,DE
 
      CALL CURPRTXADD
 
 
         CALL RESHALT
 
         CALL RESHALT
        JZ $-3
+
        CALL EsCHMRK
      POP DE,BC
+
        CALL EsPRMRK ;долго
      CALL PRTXADDBUF
+
        CALL EDSMCUR
        LD A,(23560)
+
        CALL EDSMPKY
        CP 6
+
        LD A,(smp),(piaSMP),A
        JNZ EDTXn6
+
EsORN=$+1
        LD HL,#5C6A,A,8
+
        LD A,0,(piaORN),A
        XOR (HL)
+
        LD HL,TORNSZ
        LD (HL),A
+
        ADD A,A,A,L
EDsholk CALL SHOLK
+
        LD L,A,A,(HL),(piOLOOP),A
        JR EDTX0
+
        INC L
EDTXn6  CP 13
+
        LD A,(HL),(piOEND),A
        JZ EDTXQ
+
        LD BC,(EsLOOP),A,C,(piSLOOP),A
        CP 12
+
        ADD A,B
        JZ EDTXdel
+
        LD (piSEND),A
        CP 8
+
        CALL OUT4
        JZ EDTXdel
+
        LD HL,EDORbf
        CP 9
+
ESMPadr=$+1
        JZ EDTXrgt
+
        LD DE,0
        CP 32
+
        LD BC,256
        JC EDTX0
+
        LDIR
EDTXrgt LD B,A
+
        CALL PIANO
        RLA
+
        CALL TSTFIRE
        JC EDTX0
+
        JNC EDSMP0
TXTX=$+1
+
         CALL DOWNMER
        LD C,0,A,(TXTLEN)
+
         POP HL
        INC C
+
SMPQU
        CP C
+
        LD DE,(EsLOOP)
        JC EDTX0
+
        LD A,D,B,E
        LD A,C,(TXTX),A
+
        JP ORNQ
CURADR=$+1
+
EDTXT
        LD HL,TXTBUF
+
        LD (TXTSCR),DE,(TXTLEN),A
        LD A,B
+
EDTXw  ;LD A,#7F
         CP 9
+
        CALL ANYKEY
         JZ $+3
+
        RRA
        LD (HL),B
+
        JNC EDTXw
        INC HL
+
        PUSH HL
        LD (CURADR),HL
+
        LD DE,TXTBUF,(CURADR),DE,BC,32
        LD A,(TXTLEN),C,A,A,(TXTX)
+
        LDIR
        SUB C
+
        XOR A
        JNZ EDsholk
+
        LD (TXTX),A
EDTXQIF=$+1
+
TXTSCR=$+1
         CP 0
+
EDTX0  LD DE,0
         JZ EDsholk
+
TXTLEN=$+1
         LD A,(TXTLEN),B,A,DE,(TXTSCR)
+
        LD B,0
 +
         PUSH BC,DE
 +
         CALL CURPRTXADD
 +
        CALL RESHALT
 +
        JZ $-3
 +
         POP DE,BC
 
         CALL PRTXADDBUF
 
         CALL PRTXADDBUF
EDTXQ  LD HL,TXTBUF
+
        LD A,(23560)
        POP DE
+
        CP 6
        LD BC,(TXTLEN),B,0
+
        JNZ EDTXn6
        LDIR  
+
        LD HL,#5C6A,A,8
        LD A,8,(#5C6A),A
+
        XOR (HL)
        RET  
+
        LD (HL),A
EDTXdel
+
EDsholk CALL SHOLK
        LD HL,TXTX,B,(HL)
+
        JR EDTX0
        DEC B
+
EDTXn6  CP 13
        JP M,EDTX0
+
        JZ EDTXQ
        LD (HL),B,HL,(CURADR)
+
        CP 12
        DEC HL
+
        JZ EDTXdel
        CP 8
+
        CP 8
        JZ $+4
+
        JZ EDTXdel
        LD (HL),32
+
        CP 9
        LD (CURADR),HL
+
        JZ EDTXrgt
        JR EDsholk
+
        CP 32
      IFN alasm
+
        JC EDTX0
LOADASM
+
EDTXrgt LD B,A
        LD A,#51
+
        RLA
        LD HL,NAMASM1
+
        JC EDTX0
        LD DE,#C000
+
TXTX=$+1
        CALL LOADNAM
+
        LD C,0,A,(TXTLEN)
        LD A,#57
+
        INC C
        LD HL,NAMASM2
+
        CP C
        LD DE,#C000
+
        JC EDTX0
        CALL LOADNAM
+
        LD A,C,(TXTX),A
        LD A,#57
+
CURADR=$+1
        LD HL,NAMSTS
+
        LD HL,TXTBUF
        LD DE,#DB00
+
        LD A,B
        CALL LOADNAM
+
        CP 9
        LD A,#D6
+
        JZ $+3
        LD HL,NAMASM4
+
        LD (HL),B
        LD DE,#C000
+
        INC HL
LOADNAM
+
        LD (CURADR),HL
      PUSH DE
+
        LD A,(TXTLEN),C,A,A,(TXTX)
        CALL LDOUTA
+
        SUB C
        LD C,19
+
        JNZ EDsholk
        CALL #3D13 ;copy desc
+
EDTXQIF=$+1
        LD C,#A
+
        CP 0
        CALL #3D13
+
        JZ EDsholk
        LD A,C
+
        LD A,(TXTLEN),B,A,DE,(TXTSCR)
        INC C
+
        CALL PRTXADDBUF
      POP HL
+
EDTXQ  LD HL,TXTBUF
        RET Z
+
        POP DE
      PUSH HL
+
        LD BC,(TXTLEN),B,0
        LD C,8
+
        LDIR  
        CALL #3D13 ;load file desc
+
        LD A,8,(#5C6A),A
      POP HL;#C000
+
        RET  
        LD C,#E
+
EDTXdel
        LD A,3
+
        LD HL,TXTX,B,(HL)
        JP #3D13 ;load file
+
        DEC B
NAMASM1
+
        JP M,EDTX0
        DB "alasm_64C"
+
        LD (HL),B,HL,(CURADR)
NAMASM2
+
        DEC HL
        DB "olasm_64C"
+
        CP 8
NAMSTS
+
        JZ $+4
        DB "sts7    C"
+
        LD (HL),32
NAMASM4
+
        LD (CURADR),HL
        DB "playFAS4H"
+
        JR EDsholk
 
+
      IFN alasm
RESALM
+
LOADASM
      DISP #5B80
+
        LD A,#51
        DI  
+
        LD HL,NAMASM1
        IM 1
+
        LD DE,#C000
        LD H,#40
+
        CALL LOADNAM
        LD A,#52
+
        LD A,#57
        CALL RESM2PG
+
        LD HL,NAMASM2
        LD A,#54
+
        LD DE,#C000
        CALL RESM2PG
+
        CALL LOADNAM
        LD D,#80
+
        LD A,#57
        LD A,#10
+
        LD HL,NAMSTS
        CALL RESPG2M
+
        LD DE,#DB00
        LD H,#80
+
        CALL LOADNAM
         LD A,#55
+
        LD A,#D6
         CALL RESM2PG
+
        LD HL,NAMASM4
         LD A,#51
+
        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
 
         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
 
         LD BC,#4000,L,C,E,C
 
         LDIR  
 
         LDIR  
        RET  
+
        LD HL,IMVEC,(HL),IMER
RESPG2M
+
        CALL SETIM
        LD H,#C0
+
        IM 2
        JR RESL40
+
        EI
RESOUTA
+
        RET
        LD BC,#7FFD
+
RESM2PG
        OUT (C),A
+
        LD D,#C0
        RET  
+
RESL40  CALL RESOUTA
      ENT  
+
        LD BC,#4000,L,C,E,C
LDOUTA
+
        LDIR
        LD BC,#7FFD
+
        RET  
        OUT (C),A
+
RESPG2M
        RET  
+
        LD H,#C0
      ENDIF
+
        JR RESL40
 
+
RESOUTA
        INCLUDE "pt3*",#44
+
        LD BC,#7FFD
        INCLUDE "pt5*",#86
+
        OUT (C),A
        INCLUDE "pt6*",#84
+
        RET  
        INCLUDE "ptmsg*",#87
+
        ENT  
 
+
LDOUTA
        DISPLAY "FREE2=",plaer-$
+
        LD BC,#7FFD
        IF0 plaer-$<1&1
+
        OUT (C),A
        DS plaer-$
+
        RET  
 
         ENDIF  
 
         ENDIF  
ss      ORG #5D3B
+
        DB 6
+
        INCLUDE "pt3*",#44
        DB 7
+
        INCLUDE "pt5*",#86
        DB %01010000;bord,bits
+
        INCLUDE "pt6*",#84
;D7=joy 0/1F
+
        INCLUDE "ptmsg*",#87
;D6=poion 0/FF
+
;D5=SHOLK 0/C9
+
        DISPLAY "FREE2=",plaer-$
;D4=playon 0/FF
+
        IF0 plaer-$<1&1
;curite DB 2;NU
+
        DS plaer-$
        ORG END
+
        ENDIF
        DB 1 ;FRQn
+
ss      ORG #5D3B
        ORG #5BFA
+
        DB 6
        CALL 3435
+
        DB 7
        JP nenado
+
        DB %01010000;bord,bits
 
+
;D7=joy 0/1F
        JZ EDTXrgt
+
;D6=poion 0/FF
        CP 32
+
;D5=SHOLK 0/C9
        JC EDTX0
+
;D4=playon 0/FF
EDTXrgt LD B,A
+
;curite DB 2;NU
        RLA  
+
        ORG END
        JC EDTX0
+
        DB 1 ;FRQn
TXTX=$+1
+
        ORG #5BFA
        LD C,0,A,(TXTLEN)
+
        CALL 3435
        INC C
+
        JP nenado
        CP C
+
        JC EDTX0
+
        JZ EDTXrgt
        LD A,C,(TXTX),A
+
        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

Latest revision as of 16:28, 8 March 2020

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 

Windowマネージャ

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