≡ Передовица » Макулатура » ИиО » Грани Агата
Грани Агата (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 Если теперь набрать строку (на экране она не будет видна) и ввести её, то на экране она появится во внутреннем представлении. Интересно наблюдать объявление массивов. При отображении различных участков памяти следует иметь в виду, что картина на экране зависит от режима отображения. Если характер информации, записанной в данной области, не соответствует режиму отображения, то картина представляет бессмысленный набор символов различного цвета и режима воспроизведения (инверсный, мерцающий). * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |