Тема: РОБОТЛАНДИЯ
Некоторые из форумчан знают как долго я искал пакет "Роботландия" для АГАТика. В "Розыск софта" держал его первым номером: http://agatcomp.ru/Apps/Lost.shtml
И вот недавно, на адрес сайта написал один из разработчиков Агатовской Роботландии, но это еще не вся радость которая меня ожидала: у него сохранились диски, точнее образы дисков, но обо все по порядку (цитата из письма):
Изначально Роботлания была написана под Ямаху. Авторы Дуванов и Первин, но официальной версии под Агат не выпускалось.
Пакет “Роботландия” для Агата был создан учениками-старшеклассниками 716 школы (Москва, Измайлово) (теперь это гимназия 1811) под руководством Алексея Анатольевича Муранова в период (как мне сейчас кажется) с 1988 по 1990. (См. его статью http://ito.edu.ru/sp/SP/2006-01-12.html )
Нас было около 7-8 человек, учеников 8-10 классов, на голову помешанных на компьютерах и программировании. Мы убегали с уроков и проводили все свое свободное время в кабинете информатики. Каждый из нас написал некоторую часть Роботландии.
В 1991 году, будучи учениками 10 класса, мы смогли объединить АГАТы-7 в ЛВС при помощи стандартной платы - Модуль последовательного и параллельного интерфейса.
Использовали вывод параллельного порта + магистральные усилители. Был написан свой собственный протокол. Сервером выступала IBM XT c HDD на 20МБ.
Обмен был двухсторонним, что позволяло сохранять пользовательские файлы на сервере. Был написан свой “кастомный” BOOT.ROM, который зашивался в РФки и впаивался мною в место для микросхемы ПЗУ на модуле. Для IBM XT был написан серверный софт.
Для АГАТа был модифицирован ДОС таким образом, что бы он за дисковыми операциями лез не контроллеру FDD, а к сетевому интерфейсу.
Мне удалось найти образы ROM, которые зашивались в ПЗУ на плату принтера для организации сетевого обмена (bin.zip). Так же удалось найти серверную часть для PC XT архив OS2.arj
Вскоре к беседе присоединился еще один из создателей Агатовской Роботландии:
Не помню что там за защита могла быть
Менюшка и СокоБан были целиком написаны на ассемблере и могли запуститься
хоть на голом железе. Но там встроена проверка ( тупая проверка наличия
определенных байтов в памяти )
Если их не было то в памяти нет интерпретатора Рапиры
Тогда ВЫЛЕТ с неясной ошибкой.
Я не хотел чтобы это дело "утекло" в УПК.
Это единственное что я помню про "защиту"
А вот сетевая часть работала так:
ДЗУ(1) это локальный дисковод
ДЗУ(2) это сетевой диск
Был ассемблерный код обмена с сетью
Не знаю вместо чего я его всунул,
Нашел в памяти кода интерпретатора блок нулей достаточной длинны.
И вставил туда скомпилированный свой код через отладчик Голова
( на диск прописал )
Поэтому система его сама грузила вместе с Рапирой
+ была подправленная точка входа в функцию обмена блоками FDD
( тупая перезапись начала функции на джамп на мой код )
там проверка была
если ДЗУ(1) то джамп на исходный код
( с предварительным выполнением убитых при перезаписи команд )
если ДЗУ(2) то джамп на сетевой код
Блин! Это же вирусная технология!
И куда Касперский смотрел только!
На 4 диске это видно хорошо!
Там Робик Муравей вылетает после команды ДЗУ(2) - не найдено ничего
так как сетевого диска нет.
Серверная часть сети имела группу загрузочных дисков ( 1-2-3-4 )
Один из них ( какой выберут ) стоял "на загрузке" как ДЗУ(1)
С него грузились компы при включении
После загрузки ДЗУ(1) переставал перехватываться и блоки читались с FDD
Еще на сервере были индивидуальные диски для каждого компа свой
Каждый эпром был прошит с уникальным номером ( типа мак адреса )
По этому номеру сервер выбирал нужный диск
- они были подключены под ДЗУ(2) каждый к своему компу
И детишки плакались "где мои файлы с прошлого раза..."
если их за другой комп посадили!
Ваня! Помнишь ты тогда отладчик Голова переделывал,
чтобы он с сетью работал, сетевой код из рапиры выдрал и в отладчик вставил.
Тебе нужно было перекидывать файлы с одного сетевого диска на другой.
Но боюсь что это чудо не сохранилось никак.
Клиентский сетевой код есть в нашей сетевой рапире
Его можно оттуда достать, или из файла эпрома ( код там одинаковый ).
А вот тот код который работал на стороне сервера скорее всего не сохранился
- УВЫ!
[i]Коллеги, я забыл представить - Александр Антонов наш главный разработчик на
тот момент. (ученик11 класса 716 школы на тот момент)
Далее по тексту " Я не хотел чтобы это дело "утекло" в УПК." УПК имелось в
виду УКП №3 (1-я Парковая ул, 12, сейчас это колледж Каит №20) наши
конкуренты на тот момент.
" А вот тот код который работал на стороне сервера скорее всего не
сохранился" - сохранился:), вот он https://yadi.sk/d/1oMHOPhpJLAQ1w . Я
успел его сохранить до того, как весь класс разобрали на части:)
Саша, расскажи плз немного про аппаратную реализацию сетевых интерфейсов.
Что мы там дорабатывали. (то, что ты мне вчера по телефону рассказывал)
Игорь, еще раз спасибо за огромную кучу теплых эмоций и воспоминаний.
[/i]
Это не совсем то ( это код с IBM )
Между IBM и сетью стоял еще один агат с двумя принтерными портами
По одному он смотрел в сеть по другому
( всеми 11 линиями параллельного интерфейса ) в сторону IBM
На нем крутилась малюсенькая программулина,
грузилась из загрузчика дискетки сразу без ОС.
Программулинка шлюзом была - брала данные с одного интерфейса
и кидала их на другой ( запросы к IBM )
В ней была основная логика сети
Выделение окон времени компам в сети ( сеть то "общая шина" была )
Типа комп с адресом 01 тебе чего нужно - нет тогда 02 итп.
Там же был режим массовой загрузки с епромов ( без запросов и подтверждений)
когда сервер в сеть принудительно выдавал сектора в последовательности
в которой они нужны при загрузки рапиры.
Перед этим компы включались и ждали этой посылки.
Весь класс грузился параллельно ( все компы брали одни и те-же пакеты )
Вот эта "дискетка", где в загрузчике была серверная часть скорее всего
погибла.
По аппаратной части:
Мы впаивали микруху памяти 512 байт 556РТ5 если мне память не изменяет.
Из нее использовалось 256 байт так как возиться со страничной адресацией
мне было лень, а страница ( окно памяти устройства ) была 256 байт.
Пришлось "умещать" загрузчик в 256 байт.
Помню сидел анализировал код выкидывал лишни CLI, выкидывал в
подпрограммы несколько повторяющихся команд - нужно было нарыть 13 байт!
+ 8 резисторов впаивали так как микруха типа ОК ( открытый коллектор )
Это штатная микруха, предусмотренная в Агатовском интерфейсе принтера.
+ паяли микросхему магистрального усилителя 109ли1
Резали одну дорожку параллельного интерфейса и вставляли "в разрыв"
этот магистральный усилитель.
Далее все компы соединялись проводом "лапшой" на 3 жилы
0 - Общий провод - Земля - понятно для чего
1 - Выход - все выходы магистральников смотрели параллельно в эту линию
2 - Вход - тоже параллельно все компы входом одного из разрядов
параллельного порта.
Плата переставлялась в третий разъем ( иначе загрузка была с дисковода )
И нужно было писать C500G ( если порт в 5 разъеме был )
Потом наоборот приходилось УПР+СБРОС и C500G писать
если нужно было с дисковода загрузится.
Но это уже мелочи по сравнению с беготней с дискетками перед каждым уроком
Чтобы ОС загрузить. Особенно если на некоторых компах дисководы барахлили.
Сеть реально решила проблему "не успевания" подготовится к следующему уроку.
На "сервере" наоборот - его магистральник смотрел на 2 а вход на 1
Остальное делалось программно.
Там был цикл 30мкс на 1 бит - выверенный по времени исполнения каждой
команды в машинном коде.
Исходя из этого скорость должна была быть 33 кБит или 4 кбайта в секунду
Рапира занимала 10 треков ( 40 кбайт ) и грузилась за 10 сек.
Интересно это смотрелось
- на сервере говоришь "стоп сеть"
- включаешь все компы
- на сервере жмешь "поехали"
- через несколько секунд большая часть компов "рычат" пустыми дисководами
значит "загрузились"
- идешь, смотришь кто не загрузился ( обычно такие бывали, так как повтора
передачи ( обратной связи ) при массовой загрузке не предусматривалось и
любая ошибка в сети приводила к не загрузке этого компа.
- запускаешь еще раз "поехали" на сервере и компы "догружаются" с тех мест
где застряли.
Я попросил их продолжить эту интереснейшую тему на форуме, на что они любезно согласились.
Надеюсь получится создать подробную страничку о Роботландии:
http://agatcomp.ru/Apps/Robotlandia.shtml