1 (edited by USR 28-08-2017 00:31)

Topic: Все, я решился.

Постараюсь доделать все то, что хотел сделать 25 лет назад.

Топаз свой сделаю 2-й версии, как хотел. Универсальный. Под любую графику.
VS-DOS-упрощенный аналог MS-DOS доделаю. Там оставалось то команду "format A:" сделать. К нему текстовый редактор и что-то вроде Волков-коммандер в граф. режиме.  Тем более исходники сохранились кажется. С ДОСом своим я серьезно все делал. На каждой функции программное прерывание висит.

Post's attachments

1.jpg, 69.61 kb, 512 x 512
1.jpg 69.61 kb, 4 downloads since 2017-08-27 

2.jpg, 73.34 kb, 512 x 512
2.jpg 73.34 kb, 4 downloads since 2017-08-27 

3.jpg, 147.45 kb, 512 x 512
3.jpg 147.45 kb, 4 downloads since 2017-08-27 

4.jpg, 147.06 kb, 512 x 512
4.jpg 147.06 kb, 4 downloads since 2017-08-27 

5.jpg, 76.63 kb, 512 x 512
5.jpg 76.63 kb, 4 downloads since 2017-08-27 

6.jpg, 42.6 kb, 512 x 512
6.jpg 42.6 kb, 4 downloads since 2017-08-27 

7.jpg, 44.93 kb, 512 x 512
7.jpg 44.93 kb, 4 downloads since 2017-08-27 

2 (edited by USR 27-08-2017 23:56)

Re: Все, я решился.

Вот как-то так.
Осталось сделать заливку области и отображение в графике. Уже весит 16,5 сотен шестнадцатиричных.

Post's attachments

8.jpg, 74.14 kb, 512 x 512
8.jpg 74.14 kb, 5 downloads since 2017-08-27 

9.jpg, 53.44 kb, 512 x 512
9.jpg 53.44 kb, 4 downloads since 2017-08-27 

3 (edited by USR 28-08-2017 00:04)

Re: Все, я решился.

В общих чертах редактор спрайтов готов:
-поддерживаются все стандартные для Агат-9 графические режимы, цвета и палитры
-поддерживаются 5 размеров спрайтов от 8х8 до 32х16
-одновременно можно редактировать 4 спрайта
-функции инверсии, заливки, отражения, сдвига, разворота, копирования, копирования из графики для спрайта
-возможность отменить/повторить 16 последних команд в текстовом режиме и 16 в графике
-возможность использовать две граф. страницы для режимов обычной плотности
-возможность менять цвет и характер рамки спрайта в т.ч. и в графике.
-возможность восстановления, после очистки граф. страницы

При бюджете 4Кб для программного кода вышло уже 6,5Кб А еще осталось сделать:
-функцию 'быстрого' сохранения
-'быстрые' клавиши для выбора режима
-возможность анимации спрайтов
-вывод сопроводительной информации в граф. режиме
-расширение памяти до 8 спрайтов
-еще что-то хотел, но не помню что)) (вспомнил, печать граф. страницы на принтер)

В общем, в лучшем случае это втиснуться в 8Кб. При этом расход памяти на буферы:
-2Кб буфер 4-х спрайтов (возможность расширения до 8)
-1Кб буферы для копирования, преобразования и тех. нужд
-8Кб буферы памяти для отмена/повтора действий
-2Кб экранная страница
-16Кб граф. страница (или 2 по 8Кб) для спрайтов
-16Кб буфер сохранения граф. страницы

Т.к. редактор только часть системы, то некоторую долю памяти можно и нужно будет высвободить при компиляции Топазовской программы, но все равно много потратил...
Еще и не влезу в 128Кб как хотел... В планах редактор лабиринта по размеру на 16Кб, редактор текста на 24-32Кб, свой Дос, 12-14Кб для исполняемого файла после компиляции...

Вот, дочка рисовала:

Post's attachments

a1.jpg, 53.2 kb, 512 x 512
a1.jpg 53.2 kb, 4 downloads since 2017-08-27 

a11.jpg, 88.42 kb, 512 x 512
a11.jpg 88.42 kb, 4 downloads since 2017-08-27 

a2.jpg, 53.12 kb, 512 x 512
a2.jpg 53.12 kb, 4 downloads since 2017-08-27 

4

Re: Все, я решился.

Здорово!

5 (edited by USR 28-08-2017 00:03)

Re: Все, я решился.

Начал ДОС простенький делать. Совместимый хоть как-то с версией Топазов 1.5-1.6. Ну чтобы спрайты-лабиринты перекинуть. Да и чтобы можно было сохраняться.

Выяснилось что в Топазах Досы для 840 и 140 КБ разные, хоть и в одной программе)) Чувствуется для 140кБ дисковода писалось в последнюю очередь и вообще отдельно от всего. Файлы иначе располагаются на диске, таблица занятых/свободных секторов тоже другая))

Пока поддержку дисководов 140Кб не делал, хотя они и определяются. Вернее их контроллеры определяются. Вообще, автопределение устройств записи пока весьма условное. Номер привода не определяется пока. 140кБ наверное сделаю, но без совместимости с версиями 1.5-1.6. Хотя смысла особого поддерживать дисковод 140кБ для 9-ки, при наличии 840кБ особо и не вижу.

Post's attachments

a3.jpg, 77.49 kb, 512 x 512
a3.jpg 77.49 kb, 4 downloads since 2017-08-27 

6 (edited by USR 28-08-2017 00:11)

Re: Все, я решился.

Вот, немного порисовали с дочкой  в новом редакторе спрайтов. Раскрасили и дополнили картинку 25-тилетней давности.

Если сделаю топаз-2, возможно на ней будет анимация.

А вот как обстоят дела с дисковой системой. Загружать спрайты уже можно из прошлой версии Топаза. Можно и удалять файлы, причем сразу по нескольку штук:

Возможно скоро сделаю запись на диск.

Post's attachments

a4.jpg, 66.69 kb, 512 x 512
a4.jpg 66.69 kb, 4 downloads since 2017-08-27 

a6.jpg, 86.72 kb, 512 x 512
a6.jpg 86.72 kb, 4 downloads since 2017-08-27 

7 (edited by USR 28-08-2017 00:15)

Re: Все, я решился.

В общих чертах доделал ДОС.
-возможность импорта файлов из Топаз-1.5/1.6
-функция "быстрого" сохранения
-размер каталога 224 файла, (возможно уменьшу до 128)
-свободных секторов на диске 3344
-удобный поиск файлов в каталоге, сортировка по типу и имени
-возможность задать имя диска при разметке
-возможность удаления сразу нескольких файлов
-возможность работы с несколькими дисководами

Что не сделал:
-Дисководы 140КБ определяются, но не поддерживаются (не уверен, а надо ли?)
-не сделано сохранение лабиринтов, текста программы и объектного файла(пока еще нет соответствующих редакторов)
-не сделан экспорт файлов в Топаз 1.5/1.6 (не уверен, а надо ли?)

Все вместе занимает пока почти 11КБ кода. Настало время расписывать, где что в памяти должно лежать. Ну а потом приступать к редактору лабиринтов.

Post's attachments

a7.jpg, 81.99 kb, 512 x 512
a7.jpg 81.99 kb, 3 downloads since 2017-08-27 

a8.jpg, 82.35 kb, 512 x 512
a8.jpg 82.35 kb, 5 downloads since 2017-08-27 

a9.jpg, 92.49 kb, 512 x 512
a9.jpg 92.49 kb, 4 downloads since 2017-08-27 

8 (edited by USR 28-08-2017 00:18)

Re: Все, я решился.

Это уже редактор лабиринтов. где-то на 30% готов, даже сохранения еще нет.
Зарисовки на тему... думал алмазы нарисовать, а вышли яйца, как в "Чужом". Ну значит сделаю игру "Чужие"))

Post's attachments

b1.jpg, 74.74 kb, 512 x 512
b1.jpg 74.74 kb, 3 downloads since 2017-08-27 

9 (edited by USR 28-08-2017 00:23)

Re: Все, я решился.

Вот и редактор лабиринтов в целом готов. Поддерживаются лабиринты размером 16кБ.

Для спрайтов 8х8 и графики 256х256 это 16 полных экранов.

-возможность выбора размера лабиринта 256х64, 128х128, 64х256
-возможность граф. выбора кода спрайта
-возможность разметить/очистить лабиринт
-возможность перемещения части лабиринта (до 4КБ)
-возможность быстрого перемещения по лабиринту
-заливка произвольной области
-возможность отменить/повторить до 64-х последних команд (с некоторыми ограничениями)
-функция быстрого сохранения
-функция перехода по заданным координатам
-функция смены кодов элементов (одновременно можно менять 3 разных кода)
-для спрайтов графики обычного разрешения поддерживаются смена кодовых страниц
-графическое отображения режима пера, кода спрайта и самого спрайта, координат и страницы кодировки.

В принципе этого набора функций должно хватить. Может еще со временем что-то доделаю/переделаю.

Что не сделал, но хотелось бы.
-какой-нибудь, хоть простенький архиватор лабиринтов
-копирование и вставка произвольных фрагментов лабиринта
-полноценная отмена последних действий (тут просто памяти уже не хватило сделать)
-автоматическая генерация лабиринтов
-размеры лабиринтов 32 на 512 или 512 на 32

Но пока пусть будет как есть. Теперь буду текстовый редактор простенький делать, примерно как в "Школьнице". надеюсь быстро сделаю...

На сегодняшний день объем программы уже достиг 15,5 КБ при бюджете в 12КБ. Ну да ладно, если что, есть куда ужаться немного.

ЗЫ. А вот как выглядит лабиринт для другого граф. режима 512х256, всего лишь пару клавиш нажать надо, изменить граф. режим и размер спрайтов)):

Post's attachments

b2.jpg, 97.01 kb, 512 x 512
b2.jpg 97.01 kb, 4 downloads since 2017-08-27 

b3.jpg, 100.45 kb, 512 x 512
b3.jpg 100.45 kb, 5 downloads since 2017-08-27 

b4.jpg, 112.35 kb, 512 x 512
b4.jpg 112.35 kb, 4 downloads since 2017-08-27 

10 (edited by garnizon 10-04-2017 01:40)

Re: Все, я решился.

Очень интересно, прямо блог по созданию давней мечты. Жаль только что самые первые скрины уже испортились.
Может есть смысл прямо на форуме их держать. Костыль существует:
http://forum.agatcomp.ru//viewtopic.php?id=2

11 (edited by USR 28-08-2017 00:26)

Re: Все, я решился.

Сделал часть текстового редактора, самые основные функции для набора текста

И не утерпел, начал делать компилятор.

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

Post's attachments

c1.jpg, 88.99 kb, 512 x 512
c1.jpg 88.99 kb, 4 downloads since 2017-08-27 

c2.jpg, 44.79 kb, 512 x 512
c2.jpg 44.79 kb, 4 downloads since 2017-08-27 

c3.jpg, 42.54 kb, 512 x 512
c3.jpg 42.54 kb, 4 downloads since 2017-08-27 

12

Re: Все, я решился.

Доделал текстовый редактор.

Теперь осталось только компилятор делать. до бесконечности...

Post's attachments

tr1.jpg, 95.04 kb, 512 x 512
tr1.jpg 95.04 kb, 5 downloads since 2017-08-22 

13

Re: Все, я решился.

Итак, характеристики текстового редактора:

-объем текста программы: 16КБ (возможно будет увеличен)

-минимальный набор функций: Pageup/Pagedown, удаление символа, строки, режим вставки символов и функция очистки буфера текста.

Буфер текстового редактора теоретически может быть увеличен. Т.к. программа пишется для Агат-9 с 128КБ памяти, то на сегодня картина такая. Страница экрана, буферы лабиринтов, спрайтов, шрифтов, исполняемого файла - занимают 72Кб. Редакторы спрайтов, лабиринтов, ДОС и компилятор занимают чуть меньше 3-х банков или 24КБ. Остается 32КБ для текстового буфера. Но компилятор будет явно больше, так что максимальный объем буфера текста будет думаю, не больше 24Кб.

Конечно функций в текстовом редакторе мало. Нет функции копирования, вставки кода любого символа, сохранения части текста, вставки текста из файла, поиска, перехода к строке...

но честно говоря, этот редактор-самое скучное. Возможно допишу эти функции позже. Но не сейчас. Сейчас Компилятор.

Компилятор предполагает максимальный объем исполняемого файла с учетом переменных, констант и массивов 14,5КБ и это максимум. Но есть еще два буфера. Один объемом 2КБ, это буфер экранной страницы, для быстрой отрисовки содержимого лабиринта. А второй объемом 4КБ предназначенный для копирования части лабиринта и изменения в ходе программы. Есть еще и 3-й буфер объемом 2КБ. Вероятно он будет использован для технических нужд. Для циклов, например.

Язык программирования мой собственный)) Жуткая смесь ассемблера, бейсика и Си. В принципе низкоуровневый получается. И явно не для детей. Но что есть, то есть.

Сейчас уже сделаны такие конструкции языка, как условные и безусловные переходы, подпрограммы и массивы. Поддерживаются переменные (только 8-ми разрядные) и выражения. Выражения состоят из сложения, вычитания, умножения на 2 и деления на 2.  Со временем сделаю умножение и деление байтов или слов.
Ну и несколько игровых операторов. Включение одного из 4-х графических режимов, опрос клавитуры, вывод звука, вывод текста и чисел на экран, различные функции отрисовки спрайтов, функции выбора параметров лабиринта и отображение его, ну и мелочевка, вроде очистки экрана, задержки и генератора случайных чисел.

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

Вообще еще очень много что надо сделать, хотя вроде как памяти хватает пока...

Post's attachments

d1.jpg, 50.19 kb, 512 x 512
d1.jpg 50.19 kb, 5 downloads since 2017-08-31 

d2.jpg, 55.84 kb, 512 x 512
d2.jpg 55.84 kb, 5 downloads since 2017-08-31 

d3.jpg, 53.43 kb, 512 x 512
d3.jpg 53.43 kb, 5 downloads since 2017-08-31