Из журнала Deja Vu #06, Кемерово, 01.10.98 (C) Max/Cyberax Software/BD __________________________________________ Генерилка шариков ----------------- Вот такие симпатичные шарики (всего 16 фаз по #200 байт) генерирует нижеприведен- ная процедура. Написана она может быть не совсем оптимально, но работает неплохо.
Вот и листинг: ORG #6000 ENT ;Written by Max/CBX/BD (1997). PHASES EQU #8000; Фазы лежат здесь. SIN EQU #6C00 LD HL,PHASES LD DE,PHASES+1 LD BC,8*8*8*16-1 LD (HL),L LDIR LD HL,S_DATA LD DE,SIN LD C,65 LDIR LD H,D LD L,E DEC L DEC L MK_SIN LD A,(HL) LD (DE),A INC E DEC L JR NZ,MK_SIN LD C,#80 LDIR CALL CH_GEN LD A,16 LD HL,PHASES+8 GEN_LP PUSH HL,AF SLA A CALL BALL POP AF,HL LD DE,8*8*8 ADD HL,DE DEC A JR NZ,GEN_LP LD HL,10072 EXX RET BALL LD (CHESS+1),A EXX LD B,#80 LD HL,SIN LD DE,SIN+64 BALL1 LD A,(DE) DEC E SLA A EXX LD E,A LD D,64 LD A,D PUSH HL,DE SUB E SRL A LD E,A SRL E SRL E SRL E LD D,0 ADD HL,DE POP DE AND 7 INC A LD B,A LD A,1 ROLL RRCA DJNZ ROLL LD B,A CHESS LD C,0 LD A,(HL) OR B LD (HL),A CALL CHAIN LD A,(HL) OR B LD (HL),A POP HL EXX LD A,(HL) INC L SUB (HL) EXX JR Z,C1 LD A,L ADD A,8 LD L,A JR NC,C1 INC H C1 EXX LD A,B AND 16 OLD CP 0 JR Z,ENDL LD (OLD+1),A LD A,(CHESS+1) XOR 16 ;Здесь можно воткнуть команду ADD A,5. LD (CHESS+1),A ENDL DJNZ BALL1 RET CH_GEN LD DE,CHAIN LD B,#80 EXX LD HL,SIN EXX CH_LP PUSH BC LD HL,CH_EXMP LD BC,NODOT-CH_EXMP LDIR LD C,CHAIN-NODOT EXX LD A,(HL) INC L SUB (HL) EXX JR Z,JR_OK DEC C DEC C INC HL INC HL JR_OK LDIR POP BC DJNZ CH_LP LD A,201 LD (DE),A RET S_DATA DB #1F,#1F,#1F,#1F,#1F,#1F,#1F DB #1F,#1E,#1E,#1E,#1E,#1E,#1D DB #1D,#1D,#1D,#1C,#1C,#1C,#1B DB #1B,#1B,#1A,#1A,#19,#19,#18 DB #18,#17,#17,#16,#16,#15,#15 DB #14,#14,#13,#12,#12,#11,#11 DB #10,#0F,#0F,#0E,#0D,#0D,#0C DB #0B,#0A,#0A,#09,#08,#08,#07 DB #06,#05,#05,#04,#03,#02,#02 DB #01,#00 CH_EXMP BIT 4,C JR Z,NODOT LD A,(HL) OR B LD (HL),A NODOT JR NOSTEP LD A,D SUB E JR NC,NOADD ADD A,64 RRC B JR NC,NOADD INC HL NOADD LD D,A NOSTEP INC C CHAIN EQU $