что такое начальный загрузчик нгмд и некото- рые вопросы связанные с его использованием. -------------------------------------------- bootp.com - загрузчик дисковода с паузой для смены дисков (boot paused). после запуска прог- рамма предлагает поставить в дисковое усройство с номером 0 (если у вас не acp/m версии 1.55е, то это будет дисковод a:) новый диск имеющий на на- чальных треках свой загрузчик и после нажатия на любую клавишу загрузчик начинает работать. у вас возможно возник вопрос - а зачем-же нужна такая программа, ведь если этот файл запускается из cp/m, значит мы уже сумели загрузить cp/m, т.е имеем такой первичный загрузчик диска. действительно такой загрузчик имел бы смысл если бы на "орионе" имело хождение много версий cp/m. по счастью все версии cp/m на "орионе" являются плагиатом "ленинградской" cp/m sp-computer cluba. все эти системы используют тот-же самый bdos и bios cp/m, впервые примененный нами для "ориона" в 1990 г. авторы появившихся за последнее время "разработок cp/m", встроив в bios, лишь драйверы ввода/вывода на консоль (на основе полученных от нас листингов), гордо называя это "разработкой cp/m" ничего не изменив по сущесту, полностью сох- ранили процесс начальной загрузки дискеты. именно поэтому первичный загрузчик, boot-сектор дискеты а также назначение его байтов неизменны во всех версиях cp/m "ориона-128". идеология процесса на- чальной загрузки с диска для "ориона", использует идею bios "корвета", о считывании блока параметров диска с самой дискеты (boot-сектор). это позволяет в отличие от всех адаптаций cp/m для других бытовых эвм в снг, иметь возможность использовать дискеты разных форматов с одной версией cp/m, а не иметь для каждого формата диска свою версию или жесткую привязку формата к конкретному нгмд (напр: а:-80 b:-40 дорожек). для реализации этого, при обращении к диску, из первого сектора дискеты считывается и переносится в озу, в таблицу параметров блок данных диска, который и используется при работе с диском, пока вы не вставите в это-же устройство другой диск (и он может иметь другой формат, например одинарную плотность: mfm) и (или) не введете "контрол-цэ". другие эвм, имеют версии bios cp/m с жестким форма- том диска и не используют параметров из boot-сектора дискеты. именно поэтому все эвм имеющие такой-же формат диска (5 килобайтовых секторов на цилиндр и каталог на 4-й дорожке) без проблем читают ваши дис- кеты, а у вас ни дискеты "роботрона", ни "profi" не читаются. чтобы их считать вам достаточно с помощью disk utility считать трек 0, сектор 1, вашей дискеты (команда r) и заменив дискету записать этот сектор на дискету "роботрона" (командой w). при этом нам очень важно, чтобы для любой, даже не системной дискеты пер- вый сектор дискеты не был дохлым. на "корвете" сущест- вует множество версий bios cp/m, в том числе и с ката- логом на 2-й дорожке и без boot-сектора. мы выбрали не самую распространенную, но самую грамотную из них, версию "ниисчетмаш" (г.петродворец), 1989 г. поэтому не удивляйтесь, если вам попадутся дискеты "корвета" с каталогом на 2-й дорожке (мгу, новосибирск, омск и др). исходя из вышеизложенного теперь вам понятно, что для того, чтобы считать дискету "atm-turbo", вам достаточ- но скопировать на нее boot-сектор, имеющий параметры соответствующие их формату (каталог на 2-й дорожке). кроме того, для обеспечения гибкости системы и для то- го, чтобы получить возможность иметь самозагружающиеся защищенные от копирования диски процедуру загрузки вы- полняет дисковый загрузчик, который располагается на дискете в том-же первом секторе дискеты. при этом про- цедура загрузки выглядит так: начальный загрузчик (256 байт, программа boot) загружает с дискеты в озу с ад- реса 0000 первые 256 байт, являющиеся уже собственно дисковым загрузчиком и передает ему управление по ад- ресу 0000. для "ориона" в отличие от "специалиста" начальный загрузчик дополнительно определяет в какой странице озу будет работать загружаемая версия cp/m и загружает этот дисковый загрузчик в уже нужную стра- ницу озу (сама-же cp/m не знает в какой странице озу она располагается и работает). поэтому boot-сектор дискеты "ориона" имеет один дополнительный параметр - номер страницы озу, где работает cp/m (этот параметр не копируется в озу, что заставляет загрузчик файлов н.ефимова определять номер страницы програмно, смотри описание программы reader.com). рассказывая о проце- дуре загрузки с нгмд необходимо упомянуть о еще одной особенности нашей версии bios. как известно сама cp/m оперирует с секторами размером в 128 байт (нгмд эвм для которой она создавалась имел, как и ес5074 - 77 дорожек, каждая по 26 секторов размером в 128 байт). разумеется, что чем меньше размер сектора, тем их бо- льше на дорожке. для каждого сектора записывается до- полнительная системная информация, поэтому чем больше количество секторов на дорожке, тем больше места будет потрачено на запись сист.данных и тем меньше останется для данных пользователя. поэтому чем больше размер сек- торов, тем больше данных "влезет" на дискету. сравните на одну и ту-же дискету "синклер" запишет всего 636к (сектора по 256), ibm pc (по 512) - 720к, а "корвет" и dec пк11/16 - 800к (секторы по 1024). для того, чтобы cp/m могла поддерживать разные форматы, в bios cp/m, входит спец.процедура (деблокирование), осуществляю- щая пересчет логических 128 байтных секторов в физичес- кие кило-байтовые. несмотря на то, что cp/m запрашива- ет или выдает на нгмд данные 128 байтовыми блоками, контроллер считывает сразу целый сектор. в отличие от других bios, наш bios существенно быстрее, чем другие (сравните с cp/m-синклеров, роботронов, profi). многие версии cp/m, поддерживающие сектора размером в 1к, для ускорения работы считывают целый сектор в буфер и так, как данные обычно читаются подряд, то очередные 128 байт берутся из буфера, а не читаются заново с диска (пока не достигнем границы сектора, тогда считыватся следующие 1к). такой механизм работы с диском сущест- венно ускоряет работу (это называется "кэширование"). наша версия cp/m в отличие от других имеет буфер раз- мером не 1 кбайт, а целых 2к, т.е за одно обращение к диску считывается сразу 2 сектора, что почти вдвое ускоряет работу. для ускорения работы с нгмд впрочем еще остаются резервы, а именно - как, на ibm pc "чере- дование секторов" - interleaving (сектора идут не под- ряд, что позволяет считывать за 1 оборот "колеса" бо- лее одного сектора) - первые опыты при такте процессо- ра 2.5 мгц не дали ускорения. второй резерв ускорения - увеличение скорости позиционирования головки нгмд. "teac" и все дисководы мс5311/13 прекрасно работают при 2 мсек на шаг (5305 не могут). к сожалению вг93 может перемещать головку только со скоростью 6 мсек (в отличие от 8272, которая поддерживает 2 мсек, т.к western digital сделал эту бис fdc, на 2 года раньше чем intel сделал 8271). тем не менее, как это показал "хакерский turbo-bios" кнгмд "поиск" (сделанный люби- телями в ленинграде в 1990 г. и украденный впоследс- вии киевским заводом), выход есть - а именно, исполь- зование для получения сигнала "step" отдельного ре- гистра (аналогично регистру управления - f720), без использования выхода step (15 нога) fdc 1818вг93. ес- тественно при этом требуется изменения в bios cp/m, эта несложная работа окупается,позволяя получить ско- рость обмена с нгмд, быстрее, чем ibm pc (кстати при 2 мсек существенно уменьшается шум работы нгмд - го- ловка теперь летает бесшумно). к сожалению для опла- ты новой версии bios cp/m sp-computer club-а нет ис- точников финансирования, поэтому в ближайшее время такая версия cp/m не появится (такая версия уже есть, сделана в с-петербурге, на основе bios 90 г, но она принадлешит ее автору и не продается, регистр: f721). теперь о загрузчике нгмд - boot. sp-computer club для загрузки cp/m в 1991 г. предлагал два варианта нача- льного загрузчика дискеты. первый с адреса be00, для прошивки в первое пзу rom-диска, вместо ordos, спра- ведливо полагая, что ordos - это "чушь" и при наличии cp/m не нужна. при этом использовалось свойство мони- тора в пзу f800, считывать по сбросу из rom-диска в озу по адресу b800 первые 2к данных и делать "jmp" на адрес bffd. этот загрузчик прошивался в 573рф2 с ад- реса 600h. естественно этот загрузчик можно было и загружать с ленты по директиве "i" (монитор-3, или по сбросу в м-2). второй загрузчик, точно такой-же, но странслированный по адресу b700 был расчитан для ис- пользования в качестве файла запускаемого из ordos. имеется так-же его вариант запускаемый с адреса 00, более удобный для владельцев монитора-3, который ис- пользовал свойство автостартовости монитора-3 (пари- тет e6 области b800). этот загрузчик будучи один раз запущен (причем неважно откуда с ленты или как файл из ordos) уже не позволял избавиться от cp/m. т.е по всякому нажатию на сброс пользователь не выходил в ordos (при наличии rom-диска) или монитор (без него) а всякий раз заново стартовал начальный загрузчик. "чайники" не зная как избавиться от такого свойства, при необходимости вернуться в ordos вынуждены были выключать питание "ориона". в последнее время появи- лись программы использующие для передаче управления программе ordos и загрузки самой ordos совершенно идиотский принцип автостартовости ordos-файла с име- нем ext$. при этом наивно полагается, что если сфор- мировать в ram-диске файл с именем ext$ и сделать jmp f800, то их "убогая" программа запустится... но если rom-диска нет, или в rom-диске прошита другая более совершенная система (cp/m или ramdos) или заг- ружен monitor-3-ext, то привет... неужели так трудно даже ordos-программу, снабдить модулем загружающим ordos и вызывающим старт нужного файла прямым вызо- вом соответствующей функции ordos. вот такие ordos- программы автостартующий загрузчик не позволяет ис- пользовать (даже при наличии rom-диска). все начальные загрузчики (в т.числе "орион-серви- са", в.сугоняко) работают совершенно одинаково: 1. считывается первый сектор дискеты в буфер с ад- реса b000h в основной странице озу, т.е вы можете посмотреть первый килобайт дискеты с адреса b000. 2. если считанные данные не содержат ошибки, то проверяется первый считанный байт. для системной или самозагружаемой дискеты это должен быть 0c3h. если байт не 0c3h, то выводится сообщение "no sys- tem disk" (no disk loader) и возврат. 3. если нет ошибки и дискета системная, то первые 256 байт с адреса b000 перекидываются в область с адреса 0 в нужной странице озу. для этого исполь- зуется параметр номера рабочей страницы - смеще- ние 9f от начала (в буфере b09f). после этого включается нужная страница и делается "jmp 0". остальную загрузку должен осуществлять этот 256 байтовый дисковый загрузчик. при такой орга- низации загрузки нгмд, не портится озу в области tpa cp/m (100-c400), поэтому вы можете после сбро- са спасти ваши данные из озу. эта последняя фраза справедлива лишь для "ленинградской" cp/m bios-90 и почти полностью аналогичной "авторской", но не относится к acp/m-92, где при загрузке драйверов при старте cp/m, драйвера грузятся как обычные файлы с адреса 100h (обычно их размер не больше чем 4-6к, так, что выше 2000h ваши данные - целы). что касается версии cp/m m.bridge, то так как мы с ней не работаем, то оставляю выяснить сохран- ность tpa при загрузке его cp/m вам самим. теперь, когда вы полностью в курсе о работе на- чального дискового загрузчика вы легко поймете назначение программы bootp.com. как вы знаете а.новгородов доработал монитор-3/z и разместил в тех-же 2к кроме пзу-bios также дисковый загрузчик. однако к сожалению этот загрузчик упрощен, а имен- но он загружает только дискеты с двойной плотнос- тью. т.е те кто имеет "дерьмовые" дискеты или та- кой-же нгмд и поэтому вынужден использовать оди- нарную плотность записи (она надежнее) не может воспользоваться таким монитором. таким образом появился первый нестандартный загрузчик нгмд. да- лее недавно мы сделали версию cp/m для загрузки из пзу, имеющую ram-диск 512к, как устройство a: и дисковод как устройство b:. в обоих случаях cp/m загружается в озу без стандартного загрузчи- ка. когда же возникает задача загрузить с дискеты другую cp/m (отличную от той, что прошита в пзу rom-диска) или загрузить защищенную от копирования коммерческую дискету, владельцам m3.3/z или m3.5/z а также тем, кто грузит cp/m по сбросу из пзу, не обойтись без загрузчика, который можно запустить с дискеты и который дает время для замены дискет... в этом же архмве вы найдете файл boot.dat. это обычный загрузчик cp/m. прошейте его файлом в rom- диск. его рабочий адрес - b700h. в заключение о контроллерах нгмд. я не советую никому упрощать контроллер нгмд "корвета", который мы все приме- няем. в последнее время появилась масса разработ- чиков, вся разработка которых заключается в заме- не одних имс другими или введение трэккомпенсации как требует типовая схема 1818вг93 (3.1986 мпсс) или стробирование данных чтения по схеме "beta- диска". обычно такие разработки называются "пла- гиатом" или заимствованием (сказать воровство в отношении схемных решений нельзя). нет никакой разницы в работе наших плат кнгмд "ленинград-90" (которые мы отнюдь не обзываем разработкой, а всегда указывали, что это схема от "корвета", хо- тя в ней и применены другие имс) и всех версий контроллеров, появившихся в последнее время. тот, кто упростит свой контроллер сократив 1 имс за счет исключения режима работы с одинарной плотностью записи, тот не сможет загружать не только дискеты "роботрона", "корвета", но и не сможет использовать защищенные от копирования коммерческие программы. и разумеется эти защи- щенные дискеты надо грузить из cp/m без драй- веров, т.к защищаются в основном игры, кото- рые работают в тех же адресах озу, что зани- мают драйвера cp/m. чистяков владимир, санкт-петербург, 02.1993