01 апреля 2021

       NedoOS: истоки 
Alone Coder 

  История NedoOS уходит корнями в далёкие 
90-е годы.В этой статье я постараюсь вспо─ 
мнить,как всё это происходило.За это время 
сменилось много концепций, рисовались кар─ 
тинки и схемы, писались и выкидывались ку─ 
ски  кода и отдельные утилиты, но всё было 
впустую,пока наконец не была найдена золо─ 
тая жила :) 

   На  Спектруме я с 1991 года. Когда он у
меня  появился, я уже примерно знал Бейсик
(с Радио-86РК ). Писал на нём игры - "Уга─
дай число",  "Очко",  "Питон",  "Скачки на 
ипподроме", "Точка над i", "Перепрыгивание 
через камень". Были  и микродемы на Бейси─ 
ке. Иногда  набирал "пианино" типа 10 BEEP 
.1, CODE INKEY$-60: GO TO 10 или циклы вы─ 
вода дампа памяти.Но из всех моих программ
магнитофонной эпохи сохранился только гра─
фический  редактор  "Рисующая точка" из 23
строк (1992). Сохранился потому,что единс─
твенный  был  записан на бумаге. А писался
он, скорее всего,под влиянием книги Дьяко─
нова. Думаю,многие писали такие же "редак─ 
торы".Так я начал путь программиста-систе─
мщика...

   10 LET a=100: LET s=100
   20 INK 7: PLOT a,s: INK 0: PLOT a,s
   30 IF INKEY$="5" THEN GO TO 90
   40 IF INKEY$="8" THEN GO TO 100
   50 IF INKEY$="7" THEN GO TO 110
   60 IF INKEY$="6" THEN GO TO 120
   70 IF INKEY$="0" THEN GO TO 130
   80 GOTO 20
   90 LET a=a-1: GO TO 20
  100 LET a=a+1: GO TO 20
  110 LET s=s+1: GO TO 20
  120 LET s=s-1: GO TO 20
  130 INK 0: PLOT a,s: INK 7: PLOT a,s
  140 IF INKEY$="5" THEN GO TO 200
  150 IF INKEY$="8" THEN GO TO 210
  160 IF INKEY$="7" THEN GO TO 220
  170 IF INKEY$="6" THEN GO TO 230
  180 IF INKEY$="0" THEN GO TO 20
  190 GO TO 130
  200 LET a=a-1: GO TO 130
  210 LET a=a+1: GO TO 130
  220 LET s=s+1: GO TO 130
  230 LET s=s-1: GO TO 130

   Изучал ассемблер я с 1993 года, когда у
меня появился дисковод. Первые попытки бы─
ли  неудачные - первый скролл  влево  я не
смог зациклить на весь экран, игра "Падаю─
щие камни"  через  RST 16  не  заработала. 
Правда, ассемблировал я вручную, по табли─
це кодов команд.Из-за этих неудач я долгое
время держался Бейсика,потому что его лег─
ко отлаживать. Остановил, исправил,продол─
жил.Так появился редактор анимации "Anima─
tor"  (1993) - потомок  "Рисующей  точки", 
даже попавший  на какой-то  городской кон─
курс, где его успешно не смогли запустить.
Можете  посмотреть на этот шедевр в ACNews
#53 :) Начинал  писать и новый графический 
редактор  на  Бейсике (уже с меню в нижних
двух строках экрана - я научился там печа─
тать!), причём начинал с бесполезных функ─
ций "треугольник" и "залитый круг". В этом
проекте я столкнулся уже с недостатком Бе─
йсика - его неудобным редактором.Возился я
с ним долго, но от него не сохранилось ни─
каких  следов. Разве что где-то попадалась
процедура  заливки на Бейсике и само рисо─
вание залитого круга - оно ушло в космиче─
ский  симулятор "Space" на Бейсике (1995),
который можно найти в Info Guide #10.
   Параллельно  я  писал  дисковый доктор,
загрузчик  для Beta Basic с эффектом, пару
тестов из какой-то книги (один сохранился)
и прочую мелочь. Но главным проектом я ре─
шил  делать  новый  графический редактор -
уже  в кодах, в GENS. А процедуры для него
писались так,как будто это был новый сбор─
ник Supercode, и сразу оптимизировались по
размеру  (некоторые из них совершенно бес─
полезны для графредактора).Насколько можно
восстановить  по бумажкам и каталогам пер─
вых дискет, первые процедуры были такие:
  - сдвиг вправо (сначала какой-то безум─ 
ный, через IX, потом 17 байт) 
  - эффект на атрибутах "взрывчик"
  - появлялка экрана без атрибутов (49 б)
  - scroll left (17, потом 16)
  - scroll left циклический (24,потом 23)
  - scroll right циклический (24)
  - scroll up (82, потом 77, потом 54)
  - scroll down (82, потом 77, потом 54)
  - scroll up циклический (79, потом 75)
  - scroll down циклический (79,потом 75)
  - мигание случайными атрибутами
  - FASTLEFT(105),FASTRIGHT(105) (не пом─ 
ню, что  это - на бумаге упоминается, а на 
дисках нет) 
  - инверсия экрана (12)
  - Flip horizontal (61)
  - Flip vertical (49/78)
  - Rotate 180
  - Move code
  - Font flip horizontal (22)
  - Font flip vertical
  - Font rotate 90
  - Set attributes
  - Screen memorize (13)
  - Screen recall (12)
  - Flip horizontal
  - 64 print
  - Attrs invert (30, потом 14)
  - Screen Grid (26)
  - Grid-
  - Exchange (17)
  - Merge (17)
  - Running line
  - Border lines
  - скролл 8x8 (81)
  - UpA (21)
  - Fast CLS
  - hexprint
  - Hex Dump
  - Waves standard
  - New waves
  - Repeat (12)
  - ввод числа накруткой (для игры Губер─ 
натор) 
  - L4(17), R4(17), L2(23),R2(23),LRIPPLE 
(12),RRIPPLE(12),lshutter(12),rshutter(12) 
  - расчёт адреса на экране DE->HL (29)
  - W LEFT, W RIGHT, W INV, W CLEAR
  - W PUT, W GET
  - M RIGHT, M LEFT, M INV, M CLEAR
  - POINT (28)
  - PLOT (56)
  - FILL  (сначала  рекурсивный алгоритм, 
потом с буфером на 256 координат) 

   Осенью  1994 года я завёл отдельную об─
щую тетрадь под проект графического редак─
тора, в  ней  распределял адреса процедур,
начиная  с верха памяти. Они шли в следую─
щем порядке: Undo,Ok,Remove,Grid,Addrcalc, 
PLOT, POINT, FILL, FILLING, CLEAR SCR,CAT, 
CONTRAST,CURSOR. Процедуры компилировались 
по одной и тестировались из Бейсика. Рисо─
вал меню редактора, вид окна масштабирова─
ния... и потом всё забросил. Видимо,потому
что  понял, что таким методом я никогда не
напишу редактор лучше Art Studio!
   К  тому  времени  я уже общался с двумя
другими программистами - Николаем Медведе─
вым  и Сергеем Галишниковым. А это значит, 
появился  стимул  показать им что-то гото─
вое.Поэтому из процедур графического реда─
ктора к декабрю 1995 года был написан Font
editor. Потом он некоторое время развивал─ 
ся, и версия 2.06  тоже ушла на конкурс. В
этом  редакторе уже была реализована стре─
лочная (точнее, прицельная) система,с дви─
жением  курсора по пикселям (в первой вер─
сии было по знакоместам).Файловые операции
были  написаны на Бейсике. Из-за сборки по
частям  полного исходника не было, поэтому
по требованиям конкурса  я изготовил сбор─
ную "распечатку" в тетрадке от руки.
   Летом 1996 года я пытался написать соб─
ственный отладчик (причём в экранной обла─
сти), написал  дизассемблер - а  он  занял
целых  полтора  килобайта. Пришлось забро─
сить этот проект. Дизассемблер можно найти
в приложении к ZX-Guide #4.5.
   В конце 1996 после прототипа на Бейсике
я реализовал игру Sapper'96 - там уже была
оконная  система с перемещаемым окном. Од─
ним. И заодно это была первая большая про─
грамма, которую  я  компилировал  целиком.
Это  было непросто, потому что мой 48К ко─
мпьютер стал безбожно глючить, особенно во
время  сохранения на диск. На практике это
выглядело так: сначала я готовил процедуры
на  бумаге, потом  их  вбивал в исходник и
тут же  сохранял под другим именем. Только
после этого можно было тестировать. До сих
пор так  делаю :) Только вместо бумаги те─
перь текстовые файлы...

   В  феврале 1997 года я написал чанковый
редактор PAINTBRUSH (см. Info Guide #12 ).
У него не было меню сохранения, но был но─
вый  интерфейс с выбором цвета стрелкой, а
также  с несколькими зумами (но редактиро─
вать можно было только в 4x4 ).Писал я его
всё ещё в GENS, но переход на MASM на моём
новом 128K сильно ускорил мне разработку.
   Тогда  же или несколько раньше я проду─
мывал концепцию мультиколорного редактора.
Там должны были быть менюшки слева и спра─
ва  (по ограничению мультиколора  8x1 - 24
знакоместа на Пентагоне, см. ZX-Guide #2),
иконки  на  кнопках, в  режиме зума в углу
должен  был  показываться  экран в 1x1. Но
идея  была  заброшена, через год я написал
другой мультиколорный редактор, попроще.
   А  ведь  я  планировал не только крутой
мультиколорный  редактор, а  целую систему
типа Windows, нарисовал для неё пропорцио─
нальный  шрифт, мокапы  экранов  (их можно
увидеть в приложении), делал текстовый ре─
дактор с переносом строк,изучал FAT, писал
просмотр  картинок с MS-DOS дискет - смот─
рел их в примитивном предке режима R-Mode.
   Я думал  "чем мы хуже iS-DOS ?" и хотел
придумать свой формат диска. Но постоянные
ошибки  дисков и необходимость использова─
ния FUT поставили голову на место, так что
моя фантазия ограничилась хранением дирек─
торий  как  файлов - в демоверсии "Нортон-
командера" (уже в ассемблере ALASM ).Кста─ 
ти,он не умел уплотнять такой диск,и никто
не умел.
   Шёл  1998  год. Я вышел на радиорынок и
зарелизил   сначала   текстовый   редактор
ACEdit, а  потом - в  конце  года - журнал 
ZX-Guide #1. Там была уже многооконная си─ 
стема  (однозадачная), где  фон под окнами
сохранялся в буфер типа стека. В следующем 
1999 году я по просьбе ныне покойного Иго─ 
ря Чирцова из Барнаула пытался сделать там 
листалку  со скроллбаром и превратить жур─
нал  в библиотеку, котором мог бы восполь─
зоваться любой желающий. Это был так назы─
ваемый "ZX-Guide #1.5". Он не пошёл никуда
(не  считая  ZX-Guide #2.5 trash ), потому
что к тому моменту я уже переходил на пла─
вные фреймовые листалки.

   Мне  не нравился стандартный видеорежим
6912. Я спаял простую  схему 384x304 и на─ 
писал листалку для текстов шириной 80 сим─
волов, которые  мне  копировали  с IBM PC.
Были версии под TR-DOS дискеты (в ZX-Guide
#2 ) и под  MS-DOS дискеты (январь 2000 ), 
обе только в исходниках. Параллельно я пи─
сал  редактор  под  цвет на точку "8 color
editor", минус первая версия которого была 
в том же ZX-Guide #2.5 trash. Дизайн (воз─
можно, и  с кусками кода) был взят из того
самого  PAINTBRUSH. Но  главное, я изобрёл
схему  384x304 и в то же время не задумал─
ся, что графический редактор должен редак─
тировать не 256x192, а картинку произволь─
ного размера! Через эту же ошибку прошли и
авторы  других  графических  редакторов на
Speccy... 
   В  мае того же 2000 года я написал ANSI
viewer. Это  было  некоторое  продвижение, 
поскольку  размер экрана там регулировался
- хотя  бы  по  высоте. Текстовый редактор
ACEdit тоже был переделан - под регулиров─ 
ку  экрана по ширине и поддержку командной
строки TR-DOS. Поддержка командной строки,
MS-DOS-дискет, ANSI, разных размеров экра─
на приближала меня к некоторым стандартам,
но  все  эти  фичи почему-то оказывались в
разных программах! Я не интегрировал прог─
раммы  друг  с  другом, хотя  и  мечтал об
этом. В  фантастическом рассказе "А был ли
кризис?" ( ZX-Guide #3 - конец  2000 года) 
можно  даже встретить такую фразу:  "Alone 
Coder не ходил в "Зосень", не читал "Скла─ 
вку", не покупал игр сомнительного качест─ 
ва, а мирно сидел и занимался интегрирова─ 
нием  плейера  MPEG  video  в новую версию 
своего  Inet-браузера  под Spectrum..."  И 
это  была не то чтобы шутка - в то время я
изучал  в  институте  HTML, а в конце 2001
года  написал  ACEdit>html  converter  (по
просьбе Unbeliever'а ) и с его помощью вы─
пустил  ZX-Guide #4 html version,  который
до  сих  пор  лежит у меня на сайте. Вы не
поверите, но тогдашние браузеры отображали
его 866 кодировку правильно :)

   Итак (предположил я, заполучив Pentagon
1024 ),если мы пишем операционную систему, 
то  она  должна  работать с кучей форматов
файлов. Например, с архивами, которые при─
ходят  из  Fido (у нас в группе был фидош─
ник-реальщик - T(c)S ).В идеале даже рабо─
тать по фону. А что у нас было со стандар─
тными архивами? Только pkunzip и нерабочая
демоверсия ZXUnRar от AIG. В конце 2002 г.
я начал  взламывать  и исправлять ZXUnRar,
так что от оригинального кода почти ничего
не осталось. В начале 2003 года стал дора─
батывать JPEG viewer; первое моё ускорение
попало в Born Dead #0G, выпущенный 1 апре─
ля. Потом  научился  делать  автосборку  в
ALASM (упаковщики  mrip*.H и m2hr*.H ) и в 
июне выпустил первую версию ZXRar. А в ок─
тябре исправил  pkunzip 1.41 для поддержки
SCL.Также я дорабатывал Pro Tracker,ALASM,
STS,Hrip,Perfect Commander и Mr Gluk Reset 
Service. Таким  образом, у  меня  на руках 
оказались  системные  программы  от десяти
разных групп авторов, которые никак не по─
лучалось объединить в одну!

   Я, конечно, не  сидел  в  вакууме. И не
только изучал чужие системы, но и публико─
вал  в журнале описания DISCiPLE/+D, ZXVGS
и  ChaOS. Но то, что я в них видел, выгля─
дело  совершенно перпендикулярным моим за─
дачам. Я  даже не видел в них возможностей
практического использования!А для меня это
было  самое  важное. У себя в голове я уже
забросил окошки  и  стрелочки - даже новую
оболочку  для  журнала  (Inferno Guide #5)
сделал без них.
   Чтобы  привлечь народ новыми концепция─
ми, стал распространять программы в исход─
никах,с автосборщиком mkace (август 2003).
А в сентябре 2004  высказал  в ZX.SPECTRUM
идею "подружить программы в памяти", чтобы
они не мешали друг другу. Это позволяло бы
параллельно  редактировать  разные форматы
данных, не перезагружая компьютер. Мне, по
опыту  с  Wolfenstein 2004, это было очень
важно.Что для этого требовалось? Для этого
требовалось  в  системных программах рабо─
тать не с физическими номерами страниц,а с
заказанными.Но я никак не мог организовать
рабочий процесс. (ZXRar, ZXUnRar, pkunzip,
JPEG viewer  и Pro Tracker всё-таки подру─ 
жились  друг  с  другом - но произошло это
только через 15 лет.)
   Следующую  идею я высказал в ACNews #35
- до написания полноценного коммандера под 
FAT32  поддержать винт  как  TR-DOS диск с 
"гиперпереходами"  (мне к тому моменту по─
дарили контроллер винта, а в январе 2005 я
написал HDDoctor ).Эта идея устарела сразу
после   появления  DNA  OS,  но  поддержка
TR-DOS на уровне виртуальной файловой сис─ 
темы потом нашла своё отражение в NedoLang
и  в ядре  NedoOS. Удивительно, но  в ANSI
viewer,ZXUnRar,pkunzip и JPEG viewer такой 
подход  не  проглядывался, не было его и в
ZXRar. Но  ZXRar - отдельная  история, и я 
жалею, что  начал  его  писать  именно для
128K. Там совсем не осталось места на нор─ 
мальный код, там просто лапша,понять кото─
рую после многих лет уже почти невозможно.
   Параллельно я продумал идеологию редак─
тирования текста произвольной длины (так и
не реализовал) и концепцию драйвера клави─
атуры  с обработкой по факту нажатия и бу─
фером событий. Этот драйвер в декабре 2004
попал в ACEdit v0.89 и оказался таким удо─
бным, что  позже  ушёл  в  TFM  Instrument
Editor, а потом и в ядро NedoOS - тоже. 
   Я  внимательно  изучал систему DNA OS и
всё время держал руку на её пульсе. В 2005
году  я  добавил  туда сохранение TRD, так
что система  стала моим рабочим инструмен─
том  на  Pentagon 1024  и на ATM-Turbo 2+,
который мне тоже подарили. Я иногда подде─
рживал  ATM-Turbo в программах, но вдохно─
вился  этой системой, только  когда увидел
её  графику  в  цвете  на точку. В октябре 
2005  года  я научился программировать эту 
графику  и  при  помощи KSA-7G и John Sil─
ver'а спаял похожую схему 16col для Пента─ 
гона. До  MPEG video  не дошло, но к концу 
года  у меня уже игралось кино под цвет на
точку  с  компакт-диска, а  в  январе мы с
Shiru  портировали  на  Спектрум игру Time 
Gal. Но  получилось так, что это оказалась 
единственная  CD-игра  для Спектрума. Ведь
шёл уже 2006 год.

   Шёл 2006 год. После Chaos Constructions
2004 была очевидна депрессия на платформе: 
серьёзные игры и демы исчезали, единствен─
ной отдушиной было то,что CHRV и KOE стали
производить новые платы и ещё как-то шеве─
лился  конкурс "Твоя игра". Обращало также
внимание, что Максагор с группой товарищей
писал некие  непонятные  мне тогда вундер─
вафли  на CP/M и iS-DOS (TASiS). Из них из
всех я использовал только копировщик с CD,
и то только при разработке Time Gal. И во─
зник вопрос - как не попасть в такую лову─
шку,как операционная система,которая нужна
только  её  авторам? Что она должна предо─
ставлять  пользователю? И  я  начал писать
браузер.

   В январе  2007  года  у меня был первый
опыт с  MSX-DOS (порт игры  Ball Quest под
MSX ). Там я оценил файловые операции, ко─ 
торых не было на TR-DOS, но я уже не видел
для  себя операционную систему, которая не
работает с обычного TR-DOS диска. Это выг─
лядело как стена для начинающего пользова─
теля. Я тогда даже сам не знал,как создать
образ HDD с FAT для эмулятора. И главное -
я программировал в ALASM, а это значит,что
мои исходники были в формате TR-DOS.Думаю,
на  этом погорел и Vitamin с ChaOS. У него
просто кончился диск...



Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
From the world of bat - Letters from readers, the article, a parody of "running stitch".
Humor - jokes and stories from life.
List BBS - The list of stations BBS.

В этот день...   23 November