ZX-Spectrum & TR-DOS за потребители и програмисти - Архитектура ZX SPECTRUM - система

Прекъсванията са основни инструменти за програмиране-
паралелни процеси. С тяхна помощ, например, в ZX Spectrum
едновременно с изпълнението на програмата в BASIC се извършва ска-
настройка и синхронизиране на клавиатурата от системния таймер.

Z80 има два входа за хардуерна инициализация
прекъсвания: INT - за маскирани прекъсвания и NMI - за немаскирани-
управлява. Маскираните прекъсвания получиха името си от-
възможността за програмно деактивиране или активиране на реакцията на сигнал за прекъсване-
докато за немаскируеми прекъсвания това е невъзможно.

Таблица 2. Битове за състояние
kemp ston джойстик.

Таблица 2. Битове за състояние
kemp ston джойстик.

Предпоставка за правилното функциониране на програмите
обслужването на прекъсванията е тяхната балансирана работа със стека:
по времето, когато прекъсването се върне, стекът трябва да е в същото състояние като
което той беше по време на пристигането на прекъсването. Друго условие
е да запазите всички регистри, включени в сервизната програма-
прекъсва и възстановява техните стойности при връщане от
прекъсвания.

В ZX Spectrum половин контур постоянно се подава към INT входа на процесора-
Плосък сигнал за синхронизация с период от 1/50 секунди. Към операционната-
в системата това се използва за организиране на анкетиране на клавиатурата и-
стойността на системния брояч едновременно с работата на преводача-
Татор ОСНОВНИ.

Можете да контролирате преминаването на маскирани прекъсвания с командата-
mi DI и EI, които променят състоянието на специален вътрешен спусък
микропроцесорен IFF. Командата DI нулира този тригер, като деактивира-
извличане, EI го настройва да позволява прекъсвания.

Когато се извика маскируемо прекъсване, IFF задейства автоматично
изчистено, забранено повторното извикване на прекъсванията. След обработка
процесорът за прекъсвания не задава отново спусъка - за да се активира
преминаването на последващи прекъсвания, програмистът трябва да включи в
програмна команда EI.

Z80 има три маскируеми режима на работа с прекъсвания, които
зададени от командите на процесора IM 0, IM 1 и IM 2. За съжаление,
е почти невъзможно програмно да се определи в кой режим
обработката на прекъсвания е процесорът в определен момент.

Режимът се задава или чрез командата IM 0, или чрез хардуерно нулиране
процесор и не се различава от режима за обработка на прекъсвания в
микропроцесор 18080. При пристигане на INT сигнала процесорът чете от шината
код за данни на данни (предварително зададен към шината от външен-
издърпващо устройство) и го изпълнява. По принцип може да бъде всеки
команда (най-често срещаните команди са RST N или CALL addr). Но
ZX Spectrum е проектиран по такъв начин, че когато се извика прекъсване в режим 0
стойността 255 (#FF) винаги се чете от шината за данни - RST команден код 56.
Следователно за ZX Spectrum този режим е подобен на режим 1. *

Задава се от командата IM 2. Режимът позволява програмиране-
Мога да се справя сам с прекъсвания, което е интересно.

*) Строго погледнато, това не е напълно вярно, вижте бележката за режим 2.

**) Някои външни устройства, например AMX-мишка, могат да генерират-
Добавете вектор на прекъсване, различен от 255.

PRINT PEEK (2559) + 256 * PEEK (2560)

10 ВХОД "Вектор на прекъсване:"; l: REM вектор на прекъсване

20 ПЕЧАТ I.PEEK (l "256 + 255) + 256 * PEEK (1 * 256 + 255 + 1)

Връщането от маскирани прекъсвания се извършва от командата RETI.
Разпознава се от специални периферни микросхеми *, които чрез-

Таблица 3. Адреси на процедурите за обработка на прекъсвания.

Таблица 3. Адреси на процедурите за обработка на прекъсвания.

*) Компанията Zilog разработи микросхеми, включени заедно с
Z80 CPU в комплекта под общото име Z80.

Позволява ви да организирате система за прекъсване на няколко нива. Но тъй като
в ZX Spectrum тази система не се използва, след това се върнете от прекъсване
можете да използвате командата RET.

В ZX Spectrum не е включено немаскируемо прекъсване, но

може да е причинено от някои външни устройства. При това
вместо стандартния "фърмуер" се свързва ROM, който е причинил прекъсването-
устройството, в което е записан манипулаторът на прекъсвания.
Този принцип се използва например в дисковата система Beta Disk.
от Technology Research и Multiface One от Romantic
Робот.

При въвеждане на немаскируемо прекъсване, спусъка IFF се нулира,
и следователно повикването на маскирани прекъсвания е забранено.

Връщане от немаскируемо състояние на прекъсване и възстановяване
IFF регистър се появява по командата на процесора RETN.

Трябва да се отбележи, че Z80 всъщност включва два задействания-
обработка на прекъсвания: IFF1 и IFF2. IFF1 спусъка се използва за
контролира разделителната способност на маскирани прекъсвания и IFF2 я съхранява
състояние при обработка демаскиран. Отразете състоянието на задействане на IFF2-
зададени от P/V бита на регистъра на флага след изпълнението на LD A, 1 или
LD A, R.

Състояния на задействания IFF1 и IFF2 в различни режими на работа
процесора са дадени в табл. 4.

Таблица 4. Състояния на задействащи фактори IFF1 и IFF2.

Таблица 4. Състояния на задействащи фактори IFF1 и IFF2.

задава режим 0

връщане от прикрито
прекъсвания

връщане от немаскируемо-
th прекъсване

Област на екранната памет

Размерът на екрана в ZX Spectrum е 256 точки хоризонтално и
192 вертикално. Операционната система показва символи на екрана
проведено в стандартна матрица 8x8. Така че екранът
разделен на 24 символни реда с по 32 знака всеки (виж фиг. 13).

архитектура

Фигура: 13. Структурата на екрана ZX Spectrum.

Фигура: 13. Структурата на екрана ZX Spectrum.

архитектура

Екранната област за сила на звука се използва за показване на изображения.-
Това е 6K, а областта на атрибутите е 768 байта. Всеки байт от областта на екрана
определя състоянието на 8 точки, разположени хоризонтално една след друга
(бит 7 съответства на лявата точка, бит 0 надясно). Ако има малко
байт, зададената от този бит точка приема цвета на тона,
ако битът е изчистен, цветът на фона. Байтове, съответстващи на линиите на екрана,
не са разположени последователно в паметта. Първите 32 байта на екрана
области, зададени отляво надясно на горния ред, следващите 32 байта - 9-ти
отгоре, следващия - 17-и и по-нататък през 8 реда до 57-и. Тогава
разположени байтове, съответстващи на низове 2-ри, 10-ти и т.н. до 58-и.
По този начин, с отместване на една и стъпка от 8 линии, горната
64 реда, тоест една трета от екрана. По същия начин, започвайки съответно от 65-и
и 129-ти ред, се определят средната и долната трета на екрана.

В атрибутите ZX Spectrum (цвят на тона, цвят на фона, яркост и трептене)
са зададени не за една точка, а за познаване. Всеки познат в
областта на атрибута съответства на един байт, в който:

Битове D0. D2 определя цвета на тона (виж страница 64);
Битове D3. D5 определя цвета на фона;

Бит D6 е настроен в режим с висока яркост (зададен едновременно-
но също така и за тон и фон);
Бит D7 е настроен в мигащ режим.

Байтовете на атрибутите са последователни в паметта. Първи 32
байтовете на атрибутите съответстват на горния символен низ, следващия 32
- вторият символен ред отгоре и по-нататък до края на екрана.

Програмите по-долу ще ви помогнат да разберете структурата-
Яжте екрана ZX Spectrum. Първият демонстрира битово картографиране
местоположения на паметта в областта на екрана до точките на екрана:

10 ГРАНИЦА 5: ХАРТИЯ 7: МАСТИЛО 9: CLS: Подготовка на екрана REM
20 INPUT "битови числа 0. 7"; b: REM въведете битов номер
30 LET n = 21 b: Изчисляване на теглото на REM бита
40 POKE 16384, n: REM записва байта, съдържащ набора
до един бит, до първата клетка на областта на екрана
50 ГОТО 20

Следващата програма рисува екрана, последователно записва-
стойността 255 в клетките на областта на екрана.
пауза, като натиснете произволен клавиш.

Демонстрира съответствието на байтовете на атрибутите с познаването на екрана
следната програма:

10 ГРАНИЦА 7: ХАРТИЯ 7: МАСТИЛО 7: CLS: Цвят на REM екрана бял

20 LET n = 703: LET c = 1: GO SUB 110: REM запълване на главния екран

30 LET n = 63: LET c = 0: GO SUB 110: REM запълване на сервизния екран

50 LET b = INT (a/256): На REM b е присвоена стойността 0,255

60 POKE a, b: REM записва следващата стойност в областта на атрибутите

70 ПЕЧАТНА ХАРТИЯ 7; МАСТИЛА 0; AT 5.5; b;: REM печат b

80 АКО INKEYJO " СЛЕД ОТИДЕТЕ НА 50: REM пауза

90 СЛЕДВАЩ а: REM края на цикъла

100 СТОП: Спиране на програмата REM

110 ЗА a = 0 ДО n: Подпрограма за запълване на екрана REM

120 PRINT # s; "*";: REM запълване на екрана със *

130 СЛЕДВАЩ а: REM края на цикъла

140 RETURN: REM връщане от подпрограмата за запълване на екрана

Стандартният ZX принтер има една игла, която е в процес на печат
последователно преминава 256 позиции хоризонтално. Поради това,
низ символи се отпечатва в 8 прохода. Подготовка на символен низ
за печат се появява в буфера на принтера.

Много често буферът на принтера се използва за други цели, но като
допълнителни 256 байта памет, например при адаптиране на програми към
дискови системи или за хостване на зареждащи устройства. Но заемане на буфера
за вашата програма трябва да се има предвид, че тя няма да работи за
Спектър 128, в който буферната зона на принтера се използва за оразмеряване-
допълнителни системни променливи. *