https://hdd.tomsk.ru/desk/idbmagsu
Книжку сделал.
Две версии, одна в цвете, вторая - почти монохром.
Монохром читается приятнее. Но книжка всё таки немного цветная.
Прочитал внимательно весь текст. Жуть.
То ли редакторские правки, то ли тот, кто писал был не очень внимательным.
Или совсем не внимательным.
Кавычки вокруг строковых констант становятся апострофами или вообще исчезают.
Знак curren ("солнышко", "клоп") заменён на "$".
Пробелы скачут куда хотят: "$ C 721". Причем на одной странице то правильно, то - нет.
Пропущенные аргументы, что-то вроде: "PLOT x, y TO x".
Ну а когда в тексте программы появились типографские индексы - это был финиш.
Очень плохая практика с операторами GR=2, TEXT=3. Это страницы с адресов $1000, а прога в Бейсик-60 начинается с $800. Забить бейсик-прогой два дохлых килобайта - это вообще ерунда - 8 блоков всего.
После чего включение графики будет просто убивать прогу в памяти. Что мешало выбрать страницы 14 и 15, хотя бы? Тем более по дефолту TEXT=15 и стоит в Бейсик-60. А TEXT=2 - это практика ИКП-бейсика, но писали-то не в нём: TEXT=3 убъёт прогу в ИКП-бейсике так же как и GR=3.
А статья-то для начинающих!
Совсем забыли, что форма оператора PLOT допускает многонодовую форму:
PLOT X,Y TO A,B TO C,D TO E,F.......
Да и в HGR не поработали .... Иначе бы узнали о сюрпризах оператора COLOR= в HGR.
/* Он там как маска полубайта работает ;)) Но т-с-с-с !! Это - секрет */
Но самый страх начинается в разделе про ассемблер и спрайты.
Похоже, тот кто писал пример проги-описателя спрайта так и не разобрался с работой макроассемблера и теми директивами, которые описал на странице раньше.
Отсюда замечательная типографика в описании ассемблер-команд, включающая знак "меньше или равно", которого на агате вообще нет. И заодно и фигурные скобки "{}" (да, на девятке есть, но не в коммандах ассемблера же).
В чём страх (помимо опечаток вроде "!*$ E8") ? Вот такая строка:
!=6430
по замыслу автора скомпилируется в последовательность 0x30 0x64.
Но этого не произойдет, потому что ассемблер при анализе аргументов (т.е. значений) придерживается тех же правил, что и бейсик: число есть десятичное, если нет знака "солнышко". Так что в итоге получится 0x1e 0x19.
И даже текст, буквально на предыдущей странице, намекает, что этот оператор (=) предназначен для записи АДРЕСОВ (т.е. pointer).
А проще, нагляднее и компактнее всё то же самое записать так (оператором загрузкой зоны ("солнышко")):
!$123F20642D15361E0700
- и за одну команду весь спрайт упакован. Причем без всяких перестановок старший-младший.
И ещё.. так, мелочь:
1) Cпрайты работают только в режиме HGR !
Поведение DRAW в других режимах слабо определено.
"COLOR=1" вроде бы на спрайты вообще не влияет.
2) Операторы DRAW и XDRAW чем-то отличаются... Вроде бы один из них выводит спрайт наложением,
а второй - инверсией (т.е. через EOR). Таким образом каким-то из этих операторов можно быстро удалять
спрайт с экрана.
3) Вообще-то, механника спрайтов не сказать, чтобы впечатляюще быстрая. Операторы PLOT может
и более тормознуты, но ни PLOT ни DRAW всё равно не могут соревноваться с побайтовым выводом
картинок (т.е. когда вы копируете сразу растр из нескольких готовых байт в HGR, пусть даже с побитным сдвигом).
С другой стороны: методически статья полезная и вполне корректно раскрывает тему графики.
Жаль только, со спрайтами совсем мало реально полезных примеров.