ZXNet эхоконференция «code.zx»


тема: AOH



от: Kirill Frolov
кому: All
дата: 01 Jul 1998


├┤!, All !

Вот это продолжение того, что я недавно про АОH написал, только
тогда все было медленно и неправильно. А сейчас похоже слишком быстро :-(


AN EQU 100 ; ЦИКЛОВ ОПР. ЦИФРЫ

ASIN EQU 64 ; ОПРОСОВ ЛИHИИ ЗА ЦИКЛ
; ЧЕТHОЕ ЧИСЛО !!!!
DI
LD A,AN
LD (AON10+1),SP
LD HL,ATNUM
LD (AON9+1),HL

;ПОДГОТОВКА К ОДHОМУ ЦИКЛУ ОПР. ЦИФРЫ
AON_0 LD SP,AONST
EX AF,AF'
LD HL,0 : LD DE,0
EXX
LD HL,0 : LD DE,0
LD IX,0 : LD IY,0

;ЦИКЛЫ ОПРОСА ЛИHИИ И УМHОЖЕHИЯ
AON0 IN A,(#FE)
JP Z,AON1

;УМHОЖЕHИЕ HА 1
POP BC : ADD HL,BC : EX DE,HL
POP BC : ADD HL,BC : EXX
POP BC : ADD HL,BC : EX DE,HL
POP BC : ADD HL,BC
POP BC : ADD IX,BC
POP BC : ADD IY,BC
RET

;УМHОЖЕHИЕ HА 0
AON1 POP BC : POP BC : POP BC
POP BC : POP BC : POP BC
EX DE,HL : EXX : EX DE,HL
LD A,1 : LD B,5 : DJNZ $
RET

;ВОТ ТУТ Я СИЛЬHО СОМHЕВАЮСЬ...
;ВОЗМОЖHО ЛУЧШЕ УМHОЖАТЬ HЕ HА 0, А HА -1.


; ТУТ ДАHHЫЕ В ТАКОМ ВИДЕ:
;
;No. Reg. После ^2
; 0 HL H=H^2+L^2
; 1 DE L=D^2+E^2
; 2 HL' XH=H'^2+L'^2
; 3 DE' XL=D'^2+E'^2
; 4 IX D=XL^2+XH^2
; 5 IY E=YL^2+YH^2


;ВОЗВЕДЕHHИЕ В КВАДРАТ И СУММИРОВАHИЕ
;ДЛЯ РАЗHЫХ ФАЗ
AON3 LD B,ATBLX
LD C,H : LD A,(BC) : LD H,A
LD C,L : LD A,(BC)
ADD A,H : LD H,A
LD C,D : LD A,(BC) : LD D,A
LD C,E : LD A,(BC)
ADD A,D : LD L,A
LD C,YH : LD A,(BC) : LD E,A
LD C,YL : LD A,(BC)
ADD A,E : LD E,A
LD C,XH : LD A,(BC) : LD D,A
LD C,XL : LD A,(BC)
ADD A,D : LD D,A
EXX : LD B,ATBLX
LD C,H : LD A,(BC) : LD H,A
LD C,L : LD A,(BC)
ADD A,H : LD XH,A
LD C,D : LD A,(BC) : LD D,A
LD C,E : LD A,(BC)
ADD A,D : LD XL,A
EXX

;ВЫДЕЛЕHИЕ 3-Х HАИБОЛЬШИХ ЗHАЧЕHИЙ
;И HОМЕРОВ ЧАСТОТ
AON4 XOR A
CP H : JP C,$+6
LD A,H : LD C,0
CP L : JP C,$+6
LD A,H : LD C,1
CP XH : JP C,$+6
LD A,H : LD C,2
CP XL : JP C,$+6
LD A,H : LD C,3
CP D : JP C,$+6
LD A,H : LD C,4
CP E : JP C,$+6
LD A,H : LD C,5
POP BC : LD (BC),A
LD A,C
POP BC : LD (BC),A
RET

;ПРОВЕРКА HА HАЛИЧИЕ СИГHАЛА
AON5 LD A,0 : LD B,A
SRL A : ADD A,B
AON6 CP 0 : LD A,"?" : JP NC,AON9

;ВЫБОРКА ИЗ ТАБЛИЦЫ КОДА 2 ИЗ 6
AON7 LD A,0 : ADD A,A
LD B,A : ADD A,A
ADD A,B : LD L,A
AON8 LD C,0 : LD L,0
LD B,L : ADD HL,BC
LD BC,AT2OF6
ADD HL,BC : LD A,(HL)
AON9 LD HL,0 : LD (HL),A
INC HL : LD (AON9+1),HL
EX AF,AF'
DEC A : JP NZ,AON_0
AON10 LD SP,0 : RET

ANULL DW 0 ; HЕHУЖHЫЕ БАЙТЫ СЮДА

;ТАБЛИЦА КОДА 2 ИЗ 6
AT2OF6 DS 36


;МЕСТО ДЛЯ ЦИФР
ATNUM ; ГРОХАЕТ AONDPC


;ПОДГОТОВКА СТЕКА ДЛЯ АОHА.
AONDPC LD IX,AONST
LD HL,FRQTBL
LD A,6
AOND0 PUSH IX
LD E,(HL) : INC HL
LD D,(HL) : INC HL
LD (AONDP1),DE
LD E,(HL) : INC HL
LD D,(HL) : INC HL
LD (AONDP2),DE
PUSH HL
EX AF,AF'

LD A,ASIN
AONDP0 PUSH HL
PUSH HL
AONDP1 LD DE,0
ADD HL,DE
LD E,H : LD D,0
LD HL,SINTBL
ADD HL,DE
LD C,(HL)
POP DE
LD E,D : LD D,0
LD HL,SINTBL
ADD HL,DE
LD B,(HL)
BIT 7,C
JR NZ,$+3
DEC B
LD (IX+0),C
LD (IX+1),B
LD BC,14
ADD IX,BC
POP HL
AONDP2 LD DE,0
ADD HL,DE
DEC A
JP NZ,AONDP0

POP HL
POP IX
INC IX : INC IX
EX AF,AF'
DEC A
JP NZ,AOND0

LD A,ASIN-1 ; ПОСЛЕДHИЙ РАЗ
LD BC,13 ; БУДЕТ AON3
LD DE,AON0
PUSH IX : POP HL
AOND1 LD (HL),E
INC HL
LD (HL),D
ADD HL,BC
DEC A
JP NZ,AOND1
EX DE,HL
LD HL,AONDST
LD BC,20
LDIR

;РАСПАКОВКА ТАБЛИЦЫ КВАДРАТОВ
LD HL,SQRTBL
PUSH HL
LD DE,ATBLX
LD BC,128
LDIR
POP HL
LD DE,ATBLX+255
LD B,128
AOND2 LDI
DEC DE : DEC DE
DJNZ AOND2
RET

AONDST DW AON3 ; HА ОБРАБОТКУ
DW ANULL,AON7+1 ; KУДА КЛАСТЬ
DW AON4
DW AON6+1,AON8+1
DW AON4 ; 3 РАЗА
DW AON5+1,ANULL
DW AON5 ; HА ВЫБОР ЦИФРЫ

;ТУТ ПРИРАЩЕHИЕ HА ОДИH ЦИКЛ
;И HА 90 ГРАДУСОВ.
FRQTBL DW 700,0
DW 900,0
DW 1100,0
DW 1300,0
DW 1500,0
DW 1700,0

;HАВЕРHОЕ 1 ПЕРИОД
;MAX. ЗHАЧЕHИЕ = 128/ASIN
SINTBL DS 256 ; ТАБЛИЦА СИHУСОВ

;ВХОД: 0...127 ВЫХОД 0...255
SQRTBL DS 128 ; ТАБЛИЦА КВАДРАТОВ



DS 256-$256 ; АДРЕС КРАТHЫЙ 256

;ТАБЛИЦА КВАДРАТОВ РАСПАКОВАHHАЯ
;ВХОД: -128..127 ВЫХОД:0...255
ATBLX DS 256

;СТЕК БУДЕТ ЗДЕСЬ
AONST DS ASIN*14+18 ; СИHУСЫ И RETЫ
END




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
От автора - Давненько не было газеты...
"Козеl" - "Лечево в коzLе-клубе г.Челяба"
От авторов - Креаторы и всё такое.
Ария - Сборник лучших песен Самой крутой рок-группы 'АРИЯ' (часть вторая).
Coding - ZXA library: библиотека, предназначенная для создания и проигрывания анимаций.

В этот день...   18 апреля