© А.Волков, г. Березники, Пермской обл.
Хочу предложить в рубрику "Этюды" свою программу. Подобной я у вас еще не встречал. Эта программа выполняет гашение экрана случайным образом по знакоместам.
COUNN COU_L
COU_E
|
10 |
ORG |
40000 | ||
|
20 |
ENT |
$ | ||
|
30 |
L1 |
LD |
BC, 3 | |
|
40 |
LD |
HL,22528 | ||
|
50 |
LD |
E, B | ||
|
60 |
L2 |
LD |
A, (HL) | |
|
70 |
AND |
A | ||
|
80 |
JR |
Z,L4 | ||
|
90 |
EXX | |||
|
100 |
INC |
DE | ||
|
110 |
LD |
A, D | ||
|
120 |
AND |
7 | ||
|
130 |
OR |
0 | ||
|
140 |
LD |
D,A | ||
|
150 |
LD |
A,(DE) | ||
|
160 |
EXX | |||
|
170 |
AND |
7 | ||
|
180 |
LD |
D,A | ||
|
190 |
LD |
A, (HL) | ||
|
200 |
AND |
7 | ||
|
210 |
SUB |
D | ||
|
220 |
JR |
NC, L3 | ||
|
230 |
XOR |
A | ||
|
240 |
L3 |
LD |
(HL),A | |
|
250 |
LD |
E, 1 | ||
|
260 |
L4 |
INC |
HL | |
|
270 |
DJNZ |
L2 | ||
|
280 |
DEC |
C | ||
|
290 |
JR |
NZ.L2 | ||
|
300 |
LD |
BC,10000 | ||
|
310 |
CALL |
L5 | ||
|
320 |
DEC |
E | ||
|
330 |
RET |
NZ | ||
|
340 |
JR |
L1 | ||
|
350 |
L5 |
PUSH |
BC |
|
360 |
PUSH |
AF |
|
370 L6 |
DEC |
BC |
|
380 |
LD |
A, B |
|
390 |
OR |
C |
|
400 |
JR |
NZ, L6 |
|
410 |
POP |
AF |
|
420 |
POP |
BC |
|
430 |
RET |
|
ORG |
30000 | ||
|
LD |
C, #18 |
; |
Настройка на диск. |
|
CALL |
#3D13 | ||
|
LD |
HL,#5CDD |
; |
Заполнение имя файла пробелами. |
|
PUSH |
HL | ||
|
LD |
B, 8 | ||
|
LD |
(HL),#20 | ||
|
INC |
HL | ||
|
DJNZ |
ZAP_ | ||
|
LD |
(HL),"B" |
; |
Установка некоторых |
|
LD |
L, #06 |
; |
переменных DOS. |
|
LD |
(HL),#09 | ||
|
LD |
L, #F9 | ||
|
LD |
(HL),#00 | ||
|
LD |
HL,(#5C5D); |
Системная переменная CH_ADD. | |
|
INC |
HL | ||
|
LD |
B, 8 |
; |
Переброска не более 8 байт, |
|
POP |
DE |
; |
записанных за REM в дескриптор |
|
INC |
HL |
; |
файла. |
|
LD |
A, (HL) | ||
|
CP |
#0D |
; |
Если конец строки - то и конец |
|
JR |
Z,IN_F1 |
; |
файла. |
|
LD |
(DE),A | ||
|
INC |
DE | ||
|
DJNZ |
IN_F | ||
|
LD |
C, #0A |
; |
Проверка на наличие |
|
CALL |
#3D13 |
; |
файла на диске. |
|
INC |
C | ||
|
JR |
NZ,LOAD |
; |
Если файл есть - то переход на LOAD, |
|
RST |
#08 |
; |
иначе сообщение об ошибке. |
|
DEFB |
#0E | ||
|
XOR |
A |
; |
По адресу #5DA0 должно быть #00. |
|
LD |
(#5DA0),A | ||
|
LD |
C, #0E |
; |
Загрузка файла. |
|
CALL |
#3D13 | ||
|
LD |
HL,(#5C42) |
; |
В HL номер стартующей строки. |
|
LD |
(#5C45),HL |
; |
Номер выполняющейся строки. |
|
RST |
#08 |
; |
Сообщение "OK" |
|
DEFB |
#FF | ||
Длина процедуры 60 байт. В 300 строке можно изменять скорость выполнения программы в широких пределах. Для испытания программы можно использовать следующую программу на BASICe.
10 CLEAR 3 9999 2 0 LOAD "CLS" CODE 4 0000 30 LOAD "SCREEN" SCREEN$ 4 0 RANDOMIZE USR 4 0000
В 30 строке загружается любой файл-экран.