Nicron
#46
07 августа 1997 |
|
Софт - Многоликая CDOS! О системе.
╔══════════════════════════════════════════════════════════════╗ ║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░ Многоликая CDOS ! ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║ ╚══════════════════════════════════════════════════════════════╝ (C) WLODEK BLACK Добрый день всем читателям во всем мире! Знакомясь с уже ставшими многочисленными (что не может не радовать) сетевыми и просто компьютерными спектрумовскими газетами, мы в редакции не могли пройти мимо отрадного факта: сети на платформе CDOS развиваются не только в Москве. Особенно преуспела в этом братская Беларусь, но подвижки есть в подмосковном Наро-Фоминске, во Львове, Краснодаре и других больших и малых городах. И в каждой сети пытаются приспособить CDOS под свои условия и потребности, что не удивительно, так как программа эта, как верно было подмечено, - "один сплошной большой глюк". К сожалению, в руки зачинателей новых сетей не всегда попадает наиболее совершенная версия программы, и некоторым пользователям приходится преодолевать уже преодоленные в других регионах трудности, глюки и просто недоработки. Мы здесь, в Москве, вовсе не хотим заявить, что у нас наиболее прогрессивная CDOS - мы просто хотим рассказать, чего достигли мы, что у нас получилось, что нас удовлетворяет, над чем еще надо повозиться. К моменту моего активного подключения к процессу перекраивания CDOS та уже обладала спикерфоном и HISTORY, за что еще раз огромное спасибо MPR HARD-у и КОЛОВРАТу. Но в процессе эксплуатации продолжали всплывать серьезные глюки, сказывающиеся главным образом в серверном режиме. Первым был устранен недочет, связанный с обработками дисковых ошибок. В Москве серверы работают в основном по ночам, без наблюдения со стороны сисопов. Дисковые ошибки, даже такие легко провоцируемые, как попытка записи на заполненный до предела диск, вызывали появление сообщения об ошибке, после чего требовалось вмешательство сисопа. В результате ночные BBS-ки часто зависали. Михаил Ильин (BigWolK) первым пришел к простому и вполне разумному решению: дисковая ошибка - надо бросить трубку, и все. Все равно ночью никто разбираться с дисками не станет. В версии CDOS 1.10 был введен простейший переход по JP не на процедуру вывода сообщения и обработку ошибки, а на точку установки серверного режима. Следующая доработка была сделана уже мною, причем в пожарном порядке, так как настоящий "глюк", выявленный почти случайно, грозил дезорганизовать работу всей сети, узнай о нем хоть один недобросовестный юзер. Речь вот о чем. Если у вас на сервере версия CDOS не старше 10-й или сделанная на основе версии не старше 10-й, попросите кого-нибудь закачать вам файл длиной 0 секторов (такой файл легко "сделать" с помощью диск-доктора прямо в каталоге диска). Произойдет следующее: передадутся 256 секторов из ОЗУ компьютера пользователя, и так же 256 секторов примутся на сервере, причем БЕЗ ПЕРЕКЛЮЧЕНИЯ страниц памяти! То есть ОЗУ пользователя целиком перейдет в ОЗУ сервера, вместе с экраном, стеком, SET_UP-ом и прочим. Сервер, конечно, повиснет, так как даже при одинаковых версиях CDOS стеки располагаются по-разному (а при разных версиях сисоп обнаружит "чудесное превращение" своей CDOS 1.10 в какую-нибудь 2.00 или еще хуже; все будет зависеть от фантазии звонящего на сервер). Но и это еще не все! Если передать не 256 секторов, а "брейкануть" пораньше, дождаться, пока сервер сам бросит трубку, а потом перезвонить - можно скачать любые секретные файлы, так как SET_UP пользователя с ЕГО секретными именами уже перешел на сервер! А потом для заметания следов можно, конечно, повесить сервер, это понятно... Вот в таких муках и родилась 11-я версия, в которой прием файлов с длинами 0 секторов заблокирован. Следующая неприятность объявилась, когда в Москве начали переводить АТС на новое оборудование, оснащенное счетчиками времени разговора. На обновленных АТС сигнал "занято" превратился из серии коротких гудков в непрерывную двухтональную сирену без пауз между разночастотными посылками. Одновременно "под руку попала" и другая проблема - ложное поднятие трубки на сервере из-за "взвякивания" телефона при опускании трубки в конце очередного коннекта. Сочетание ложного поднятия трубки и нераспознавание CDOS-кой двухтональной сирены снова начало вешать серверы. Причем на двухтональной сирене CDOS "застревала" в цикле опроса линии так, что даже не реагировала на BREAK!!! Но именно это и позволило мне очень легко найти те две одинаковые ветви в циклах (одна - при ожидании перехода с 0 на 1, другая - с 1 на 0), в которых происходило застревание (зацикливание). Начальные ветви этого цикла - асинхронные, выполняются только один раз при каждом обращении к приему бита, и введение в них дополнительных команд практически не сказывается на точности определения временнЫх характеристик сигнала; туда я добавил дополнительный счетчик "ошибок", который считает 65536 раз (около полуминуты). Если за это время, при наличии сигнала, не произошло ничего полезного, трубка вешается. Происхождение же полезных событий (прием сектора, маркера и т.п.) обнуляет дополнительный счетчик, не дожидаясь его переполнения, и CDOS работает, как обычно. Номер этой версии - 1.14. В нее также добавлена "мертвая" пауза в 2 секунды после опускания трубки, чтобы паразитное "взвякивание" не вызывало ложного ответа сервера. В 15-й версии сделана автоматическая отгрузка HISTORY после каждого сеанса связи очередного пользователя, при опускании трубки. "Хистори" теперь не теряется при отключениях электричества, сбоях компьютера и - чего, как говорится, греха таить - ошибочных действиях самого сисопа (выключил компьютер и вспомнил: "Б%@#$, забыл хистори записать!"). Для записи "аварийной" хистори заранее выделяется место на любом диске: записывается произвольный файл длиной 62 сектора в начало диска. Потом этот файл можно стереть, но диск не уплотнять; History записывается не как файл, а как блок секторов, всегда на одно и то же место. Для ее вытаскивания создана простейшая утилита. Так как запись 62-х секторов требует нескольких секунд, это время использовано в качестве паузы после опускания трубки, а специальная процедура, примененная для задержки времени в 14-й версии, в 15-й удалена. CDOS1.15 беспроблемно эксплуатируется в течение полутора месяцев. Пока не найдено способов "повесить" сервер с 15-й версией (конечно, если компьютер исправный и не сбоящий). Делались и другие доработки, направленные уже не на устранение глюков или повышение надежности, а на введение новых функций. Например, на главном шлюзе ZXNet в Москве - ALEX BBS - работает спарка ZX-IBM. На Спектруме установлена специальная CDOS, в которой диск B: - канал связи с IBM. Достаточно закачать на него файл "secret" или "SPACE" (секретные имена для почтовых сообщений), как письмо немедленно уйдет на IBM PC, откуда также немедленно и автоматически будет отправлено в Интернет. Правда, столь значительные удобства достигнуты в буквальном смысле дорогой ценой: Алексей оплачивает вторую телефонную линию. Имеется и усеченный вариант такой CDOS - при обнаружении секретного имени "secret" или "SPACE" программа тут же связывается с ALEX BBS и передает эти файлы туда. Так работает один промежуточный шлюз, или буфер, как у нас его называют. Что касается семейства CDOS1.**, разработанных для обычных серверов, мы с удовольствием поделимся нашими скромными достижениями со всеми желающими, это я могу точно пообещать как один из участников этих разработок. Есть у нас в Москве и исходники CDOS, в формате TASM2.0, даже с комментариями :-) . В ZIP-е они занимают около 400 секторов. Мы по этим исходникам отыскивали все сюжетно важные части CDOS, а дальше... дальше действовали хакерскими методами. Понимаете, так просто удобнее! И надежнее. Поэтому все старые процедуры CDOS так до сих пор и сидят по своим прежним адресам. Многие из этих адресов уже настолько врезались в память, что CDOSные "взломщики" могут привести их, не заглядывая в шпаргалки, например: #7957 - процедура общения с TR-DOS; #9684 - точка входа в серверный режим; #6B61 - печать символа на экране. Резервов для последующих модернизаций еще очень много. Например, если не использовать SELECT USERS (а в Москве так и есть почти на 100%), свободна целая страница памяти - 6-я. Туда можно затолкать, к примеру, небольшой текстовый редактор (но не ZX-Word v2.52, который не работает при отсутствии порта кемпстон-джойстика!) и получить возможность отвечать на письма, не выходя из CDOS. К сожалению (великому причем, без шуток), мы в Москве многие не смогли заценить NewCDOS из Минска. В Москве-то у большинства - "Пентагоны", в которых из отсутствующего порта кемпстон-джойстика считывается #FF; редактор думает, что нажаты все позиции джойстика, и впадает в бешенство :-). Но все равно - круто, и не правы те, кто пытается хоронить CDOS в своих письмах и статьях! Кстати, Hayes - вовсе не панацея. Я воочию наблюдал, как с современнейшего модема бывает невозможно связаться ни с одним из Интернетовских серверов - "качество" связи днем не позволяет; только ночью... Помимо доработок самой CDOS, создавались вспомогательные утилиты, например, AUTOHIST - автоматический "хисторизатор". С его помощью можно получать подробный отчет о работе сервера за весь сеанс - в текстовом файле будут проставлены имена звонивших пользователей, будут подсчитаны скачанные и закачанные сектора, текст будет красиво отформатирован по абзацам. Одним словом, удобно! Для работы автохисторизатора нужны файлы HISTORY+.W в любом количестве (можно неоднократно выгружать HISTORY+) и список пользователей ph_v с любым номером. Кстати, в Беларуси, где переняли московский формат списка ph_v, AUTOHIST будет работать без переделок. Операторам же тех BBS, где список ведется иначе, или номера телефонов не 7-значные, мы можем отправить исходники автохисторизатора - пожалуйста, переделывайте под себя, на здоровье; программа элементарная. Также на московских BBS-ках широко практикуется оформление серверных дисков на русском языке. Инструментов для такого оформления создано множество; некоторые из них просто переносят образец, написанный в ZX-Word-е, в каталог диска; другие позволяют записать несколько фиктивных файлов, а затем переименовать их в символы кириллицы. Существует целое семейство программ-оболочек, позволяющих просматривать тексты и картинки, оформлять серверные диски, копировать файлы и т.д.; наиболее известными "представителями" являются версии STS-boot. Пожалуйста, пишите нам на адрес NICRON-а (см. в конце газеты), или на ZXNet: интернетовский адрес ZXNet - zxnet@deol.ru; в поле "Subject:" нужно указать ZXNet-овский адрес получателя, например "095/462" - мой адрес. С уважением - Vladimir Bulchukey. ZXNet: 095/462 Phone: 462-8902.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября