8. ОРГАНИЗАЦИЯ ПАМЯТИ КОМПЬЮТЕРА.
для возможности работы операционной системы компьютера в
его памяти выделено несколько областей. эти области отделены
друг от друга некоторыми границами, которые могут иметь посто-
янный (фиксированный) характер, а могут изменяться в зависи-
мости от конкретных требований.
карта памяти компьютера.
фиксированные границы обозначены числом, а переменные - име-
нем системной переменной. в которой они хранятся.
о 16383 -пзу.
16384 22527 - экранная область. изображение хранится
здесь в черно-белом виде.
22528 23295 - область атрибутов. цвета, признаки
яркости имигания.
23296 23551 - область буфера zx-принтера. при отсутствии
такого принтера часто используется для
хранения небольших процедур в машинных
кодах. здесь они не повреждаются бейсиком
и, кроме того, размещение их в нижней
половине памяти компьютера повышает их
быстродействие. в компьютерах 128к в этой
области хранятся дополнительные системные
переменные. для поддержания повышенных
возможностей этих машин категорически
нельзя ничего засылать в эту область памяти.
23552 23733 - область системных переменных.
23734 .chans-1 - карты памяти микродрайва. при работе с
микродрайвом здесь хранится информация
например об испорченных секторах на ленте
и т. п. если микродрайва нет, то эта область
не организуется.
chans prog-2 - здесь размещается информация о каналах.
prog vars-1 -текстпрограммы,записанной на бейсике
отметим, что он хранится несколько в иной
форме, чем то, что вы видите на экране.
vars el1ne-2 - область хранения переменных, с которыми
оперирует бейсик-программа.
eune worksp-1 - буфер редактора. сюда помещается строка
программы, когда вы выполняете ее ввод
или редактирование.
worksp stkbot-1 -буфер инструкции input.
stkbot stkend-1 - стек калькулятора. к нему обращается
интерпретатор бейсика. калькулятор служит
для выполнения арифметических операций.
калькулятор может вызываться из машинного
кода командой ассемблера rst 40. по оконча
нии операции на вершину стека помещается
ее результат
stkend sp - свободное пространство. сюда развиваются
навстречу друг другу стек калькулятора и
машинный стек. sp - это не системная
переменная. это указатель машинного
стека. его можно вызвать только из
машинного кода. из бейсика он недоступен.
sp err sp -машинный стек. нужен процессору z80 для
выполнения обработки данных, адресов и пр.
errsp+1 ramtop - стек возвратов. (go sub-стек).
здесь хранится информация о номере
строки, к-которой надо вернуться после
выполнения подпрограммы по return.
ramtop udg - свободная область. может быть использована
для хранения процедур в машинных кодах.
udg pramt -область графики пользователя.
pramt - физическая вершина памяти компьютера.
для спектрума-48 - pramt-65535, а для
спектрума-16 - это 32767.
9. МЕТОДЫ ВВЕДЕНИЯ РУССКОГО ШРИФТА.
обеспечение возможности работы компьютера с символами рус-
ского алфавита является, наверное, одной из первейших задач, ко-
торые возникают перед тем, кто хочет сам писать программы на
спектруме.
существуют два принципиально различных подхода для решения
этой задачи. первый подход состоит в использовании символов
графики пользователя, а второй - в создании нового набора симво-
лов, размещении его в оперативной памяти и назначении его в ка-
честве действующего с помощью системной переменной chars.
использование графики пользователя
в графическом режиме вы можете, во-первых, набирать графиче-
ские символы блочной графики, расположенные на цифровых кла-
вишах. а также можете воспользоваться символами графики поль-
зователя. их может быть до 21; они берутся нажатием на клавиши от
"а"до "u" в графическом режиме (курсор "g"). изображение символов
графики пользователя должны быть сформированы в специальной
области памяти, на которую указывает системная переменная udg.
адрес, в котором расположено изображение символа (8 байтов) мо-
жет бьггь получен с помощью функции usr. таким образом, заслав,
начиная с адреса usr "а", 8 байтов, формирующих изображение, ска-
жем буквы я, мы будем иметь возможность нажатием клавиши "а" в
графическом режиме печатать на экране букву "я".
учитывая, что многие буквы русского и латинского алфавита име-
ют сходное начертание ( например о. а, x, н, р. и др. ), можно задать
прописные буквы, не имеющие аналогов и при этом уложиться в
разрешенный 21 символ.
изображение буквы "я" формируется из точек экрана (пикселей)
например так:
ТАКИМ ОБРАЗОМ, В РЕЗУЛЬТАТЕ ТАКОГО СИНТЕЗА ШАБЛОНА БУКВЫ "Я",
МЫ МОЖЕМ ПРЕДСТАВИТЬ ЕЕ ПОСЛЕДОВАТЕЛЬНОСТЬЮ ИЗ 8 БАЙТОВ, РАЗМЕ-
СТИВ ИХ В СООТВЕТСТВУЮЩЕМ МЕСТЕ - 0, 62, 66, 66, 62, 34, 66, 0. ТОЧНО ТАК
ЖЕ, МОЖНО ИЗОБРАЗИТЬ И ОСТАЛЬНЫЕ ЖЕЛАЕМЫЕ СИМВОЛЫ.
10 FOR Z-l ТО 20
20 READ А$ '
30 FOR Х=0 ТО 7
40 READ Y
50 POKE USR А$ + X, Y
•60 NEXT X
70 NEXT Z
80 DATA "В", 0, 126, 64, 124, 66, 66, 124, 0
81 DATA "G", 0, 126, 64, 64, 64, 64, 64, 0
82 DATA "D", 0, 28, 36, 36, 36, 36, 126, 66.
83. DATA "J", 0, 65, 73, 62, 73, 73, 65, 0
84 DATA "I", 0, 66, 70, 74, 82, 98, 66, 0
85 DATA "L", 0, 30, 34, 34, 34, 34, 98, 0
86 DATA "P", 0, 126, 66, 66, 66, 66, 66, 0
87 DATA "0", 0, 66, 66, 36, 24, 16, 96, 0
88 DATA "C", 0, 68, 68, 68, 68, 68, 126, 2
89 DATA "H", 0, 66. 66, 66, 126, 2, 2, 0
90 DATA "N", 0, 65, 73, 73, 73, 73, 127, 0
91 DATA "M", 0, 65, 73, 73, 73, 73, 127, 1
92 DATA "E", 0, 60, 66, 30, 2, 66, 60, 0
93 DATA "U", 0, 76. 82, 114, 82, 82, 76, 0
94 DATA "A", 0, 62, 66, 66, 62, 34, 66, 0
95 DATA "S", 24, 66, 70, 74, 82, 98, 66, 0
96 DATA "R", 0, 64, 64, 124, 66, 66, 124, 0
97 DATA "T", 0, 192, 64, 124. 66, 66, 124, 0
98 DATA "F". 0, 127, 73, 73, 73, 127, 8, 0
99 DATA "0", 0, 66, 66, 114, 74, 74, 114, 0
в результате работы этой программы устанавливается следующее
соответствие между клавишами в графическом режиме и символа-
ми русского алфавита:
НАБОР ЗНАКОВ КОМПЬЮТЕРОВ "SPECTRUM' СОСТОИТ ИЗ 96 СИМВОЛОВ И ЗА-
НИМАЕТ 96*8-768 БАЙТОВ. СТАНДАРТНЫЙ НАБОР НАХОДИТСЯ В ПЗУ ПО АДРЕ-
СУ 15616. ЭТОТ АДРЕС МОЖНО ОПРЕДЕЛИТЬ С ПОМОЩЬЮ СИСТЕМНОЙ ПЕРЕ-
МЕННОЙ CHARS, НАПРИМЕР, КОМАНДОЙ:
PRINT РЕЕК 23606+256¥РЕЕК 23607+256 15616 O.K.
ПРИ ЭТОМ ПО АДРЕСУ 23606 НАХОДИТСЯ 0, А ПО АДРЕСУ 23607 - 60.
ИЗМЕНЕНИЕ НАБОРА ЗНАКОВ СОСТОИТ В ТОМ, ЧТОБЫ СФОРМИРОВАТЬ С ПО-
МОЩЬЮ КАКОЙ-ЛИБО СПЕЦИАЛИЗИРОВАННОЙ ПРОГРАММЫ ИЛИ ВРУЧНУЮ
ЖЕЛАЕМЫЙ НАБОР ЗНАКОВ, ПОМЕСТИТЬ ЕГО В ЛЮБОЕ СВОБОДНОЕ МЕСТО
ОПЕРАТИВНОЙ ПАМЯТИ И ИЗМЕНИТЬ СОДЕРЖИМОЕ ЯЧЕЕК 23606 И 23607, ЧТО-
БЫ ОНО УКАЗЫВАЛО НА АДРЕС МЕСТА РАСПОЛОЖЕНИЯ НОВОГО НАБОРА.
РАССМОТРИМ ЭТИ ПРОЦЕДУРЫ НА КОНКРЕТНОМ ПРИМЕРЕ.
1. ДЛЯ ФОРМИРОВАНИЯ НАБОРА ЗНАКОВ ОЧЕНЬ УДОБНО ИСПОЛЬЗОВАТЬ
ГРАФИЧЕСКИЙ РЕДАКТОР "ARTSTUDIO". ЭТА ПРОГРАММА НЕ ТОЛЬКО ЯВЛЯЕТ-
СЯ ИДЕАЛЬНЫМ ГРАФИЧЕСКИМ РЕДАКТОРОМ, ПОЗВОЛЯЮЩИМ ЛЕГКО ВЫ-
ПОЛНЯТЬ ГРАФИЧЕСКИЕ ИЗОБРАЖЕНИЯ, НО И ПОЗВОЛЯЕТ КОНСТРУИРОВАТЬ
ШРИФТЫ. ВЫГРУЗИМ СФОРМИРОВАННЫЙ ШРИФТ НА ЛЕНТУ.
2. ДОПУСТИМ, МЫ ХОТИМ РАЗМЕСТИТЬ НОВЫЙ ШРИФТ. НАЧИНАЯ С АДРЕСА
30000. ЗАГРУЗИМ ЕГО С ЛЕНТЫ КОМАНДОЙ: LOAD""CODE 30000, 768.
3. СИСТЕМНАЯ ПЕРЕМЕННАЯ CHARS ДОЛЖНА УКАЗЫВАТЬ НА АДРЕС, НАХО-
ДЯЩИЙСЯ НА 256 БАЙТОВ НИЖЕ, Т. Е. НА 30000-256-29744.
4. ОПРЕДЕЛИМ СТАРШИЙ БАЙТ ДВУХБАЙТНОЙ ПЕРЕМЕННОЙ .CHARS.
B2-INT(29744/256)-l 16.
5. ОПРЕДЕЛИМ МЛАДШИЙ БАЙТ:В 1-29744-116»256-48.
6. ПЕРЕКЛЮЧЕНИЕ НА ПЕЧАТЬ СФОРМИРОВАННЫМ ВАМИ ШРЙФТОМ ВЫ-
ПОЛНЯЕТСЯ КОМАНДОЙ РОКЕ 23606,48: РОКЁ 23607,116. ОБРАТНОЕ ПЕРЕКЛЮ-
ЧЕНИЕ НА ЛАТИНСКИЙ ШРИФТ - КОМАНДОЙ РОКЕ 23606,0: РОКЕ 23607,60.