Электронные устройства для "Sinclar ZX Spectrum" 1993 г.

Программное обеспечение - несколько полезных программ в машиннык кодах.


- 2.3. НЕСКОЛЬКО ПОЛЕЗНЫХ ПРОГРАММ В МАШИННЫК КОДАХ

Электродные устройства, описанные* этой кнйге, требуют для своей работы
наличия программ в машинных кодах, которыебудуттакже подробно описаны, как и
приведенные в этом разделе.

2.3Л. ПЕРЕСЫЛКА ДАННЫХ ИЗ ЭКРАННОЙ
В НЕКОТОРУЮ ДРУГУЮ ОБЛАСТЬ

Мнемоника Десятичный код Комментарий

Id de,58327 17 адрес области памяти-58327

(E3D7-uiecTH.) 215
227

Id hi, 16384 33 адрес экранной области-16384

(4000-шестн.) О

Id b,27 6 настроить счетчик В (1) на

27 счет до 27

push be 107 сохранить В (1)

Id b,0 6 настроить счетчик В (2) на

0 256(-О)

Id a,(hl) 126 переслать данные из экранной

Id (dc),a 18 в буфферную область памяти

inc dc 19 байт за байтом

inc nl 35

djnz-7 16 уменьшается на 1 счетчик В (2)

244 и выполняется переход на 7

байт назад если не О
pop be 193 в счетчик загружается В (1)

djnz -12 16 уменьшается на 1 счетчик В (1)

244 и выполняется переход на 12

байт назад если не О

ret 201 возврат в БЕЙСИК

Счетчики в этой программе считают до 28 и до 256. Работа программы завершается
когда 27x256-6912 байтов будет перемещено. Из них 6144 байтов составляют экран-
ную область, а 768 байт составляют область атрибутов, в которой хранится информа-
ция о цвете.

2.3.2. ПЕРЕСЫЛКА ДАННЫХ ОБРАТНО
В ЭКРАННУЮ ОБЛАСТЬ ПАМЯТИ

Мнемоника Десятичный код Коментарий

Id hi,ООО 33 обнуление HL

О
О

add hl,sp 57 сохранить указатель стека в HL

Id de, (23653) 237 загрузка в DE адреса начала

91 свободной области памяти
101 -23653

92

and а 167

sic hl,de 237 HL-(DE) в HL; вычисление раз-

82 меров свободной области

push hi 229 передача результата в ВС

pop be 193 через стек

ret 201 возврат в БЕЙСИК

Загрузите программу.
10 FOR X —ОТО 13
20 READ n
30 POKE <3200(M-x),n
40 NEXTx

50 DATA 33,0,0,57,237,91,101,92,167,237,82,229,193,201
Эта программа, загруженная в память, может быть вызвана в любой момент с
помощью:

print usr 32000 - :

Для загрузки этой програ*«йй мЬЬйет бьп1» йсЙшьзован альтернативный REM-ме-
тод:

1 REM аааааааааааааааааааааа "вш

10 DATA 33,0,0,57>237,9167,Й7,82,22® Д93,201
20 FOR х-23760 tO 23773;^
30 READ п: РОКВ<х,п tjt4

40 NEXT х

Программа вызывает^* с помои^ёо: . »/

PRINT USR 23760 : -?Ч
в любом месте вызываем0%1ррграммы.

£*large"

В этом разделе описана программа которая будет использована во всех электрон-
ных устройствах, описанных в книге. Она позволяет отображать символы ( буквы,
цифры, знаки препинания) произвольного размера в любой точке экрана. Парамет-
ры, определяющие размер и размещение символов задаются в программе на БЕЙСИ-
КЕ так, как показано на рис.2.2.

XS, YS, CS - любое, хотя при значении около 20 один символ занимает весь экран.
Пример использования:

10 LET XS - 4 : LET YS - 4 : LET CS - 8 : LET Y- 100

LET D$ - "SPECTRUM": GOSUB 9390
9390 LET X - (256 - XS*CS*LEN D$)/2
9400 LET A - 23306: POKE A,X: POKE A+L,Y: POKE A+2,XS:
ОКЁ A+3,YS : POKE A+4,CS : LET A + A+4: FOR I - TO
EN D$ : POKE A+I, CODE D$(I) : NEXT I: POKE A+I,
55: RANDOM 12E USR 32256: RETURN
Далее приведена программа загрузки машинных кодов:

1 CLEAR 45500

2 FOR Х-32256 ТО 32532

3 READ а: РОКЕ х,а

4 NEXTx

5 DATA 33,15,91,126,35,34,0,91,111,60,200,38,0,41,41,41,237,75,
54,92,9,62,8,50,4,91,58,11,91,50,9,91,58,10,91,50,8,91,62,9,50,
5,91,126,35,34,2,91,7,50,6,91,58,5,91,61,32,50,58,4,91,61,32,
24,58,14

6 DATA 91,71,58,12,91,79,58,10,91,129,5,32,252,50,10,91,42,0,
91,125,3,126,50,4,91,58,13,91,71,58,9,91,128,50,9,91,42,2,91,
195,32,126,50,5,91,58,12,91,71,58,9,91,50,7,91,58,13,91,79,
197,205,164,126,193,58,7

7 DATA 91,60,50,7,91,13,32,241,58,8,91,60,50,8,91,5,32,221,58,
6,91,195,48,126,128,64,32,16,8,4,2,1,58,142,92,238,255,71,
58,141,92,160,71,58,8,91,230,248,111,58,7,91,254,192,208,31,
31,31,230,31,103,203,28,203,29,203,28,203,29,203,28,203,29,
62,88,180

8 DATA 103,58,142,92,166,176,119,58,7,91,71,230,7,246,64,103,
120,31,31,31,230,24,180,103,120,23,23,230,224,111,58,8,91,
71,31,31,31,230,31,181,111,235,33,156,126,120,230,7,79,6,0,
9,70,26,33,6,91,203,70,40,3,176,18,201,47,176,47,18,201

10 LET xs-4: LET ys-4: LET cs-8: LET y-100: LET d$-"Spectrum":

GO SUB 9390
20 STOP

9390 LET x-(256-xs*cs*LEN d$)/2

9400 LET a-23306: POKE a,x: POKE a+1 ,y: poke a+2,xs: poke a+3,ys
: POKE a+4,cs: LET a-a+4: FOR i-1 TO LEN d$: POKE a+i,CODE
d$(i): NEXT 1: POKE a+i,255: RANDOMIZE USR 32256: RETURN
Эта программа загружается, когда запускается основная программа. Ее можно
сохранить отдельно:

SAVE "large" CODE 32256,277 и загружать
LOAD "large" CODE 32256v277

вслед за обычной загрузкой основной программы:
LOAD""

Изменяя цвет чернил, бумаги, рамки и используя мигание можно создавать кра-
сивые надписи на экране.

При использовании данной программы с устройствами описанными в следующих
главах нужно руководствоваться следующими правилами:

1. Загрузите программу "LARGE" обычным способом и остановить магнитофон
после загрузки.

2. Наберите RUN. Программа начнет работать и произойдет загрузка машинных
кодов в область памяти с на экране появится надпись
SPECTRUM. После этого вьшВДЗгёнйё пр01}ЖМ**ызавершится в соответствии со сле-
дующим в строке 20 оператором STOP. ; Д

3. Загрузите программ^ которая должна использовать программу "LARGE", на-
пример программу "РНШр)" из глазы^ШЬ^нр такжещпользовать команду MERGE
для присоединения осЩёной программы и npOrpaMMbi^LARGE". Затем можно при-
соединить еще одну программу. ;

Например так мо^ороступий*£ программой Т1МЕ|Щриведенной ниже, необхо-
димо только загрузить игроки с 50^70: строки 9390,94(ЗЙЦЬтаются от присоединения
"LARGE" и первой прдЩммы. Бу|да; однакр^ внимателмш, не допускайте дублиро-
вания номеров строк, э^%щественШ^^ работы второй программы, так как строка
10 второй программы будет стерта строкой 10 первой%ЙЙжет показаться непонятным
почему для программы н&^ЕИСИКЕ программы -LARGE" выбраны номера строк
9390 и 9400. Этот выбор номеров программа расположена выше

любой программы и не пересекаётс^ ^ей. В строке 9390 автоматически определяется
горизонтальная координата X по котЙр)»р1азмещаются буква и слово. В строке 9400
делается остальное. Если пользователь сам хочет задать X, то строка 9390должна быть
уничтожена или заменена другой подпрограммой задающей координату X, такой как,
например, строка 80 в программе "PHOTO", вде
Х-20+(70х (Z-1)) и следующий GOSUB 9400.

С помощью этой программы можно создать большие электронные часы. Для этого
используются ячейки памяти с адресами 23674, 23673, 23672 в которых хранится
текущее время.

10 РОКЕ 23672,0: РОКЕ 23673,0: РОКЕ 23674,0

И LET т*нО: LET s-Ч) ==,.._ ==,,_ ........._ .........^........-

20 LET MNT ((65536*РЁ^К 23674+256*РЕЕ*Г236734РЕБК 23672)/50)
30 lt$-59THENCLS ^ 5 ;v "tV:

40 LET m-INT (t/60): LE^V-t-(m*60> Я.Ч /Ъ,
45 IFm-1 AND s-30 THEN BEEP 1,10

50 LET ys-4: LET xs-4: LET cs-8: LET y-10: LET d$-STR$ m: GO SUB 9390
60 LET y-100: LET d$-STR$ s: GO SUB 9390
70 GO TO 20

9390 LET x-(256-xs*cs*LEN d$) /2

9400 LET a-23306: POKE a,x: POKE a+l,y: POKE a+2,xs: POKE a+3,ys:
POKE a+4,cs: LET a-a+4: FOR i-1 TO LEN d$: POKE a+i,CODE d$(i)
: NEXT i: POKE a+i,255: RANDOMIZ E USR 32256: RETURN
Эта программа позже будет использована при описании устройств для фотогра-
фии.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Программирование - курс изучения ассемблера от Wlodek Black, продолжение.
TOP TEN - Десяточка лучших игр.
Рыбинские новости - проек WAR ROBOTS.
События - Отчёт главного организатора CHAOS CONSTRUCTION'2000 - Random^CC.
Greeting - приветы.

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