|
Форум - ещё раз о программе "ЖИЗНЬ".
|
ПРОГРАММА "ЖИЗНЬ"
ИФК: На крик о помощи по программе "LIFE" (ZX РЕВЮ 96/1-2), откликнулся Анисимов Денис и прислал свой вариант этой программы. Максимальное время сканирования всего жрана составляет около 4.5 секунд.
КОРР# Программа написана в формате GENS'a, и владельцам других ассемблеров придется изменить текст, особенно в области макросов. Макрос DWHL я переписал из описания MASM-128 (ИФК: ZX РЕВЮ 96/1-2), DWDE является переделкой DWHL, а UPHL я сделал сам. Счастливые пользователи MASM'a могут эти макросы не определять, а воспользоваться готовыми DOWN HL, DOWN DE и UP HL из этого ассемблера.
Изобразите на экране необходимую комбинацию точек и на-
шшшшшшш
форум
чинаите вызывать программу на исполнение, например так:
10 randomize usr adr : go to 10,
где adr - это адрес ассемблирования. Если запускать не через randomize..., а через let а=... то в це-ременной будет находится количество включенных пикселов. Это можно испльзовать так:
10 let a=usr adr : if a>0 then go to 10
или проще:
10 if usr adr then go to 10
Если какой-нибудь индивидуум в процессе передвижения подойдет к краю экрана, то он появится с другой стороны. И еще: у программы есть один недостаток для ее работы необходим буфер с адреса #С000 (49152) длиной #1800 (6144). Текст программы "Жизнь": Program 'Life' (С) Anisimow Den 1996
DWHL
DWDE
MAC |
|
INC |
H |
LD |
A.H |
AND |
#07 |
JR |
NZ,$+12 |
LD |
A,L |
SUB |
#E0 |
LD |
L,A |
JR |
NC.S+6 |
LD |
A,H |
SUB |
#08 |
LD |
H,A |
ENDM |
|
MAC |
|
INC |
D |
LD |
A,D |
AND |
#07 |
JR |
NZ,$+12 |
LD |
A,E |
SUB |
#E0 |
LD |
E.A |
JR |
NC,$+6 |
LD |
A,D |
SUB |
#08 |
LD |
D,A |
ENDM |
|
MAC |
|
DEC |
H |
LD |
A,H |
CPL |
|
AND |
#07 |
JR |
NZ.$+12 |
LD |
A,L |
SUB |
#20 |
LD |
L.A |
JR |
C,$+6 |
LD |
A,H |
ADD |
A,#08 |
LD |
H.A |
ENDM |
|
MAC |
|
RRA |
|
JR |
NC.S+3 |
INC |
В |
ENDM |
|
MAC |
|
RLA |
|
JR |
NC,$+3 |
INC |
С |
ENDM |
|
MAC |
|
OR |
С |
INC |
A |
JR |
NZ.S+3 |
INC |
В |
ENDM |
|
ORG |
40000 |
ENT |
$ |
Dl |
|
EXX |
|
PUSH |
HL |
PUSH |
IX |
LD |
HL,#C000 |
LD |
DE,#C001 |
LD |
BC,# 17FF |
LD |
(HL).L |
LDIR |
|
LD |
HL,#4000 |
LD |
B,#20 |
LD |
A,(HL) |
OR |
A |
шшшяшш
форум
JR |
NZ.L8 |
|
PUSH |
HL |
INC |
L |
|
LD |
BC,# 1F00 |
DJNZ |
L1 |
|
PUSH |
DE |
LD |
HL,#57E0 |
L10 |
LD |
D,#20 |
LD |
B,#20 |
L11 |
LD |
A,(HL) |
LD |
A,(HL) |
|
RLCA |
|
OR |
A |
|
JR |
C.L12 |
JR |
NZ.L8 |
|
OR |
A |
INC |
L |
|
JR |
NZ.L13 |
DJNZ |
L2 |
|
INC |
L |
LD |
HL,#56E0 |
|
DEC |
D |
LD |
E,#BE |
|
JR |
NZ.L11 |
LD |
B,#20 |
|
LD |
A,L |
LD |
C,L |
|
SUB |
#20 |
LD |
A,(HL) |
|
JR |
L21 |
OR |
A |
L12 |
DEC |
L |
JR |
NZ.L5 |
|
LD |
A,L |
INC |
L |
|
CPL |
|
DJNZ |
L4 |
|
AND |
#1F |
LD |
L,C |
|
JR |
Z.L17 |
UPHL |
|
L13 |
LD |
A,L |
DEC |
E |
|
AND |
#1F |
JR |
NZ.L3 |
|
CP |
В |
LD |
C.B |
|
JR |
NC.L14 |
EXX |
|
|
LD |
B,A |
El |
|
L14 |
LD |
A,L |
JP |
L34 |
|
OR |
#1F |
LD |
HL,#4000 |
|
LD |
L.A |
PUSH |
HL |
L15 |
LD |
A,(HL) |
INC |
H |
|
RRCA |
|
INC |
E |
|
JR |
C.L16 |
INC |
E |
|
OR |
A |
LD |
B,#20 |
|
JR |
NZ.L18 |
LD |
C,L |
|
DEC |
L |
LD |
A,(HL) |
|
JR |
L15 |
OR |
A |
L16 |
INC |
L |
JR |
NZ.L9 |
|
LD |
A,L |
INC |
L |
|
AND |
#1F |
DJNZ |
L7 |
|
JR |
NZ.L19 |
LD |
L.C |
L17 |
POP |
DE |
POP |
AF |
|
LD |
D,#20 |
PUSH |
HL |
|
EXX |
|
DWHL |
|
|
POP |
HL |
DEC |
E |
|
JR |
L22 |
JR |
L6 |
L18 |
LD |
A,L |
LD |
HL,#4000 |
|
AND |
#1F |
LD |
E,#C0 |
L19 |
CP |
С |
PUSH |
HL |
|
JR |
C.L20 |
POP |
HL |
|
LD |
С,A |
форум
XOR |
L |
|
LD |
A.(HL) |
LD |
L,A |
|
TS1 |
|
DWHL |
|
|
LD |
A,(DE) |
DEC |
E |
|
TS1 |
|
JR |
NZ.L10 |
|
POP |
DE |
POP |
DE |
|
POP |
HL |
LD |
А,С |
L26 |
LD |
A,(IX) |
SUB |
В |
|
TS2 |
|
INC |
A |
|
LD |
A,(HL) |
LD |
D,A |
|
TS2- |
|
LD |
A,B |
|
LD |
A,(DE) |
EXX |
|
|
TS2 |
|
POP |
HL |
|
PUSH |
ВС |
OR |
L |
|
EXX |
|
LD |
L.A |
|
POP |
HL |
PUSH |
HL |
|
EXX |
|
UPHL |
|
|
LD |
А,С |
LD |
A.H |
|
LD |
(DAT+1),A |
CP |
#40 |
|
PUSH |
HL |
JR |
NC.L23 |
|
PUSH |
DE |
LD |
H,#57 |
|
LD |
C,#7F |
EX |
(SP).HL |
L27 |
BIT |
6,C |
POP |
IX |
|
JR |
NZ.L28 |
EXX |
|
|
LD |
A.(DE) |
LD |
ВС,#0000 |
|
OR |
(HL) |
PUSH |
DE |
|
OR |
(IX) |
EXX |
|
|
JR |
NZ.L28 |
LD |
D.H |
|
LD |
C,#FE |
LD |
E,L |
L28 |
PUSH |
HL |
DWDE |
|
|
RRC |
С |
LD |
A.D |
|
JR |
C.L30 |
CP |
#58 |
|
LD |
A,L |
JR |
C.L25 |
|
OR |
#E0 |
LD |
D,#40 |
|
INC |
A |
LD |
ВС,#0000 |
|
JR |
NZ.L29 |
EXX |
|
DAT |
LD |
A, #00 |
BIT |
5,D |
|
JR |
L31 |
EXX |
|
L29 |
DEFB |
#DD |
JR |
Z.L26 |
|
INC |
L |
PUSH |
HL |
|
INC |
L |
PUSH |
DE |
|
INC |
E |
LD |
A,L |
L30 |
LD |
B,#00 |
OR |
#1F |
|
LD |
A,(IX) |
LD |
L.A |
|
TS3 |
|
LD |
A,E |
|
LD |
A,(HL) |
OR |
#1F |
|
TS3 |
|
LD |
E,A |
|
LD |
A,(DE) |
LD |
A,(IX+#1F) |
|
TS3 |
|
TS1 |
|
|
LD |
А,В |
EX |
AF.AF' |
ЕХХ |
|
LD |
A,H |
LD |
H,L |
ADD |
AtL |
EX |
AF.AF' |
LD |
L,A |
EX |
AF.AF' |
ADD |
A,L |
EXX |
|
LD |
B.A |
EX |
(SP).HL |
CP |
#05 |
JR |
NC.L33 |
CP |
#03 |
JR |
Z.L32 |
LD |
A,(HL) |
RRCA |
|
OR |
С |
INC |
A |
JR |
NZ.L33 |
LD |
А, В |
CP |
#04 |
JR |
NZ.L33 |
LD |
А,С |
RLCA |
|
CPL |
|
SET |
7,H |
OR |
(HL) |
LD |
(HL),A |
EXX |
|
INC |
ВС |
EXX |
|
POP |
HL |
BIT |
7,С |
JR |
NZ.L27 |
EXX |
|
DEC |
D |
EXX |
|
JR |
NZ.L27 |
POP |
HL |
POP |
IX |
EXX |
|
POP |
DE |
DEC |
E |
JP |
NZ.L24 |
EXX |
|
LD |
HL,#C000 |
LD |
DE,#4000 |
LD ВС,# 1800
El
HALT LDIR
L34 POP IX POP HL EXX RET
ИФК: Дмитрий прислал еще одну процедуру.
КОРР: Программа не является полностью моей, т.к. идею я взял из программы Кривцова А.Н. в ZX-РЕВЮ 94/4, стр 34.
Процедура выводит на экран стандартную картинку (6912), которую необходимо загрузить по адресу #С000 (49152).
(С) Anisimov Den 1996
|
ORG |
40000 |
|
ENT |
$ |
|
LD |
DEt#0000 |
S1 |
PUSH |
DE |
|
HALT |
|
S2 |
PUSH |
DE |
|
LD |
A,#7F |
S3 |
LD |
C,A |
|
LD |
A,D |
|
CP |
#20 |
|
JR |
NC.S6 |
|
LD |
A,E |
|
ADD |
A,A |
|
ADD |
A,A |
|
ADD |
A,A |
|
LD |
L,A |
|
LD |
H,# 16 |
|
ADD |
HL.HL |
|
ADD |
HL.HL |
|
LD |
A,L |
|
ADD |
A,D |
|
LD |
L,A |
|
LD |
А,С |
|
CP |
#40 |
|
JR |
NZ.S5 |
|
PUSH |
DE |
|
PUSH |
HL |
S4
55
56
LD |
A,H |
ADD |
A,A |
ADD |
A,A |
ADD |
A,A |
AND |
#7F |
LD |
H,A |
LD |
D,H |
LD |
E,L |
SET |
7,H |
LD |
B,#08 |
LD |
A,(HL) |
LD |
(DE).A |
INC |
H |
INC |
D |
DJNZ |
S4 |
POP |
HL |
LD |
B,H |
LD |
DE,#8000 |
ADD |
HL.DE |
LD |
A,(HL) |
LD |
H.B |
POP |
DE |
LD |
(HL),A |
DEC |
D |
LD |
A,C |
SUB |
#09 |
CP |
#37 |
JR |
NZ.S3 |
POP |
DE |
DEC |
D |
INC |
E |
LD |
A,E |
CP |
#18 |
JR |
NZ.S2 |
POP |
DE |
INC |
D |
LD |
A,D |
CP |
#3F |
JR |
NZ.S1 |
RET |
|
**************************************
СОДЕРЖАНИЕ:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Форум-Игры - в разделе рассмотрены: Dun Darach, Murray Mause (Supercop), Wild West Seymour, Sim City, Hero Quest, Dizzy-Y, Apollo, Cliffhanger, Laser Squad, Movie, Elite, Where Time Stood Still, Sceptre, Carrier Command, Math Day.
-
-
-
-
-
-
-
-
-
|
|