Передовица » Макулатура » ИиО » Грани Агата

Грани Агата (N6/1991)

В статье речь идет о фирменной фишке Агата - возможности использовать несколько графических страниц для красивой анимации. Многие другие ПЭВМ того времени тоже умели переключать одну-две видеостраницы, но у Агата это было возведено в абсолют - любой участок основной оперативной памяти входил в ту или иную видеостраницу. Таким образом, для высшей графики можно было заранее заготовить 2-3 страницы (кадра), а для низшей графики и текстового режима число страниц могло достигать десятков (Интерпретатор Бейсика и ДОС в седьмом Агате располагались в модулях дополнительной памяти и не мешали своим присутствием использовать основную память для графических изысков. В девятке же основная память была в четыре раза расширена (с 32 до 128 Кб) и хотя Бейсик с ДОСом переместились туда, количество страниц для видеоэкспериментов не уменьшилось).

А.Кузнецов. пос. Кумёны. Группа сайта просит вас связаться с нами! (ЗАЧЕМ ЭТО?)

Постоянно стремясь к новому, более совершенному или более модному, мы порой незаслуженно пренебрегаем немало послужившим старым. А ведь если в начинающем терять свой блеск камне попробовать отыскать какие-то новые грани, то он может снова засиять, и даже невиданным до этого блеском. Попробуем сделать нечто подобное с нашим старым знакомым "Агатом", первым базовым школьным компьютером.

Предшественник "Агата" - американский компьютер "Apple-II", выпущенный в 1977 г., всё ещё популярен во всём мире. Значит, есть в этой машине нечто такое, чего мы не заметили и не использовали. Действительно, у каждой конструкции (в том числе и у компьютера) есть какие-то специфические преимущества; есть, естественно, и недостатки, необходимо хорошо знать как те, так и другие, чтобы адекватно ориентироваться в имеющемся программном обеспечении и создавать новые программы, максимально используя преимущества и компенсируя недостатки.

Архитектура, схемное решение, система команд процессора и способы адресации "Агата" довольно сложны, а поскольку большинство учителей не имеют специальной подготовки в вопросах схемотехники и программирования в кодах, то можно понять не очень большую популярность "Агата" в нашей школе. Если же добавить к этому 7 книг ребусов, прилагаемых в качестве инструкции...

Однако трудности изучения машины полностью компенсируются её возможностями. В частности, страничная организация памяти и переключение отображения областей методами схемотехники очень удобны в школьных приложениях, позволяют быстро менять содержимое всего экрана без переноса большой области памяти, как это делается у большинства компьютеров. Количество переключаемых страниц (до 13) позволяет одновременно иметь в памяти до трёх вариантов различных фрагментов, поскольку для имитации движения обычно достаточно четырёх сменяющих друг друга кадров, особенно привлекает то, что динамика достигается без применения программирования в кодах, средствами только лишь Бейсика.

Программы такого типа достаточно просты. Они состоят из двух частей. Первая часть является подготовительной: при её работе текстовые или графические страницы заполняются изображениями, представляющими собой кадры будущей динамической картины. Она работает довольно долго: от нескольких минут (в таком случае можно оставить эту часть в общей программе, которую запускают перед уроком, чтобы прошёл подготовительный этап) до нескольких часов. В последнем случае результат её работы (содержимое заполненных страниц) записывается на диск в виде двоичного файла, который будет загружаться при запуске второй части; первая работает только один раз и в дальнейшем не нужна.

Вторая (или единственная при наличии двоичного файла) часть меняет в циклическом режиме страницы или динамические фрагменты, а также скорость смены страниц в зависимости от нажатия управляющих клавиш.

Рассмотрим в качестве примера две простые программы: одну с встроенной подготовительной частью, другую с двоичным файлом. Первая предназначена для демонстрации внутренних процессов, происходящих в газах при изменении объёма и температуры. Можно имитировать изохорный, адиабатный и другие процессы. Программа выполнена в цвете. Подготовительная часть - строки 10-270, исполняющая - со строки 300. После подготовки программа автоматически начинает работать. Можно разделить части введением строки 280 END или 280 GET А¤. В таком случае запуск второй части директивой RUN 300 или нажатием любой клавиши. Управление осуществляется клавишами перемещения курсора: <ВВЕРХ> - повышение температуры, <ВНИЗ> - понижение, <ВЛЕВО> - поршень влево, <ВПРАВО> - поршень вправо.

10 REM ДЕМОНСТРАЦИОННАЯ ПРОГРАММА ПО ФИЗИКЕ
20 REM "ПРОЦЕССЫ В ГАЗАХ"
100 FOR I=2 TO 8
110 TEXT=I: HOME: M=29: GOSUB 500: RIBB0N=5
120 FOR J=5 TO 25 STEP 2
130 FOR K=0 TO 1
140 Y=INT(12*RND(1))
150 HTAB 4+12*K+Y: VTAB J: PRINT "O"
160 NEXT K
170 NEXT J
180 NEXT I
190 FOR I=9 TO 14
200 TEXT=I: HOME: M=17: GOSUB 500: RIBB0N=5
210 FOR J=4 TO 26
220 FOR K=0 TO 1
230 Y=INT(7*RND(1))
240 HTAB 4+6*K+Y: VTAB J: PRINT "O"
250 NEXT К
260 NEXT J
270 NEXT I
300 T=4: D=100: N=2: K=8
310 T=T+1: IF T<N THEN T=N
320 IF T>K OR T=K THEN T=N
330 Y=PEEK(-16384)
350 IF Y=153 THEN D=D/2
360 IF Y=154 THEN D=D*2
370 IF Y=149 THEN T=4: N=2: K=8: D=D*2
380 IF Y=136 THEN T=11: N=9: K=14: D=D/2
382 IF Y=176 THEN TEXT=15: END
385 POKE А¤C012,0
390 FOR I=0 TO D
395 NEXT I
400 TEXT=T: GOTO 310
500 RIBB0N=2
520 FOR Q=2 TO 31
530 HTAB Q: VTAB 2: PRINT "Ж"
540 HTAB Q: VTAB 3: PRINT "Ж"
550 HTAB Q: VTAB 27: PRINT "Ж"
560 HTAB Q: VTAB 28: PRINT "Ж"
570 NEXT Q
580 FOR Q=4 TO 26
590 HTAB 2: VTAB Q: PRINT "ЖЖ"
600 HTAB M: VTAB Q: RIBBON=1: PRINT "ЖЖ": RIBB0N=2
610 NEXT Q
620 RETURN

Вторая программа

2 REM ПОДГОТОВКА ВОЛНОВОГО ПРОЦЕССА
5 P=-1: C=50
10 INPUT 'X=';X: INPUT 'Y=';Y
20 FOR I=3 TO 10
30 GR=I: P=P+1
40 FOR J=1 TO 64
50 FOR K=1 TO 64
60 S=SQR((X^K)^2+(.8*(Y-J))^2)+P
70 N=INT((S/8-INT(S/8))*8)+1
80 ON N GOTO 90,100,110,100,90,120,130,120,90
90 C0L0R=1: GOTO 160
100 C0L0R=6: GOTO 160
110 C0L0R=3: GOTO 160
120 C0L0R=4: GOTO 160
130 COLOR=0
160 PLOT К,J
170 NEXT К: NEXT J: NEXT I

10 REM ДЕМОНСТРАЦИОННАЯ ПРОГРАММА
20 REM "РАСПРОСТРАНЕНИЕ ВОЛН"
90 HOME
100 HTAB 3: VTAB 10: PRINT "   * РАСПРОСТРАНЕНИЕ ВОЛН * "
110 НТАВ 8: VTAB 16: PRINT " * А.Ф.КУЗНЕЦОВ, ПОС. КУМЕНЫ * "
120 НТАВ 7: VTAB 24: PRINT "-> - БЫСТРЕЕ": PRINT "<- - МЕДЛЕННЕЕ"
125 НТАВ 7: VTAB 28: PRINT "<ПРОБЕЛ> - СТОП"
130 GET А¤
140 PRINT
150 PRINT CHR¤(4);"BLOADWLN"
180 C=20
190 FOR I=3 TO 10
195 L=13-I
200 IF Z<127 THEN 230
205 IF Z-128=32 THEN GET А¤
210 IF Z-128=8 THEN C=C+20: GOTO 230
220 IF Z-128=21 THEN C=C-20
225 IF C<0 THEN C=0
230 FOR M=0 TO С
232 Z=PEEK(¤C000)
235 NEXT M
237 POKE ¤C010,00
240 ST=4*L: POKE(¤C700+4*L),00
250 NEXT I
260 GOTO 190

предназначена для демонстрации волн от одного источника в однородной среде. Вначале вводятся координаты источника (0-63). Подготовительная часть работает около 2 часов. После окончания её работы на диск, где размещена исполняющая часть программы, записывается двоичный файл директивой

BSAVE WLN,A¤1800,L¤4000

Запуск исполняющей части производится обычным образом. Управление - клавишами перемещения курсора: <ВЛЕВО> - медленнее, <ВПРАВО> - быстрее. Программа выполнена в цвете, но хорошо смотрится и на чёрно-белом экране. <ПРОБЕЛ> останавливает картинку. Нажатие любой клавиши продолжит работу.

Рисунки демонстрируют работу программы моделирования процесса кристаллизации, также использующей данный принцип работы. Все подобные программы отличаются сравнительно короткими текстами, большой зрелищностью. Ученики всегда с интересом наблюдают их демонстрации на уроке.


Фрагменты программы "плавление и кристаллизация"

Возможность отображения любой области памяти в любом из пяти режимов может быть с успехом использована для более подробного изучения работы компьютера. При работе любой программы, в том числе и системной, происходит изменение содержимого ячеек ОЗУ. Подсмотреть, что происходит в памяти машины при её работе, можно следующим образом. Если мы включим отображение какой-то области путём обращения к ячейкам управления (операторы PEEK или POKE), то это в отличие от директив включения страниц никак не влияет на работу этой области памяти. Правда, набираемые директивы не видны на экране, они заносятся в ту текстовую страницу, которая была включена, и становятся видимыми после нажатия клавиши <СБР>, а исполняются обычным образом.

Особенно важно следить за содержанием ячеек нулевой страницы. Там находятся системные ячейки, хранящие сведения о режимах работы (цвет, положение курсора и т.д.), используемые при короткой адресации. Включение её производится директивой

POKE¤C782,00

Содержимое ячеек отображается на экране символами, код которых равен числу в данной ячейке. Набор директив или текста программ можно контролировать, так как они помещаются в буфер строки с адреса ¤200 (начало девятой строки, считая сверху). Если нас интересует, например, какие ячейки отвечают за цвет текста, можно набрать короткую программу

10 GET A¤: RIBBON=VAL(A¤): GOTO 10

Включив нулевую страницу на отображение и запустив программу обычным способом, нажимают цифровые клавиши и наблюдают, какие ячейки меняют своё содержимое. Так можно узнать назначение любой ячейки памяти. Если вас интересует вид программы во внутреннем представлении машины, то введите

POKE¤C786,00

Если теперь набрать строку (на экране она не будет видна) и ввести её, то на экране она появится во внутреннем представлении. Интересно наблюдать объявление массивов.

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

* * *

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *