;z80 ;zx-spectrum ;assembler MACRO INCADDR INC L CALL Z,INC_H ENDM INITANI JR initani PLAYANI JR playani HIMEM JR himem initani LD (ScrAddr+1),DE LD DE,14 ADD HL,DE LD C,(HL) INC HL LD B,(HL) INC HL LD (AniSize+1),BC LD A,B NEG AND 7 ADD A,B RRA RRA RRA AND 31 JR NZ,inan_1 LD A,32 inan_1 LD (BoxSize+1),A XOR A LD (PlayPge+1),A LD (PlayAdr+1),HL LD (tobegin+1),HL INC A LD (playani+1),A RET himem LD (HMemAdr+1),HL RET playani LD A,1 DEC A LD (playani+1),A RET NZ PlayPge LD A,0 CALL ANIBANK PlayAdr LD HL,0 LD A,(HL) ; delay INCADDR INC A JR Z,tobegin DEC A LD (playani+1),A LD C,(HL) ; packtype INCADDR LD A,C RLA SBC A,A AND #90 XOR #37 LD (color0),A LD (color1),A LD A,C RLA RLA SBC A,A AND #90 XOR #37 LD (pakcol),A LD A,C DEC A RRA RRA RRA SBC A,A AND #90 XOR #37 LD (pakdat),A LD A,C ScrAddr LD DE,#4000 AniSize LD BC,#680D AND 63 JP Z,NOPACK EXX LD C,0 ; C' - счетчик блоков EXX BoxSize LD B,#0D CP 9 JR NC,tobegin DEC A AND 3 JP Z,MTP_1 DEC A JP Z,MTP_2 DEC A JP Z,MTP_3 DEC A JP Z,MTP_4 tobegin LD HL,0 XOR A LD (PlayAdr+1),HL LD (PlayPge+1),A INC A LD (playani+1),A RET NOPACK PUSH BC PUSH DE nopa_1 LD A,(HL) LD (DE),A INC E INCADDR DEC C JR NZ,nopa_1 POP DE POP BC INC D LD A,D AND 7 JR NZ,nopa_4 color0 SCF JR C,nopa_3 PUSH BC PUSH DE LD A,D RRA RRA RRA AND 3 OR #58 LD D,A nopa_2 LD A,(HL) LD (DE),A INC DE INCADDR DEC C JR NZ,nopa_2 POP DE POP BC nopa_3 LD A,E ADD A,32 LD E,A JR C,nopa_4 LD A,D SUB 8 LD D,A nopa_4 DJNZ NOPACK LD (PlayAdr+1),HL RET MTP_1 PUSH BC PUSH DE mtp1_0 PUSH DE CALL UP_CNT JR NC,mtp1_Z LD A,(HL) INCADDR AND A JR Z,mtp1_Z LD B,A XOR A LD (xorer1+1),A EXA LD A,8 mtp1_1 EXA RR B JR NC,xorer1 PUSH AF LD A,(HL) LD (xorer1+1),A INCADDR POP AF xorer1 XOR 0 LD (DE),A INC D EXA DEC A JR NZ,mtp1_1 JR mtp1_E mtp1_Z XOR A LD B,8 mtp1z_1 LD (DE),A INC D DJNZ mtp1z_1 mtp1_E CALL IF_COL POP DE INC E DEC C JR NZ,mtp1_0 POP DE POP BC LD A,E ADD A,32 LD E,A SBC A,A AND 8 ADD A,D LD D,A DJNZ MTP_1 LD (PlayAdr+1),HL RET MTP_2 PUSH BC PUSH DE mtp2_0 PUSH DE CALL UP_CNT JR NC,mtp2_Z LD A,(HL) INCADDR AND A JR Z,mtp2_Z CP 1 JR Z,mtp2_S LD B,A XOR A EXA LD A,8 mtp2_1 EXA RR B JR NC,mtp2_2 XOR (HL) INCADDR mtp2_2 LD (DE),A INC D EXA DEC A JR NZ,mtp2_1 JR mtp2_E mtp2_S LD A,(HL) INCADDR JR mtp2_ZS mtp2_Z XOR A mtp2_ZS LD B,8 mtp2z_1 LD (DE),A INC D DJNZ mtp2z_1 mtp2_E CALL IF_COL POP DE INC E DEC C JR NZ,mtp2_0 POP DE POP BC LD A,E ADD A,32 LD E,A SBC A,A AND 8 ADD A,D LD D,A DJNZ MTP_2 LD (PlayAdr+1),HL RET MTP_3 PUSH BC PUSH DE mtp3_0 PUSH DE CALL UP_CNT JR NC,mtp3_Z LD A,(HL) INCADDR AND A JR Z,mtp3_Z LD B,A XOR A LD (xorer3+1),A EXA LD A,8 mtp3_1 EXA RR B JR NC,xorer3 PUSH AF LD A,(HL) LD (xorer3+1),A INCADDR POP AF xorer3 XOR 0 PUSH AF EX DE,HL XOR (HL) LD (HL),A EX DE,HL POP AF INC D EXA DEC A JR NZ,mtp3_1 DEC D mtp3_Z INC D CALL IF_COL POP DE INC E DEC C JR NZ,mtp3_0 POP DE POP BC LD A,E ADD A,32 LD E,A SBC A,A AND 8 ADD A,D LD D,A DJNZ MTP_3 LD (PlayAdr+1),HL RET MTP_4 PUSH BC PUSH DE mtp4_0 PUSH DE CALL UP_CNT JR NC,mtp4_Z LD A,(HL) INCADDR AND A JR Z,mtp4_Z LD B,A XOR A EXA LD A,8 mtp4_1 EXA RR B JR NC,mtp4_2 XOR (HL) INCADDR mtp4_2 PUSH AF EX DE,HL XOR (HL) LD (HL),A EX DE,HL POP AF INC D EXA DEC A JR NZ,mtp4_1 DEC D mtp4_Z INC D mtp4_E CALL IF_COL POP DE INC E DEC C JR NZ,mtp4_0 POP DE POP BC LD A,E ADD A,32 LD E,A SBC A,A AND 8 ADD A,D LD D,A DJNZ MTP_4 LD (PlayAdr+1),HL RET IF_COL LD A,0 RRA LD (IF_COL+1),A RET NC LD A,D DEC A RRA RRA RRA AND 3 OR #58 LD D,A LD A,(HL) LD (DE),A INC L RET NZ INC_H INC H RET NZ PUSH AF CALL NXTBANK POP AF LD HL,#C000 RET UP_CNT EXX LD A,C INC C EXX AND 7 JR NZ,flag_F color1 SCF JR C,upc1_1 DEC A pakcol SCF JR C,upc1_1 LD A,(HL) INCADDR upc1_1 LD (IF_COL+1),A LD A,#FF pakdat SCF JR C,upc1_2 LD A,(HL) INCADDR upc1_2 LD (flag_F+1),A flag_F LD A,0 RRA LD (flag_F+1),A RET NXTBANK LD A,(PlayPge+1) INC A AND 3 ANIBANK LD (PlayPge+1),A HMemAdr JP anibank anibank PUSH BC CP 2 CCF ADC A,0 OR #10 LD BC,#7FFD OUT (C),A POP BC RET