Difference between revisions of "PROTRACKER372 JP MKPT37 H"
From MSX MUSIC WIKI
(Tags: Mobile edit, Mobile web edit) |
(Tags: Mobile edit, Mobile web edit) |
||
Line 1,434: | Line 1,434: | ||
DOWNMER LD A,#6F,(DOWNM),A | DOWNMER LD A,#6F,(DOWNM),A | ||
RET | RET | ||
+ | |||
+ | ==入力判定 マウス・ケンプストン== | ||
+ | |||
+ | |||
FIRE | FIRE | ||
;NZ=y | ;NZ=y | ||
Line 1,632: | Line 1,636: | ||
POP HL,DE,BC,AF | POP HL,DE,BC,AF | ||
RET | RET | ||
+ | |||
+ | ==入力判定 カーソルキー== | ||
+ | |||
ARROW | ARROW | ||
ARXY=$+1 | ARXY=$+1 |
Revision as of 02: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 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