;z80 ;zx-spectrum ;assembler MAIN "6ECCUL3",11 ;-------ÈÍÑÒÀËÈÌ ÒÀÁËÈÖÓ ÏÎÄ IM 2 _IM2 DI LD HL,#BE00 LD DE,#BE01 LD B,E LD C,L ;BC=#100 LD A,H LD I,A IM 2 INC A LD (HL),A CALL _LDIR LD L,H ;HL=#BFBF LD (HL),#C3 INC L LD (HL),INTA INC L LD (HL),'INTA EI RET ;-------ÐÀÑÊËÀÄÛÂÀÅÌ ØÐÈÔÒ ÍÀ ÄÂÅ ÏÎËÎÂÈÍÊÈ Â ÝÊÐÀÍ INST_FONT LD A,STR_7 CALL PAGE LD HL,FONT LD DE,#5000 CALL DEHRUST LD HL,#5000 LD DE,#4000 LD BC,#4800 INST_F LD A,(HL) AND #F0 LD (DE),A LD A,(HL) AND #0F LD (BC),A INC L INC E INC C JP NZ,INST_F INC H INC D INC B BIT 3,D JP Z,INST_F XOR A JP PAGE ;-------ÔÎÐÌÈÐÓÅÌ ÈÇ ÒÅÊÑÒÀ ÑÏÐÀÉÒ ; ÊÀÆÄÎÉ ÈÇ ×ÅÒÛÐÅÕ ÑÒÐÀÍÈÖ (1,3,4,6) ÍÀÕÎÄÈÒÑß ÏÎ 85 ÑÒÐÎÊ ;ÐÀÇÌÅÐ ÑÒÐÎÊÈ 24*8=192 ÁÀÉÒÀ ;ÈÇÍÀ×ÀËÜÍÎ ÒÅÊÑÒ ÍÀÕÎÄÈÒÑß Â #8000 INST_TEXT XOR A CALL PAGE LD HL,#8000 LD D,H LD E,L CALL DEHRUST LD DE,0-#8000 ADD HL,DE LD (LEN_TXT+1),HL ;ÄËÈÍÀ ÝÒÎÃÎ ÒÅÊÑÒÀ LD HL,ADR_LINE ;ÀÄÐÅÑÀ ÑÒÐÎÊ LD DE,COL_LINE ;ÖÂÅÒÀ ÑÒÐÎÊ EXX XOR A LD (N_PAGE),A LD H,A LD L,A LD (ALL_LINE+1),HL DEC H DEC L LD (FIRST_3),HL LD (FIRST_4),HL LD (FIRST_6),HL LD H,#C0 ;ÑÒÀÂÈÌ ÍÀ ÍÀ×ÀËÎ ÑÒÐÀÍÈÖÛ LD L,A LD (ADRT_CUR+1),HL LD A,1 CALL PAGE LD HL,#8000 ;ÍÀ×ÀËÎ ÇÀÃÐÓÆÅÍÍÎÃÎ ÒÅÊÑÒÀ LEN_TXT LD BC,0 ;ÄËÈÍÀ ÒÅÊÑÒÀ ADD HL,BC LD A,L LD (L_END+1),A LD A,H LD (H_END+1),A SBC HL,BC INST_T1 LD DE,#5000 LD B,48 ;ÈÍÈÖÈÈÐÓÅÌ Ñ×ÅÒ×ÈÊ LD A,(HL) CP "," ;ÏÅÐÂÛÉ ÑÈÌÂÎË ÇÀÏßÒÀß ? JR NZ,NO_COL ;ÍÅÒ INC HL LD A,(HL) ;ÑÒÀÐØÈÉ ÏÎËÓÁÀÉÒ SUB "0" ADD A,A ADD A,A ADD A,A ADD A,A LD C,A INC HL LD A,(HL) ;ÌËÀÄØÈÉ ÏÎËÓÁÀÉÒ SUB "0" OR C LD (CUR_COL+1),A INC HL NO_COL LD A,(HL) INC HL CP #0D JR Z,END_LINE KOD_0D LD (DE),A INC DE DEC B JR NO_COL END_LINE LD A,(HL) CP #0A LD A,#0D JR NZ,KOD_0D INC HL LD A,B OR A JR Z,LINE_OK CP 48 JR NZ,L_ESTX EXX LD BC,LINE_SP ;ÀÄÐÅÑ ÑÒÐÎÊÈ ÈÇ ÏÐÎÁÅËΠLD (HL),C INC HL LD (HL),B ;ÀÄÐÅÑ INC HL LD A,(CUR_COL+1) LD (DE),A ;ÖÂÅÒ ÑÒÐÎÊÈ ÒÅÊÑÒÀ INC DE EXX PUSH HL JP INST_T7 L_ESTX LD A," " LIN_FIL LD (DE),A INC DE DJNZ LIN_FIL LINE_OK ;ÈÌÅÅÌ ÑÔÎÐÌÈÐÎÂÀÍÍÓÞ ÑÒÐÎÊÓ PUSH HL EXX ADRT_CUR LD BC,#C000 ;ÀÄÐÅÑ Â ÒÅÊÓÙÅÉ ÑÒÐÍÈÖÅ ÄËß ;ÒÅÊÓÙÅÉ ÑÒÐÎÊÈ ÒÅÊÑÒÀ LINE_O1 LD (HL),C ;ÀÄÐÅÑ ÑÒÐÎÊÈ ÒÅÊÑÒÀ INC HL LD (HL),B INC HL EX DE,HL CUR_COL LD (HL),0 ;ÖÂÅÒ ÑÒÐÎÊÈ ÒÅÊÑÒÀ EX DE,HL INC DE PUSH HL LD HL,84 ADD HL,BC PUSH HL POP IX ;ÀÄÐÅÑ Â ÒÅÊÓÙÅÉ ÑÒÐÀÍÈÖÅ-84 POP HL EXX LD BC,#5000 ;ÔÎÐÌÈÐÓÞ Â ÁÓÔÅÐÅ ÑÒÐÎÊÓ ÑÏÐÀÉÒ LD LY,48/2 INST_T5 LD D,#40 LD H,#48 LD A,(BC) INC C LD E,A LD A,(BC) INC C LD L,A LD A,(DE) INC D OR (HL) INC H LD (IX-84),A LD A,(DE) INC D OR (HL) INC H LD (IX-60),A LD A,(DE) INC D OR (HL) INC H LD (IX-36),A LD A,(DE) INC D OR (HL) INC H LD (IX-12),A LD A,(DE) INC D OR (HL) INC H LD (IX+12),A LD A,(DE) INC D OR (HL) INC H LD (IX+36),A LD A,(DE) INC D OR (HL) INC H LD (IX+60),A LD A,(DE) OR (HL) LD (IX+84),A INC IX DEC LY JP NZ,INST_T5 LD HL,(ADRT_CUR+1) LD BC,192+192 ADD HL,BC BIT 6,H JR NZ,INST_T6 ;ÂѨ ÅÙ¨  ÝÒÎÉ ÑÒÐÀÍÈÖÅ LD HL,N_PAGE INC (HL) LD E,(HL) INC HL ;HL=PAGE_T LD D,0 ADD HL,DE LD A,(HL) ;ÍÎÌÅÐ ÑËÅÄÓÙÅÉ ÑÒÐÀÍÈÖÛ CALL PAGE EX DE,HL ADD HL,HL LD DE,FIRST_3-2 ADD HL,DE ;HL=FIRST_3, 4 ÈËÈ 6 LD DE,(ALL_LINE) LD (HL),E INC HL LD (HL),D ;ÍÎÌÅÐ ÏÅÐÂÎÉ ÑÒÐÎÊÈ Â ÑÒÐÀÍÈÖÅ INC HL LD HL,#C000+192 ;ÑÒÀÂÈÌ ÍÀ ÍÀ×ÀËÎ ÑÒÐÀÍÈÖÛ INST_T6 LD BC,0-192 ADD HL,BC LD (ADRT_CUR+1),HL INST_T7 LD HL,(ALL_LINE) INC HL LD (ALL_LINE),HL POP HL H_END LD A,0 CP H JP NZ,INST_T1 L_END LD A,0 CP L JP NZ,INST_T1 LD HL,(ALL_LINE) INST_T8 LD DE,24 ;ÊÎË-ÂÎ ÑÒÐÎÊ ÍÀ ÝÊÐÀÍÅ OR A SBC HL,DE DEC HL LD (DW_STR),HL ;ÂÅÐÕÍßß ÑÒÐÎÊÀ, ÊÎÍÖÀ ÒÅÊÑÒÀ XOR A JP PAGE ;-------ÏÅÐÅÌÅÍÍÛÅ N_PAGE DEFB 0 ;ÑÌÅÙÅÍÈÅ Â ÍÈÆÍÅÉ ÒÀÁËÈÖÅ, 0-3 PAGE_T DEFB 1,3,4,6 ;ÏÎÐßÄÎÊ ÇÀÏÎËÍÅÍÈß ÑÒÐÀÍÈÖ FIRST_3 DEFW 0 ;ÍÎÌÅÐ ÏÅÐÂÎÉ ÑÒÐÎÊÈ 3 ÑÒÐÀÍÈÖÛ FIRST_4 DEFW 0 ;ÍÎÌÅÐ ÏÅÐÂÎÉ ÑÒÐÎÊÈ 4 ÑÒÐÀÍÈÖÛ FIRST_6 DEFW 0 ;ÍÎÌÅÐ ÏÅÐÂÎÉ ÑÒÐÎÊÈ 6 ÑÒÐÀÍÈÖÛ ALL_LINE DEFW 0 ;ÊÎË-ÂÎ ÑÒÐÎÊ Â ÒÅÊÑÒÅ DW_STR DEFW 0 ;ÂÅÐÕÍßß ÑÒÐÎÊÀ ÊÎÍÖÀ ÒÅÊÑÒÀ CUR_STR DEFW 0 ;ÂÅÐÕÍßß ÑÒÐÎÊÀ ÍÀ ÝÊÐÀÍÅ CUR_LINE DEFB 0 ;ÑÌÅÙÅÍÈÅ Â ÁÓÔÅÐÅ ÑÏÐÀÉÒÀ SPEED DEFB 0 ;ÑÊÎËÜÊÎ ÄÅÐÆÈÌ ÊËÀÂÈØÓ ADR_OUT DEFW #C004+24;ÀÄÐÅÑ ÄËß ÂÛÂÎÄÀ KOL_STR DEFB 24 ;ÊÎË-ÂÎ ÑÒÐÎÊ ÍÀ ÝÊÐÀÍÅ CUR_TXT DEFB 0 ;ÒÅÊÓÙÀß ÑÒÀÒÜß OLD_TXT DEFB #FF ;ÑÒÀÐÀß ÇÀÃÐÓÆÅÍÍÀß ÑÒÀÒÜß CUR_MUS DEFB 5 ;ÒÅÊÓÙÀß ÌÓÇÛÊÀ OLD_MUS DEFB 5 ;ÑÒÀÐÀß ÇÀÃÐÓÆÅÍÍÀß ÌÓÇÛÊÀ TXT_TS DEFW #0B05 ;ÏÅÐÂÛÉ ÒÐÅÊ/ÑÅÊÒÎÐ ÄËß ÑÒÀÒÅÉ ALL_TXT DEFB 17 ;ÎÁÙÅÅ ÊÎË-ÂÎ ÑÒÀÒÅÉ DEFB #12,#19,#13,8,#10,#17,#18,#13,#10,#14,#12,#0D DEFB #16,#18,#1D,8,#18 ;ÄËÈÍÛ ÑÒÀÒÅÉ ÑÎÃËÀÑÍÎ ÈÕ ÐÀÑÏÎËÎÆÅÍÈÞ Â ÌÅÍÞ È ÍÀ ÄÈÑÊÅ MUS_TS DEFW #0408 ;ÏÅÐÂÛÉ ÒÐÅÊ/ÑÅÊÒÎÐ ÄËß ÌÓÇÎÍΠALL_MUS DEFB 15 ;ÎÁÙÅÅ ÊÎË-ÂÎ ÌÓÇÛÊ DEFB 8,8,7,5,10,9,4,7,9,7,7,8,6,9,5 ;ÄËÈÍÛ ÌÓÇÎÍΠÑÎÃËÀÑÍÎ ÈÕ ÐÀÑÏÎËÎÆÅÍÈÞ Â ÌÅÍÞ È ÍÀ ÄÈÑÊÅ ERROR DEFB 0 ;ÎØÈÁÊÀ ÄÈÑÊÀ (ÍÅ ÒÎÒ ÄÈÑÊ) ;ÒÀÁËÈÖÀ ÑÌÅÙÅÍÈÉ ÒÅÊÑÒÀ  ÇÀÂÈÑÈÌÎÑÒÈ ÎÒ ÄËÈÒÅËÜÍÎÑÒÈ ÄÅÐÆÀÍÈß ;ÊËÀÂÈØÈ ÎÄÍÎÃÎ ÍÀÏÐÀÂËÅÍÈß T_SPEED DEFB 1,1,2,2,3,3,4,5,6,7,9,10,11,13,14,16 LINE_SP DEFS 192,0 ;-------ÈÍÑÒÀËÈÌ ÑÒÅÊÎÂÓÞ ÒÀÁËÈÖÓ ÄËß ÂÛÂÎÄÀ ÑÏÐÀÉÒÀ INST_PRNT LD HL,PRN_SCR LD DE,3 INST_P0 LD C,192+8 INST_P1 LD (HL),#3B ;DEC SP INC HL LD (HL),#3B ;DEC SP INC HL LD (HL),#E1 ;POP HL INC HL LD (HL),#F9 ;LD SP,HL INC HL LD B,12/2 INST_P2 LD (HL),#21 ;LD HL,... ADD HL,DE LD (HL),#E5 ;PUSH HL INC HL LD (HL),#21 ;LD HL,... ADD HL,DE LD (HL),#E5 ;PUSH HL INC HL DJNZ INST_P2 DEC C JP NZ,INST_P1 LD (HL),#C3 INC HL LD (HL),PRN_SCR INC HL LD (HL),'PRN_SCR RET ;------- MENU_OUT LD A,STR_7 CALL PAGE LD HL,FON LD DE,#8000 CALL DEHRUST ;ÐÀÑÏÀÊÎÂÀËÈ ÔÎÍ LD DE,#5804 ;ÂÛÂÎÄ ÍÀ ÝÊÐÀÍ EXX LD HL,#8000 LD DE,#4004 LD HX,24 FON1_1 LD LX,24 FON1_2 LD C,D LD B,8 FON1_3 LD A,(HL) LD (DE),A INC HL INC D DJNZ FON1_3 LD D,C INC E DEC LX JR NZ,FON1_2 LD A,E ADD A,32-24 LD E,A JR NC,$+2+4 LD A,D ADD A,8 LD D,A PUSH HL EXX POP HL LD BC,24 CALL _LDIR EX DE,HL LD BC,32-24 ADD HL,BC EX DE,HL PUSH HL EXX POP HL DEC HX JR NZ,FON1_1 XOR A JP PAGE ;-------ÈÍÑÒÀËßÖÈß Â ÑÏÐÀÉÒ ÍÀÇÂÀÍÈÉ ÑÒÀÒÅÉ INST_ART LD A,STR_7 CALL PAGE LD HL,NAME_TXT LD DE,#8100 ;ÐÀÑÏÀÊÎÂÀËÈ ÍÀÇÂÀÍÈß ÑÒÀÒÅÉ PUSH DE CALL DEHRUST ;È ÈÌÅÍÀ ÀÂÒÎÐÎÂ, 1024 ÁÀÉÒÀ LD HL,FONT2 LD DE,#8500 CALL DEHRUST ;ØÐÈÔÒ 8x8, 768 ÁÀÉÒ LD DE,#8800 ;ÈÍÈÒÈÌ ÁÓÔÅÐ ÄËß ÃÎÐÈÇÎÍÒÀËÜÍÛÕ EXX ;ÍÀÇÂÀÍÈÉ ÑÒÀÒÅÉ (MAX=21, #1A40) POP HL ;ÍÀ×ÀËÎ ÒÅÊÑÒÀ ÑÒÀÒÅÉ LD A,(ALL_TXT) LD C,A ;ÊÎË-ÂÎ ÑÒÀÒÅÉ I_AR1 LD DE,#8000 ;ÐÀÇËÎÆÈËÈ ÍÀÇÂÀÍÈÅ ÑÒÀÒÜÈ CALL I_ART0 ; ×ÅÒÍÛÅ ÁÀÉÒÛ LD E,#01 ;-/- ÈÌß ÀÂÒÎÐÀ CALL I_ART0 ; ÍÅ×ÅÒÍÛÅ ÁÀÉÒÛ PUSH HL LD HL,#8000 ;ÇÀÃÎËÎÂÎÊ ÑÒÀÒÜÈ LD B,40 ;ÄËÈÍÀ ÄËß ÏÅ×ÀÒÈ I_AR2 LD A,(HL) INC HL EXX SUB #20 ADD A,A LD L,A LD H,0 ADD HL,HL ADD HL,HL LD BC,#8500 ADD HL,BC ;HL=ÀÄÐÅÑ ÁÓÊÂÛ DUP 8 LDI ;ÏÅ×ÀÒÜ EDUP EXX DJNZ I_AR2 POP HL DEC C JR NZ,I_AR1 ;ÏÅ×ÀÒÀÅÌ ÂÑÅ ÍÀÇÂÀÍÈß LD HL,FONT3 LD DE,#8500 CALL DEHRUST ;ØÐÈÔÒ 8x8, 768 ÁÀÉÒ ÏÎÂÅÐÍÓÒÛÉ LD DE,#A240 ;ÈÍÈÒÈÌ ÁÓÔÅÐ ÄËß ÂÅÐÒÈÊÀËÜÍÛÕ EXX ;ÍÀÇÂÀÍÈÉ ÑÒÀÒÅÉ (MAX=21, #1A40) LD HL,#8100 ;ÍÀ×ÀËÎ ÒÅÊÑÒÀ ÑÒÀÒÅÉ LD A,(ALL_TXT) LD C,A ;ÊÎË-ÂÎ ÑÒÀÒÅÉ I_AR3 LD DE,#8000 ;ÐÀÇËÎÆÈËÈ ÍÀÇÂÀÍÈÅ ÑÒÀÒÜÈ CALL I_ART0 ; ×ÅÒÍÛÅ ÁÀÉÒÛ LD E,#01 ;-/- ÈÌß ÀÂÒÎÐÀ CALL I_ART0 ; ÍÅ×ÅÒÍÛÅ ÁÀÉÒÛ PUSH HL LD HL,#8000+40-2 LD DE,#8040 LD B,20 I_AR4 LD A,(HL) ;ÔÎÐÌÈÐÓÞ ÈÇ ÃÎÐÈÇÎÍÒÀËÜÍÎÉ LD (DE),A ;ÍÀÄÏÈÑÈ ÂÅÐÒÈÊÀËÜÍÓÞ INC HL INC DE LD A,(HL) LD (DE),A INC DE DEC HL DEC HL DEC HL DJNZ I_AR4 LD HL,#8040 ;ÇÀÃÎËÎÂÎÊ ÑÒÀÒÜÈ LD B,40 ;ÄËÈÍÀ ÄËß ÏÅ×ÀÒÈ I_AR5 LD A,(HL) INC HL EXX SUB #20 ADD A,A LD L,A LD H,0 ADD HL,HL ADD HL,HL LD BC,#8500 ADD HL,BC ;HL=ÀÄÐÅÑ ÁÓÊÂÛ DUP 8 LDI ;ÏÅ×ÀÒÜ EDUP EXX DJNZ I_AR5 POP HL DEC C JR NZ,I_AR3 ;ÏÅ×ÀÒÀÅÌ ÂÑÅ ÍÀÇÂÀÍÈß XOR A JP PAGE I_ART0 LD B,20 ;MAX. ÄËÈÍÀ ÑÒÀÒÜÈ I_ART1 LD A,(HL) INC HL CP #0D JR Z,I_ART2 LD (DE),A ;ÏÅÐÅÁÐÀÑÛÂÀÅÌ ÍÀÇÂÀÍÈÅ ÑÒÀÒÜÈ INC DE INC DE DJNZ I_ART1 I_ART2 INC HL LD A,B OR A RET Z LD A,#20 LD (DE),A ;ÄÎÁÈÂÀÅÌ ÏÐÎÁÅËÀÌÈ INC DE INC DE DJNZ $-3 RET ;-------ÏÐÎÏÅ×ÀÒÊÀ ÇÀÃÎËÎÂÊÀ ÑÒÀÒÜÈ PRN_ART LD A,(CUR_TXT) ;ÒÅÊÓÙÀß ÑÒÀÒÜß LD HL,#8800-#140 LD DE,#140 INC A LD B,A ADD HL,DE DJNZ $-1 ;ÍÀØËÈ ÀÄÐÅÑ ÃÎÐÈÇ. ÍÀÇÂÀÍÍÈß PRN_A0 LD DE,0 ;ÑÌÅÙÅÍÈß ÄËß ÑÊÐÎËÈÐÎÂÀÍÈß ADD HL,DE EXX LD B,A LD HL,#A240-#140 LD DE,#140 LD B,A ADD HL,DE DJNZ $-1 ;ÍÀØËÈ ÀÄÐÅÑ ÂÅÐÒÈÊ. ÍÀÇÂÀÍÍÈß PRN_A1 LD DE,0 ADD HL,DE LD DE,#4024+24-3 LD LX,20 PRN_A2 LD C,D DUP 7 LD A,(HL) LD (DE),A INC HL INC D EDUP LD A,(HL) LD (DE),A INC HL LD D,C INC E DUP 7 LD A,(HL) LD (DE),A INC HL INC D EDUP LD A,(HL) LD (DE),A INC HL LD D,C DEC E LD A,E ADD A,#20 LD E,A JR NC,$+2+4 LD A,D ADD A,8 LD D,A DEC LX JR NZ,PRN_A2 ;ÍÀÏÅ×ÀÒÀËÈ ÂÅÐÒÈÊÀËÜÍÎÅ ÍÀÇÂÀÍ. EXX LD DE,#50A4+1 LD LX,20 PRN_A3 LD C,D DUP 7 LD A,(HL) LD (DE),A INC HL INC D EDUP LD A,(HL) LD (DE),A INC HL LD D,C LD A,E ADD A,#20 LD E,A DUP 7 LD A,(HL) LD (DE),A INC HL INC D EDUP LD A,(HL) LD (DE),A INC HL LD D,C LD A,E SUB #20-1 LD E,A DEC LX JR NZ,PRN_A3 ;ÍÀÏÅ×ÀÒÀËÈ ÃÎÐÈÇÎÍÒÀËÜÍ.ÍÀÇÂÀÍ. RET ;-------ÐÀÁÎÒÀÅÌ Â ÌÅÍÞ MENU_KEY HALT CALL PRN_ANIM ;ÂÛÂÎÄ ÑÏÐÀÉÒÀ 2x2 CALL OPROS_K ;ÎÏÐÎÑ LD A,C CPL AND 3 ;ÍÀÆÀËÈ ÎÄÍÎÂÐÅÌÅÍÍÎ ËÅÂÎ/ÏÐÀÂÎ? JR Z,MENU_K1 ;ÄÀ RRA JR NC,M_LEFT RRA JR NC,M_RIGHT MENU_K1 LD A,C CPL AND %00001100 ;ÍÀÆÀËÈ ÎÄÍÎÂÐÅÌÅÍÍÎ ÂÂÅÐÕ/ÂÍÈÇ? JR Z,MENU_K2 ;ÄÀ BIT 2,A JR Z,M_RIGHT ;ÂÍÈÇ È ÂÏÐÀÂÎ ÎÄÈÍÀÊÎÂÛ BIT 3,A JR Z,M_LEFT ;ÂÂÅÐÕ È ÂËÅÂÎ ÎÄÈÍÀÊÎÂÛ MENU_K2 BIT 4,C JR Z,MENU_KEY RET ;ÍÀÆÀËÈ ÍÀ ÂÛÑÒÐÅË M_LEFT LD A,(CUR_TXT) ;ÈÄÅÌ Ê ÍÀ×ÀËÓ ÑÒÀÒÅÉ OR A JR Z,MENU_KEY ;ÓÆÅ ÍÀ ÍÀ×ÀËÅ LD B,20 M_LEFT1 PUSH BC LD HL,(PRN_A0+1) LD DE,0-16 ADD HL,DE LD (PRN_A0+1),HL ;ÎÒÐÈÖÀÒÅËÜÍÎÅ ÑÌÅÙÅÍÈÅ LD (PRN_A1+1),HL HALT CALL PRN_ART ;ÏÐÎÏÅ×ÀÒÀÊÀ ÑÌÅÙÅÍÍÎÃÎ ÇÀÃÎËÎÂ. CALL PRN_ANIM POP BC DJNZ M_LEFT1 ;ÏÎËÍÎÑÒÜÞ ÑÄÂÈÍÓËÈ LD HL,CUR_TXT DEC (HL) M_LEFT2 LD H,B LD L,B LD (PRN_A0+1),HL ;ÍÎÐÌÀËÜÍÎÅ ÑÌÅÙÅÍÈÅ LD (PRN_A1+1),HL JR MENU_KEY+1 M_RIGHT LD A,(ALL_TXT) ;ÎÁÙÅÅ ÊÎË-ÂÎ ÑÒÀÒÅÉ DEC A LD C,A LD A,(CUR_TXT) ;ÈÄÅÌ Ê ÊÎÍÖÓ ÑÒÀÒÅÉ CP C JR NC,MENU_KEY ;ÓÆÅ Â ÊÎÍÖÅ LD B,20 M_RIGHT1 PUSH BC LD HL,(PRN_A0+1) LD DE,16 ADD HL,DE LD (PRN_A0+1),HL ;ÏÎËÎÆÈÒÅËÜÍÎÅ ÑÌÅÙÅÍÈÅ LD (PRN_A1+1),HL HALT CALL PRN_ART ;ÏÐÎÏÅ×ÀÒÀÊÀ ÑÌÅÙÅÍÍÎÃÎ ÇÀÃÎËÎÂ. CALL PRN_ANIM POP BC DJNZ M_RIGHT1 ;ÏÎËÍÎÑÒÜÞ ÑÄÂÈÍÓËÈ LD HL,CUR_TXT INC (HL) JR M_LEFT2 ;-------ÂÛÂÎÄ ÀÍÈÌÀÖÈÈ PRN_ANIM LD A,0 ;ÇÀÄÅÐÆÊÀ INC A AND 3 LD (PRN_ANIM+1),A RET NZ ; FAZA LD A,0 ;ÒÅÊÓÙÀß ÔÀÇÀ INC A CP 8 ;ÌÅÍÜØÅ ÊÎË-ÂÀ ÔÀÇ ? JR C,$+2+1 ;ÄÀ XOR A LD (FAZA+1),A LD HL,ANIMA JR Z,ANIM_OK LD DE,32 LD B,A ADD HL,DE DJNZ $-1 ANIM_OK LD DE,#50B9 LD B,16 ANIM_1 LD A,(HL) LD (DE),A INC L INC E LD A,(HL) LD (DE),A INC L DEC E INC D LD A,D AND 7 JR NZ,ANIM_2 LD A,E ADD A,#20 LD E,A JR C,ANIM_2 LD A,D SUB 8 LD D,A ANIM_2 DJNZ ANIM_1 RET ;-------ÇÀÃÐÓÇÊÀ ÄÀÍÍÛÕ: ÑÒÀÒÜÈ È ÌÓÇÛÊÈ LOAD LD A,(CUR_TXT) ;ÑÒÀÒÜß ÄËß ÇÀÃÐÓÇÊÈ LD B,A LD A,(OLD_TXT) ;ÑÒÀÐÀß ÑÒÀÒÜß CP B RET Z ;ÑÒÀÒÜß ÓÆÅ ÇÀÃÐÓÆÅÍÀ LD DE,0 ;ÑÌÅÙÅÍÈÅ ÄÎ ÍÓÆÍÎÉ ÑÒÀÒÜÈ LD HL,ALL_TXT+1 LD A,B OR A JR Z,TXT_FIND LOAD_1 LD A,(HL) INC HL ADD A,E LD E,A JR NC,$+2+1 INC D DJNZ LOAD_1 TXT_FIND ;DE=ÑÌÅÙÅÍÈÅ LD B,(HL) ;ÄËÈÍÀ ÍÓÆÍÎÉ ÑÒÀÒÜÈ LD HL,(TXT_TS) ;ÏÅÐÂÛÉ ÒÐÅÊ/ÑÅÊÒÎÐ ÑÒÀÒÅÉ LOAD_2 LD A,D OR E JR Z,LOAD_3 INC L BIT 4,L JR Z,$+2+3 LD L,0 INC H DEC DE JR LOAD_2 LOAD_3 EX DE,HL ;ÒÐÅÊ/ÑÅÊÒÎÐ ÑÒÀÒÜÈ LD C,5 PUSH DE,BC DI LD A,#3F LD I,A IM 1 XOR A CALL PAGE CALL MUSIC+8 ;ÃËÓØÈÌ ÌÓÇÎÍ LD HL,10072 LD IY,23610 EXX POP BC,DE XOR A LD (ERROR),A ;ÒÈÏÀ ÍÅÒ ÎØÈÁÊÈ LD HL,#8000 PUSH HL CALL #3D13 ;ÃÐÓÇÈÌ DI LD A,#BE LD I,A IM 2 EI ;ÏÐÎÄÎËÆÀÅÌ ÈÃÐÀÒÜ ÌÓÇÎÍ POP HL LD A,(HL) CP "h" JR NZ,LOAD_4 INC HL LD A,(HL) CP "r" JR NZ,LOAD_4 RET LOAD_4 LD A,#FF LD (ERROR),A RET ;-------ÀÂÒÎÐ ÎÁÎËÎ×ÊÈ HELP_ CALL SCR_0 HALT CALL COPY ;ÈÇ 0  1 CALL SCR_1 HALT CALL INST_FONT LD HL,#4000 LD DE,#8000 LD BC,#1000 CALL _LDIR ;ØÐÈÔÒ ÂÍÈÇ CALL CLS ;×ÈÑÒÈÌ 0 LD HL,#5800 LD DE,#5801 LD BC,#02FF LD (HL),#44 CALL _LDIR ;ÀÒÐÈÁÓÒÛ LD A,STR_7 CALL PAGE LD HL,HELP LD DE,#9000 CALL DEHRUST ;ÐÀÑÏÀÊÎÂÀË XOR A CALL PAGE ;ÏÐÎÏÅ×ÀÒÛÂÀÅÌ Â ÝÊÐÀÍ LD IX,#9000 ;ÎÒÊÓÄÀ LD DE,#4004 ;ÊÓÄÀ LD LY,24 HELP_2 PUSH DE LD HY,24 HELP_3 PUSH DE LD B,#80 LD C,(IX+0) LD H,#88 LD L,(IX+1) DUP 7 LD A,(BC) OR (HL) LD (DE),A INC D INC H INC B EDUP LD A,(BC) OR (HL) LD (DE),A POP DE INC E INC IX INC IX DEC HY JR NZ,HELP_3 POP DE LD A,E ADD A,#20 LD E,A JR NC,$+2+4 LD A,D ADD A,8 LD D,A INC IX INC IX DEC LY JR NZ,HELP_2 ;ÏÐÎÏÅ×ÀÒÀËÈ ÒÅÊÑÒ CALL SCR_0 HELP_4 HALT ;ÓÂÈÄÅËÈ CALL OPROS_K BIT 5,C JR Z,HELP_4 ;Escape HELP_5 HALT CALL OPROS_K BIT 5,A JR NZ,HELP_5 ;ÆÄÅÌ ÎÒÏÓÑÊÀÍÈß Escape CALL SCR_1 HALT CALL COPY ;ÈÇ 1  0, ÂÎÑÒÀÍÀÂÈË ÈÇÎÁÐÀÆÅÍ. CALL SCR_0 HALT CALL INST_PRNT ;ÒÀÁËÈÖÀ ÏÅ×ÀÒÈ CALL PRN_ALL JP L1 ;ÂÛÕÎÄ ;-------ÂÛÁÎÐ ÌÓÇÛÊÈ TRACK_LIST CALL SCR_0 HALT CALL COPY ;ÈÇ 0  1 HALT ;ÃÀÑÈÌ ÝÊÐÀÍ ×ÀÍÊÀÌÈ LD HL,CHUNK88_ LD HX,16 ;16 ×ÀÍÊΠTRACK_0 LD DE,#4004 LD LX,8 TRACK_1 PUSH DE LD B,24 ;24 ÐÀÇ LD C,(HL) INC HL TRACK_2 DUP 24 LD A,(DE) AND C LD (DE),A INC E EDUP LD A,E ADD A,#20-24 LD E,A JR NC,$+2+4 LD A,D ADD A,8 LD D,A ;ÏÅÐÅØËÈ ×ÅÐÅÇ ÇÍÀÊÎÌÅÑÒÎ DJNZ TRACK_2 POP DE INC D DEC LX JR NZ,TRACK_1 LD DE,0-8-8 ADD HL,DE HALT DEC HX JP NZ,TRACK_0 ;ÏÎÃÀÑÈËÈ ÝÊÐÀÍ LD A,STR_7 CALL PAGE LD HL,FONT LD DE,#8000 CALL DEHRUST LD HL,#8000 LD DE,#AE00 LD BC,#B600 TRACK_3 LD A,(HL) AND #F0 LD (DE),A LD A,(HL) AND #0F LD (BC),A INC L INC E INC C JP NZ,TRACK_3 INC H INC D INC B LD A,H CP #88 JP NZ,TRACK_3 LD HL,MUS LD DE,#8000 CALL DEHRUST ;ÐÀÑÏÀÊÎÂÊÀ ÏËÅÅÐÀ [#798] LD HL,NAME_MUS LD DE,#8800 CALL DEHRUST ;ÐÀÑÏÀÊÎÂÊÀ ÈÌÅÍ [#176] XOR A CALL PAGE LD IX,#8B00 ;ÇÄÅÑÜ ÁÓÄÓÒ ÑÏÐÀÉÒÛ ÌÓÇÎÍΠLD HL,#8800 ;ÈÌÅÍÀ LD A,(ALL_MUS) DEC A LD B,A ;ÊÎË-ÂÎ ÌÓÇÎÍΠTRACK_5 PUSH BC,IX LD DE,#8A00 LD B,32 ;MAX. ÄËÈÍÀ ÈÌÅÍÈ ÌÓÇÎÍÀ TRACK_6 LD A,(HL) INC HL CP #0D JR Z,TRACK_7 LD (DE),A INC DE DJNZ TRACK_6 TRACK_7 INC HL LD A,B OR A JR Z,TRACK_8 LD A,#20 LD (DE),A INC DE DJNZ $-1-1 TRACK_8 LD E,0 ;DE=#8A00 PUSH HL LD LY,32/2 TRACK_9 LD A,(DE) INC DE LD C,A LD A,(DE) INC DE LD L,A LD B,#AE LD H,#B6 MEM=0 DUP 8 LD A,(BC) OR (HL) LD (IX+MEM),A INC B INC H MEM=MEM+16 EDUP INC IX DEC LY JR NZ,TRACK_9 POP HL,IX,BC LD DE,#80 ADD IX,DE DJNZ TRACK_5 ;ÑÔÎÐÌÈÐÎÂÀËÈ ÑÏÐÀÉÒ ÈÌÅÍ LD HL,#8000+480 ;ÂÅÐÕÍßß ÑÒÐÎÊÀ ÏËÅÅÐÀ LD A,(CUR_MUS) ;ÒÅÊÓÙÀß ÌÓÇÀ CP 2 JR NC,TR_1 ;ÐÀÑÏÎËÎÆÅÍÀ ÍÀ ÏÎËÎÑÅ ÈËÈ ÂÛØÅ ;ÑÂÅÐÕÓ 1 ÈËÈ 2 ÏÓÑÒÛÅ ÑÒÐÎÊÈ SUB 2 NEG LD B,A ;ÊÎË-ÂÎ ÏÓÑÒÛÕ ÑÒÐÎÊ ÑÂÅÐÕÓ LD DE,216 ADD HL,DE DJNZ $-1 ;ÍÀØËÈ ÌÅÑÒÎ ÊÓÄÀ ÁÓÄÅÌ ÏÅ×ÀÒÀÒÜ SUB 5 NEG LD B,A ;ÑÊÎËÜÊÎ ÑÒÐÎÊ ÏÐÎÏÅ×ÀÒÀÒÜ JR TR_2 TR_1 LD C,A LD A,(ALL_MUS) ;ÎÁÙÅÅ ÊÎË-ÂÎ ÌÓÇÎÍΠDEC A SUB C ;ÎÒÍßËÈ ÖÅÍÒÐÀËÜÍÛÉ ÌÓÇÎÍ CP 2 LD B,5 ;ÂÑÅ 5 ÑÒÐÎÊ ÏÐÎÏÅ×ÀÒÛÂÀÒÜ JR NC,TR_2 SUB B NEG LD B,A ;ÑÊÎËÜÊÎ ÑÒÐÎÊ ÏÐÎÏÅ×ÀÒÛÂÀÒÜ TR_2 PUSH HL,BC LD A,(CUR_MUS) ;ÒÅÊÓÙÀß ÌÓÇÀ LD HL,#8B00 ;ÈÌÅÍÀ ÌÓÇÎÍΠLD DE,128 CP 3 JR C,TR_3 SUB 2 JR Z,TR_3 LD B,A ADD HL,DE DJNZ $-1 TR_3 PUSH HL ;ÍÓÆÍÎÅ ÈÌß POP IX,BC,HL TR_4 PUSH BC LD B,16 TR_5 MEM=0 DUP 8 LD A,(IX+MEM) LD (HL),A INC HL MEM=MEM+16 EDUP INC IX DJNZ TR_5 ;ÏÐÎÏÅ×ÀÒÀËÈ ÑÒÐÎÊÓ Â ÏËÅÅÐ LD DE,#80-16 ADD IX,DE LD DE,88 ADD HL,DE POP BC DJNZ TR_4 ;ÂÑÅ ÈÌÅÍÀ  ÏËÅÅÐÅ LD IY,#0901 LD DE,#50E4 ;ÍÈÆÍßß ÑÒÐÎÊÀ ÝÊÐÀÍÀ TR_6 PUSH IY,DE HALT CALL TRAC_0 ;ÂÛÂÎÄÈÌ ÍÓÆÍÎÅ ÊÎË-ÂÎ ÑÒÐÎÊ POP DE,IY LD A,E SUB #20 LD E,A JR NC,$+2+4 LD A,D SUB 8 LD D,A INC LY DEC HY JR NZ,TR_6 LD HL,#8A00 XOR A LD (HL),A ;ÒÈÏÀ 2 ÍÓËÅÂÛÕ ÑÏÐÀÉÒÀ ÌÓÇÎÍÀ INC L JR NZ,$-2 LD A,(ALL_MUS) ;ÎÁÙÅÅ ÊÎË-ÂÎ ÌÓÇÎÍΠDEC A LD H,#8B LD DE,#80 LD B,A ADD HL,DE DJNZ $-1 ;HL-ÑÂÎÁÎÄÍÎÅ ÌÅÑÒÎ XOR A LD (HL),A INC HL DJNZ $-2 TR_MENU HALT CALL OPROS_K ;ÎÏÐÎÑ LD A,C CPL AND 3 ;ÍÀÆÀËÈ ÎÄÍÎÂÐÅÌÅÍÍÎ ËÅÂÎ/ÏÐÀÂÎ? JR Z,TR_K1 ;ÄÀ RRA JR NC,TR_D ;ÂÏÐÀÂÎ RRA JR NC,TR_U ;ÂËÅÂÎ TR_K1 LD A,C CPL AND %00001100 ;ÍÀÆÀËÈ ÎÄÍÎÂÐÅÌÅÍÍÎ ÂÂÅÐÕ/ÂÍÈÇ? JR Z,TR_K2 ;ÄÀ BIT 2,A JR Z,TR_U ;ÂÍÈÇ BIT 3,A JR Z,TR_D ;ÂÂÅÐÕ TR_K2 BIT 4,C JP NZ,LOAD_MUS ;ÍÀÆÀËÈ ÂÛÑÒÐÅË BIT 5,C JR Z,TR_MENU TR_K3 HALT ;ÍÀÆÀËÈ ÍÀ ESCAPE CALL OPROS_K BIT 5,C JR NZ,TR_K3 ;ÆÄÅÌ ÎÒÏÓÑÊÀÍÈß ESCAPE LD A,(OLD_MUS) ;ÒÀ, ÊÎÒÎÐÀß ÈÃÐÀÅÒ LD (CUR_MUS),A CALL SCR_1 ;ÍÀÆÀËÈ ÍÀ ESCAPE HALT CALL COPY HALT CALL INST_PRNT ;ÒÀÁËÈÖÀ ÏÅ×ÀÒÈ CALL PRN_ALL ;ÏÅ×ÀÒÜ ÂÑÅÃÎ ÒÅÊÑÒÀ  ÁÓÔÅÐ JP L1 TR_D LD A,(CUR_MUS) ;ÈÄÅÌ Ê ÍÀ×ÀËÓ ÌÓÇÛÊ OR A JR Z,TR_MENU ;ÓÆÅ ÍÀ ÍÀ×ÀËÅ LD HL,#8B00 ;ÍÀ×ÀËÎ LD B,A LD DE,128 ADD HL,DE DJNZ $-1 ;ÍÀØËÈ ÏÅÐÂÎÅ ÍÀÇÂÀÍÈÅ SBC HL,DE OR A SBC HL,DE ;ÏÎÊÀÇÛÂÀÅÌ ÍÀ 1 ÑÒÐÎÊÓ LD B,8 TR_D1 PUSH BC LD DE,0-16 ADD HL,DE HALT PUSH HL CALL TR_OUT POP HL,BC DJNZ TR_D1 ;ÏÎËÍÎÑÒÜÞ ÑÄÂÈÍÓËÈ LD HL,CUR_MUS ;ÈÄÅÌ Ê ÍÀ×ÀËÓ ÌÓÇÛÊ DEC (HL) ;ÓÌÅÍÜØÈËÈ JR TR_MENU+1 TR_U LD A,(ALL_MUS) ;ÎÁÙÅÅ ÊÎË-ÂÎ ÌÓÇÎÍΠSUB 2 LD C,A LD A,(CUR_MUS) ;ÈÄÅÌ Ê ÊÎÍÖÓ ÌÓÇÎÍΠCP C JR NC,TR_MENU ;ÓÆÅ Â ÊÎÍÖÅ LD HL,#8B00-128 ;ÍÀ×ÀËÎ INC A LD B,A LD DE,128 ADD HL,DE DJNZ $-1 ;ÍÀØËÈ ÏÅÐÂÎÅ ÍÀÇÂÀÍÈÅ SBC HL,DE OR A SBC HL,DE ;ÏÎÊÀÇÛÂÀÅÌ ÍÀ 1 ÑÒÐÎÊÓ LD B,8 TR_U1 PUSH BC LD DE,16 ADD HL,DE HALT PUSH HL CALL TR_OUT POP HL,BC DJNZ TR_U1 ;ÏÎËÍÎÑÒÜÞ ÑÄÂÈÍÓËÈ LD HL,CUR_MUS ;ÈÄÅÌ Ê ÍÀ×ÀËÓ ÌÓÇÛÊ INC (HL) JP TR_MENU+1 TR_OUT LD B,5*8 LD DE,#502A ;ÑÐÅÄÍßß ÑÒÐÎÊÀ TR_OUT1 PUSH BC,DE DUP 16 LDI EDUP POP DE INC D LD A,D AND 7 JR NZ,TR_OUT2 LD A,E ADD A,#20 LD E,A JR C,TR_OUT2 LD A,D SUB 8 LD D,A TR_OUT2 POP BC DJNZ TR_OUT1 RET TRAC_0 LD HL,#8000 ;ÂÅÐÕÍßß ÑÒÐÎÊÀ ÏËÅÅÐÀ TRAC_1 PUSH DE,DE LD B,24 TRAC_2 LD C,D DUP 7 LD A,(HL) LD (DE),A INC HL INC D EDUP LD A,(HL) LD (DE),A INC HL LD D,C INC E DJNZ TRAC_2 POP DE LD A,D RRA RRA RRA AND 3 OR #58 LD D,A DUP 24 LDI EDUP POP DE LD A,E ADD A,#20 LD E,A JR NC,$+2+4 LD A,D ADD A,8 LD D,A DEC LY JR NZ,TRAC_1 RET ;-------ÇÀÃÐÓÇÊÀ ÌÓÇÛÊÈ LOAD_MUS LD A,(CUR_MUS) ;ÌÓÇÛÊÀ ÄËß ÇÀÃÐÓÇÊÈ LD B,A LD A,(OLD_MUS) ;ÑÒÀÐÀß ÌÓÇÛÊÀ CP B JP Z,TR_MENU ;ÌÓÇÛÊÀ ÓÆÅ ÇÀÃÐÓÆÅÍÀ LD DE,0 ;ÑÌÅÙÅÍÈÅ ÄÎ ÍÓÆÍÎÉ ÌÓÇÛÊÈ LD HL,ALL_MUS+1 LD A,B OR A JR Z,MUS_FIND LD_MUS1 LD A,(HL) INC HL ADD A,E LD E,A JR NC,$+2+1 INC D DJNZ LD_MUS1 MUS_FIND ;DE=ÑÌÅÙÅÍÈÅ LD B,(HL) ;ÄËÈÍÀ ÍÓÆÍÎÉ ÌÓÇÛÊÈ LD HL,(MUS_TS) ;ÏÅÐÂÛÉ ÒÐÅÊ/ÑÅÊÒÎÐ ÌÓÇÛÊÈ ;------- MUSLD2 LD A,D OR E JR Z,MUSLD3 INC L BIT 4,L JR Z,$+2+3 LD L,0 INC H DEC DE JR MUSLD2 MUSLD3 EX DE,HL ;ÒÐÅÊ/ÑÅÊÒÎÐ ÌÓÇÛÊÈ LD C,5 PUSH DE,BC DI LD A,#3F LD I,A IM 1 XOR A CALL PAGE CALL MUSIC+8 ;ÃËÓØÈÌ ÌÓÇÎÍ LD HL,10072 LD IY,23610 EXX POP BC,DE LD HL,#CE21 PUSH HL CALL #3D13 ;ÃÐÓÇÈÌ POP HL LD A,(HL) ;ÝÒÎ ÌÓÇÎÍ ? CP "h" JR NZ,MUSLD5 ;ÍÅÒ INC HL LD A,(HL) CP "r" JR NZ,MUSLD5 ;ÍÅÒ LD A,#21 ;ÂÎÑÑÒÀÍÀÂËÈÂÀÞ ÐÀÁÎÒÓ ÌÓÇÛÊÈ LD (#C000),A LD A,#C3 LD (#C005),A LD (#C008),A LD HL,#CE21 LD DE,#CE21 CALL DEHRUST ;ÐÀÑÏÀÊÎÂÀËÈ ÌÓÇÎÍ LD A,STR_7 CALL PAGE LD HL,FM_TAB LD DE,#BB00 CALL DEHRUST ;ÒÀÁËÈÖÛ XOR A CALL PAGE LD A,(#CE21+99) INC A LD B,A LD HL,#BB00-#C0 LD DE,#C0 ADD HL,DE DJNZ $-1 ;HL-ÀÄÐÅÑ ÍÓÆÍÎÉ ÒÀÁËÈÖÛ LD DE,#C200 LD BC,#C0 CALL _LDIR CALL MUSIC ;ÈÍÈÒÈÌ ÌÓÇÎÍ MUSLD4 DI LD A,#BE LD I,A IM 2 EI LD A,(CUR_MUS) LD (OLD_MUS),A JP TR_MENU MUSLD5 LD A,#C9 ;ÍÅ ÌÓÇÛÊÀ LD (#C000),A LD (#C005),A LD (#C008),A ;ÁËÎÊÈÐÓÞ ÐÀÁÎÒÓ Ñ ÌÓÇÎÍÀÌÈ JR MUSLD4 CHUNK88 DEFB #00,#00,#00,#00,#00,#00,#00,#00 DEFB #88,#00,#00,#00,#88,#00,#00,#00 DEFB #88,#00,#22,#00,#88,#00,#22,#00 DEFB #88,#00,#AA,#00,#88,#00,#AA,#00 DEFB #AA,#00,#AA,#00,#AA,#00,#AA,#00 DEFB #AA,#44,#AA,#00,#AA,#44,#AA,#00 DEFB #AA,#44,#AA,#11,#AA,#44,#AA,#11 DEFB #AA,#44,#AA,#55,#AA,#44,#AA,#55 DEFB #AA,#55,#AA,#55,#AA,#55,#AA,#55 DEFB #AA,#55,#BB,#55,#AA,#55,#BB,#55 DEFB #EE,#55,#BB,#55,#EE,#55,#BB,#55 DEFB #FF,#55,#BB,#55,#FF,#55,#BB,#55 DEFB #FF,#55,#FF,#55,#FF,#55,#FF,#55 DEFB #FF,#77,#FF,#55,#FF,#77,#FF,#55 DEFB #FF,#77,#FF,#DD,#FF,#77,#FF,#DD CHUNK88_ DEFB #FF,#FF,#FF,#FF,#FF,#FF,#FF,#FF